Contract 0x8A8cc2F5346b3C95EE343c62F89f41E0c1b68C7b

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x227a3aef95a1ee47dadb609c541fb900a141a7204b9106a1d268e9c23a17b510Audit Reserves46358382022-09-14 22:53:4213 days 17 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO1.700166756216 4,919.620578829
0xe00b000e7d57f0ae9053a563f6657cba815a2beeb85e2a8963c3a53a5ecc52c3Toggle46358312022-09-14 22:53:0313 days 17 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.540518749792 4,919.620913741
0xc0e4898b164691874511b8076b13670943a6cc94106f486f25257c7527ad7a6cAudit Reserves46355202022-09-14 22:23:3813 days 17 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO1.570426350059 4,919.63545079
0x7e317bbce640e9fe469dfb79cc01cf873aa5818a3ab8b583bbb3eb9d8a391a9cManage46325232022-09-14 17:39:4813 days 22 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.3571558474 4,919.773092189
0xa2d3de79d339acca07a724df5640d468428302c49aafe4ad211f5d4325a9b340Manage46324692022-09-14 17:34:4113 days 22 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.374783581127 4,919.775543492
0x5969f06a6bf78444c33ce82246c95d65d122c02c3c45d3fd5e053757fa9acc21Manage46324562022-09-14 17:33:2813 days 22 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.374724589206 4,919.776139357
0x113dde4f95bbde752e57f2243e9944d44983d5b40257f0e3da9cf53548131ed0Manage46324412022-09-14 17:32:0313 days 22 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.374488492832 4,919.776834063
0xc071b85a6097c409ee3abcbcc6c812ef7d63a5f0dd20e5c071feef1c5b97aa31Audit Reserves46324322022-09-14 17:31:1213 days 22 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO1.571632679004 4,919.777240412
0xc82c2541817b37be85903f46f763ff369076f7f1bc6741279b6b86f6e989c870Audit Reserves46323752022-09-14 17:25:4813 days 22 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO1.612634950408 4,919.779827108
0x3e6504f491095c3b0d3d5f608dcc04e29794b89f473da8890eb5c2e3a5af48bdManage46323692022-09-14 17:25:1413 days 22 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.648814732341 4,969.780105561
0x1efea68ad746376af616cef6d819cf061e2739c90eeddec8c1f2aa905f52a56eAudit Reserves46323622022-09-14 17:24:3413 days 22 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO1.633859081257 4,919.780431368
0x24794d894efb84e038c0d9e3c81f1f437488b3f5c781e48c1edbce4ee4a82626Manage46323312022-09-14 17:21:3713 days 22 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.639994744116 4,919.781868273
0x2b07f87f82f86d46268ea4798b710c4f4cf37ecddf9c797a6595c1e93c9d5121Toggle46322802022-09-14 17:16:4813 days 22 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.149054701754 4,919.784194954
0xed8fc45fb4ad8a5032b7b4485a6387c126d1f8847b16f9a27fc0b1c1336ece98Toggle46322652022-09-14 17:15:2313 days 22 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.149054722432 4,919.784877452
0x5c33f2fc5ade6b8ad7b9d3451baf2cb3539764b027e6bea3a49c86c0833a255eToggle46322532022-09-14 17:14:1413 days 22 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.14905473932 4,919.785434881
0x7e6e69c7d24e52ed4ec12410fbfefde5117fcc2eb64fd089b4b37bbbb4121a1dToggle46322312022-09-14 17:12:0913 days 23 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.149054769279 4,919.786423724
0x9842cc854a994fe17303b37ce3c244c92e72b1a03426a61063328c123cf3c904Toggle46322152022-09-14 17:10:3813 days 23 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.149054791365 4,919.787152707
0xb165c4930b9336191cd13f6c9a2e71111468e4c8742878a61c3e58dd09d23a9cToggle46321842022-09-14 17:07:4113 days 23 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.149010556168 4,919.788568703
0x924adb1a018b174bbc2a0cce23a8f65915cf8a8ed891617c0b8f098e6f81c8d0Toggle46321812022-09-14 17:07:2413 days 23 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.464088588135 4,919.788702921
0x88f181b626afe5a62d70a86de11905bbef3166c0b8ed68486b4f8963fea8be49Toggle46321712022-09-14 17:06:2513 days 23 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.147765867411 4,919.789159711
0x72228a67310b423ed48998296613f1c403e17e6f8fc82702f9c92f5462843dc6Manage33809572022-06-24 11:11:0796 days 5 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.453524453407 4,975.965827407
0xc67adaac3d2a645e39574bcce44fa3b0b87d474c968918e75e54d8e6b0245446Toggle31086862022-06-06 12:34:26114 days 3 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.149412337463 4,986.727770611
0xc025ca4b9b6767cd9d1fbf974d90aaa8f319d9d546f670a19ece5b7b1cb071c2Toggle31086852022-06-06 12:34:20114 days 3 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.150359816975 4,986.727811602
0x7a52c8009d50cf7f0051e44a96abbe6ccbbb6f8ea179a3f3ff7ce17476384e3aManage31017652022-06-06 1:39:01114 days 14 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.529395922652 4,987.008832859
0x3d670e3ded68e3403fe70e80de669e2da04bc490b00421fe236604b7b55fee72Toggle31015632022-06-06 1:19:51114 days 14 hrs ago0x67cf8f525d89a26f23f05dc7d8c811b0cdb5cbe0 IN  Minotaur.Money: Treasury0 CRO0.475920955788 4,987.016470249
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MINOTreasury

Compiler Version
v0.7.5+commit.eb77ed08

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-01-07
*/

// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity 0.7.5;

//import "hardhat/console.sol";

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 add32(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 mul32(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;
    }
}

library Address {

  function isContract(address account) internal view returns (bool) {
        // This method relies in extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function functionCall(
        address target, 
        bytes memory data, 
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function _functionCallWithValue(
        address target, 
        bytes memory data, 
        uint256 weiValue, 
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }

    function _verifyCallResult(
        bool success, 
        bytes memory returndata, 
        string memory errorMessage
    ) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface IOwnable {
  function manager() external view returns (address);

  function renounceManagement() external;
  
  function pushManagement( address newOwner_ ) external;
  
  function pullManagement() external;
}

contract Ownable is IOwnable {

    address internal _owner;
    address internal _newOwner;

    event OwnershipPushed(address indexed previousOwner, address indexed newOwner);
    event OwnershipPulled(address indexed previousOwner, address indexed newOwner);

    constructor () {
        _owner = msg.sender;
        emit OwnershipPushed( address(0), _owner );
    }

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

    modifier onlyManager() {
        require( _owner == msg.sender, "Ownable: caller is not the owner" );
        _;
    }

    function renounceManagement() public virtual override onlyManager() {
        emit OwnershipPushed( _owner, address(0) );
        _owner = address(0);
    }

    function pushManagement( address newOwner_ ) public virtual override onlyManager() {
        require( newOwner_ != address(0), "Ownable: new owner is the zero address");
        emit OwnershipPushed( _owner, newOwner_ );
        _newOwner = newOwner_;
    }
    
    function pullManagement() public virtual override {
        require( msg.sender == _newOwner, "Ownable: must be new owner to pull");
        emit OwnershipPulled( _owner, _newOwner );
        _owner = _newOwner;
    }
}

interface IERC20 {
    function decimals() external view returns (uint8);

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

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

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

    function totalSupply() external view returns (uint256);

    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 SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

interface IERC20Mintable {
  function mint( uint256 amount_ ) external;

  function mint( address account_, uint256 ammount_ ) external;
}

interface IMINOERC20 {
    function burnFrom(address account_, uint256 amount_) external;
}

interface IBondCalculator {
  function valuation( address pair_, uint amount_ ) external view returns ( uint _value );
}

contract MINOTreasury is Ownable {

    using SafeMath for uint;
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    event Deposit( address indexed token, uint amount, uint value );
    event Withdrawal( address indexed token, uint amount, uint value );
    event CreateDebt( address indexed debtor, address indexed token, uint amount, uint value );
    event RepayDebt( address indexed debtor, address indexed token, uint amount, uint value );
    event ReservesManaged( address indexed token, uint amount );
    event ReservesUpdated( uint indexed totalReserves );
    event ReservesAudited( uint indexed totalReserves );
    event RewardsMinted( address indexed caller, address indexed recipient, uint amount );
    event ChangeQueued( MANAGING indexed managing, address queued );
    event ChangeActivated( MANAGING indexed managing, address activated, bool result );

    enum MANAGING { 
        RESERVEDEPOSITOR, 
        RESERVESPENDER, 
        RESERVETOKEN, 
        RESERVEMANAGER, 
        LIQUIDITYDEPOSITOR, 
        LIQUIDITYTOKEN, 
        LIQUIDITYMANAGER, 
        DEBTOR, 
        REWARDMANAGER, 
        SMINO 
    }

    address public immutable MINO;
    uint256 public immutable secondsNeededForQueue;

    address[] public reserveTokens; // Push only, beware false-positives.
    mapping( address => bool ) public isReserveToken;
    mapping( address => uint256 ) public reserveTokenQueue; // Delays changes to mapping.

    address[] public reserveDepositors; // Push only, beware false-positives. Only for viewing.
    mapping( address => bool ) public isReserveDepositor;
    mapping( address => uint256 ) public reserveDepositorQueue; // Delays changes to mapping.

    address[] public reserveSpenders; // Push only, beware false-positives. Only for viewing.
    mapping( address => bool ) public isReserveSpender;
    mapping( address => uint256 ) public reserveSpenderQueue; // Delays changes to mapping.

    address[] public liquidityTokens; // Push only, beware false-positives.
    mapping( address => bool ) public isLiquidityToken;
    mapping( address => uint256 ) public LiquidityTokenQueue; // Delays changes to mapping.

    address[] public liquidityDepositors; // Push only, beware false-positives. Only for viewing.
    mapping( address => bool ) public isLiquidityDepositor;
    mapping( address => uint256 ) public LiquidityDepositorQueue; // Delays changes to mapping.

    mapping( address => address ) public bondCalculator; // bond calculator for liquidity token

    address[] public reserveManagers; // Push only, beware false-positives. Only for viewing.
    mapping( address => bool ) public isReserveManager;
    mapping( address => uint256 ) public ReserveManagerQueue; // Delays changes to mapping.

    address[] public liquidityManagers; // Push only, beware false-positives. Only for viewing.
    mapping( address => bool ) public isLiquidityManager;
    mapping( address => uint256 ) public LiquidityManagerQueue; // Delays changes to mapping.

    address[] public debtors; // Push only, beware false-positives. Only for viewing.
    mapping( address => bool ) public isDebtor;
    mapping( address => uint256 ) public debtorQueue; // Delays changes to mapping.
    mapping( address => uint ) public debtorBalance;

    address[] public rewardManagers; // Push only, beware false-positives. Only for viewing.
    mapping( address => bool ) public isRewardManager;
    mapping( address => uint256 ) public rewardManagerQueue; // Delays changes to mapping.

    address public sMINO;
    uint public sMINOQueue; // Delays change to sMINO address
    
    uint public totalReserves; // Risk-free value of all assets
    uint public totalDebt;

    // initial 10x
    uint public fractionality = 100000;

    constructor (
        address _MINO,
        address [] memory _reserveTokens,
        address[] memory _liquidityTokens,
        address _bondCalc,
        uint256 _secondsNeededForQueue
    ) {
        require( _MINO != address(0) );
        MINO = _MINO;

        for (uint256 i = 0;i<_reserveTokens.length;i++) {
            isReserveToken[ _reserveTokens[i] ] = true;
            reserveTokens.push( _reserveTokens[i] );
        }

        for (uint256 i = 0;i<_liquidityTokens.length;i++) {
            isLiquidityToken[ _liquidityTokens[i] ] = true;
            liquidityTokens.push( _liquidityTokens[i] );
            bondCalculator[ _liquidityTokens[i] ] = _bondCalc;
        }

        secondsNeededForQueue = _secondsNeededForQueue;
    }

    /**
        @notice allow approved address to deposit an asset for MINO
        @param _amount uint
        @param _token address
        @param _profit uint
        @return send_ uint
     */
    function deposit( uint _amount, address _token, uint _profit ) external returns ( uint send_ ) {
        require( isReserveToken[ _token ] || isLiquidityToken[ _token ], "Not accepted" );
        IERC20( _token ).safeTransferFrom( msg.sender, address(this), _amount );

        if ( isReserveToken[ _token ] ) {
            require( isReserveDepositor[ msg.sender ], "Not approved" );
        } else {
            require( isLiquidityDepositor[ msg.sender ], "Not approved" );
        }

        uint value = valueOf(_token, _amount);
        // mint MINO needed and store amount of rewards for distribution
        send_ = value.sub( _profit );
        IERC20Mintable( MINO ).mint( msg.sender, send_ );

        totalReserves = totalReserves.add( value );
        emit ReservesUpdated( totalReserves );

        emit Deposit( _token, _amount, value );
    }

    /**
        @notice allow approved address to burn MINO for reserves
        @param _amount uint
        @param _token address
     */
    function withdraw( uint _amount, address _token ) external {
        require( isReserveToken[ _token ], "Not accepted" ); // Only reserves can be used for redemptions
        require( isReserveSpender[ msg.sender ] == true, "Not approved" );

        uint value = valueOf( _token, _amount );
        IMINOERC20( MINO ).burnFrom( msg.sender, value );

        totalReserves = totalReserves.sub( value );
        emit ReservesUpdated( totalReserves );

        IERC20( _token ).safeTransfer( msg.sender, _amount );

        emit Withdrawal( _token, _amount, value );
    }

    /**
        @notice allow approved address to borrow reserves
        @param _amount uint
        @param _token address
     */
    function incurDebt( uint _amount, address _token ) external {
        require( isDebtor[ msg.sender ], "Not approved" );
        require( isReserveToken[ _token ], "Not accepted" );

        uint value = valueOf( _token, _amount );

        uint maximumDebt = IERC20( sMINO ).balanceOf( msg.sender ); // Can only borrow against sMINO held
        uint availableDebt = maximumDebt.sub( debtorBalance[ msg.sender ] );
        require( value <= availableDebt, "Exceeds debt limit" );

        debtorBalance[ msg.sender ] = debtorBalance[ msg.sender ].add( value );
        totalDebt = totalDebt.add( value );

        totalReserves = totalReserves.sub( value );
        emit ReservesUpdated( totalReserves );

        IERC20( _token ).safeTransfer( msg.sender, _amount );
        
        emit CreateDebt( msg.sender, _token, _amount, value );
    }

    /**
        @notice allow approved address to repay borrowed reserves with reserves
        @param _amount uint
        @param _token address
     */
    function repayDebtWithReserve( uint _amount, address _token ) external {
        require( isDebtor[ msg.sender ], "Not approved" );
        require( isReserveToken[ _token ], "Not accepted" );

        IERC20( _token ).safeTransferFrom( msg.sender, address(this), _amount );

        uint value = valueOf( _token, _amount );
        debtorBalance[ msg.sender ] = debtorBalance[ msg.sender ].sub( value );
        totalDebt = totalDebt.sub( value );

        totalReserves = totalReserves.add( value );
        emit ReservesUpdated( totalReserves );

        emit RepayDebt( msg.sender, _token, _amount, value );
    }

    /**
        @notice allow approved address to repay borrowed reserves with MINO
        @param _amount uint
     */
    function repayDebtWithMINO( uint _amount ) external {
        require( isDebtor[ msg.sender ], "Not approved" );

        IMINOERC20( MINO ).burnFrom( msg.sender, _amount );

        debtorBalance[ msg.sender ] = debtorBalance[ msg.sender ].sub( _amount );
        totalDebt = totalDebt.sub( _amount );

        emit RepayDebt( msg.sender, MINO, _amount, _amount );
    }

    /**
        @notice allow approved address to withdraw assets
        @param _token address
        @param _amount uint
     */
    function manage( address _token, uint _amount ) external {
        if( isLiquidityToken[ _token ] ) {
            require( isLiquidityManager[ msg.sender ], "Not approved" );
        } else {
            require( isReserveManager[ msg.sender ], "Not approved" );
        }

        uint value = valueOf(_token, _amount);
        require( value <= excessReserves(), "Insufficient reserves" );

        totalReserves = totalReserves.sub( value );
        emit ReservesUpdated( totalReserves );

        IERC20( _token ).safeTransfer( msg.sender, _amount );

        emit ReservesManaged( _token, _amount );
    }

    /**
        @notice send epoch reward to staking contract
     */
    function mintRewards( address _recipient, uint _amount ) external {
        require( isRewardManager[ msg.sender ], "Not approved" );
        require( _amount <= excessReserves(), "Insufficient reserves" );

        IERC20Mintable( MINO ).mint( _recipient, _amount );

        emit RewardsMinted( msg.sender, _recipient, _amount );
    }

    /**
        @notice returns excess reserves not backing tokens
        @return uint
     */
    function excessReserves() public view returns ( uint ) {
        return totalReserves.mul( fractionality ).div( 10000 ).sub( IERC20( MINO ).totalSupply().sub( totalDebt ) );
    }

    function setFractionality( uint256 _fractionality ) external onlyManager() {
        require( _fractionality >= 10000 && _fractionality <= 1000000, "fractionality must be 1-100x!" );
        fractionality = _fractionality;
    }

    /**
        @notice takes inventory of all tracked assets
        @notice always consolidate to recognized reserves before audit
     */
    function auditReserves() external {
        uint256 reserves;
        for( uint256 i = 0; i < reserveTokens.length; i++ ) {
            if ( isReserveToken[ reserveTokens[ i ] ] ) {
                reserves = reserves.add (
                    valueOf( reserveTokens[ i ], IERC20( reserveTokens[ i ] ).balanceOf( address(this) ) )
                );
            }
        }
        for( uint256 i = 0; i < liquidityTokens.length; i++ ) {
            if ( !isReserveToken[ liquidityTokens[ i ] ] && isLiquidityToken[ liquidityTokens[ i ] ] ) {
                reserves = reserves.add (
                    valueOf( liquidityTokens[ i ], IERC20( liquidityTokens[ i ] ).balanceOf( address(this) ) )
                );
            }
        }
        totalReserves = reserves;
        emit ReservesUpdated( reserves );
        emit ReservesAudited( reserves );
    }

    /**
        @notice returns MINO valuation of asset
        @param _token address
        @param _amount uint
        @return value_ uint
     */
    function valueOf( address _token, uint _amount ) public view returns ( uint value_ ) {
        if ( isReserveToken[ _token ] ) {
            // convert amount to match MINO decimals
            value_ = _amount.mul( 10 ** IERC20( MINO ).decimals() ).div( 10 ** IERC20( _token ).decimals() );
        } else if ( isLiquidityToken[ _token ] ) {
            value_ = IBondCalculator( bondCalculator[ _token ] ).valuation( _token, _amount );
        }
    }

    /**
        @notice queue address to change boolean in mapping
        @param _managing MANAGING
        @param _address address
        @return bool
     */
    function queue( MANAGING _managing, address _address ) external onlyManager() returns ( bool ) {
        uint256 delay1x = block.timestamp.add( secondsNeededForQueue );
        uint256 delay2x = block.timestamp.add( secondsNeededForQueue.mul( 2 ) );

        require( _address != address(0) );
        if ( _managing == MANAGING.RESERVEDEPOSITOR ) { // 0
            reserveDepositorQueue[ _address ] = delay1x;
        } else if ( _managing == MANAGING.RESERVESPENDER ) { // 1
            reserveSpenderQueue[ _address ] = delay1x;
        } else if ( _managing == MANAGING.RESERVETOKEN ) { // 2
            reserveTokenQueue[ _address ] = delay1x;
        } else if ( _managing == MANAGING.RESERVEMANAGER ) { // 3
            ReserveManagerQueue[ _address ] = delay2x;
        } else if ( _managing == MANAGING.LIQUIDITYDEPOSITOR ) { // 4
            LiquidityDepositorQueue[ _address ] = delay1x;
        } else if ( _managing == MANAGING.LIQUIDITYTOKEN ) { // 5
            LiquidityTokenQueue[ _address ] = delay1x;
        } else if ( _managing == MANAGING.LIQUIDITYMANAGER ) { // 6
            LiquidityManagerQueue[ _address ] = delay2x;
        } else if ( _managing == MANAGING.DEBTOR ) { // 7
            debtorQueue[ _address ] = delay1x;
        } else if ( _managing == MANAGING.REWARDMANAGER ) { // 8
            rewardManagerQueue[ _address ] = delay1x;
        } else if ( _managing == MANAGING.SMINO ) { // 9
            sMINOQueue = delay1x;
        } else return false;

        emit ChangeQueued( _managing, _address );
        return true;
    }

    /**
        @notice verify queue then set boolean in mapping
        @param _managing MANAGING
        @param _address address
        @param _calculator address
        @return bool
     */
    function toggle(
        MANAGING _managing, 
        address _address, 
        address _calculator 
    ) external onlyManager() returns ( bool ) {
        require( _address != address(0) );
        bool result;
        if ( _managing == MANAGING.RESERVEDEPOSITOR ) { // 0
            if ( requirements( reserveDepositorQueue, isReserveDepositor, _address ) ) {
                reserveDepositorQueue[ _address ] = 0;
                if( !listContains( reserveDepositors, _address ) ) {
                    reserveDepositors.push( _address );
                }
            }
            result = !isReserveDepositor[ _address ];
            isReserveDepositor[ _address ] = result;
            
        } else if ( _managing == MANAGING.RESERVESPENDER ) { // 1
            if ( requirements( reserveSpenderQueue, isReserveSpender, _address ) ) {
                reserveSpenderQueue[ _address ] = 0;
                if( !listContains( reserveSpenders, _address ) ) {
                    reserveSpenders.push( _address );
                }
            }
            result = !isReserveSpender[ _address ];
            isReserveSpender[ _address ] = result;

        } else if ( _managing == MANAGING.RESERVETOKEN ) { // 2
            if ( requirements( reserveTokenQueue, isReserveToken, _address ) ) {
                reserveTokenQueue[ _address ] = 0;
                if( !listContains( reserveTokens, _address ) ) {
                    reserveTokens.push( _address );
                }
            }
            result = !isReserveToken[ _address ];
            isReserveToken[ _address ] = result;

        } else if ( _managing == MANAGING.RESERVEMANAGER ) { // 3
            if ( requirements( ReserveManagerQueue, isReserveManager, _address ) ) {
                reserveManagers.push( _address );
                ReserveManagerQueue[ _address ] = 0;
                if( !listContains( reserveManagers, _address ) ) {
                    reserveManagers.push( _address );
                }
            }
            result = !isReserveManager[ _address ];
            isReserveManager[ _address ] = result;

        } else if ( _managing == MANAGING.LIQUIDITYDEPOSITOR ) { // 4
            if ( requirements( LiquidityDepositorQueue, isLiquidityDepositor, _address ) ) {
                liquidityDepositors.push( _address );
                LiquidityDepositorQueue[ _address ] = 0;
                if( !listContains( liquidityDepositors, _address ) ) {
                    liquidityDepositors.push( _address );
                }
            }
            result = !isLiquidityDepositor[ _address ];
            isLiquidityDepositor[ _address ] = result;

        } else if ( _managing == MANAGING.LIQUIDITYTOKEN ) { // 5
            if ( requirements( LiquidityTokenQueue, isLiquidityToken, _address ) ) {
                LiquidityTokenQueue[ _address ] = 0;
                if( !listContains( liquidityTokens, _address ) ) {
                    liquidityTokens.push( _address );
                }
            }
            result = !isLiquidityToken[ _address ];
            isLiquidityToken[ _address ] = result;
            bondCalculator[ _address ] = _calculator;

        } else if ( _managing == MANAGING.LIQUIDITYMANAGER ) { // 6
            if ( requirements( LiquidityManagerQueue, isLiquidityManager, _address ) ) {
                LiquidityManagerQueue[ _address ] = 0;
                if( !listContains( liquidityManagers, _address ) ) {
                    liquidityManagers.push( _address );
                }
            }
            result = !isLiquidityManager[ _address ];
            isLiquidityManager[ _address ] = result;

        } else if ( _managing == MANAGING.DEBTOR ) { // 7
            if ( requirements( debtorQueue, isDebtor, _address ) ) {
                debtorQueue[ _address ] = 0;
                if( !listContains( debtors, _address ) ) {
                    debtors.push( _address );
                }
            }
            result = !isDebtor[ _address ];
            isDebtor[ _address ] = result;

        } else if ( _managing == MANAGING.REWARDMANAGER ) { // 8
            if ( requirements( rewardManagerQueue, isRewardManager, _address ) ) {
                rewardManagerQueue[ _address ] = 0;
                if( !listContains( rewardManagers, _address ) ) {
                    rewardManagers.push( _address );
                }
            }
            result = !isRewardManager[ _address ];
            isRewardManager[ _address ] = result;

        } else if ( _managing == MANAGING.SMINO ) { // 9
            sMINOQueue = 0;
            sMINO = _address;
            result = true;

        } else return false;

        emit ChangeActivated( _managing, _address, result );
        return true;
    }

    /**
        @notice checks requirements and returns altered structs
        @param queue_ mapping( address => uint )
        @param status_ mapping( address => bool )
        @param _address address
        @return bool 
     */
    function requirements( 
        mapping( address => uint256 ) storage queue_, 
        mapping( address => bool ) storage status_, 
        address _address 
    ) internal view returns ( bool ) {
        if ( !status_[ _address ] ) {
            //require( queue_[ _address ] != 0, "Must queue" );
            //require( queue_[ _address ] <= block.timestamp, "Queue not expired" );
            return true;
        } return false;
    }

    /**
        @notice checks array to ensure against duplicate
        @param _list address[]
        @param _token address
        @return bool
     */
    function listContains( address[] storage _list, address _token ) internal view returns ( bool ) {
        for( uint i = 0; i < _list.length; i++ ) {
            if( _list[ i ] == _token ) {
                return true;
            }
        }
        return false;
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_MINO","type":"address"},{"internalType":"address[]","name":"_reserveTokens","type":"address[]"},{"internalType":"address[]","name":"_liquidityTokens","type":"address[]"},{"internalType":"address","name":"_bondCalc","type":"address"},{"internalType":"uint256","name":"_secondsNeededForQueue","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"enum MINOTreasury.MANAGING","name":"managing","type":"uint8"},{"indexed":false,"internalType":"address","name":"activated","type":"address"},{"indexed":false,"internalType":"bool","name":"result","type":"bool"}],"name":"ChangeActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"enum MINOTreasury.MANAGING","name":"managing","type":"uint8"},{"indexed":false,"internalType":"address","name":"queued","type":"address"}],"name":"ChangeQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"debtor","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"CreateDebt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipPulled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipPushed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"debtor","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"RepayDebt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"totalReserves","type":"uint256"}],"name":"ReservesAudited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReservesManaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"totalReserves","type":"uint256"}],"name":"ReservesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"LiquidityDepositorQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"LiquidityManagerQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"LiquidityTokenQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ReserveManagerQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"auditReserves","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bondCalculator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"debtorBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"debtorQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"debtors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_profit","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"send_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"excessReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fractionality","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"}],"name":"incurDebt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDebtor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLiquidityDepositor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLiquidityManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLiquidityToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isReserveDepositor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isReserveManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isReserveSpender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isReserveToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isRewardManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"liquidityDepositors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"liquidityManagers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"liquidityTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"manage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pullManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"pushManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum MINOTreasury.MANAGING","name":"_managing","type":"uint8"},{"internalType":"address","name":"_address","type":"address"}],"name":"queue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"repayDebtWithMINO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"}],"name":"repayDebtWithReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"reserveDepositorQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reserveDepositors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reserveManagers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"reserveSpenderQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reserveSpenders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"reserveTokenQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reserveTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardManagerQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardManagers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sMINO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sMINOQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"secondsNeededForQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fractionality","type":"uint256"}],"name":"setFractionality","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum MINOTreasury.MANAGING","name":"_managing","type":"uint8"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"address","name":"_calculator","type":"address"}],"name":"toggle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"valueOf","outputs":[{"internalType":"uint256","name":"value_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052620186a06023553480156200001857600080fd5b50604051620064f0380380620064f0833981810160405260a08110156200003e57600080fd5b8101908080519060200190929190805160405193929190846401000000008211156200006957600080fd5b838201915060208201858111156200008057600080fd5b82518660208202830111640100000000821117156200009e57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015620000d7578082015181840152602081019050620000ba565b50505050905001604052602001805160405193929190846401000000008211156200010157600080fd5b838201915060208201858111156200011857600080fd5b82518660208202830111640100000000821117156200013657600080fd5b8083526020830192505050908051906020019060200280838360005b838110156200016f57808201518184015260208101905062000152565b505050509050016040526020018051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba60405160405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156200028957600080fd5b8473ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060005b8451811015620003be57600160036000878481518110620002e057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060028582815181106200034857fe5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508080600101915050620002c3565b5060005b83518110156200054f576001600c6000868481518110620003df57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b8482815181106200044757fe5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260116000868481518110620004c157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508080600101915050620003c2565b508060a08181525050505050505060805160601c60a051615f3f620005b1600039806133ba5280613e8d5280613ec952508061143052806116a752806118005280611d5b528061243552806131ec528061389c5280613d815250615f3f6000f3fe608060405234801561001057600080fd5b50600436106103265760003560e01c8063869871bf116101b8578063cd85641a11610104578063ebd83cd8116100a2578063fbfd393b1161007c578063fbfd393b14611146578063fc7b9c18146111cd578063fd1ec010146111eb578063fff9ee871461124357610326565b8063ebd83cd81461103a578063ee4e19a114611094578063fb939588146110ee57610326565b8063de7fbadb116100de578063de7fbadb14610f27578063df89b34414610f5b578063e83afee314610fb5578063ebc68e741461101c57610326565b8063cd85641a14610e29578063d031370b14610e81578063d796ffb814610ed957610326565b8063a1210a2d11610171578063b1bd38b01161014b578063b1bd38b014610cb5578063b5b1d56014610d0d578063bc157ac114610d65578063c24ad43e14610dd157610326565b8063a1210a2d14610ba9578063a569e57114610c03578063ab319c9a14610c5d57610326565b8063869871bf146109d157806387d67dff14610a295780638f59c72714610a835780638f6a7b5714610adb5780638f840ddd14610b33578063932cc8c314610b5157610326565b8063437f79121161027757806368c31dd51161023057806370a0502a1161020a57806370a0502a146108cf57806373ab2e9914610927578063788c6c011461095b5780637a8960d8146109b357610326565b806368c31dd5146107cf5780636a20de92146108295780636b5e40a71461087757610326565b8063437f79121461066d57806346f68ee9146106c55780634774ff9214610709578063481c6a75146107375780634e83423c1461076b5780635a96ac0a146107c557610326565b80630c3513a8116102e45780631af4da70116102be5780631af4da70146105755780631eec5a9a146105e3578063232de366146106455780632b7ce5001461066357610326565b80630c3513a8146104af578063124154ca146104cd57806312422d231461052757610326565b8062f714ce1461032b5780630619aff114610379578063080c3071146103d1578063089208d8146103ff578063094a8651146104095780630b0eee3014610461575b600080fd5b6103776004803603604081101561034157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129b565b005b6103a56004803603602081101561038f57600080fd5b81019080803590602001909291905050506115a7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103fd600480360360208110156103e757600080fd5b81019080803590602001909291905050506115e6565b005b61040761188e565b005b61044b6004803603602081101561041f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a0d565b6040518082815260200191505060405180910390f35b6104ad6004803603604081101561047757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a25565b005b6104b7611d4e565b6040518082815260200191505060405180910390f35b61050f600480360360208110156104e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e46565b60405180821515815260200191505060405180910390f35b6105736004803603604081101561053d57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e66565b005b6105b76004803603602081101561058b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061231f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61062f600480360360408110156105f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612352565b6040518082815260200191505060405180910390f35b61064d612663565b6040518082815260200191505060405180910390f35b61066b612669565b005b6106996004803603602081101561068357600080fd5b8101908080359060200190929190505050612b09565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610707600480360360208110156106db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b48565b005b6107356004803603602081101561071f57600080fd5b8101908080359060200190929190505050612d4d565b005b61073f612e9f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107ad6004803603602081101561078157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ec8565b60405180821515815260200191505060405180910390f35b6107cd612ee8565b005b610811600480360360208110156107e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061308e565b60405180821515815260200191505060405180910390f35b6108756004803603604081101561083f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506130ae565b005b6108a36004803603602081101561088d57600080fd5b81019080803590602001909291905050506132fc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108fb600480360360208110156108e557600080fd5b810190808035906020019092919050505061333b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61092f61337a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61099d6004803603602081101561097157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133a0565b6040518082815260200191505060405180910390f35b6109bb6133b8565b6040518082815260200191505060405180910390f35b6109fd600480360360208110156109e757600080fd5b81019080803590602001909291905050506133dc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a6b60048036036020811015610a3f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061341b565b60405180821515815260200191505060405180910390f35b610ac560048036036020811015610a9957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061343b565b6040518082815260200191505060405180910390f35b610b0760048036036020811015610af157600080fd5b8101908080359060200190929190505050613453565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b3b613492565b6040518082815260200191505060405180910390f35b610b9360048036036020811015610b6757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613498565b6040518082815260200191505060405180910390f35b610beb60048036036020811015610bbf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134b0565b60405180821515815260200191505060405180910390f35b610c4560048036036020811015610c1957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134d0565b60405180821515815260200191505060405180910390f35b610c9f60048036036020811015610c7357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134f0565b6040518082815260200191505060405180910390f35b610cf760048036036020811015610ccb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613508565b6040518082815260200191505060405180910390f35b610d3960048036036020811015610d2357600080fd5b8101908080359060200190929190505050613520565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610dbb60048036036060811015610d7b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061355f565b6040518082815260200191505060405180910390f35b610e1360048036036020811015610de757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506139eb565b6040518082815260200191505060405180910390f35b610e6b60048036036020811015610e3f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a03565b6040518082815260200191505060405180910390f35b610ead60048036036020811015610e9757600080fd5b8101908080359060200190929190505050613a1b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610f2560048036036040811015610eef57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a5a565b005b610f2f613d7f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610f9d60048036036020811015610f7157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613da3565b60405180821515815260200191505060405180910390f35b61100460048036036040811015610fcb57600080fd5b81019080803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613dc3565b60405180821515815260200191505060405180910390f35b61102461438d565b6040518082815260200191505060405180910390f35b61107c6004803603602081101561105057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614393565b60405180821515815260200191505060405180910390f35b6110d6600480360360208110156110aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506143b3565b60405180821515815260200191505060405180910390f35b6111306004803603602081101561110457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506143d3565b6040518082815260200191505060405180910390f35b6111b56004803603606081101561115c57600080fd5b81019080803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506143eb565b60405180821515815260200191505060405180910390f35b6111d5615566565b6040518082815260200191505060405180910390f35b6112176004803603602081101561120157600080fd5b810190808035906020019092919050505061556c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6112856004803603602081101561125957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506155ab565b6040518082815260200191505060405180910390f35b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661135a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f74206163636570746564000000000000000000000000000000000000000081525060200191505060405180910390fd5b60011515600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061142c8284612352565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156114bf57600080fd5b505af11580156114d3573d6000803e3d6000fd5b505050506114ec816021546155c390919063ffffffff16565b6021819055506021547f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a261154c33848473ffffffffffffffffffffffffffffffffffffffff1661560d9092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fdf273cb619d95419a9cd0ec88123a0538c85064229baa6363788f743fff90deb8483604051808381526020018281526020019250505060405180910390a2505050565b601281815481106115b757600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc679033836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561173657600080fd5b505af115801561174a573d6000803e3d6000fd5b505050506117a081601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546155c390919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117f8816022546155c390919063ffffffff16565b6022819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc6d98eecfc9c78ab62c89a82950079b54874749f1f6f24090f7acc758bc2f3098384604051808381526020018281526020019250505060405180910390a350565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461194f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba60405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601b6020528060005260406000206000915090505481565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b3b57601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b611bfb565b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611bfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b6000611c078383612352565b9050611c11611d4e565b811115611c86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e73756666696369656e74207265736572766573000000000000000000000081525060200191505060405180910390fd5b611c9b816021546155c390919063ffffffff16565b6021819055506021547f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a2611cfb33838573ffffffffffffffffffffffffffffffffffffffff1661560d9092919063ffffffff16565b8273ffffffffffffffffffffffffffffffffffffffff167f2bb2640731848fe9820ba48dbc978c1fc9bbd5f11b948bfab05b7dee3378fd80836040518082815260200191505060405180910390a2505050565b6000611e41611e086022547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611dbf57600080fd5b505afa158015611dd3573d6000803e3d6000fd5b505050506040513d6020811015611de957600080fd5b81019080805190602001909291905050506155c390919063ffffffff16565b611e33612710611e256023546021546156af90919063ffffffff16565b61573590919063ffffffff16565b6155c390919063ffffffff16565b905090565b60066020528060005260406000206000915054906101000a900460ff1681565b601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fe4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f74206163636570746564000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000611ff08284612352565b90506000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561207d57600080fd5b505afa158015612091573d6000803e3d6000fd5b505050506040513d60208110156120a757600080fd5b81019080805190602001909291905050509050600061210e601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836155c390919063ffffffff16565b905080831115612186576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f457863656564732064656274206c696d6974000000000000000000000000000081525060200191505060405180910390fd5b6121d883601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461577f90919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122308360225461577f90919063ffffffff16565b60228190555061224b836021546155c390919063ffffffff16565b6021819055506021547f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a26122ab33868673ffffffffffffffffffffffffffffffffffffffff1661560d9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7e1a939bed137a819b5d2979822c67f877689f7a863d5e4cb57cdca97b2977d68786604051808381526020018281526020019250505060405180910390a35050505050565b60116020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156124fe576124f78373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156123ef57600080fd5b505afa158015612403573d6000803e3d6000fd5b505050506040513d602081101561241957600080fd5b810190808051906020019092919050505060ff16600a0a6124e97f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561249957600080fd5b505afa1580156124ad573d6000803e3d6000fd5b505050506040513d60208110156124c357600080fd5b810190808051906020019092919050505060ff16600a0a856156af90919063ffffffff16565b61573590919063ffffffff16565b905061265d565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561265c57601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634249719f84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561261e57600080fd5b505afa158015612632573d6000803e3d6000fd5b505050506040513d602081101561264857600080fd5b810190808051906020019092919050505090505b5b92915050565b60235481565b600080600090505b60028054905081101561284257600360006002838154811061268f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612835576128326128236002838154811061271a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002848154811061275257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156127e357600080fd5b505afa1580156127f7573d6000803e3d6000fd5b505050506040513d602081101561280d57600080fd5b8101908080519060200190929190505050612352565b8361577f90919063ffffffff16565b91505b8080600101915050612671565b5060005b600b80549050811015612aa45760036000600b838154811061286457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129645750600c6000600b83815481106128f057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a9757612a94612a85600b838154811061297c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b84815481106129b457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612a4557600080fd5b505afa158015612a59573d6000803e3d6000fd5b505050506040513d6020811015612a6f57600080fd5b8101908080519060200190929190505050612352565b8361577f90919063ffffffff16565b91505b8080600101915050612846565b5080602181905550807f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a2807fec691f09f6924b27932253f85caf99bacc30360cc0e50a1cc4d2acc24601446660405160405180910390a250565b60088181548110612b1957600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615e776026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba60405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6127108110158015612e235750620f42408111155b612e95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6672616374696f6e616c697479206d75737420626520312d313030782100000081525060200191505060405180910390fd5b8060238190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601d6020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615e9d6022913960400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d60405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60036020528060005260406000206000915054906101000a900460ff1681565b601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661316d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b613175611d4e565b8111156131ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f496e73756666696369656e74207265736572766573000000000000000000000081525060200191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561327b57600080fd5b505af115801561328f573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffa8ccab40e7da8146c2304cd0950334fd30a6ba093abe86261aa13911fed849c836040518082815260200191505060405180910390a35050565b6005818154811061330c57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6015818154811061334b57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b601881815481106133ec57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915090505481565b600e818154811061346357600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60215481565b60076020528060005260406000206000915090505481565b600f6020528060005260406000206000915054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b60176020528060005260406000206000915090505481565b60146020528060005260406000206000915090505481565b601c818154811061353057600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806136025750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f74206163636570746564000000000000000000000000000000000000000081525060200191505060405180910390fd5b6136a13330868673ffffffffffffffffffffffffffffffffffffffff16615807909392919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137b757600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166137b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b613877565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b60006138838486612352565b905061389883826155c390919063ffffffff16565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1933846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561392b57600080fd5b505af115801561393f573d6000803e3d6000fd5b505050506139588160215461577f90919063ffffffff16565b6021819055506021547f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a158683604051808381526020018281526020019250505060405180910390a2509392505050565b600a6020528060005260406000206000915090505481565b601a6020528060005260406000206000915090505481565b60028181548110613a2b57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f7420617070726f766564000000000000000000000000000000000000000081525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613bd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e6f74206163636570746564000000000000000000000000000000000000000081525060200191505060405180910390fd5b613c053330848473ffffffffffffffffffffffffffffffffffffffff16615807909392919063ffffffff16565b6000613c118284612352565b9050613c6581601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546155c390919063ffffffff16565b601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cbd816022546155c390919063ffffffff16565b602281905550613cd88160215461577f90919063ffffffff16565b6021819055506021547f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6660405160405180910390a28173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc6d98eecfc9c78ab62c89a82950079b54874749f1f6f24090f7acc758bc2f3098584604051808381526020018281526020019250505060405180910390a3505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60166020528060005260406000206000915054906101000a900460ff1681565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613e86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000613ebb7f00000000000000000000000000000000000000000000000000000000000000004261577f90919063ffffffff16565b90506000613f05613ef660027f00000000000000000000000000000000000000000000000000000000000000006156af90919063ffffffff16565b4261577f90919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613f4157600080fd5b60006009811115613f4e57fe5b856009811115613f5a57fe5b1415613fa95781600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614327565b60016009811115613fb657fe5b856009811115613fc257fe5b14156140115781600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614326565b6002600981111561401e57fe5b85600981111561402a57fe5b14156140795781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614325565b6003600981111561408657fe5b85600981111561409257fe5b14156140e15780601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614324565b600460098111156140ee57fe5b8560098111156140fa57fe5b14156141495781601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614323565b6005600981111561415657fe5b85600981111561416257fe5b14156141b15781600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614322565b600660098111156141be57fe5b8560098111156141ca57fe5b14156142195780601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614321565b6007600981111561422657fe5b85600981111561423257fe5b14156142815781601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614320565b6008600981111561428e57fe5b85600981111561429a57fe5b14156142e95781601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061431f565b6009808111156142f557fe5b85600981111561430157fe5b1415614313578160208190555061431e565b600092505050614387565b5b5b5b5b5b5b5b5b5b84600981111561433357fe5b7f0e4f2c4b5bc209d509bc3d49348c787fefadc66a79351b470599ac0f5be52eaf85604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001925050505b92915050565b60205481565b60136020528060005260406000206000915054906101000a900460ff1681565b60196020528060005260406000206000915054906101000a900460ff1681565b601e6020528060005260406000206000915090505481565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146144ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156144e857600080fd5b60008060098111156144f657fe5b85600981111561450257fe5b141561467f5761451560076006866158c8565b156145d3576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061456a60058561592f565b6145d2576005849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506154f6565b6001600981111561468c57fe5b85600981111561469857fe5b1415614815576146ab600a6009866158c8565b15614769576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061470060088561592f565b614768576008849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506154f5565b6002600981111561482257fe5b85600981111561482e57fe5b14156149ab5761484160046003866158c8565b156148ff576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061489660028561592f565b6148fe576002849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506154f4565b600360098111156149b857fe5b8560098111156149c457fe5b1415614ba4576149d760146013866158c8565b15614af8576012849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a8f60128561592f565b614af7576012849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506154f3565b60046009811115614bb157fe5b856009811115614bbd57fe5b1415614d9d57614bd06010600f866158c8565b15614cf157600e849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c88600e8561592f565b614cf057600e849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506154f2565b60056009811115614daa57fe5b856009811115614db657fe5b1415614fb157614dc9600d600c866158c8565b15614e87576000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e1e600b8561592f565b614e8657600b849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506154f1565b60066009811115614fbe57fe5b856009811115614fca57fe5b141561514757614fdd60176016866158c8565b1561509b576000601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061503260158561592f565b61509a576015849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506154f0565b6007600981111561515457fe5b85600981111561516057fe5b14156152dd57615173601a6019866158c8565b15615231576000601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506151c860188561592f565b615230576018849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506154ef565b600860098111156152ea57fe5b8560098111156152f657fe5b141561547357615309601e601d866158c8565b156153c7576000601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061535e601c8561592f565b6153c657601c849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615905080601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506154ee565b60098081111561547f57fe5b85600981111561548b57fe5b14156154e357600060208190555083601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600190506154ed565b600091505061555f565b5b5b5b5b5b5b5b5b5b84600981111561550257fe5b7f0dcacb7e392f3d6a216ed2660e3dcfd40b7793d33591db2ba185a6b8e44fc4778583604051808373ffffffffffffffffffffffffffffffffffffffff16815260200182151581526020019250505060405180910390a260019150505b9392505050565b60225481565b600b818154811061557c57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60106020528060005260406000206000915090505481565b600061560583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506159d0565b905092915050565b6156aa8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615a90565b505050565b6000808314156156c2576000905061572f565b60008284029050828482816156d357fe5b041461572a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615ebf6021913960400191505060405180910390fd5b809150505b92915050565b600061577783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615b7f565b905092915050565b6000808284019050838110156157fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6158c2846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615a90565b50505050565b60008260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166159235760019050615928565b600090505b9392505050565b600080600090505b83805490508110156159c4578273ffffffffffffffffffffffffffffffffffffffff1684828154811061596657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156159b75760019150506159ca565b8080600101915050615937565b50600090505b92915050565b6000838311158290615a7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615a42578082015181840152602081019050615a27565b50505050905090810190601f168015615a6f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6060615af2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16615c459092919063ffffffff16565b9050600081511115615b7a57808060200190516020811015615b1357600080fd5b8101908080519060200190929190505050615b79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615ee0602a913960400191505060405180910390fd5b5b505050565b60008083118290615c2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615bf0578082015181840152602081019050615bd5565b50505050905090810190601f168015615c1d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615c3757fe5b049050809150509392505050565b6060615c548484600085615c5d565b90509392505050565b6060615c6885615e63565b615cda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310615d2a5780518252602082019150602081019050602083039250615d07565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615d8c576040519150601f19603f3d011682016040523d82523d6000602084013e615d91565b606091505b50915091508115615da6578092505050615e5b565b600081511115615db95780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615e20578082015181840152602081019050615e05565b50505050905090810190601f168015615e4d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b600080823b90506000811191505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a206d757374206265206e6577206f776e657220746f2070756c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220bc98c4bdad19bef8156313cd54fca6e20af52a4842f55f03f6a7a31180fd7a2464736f6c634300070500330000000000000000000000003a1138075bd97a33f23a87824b811146fa44288e00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000016000000000000000000000000056a497929a00db304a54ea33b6b1c6c41d3d6c7600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000e6052a9a4c0a2f14adc9876a3a1a7b2882f5f1390000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae23000000000000000000000000062e66477faf219f25d27dced647bf57c3107d52000000000000000000000000e44fd7fcb2b1581822d0c862b68222998a0c299a000000000000000000000000f2001b145b43032aaf5ee2884e456ccd805f677d00000000000000000000000000000000000000000000000000000000000000020000000000000000000000001c139f4b953ce0c0f6aa1cd1755727ad5aba5080000000000000000000000000f5a5f547612e95c688971fb68334a80ceb3c542b

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000003a1138075bd97a33f23a87824b811146fa44288e00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000016000000000000000000000000056a497929a00db304a54ea33b6b1c6c41d3d6c7600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000e6052a9a4c0a2f14adc9876a3a1a7b2882f5f1390000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae23000000000000000000000000062e66477faf219f25d27dced647bf57c3107d52000000000000000000000000e44fd7fcb2b1581822d0c862b68222998a0c299a000000000000000000000000f2001b145b43032aaf5ee2884e456ccd805f677d00000000000000000000000000000000000000000000000000000000000000020000000000000000000000001c139f4b953ce0c0f6aa1cd1755727ad5aba5080000000000000000000000000f5a5f547612e95c688971fb68334a80ceb3c542b

-----Decoded View---------------
Arg [0] : _MINO (address): 0x3a1138075bd97a33f23a87824b811146fa44288e
Arg [1] : _reserveTokens (address[]): 0xe6052a9a4c0a2f14adc9876a3a1a7b2882f5f139,0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23,0x062e66477faf219f25d27dced647bf57c3107d52,0xe44fd7fcb2b1581822d0c862b68222998a0c299a,0xf2001b145b43032aaf5ee2884e456ccd805f677d
Arg [2] : _liquidityTokens (address[]): 0x1c139f4b953ce0c0f6aa1cd1755727ad5aba5080,0xf5a5f547612e95c688971fb68334a80ceb3c542b
Arg [3] : _bondCalc (address): 0x56a497929a00db304a54ea33b6b1c6c41d3d6c76
Arg [4] : _secondsNeededForQueue (uint256): 0

-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000003a1138075bd97a33f23a87824b811146fa44288e
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [3] : 00000000000000000000000056a497929a00db304a54ea33b6b1c6c41d3d6c76
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [6] : 000000000000000000000000e6052a9a4c0a2f14adc9876a3a1a7b2882f5f139
Arg [7] : 0000000000000000000000005c7f8a570d578ed84e63fdfa7b1ee72deae1ae23
Arg [8] : 000000000000000000000000062e66477faf219f25d27dced647bf57c3107d52
Arg [9] : 000000000000000000000000e44fd7fcb2b1581822d0c862b68222998a0c299a
Arg [10] : 000000000000000000000000f2001b145b43032aaf5ee2884e456ccd805f677d
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [12] : 0000000000000000000000001c139f4b953ce0c0f6aa1cd1755727ad5aba5080
Arg [13] : 000000000000000000000000f5a5f547612e95c688971fb68334a80ceb3c542b


Deployed ByteCode Sourcemap

7357:20160:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13234:583;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9947:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15757:380;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4747:159;;;:::i;:::-;;10668:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16282:626;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17441:181;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8957:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13962:865;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9848:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19059:460;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11179:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18014:881;;;:::i;:::-;;9113:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4914:261;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17630:231;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4520:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10818:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5187:221;;;:::i;:::-;;8712:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16989:344;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8860:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10194;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10968:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8767:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8582:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10447:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9208:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9494:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9589:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11064:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9016:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9688:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9437:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10350:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10099:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10724:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12205:877;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9265:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10583:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8637:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14994:631;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8546:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10291:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19695:1596;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10995:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10042:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10534:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10874:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21501:4871;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11129:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9360:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9749:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13234:583;13313:14;:24;13329:6;13313:24;;;;;;;;;;;;;;;;;;;;;;;;;13304:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13454:4;13420:38;;:16;:30;13438:10;13420:30;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;13411:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13489:10;13502:26;13511:6;13519:7;13502;:26::i;:::-;13489:39;;13551:4;13539:27;;;13568:10;13580:5;13539:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13616:26;13635:5;13616:13;;:17;;:26;;;;:::i;:::-;13600:13;:42;;;;13675:13;;13658:32;;;;;;;;;;13703:52;13734:10;13746:7;13711:6;13703:29;;;;:52;;;;;:::i;:::-;13785:6;13773:36;;;13793:7;13802:5;13773:36;;;;;;;;;;;;;;;;;;;;;;;;13234:583;;;:::o;9947:32::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15757:380::-;15829:8;:22;15839:10;15829:22;;;;;;;;;;;;;;;;;;;;;;;;;15820:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15894:4;15882:27;;;15911:10;15923:7;15882:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15975:42;16008:7;15975:13;:27;15990:10;15975:27;;;;;;;;;;;;;;;;:31;;:42;;;;:::i;:::-;15945:13;:27;15960:10;15945:27;;;;;;;;;;;;;;;:72;;;;16040:24;16055:7;16040:9;;:13;;:24;;;;:::i;:::-;16028:9;:36;;;;16105:4;16082:47;;16093:10;16082:47;;;16111:7;16120;16082:47;;;;;;;;;;;;;;;;;;;;;;;;15757:380;:::o;4747:159::-;4671:10;4661:20;;:6;;;;;;;;;;:20;;;4652:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4864:1:::1;4831:37;;4848:6;::::0;::::1;;;;;;;;4831:37;;;;;;;;;;;;4896:1;4879:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4747:159::o:0;10668:47::-;;;;;;;;;;;;;;;;;:::o;16282:626::-;16354:16;:26;16372:6;16354:26;;;;;;;;;;;;;;;;;;;;;;;;;16350:209;;;16407:18;:32;16427:10;16407:32;;;;;;;;;;;;;;;;;;;;;;;;;16398:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16350:209;;;16499:16;:30;16517:10;16499:30;;;;;;;;;;;;;;;;;;;;;;;;;16490:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16350:209;16571:10;16584:24;16592:6;16600:7;16584;:24::i;:::-;16571:37;;16637:16;:14;:16::i;:::-;16628:5;:25;;16619:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16709:26;16728:5;16709:13;;:17;;:26;;;;:::i;:::-;16693:13;:42;;;;16768:13;;16751:32;;;;;;;;;;16796:52;16827:10;16839:7;16804:6;16796:29;;;;:52;;;;;:::i;:::-;16883:6;16866:34;;;16891:7;16866:34;;;;;;;;;;;;;;;;;;16282:626;;;:::o;17441:181::-;17489:4;17514:100;17567:45;17601:9;;17575:4;17567:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;:45;;;;:::i;:::-;17514:47;17554:5;17514:34;17533:13;;17514;;:17;;:34;;;;:::i;:::-;:38;;:47;;;;:::i;:::-;:51;;:100;;;;:::i;:::-;17507:107;;17441:181;:::o;8957:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;13962:865::-;14042:8;:22;14052:10;14042:22;;;;;;;;;;;;;;;;;;;;;;;;;14033:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14102:14;:24;14118:6;14102:24;;;;;;;;;;;;;;;;;;;;;;;;;14093:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14157:10;14170:26;14179:6;14187:7;14170;:26::i;:::-;14157:39;;14209:16;14236:5;;;;;;;;;;;14228:25;;;14255:10;14228:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14209:58;;14316:18;14337:46;14354:13;:27;14369:10;14354:27;;;;;;;;;;;;;;;;14337:11;:15;;:46;;;;:::i;:::-;14316:67;;14412:13;14403:5;:22;;14394:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14492:40;14525:5;14492:13;:27;14507:10;14492:27;;;;;;;;;;;;;;;;:31;;:40;;;;:::i;:::-;14462:13;:27;14477:10;14462:27;;;;;;;;;;;;;;;:70;;;;14555:22;14570:5;14555:9;;:13;;:22;;;;:::i;:::-;14543:9;:34;;;;14606:26;14625:5;14606:13;;:17;;:26;;;;:::i;:::-;14590:13;:42;;;;14665:13;;14648:32;;;;;;;;;;14693:52;14724:10;14736:7;14701:6;14693:29;;;;:52;;;;;:::i;:::-;14795:6;14771:48;;14783:10;14771:48;;;14803:7;14812:5;14771:48;;;;;;;;;;;;;;;;;;;;;;;;13962:865;;;;;:::o;9848:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;19059:460::-;19130:11;19160:14;:24;19176:6;19160:24;;;;;;;;;;;;;;;;;;;;;;;;;19155:357;;;19265:87;19331:6;19323:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19317:33;;:2;:33;19265:46;19292:4;19284:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19278:31;;:2;:31;19265:7;:11;;:46;;;;:::i;:::-;:50;;:87;;;;:::i;:::-;19256:96;;19155:357;;;19375:16;:26;19393:6;19375:26;;;;;;;;;;;;;;;;;;;;;;;;;19370:142;;;19445:14;:24;19461:6;19445:24;;;;;;;;;;;;;;;;;;;;;;;;;19428:53;;;19483:6;19491:7;19428:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19419:81;;19370:142;19155:357;19059:460;;;;:::o;11179:34::-;;;;:::o;18014:881::-;18059:16;18091:9;18103:1;18091:13;;18086:309;18110:13;:20;;;;18106:1;:24;18086:309;;;18158:14;:36;18174:13;18189:1;18174:18;;;;;;;;;;;;;;;;;;;;;;;;;18158:36;;;;;;;;;;;;;;;;;;;;;;;;;18153:231;;;18227:141;18263:86;18272:13;18287:1;18272:18;;;;;;;;;;;;;;;;;;;;;;;;;18300:13;18315:1;18300:18;;;;;;;;;;;;;;;;;;;;;;;;;18292:38;;;18340:4;18292:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18263:7;:86::i;:::-;18227:8;:12;;:141;;;;:::i;:::-;18216:152;;18153:231;18132:3;;;;;;;18086:309;;;;18410:9;18405:362;18429:15;:22;;;;18425:1;:26;18405:362;;;18480:14;:38;18496:15;18513:1;18496:20;;;;;;;;;;;;;;;;;;;;;;;;;18480:38;;;;;;;;;;;;;;;;;;;;;;;;;18479:39;:83;;;;;18522:16;:40;18540:15;18557:1;18540:20;;;;;;;;;;;;;;;;;;;;;;;;;18522:40;;;;;;;;;;;;;;;;;;;;;;;;;18479:83;18474:282;;;18595:145;18631:90;18640:15;18657:1;18640:20;;;;;;;;;;;;;;;;;;;;;;;;;18670:15;18687:1;18670:20;;;;;;;;;;;;;;;;;;;;;;;;;18662:40;;;18712:4;18662:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18631:7;:90::i;:::-;18595:8;:12;;:145;;;;:::i;:::-;18584:156;;18474:282;18453:3;;;;;;;18405:362;;;;18793:8;18777:13;:24;;;;18834:8;18817:27;;;;;;;;;;18877:8;18860:27;;;;;;;;;;18014:881;:::o;9113:32::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4914:261::-;4671:10;4661:20;;:6;;;;;;;;;;:20;;;4652:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5038:1:::1;5017:23;;:9;:23;;;;5008:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5124:9;5099:36;;5116:6;::::0;::::1;;;;;;;;5099:36;;;;;;;;;;;;5158:9;5146;;:21;;;;;;;;;;;;;;;;;;4914:261:::0;:::o;17630:231::-;4671:10;4661:20;;:6;;;;;;;;;;:20;;;4652:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17743:5:::1;17725:14;:23;;:52;;;;;17770:7;17752:14;:25;;17725:52;17716:96;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17839:14;17823:13;:30;;;;17630:231:::0;:::o;4520:90::-;4569:7;4596:6;;;;;;;;;;;4589:13;;4520:90;:::o;10818:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;5187:221::-;5271:9;;;;;;;;;;;5257:23;;:10;:23;;;5248:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5360:9;;;;;;;;;;;5335:36;;5352:6;;;;;;;;;;5335:36;;;;;;;;;;;;5391:9;;;;;;;;;;;5382:6;;:18;;;;;;;;;;;;;;;;;;5187:221::o;8712:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;16989:344::-;17075:15;:29;17092:10;17075:29;;;;;;;;;;;;;;;;;;;;;;;;;17066:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17153:16;:14;:16::i;:::-;17142:7;:27;;17133:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17225:4;17209:27;;;17238:10;17250:7;17209:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17304:10;17277:48;;17292:10;17277:48;;;17316:7;17277:48;;;;;;;;;;;;;;;;;;16989:344;;:::o;8860:34::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10194:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10968:20::-;;;;;;;;;;;;;:::o;8767:54::-;;;;;;;;;;;;;;;;;:::o;8582:46::-;;;:::o;10447:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9208:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;9494:56::-;;;;;;;;;;;;;;;;;:::o;9589:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11064:25::-;;;;:::o;9016:58::-;;;;;;;;;;;;;;;;;:::o;9688:54::-;;;;;;;;;;;;;;;;;;;;;;:::o;9437:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;10350:58::-;;;;;;;;;;;;;;;;;:::o;10099:56::-;;;;;;;;;;;;;;;;;:::o;10724:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12205:877::-;12287:10;12320:14;:24;12336:6;12320:24;;;;;;;;;;;;;;;;;;;;;;;;;:54;;;;12348:16;:26;12366:6;12348:26;;;;;;;;;;;;;;;;;;;;;;;;;12320:54;12311:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12403:71;12438:10;12458:4;12465:7;12411:6;12403:33;;;;:71;;;;;;:::i;:::-;12492:14;:24;12508:6;12492:24;;;;;;;;;;;;;;;;;;;;;;;;;12487:212;;;12543:18;:32;12563:10;12543:32;;;;;;;;;;;;;;;;;;;;;;;;;12534:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12487:212;;;12635:20;:34;12657:10;12635:34;;;;;;;;;;;;;;;;;;;;;;;;;12626:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12487:212;12711:10;12724:24;12732:6;12740:7;12724;:24::i;:::-;12711:37;;12841:20;12852:7;12841:5;:9;;:20;;;;:::i;:::-;12833:28;;12888:4;12872:27;;;12901:10;12913:5;12872:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12949:26;12968:5;12949:13;;:17;;:26;;;;:::i;:::-;12933:13;:42;;;;13008:13;;12991:32;;;;;;;;;;13050:6;13041:33;;;13058:7;13067:5;13041:33;;;;;;;;;;;;;;;;;;;;;;;;12205:877;;;;;;:::o;9265:56::-;;;;;;;;;;;;;;;;;:::o;10583:48::-;;;;;;;;;;;;;;;;;:::o;8637:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14994:631::-;15085:8;:22;15095:10;15085:22;;;;;;;;;;;;;;;;;;;;;;;;;15076:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15145:14;:24;15161:6;15145:24;;;;;;;;;;;;;;;;;;;;;;;;;15136:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15200:71;15235:10;15255:4;15262:7;15208:6;15200:33;;;;:71;;;;;;:::i;:::-;15284:10;15297:26;15306:6;15314:7;15297;:26::i;:::-;15284:39;;15364:40;15397:5;15364:13;:27;15379:10;15364:27;;;;;;;;;;;;;;;;:31;;:40;;;;:::i;:::-;15334:13;:27;15349:10;15334:27;;;;;;;;;;;;;;;:70;;;;15427:22;15442:5;15427:9;;:13;;:22;;;;:::i;:::-;15415:9;:34;;;;15478:26;15497:5;15478:13;;:17;;:26;;;;:::i;:::-;15462:13;:42;;;;15537:13;;15520:32;;;;;;;;;;15593:6;15570:47;;15581:10;15570:47;;;15601:7;15610:5;15570:47;;;;;;;;;;;;;;;;;;;;;;;;14994:631;;;:::o;8546:29::-;;;:::o;10291:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;19695:1596::-;19783:4;4671:10;4661:20;;:6;;;;;;;;;;:20;;;4652:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19801:15:::1;19819:44;19840:21;19819:15;:19;;:44;;;;:::i;:::-;19801:62;;19874:15;19892:53;19913:30;19940:1;19913:21;:25;;:30;;;;:::i;:::-;19892:15;:19;;:53;;;;:::i;:::-;19874:71;;19987:1;19967:22;;:8;:22;;;;19958:33;;;::::0;::::1;;20020:25;20007:38;;;;;;;;:9;:38;;;;;;;;;20002:1206;;;20104:7;20068:21;:33;20091:8;20068:33;;;;;;;;;;;;;;;:43;;;;20002:1206;;;20147:23;20134:36;;;;;;;;:9;:36;;;;;;;;;20129:1079;;;20227:7;20193:19;:31;20214:8;20193:31;;;;;;;;;;;;;;;:41;;;;20129:1079;;;20270:21;20257:34;;;;;;;;:9;:34;;;;;;;;;20252:956;;;20346:7;20314:17;:29;20333:8;20314:29;;;;;;;;;;;;;;;:39;;;;20252:956;;;20389:23;20376:36;;;;;;;;:9;:36;;;;;;;;;20371:837;;;20469:7;20435:19;:31;20456:8;20435:31;;;;;;;;;;;;;;;:41;;;;20371:837;;;20512:27;20499:40;;;;;;;;:9;:40;;;;;;;;;20494:714;;;20600:7;20562:23;:35;20587:8;20562:35;;;;;;;;;;;;;;;:45;;;;20494:714;;;20643:23;20630:36;;;;;;;;:9;:36;;;;;;;;;20625:583;;;20723:7;20689:19;:31;20710:8;20689:31;;;;;;;;;;;;;;;:41;;;;20625:583;;;20766:25;20753:38;;;;;;;;:9;:38;;;;;;;;;20748:460;;;20850:7;20814:21;:33;20837:8;20814:33;;;;;;;;;;;;;;;:43;;;;20748:460;;;20893:15;20880:28;;;;;;;;:9;:28;;;;;;;;;20875:333;;;20957:7;20931:11;:23;20944:8;20931:23;;;;;;;;;;;;;;;:33;;;;20875:333;;;21000:22;20987:35;;;;;;;;:9;:35;;;;;;;;;20982:226;;;21078:7;21045:18;:30;21065:8;21045:30;;;;;;;;;;;;;;;:40;;;;20982:226;;;21121:14;21108:27:::0;::::1;;;;;;;:9;:27;;;;;;;;;21103:105;;;21171:7;21158:10;:20;;;;21103:105;;;21203:5;21196:12;;;;;;21103:105;20982:226;20875:333;20748:460;20625:583;20494:714;20371:837;20252:956;20129:1079;20002:1206;21240:9;21226:35;;;;;;;;;21251:8;21226:35;;;;;;;;;;;;;;;;;;;;21279:4;21272:11;;;;4730:1;19695:1596:::0;;;;:::o;10995:22::-;;;;:::o;10042:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;10534:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;10874:55::-;;;;;;;;;;;;;;;;;:::o;21501:4871::-;21646:4;4671:10;4661:20;;:6;;;;;;;;;;:20;;;4652:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21693:1:::1;21673:22;;:8;:22;;;;21664:33;;;::::0;::::1;;21708:11;21748:25:::0;21735:38:::1;;;;;;;;:9;:38;;;;;;;;;21730:4548;;;21801:67;21815:21;21838:18;21858:8;21801:12;:67::i;:::-;21796:293;;;21926:1;21890:21;:33;21913:8;21890:33;;;;;;;;;;;;;;;:37;;;;21951:43;21965:17;21984:8;21951:12;:43::i;:::-;21946:128;;22020:17;22044:8;22020:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21946:128;21796:293;22113:18;:30;22133:8;22113:30;;;;;;;;;;;;;;;;;;;;;;;;;22112:31;22103:40;;22191:6;22158:18;:30;22178:8;22158:30;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21730:4548;;;22247:23;22234:36;;;;;;;;:9;:36;;;;;;;;;22229:4049;;;22298:63;22312:19;22333:16;22351:8;22298:12;:63::i;:::-;22293:283;;;22417:1;22383:19;:31;22404:8;22383:31;;;;;;;;;;;;;;;:35;;;;22442:41;22456:15;22473:8;22442:12;:41::i;:::-;22437:124;;22509:15;22531:8;22509:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22437:124;22293:283;22600:16;:28;22618:8;22600:28;;;;;;;;;;;;;;;;;;;;;;;;;22599:29;22590:38;;22674:6;22643:16;:28;22661:8;22643:28;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;22229:4049;;;22718:21;22705:34;;;;;;;;:9;:34;;;;;;;;;22700:3578;;;22767:59;22781:17;22800:14;22816:8;22767:12;:59::i;:::-;22762:273;;;22880:1;22848:17;:29;22867:8;22848:29;;;;;;;;;;;;;;;:33;;;;22905:39;22919:13;22934:8;22905:12;:39::i;:::-;22900:120;;22970:13;22990:8;22970:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22900:120;22762:273;23059:14;:26;23075:8;23059:26;;;;;;;;;;;;;;;;;;;;;;;;;23058:27;23049:36;;23129:6;23100:14;:26;23116:8;23100:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;22700:3578;;;23173:23;23160:36;;;;;;;;:9;:36;;;;;;;;;23155:3123;;;23224:63;23238:19;23259:16;23277:8;23224:12;:63::i;:::-;23219:334;;;23309:15;23331:8;23309:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23394:1;23360:19;:31;23381:8;23360:31;;;;;;;;;;;;;;;:35;;;;23419:41;23433:15;23450:8;23419:12;:41::i;:::-;23414:124;;23486:15;23508:8;23486:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23414:124;23219:334;23577:16;:28;23595:8;23577:28;;;;;;;;;;;;;;;;;;;;;;;;;23576:29;23567:38;;23651:6;23620:16;:28;23638:8;23620:28;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;23155:3123;;;23695:27;23682:40;;;;;;;;:9;:40;;;;;;;;;23677:2601;;;23750:71;23764:23;23789:20;23811:8;23750:12;:71::i;:::-;23745:358;;;23843:19;23869:8;23843:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23936:1;23898:23;:35;23923:8;23898:35;;;;;;;;;;;;;;;:39;;;;23961:45;23975:19;23996:8;23961:12;:45::i;:::-;23956:132;;24032:19;24058:8;24032:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23956:132;23745:358;24127:20;:32;24149:8;24127:32;;;;;;;;;;;;;;;;;;;;;;;;;24126:33;24117:42;;24209:6;24174:20;:32;24196:8;24174:32;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;23677:2601;;;24253:23;24240:36;;;;;;;;:9;:36;;;;;;;;;24235:2043;;;24304:63;24318:19;24339:16;24357:8;24304:12;:63::i;:::-;24299:283;;;24423:1;24389:19;:31;24410:8;24389:31;;;;;;;;;;;;;;;:35;;;;24448:41;24462:15;24479:8;24448:12;:41::i;:::-;24443:124;;24515:15;24537:8;24515:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24443:124;24299:283;24606:16;:28;24624:8;24606:28;;;;;;;;;;;;;;;;;;;;;;;;;24605:29;24596:38;;24680:6;24649:16;:28;24667:8;24649:28;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;24730:11;24701:14;:26;24717:8;24701:26;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;24235:2043;;;24779:25;24766:38;;;;;;;;:9;:38;;;;;;;;;24761:1517;;;24832:67;24846:21;24869:18;24889:8;24832:12;:67::i;:::-;24827:293;;;24957:1;24921:21;:33;24944:8;24921:33;;;;;;;;;;;;;;;:37;;;;24982:43;24996:17;25015:8;24982:12;:43::i;:::-;24977:128;;25051:17;25075:8;25051:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24977:128;24827:293;25144:18;:30;25164:8;25144:30;;;;;;;;;;;;;;;;;;;;;;;;;25143:31;25134:40;;25222:6;25189:18;:30;25209:8;25189:30;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24761:1517;;;25266:15;25253:28;;;;;;;;:9;:28;;;;;;;;;25248:1030;;;25309:47;25323:11;25336:8;25346;25309:12;:47::i;:::-;25304:243;;;25404:1;25378:11;:23;25391:8;25378:23;;;;;;;;;;;;;;;:27;;;;25429:33;25443:7;25452:8;25429:12;:33::i;:::-;25424:108;;25488:7;25502:8;25488:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25424:108;25304:243;25571:8;:20;25581:8;25571:20;;;;;;;;;;;;;;;;;;;;;;;;;25570:21;25561:30;;25629:6;25606:8;:20;25616:8;25606:20;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25248:1030;;;25673:22;25660:35;;;;;;;;:9;:35;;;;;;;;;25655:623;;;25723:61;25737:18;25757:15;25774:8;25723:12;:61::i;:::-;25718:278;;;25839:1;25806:18;:30;25826:8;25806:30;;;;;;;;;;;;;;;:34;;;;25864:40;25878:14;25894:8;25864:12;:40::i;:::-;25859:122;;25930:14;25951:8;25930:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25859:122;25718:278;26020:15;:27;26037:8;26020:27;;;;;;;;;;;;;;;;;;;;;;;;;26019:28;26010:37;;26092:6;26062:15;:27;26079:8;26062:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;25655:623;;;26136:14;26123:27:::0;::::1;;;;;;;:9;:27;;;;;;;;;26118:160;;;26186:1;26173:10;:14;;;;26210:8;26202:5;;:16;;;;;;;;;;;;;;;;;;26242:4;26233:13;;26118:160;;;26273:5;26266:12;;;;;26118:160;25655:623;25248:1030;24761:1517;24235:2043;23677:2601;23155:3123;22700:3578;22229:4049;21730:4548;26313:9;26296:46;;;;;;;;;26324:8;26334:6;26296:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;26360:4;26353:11;;;4730:1;21501:4871:::0;;;;;:::o;11129:21::-;;;;:::o;9360:32::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9749:60::-;;;;;;;;;;;;;;;;;:::o;514:136::-;572:7;599:43;603:1;606;599:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;592:50;;514:136;;;;:::o;6165:177::-;6248:86;6268:5;6298:23;;;6323:2;6327:5;6275:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6248:19;:86::i;:::-;6165:177;;;:::o;858:250::-;916:7;945:1;940;:6;936:47;;;970:1;963:8;;;;936:47;995:9;1011:1;1007;:5;995:17;;1040:1;1035;1031;:5;;;;;;:10;1023:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1099:1;1092:8;;;858:250;;;;;:::o;1376:132::-;1434:7;1461:39;1465:1;1468;1461:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1454:46;;1376:132;;;;:::o;134:181::-;192:7;212:9;228:1;224;:5;212:17;;253:1;248;:6;;240:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;306:1;299:8;;;134:181;;;;:::o;6350:205::-;6451:96;6471:5;6501:27;;;6530:4;6536:2;6540:5;6478:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6451:19;:96::i;:::-;6350:205;;;;:::o;26620:448::-;26812:4;26836:7;:19;26845:8;26836:19;;;;;;;;;;;;;;;;;;;;;;;;;26830:217;;27031:4;27024:11;;;;26830:217;27055:5;27048:12;;26620:448;;;;;;:::o;27237:277::-;27326:4;27349:6;27358:1;27349:10;;27344:140;27365:5;:12;;;;27361:1;:16;27344:140;;;27418:6;27404:20;;:5;27411:1;27404:10;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;27400:73;;;27453:4;27446:11;;;;;27400:73;27379:3;;;;;;;27344:140;;;;27501:5;27494:12;;27237:277;;;;;:::o;658:192::-;744:7;777:1;772;:6;;780:12;764:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;804:9;820:1;816;:5;804:17;;841:1;834:8;;;658:192;;;;;:::o;6563:418::-;6644:23;6670:69;6698:4;6670:69;;;;;;;;;;;;;;;;;6678:5;6670:27;;;;:69;;;;;:::i;:::-;6644:95;;6774:1;6754:10;:17;:21;6750:224;;;6896:10;6885:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6877:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6750:224;6563:418;;;:::o;1516:189::-;1602:7;1634:1;1630;:5;1637:12;1622:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1661:9;1677:1;1673;:5;;;;;;1661:17;;1696:1;1689:8;;;1516:189;;;;;:::o;2165:232::-;2304:12;2336:53;2359:6;2367:4;2373:1;2376:12;2336:22;:53::i;:::-;2329:60;;2165:232;;;;;:::o;2405:863::-;2581:12;2614:18;2625:6;2614:10;:18::i;:::-;2606:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2740:12;2754:23;2781:6;:11;;2801:8;2812:4;2781:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2739:78;;;;2832:7;2828:433;;;2863:10;2856:17;;;;;;2828:433;2930:1;2910:10;:17;:21;2906:344;;;3078:10;3072:17;3139:15;3126:10;3122:2;3118:19;3111:44;3026:148;3221:12;3214:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2405:863;;;;;;;:::o;1735:422::-;1795:4;2003:12;2114:7;2102:20;2094:28;;2148:1;2141:4;:8;2134:15;;;1735:422;;;:::o

Swarm Source

ipfs://bc98c4bdad19bef8156313cd54fca6e20af52a4842f55f03f6a7a31180fd7a24
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.