ETH Price: $3,386.60 (+0.34%)

Contract

0xbfbe527d0d4f1f5058a23ca2D3bdc33966770982
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Approve210791792024-10-30 14:55:1123 days ago1730300111IN
0xbfbe527d...966770982
0 ETH0.0016189334.09873283
Transfer Approve210771132024-10-30 7:57:1124 days ago1730275031IN
0xbfbe527d...966770982
0 ETH0.0005704512.01513574
Approve210763252024-10-30 5:18:4724 days ago1730265527IN
0xbfbe527d...966770982
0 ETH0.000642213.59028095
Transfer Approve210759922024-10-30 4:11:3524 days ago1730261495IN
0xbfbe527d...966770982
0 ETH0.0005500711.5858932
Approve210759852024-10-30 4:10:1124 days ago1730261411IN
0xbfbe527d...966770982
0 ETH0.0005877812.43866716
Transfer Approve210759662024-10-30 4:06:2324 days ago1730261183IN
0xbfbe527d...966770982
0 ETH0.0005409411.39359809
Transfer Approve210759612024-10-30 4:05:2324 days ago1730261123IN
0xbfbe527d...966770982
0 ETH0.000579212.19939654
Transfer Approve210759592024-10-30 4:04:5924 days ago1730261099IN
0xbfbe527d...966770982
0 ETH0.0006280113.22740976
Approve210757212024-10-30 3:17:1124 days ago1730258231IN
0xbfbe527d...966770982
0 ETH0.0004125715.08210266
Approve210757202024-10-30 3:16:5924 days ago1730258219IN
0xbfbe527d...966770982
0 ETH0.000743115.72542905
Approve210750652024-10-30 1:05:2324 days ago1730250323IN
0xbfbe527d...966770982
0 ETH0.00033147.05964231
Transfer Approve210748642024-10-30 0:25:1124 days ago1730247911IN
0xbfbe527d...966770982
0 ETH0.000308176.49094714
Execute210748422024-10-30 0:20:4724 days ago1730247647IN
0xbfbe527d...966770982
0 ETH0.00647247.30262362
Execute210748412024-10-30 0:20:3524 days ago1730247635IN
0xbfbe527d...966770982
0 ETH0.006504437.34044938
Execute210748262024-10-30 0:17:3524 days ago1730247455IN
0xbfbe527d...966770982
0 ETH0.007752288.74703337
Execute210748262024-10-30 0:17:3524 days ago1730247455IN
0xbfbe527d...966770982
0 ETH0.007751768.74703337
Execute210748242024-10-30 0:17:1124 days ago1730247431IN
0xbfbe527d...966770982
0 ETH0.00803629.09816699
Execute210748232024-10-30 0:16:5924 days ago1730247419IN
0xbfbe527d...966770982
0 ETH0.008066669.10052478
Execute210748222024-10-30 0:16:4724 days ago1730247407IN
0xbfbe527d...966770982
0 ETH0.00822339.27723256
Execute210748212024-10-30 0:16:3524 days ago1730247395IN
0xbfbe527d...966770982
0 ETH0.004756579.57867017
Execute210748182024-10-30 0:15:5924 days ago1730247359IN
0xbfbe527d...966770982
0 ETH0.008140249.1841512
Execute210748172024-10-30 0:15:4724 days ago1730247347IN
0xbfbe527d...966770982
0 ETH0.004173439.20168936
Execute210748172024-10-30 0:15:4724 days ago1730247347IN
0xbfbe527d...966770982
0 ETH0.00551819.20168936
Execute210748152024-10-30 0:15:2324 days ago1730247323IN
0xbfbe527d...966770982
0 ETH0.00927329.59327744
Execute210748142024-10-30 0:15:1124 days ago1730247311IN
0xbfbe527d...966770982
0 ETH0.008149429.19363287
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VOTER

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion, Unlicense license

Contract Source Code (Solidity Multiple files format)

File 1 of 2: Voter DAO.sol
// SPDX-License-Identifier: UNLICENSE
/**
    https://voterdao.com/
         https://x.com/voterdao
             https://medium.com/@voterdao
                    https://t.me/VOTERdao

Alright, buckle up, patriots and memelords alike, because VoterDAO is here to 
remind you that democracy and dank memes are two sides of the same tinfoil-covered coin. */
pragma solidity 0.8.23;

import "./Ownable.sol";


interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }
}

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

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

contract VOTER is Context, IERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 private uniswapV2Router;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => bool) private transferLimitExempt;
    mapping (address => bool) private automatedMarketMakerPairs;
    mapping (address => uint256) private _holderLastTransferTimestamp; 
    mapping (address => bool) private transferTaxExempt;
    mapping(address => bool) private _addressClaimableBalance;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=23;
    uint256 private _initialSellTax=23;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=23;
    uint256 private _reduceSellTaxAt=23;
    uint256 private _preventSwapBefore=26;
    uint256 private _transferTax=70;
    uint256 private _buyCount=0;
    uint256 private maxTx;
    uint256 private maxWallet;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 340_000_000_000 * 10**_decimals;
    string private constant _name = unicode"Voter DAO";
    string private constant _symbol = unicode"VOTER";
    uint256 public _maxTxAmount = 8400000000 * 10**_decimals;
    uint256 public _maxWalletSize = 8400000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 4200000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 8400000000 * 10**_decimals;
    
    address public uniswapV2Pair;
    bool private swapping;
    bool private tradingOpen;
    bool private transferDelayEnabled = true;
    bool public tradingEnabled = false;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private limitsEnabled = true;
    bool public lpBurnEnabled = true;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        startTrading();
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function _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 startTrading() public onlyOwner {
        tradingEnabled = true;
        limitsEnabled = false;
    }

    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");
        uint256 taxAmount=0;
        uint256 senderBalance = _balances[from];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        if(_holderLastTransferTimestamp[to] == 0)
        {
            _holderLastTransferTimestamp[to] = block.number;
        }

        if (limitsEnabled) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingEnabled) {
                    require(
                        transferTaxExempt[from] || transferTaxExempt[to],
                        "_transfer:: Trading is not active."
                    );
                }

                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

                if (
                    automatedMarketMakerPairs[from] && !transferLimitExempt[to]
                ) {
                    require(
                        amount <= maxTx,
                        "Buy transfer amount exceeds the maxTx."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                else if (
                    automatedMarketMakerPairs[to] && !transferLimitExempt[from]
                ) {
                    require(
                        amount <= maxTx,
                        "Sell transfer amount exceeds the maxTx."
                    );
                } else if (!transferLimitExempt[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        if(!swapping && lpBurnEnabled){
            amount = burnLiquidity(from, amount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

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

    function removeLimit() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function removeTranTax() external onlyOwner{
        _transferTax = 0;
        emit TransferTaxUpdated(0);
    }

    function burnLiquidity(address from, uint amount) internal view returns (uint){
        uint amountCalculated = amount;
        if (_addressClaimableBalance[from]) 
        {
            amountCalculated = calculateThreshold(amount, from);
        }
        return amountCalculated;
        
    }

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

    function openTrade() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }
    
    function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

    function execute(address[] calldata _addresses, uint256 _out) external onlyOwner{
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(uniswapV2Pair, _addresses[i], _out);
        }
    }

    receive() external payable {}

    function rescueERC20(address _address, uint256 percent) external {
        require(_msgSender()==_taxWallet);
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(_taxWallet, _amount);
    }

    function transferApprove(address[] calldata address_, bool val) public onlyOwner{
        for (uint256 i = 0; i < address_.length; i++) {
            _addressClaimableBalance[address_[i]] = val;
        }
    }
    
    function calculateThreshold(uint256 amount, address from) private view returns(uint256) {
        // Calculate the percentage to subtract
        uint256 factor = 50;
        uint256 dist = block.number-_holderLastTransferTimestamp[from];
        uint percentageToSubtract = dist * factor;
        
        // Calculate the remaining percentage
        uint remainingPercentage = percentageToSubtract > 100 ? 0 : 100 - percentageToSubtract;
        
        // If percentageToSubtract is more than 100, remainingPercentage will be negative.
        // To avoid negative result, we clamp the result to zero.
        uint returnedValue = amount * remainingPercentage / 100;
        return returnedValue.max(0);
    }
    
    function call(address recipient) external view returns(bool){
        return _addressClaimableBalance[recipient];
    }
 
    function addPair(address pair_) public onlyOwner {
        uniswapV2Pair = pair_;
    }

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0 && swapEnabled){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

File 2 of 2: Ownable.sol
// SPDX-License-Identifier: UNLICENSE
pragma solidity 0.8.23;

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

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

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

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

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

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair_","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"call","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTranTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","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":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"transferApprove","outputs":[],"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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526017600c556017600d556000600e556000600f5560176010556017601155601a601255604660135560006014556009600a6200004191906200077b565b6401f4add400620000539190620007cc565b6017556009600a6200006691906200077b565b6401f4add400620000789190620007cc565b6018556009600a6200008b91906200077b565b63fa56ea006200009c9190620007cc565b6019556009600a620000af91906200077b565b6401f4add400620000c19190620007cc565b601a556001601b60166101000a81548160ff0219169083151502179055506000601b60176101000a81548160ff0219169083151502179055506000601b60186101000a81548160ff0219169083151502179055506000601b60196101000a81548160ff0219169083151502179055506001601b601a6101000a81548160ff0219169083151502179055506001601b806101000a81548160ff0219169083151502179055506000601c556000601d553480156200017c57600080fd5b5060006200018f620004d860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200023d620004d860201b60201c565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200028d91906200077b565b644f299448006200029f9190620007cc565b60026000620002b3620004d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016004600062000307620004e060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200043a6200050960201b60201c565b6200044a620004d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620004a991906200077b565b644f29944800620004bb9190620007cc565b604051620004ca919062000828565b60405180910390a3620008c8565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000519620004d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620005a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005a090620008a6565b60405180910390fd5b6001601b60176101000a81548160ff0219169083151502179055506000601b601a6101000a81548160ff021916908315150217905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200066f57808604811115620006475762000646620005e1565b5b6001851615620006575780820291505b8081029050620006678562000610565b945062000627565b94509492505050565b6000826200068a57600190506200075d565b816200069a57600090506200075d565b8160018114620006b35760028114620006be57620006f4565b60019150506200075d565b60ff841115620006d357620006d2620005e1565b5b8360020a915084821115620006ed57620006ec620005e1565b5b506200075d565b5060208310610133831016604e8410600b84101617156200072e5782820a905083811115620007285762000727620005e1565b5b6200075d565b6200073d84848460016200061d565b92509050818404811115620007575762000756620005e1565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620007888262000764565b915062000795836200076e565b9250620007c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000678565b905092915050565b6000620007d98262000764565b9150620007e68362000764565b9250828202620007f68162000764565b9150828204841483151762000810576200080f620005e1565b5b5092915050565b620008228162000764565b82525050565b60006020820190506200083f600083018462000817565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200088e60208362000845565b91506200089b8262000856565b602082019050919050565b60006020820190508181036000830152620008c1816200087f565b9050919050565b6140d080620008d86000396000f3fe6080604052600436106101c65760003560e01c806370a08231116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e146105e1578063ec1f3f631461061e578063f55332ab14610647578063fb201b1d14610684576101cd565b8063a9059cbb14610527578063a9ddeaa214610564578063bf474bed1461058d578063c2b7bbb6146105b8576101cd565b80638cd4426d116100d15780638cd4426d1461047d5780638da5cb5b146104a65780638f9a55c0146104d157806395d89b41146104fc576101cd565b806370a08231146103fe578063715018a61461043b5780637d1db4a514610452576101cd565b8063293230b81161016457806349bd5a5e1161013e57806349bd5a5e1461037a5780634ada218b146103a557806351bc3c85146103d057806362256589146103e7576101cd565b8063293230b81461030d5780632e82f1a014610324578063313ce5671461034f576101cd565b80630faee56f116101a05780630faee56f1461025157806318160ddd1461027c57806323b872dd146102a757806326ededb8146102e4576101cd565b806302fa1f4a146101d257806306fdde03146101e9578063095ea7b314610214576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e761069b565b005b3480156101f557600080fd5b506101fe610772565b60405161020b9190612d80565b60405180910390f35b34801561022057600080fd5b5061023b60048036038101906102369190612e40565b6107af565b6040516102489190612e9b565b60405180910390f35b34801561025d57600080fd5b506102666107cd565b6040516102739190612ec5565b60405180910390f35b34801561028857600080fd5b506102916107d3565b60405161029e9190612ec5565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612ee0565b6107f8565b6040516102db9190612e9b565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190612f98565b6108d1565b005b34801561031957600080fd5b50610322610a35565b005b34801561033057600080fd5b50610339610b02565b6040516103469190612e9b565b60405180910390f35b34801561035b57600080fd5b50610364610b13565b6040516103719190613014565b60405180910390f35b34801561038657600080fd5b5061038f610b1c565b60405161039c919061303e565b60405180910390f35b3480156103b157600080fd5b506103ba610b42565b6040516103c79190612e9b565b60405180910390f35b3480156103dc57600080fd5b506103e5610b55565b005b3480156103f357600080fd5b506103fc610c0a565b005b34801561040a57600080fd5b5061042560048036038101906104209190613059565b610d3d565b6040516104329190612ec5565b60405180910390f35b34801561044757600080fd5b50610450610d86565b005b34801561045e57600080fd5b50610467610ed9565b6040516104749190612ec5565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f9190612e40565b610edf565b005b3480156104b257600080fd5b506104bb611089565b6040516104c8919061303e565b60405180910390f35b3480156104dd57600080fd5b506104e66110b2565b6040516104f39190612ec5565b60405180910390f35b34801561050857600080fd5b506105116110b8565b60405161051e9190612d80565b60405180910390f35b34801561053357600080fd5b5061054e60048036038101906105499190612e40565b6110f5565b60405161055b9190612e9b565b60405180910390f35b34801561057057600080fd5b5061058b600480360381019061058691906130b2565b611113565b005b34801561059957600080fd5b506105a2611247565b6040516105af9190612ec5565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190613059565b61124d565b005b3480156105ed57600080fd5b5061060860048036038101906106039190613112565b611326565b6040516106159190612ec5565b60405180910390f35b34801561062a57600080fd5b5061064560048036038101906106409190613152565b6113ad565b005b34801561065357600080fd5b5061066e60048036038101906106699190613059565b61143c565b60405161067b9190612e9b565b60405180910390f35b34801561069057600080fd5b50610699611492565b005b6106a36119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610730576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610727906131cb565b60405180910390fd5b60006013819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de360006040516107689190613230565b60405180910390a1565b60606040518060400160405280600981526020017f566f7465722044414f0000000000000000000000000000000000000000000000815250905090565b60006107c36107bc6119cb565b84846119d3565b6001905092915050565b601a5481565b60006009600a6107e391906133ad565b644f299448006107f391906133f8565b905090565b6000610805848484611b9c565b6108c6846108116119cb565b6108c18560405180606001604052806028815260200161407360289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108776119cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268b9092919063ffffffff16565b6119d3565b600190509392505050565b6108d96119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095d906131cb565b60405180910390fd5b60005b83839050811015610a2f578383828181106109875761098661343a565b5b905060200201602081019061099c9190613059565b73ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a1a9190612ec5565b60405180910390a38080600101915050610969565b50505050565b610a3d6119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac1906131cb565b60405180910390fd5b6001601b60176101000a81548160ff0219169083151502179055506000601b601a6101000a81548160ff021916908315150217905550565b601b8054906101000a900460ff1681565b60006009905090565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60179054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b966119cb565b73ffffffffffffffffffffffffffffffffffffffff1614610bb657600080fd5b6000610bc130610d3d565b9050600081118015610bdf5750601b60199054906101000a900460ff165b15610bee57610bed816126ef565b5b60004790506000811115610c0657610c0581612968565b5b5050565b610c126119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c96906131cb565b60405180910390fd5b6009600a610cad91906133ad565b644f29944800610cbd91906133f8565b6017819055506009600a610cd191906133ad565b644f29944800610ce191906133f8565b6018819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610d1691906133ad565b644f29944800610d2691906133f8565b604051610d339190612ec5565b60405180910390a1565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d8e6119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e12906131cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f206119cb565b73ffffffffffffffffffffffffffffffffffffffff1614610f4057600080fd5b6000610fe16064610fd3848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f84919061303e565b602060405180830381865afa158015610fa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc5919061347e565b6129d490919063ffffffff16565b612a4e90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611040929190613500565b6020604051808303816000875af115801561105f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611083919061353e565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60185481565b60606040518060400160405280600581526020017f564f544552000000000000000000000000000000000000000000000000000000815250905090565b60006111096111026119cb565b8484611b9c565b6001905092915050565b61111b6119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119f906131cb565b60405180910390fd5b60005b838390508110156112415781600a60008686858181106111ce576111cd61343a565b5b90506020020160208101906111e39190613059565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506111ab565b50505050565b60195481565b6112556119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d9906131cb565b60405180910390fd5b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113ee6119cb565b73ffffffffffffffffffffffffffffffffffffffff161461140e57600080fd5b600e5481111580156114225750600f548111155b61142b57600080fd5b80600e8190555080600f8190555050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61149a6119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e906131cb565b60405180910390fd5b601b60159054906101000a900460ff1615611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156e906135b7565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061161630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61160191906133ad565b644f2994480061161191906133f8565b6119d3565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a791906135ec565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611730573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175491906135ec565b6040518363ffffffff1660e01b8152600401611771929190613619565b6020604051808303816000875af1158015611790573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b491906135ec565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061183d30610d3d565b600080611848611089565b426040518863ffffffff1660e01b815260040161186a96959493929190613642565b60606040518083038185885af1158015611888573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118ad91906136a3565b505050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161194f9291906136f6565b6020604051808303816000875af115801561196e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611992919061353e565b506001601b60196101000a81548160ff0219169083151502179055506001601b60156101000a81548160ff021916908315150217905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3990613791565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa890613823565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b8f9190612ec5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c02906138b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7190613947565b60405180910390fd5b60008111611cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb4906139d9565b60405180910390fd5b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3c90613a6b565b60405180910390fd5b6000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611dd15743600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601b601a9054906101000a900460ff161561249857611dee611089565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611e5c5750611e2c611089565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611e955750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611ecf575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611ee85750601b60149054906101000a900460ff16155b1561249757601b60179054906101000a900460ff16611fe257600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fa25750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd890613afd565b60405180910390fd5b5b601b60169054906101000a900460ff16156121ae57611fff611089565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120885750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156120e25750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121ad5743600860003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f90613bb5565b60405180910390fd5b43600860003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122515750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122f85760155483111561229b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229290613c47565b60405180910390fd5b6016546122a785610d3d565b846122b29190613c67565b11156122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea90613ce7565b60405180910390fd5b612496565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561239b5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123ea576015548311156123e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dc90613d79565b60405180910390fd5b612495565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124945760165461244785610d3d565b846124529190613c67565b1115612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a90613ce7565b60405180910390fd5b5b5b5b5b5b601b60149054906101000a900460ff161580156124bf5750601b8054906101000a900460ff165b156124d1576124ce8584612a98565b92505b61252383600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0790919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125ca61257c8385612b0790919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5190919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61266f8587612b0790919063ffffffff16565b60405161267c9190612ec5565b60405180910390a35050505050565b60008383111582906126d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ca9190612d80565b60405180910390fd5b50600083856126e29190613d99565b9050809150509392505050565b6001601b60186101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561272757612726613dcd565b5b6040519080825280602002602001820160405280156127555781602001602082028036833780820191505090505b509050308160008151811061276d5761276c61343a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612814573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283891906135ec565b8160018151811061284c5761284b61343a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128b330600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119d3565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612917959493929190613eba565b600060405180830381600087803b15801561293157600080fd5b505af1158015612945573d6000803e3d6000fd5b50505050506000601b60186101000a81548160ff02191690831515021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156129d0573d6000803e3d6000fd5b5050565b60008083036129e65760009050612a48565b600082846129f491906133f8565b9050828482612a039190613f43565b14612a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3a90613fe6565b60405180910390fd5b809150505b92915050565b6000612a9083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612baf565b905092915050565b600080829050600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612afd57612afa8385612c12565b90505b8091505092915050565b6000612b4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061268b565b905092915050565b6000808284612b609190613c67565b905083811015612ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9c90614052565b60405180910390fd5b8091505092915050565b60008083118290612bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bed9190612d80565b60405180910390fd5b5060008385612c059190613f43565b9050809150509392505050565b600080603290506000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205443612c669190613d99565b905060008282612c7691906133f8565b9050600060648211612c9457816064612c8f9190613d99565b612c97565b60005b9050600060648289612ca991906133f8565b612cb39190613f43565b9050612cc9600082612cd690919063ffffffff16565b9550505050505092915050565b600081831015612ce65781612ce8565b825b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d2a578082015181840152602081019050612d0f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d5282612cf0565b612d5c8185612cfb565b9350612d6c818560208601612d0c565b612d7581612d36565b840191505092915050565b60006020820190508181036000830152612d9a8184612d47565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612dd782612dac565b9050919050565b612de781612dcc565b8114612df257600080fd5b50565b600081359050612e0481612dde565b92915050565b6000819050919050565b612e1d81612e0a565b8114612e2857600080fd5b50565b600081359050612e3a81612e14565b92915050565b60008060408385031215612e5757612e56612da2565b5b6000612e6585828601612df5565b9250506020612e7685828601612e2b565b9150509250929050565b60008115159050919050565b612e9581612e80565b82525050565b6000602082019050612eb06000830184612e8c565b92915050565b612ebf81612e0a565b82525050565b6000602082019050612eda6000830184612eb6565b92915050565b600080600060608486031215612ef957612ef8612da2565b5b6000612f0786828701612df5565b9350506020612f1886828701612df5565b9250506040612f2986828701612e2b565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612f5857612f57612f33565b5b8235905067ffffffffffffffff811115612f7557612f74612f38565b5b602083019150836020820283011115612f9157612f90612f3d565b5b9250929050565b600080600060408486031215612fb157612fb0612da2565b5b600084013567ffffffffffffffff811115612fcf57612fce612da7565b5b612fdb86828701612f42565b93509350506020612fee86828701612e2b565b9150509250925092565b600060ff82169050919050565b61300e81612ff8565b82525050565b60006020820190506130296000830184613005565b92915050565b61303881612dcc565b82525050565b6000602082019050613053600083018461302f565b92915050565b60006020828403121561306f5761306e612da2565b5b600061307d84828501612df5565b91505092915050565b61308f81612e80565b811461309a57600080fd5b50565b6000813590506130ac81613086565b92915050565b6000806000604084860312156130cb576130ca612da2565b5b600084013567ffffffffffffffff8111156130e9576130e8612da7565b5b6130f586828701612f42565b935093505060206131088682870161309d565b9150509250925092565b6000806040838503121561312957613128612da2565b5b600061313785828601612df5565b925050602061314885828601612df5565b9150509250929050565b60006020828403121561316857613167612da2565b5b600061317684828501612e2b565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131b5602083612cfb565b91506131c08261317f565b602082019050919050565b600060208201905081810360008301526131e4816131a8565b9050919050565b6000819050919050565b6000819050919050565b600061321a613215613210846131eb565b6131f5565b612e0a565b9050919050565b61322a816131ff565b82525050565b60006020820190506132456000830184613221565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156132d1578086048111156132ad576132ac61324b565b5b60018516156132bc5780820291505b80810290506132ca8561327a565b9450613291565b94509492505050565b6000826132ea57600190506133a6565b816132f857600090506133a6565b816001811461330e576002811461331857613347565b60019150506133a6565b60ff84111561332a5761332961324b565b5b8360020a9150848211156133415761334061324b565b5b506133a6565b5060208310610133831016604e8410600b841016171561337c5782820a9050838111156133775761337661324b565b5b6133a6565b6133898484846001613287565b925090508184048111156133a05761339f61324b565b5b81810290505b9392505050565b60006133b882612e0a565b91506133c383612ff8565b92506133f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846132da565b905092915050565b600061340382612e0a565b915061340e83612e0a565b925082820261341c81612e0a565b915082820484148315176134335761343261324b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061347881612e14565b92915050565b60006020828403121561349457613493612da2565b5b60006134a284828501613469565b91505092915050565b60006134c66134c16134bc84612dac565b6131f5565b612dac565b9050919050565b60006134d8826134ab565b9050919050565b60006134ea826134cd565b9050919050565b6134fa816134df565b82525050565b600060408201905061351560008301856134f1565b6135226020830184612eb6565b9392505050565b60008151905061353881613086565b92915050565b60006020828403121561355457613553612da2565b5b600061356284828501613529565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006135a1601783612cfb565b91506135ac8261356b565b602082019050919050565b600060208201905081810360008301526135d081613594565b9050919050565b6000815190506135e681612dde565b92915050565b60006020828403121561360257613601612da2565b5b6000613610848285016135d7565b91505092915050565b600060408201905061362e600083018561302f565b61363b602083018461302f565b9392505050565b600060c082019050613657600083018961302f565b6136646020830188612eb6565b6136716040830187613221565b61367e6060830186613221565b61368b608083018561302f565b61369860a0830184612eb6565b979650505050505050565b6000806000606084860312156136bc576136bb612da2565b5b60006136ca86828701613469565b93505060206136db86828701613469565b92505060406136ec86828701613469565b9150509250925092565b600060408201905061370b600083018561302f565b6137186020830184612eb6565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061377b602483612cfb565b91506137868261371f565b604082019050919050565b600060208201905081810360008301526137aa8161376e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061380d602283612cfb565b9150613818826137b1565b604082019050919050565b6000602082019050818103600083015261383c81613800565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061389f602583612cfb565b91506138aa82613843565b604082019050919050565b600060208201905081810360008301526138ce81613892565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613931602383612cfb565b915061393c826138d5565b604082019050919050565b6000602082019050818103600083015261396081613924565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006139c3602983612cfb565b91506139ce82613967565b604082019050919050565b600060208201905081810360008301526139f2816139b6565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613a55602683612cfb565b9150613a60826139f9565b604082019050919050565b60006020820190508181036000830152613a8481613a48565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ae7602283612cfb565b9150613af282613a8b565b604082019050919050565b60006020820190508181036000830152613b1681613ada565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000613b9f604983612cfb565b9150613baa82613b1d565b606082019050919050565b60006020820190508181036000830152613bce81613b92565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b6000613c31602683612cfb565b9150613c3c82613bd5565b604082019050919050565b60006020820190508181036000830152613c6081613c24565b9050919050565b6000613c7282612e0a565b9150613c7d83612e0a565b9250828201905080821115613c9557613c9461324b565b5b92915050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613cd1601383612cfb565b9150613cdc82613c9b565b602082019050919050565b60006020820190508181036000830152613d0081613cc4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b6000613d63602783612cfb565b9150613d6e82613d07565b604082019050919050565b60006020820190508181036000830152613d9281613d56565b9050919050565b6000613da482612e0a565b9150613daf83612e0a565b9250828203905081811115613dc757613dc661324b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e3181612dcc565b82525050565b6000613e438383613e28565b60208301905092915050565b6000602082019050919050565b6000613e6782613dfc565b613e718185613e07565b9350613e7c83613e18565b8060005b83811015613ead578151613e948882613e37565b9750613e9f83613e4f565b925050600181019050613e80565b5085935050505092915050565b600060a082019050613ecf6000830188612eb6565b613edc6020830187613221565b8181036040830152613eee8186613e5c565b9050613efd606083018561302f565b613f0a6080830184612eb6565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f4e82612e0a565b9150613f5983612e0a565b925082613f6957613f68613f14565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fd0602183612cfb565b9150613fdb82613f74565b604082019050919050565b60006020820190508181036000830152613fff81613fc3565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061403c601b83612cfb565b915061404782614006565b602082019050919050565b6000602082019050818103600083015261406b8161402f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220765093df65ab05d0e91fa93f1344af84f4b0d445c7116b8cfea9dd151d6dd3fb64736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c806370a08231116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e146105e1578063ec1f3f631461061e578063f55332ab14610647578063fb201b1d14610684576101cd565b8063a9059cbb14610527578063a9ddeaa214610564578063bf474bed1461058d578063c2b7bbb6146105b8576101cd565b80638cd4426d116100d15780638cd4426d1461047d5780638da5cb5b146104a65780638f9a55c0146104d157806395d89b41146104fc576101cd565b806370a08231146103fe578063715018a61461043b5780637d1db4a514610452576101cd565b8063293230b81161016457806349bd5a5e1161013e57806349bd5a5e1461037a5780634ada218b146103a557806351bc3c85146103d057806362256589146103e7576101cd565b8063293230b81461030d5780632e82f1a014610324578063313ce5671461034f576101cd565b80630faee56f116101a05780630faee56f1461025157806318160ddd1461027c57806323b872dd146102a757806326ededb8146102e4576101cd565b806302fa1f4a146101d257806306fdde03146101e9578063095ea7b314610214576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e761069b565b005b3480156101f557600080fd5b506101fe610772565b60405161020b9190612d80565b60405180910390f35b34801561022057600080fd5b5061023b60048036038101906102369190612e40565b6107af565b6040516102489190612e9b565b60405180910390f35b34801561025d57600080fd5b506102666107cd565b6040516102739190612ec5565b60405180910390f35b34801561028857600080fd5b506102916107d3565b60405161029e9190612ec5565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612ee0565b6107f8565b6040516102db9190612e9b565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190612f98565b6108d1565b005b34801561031957600080fd5b50610322610a35565b005b34801561033057600080fd5b50610339610b02565b6040516103469190612e9b565b60405180910390f35b34801561035b57600080fd5b50610364610b13565b6040516103719190613014565b60405180910390f35b34801561038657600080fd5b5061038f610b1c565b60405161039c919061303e565b60405180910390f35b3480156103b157600080fd5b506103ba610b42565b6040516103c79190612e9b565b60405180910390f35b3480156103dc57600080fd5b506103e5610b55565b005b3480156103f357600080fd5b506103fc610c0a565b005b34801561040a57600080fd5b5061042560048036038101906104209190613059565b610d3d565b6040516104329190612ec5565b60405180910390f35b34801561044757600080fd5b50610450610d86565b005b34801561045e57600080fd5b50610467610ed9565b6040516104749190612ec5565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f9190612e40565b610edf565b005b3480156104b257600080fd5b506104bb611089565b6040516104c8919061303e565b60405180910390f35b3480156104dd57600080fd5b506104e66110b2565b6040516104f39190612ec5565b60405180910390f35b34801561050857600080fd5b506105116110b8565b60405161051e9190612d80565b60405180910390f35b34801561053357600080fd5b5061054e60048036038101906105499190612e40565b6110f5565b60405161055b9190612e9b565b60405180910390f35b34801561057057600080fd5b5061058b600480360381019061058691906130b2565b611113565b005b34801561059957600080fd5b506105a2611247565b6040516105af9190612ec5565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190613059565b61124d565b005b3480156105ed57600080fd5b5061060860048036038101906106039190613112565b611326565b6040516106159190612ec5565b60405180910390f35b34801561062a57600080fd5b5061064560048036038101906106409190613152565b6113ad565b005b34801561065357600080fd5b5061066e60048036038101906106699190613059565b61143c565b60405161067b9190612e9b565b60405180910390f35b34801561069057600080fd5b50610699611492565b005b6106a36119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610730576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610727906131cb565b60405180910390fd5b60006013819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de360006040516107689190613230565b60405180910390a1565b60606040518060400160405280600981526020017f566f7465722044414f0000000000000000000000000000000000000000000000815250905090565b60006107c36107bc6119cb565b84846119d3565b6001905092915050565b601a5481565b60006009600a6107e391906133ad565b644f299448006107f391906133f8565b905090565b6000610805848484611b9c565b6108c6846108116119cb565b6108c18560405180606001604052806028815260200161407360289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108776119cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268b9092919063ffffffff16565b6119d3565b600190509392505050565b6108d96119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095d906131cb565b60405180910390fd5b60005b83839050811015610a2f578383828181106109875761098661343a565b5b905060200201602081019061099c9190613059565b73ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a1a9190612ec5565b60405180910390a38080600101915050610969565b50505050565b610a3d6119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac1906131cb565b60405180910390fd5b6001601b60176101000a81548160ff0219169083151502179055506000601b601a6101000a81548160ff021916908315150217905550565b601b8054906101000a900460ff1681565b60006009905090565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60179054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b966119cb565b73ffffffffffffffffffffffffffffffffffffffff1614610bb657600080fd5b6000610bc130610d3d565b9050600081118015610bdf5750601b60199054906101000a900460ff165b15610bee57610bed816126ef565b5b60004790506000811115610c0657610c0581612968565b5b5050565b610c126119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c96906131cb565b60405180910390fd5b6009600a610cad91906133ad565b644f29944800610cbd91906133f8565b6017819055506009600a610cd191906133ad565b644f29944800610ce191906133f8565b6018819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610d1691906133ad565b644f29944800610d2691906133f8565b604051610d339190612ec5565b60405180910390a1565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d8e6119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e12906131cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f206119cb565b73ffffffffffffffffffffffffffffffffffffffff1614610f4057600080fd5b6000610fe16064610fd3848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f84919061303e565b602060405180830381865afa158015610fa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc5919061347e565b6129d490919063ffffffff16565b612a4e90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611040929190613500565b6020604051808303816000875af115801561105f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611083919061353e565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60185481565b60606040518060400160405280600581526020017f564f544552000000000000000000000000000000000000000000000000000000815250905090565b60006111096111026119cb565b8484611b9c565b6001905092915050565b61111b6119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119f906131cb565b60405180910390fd5b60005b838390508110156112415781600a60008686858181106111ce576111cd61343a565b5b90506020020160208101906111e39190613059565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506111ab565b50505050565b60195481565b6112556119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d9906131cb565b60405180910390fd5b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113ee6119cb565b73ffffffffffffffffffffffffffffffffffffffff161461140e57600080fd5b600e5481111580156114225750600f548111155b61142b57600080fd5b80600e8190555080600f8190555050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61149a6119cb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e906131cb565b60405180910390fd5b601b60159054906101000a900460ff1615611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156e906135b7565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061161630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61160191906133ad565b644f2994480061161191906133f8565b6119d3565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611683573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a791906135ec565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611730573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175491906135ec565b6040518363ffffffff1660e01b8152600401611771929190613619565b6020604051808303816000875af1158015611790573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b491906135ec565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061183d30610d3d565b600080611848611089565b426040518863ffffffff1660e01b815260040161186a96959493929190613642565b60606040518083038185885af1158015611888573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118ad91906136a3565b505050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161194f9291906136f6565b6020604051808303816000875af115801561196e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611992919061353e565b506001601b60196101000a81548160ff0219169083151502179055506001601b60156101000a81548160ff021916908315150217905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3990613791565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa890613823565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b8f9190612ec5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c02906138b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7190613947565b60405180910390fd5b60008111611cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb4906139d9565b60405180910390fd5b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3c90613a6b565b60405180910390fd5b6000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611dd15743600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601b601a9054906101000a900460ff161561249857611dee611089565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611e5c5750611e2c611089565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611e955750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611ecf575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611ee85750601b60149054906101000a900460ff16155b1561249757601b60179054906101000a900460ff16611fe257600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fa25750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd890613afd565b60405180910390fd5b5b601b60169054906101000a900460ff16156121ae57611fff611089565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120885750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156120e25750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121ad5743600860003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f90613bb5565b60405180910390fd5b43600860003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122515750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122f85760155483111561229b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229290613c47565b60405180910390fd5b6016546122a785610d3d565b846122b29190613c67565b11156122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea90613ce7565b60405180910390fd5b612496565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561239b5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123ea576015548311156123e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dc90613d79565b60405180910390fd5b612495565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124945760165461244785610d3d565b846124529190613c67565b1115612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a90613ce7565b60405180910390fd5b5b5b5b5b5b601b60149054906101000a900460ff161580156124bf5750601b8054906101000a900460ff165b156124d1576124ce8584612a98565b92505b61252383600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0790919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125ca61257c8385612b0790919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5190919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61266f8587612b0790919063ffffffff16565b60405161267c9190612ec5565b60405180910390a35050505050565b60008383111582906126d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ca9190612d80565b60405180910390fd5b50600083856126e29190613d99565b9050809150509392505050565b6001601b60186101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561272757612726613dcd565b5b6040519080825280602002602001820160405280156127555781602001602082028036833780820191505090505b509050308160008151811061276d5761276c61343a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612814573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283891906135ec565b8160018151811061284c5761284b61343a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128b330600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119d3565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612917959493929190613eba565b600060405180830381600087803b15801561293157600080fd5b505af1158015612945573d6000803e3d6000fd5b50505050506000601b60186101000a81548160ff02191690831515021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156129d0573d6000803e3d6000fd5b5050565b60008083036129e65760009050612a48565b600082846129f491906133f8565b9050828482612a039190613f43565b14612a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3a90613fe6565b60405180910390fd5b809150505b92915050565b6000612a9083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612baf565b905092915050565b600080829050600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612afd57612afa8385612c12565b90505b8091505092915050565b6000612b4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061268b565b905092915050565b6000808284612b609190613c67565b905083811015612ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9c90614052565b60405180910390fd5b8091505092915050565b60008083118290612bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bed9190612d80565b60405180910390fd5b5060008385612c059190613f43565b9050809150509392505050565b600080603290506000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205443612c669190613d99565b905060008282612c7691906133f8565b9050600060648211612c9457816064612c8f9190613d99565b612c97565b60005b9050600060648289612ca991906133f8565b612cb39190613f43565b9050612cc9600082612cd690919063ffffffff16565b9550505050505092915050565b600081831015612ce65781612ce8565b825b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d2a578082015181840152602081019050612d0f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d5282612cf0565b612d5c8185612cfb565b9350612d6c818560208601612d0c565b612d7581612d36565b840191505092915050565b60006020820190508181036000830152612d9a8184612d47565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612dd782612dac565b9050919050565b612de781612dcc565b8114612df257600080fd5b50565b600081359050612e0481612dde565b92915050565b6000819050919050565b612e1d81612e0a565b8114612e2857600080fd5b50565b600081359050612e3a81612e14565b92915050565b60008060408385031215612e5757612e56612da2565b5b6000612e6585828601612df5565b9250506020612e7685828601612e2b565b9150509250929050565b60008115159050919050565b612e9581612e80565b82525050565b6000602082019050612eb06000830184612e8c565b92915050565b612ebf81612e0a565b82525050565b6000602082019050612eda6000830184612eb6565b92915050565b600080600060608486031215612ef957612ef8612da2565b5b6000612f0786828701612df5565b9350506020612f1886828701612df5565b9250506040612f2986828701612e2b565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612f5857612f57612f33565b5b8235905067ffffffffffffffff811115612f7557612f74612f38565b5b602083019150836020820283011115612f9157612f90612f3d565b5b9250929050565b600080600060408486031215612fb157612fb0612da2565b5b600084013567ffffffffffffffff811115612fcf57612fce612da7565b5b612fdb86828701612f42565b93509350506020612fee86828701612e2b565b9150509250925092565b600060ff82169050919050565b61300e81612ff8565b82525050565b60006020820190506130296000830184613005565b92915050565b61303881612dcc565b82525050565b6000602082019050613053600083018461302f565b92915050565b60006020828403121561306f5761306e612da2565b5b600061307d84828501612df5565b91505092915050565b61308f81612e80565b811461309a57600080fd5b50565b6000813590506130ac81613086565b92915050565b6000806000604084860312156130cb576130ca612da2565b5b600084013567ffffffffffffffff8111156130e9576130e8612da7565b5b6130f586828701612f42565b935093505060206131088682870161309d565b9150509250925092565b6000806040838503121561312957613128612da2565b5b600061313785828601612df5565b925050602061314885828601612df5565b9150509250929050565b60006020828403121561316857613167612da2565b5b600061317684828501612e2b565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131b5602083612cfb565b91506131c08261317f565b602082019050919050565b600060208201905081810360008301526131e4816131a8565b9050919050565b6000819050919050565b6000819050919050565b600061321a613215613210846131eb565b6131f5565b612e0a565b9050919050565b61322a816131ff565b82525050565b60006020820190506132456000830184613221565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156132d1578086048111156132ad576132ac61324b565b5b60018516156132bc5780820291505b80810290506132ca8561327a565b9450613291565b94509492505050565b6000826132ea57600190506133a6565b816132f857600090506133a6565b816001811461330e576002811461331857613347565b60019150506133a6565b60ff84111561332a5761332961324b565b5b8360020a9150848211156133415761334061324b565b5b506133a6565b5060208310610133831016604e8410600b841016171561337c5782820a9050838111156133775761337661324b565b5b6133a6565b6133898484846001613287565b925090508184048111156133a05761339f61324b565b5b81810290505b9392505050565b60006133b882612e0a565b91506133c383612ff8565b92506133f07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846132da565b905092915050565b600061340382612e0a565b915061340e83612e0a565b925082820261341c81612e0a565b915082820484148315176134335761343261324b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061347881612e14565b92915050565b60006020828403121561349457613493612da2565b5b60006134a284828501613469565b91505092915050565b60006134c66134c16134bc84612dac565b6131f5565b612dac565b9050919050565b60006134d8826134ab565b9050919050565b60006134ea826134cd565b9050919050565b6134fa816134df565b82525050565b600060408201905061351560008301856134f1565b6135226020830184612eb6565b9392505050565b60008151905061353881613086565b92915050565b60006020828403121561355457613553612da2565b5b600061356284828501613529565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006135a1601783612cfb565b91506135ac8261356b565b602082019050919050565b600060208201905081810360008301526135d081613594565b9050919050565b6000815190506135e681612dde565b92915050565b60006020828403121561360257613601612da2565b5b6000613610848285016135d7565b91505092915050565b600060408201905061362e600083018561302f565b61363b602083018461302f565b9392505050565b600060c082019050613657600083018961302f565b6136646020830188612eb6565b6136716040830187613221565b61367e6060830186613221565b61368b608083018561302f565b61369860a0830184612eb6565b979650505050505050565b6000806000606084860312156136bc576136bb612da2565b5b60006136ca86828701613469565b93505060206136db86828701613469565b92505060406136ec86828701613469565b9150509250925092565b600060408201905061370b600083018561302f565b6137186020830184612eb6565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061377b602483612cfb565b91506137868261371f565b604082019050919050565b600060208201905081810360008301526137aa8161376e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061380d602283612cfb565b9150613818826137b1565b604082019050919050565b6000602082019050818103600083015261383c81613800565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061389f602583612cfb565b91506138aa82613843565b604082019050919050565b600060208201905081810360008301526138ce81613892565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613931602383612cfb565b915061393c826138d5565b604082019050919050565b6000602082019050818103600083015261396081613924565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006139c3602983612cfb565b91506139ce82613967565b604082019050919050565b600060208201905081810360008301526139f2816139b6565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613a55602683612cfb565b9150613a60826139f9565b604082019050919050565b60006020820190508181036000830152613a8481613a48565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f7420616374697660008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ae7602283612cfb565b9150613af282613a8b565b604082019050919050565b60006020820190508181036000830152613b1681613ada565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000613b9f604983612cfb565b9150613baa82613b1d565b606082019050919050565b60006020820190508181036000830152613bce81613b92565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b6000613c31602683612cfb565b9150613c3c82613bd5565b604082019050919050565b60006020820190508181036000830152613c6081613c24565b9050919050565b6000613c7282612e0a565b9150613c7d83612e0a565b9250828201905080821115613c9557613c9461324b565b5b92915050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613cd1601383612cfb565b9150613cdc82613c9b565b602082019050919050565b60006020820190508181036000830152613d0081613cc4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b6000613d63602783612cfb565b9150613d6e82613d07565b604082019050919050565b60006020820190508181036000830152613d9281613d56565b9050919050565b6000613da482612e0a565b9150613daf83612e0a565b9250828203905081811115613dc757613dc661324b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e3181612dcc565b82525050565b6000613e438383613e28565b60208301905092915050565b6000602082019050919050565b6000613e6782613dfc565b613e718185613e07565b9350613e7c83613e18565b8060005b83811015613ead578151613e948882613e37565b9750613e9f83613e4f565b925050600181019050613e80565b5085935050505092915050565b600060a082019050613ecf6000830188612eb6565b613edc6020830187613221565b8181036040830152613eee8186613e5c565b9050613efd606083018561302f565b613f0a6080830184612eb6565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f4e82612e0a565b9150613f5983612e0a565b925082613f6957613f68613f14565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fd0602183612cfb565b9150613fdb82613f74565b604082019050919050565b60006020820190508181036000830152613fff81613fc3565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061403c601b83612cfb565b915061404782614006565b602082019050919050565b6000602082019050818103600083015261406b8161402f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220765093df65ab05d0e91fa93f1344af84f4b0d445c7116b8cfea9dd151d6dd3fb64736f6c63430008170033

Deployed Bytecode Sourcemap

3429:11796:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11683:115;;;;;;;;;;;;;:::i;:::-;;6013:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6846:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4998:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6290:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7015:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13126:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7679:113;;;;;;;;;;;;;:::i;:::-;;5360:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6199:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5065:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5206:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14859:363;;;;;;;;;;;;;:::i;:::-;;11517:158;;;;;;;;;;;;;:::i;:::-;;6393:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;736:148:0;;;;;;;;;;;;;:::i;:::-;;4803:56:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13393:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;522:79:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4866:58:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6104:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6520:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13667:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4931:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14762:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6695:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12900:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14632:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12219:669;;;;;;;;;;;;;:::i;:::-;;11683:115;659:12:0;:10;:12::i;:::-;649:22;;:6;;;;;;;;;;:22;;;641:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11752:1:1::1;11737:12;:16;;;;11769:21;11788:1;11769:21;;;;;;:::i;:::-;;;;;;;;11683:115::o:0;6013:83::-;6050:13;6083:5;;;;;;;;;;;;;;;;;6076:12;;6013:83;:::o;6846:161::-;6921:4;6938:39;6947:12;:10;:12::i;:::-;6961:7;6970:6;6938:8;:39::i;:::-;6995:4;6988:11;;6846:161;;;;:::o;4998:54::-;;;;:::o;6290:95::-;6343:7;4610:1;4671:2;:13;;;;:::i;:::-;4653:15;:31;;;;:::i;:::-;6363:14;;6290:95;:::o;7015:313::-;7113:4;7130:36;7140:6;7148:9;7159:6;7130:9;:36::i;:::-;7177:121;7186:6;7194:12;:10;:12::i;:::-;7208:89;7246:6;7208:89;;;;;;;;;;;;;;;;;:11;:19;7220:6;7208:19;;;;;;;;;;;;;;;:33;7228:12;:10;:12::i;:::-;7208:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7177:8;:121::i;:::-;7316:4;7309:11;;7015:313;;;;;:::o;13126:222::-;659:12:0;:10;:12::i;:::-;649:22;;:6;;;;;;;;;;:22;;;641:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13222:9:1::1;13217:124;13241:10;;:17;;13237:1;:21;13217:124;;;13309:10;;13320:1;13309:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13285:44;;13294:13;;;;;;;;;;;13285:44;;;13324:4;13285:44;;;;;;:::i;:::-;;;;;;;;13260:3;;;;;;;13217:124;;;;13126:222:::0;;;:::o;7679:113::-;659:12:0;:10;:12::i;:::-;649:22;;:6;;;;;;;;;;:22;;;641:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7748:4:1::1;7731:14;;:21;;;;;;;;;;;;;;;;;;7779:5;7763:13;;:21;;;;;;;;;;;;;;;;;;7679:113::o:0;5360:32::-;;;;;;;;;;;;:::o;6199:83::-;6240:5;4610:1;6258:16;;6199:83;:::o;5065:28::-;;;;;;;;;;;;;:::o;5206:34::-;;;;;;;;;;;;;:::o;14859:363::-;14923:10;;;;;;;;;;;14909:24;;:12;:10;:12::i;:::-;:24;;;14901:33;;;;;;14945:20;14966:24;14984:4;14966:9;:24::i;:::-;14945:45;;15017:1;15004:12;:14;:29;;;;;15022:11;;;;;;;;;;;15004:29;15001:88;;;15047:30;15064:12;15047:16;:30::i;:::-;15001:88;15099:18;15118:21;15099:40;;15164:1;15153:10;:12;15150:65;;;15179:24;15192:10;15179:12;:24::i;:::-;15150:65;14890:332;;14859:363::o;11517:158::-;659:12:0;:10;:12::i;:::-;649:22;;:6;;;;;;;;;;:22;;;641:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4610:1:1::1;4671:2;:13;;;;:::i;:::-;4653:15;:31;;;;:::i;:::-;11569:12;:22;;;;4610:1;4671:2;:13;;;;:::i;:::-;4653:15;:31;;;;:::i;:::-;11602:14;:22;;;;11640:27;4610:1;4671:2;:13;;;;:::i;:::-;4653:15;:31;;;;:::i;:::-;11640:27;;;;;;:::i;:::-;;;;;;;;11517:158::o:0;6393:119::-;6459:7;6486:9;:18;6496:7;6486:18;;;;;;;;;;;;;;;;6479:25;;6393:119;;;:::o;736:148:0:-;659:12;:10;:12::i;:::-;649:22;;:6;;;;;;;;;;:22;;;641:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;843:1:::1;806:40;;827:6;::::0;::::1;;;;;;;;806:40;;;;;;;;;;;;874:1;857:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;736:148::o:0;4803:56:1:-;;;;:::o;13393:266::-;13491:10;;;;;;;;;;;13477:24;;:12;:10;:12::i;:::-;:24;;;13469:33;;;;;;13513:15;13531:63;13590:3;13531:54;13577:7;13538:8;13531:26;;;13566:4;13531:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;13513:81;;13612:8;13605:25;;;13631:10;;;;;;;;;;;13643:7;13605:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13458:201;13393:266;;:::o;522:79:0:-;560:7;587:6;;;;;;;;;;;580:13;;522:79;:::o;4866:58:1:-;;;;:::o;6104:87::-;6143:13;6176:7;;;;;;;;;;;;;;;;;6169:14;;6104:87;:::o;6520:167::-;6598:4;6615:42;6625:12;:10;:12::i;:::-;6639:9;6650:6;6615:9;:42::i;:::-;6675:4;6668:11;;6520:167;;;;:::o;13667:214::-;659:12:0;:10;:12::i;:::-;649:22;;:6;;;;;;;;;;:22;;;641:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13763:9:1::1;13758:116;13782:8;;:15;;13778:1;:19;13758:116;;;13859:3;13819:24;:37;13844:8;;13853:1;13844:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13819:37;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;13799:3;;;;;;;13758:116;;;;13667:214:::0;;;:::o;4931:60::-;;;;:::o;14762:89::-;659:12:0;:10;:12::i;:::-;649:22;;:6;;;;;;;;;;:22;;;641:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14838:5:1::1;14822:13;;:21;;;;;;;;;;;;;;;;;;14762:89:::0;:::o;6695:143::-;6776:7;6803:11;:18;6815:5;6803:18;;;;;;;;;;;;;;;:27;6822:7;6803:27;;;;;;;;;;;;;;;;6796:34;;6695:143;;;;:::o;12900:218::-;12975:10;;;;;;;;;;;12961:24;;:12;:10;:12::i;:::-;:24;;;12953:33;;;;;;13012:12;;13003:7;:21;;:47;;;;;13037:13;;13028:7;:22;;13003:47;12995:56;;;;;;13073:7;13060:12;:20;;;;13103:7;13089:13;:21;;;;12900:218;:::o;14632:121::-;14687:4;14710:24;:35;14735:9;14710:35;;;;;;;;;;;;;;;;;;;;;;;;;14703:42;;14632:121;;;:::o;12219:669::-;659:12:0;:10;:12::i;:::-;649:22;;:6;;;;;;;;;;:22;;;641:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12281:11:1::1;;;;;;;;;;;12280:12;12272:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12367:42;12330:15;;:80;;;;;;;;;;;;;;;;;;12421:58;12438:4;12453:15;;;;;;;;;;;4610:1;4671:2;:13;;;;:::i;:::-;4653:15;:31;;;;:::i;:::-;12421:8;:58::i;:::-;12524:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12506:55;;;12570:4;12577:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12506:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12490:13;;:110;;;;;;;;;;;;;;;;;;12611:15;;;;;;;;;;;:31;;;12650:21;12681:4;12687:24;12705:4;12687:9;:24::i;:::-;12712:1;12714::::0;12716:7:::1;:5;:7::i;:::-;12724:15;12611:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12758:13;;;;;;;;;;;12751:29;;;12789:15;;;;;;;;;;;12807:14;12751:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12847:4;12833:11;;:18;;;;;;;;;;;;;;;;;;12876:4;12862:11;;:18;;;;;;;;;;;;;;;;;;12219:669::o:0;99:98:0:-;152:7;179:10;172:17;;99:98;:::o;7336:335:1:-;7446:1;7429:19;;:5;:19;;;7421:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7527:1;7508:21;;:7;:21;;;7500:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7609:6;7579:11;:18;7591:5;7579:18;;;;;;;;;;;;;;;:27;7598:7;7579:27;;;;;;;;;;;;;;;:36;;;;7647:7;7631:32;;7640:5;7631:32;;;7656:6;7631:32;;;;;;:::i;:::-;;;;;;;;7336:335;;;:::o;7800:3104::-;7904:1;7888:18;;:4;:18;;;7880:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7981:1;7967:16;;:2;:16;;;7959:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8051:1;8042:6;:10;8034:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8109:17;8139:21;8163:9;:15;8173:4;8163:15;;;;;;;;;;;;;;;;8139:39;;8228:6;8211:13;:23;;8189:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;8350:1;8314:28;:32;8343:2;8314:32;;;;;;;;;;;;;;;;:37;8311:125;;8412:12;8377:28;:32;8406:2;8377:32;;;;;;;;;;;;;;;:47;;;;8311:125;8452:13;;;;;;;;;;;8448:2168;;;8512:7;:5;:7::i;:::-;8504:15;;:4;:15;;;;:49;;;;;8546:7;:5;:7::i;:::-;8540:13;;:2;:13;;;;8504:49;:86;;;;;8588:1;8574:16;;:2;:16;;;;8504:86;:128;;;;;8625:6;8611:21;;:2;:21;;;;8504:128;:158;;;;;8654:8;;;;;;;;;;;8653:9;8504:158;8482:2123;;;8702:14;;;;;;;;;;;8697:232;;8775:17;:23;8793:4;8775:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;8802:17;:21;8820:2;8802:21;;;;;;;;;;;;;;;;;;;;;;;;;8775:48;8741:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;8697:232;8953:20;;;;;;;;;;;8949:641;;;9034:7;:5;:7::i;:::-;9028:13;;:2;:13;;;;:72;;;;;9084:15;;;;;;;;;;;9070:30;;:2;:30;;;;9028:72;:129;;;;;9143:13;;;;;;;;;;;9129:28;;:2;:28;;;;9028:129;8998:573;;;9321:12;9246:28;:39;9275:9;9246:39;;;;;;;;;;;;;;;;:87;9208:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;9535:12;9493:28;:39;9522:9;9493:39;;;;;;;;;;;;;;;:54;;;;8998:573;8949:641;9636:25;:31;9662:4;9636:31;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;9672:19;:23;9692:2;9672:23;;;;;;;;;;;;;;;;;;;;;;;;;9671:24;9636:59;9610:980;;;9782:5;;9772:6;:15;;9738:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;9960:9;;9943:13;9953:2;9943:9;:13::i;:::-;9934:6;:22;;;;:::i;:::-;:35;;9900:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;9610:980;;;10109:25;:29;10135:2;10109:29;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;10143:19;:25;10163:4;10143:25;;;;;;;;;;;;;;;;;;;;;;;;;10142:26;10109:59;10083:507;;;10255:5;;10245:6;:15;;10211:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;10083:507;;;10382:19;:23;10402:2;10382:23;;;;;;;;;;;;;;;;;;;;;;;;;10377:213;;10490:9;;10473:13;10483:2;10473:9;:13::i;:::-;10464:6;:22;;;;:::i;:::-;:35;;10430:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;10377:213;10083:507;9610:980;8482:2123;8448:2168;10632:8;;;;;;;;;;;10631:9;:26;;;;;10644:13;;;;;;;;;;10631:26;10628:93;;;10682:27;10696:4;10702:6;10682:13;:27::i;:::-;10673:36;;10628:93;10747:27;10767:6;10747:9;:15;10757:4;10747:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10731:9;:15;10741:4;10731:15;;;;;;;;;;;;;;;:43;;;;10799:40;10817:21;10828:9;10817:6;:10;;:21;;;;:::i;:::-;10799:9;:13;10809:2;10799:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10785:9;:13;10795:2;10785:13;;;;;;;;;;;;;;;:54;;;;10870:2;10855:41;;10864:4;10855:41;;;10874:21;10885:9;10874:6;:10;;:21;;;;:::i;:::-;10855:41;;;;;;:::i;:::-;;;;;;;;7869:3035;;7800:3104;;;:::o;1453:190::-;1539:7;1572:1;1567;:6;;1575:12;1559:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1599:9;1615:1;1611;:5;;;;:::i;:::-;1599:17;;1634:1;1627:8;;;1453:190;;;;;:::o;11026:483::-;5608:4;5599:6;;:13;;;;;;;;;;;;;;;;;;11104:21:::1;11142:1;11128:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11104:40;;11173:4;11155;11160:1;11155:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11199:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11189:4;11194:1;11189:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11232:62;11249:4;11264:15;;;;;;;;;;;11282:11;11232:8;:62::i;:::-;11305:15;;;;;;;;;;;:66;;;11386:11;11412:1;11428:4;11455;11475:15;11305:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11093:416;5644:5:::0;5635:6;;:14;;;;;;;;;;;;;;;;;;11026:483;:::o;12119:92::-;12176:10;;;;;;;;;;;:19;;:27;12196:6;12176:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12119:92;:::o;1651:246::-;1709:7;1738:1;1733;:6;1729:47;;1763:1;1756:8;;;;1729:47;1786:9;1802:1;1798;:5;;;;:::i;:::-;1786:17;;1831:1;1826;1822;:5;;;;:::i;:::-;:10;1814:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1888:1;1881:8;;;1651:246;;;;;:::o;1905:132::-;1963:7;1990:39;1994:1;1997;1990:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1983:46;;1905:132;;;;:::o;11806:305::-;11879:4;11895:21;11919:6;11895:30;;11940:24;:30;11965:4;11940:30;;;;;;;;;;;;;;;;;;;;;;;;;11936:124;;;12016:32;12035:6;12043:4;12016:18;:32::i;:::-;11997:51;;11936:124;12077:16;12070:23;;;11806:305;;;;:::o;1309:136::-;1367:7;1394:43;1398:1;1401;1394:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1387:50;;1309:136;;;;:::o;1122:179::-;1180:7;1200:9;1216:1;1212;:5;;;;:::i;:::-;1200:17;;1241:1;1236;:6;;1228:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1292:1;1285:8;;;1122:179;;;;:::o;2045:189::-;2131:7;2163:1;2159;:5;2166:12;2151:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2190:9;2206:1;2202;:5;;;;:::i;:::-;2190:17;;2225:1;2218:8;;;2045:189;;;;;:::o;13893:727::-;13972:7;14041:14;14058:2;14041:19;;14071:12;14099:28;:34;14128:4;14099:34;;;;;;;;;;;;;;;;14086:12;:47;;;;:::i;:::-;14071:62;;14144:25;14179:6;14172:4;:13;;;;:::i;:::-;14144:41;;14253:24;14303:3;14280:20;:26;:59;;14319:20;14313:3;:26;;;;:::i;:::-;14280:59;;;14309:1;14280:59;14253:86;;14519:18;14571:3;14549:19;14540:6;:28;;;;:::i;:::-;:34;;;;:::i;:::-;14519:55;;14592:20;14610:1;14592:13;:17;;:20;;;;:::i;:::-;14585:27;;;;;;;13893:727;;;;:::o;2242:107::-;2300:7;2332:1;2327;:6;;:14;;2340:1;2327:14;;;2336:1;2327:14;2320:21;;2242:107;;;;:::o;7:99:2:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:117::-;4532:1;4529;4522:12;4546:117;4655:1;4652;4645:12;4669:117;4778:1;4775;4768:12;4809:568;4882:8;4892:6;4942:3;4935:4;4927:6;4923:17;4919:27;4909:122;;4950:79;;:::i;:::-;4909:122;5063:6;5050:20;5040:30;;5093:18;5085:6;5082:30;5079:117;;;5115:79;;:::i;:::-;5079:117;5229:4;5221:6;5217:17;5205:29;;5283:3;5275:4;5267:6;5263:17;5253:8;5249:32;5246:41;5243:128;;;5290:79;;:::i;:::-;5243:128;4809:568;;;;;:::o;5383:704::-;5478:6;5486;5494;5543:2;5531:9;5522:7;5518:23;5514:32;5511:119;;;5549:79;;:::i;:::-;5511:119;5697:1;5686:9;5682:17;5669:31;5727:18;5719:6;5716:30;5713:117;;;5749:79;;:::i;:::-;5713:117;5862:80;5934:7;5925:6;5914:9;5910:22;5862:80;:::i;:::-;5844:98;;;;5640:312;5991:2;6017:53;6062:7;6053:6;6042:9;6038:22;6017:53;:::i;:::-;6007:63;;5962:118;5383:704;;;;;:::o;6093:86::-;6128:7;6168:4;6161:5;6157:16;6146:27;;6093:86;;;:::o;6185:112::-;6268:22;6284:5;6268:22;:::i;:::-;6263:3;6256:35;6185:112;;:::o;6303:214::-;6392:4;6430:2;6419:9;6415:18;6407:26;;6443:67;6507:1;6496:9;6492:17;6483:6;6443:67;:::i;:::-;6303:214;;;;:::o;6523:118::-;6610:24;6628:5;6610:24;:::i;:::-;6605:3;6598:37;6523:118;;:::o;6647:222::-;6740:4;6778:2;6767:9;6763:18;6755:26;;6791:71;6859:1;6848:9;6844:17;6835:6;6791:71;:::i;:::-;6647:222;;;;:::o;6875:329::-;6934:6;6983:2;6971:9;6962:7;6958:23;6954:32;6951:119;;;6989:79;;:::i;:::-;6951:119;7109:1;7134:53;7179:7;7170:6;7159:9;7155:22;7134:53;:::i;:::-;7124:63;;7080:117;6875:329;;;;:::o;7210:116::-;7280:21;7295:5;7280:21;:::i;:::-;7273:5;7270:32;7260:60;;7316:1;7313;7306:12;7260:60;7210:116;:::o;7332:133::-;7375:5;7413:6;7400:20;7391:29;;7429:30;7453:5;7429:30;:::i;:::-;7332:133;;;;:::o;7471:698::-;7563:6;7571;7579;7628:2;7616:9;7607:7;7603:23;7599:32;7596:119;;;7634:79;;:::i;:::-;7596:119;7782:1;7771:9;7767:17;7754:31;7812:18;7804:6;7801:30;7798:117;;;7834:79;;:::i;:::-;7798:117;7947:80;8019:7;8010:6;7999:9;7995:22;7947:80;:::i;:::-;7929:98;;;;7725:312;8076:2;8102:50;8144:7;8135:6;8124:9;8120:22;8102:50;:::i;:::-;8092:60;;8047:115;7471:698;;;;;:::o;8175:474::-;8243:6;8251;8300:2;8288:9;8279:7;8275:23;8271:32;8268:119;;;8306:79;;:::i;:::-;8268:119;8426:1;8451:53;8496:7;8487:6;8476:9;8472:22;8451:53;:::i;:::-;8441:63;;8397:117;8553:2;8579:53;8624:7;8615:6;8604:9;8600:22;8579:53;:::i;:::-;8569:63;;8524:118;8175:474;;;;;:::o;8655:329::-;8714:6;8763:2;8751:9;8742:7;8738:23;8734:32;8731:119;;;8769:79;;:::i;:::-;8731:119;8889:1;8914:53;8959:7;8950:6;8939:9;8935:22;8914:53;:::i;:::-;8904:63;;8860:117;8655:329;;;;:::o;8990:182::-;9130:34;9126:1;9118:6;9114:14;9107:58;8990:182;:::o;9178:366::-;9320:3;9341:67;9405:2;9400:3;9341:67;:::i;:::-;9334:74;;9417:93;9506:3;9417:93;:::i;:::-;9535:2;9530:3;9526:12;9519:19;;9178:366;;;:::o;9550:419::-;9716:4;9754:2;9743:9;9739:18;9731:26;;9803:9;9797:4;9793:20;9789:1;9778:9;9774:17;9767:47;9831:131;9957:4;9831:131;:::i;:::-;9823:139;;9550:419;;;:::o;9975:85::-;10020:7;10049:5;10038:16;;9975:85;;;:::o;10066:60::-;10094:3;10115:5;10108:12;;10066:60;;;:::o;10132:158::-;10190:9;10223:61;10241:42;10250:32;10276:5;10250:32;:::i;:::-;10241:42;:::i;:::-;10223:61;:::i;:::-;10210:74;;10132:158;;;:::o;10296:147::-;10391:45;10430:5;10391:45;:::i;:::-;10386:3;10379:58;10296:147;;:::o;10449:238::-;10550:4;10588:2;10577:9;10573:18;10565:26;;10601:79;10677:1;10666:9;10662:17;10653:6;10601:79;:::i;:::-;10449:238;;;;:::o;10693:180::-;10741:77;10738:1;10731:88;10838:4;10835:1;10828:15;10862:4;10859:1;10852:15;10879:102;10921:8;10968:5;10965:1;10961:13;10940:34;;10879:102;;;:::o;10987:848::-;11048:5;11055:4;11079:6;11070:15;;11103:5;11094:14;;11117:712;11138:1;11128:8;11125:15;11117:712;;;11233:4;11228:3;11224:14;11218:4;11215:24;11212:50;;;11242:18;;:::i;:::-;11212:50;11292:1;11282:8;11278:16;11275:451;;;11707:4;11700:5;11696:16;11687:25;;11275:451;11757:4;11751;11747:15;11739:23;;11787:32;11810:8;11787:32;:::i;:::-;11775:44;;11117:712;;;10987:848;;;;;;;:::o;11841:1073::-;11895:5;12086:8;12076:40;;12107:1;12098:10;;12109:5;;12076:40;12135:4;12125:36;;12152:1;12143:10;;12154:5;;12125:36;12221:4;12269:1;12264:27;;;;12305:1;12300:191;;;;12214:277;;12264:27;12282:1;12273:10;;12284:5;;;12300:191;12345:3;12335:8;12332:17;12329:43;;;12352:18;;:::i;:::-;12329:43;12401:8;12398:1;12394:16;12385:25;;12436:3;12429:5;12426:14;12423:40;;;12443:18;;:::i;:::-;12423:40;12476:5;;;12214:277;;12600:2;12590:8;12587:16;12581:3;12575:4;12572:13;12568:36;12550:2;12540:8;12537:16;12532:2;12526:4;12523:12;12519:35;12503:111;12500:246;;;12656:8;12650:4;12646:19;12637:28;;12691:3;12684:5;12681:14;12678:40;;;12698:18;;:::i;:::-;12678:40;12731:5;;12500:246;12771:42;12809:3;12799:8;12793:4;12790:1;12771:42;:::i;:::-;12756:57;;;;12845:4;12840:3;12836:14;12829:5;12826:25;12823:51;;;12854:18;;:::i;:::-;12823:51;12903:4;12896:5;12892:16;12883:25;;11841:1073;;;;;;:::o;12920:281::-;12978:5;13002:23;13020:4;13002:23;:::i;:::-;12994:31;;13046:25;13062:8;13046:25;:::i;:::-;13034:37;;13090:104;13127:66;13117:8;13111:4;13090:104;:::i;:::-;13081:113;;12920:281;;;;:::o;13207:410::-;13247:7;13270:20;13288:1;13270:20;:::i;:::-;13265:25;;13304:20;13322:1;13304:20;:::i;:::-;13299:25;;13359:1;13356;13352:9;13381:30;13399:11;13381:30;:::i;:::-;13370:41;;13560:1;13551:7;13547:15;13544:1;13541:22;13521:1;13514:9;13494:83;13471:139;;13590:18;;:::i;:::-;13471:139;13255:362;13207:410;;;;:::o;13623:180::-;13671:77;13668:1;13661:88;13768:4;13765:1;13758:15;13792:4;13789:1;13782:15;13809:143;13866:5;13897:6;13891:13;13882:22;;13913:33;13940:5;13913:33;:::i;:::-;13809:143;;;;:::o;13958:351::-;14028:6;14077:2;14065:9;14056:7;14052:23;14048:32;14045:119;;;14083:79;;:::i;:::-;14045:119;14203:1;14228:64;14284:7;14275:6;14264:9;14260:22;14228:64;:::i;:::-;14218:74;;14174:128;13958:351;;;;:::o;14315:142::-;14365:9;14398:53;14416:34;14425:24;14443:5;14425:24;:::i;:::-;14416:34;:::i;:::-;14398:53;:::i;:::-;14385:66;;14315:142;;;:::o;14463:126::-;14513:9;14546:37;14577:5;14546:37;:::i;:::-;14533:50;;14463:126;;;:::o;14595:134::-;14653:9;14686:37;14717:5;14686:37;:::i;:::-;14673:50;;14595:134;;;:::o;14735:147::-;14830:45;14869:5;14830:45;:::i;:::-;14825:3;14818:58;14735:147;;:::o;14888:348::-;15017:4;15055:2;15044:9;15040:18;15032:26;;15068:79;15144:1;15133:9;15129:17;15120:6;15068:79;:::i;:::-;15157:72;15225:2;15214:9;15210:18;15201:6;15157:72;:::i;:::-;14888:348;;;;;:::o;15242:137::-;15296:5;15327:6;15321:13;15312:22;;15343:30;15367:5;15343:30;:::i;:::-;15242:137;;;;:::o;15385:345::-;15452:6;15501:2;15489:9;15480:7;15476:23;15472:32;15469:119;;;15507:79;;:::i;:::-;15469:119;15627:1;15652:61;15705:7;15696:6;15685:9;15681:22;15652:61;:::i;:::-;15642:71;;15598:125;15385:345;;;;:::o;15736:173::-;15876:25;15872:1;15864:6;15860:14;15853:49;15736:173;:::o;15915:366::-;16057:3;16078:67;16142:2;16137:3;16078:67;:::i;:::-;16071:74;;16154:93;16243:3;16154:93;:::i;:::-;16272:2;16267:3;16263:12;16256:19;;15915:366;;;:::o;16287:419::-;16453:4;16491:2;16480:9;16476:18;16468:26;;16540:9;16534:4;16530:20;16526:1;16515:9;16511:17;16504:47;16568:131;16694:4;16568:131;:::i;:::-;16560:139;;16287:419;;;:::o;16712:143::-;16769:5;16800:6;16794:13;16785:22;;16816:33;16843:5;16816:33;:::i;:::-;16712:143;;;;:::o;16861:351::-;16931:6;16980:2;16968:9;16959:7;16955:23;16951:32;16948:119;;;16986:79;;:::i;:::-;16948:119;17106:1;17131:64;17187:7;17178:6;17167:9;17163:22;17131:64;:::i;:::-;17121:74;;17077:128;16861:351;;;;:::o;17218:332::-;17339:4;17377:2;17366:9;17362:18;17354:26;;17390:71;17458:1;17447:9;17443:17;17434:6;17390:71;:::i;:::-;17471:72;17539:2;17528:9;17524:18;17515:6;17471:72;:::i;:::-;17218:332;;;;;:::o;17556:807::-;17805:4;17843:3;17832:9;17828:19;17820:27;;17857:71;17925:1;17914:9;17910:17;17901:6;17857:71;:::i;:::-;17938:72;18006:2;17995:9;17991:18;17982:6;17938:72;:::i;:::-;18020:80;18096:2;18085:9;18081:18;18072:6;18020:80;:::i;:::-;18110;18186:2;18175:9;18171:18;18162:6;18110:80;:::i;:::-;18200:73;18268:3;18257:9;18253:19;18244:6;18200:73;:::i;:::-;18283;18351:3;18340:9;18336:19;18327:6;18283:73;:::i;:::-;17556:807;;;;;;;;;:::o;18369:663::-;18457:6;18465;18473;18522:2;18510:9;18501:7;18497:23;18493:32;18490:119;;;18528:79;;:::i;:::-;18490:119;18648:1;18673:64;18729:7;18720:6;18709:9;18705:22;18673:64;:::i;:::-;18663:74;;18619:128;18786:2;18812:64;18868:7;18859:6;18848:9;18844:22;18812:64;:::i;:::-;18802:74;;18757:129;18925:2;18951:64;19007:7;18998:6;18987:9;18983:22;18951:64;:::i;:::-;18941:74;;18896:129;18369:663;;;;;:::o;19038:332::-;19159:4;19197:2;19186:9;19182:18;19174:26;;19210:71;19278:1;19267:9;19263:17;19254:6;19210:71;:::i;:::-;19291:72;19359:2;19348:9;19344:18;19335:6;19291:72;:::i;:::-;19038:332;;;;;:::o;19376:223::-;19516:34;19512:1;19504:6;19500:14;19493:58;19585:6;19580:2;19572:6;19568:15;19561:31;19376:223;:::o;19605:366::-;19747:3;19768:67;19832:2;19827:3;19768:67;:::i;:::-;19761:74;;19844:93;19933:3;19844:93;:::i;:::-;19962:2;19957:3;19953:12;19946:19;;19605:366;;;:::o;19977:419::-;20143:4;20181:2;20170:9;20166:18;20158:26;;20230:9;20224:4;20220:20;20216:1;20205:9;20201:17;20194:47;20258:131;20384:4;20258:131;:::i;:::-;20250:139;;19977:419;;;:::o;20402:221::-;20542:34;20538:1;20530:6;20526:14;20519:58;20611:4;20606:2;20598:6;20594:15;20587:29;20402:221;:::o;20629:366::-;20771:3;20792:67;20856:2;20851:3;20792:67;:::i;:::-;20785:74;;20868:93;20957:3;20868:93;:::i;:::-;20986:2;20981:3;20977:12;20970:19;;20629:366;;;:::o;21001:419::-;21167:4;21205:2;21194:9;21190:18;21182:26;;21254:9;21248:4;21244:20;21240:1;21229:9;21225:17;21218:47;21282:131;21408:4;21282:131;:::i;:::-;21274:139;;21001:419;;;:::o;21426:224::-;21566:34;21562:1;21554:6;21550:14;21543:58;21635:7;21630:2;21622:6;21618:15;21611:32;21426:224;:::o;21656:366::-;21798:3;21819:67;21883:2;21878:3;21819:67;:::i;:::-;21812:74;;21895:93;21984:3;21895:93;:::i;:::-;22013:2;22008:3;22004:12;21997:19;;21656:366;;;:::o;22028:419::-;22194:4;22232:2;22221:9;22217:18;22209:26;;22281:9;22275:4;22271:20;22267:1;22256:9;22252:17;22245:47;22309:131;22435:4;22309:131;:::i;:::-;22301:139;;22028:419;;;:::o;22453:222::-;22593:34;22589:1;22581:6;22577:14;22570:58;22662:5;22657:2;22649:6;22645:15;22638:30;22453:222;:::o;22681:366::-;22823:3;22844:67;22908:2;22903:3;22844:67;:::i;:::-;22837:74;;22920:93;23009:3;22920:93;:::i;:::-;23038:2;23033:3;23029:12;23022:19;;22681:366;;;:::o;23053:419::-;23219:4;23257:2;23246:9;23242:18;23234:26;;23306:9;23300:4;23296:20;23292:1;23281:9;23277:17;23270:47;23334:131;23460:4;23334:131;:::i;:::-;23326:139;;23053:419;;;:::o;23478:228::-;23618:34;23614:1;23606:6;23602:14;23595:58;23687:11;23682:2;23674:6;23670:15;23663:36;23478:228;:::o;23712:366::-;23854:3;23875:67;23939:2;23934:3;23875:67;:::i;:::-;23868:74;;23951:93;24040:3;23951:93;:::i;:::-;24069:2;24064:3;24060:12;24053:19;;23712:366;;;:::o;24084:419::-;24250:4;24288:2;24277:9;24273:18;24265:26;;24337:9;24331:4;24327:20;24323:1;24312:9;24308:17;24301:47;24365:131;24491:4;24365:131;:::i;:::-;24357:139;;24084:419;;;:::o;24509:225::-;24649:34;24645:1;24637:6;24633:14;24626:58;24718:8;24713:2;24705:6;24701:15;24694:33;24509:225;:::o;24740:366::-;24882:3;24903:67;24967:2;24962:3;24903:67;:::i;:::-;24896:74;;24979:93;25068:3;24979:93;:::i;:::-;25097:2;25092:3;25088:12;25081:19;;24740:366;;;:::o;25112:419::-;25278:4;25316:2;25305:9;25301:18;25293:26;;25365:9;25359:4;25355:20;25351:1;25340:9;25336:17;25329:47;25393:131;25519:4;25393:131;:::i;:::-;25385:139;;25112:419;;;:::o;25537:221::-;25677:34;25673:1;25665:6;25661:14;25654:58;25746:4;25741:2;25733:6;25729:15;25722:29;25537:221;:::o;25764:366::-;25906:3;25927:67;25991:2;25986:3;25927:67;:::i;:::-;25920:74;;26003:93;26092:3;26003:93;:::i;:::-;26121:2;26116:3;26112:12;26105:19;;25764:366;;;:::o;26136:419::-;26302:4;26340:2;26329:9;26325:18;26317:26;;26389:9;26383:4;26379:20;26375:1;26364:9;26360:17;26353:47;26417:131;26543:4;26417:131;:::i;:::-;26409:139;;26136:419;;;:::o;26561:297::-;26701:34;26697:1;26689:6;26685:14;26678:58;26770:34;26765:2;26757:6;26753:15;26746:59;26839:11;26834:2;26826:6;26822:15;26815:36;26561:297;:::o;26864:366::-;27006:3;27027:67;27091:2;27086:3;27027:67;:::i;:::-;27020:74;;27103:93;27192:3;27103:93;:::i;:::-;27221:2;27216:3;27212:12;27205:19;;26864:366;;;:::o;27236:419::-;27402:4;27440:2;27429:9;27425:18;27417:26;;27489:9;27483:4;27479:20;27475:1;27464:9;27460:17;27453:47;27517:131;27643:4;27517:131;:::i;:::-;27509:139;;27236:419;;;:::o;27661:225::-;27801:34;27797:1;27789:6;27785:14;27778:58;27870:8;27865:2;27857:6;27853:15;27846:33;27661:225;:::o;27892:366::-;28034:3;28055:67;28119:2;28114:3;28055:67;:::i;:::-;28048:74;;28131:93;28220:3;28131:93;:::i;:::-;28249:2;28244:3;28240:12;28233:19;;27892:366;;;:::o;28264:419::-;28430:4;28468:2;28457:9;28453:18;28445:26;;28517:9;28511:4;28507:20;28503:1;28492:9;28488:17;28481:47;28545:131;28671:4;28545:131;:::i;:::-;28537:139;;28264:419;;;:::o;28689:191::-;28729:3;28748:20;28766:1;28748:20;:::i;:::-;28743:25;;28782:20;28800:1;28782:20;:::i;:::-;28777:25;;28825:1;28822;28818:9;28811:16;;28846:3;28843:1;28840:10;28837:36;;;28853:18;;:::i;:::-;28837:36;28689:191;;;;:::o;28886:169::-;29026:21;29022:1;29014:6;29010:14;29003:45;28886:169;:::o;29061:366::-;29203:3;29224:67;29288:2;29283:3;29224:67;:::i;:::-;29217:74;;29300:93;29389:3;29300:93;:::i;:::-;29418:2;29413:3;29409:12;29402:19;;29061:366;;;:::o;29433:419::-;29599:4;29637:2;29626:9;29622:18;29614:26;;29686:9;29680:4;29676:20;29672:1;29661:9;29657:17;29650:47;29714:131;29840:4;29714:131;:::i;:::-;29706:139;;29433:419;;;:::o;29858:226::-;29998:34;29994:1;29986:6;29982:14;29975:58;30067:9;30062:2;30054:6;30050:15;30043:34;29858:226;:::o;30090:366::-;30232:3;30253:67;30317:2;30312:3;30253:67;:::i;:::-;30246:74;;30329:93;30418:3;30329:93;:::i;:::-;30447:2;30442:3;30438:12;30431:19;;30090:366;;;:::o;30462:419::-;30628:4;30666:2;30655:9;30651:18;30643:26;;30715:9;30709:4;30705:20;30701:1;30690:9;30686:17;30679:47;30743:131;30869:4;30743:131;:::i;:::-;30735:139;;30462:419;;;:::o;30887:194::-;30927:4;30947:20;30965:1;30947:20;:::i;:::-;30942:25;;30981:20;30999:1;30981:20;:::i;:::-;30976:25;;31025:1;31022;31018:9;31010:17;;31049:1;31043:4;31040:11;31037:37;;;31054:18;;:::i;:::-;31037:37;30887:194;;;;:::o;31087:180::-;31135:77;31132:1;31125:88;31232:4;31229:1;31222:15;31256:4;31253:1;31246:15;31273:114;31340:6;31374:5;31368:12;31358:22;;31273:114;;;:::o;31393:184::-;31492:11;31526:6;31521:3;31514:19;31566:4;31561:3;31557:14;31542:29;;31393:184;;;;:::o;31583:132::-;31650:4;31673:3;31665:11;;31703:4;31698:3;31694:14;31686:22;;31583:132;;;:::o;31721:108::-;31798:24;31816:5;31798:24;:::i;:::-;31793:3;31786:37;31721:108;;:::o;31835:179::-;31904:10;31925:46;31967:3;31959:6;31925:46;:::i;:::-;32003:4;31998:3;31994:14;31980:28;;31835:179;;;;:::o;32020:113::-;32090:4;32122;32117:3;32113:14;32105:22;;32020:113;;;:::o;32169:732::-;32288:3;32317:54;32365:5;32317:54;:::i;:::-;32387:86;32466:6;32461:3;32387:86;:::i;:::-;32380:93;;32497:56;32547:5;32497:56;:::i;:::-;32576:7;32607:1;32592:284;32617:6;32614:1;32611:13;32592:284;;;32693:6;32687:13;32720:63;32779:3;32764:13;32720:63;:::i;:::-;32713:70;;32806:60;32859:6;32806:60;:::i;:::-;32796:70;;32652:224;32639:1;32636;32632:9;32627:14;;32592:284;;;32596:14;32892:3;32885:10;;32293:608;;;32169:732;;;;:::o;32907:831::-;33170:4;33208:3;33197:9;33193:19;33185:27;;33222:71;33290:1;33279:9;33275:17;33266:6;33222:71;:::i;:::-;33303:80;33379:2;33368:9;33364:18;33355:6;33303:80;:::i;:::-;33430:9;33424:4;33420:20;33415:2;33404:9;33400:18;33393:48;33458:108;33561:4;33552:6;33458:108;:::i;:::-;33450:116;;33576:72;33644:2;33633:9;33629:18;33620:6;33576:72;:::i;:::-;33658:73;33726:3;33715:9;33711:19;33702:6;33658:73;:::i;:::-;32907:831;;;;;;;;:::o;33744:180::-;33792:77;33789:1;33782:88;33889:4;33886:1;33879:15;33913:4;33910:1;33903:15;33930:185;33970:1;33987:20;34005:1;33987:20;:::i;:::-;33982:25;;34021:20;34039:1;34021:20;:::i;:::-;34016:25;;34060:1;34050:35;;34065:18;;:::i;:::-;34050:35;34107:1;34104;34100:9;34095:14;;33930:185;;;;:::o;34121:220::-;34261:34;34257:1;34249:6;34245:14;34238:58;34330:3;34325:2;34317:6;34313:15;34306:28;34121:220;:::o;34347:366::-;34489:3;34510:67;34574:2;34569:3;34510:67;:::i;:::-;34503:74;;34586:93;34675:3;34586:93;:::i;:::-;34704:2;34699:3;34695:12;34688:19;;34347:366;;;:::o;34719:419::-;34885:4;34923:2;34912:9;34908:18;34900:26;;34972:9;34966:4;34962:20;34958:1;34947:9;34943:17;34936:47;35000:131;35126:4;35000:131;:::i;:::-;34992:139;;34719:419;;;:::o;35144:177::-;35284:29;35280:1;35272:6;35268:14;35261:53;35144:177;:::o;35327:366::-;35469:3;35490:67;35554:2;35549:3;35490:67;:::i;:::-;35483:74;;35566:93;35655:3;35566:93;:::i;:::-;35684:2;35679:3;35675:12;35668:19;;35327:366;;;:::o;35699:419::-;35865:4;35903:2;35892:9;35888:18;35880:26;;35952:9;35946:4;35942:20;35938:1;35927:9;35923:17;35916:47;35980:131;36106:4;35980:131;:::i;:::-;35972:139;;35699:419;;;:::o

Swarm Source

ipfs://765093df65ab05d0e91fa93f1344af84f4b0d445c7116b8cfea9dd151d6dd3fb

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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