Contract 0x16049c3c123b1b78aed0028efc7c51baf58c4f87 5

Contract Overview

Balance:
0 AVAX

AVAX Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x58ab56c918ba89b5641030c86f68ebbf2552eee9d4716e6043ac413736de5522Claim160344432022-06-14 19:49:4521 days 7 hrs ago0xe37725f6f608c9767a4d19192311af991e028e1c IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0020589680
0x684a745731e4756ce72ff93f8eae833892452201c4fedff048031232801c3077Roll160325802022-06-14 18:47:3521 days 8 hrs ago0xe37725f6f608c9767a4d19192311af991e028e1c IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.002062480
0x68b38f592a801e08032015246d464b0d51964e45b956c1b2d7a1a8d0bbbba115Claim160307042022-06-14 17:45:2421 days 9 hrs ago0xe37725f6f608c9767a4d19192311af991e028e1c IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0020589680
0x125447f5c469f09ae557d6951d0113d823cde8947c8495d1e58e8d2b7a415cb8Roll160297192022-06-14 17:12:4521 days 9 hrs ago0xeccb9b9c6fb7590a4d0588953b3170a1a84e3341 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.000540825
0x479ee464fe7fa713d37cab77923f3d55b980ac200423863979754ef9b4d5febfRoll160296452022-06-14 17:10:1721 days 10 hrs ago0xeccb9b9c6fb7590a4d0588953b3170a1a84e3341 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.000540825
0x2cc075c2d4ff18e1c02b93dfacc639322d30a2f87afcfa61ce33babaebe92bb2Roll160296392022-06-14 17:10:0521 days 10 hrs ago0xeccb9b9c6fb7590a4d0588953b3170a1a84e3341 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.000540825
0xf9d526b6959d0c1a3a0876dbf0b99472356b5a256b07761e7f0c8e804215f7d4Roll160288282022-06-14 16:43:1321 days 10 hrs ago0xe37725f6f608c9767a4d19192311af991e028e1c IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.002062480
0x84188c57c3e1083eb348b01796c05b8cbaceaeec0664c52535318e7a9b4b7036Claim160269392022-06-14 15:41:0421 days 11 hrs ago0xe37725f6f608c9767a4d19192311af991e028e1c IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0020589680
0xb5ce7a779d4acffc9cca6f1af16b1fe1c28419ab8fe15defd5403ac1f412e910Roll160250272022-06-14 14:38:5121 days 12 hrs ago0xe37725f6f608c9767a4d19192311af991e028e1c IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.002062480
0x58e321e3a9361b901c27a87af0619ec6eabadd30131fe9cb0863853acf25e05dClaim160235932022-06-14 13:51:5321 days 13 hrs ago0x3ff64becd33e5c000a1d96ed1ae61275d5a34653 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0012868550
0xdc9d66dbdc800e740a20499566fa1e9705d91d220bc96b93d991a82ee55de595Claim160235802022-06-14 13:51:2621 days 13 hrs ago0x3ff64becd33e5c000a1d96ed1ae61275d5a34653 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0012868550
0x7d25b845fcc60cb9e00f9f31773a462b82b8eed34687efe3cbb4e3241e116d5aClaim160235682022-06-14 13:51:0321 days 13 hrs ago0x3ff64becd33e5c000a1d96ed1ae61275d5a34653 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0012868550
0x4cece57bc77a991a4000fa910700f3fa8eb081dff8f20e2fce173bd00fdb57c4Claim160231242022-06-14 13:36:3921 days 13 hrs ago0xe37725f6f608c9767a4d19192311af991e028e1c IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0020589680
0xb26e8dbd1ec413f700e8e3580be07ec263d45487a979f8c3760d027cd0a53d37Claim160229862022-06-14 13:32:0421 days 13 hrs ago0x3ff64becd33e5c000a1d96ed1ae61275d5a34653 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0012868550
0xf55d5f1f31403b99e8cfa93b2be9d240059622fa71ca75084be46f300eaa3714Claim160229742022-06-14 13:31:4021 days 13 hrs ago0x3ff64becd33e5c000a1d96ed1ae61275d5a34653 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0012868550
0xb7e5d654bb55e65ba08dba9c6381f35b04a45aeb2854efc734b8f06032a53453Claim160229622022-06-14 13:31:1521 days 13 hrs ago0x3ff64becd33e5c000a1d96ed1ae61275d5a34653 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0012868550
0xdd97440b7fe3c4edfde7a28e63def0553d4b5162e85c0016c73f4e8a164a05fbClaim160229492022-06-14 13:30:5021 days 13 hrs ago0x3ff64becd33e5c000a1d96ed1ae61275d5a34653 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0012868550
0x3e9164b489a1ceaa77c66d9377adc2c62aeab8bf884fb60a491ed2e0907ff239Claim160229362022-06-14 13:30:2421 days 13 hrs ago0x3ff64becd33e5c000a1d96ed1ae61275d5a34653 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0012868550
0xd0d7814ff6faa57bead256df977c7c8cadf76e6d16cea3cb0bc2a18c5fe71d93Claim160229232022-06-14 13:29:5921 days 13 hrs ago0x3ff64becd33e5c000a1d96ed1ae61275d5a34653 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0012868550
0xeb73c84e7e8a26cf7c7caf56a99d244a5397d0ba212f297fda2b70f5f8cf108bClaim160229112022-06-14 13:29:3521 days 13 hrs ago0x3ff64becd33e5c000a1d96ed1ae61275d5a34653 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0012868550
0xe4732ba1990eb698ada68c20db2fdef76ec9d399ad8f5c62d3d628b75a7c83e1Claim160228982022-06-14 13:29:0921 days 13 hrs ago0x3ff64becd33e5c000a1d96ed1ae61275d5a34653 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0012868550
0x3e7b8e3a38afb714bb05e107a7680a9d3b8f972550eacc9827b1b7f80433f1a4Claim160228852022-06-14 13:28:4321 days 13 hrs ago0x3ff64becd33e5c000a1d96ed1ae61275d5a34653 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0012868550
0x8d309cef02228ffe11595ef9fcc33a73c5f94d098c5918b281d8caceac4a8701Claim160228722022-06-14 13:28:1721 days 13 hrs ago0x3ff64becd33e5c000a1d96ed1ae61275d5a34653 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0012868550
0x53f7a19450a111ded55cc12573bd4345db1380b953e8d6b993d6050850832677Claim160228602022-06-14 13:27:5321 days 13 hrs ago0x3ff64becd33e5c000a1d96ed1ae61275d5a34653 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0012868550
0x9843cb1262a013163a130586f76780b8a51b81d99997b5cd2256274d3e10b58aClaim160228482022-06-14 13:27:2921 days 13 hrs ago0x3ff64becd33e5c000a1d96ed1ae61275d5a34653 IN  0x16049c3c123b1b78aed0028efc7c51baf58c4f870 AVAX0.0012868550
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TheTap

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2022-04-16
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;


abstract contract Initializable {
    /**
     * @dev Indicates that the contract has been initialized.
     */
    bool private _initialized;

    /**
     * @dev Indicates that the contract is in the process of being initialized.
     */
    bool private _initializing;

    /**
     * @dev Modifier to protect an initializer function from being invoked twice.
     */
    modifier initializer() {
        require(_initializing || !_initialized, "Initializable: contract is already initialized");

        bool isTopLevelCall = !_initializing;
        if (isTopLevelCall) {
            _initializing = true;
            _initialized = true;
        }

        _;

        if (isTopLevelCall) {
            _initializing = false;
        }
    }
}


abstract contract ContextUpgradeable is Initializable {
    function __Context_init() internal initializer {
        __Context_init_unchained();
    }

    function __Context_init_unchained() internal initializer {
    }
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
    uint256[50] private __gap;
}

 




abstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    function __Ownable_init() internal initializer {
        __Context_init_unchained();
        __Ownable_init_unchained();
    }

    function __Ownable_init_unchained() internal initializer {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
    uint256[49] private __gap;
}
interface ISwap {
  /**
   * @dev Pricing function for converting between TRX && Tokens.
   * @param input_amount Amount of TRX or Tokens being sold.
   * @param input_reserve Amount of TRX or Tokens (input type) in exchange reserves.
   * @param output_reserve Amount of TRX or Tokens (output type) in exchange reserves.
   * @return Amount of TRX or Tokens bought.
   */
  function getInputPrice(
    uint256 input_amount,
    uint256 input_reserve,
    uint256 output_reserve
  ) external view returns (uint256);

  /**
   * @dev Pricing function for converting between TRX && Tokens.
   * @param output_amount Amount of TRX or Tokens being bought.
   * @param input_reserve Amount of TRX or Tokens (input type) in exchange reserves.
   * @param output_reserve Amount of TRX or Tokens (output type) in exchange reserves.
   * @return Amount of TRX or Tokens sold.
   */
  function getOutputPrice(
    uint256 output_amount,
    uint256 input_reserve,
    uint256 output_reserve
  ) external view returns (uint256);

  /**
   * @notice Convert TRX to Tokens.
   * @dev User specifies exact input (msg.value) && minimum output.
   * @param min_tokens Minimum Tokens bought.
   * @return Amount of Tokens bought.
   */
  function trxToTokenSwapInput(uint256 min_tokens)
  external
  payable
  returns (uint256);

  /**
   * @notice Convert TRX to Tokens.
   * @dev User specifies maximum input (msg.value) && exact output.
   * @param tokens_bought Amount of tokens bought.
   * @return Amount of TRX sold.
   */
  function trxToTokenSwapOutput(uint256 tokens_bought)
  external
  payable
  returns (uint256);

  /**
   * @notice Convert Tokens to TRX.
   * @dev User specifies exact input && minimum output.
   * @param tokens_sold Amount of Tokens sold.
   * @param min_trx Minimum TRX purchased.
   * @return Amount of TRX bought.
   */
  function tokenToTrxSwapInput(uint256 tokens_sold, uint256 min_trx)
  external
  returns (uint256);

  /**
   * @notice Convert Tokens to TRX.
   * @dev User specifies maximum input && exact output.
   * @param trx_bought Amount of TRX purchased.
   * @param max_tokens Maximum Tokens sold.
   * @return Amount of Tokens sold.
   */
  function tokenToTrxSwapOutput(uint256 trx_bought, uint256 max_tokens)
  external
  returns (uint256);

  /***********************************|
  |         Getter Functions          |
  |__________________________________*/

  /**
   * @notice Public price function for TRX to Token trades with an exact input.
   * @param trx_sold Amount of TRX sold.
   * @return Amount of Tokens that can be bought with input TRX.
   */
  function getTrxToTokenInputPrice(uint256 trx_sold)
  external
  view
  returns (uint256);

  /**
   * @notice Public price function for TRX to Token trades with an exact output.
   * @param tokens_bought Amount of Tokens bought.
   * @return Amount of TRX needed to buy output Tokens.
   */
  function getTrxToTokenOutputPrice(uint256 tokens_bought)
  external
  view
  returns (uint256);

  /**
   * @notice Public price function for Token to TRX trades with an exact input.
   * @param tokens_sold Amount of Tokens sold.
   * @return Amount of TRX that can be bought with input Tokens.
   */
  function getTokenToTrxInputPrice(uint256 tokens_sold)
  external
  view
  returns (uint256);

  /**
   * @notice Public price function for Token to TRX trades with an exact output.
   * @param trx_bought Amount of output TRX.
   * @return Amount of Tokens needed to buy output TRX.
   */
  function getTokenToTrxOutputPrice(uint256 trx_bought)
  external
  view
  returns (uint256);

  /**
   * @return Address of Token that is sold on this exchange.
   */
  function tokenAddress() external view returns (address);

  function tronBalance() external view returns (uint256);

  function tokenBalance() external view returns (uint256);

  function getTrxToLiquidityInputPrice(uint256 trx_sold)
  external
  view
  returns (uint256);

  function getLiquidityToReserveInputPrice(uint256 amount)
  external
  view
  returns (uint256, uint256);

  function txs(address owner) external view returns (uint256);

  /***********************************|
  |        Liquidity Functions        |
  |__________________________________*/

  /**
   * @notice Deposit TRX && Tokens (token) at current ratio to mint SWAP tokens.
   * @dev min_liquidity does nothing when total SWAP supply is 0.
   * @param min_liquidity Minimum number of SWAP sender will mint if total SWAP supply is greater than 0.
   * @param max_tokens Maximum number of tokens deposited. Deposits max amount if total SWAP supply is 0.
   * @return The amount of SWAP minted.
   */
  function addLiquidity(uint256 min_liquidity, uint256 max_tokens)
  external
  payable
  returns (uint256);

  /**
   * @dev Burn SWAP tokens to withdraw TRX && Tokens at current ratio.
   * @param amount Amount of SWAP burned.
   * @param min_trx Minimum TRX withdrawn.
   * @param min_tokens Minimum Tokens withdrawn.
   * @return The amount of TRX && Tokens withdrawn.
   */
  function removeLiquidity(
    uint256 amount,
    uint256 min_trx,
    uint256 min_tokens
  ) external returns (uint256, uint256);
}

interface IToken {
  function remainingMintableSupply() external view returns (uint256);

  function calculateTransferTaxes(address _from, uint256 _value) external view returns (uint256 adjustedValue, uint256 taxAmount);

  function transferFrom(
    address from,
    address to,
    uint256 value
  ) external returns (bool);

  function transfer(address to, uint256 value) external returns (bool);

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

  function mintedSupply() external returns (uint256);

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

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

interface ITokenMint {

  function mint(address beneficiary, uint256 tokenAmount) external returns (uint256);

  function estimateMint(uint256 _amount) external returns (uint256);

  function remainingMintableSupply() external returns (uint256);
}

interface IDripVault {

  function withdraw(uint256 tokenAmount) external;

}
interface IOldTap{
    struct User {
        //Referral Info
        address upline;
        uint256 referrals;
        uint256 total_structure;
        //Long-term Referral Accounting
        uint256 direct_bonus;
        uint256 match_bonus;
        //Deposit Accounting
        uint256 deposits;
        uint256 deposit_time;
        //Payout and Roll Accounting
        uint256 payouts;
        uint256 rolls;
        //Upline Round Robin tracking
        uint256 ref_claim_pos;
        address entered_address;
    }
    struct Airdrop {
        //Airdrop tracking
        uint256 airdrops;
        uint256 airdrops_received;
        uint256 last_airdrop;
    }
    struct Custody {
        address manager;
        address beneficiary;
        uint256 last_heartbeat;
        uint256 last_checkin;
        uint256 heartbeat_interval;
    }
    // function userInfo(address _addr) external view returns(address upline, uint256 deposit_time, uint256 deposits, uint256 payouts, uint256 direct_bonus, uint256 match_bonus, uint256 last_airdrop);
    // function userInfoTotals(address _addr) external view returns(uint256 referrals, uint256 total_deposits, uint256 total_payouts, uint256 total_structure, uint256 airdrops_total, uint256 airdrops_received);
    function users(address _addr)
        external
        view
        returns (User memory);
    function airdrops(address _addr)
        external
        view
        returns (Airdrop memory);
    function custody(address _addr)
        external
        view
        returns (Custody memory);
    function contractInfo() external view returns(uint256 _total_users, uint256 _total_deposited, uint256 _total_withdraw, uint256 _total_bnb, uint256 _total_txs, uint256 _total_airdrops);
}

contract TheTap is OwnableUpgradeable  {

  using SafeMath for uint256;

  struct User {
    //Referral Info
    address upline;
    uint256 referrals;
    uint256 total_structure;

    //Long-term Referral Accounting
    uint256 direct_bonus;
    uint256 match_bonus;

    //Deposit Accounting
    uint256 deposits;
    uint256 deposit_time;

    //Payout and Roll Accounting
    uint256 payouts;
    uint256 rolls;

    //Upline Round Robin tracking
    uint256 ref_claim_pos;
    address entered_address;
  }
  struct Airdrop {
    //Airdrop tracking
    uint256 airdrops;
    uint256 airdrops_received;
    uint256 last_airdrop;
  }
  struct Custody {
    address manager;
    address beneficiary;
    uint256 last_heartbeat;
    uint256 last_checkin;
    uint256 heartbeat_interval;
  }

  address public dripVaultAddress;
  address public oldTapAddress;

  ITokenMint private tokenMint;
  IToken private br34pToken;
  IToken private dripToken;
  IDripVault private dripVault;
  IOldTap private oldTapContract;

  mapping(address => User) public users;
  mapping(address=>bool) public blackList;

  mapping(address => Airdrop) public airdrops;
  mapping(address => Custody) public custody;

  uint256 public CompoundTax;
  uint256 public ExitTax;

  uint256 private payoutRate;
  uint256 private ref_depth;
  uint256 private ref_bonus;

  uint256 private minimumInitial;
  uint256 private minimumAmount;

  uint256 public deposit_bracket_size;     // @BB 5% increase whale tax per 10000 tokens... 10 below cuts it at 50% since 5 * 10
  uint256 public max_payout_cap;           // 100k DRIP or 10% of supply
  uint256 private deposit_bracket_max;     // sustainability fee is (bracket * 5)

  uint256[] public ref_balances;

  bool public isPaused = true;
  uint256 public total_airdrops;
  uint256 public total_users;
  uint256 public total_deposited;
  uint256 public total_withdraw;
  uint256 public total_bnb;
  uint256 public total_txs;

  uint256 public constant MAX_UINT = 2**256 - 1;

  event Upline(address indexed addr, address indexed upline);
  event NewDeposit(address indexed addr, uint256 amount);
  event Leaderboard(address indexed addr, uint256 referrals, uint256 total_deposits, uint256 total_payouts, uint256 total_structure);
  event DirectPayout(address indexed addr, address indexed from, uint256 amount);
  event MatchPayout(address indexed addr, address indexed from, uint256 amount);
  event BalanceTransfer(address indexed _src, address indexed _dest, uint256 _deposits, uint256 _payouts);
  event Withdraw(address indexed addr, uint256 amount);
  event LimitReached(address indexed addr, uint256 amount);
  event NewAirdrop(address indexed from, address indexed to, uint256 amount, uint256 timestamp);
  event ManagerUpdate(address indexed addr, address indexed manager, uint256 timestamp);
  event BeneficiaryUpdate(address indexed addr, address indexed beneficiary);
  event HeartBeatIntervalUpdate(address indexed addr, uint256 interval);
  event HeartBeat(address indexed addr, uint256 timestamp);
  event Checkin(address indexed addr, uint256 timestamp);

  /* ========== INITIALIZER ========== */

  function initialize(address _mintAddress, address _BR34PTokenAddress, address _dripTokenAddress, address _vaultAddress,address _oldTap) external initializer {
    __Ownable_init();

    total_users = 1;
    deposit_bracket_size = 10000e18;     // @BB 5% increase whale tax per 10000 tokens... 10 below cuts it at 50% since 5 * 10
    max_payout_cap = 100000e18;          // 100k DRIP or 10% of supply
    minimumInitial = 1e18;
    minimumAmount = 1e18;

    payoutRate = 2;
    ref_depth  = 15;
    ref_bonus  = 10;
    deposit_bracket_max = 10;  // sustainability fee is (bracket * 5)

    CompoundTax = 5;
    ExitTax = 10;

    tokenMint = ITokenMint(_mintAddress);
    br34pToken = IToken(_BR34PTokenAddress);
    dripToken = IToken(_dripTokenAddress);
    
    //IDripVault
    dripVaultAddress = _vaultAddress;
    dripVault = IDripVault(_vaultAddress);

    //For migration
    oldTapAddress = _oldTap;

    //Referral Balances
    ref_balances.push(2e8);
    ref_balances.push(3e8);
    ref_balances.push(5e8);
    ref_balances.push(8e8);
    ref_balances.push(13e8);
    ref_balances.push(21e8);
    ref_balances.push(34e8);
    ref_balances.push(55e8);
    ref_balances.push(89e8);
    ref_balances.push(144e8);
    ref_balances.push(233e8);
    ref_balances.push(377e8);
    ref_balances.push(610e8);
    ref_balances.push(987e8);
    ref_balances.push(1597e8);
  }

  function unpause() public onlyOwner {
        isPaused = false;
    }

    function pause() public onlyOwner {
        isPaused = true;
    }

    modifier isNotPaused() {
        require(!isPaused, "Swaps currently paused");
        _;
    }

  //@dev Default payable is empty since Faucet executes trades and recieves BNB
  fallback() external payable {
    //Do nothing, BNB will be sent to contract when selling tokens
  }

  /****** Migration Functions *******/
  modifier noBlackList(){
   require(!blackList[msg.sender]==true,"No Blacklist calls");
   _;
  }

  function migrateFromOldContract(address[] calldata _addr) external onlyOwner {
    for (uint i = 0; i < _addr.length; i++) {
      require(users[_addr[i]].deposits == 0, "User is already transfered");
      IOldTap.User memory _user = IOldTap(oldTapAddress).users(_addr[i]);
      users[_addr[i]].upline = _user.upline;
      users[_addr[i]].referrals = _user.referrals;
      users[_addr[i]].total_structure = _user.total_structure;
      users[_addr[i]].direct_bonus = _user.direct_bonus;
      users[_addr[i]].match_bonus = _user.match_bonus;
      users[_addr[i]].deposits = _user.deposits;
      users[_addr[i]].deposit_time = _user.deposit_time;
      users[_addr[i]].payouts = _user.payouts;
      users[_addr[i]].rolls = _user.rolls;
      users[_addr[i]].ref_claim_pos = _user.ref_claim_pos;
      users[_addr[i]].entered_address = _user.entered_address;

      IOldTap.Airdrop memory _airdrops = IOldTap(oldTapAddress).airdrops(_addr[i]);
      airdrops[_addr[i]].airdrops = _airdrops.airdrops;
      airdrops[_addr[i]].airdrops_received = _airdrops.airdrops_received;
      airdrops[_addr[i]].last_airdrop = _airdrops.last_airdrop;
  
      IOldTap.Custody memory _custody = IOldTap(oldTapAddress).custody(_addr[i]);
      custody[_addr[i]].manager = _custody.manager;
      custody[_addr[i]].beneficiary = _custody.beneficiary;
      custody[_addr[i]].last_heartbeat = _custody.last_heartbeat;
      custody[_addr[i]].last_checkin = _custody.last_checkin;
      custody[_addr[i]].heartbeat_interval = _custody.heartbeat_interval;
    }
  }
  function migrateStatsFromOldContract() external onlyOwner {
    (uint256 _total_users, uint256 _total_deposited, uint256 _total_withdraw, uint256 _total_bnb, uint256 _total_txs, uint256 _total_airdrops) = IOldTap(oldTapAddress).contractInfo();
    total_users = _total_users;
    total_deposited = _total_deposited;
    total_withdraw = _total_withdraw;
    total_bnb = _total_bnb;
    total_txs = _total_txs;
    total_airdrops = _total_airdrops;
  }
  function removeFromBlackList(address[] memory blackListAddress) external onlyOwner {
    for(uint256 i;i<blackListAddress.length;i++){
      blackList[blackListAddress[i]]=false;
    }
  }
  function addToBlackList(address[] memory blackListAddress) external onlyOwner {
    for(uint256 i;i<blackListAddress.length;i++){
        blackList[blackListAddress[i]]=true;
    }
  }
  function setTotalAirdrops(uint256 newTotalAirdrop) external onlyOwner {
    total_airdrops = newTotalAirdrop;
  }

  function setTotalUsers(uint256 newTotalUsers) external onlyOwner {
    total_users = newTotalUsers;
  }

  function setTotalDeposits(uint256 newTotalDeposits) external onlyOwner {
    total_deposited = newTotalDeposits;
  }

  function setTotalWithdraw(uint256 newTotalWithdraw) external onlyOwner {
    total_withdraw = newTotalWithdraw;
  }

  function setTotalBNB(uint256 newTotalBNB) external onlyOwner {
    total_bnb = newTotalBNB;
  }

  function setTotalTX(uint256 newTotalTX) external onlyOwner {
    total_txs = newTotalTX;
  }

  /****** Administrative Functions *******/
  function updatePayoutRate(uint256 _newPayoutRate) external onlyOwner {
    payoutRate = _newPayoutRate;
  }

  function updateRefDepth(uint256 _newRefDepth) external onlyOwner {
    ref_depth = _newRefDepth;
  }

  function updateRefBonus(uint256 _newRefBonus) external onlyOwner {
    ref_bonus = _newRefBonus;
  }

  function updateInitialDeposit(uint256 _newInitialDeposit) external onlyOwner {
    minimumInitial = _newInitialDeposit;
  }

  function updateCompoundTax(uint256 _newCompoundTax) external onlyOwner {
    require(_newCompoundTax >= 0 && _newCompoundTax <= 20);
    CompoundTax = _newCompoundTax;
  }

  function updateExitTax(uint256 _newExitTax) external onlyOwner {
    require(_newExitTax >= 0 && _newExitTax <= 20);
    ExitTax = _newExitTax;
  }

  function updateDepositBracketSize(uint256 _newBracketSize) external onlyOwner {
    deposit_bracket_size = _newBracketSize;
  }

  function updateMaxPayoutCap(uint256 _newPayoutCap) external onlyOwner {
    max_payout_cap = _newPayoutCap;
  }

  function updateHoldRequirements(uint256[] memory _newRefBalances) external onlyOwner {
    require(_newRefBalances.length == ref_depth);
    delete ref_balances;
    for(uint8 i = 0; i < ref_depth; i++) {
      ref_balances.push(_newRefBalances[i]);
    }
  }

  function removeLiquidity(uint256 _amount) external onlyOwner {
      require(dripToken.transfer(address(msg.sender), _amount),
      "DRIP token transfer failed"
    );
  }

  /********** User Functions **************************************************/

  //@dev Checkin disambiguates activity between an active manager and player; this allows a beneficiary to execute a call to "transferInactiveAccount" if the player is gone,
  //but a manager is still executing on their behalf!
  function checkin() public {
    address _addr = msg.sender;
    custody[_addr].last_checkin = block.timestamp;
    emit Checkin(_addr, custody[_addr].last_checkin);
  }

  //@dev Deposit specified DRIP amount supplying an upline referral
  function deposit(address _upline, uint256 _amount) external noBlackList isNotPaused {

    address _addr = msg.sender;

    (uint256 realizedDeposit, uint256 taxAmount) = dripToken.calculateTransferTaxes(_addr, _amount);
    uint256 _total_amount = realizedDeposit;

    //Checkin for custody management.  If a user rolls for themselves they are active
    checkin();

    require(_amount >= minimumAmount, "Minimum deposit");

    //If fresh account require a minimal amount of DRIP
    if (users[_addr].deposits == 0){
      require(_amount >= minimumInitial, "Initial deposit too low");
    }

    _setUpline(_addr, _upline);

    // Claim if divs are greater than 1% of the deposit
    if (claimsAvailable(_addr) > _amount / 100){
      uint256 claimedDivs = _claim(_addr, false);
      uint256 taxedDivs = claimedDivs.mul(SafeMath.sub(100, CompoundTax)).div(100); // 5% tax on compounding
      _total_amount += taxedDivs;
    }

    //Transfer DRIP to the contract
    require(
      dripToken.transferFrom(
        _addr,
        address(dripVaultAddress),
        _amount
      ),
      "DRIP token transfer failed"
    );
    /*
    User deposits 10;
    1 goes for tax, 9 are realized deposit
    */

    _deposit(_addr, _total_amount);

    emit Leaderboard(_addr, users[_addr].referrals, users[_addr].deposits, users[_addr].payouts, users[_addr].total_structure);
    total_txs++;

  }


  //@dev Claim, transfer, withdraw from vault
  function claim() external noBlackList isNotPaused {

    //Checkin for custody management.  If a user rolls for themselves they are active
    checkin();

    address _addr = msg.sender;

    _claim_out(_addr);
  }

  //@dev Claim and deposit;
  function roll() external noBlackList isNotPaused {

    //Checkin for custody management.  If a user rolls for themselves they are active
    checkin();

    address _addr = msg.sender;

    _roll(_addr);
  }

  /********** Internal Fuctions **************************************************/

  //@dev Add direct referral and update team structure of upline
  function _setUpline(address _addr, address _upline) internal {
    /*
    1) User must not have existing up-line
    2) Up-line argument must not be equal to senders own address
    3) Senders address must not be equal to the owner
    4) Up-lined user must have a existing deposit
    */
    if(users[_addr].upline == address(0) && _upline != _addr && _addr != owner() && (users[_upline].deposit_time > 0 || _upline == owner() )) {
      users[_addr].upline = _upline;
      users[_upline].referrals++;

      emit Upline(_addr, _upline);

      total_users++;

      for(uint8 i = 0; i < ref_depth; i++) {
        if(_upline == address(0)) break;

        users[_upline].total_structure++;

        _upline = users[_upline].upline;
      }
    }
  }

  //@dev Deposit
  function _deposit(address _addr, uint256 _amount) internal {
    //Can't maintain upline referrals without this being set

    require(users[_addr].upline != address(0) || _addr == owner(), "No upline");

    //stats
    users[_addr].deposits += _amount;
    users[_addr].deposit_time = block.timestamp;

    // ////////////////////////////////////////////////////////////////////
    users[_addr].entered_address=_addr;
  
   /////////////////////////////////////////////////////////////////////////
    total_deposited += _amount;

    //events
    emit NewDeposit(_addr, _amount);

    //10% direct commission; only if net positive
    address _up = users[_addr].upline;
    if(_up != address(0) && isNetPositive(_up) && isBalanceCovered(_up, 1)) {
      uint256 _bonus = _amount / 10;

      //Log historical and add to deposits
      users[_up].direct_bonus += _bonus;
      users[_up].deposits += _bonus;

      emit NewDeposit(_up, _bonus);
      emit DirectPayout(_up, _addr, _bonus);
    }
  }

  //Payout upline; Bonuses are from 5 - 30% on the 1% paid out daily; Referrals only help
  function _refPayout(address _addr, uint256 _amount) internal {

    address _up = users[_addr].upline;
    uint256 _bonus = _amount * ref_bonus / 100; // 10% of amount
    uint256 _share = _bonus / 4;                // 2.5% of amount
    uint256 _up_share = _bonus.sub(_share);     // 7.5% of amount
    bool _team_found = false;

    for(uint8 i = 0; i < ref_depth; i++) {

      // If we have reached the top of the chain, the owner
      if(_up == address(0)){
        //The equivalent of looping through all available
        users[_addr].ref_claim_pos = ref_depth;
        break;
      }

      //We only match if the claim position is valid
      if(users[_addr].ref_claim_pos == i && isBalanceCovered(_up, i + 1) && isNetPositive(_up)) {
        //Team wallets are split 75/25%
        if(users[_up].referrals >= 5 && !_team_found) {
          //This should only be called once
          _team_found = true;
          //upline is paid matching and
          users[_up].deposits += _up_share;
          users[_addr].deposits += _share;

          //match accounting
          users[_up].match_bonus += _up_share;

          //Synthetic Airdrop tracking; team wallets get automatic airdrop benefits
          airdrops[_up].airdrops += _share;
          airdrops[_up].last_airdrop = block.timestamp;
          airdrops[_addr].airdrops_received += _share;

          //Global airdrops
          total_airdrops += _share;

          //Events
          emit NewDeposit(_addr, _share);
          emit NewDeposit(_up, _up_share);

          emit NewAirdrop(_up, _addr, _share, block.timestamp);
          emit MatchPayout(_up, _addr, _up_share);
        } else {

          users[_up].deposits += _bonus;

          //match accounting
          users[_up].match_bonus += _bonus;

          //events
          emit NewDeposit(_up, _bonus);
          emit MatchPayout(_up, _addr, _bonus);
        }

        //The work has been done for the position; just break
        break;

      }

      _up = users[_up].upline;
    }

    //Reward the next
    users[_addr].ref_claim_pos += 1;

    //Reset if we've hit the end of the line
    if (users[_addr].ref_claim_pos >= ref_depth){
      users[_addr].ref_claim_pos = 0;
    }

  }

  //@dev General purpose heartbeat in the system used for custody/management planning
  function _heart(address _addr) internal {
    custody[_addr].last_heartbeat = block.timestamp;
    emit HeartBeat(_addr, custody[_addr].last_heartbeat);
  }


  //@dev Claim and deposit;
  function _roll(address _addr) internal {

    uint256 to_payout = _claim(_addr, false);

    uint256 payout_taxed = to_payout.mul(SafeMath.sub(100, CompoundTax)).div(100); // 5% tax on compounding

    //Recycle baby!
    _deposit(_addr, payout_taxed);

    //track rolls for net positive
    users[_addr].rolls += payout_taxed;

    emit Leaderboard(_addr, users[_addr].referrals, users[_addr].deposits, users[_addr].payouts, users[_addr].total_structure);
    total_txs++;

  }


  //@dev Claim, transfer, and topoff
  function _claim_out(address _addr) internal {

    uint256 to_payout = _claim(_addr, true);

    // uint256 vaultBalance = dripToken.balanceOf(dripVaultAddress);
    // if (vaultBalance < to_payout) {
    //   uint256 differenceToMint = to_payout.sub(vaultBalance);
    //   tokenMint.mint(dripVaultAddress, differenceToMint);
    // }

    // dripVault.withdraw(to_payout);

    uint256 realizedPayout = to_payout.mul(SafeMath.sub(100, ExitTax)).div(100); // 10% tax on withdraw
    require(dripToken.transfer(address(msg.sender), realizedPayout));

    emit Leaderboard(_addr, users[_addr].referrals, users[_addr].deposits, users[_addr].payouts, users[_addr].total_structure);
    total_txs++;

  }


  //@dev Claim current payouts
  function _claim(address _addr, bool isClaimedOut) internal returns (uint256) {
    (uint256 _gross_payout, uint256 _max_payout, uint256 _to_payout, uint256 _sustainability_fee) = payoutOf(_addr);
    require(users[_addr].payouts < _max_payout, "Full payouts");

    // Deposit payout
    if(_to_payout > 0) {

      // payout remaining allowable divs if exceeds
      if(users[_addr].payouts + _to_payout > _max_payout) {
        _to_payout = _max_payout.safeSub(users[_addr].payouts);
      }

      users[_addr].payouts += _gross_payout;
      //users[_addr].payouts += _to_payout;

      if (!isClaimedOut){
        //Payout referrals
        uint256 compoundTaxedPayout = _to_payout.mul(SafeMath.sub(100, CompoundTax)).div(100); // 5% tax on compounding
        _refPayout(_addr, compoundTaxedPayout);
      }
    }

    require(_to_payout > 0, "Zero payout");

    //Update the payouts
    total_withdraw += _to_payout;

    //Update time!
    users[_addr].deposit_time = block.timestamp;

    emit Withdraw(_addr, _to_payout);

    if(users[_addr].payouts >= _max_payout) {
      emit LimitReached(_addr, users[_addr].payouts);
    }

    return _to_payout;
  }

  /********* Views ***************************************/

  //@dev Returns true if the address is net positive
  function isNetPositive(address _addr) public view returns (bool) {

    (uint256 _credits, uint256 _debits) = creditsAndDebits(_addr);

    return _credits > _debits;

  }

  //@dev Returns the total credits and debits for a given address
  function creditsAndDebits(address _addr) public view returns (uint256 _credits, uint256 _debits) {
    User memory _user = users[_addr];
    Airdrop memory _airdrop = airdrops[_addr];

    _credits = _airdrop.airdrops + _user.rolls + _user.deposits;
    _debits = _user.payouts;

    
  }


  //@dev Returns whether BR34P balance matches level
  function isBalanceCovered(address _addr, uint8 _level) public view returns (bool) {
    return balanceLevel(_addr) >= _level;
  }

  //@dev Returns the level of the address
  function balanceLevel(address _addr) public view returns (uint8) {
    uint8 _level = 0;
    for (uint8 i = 0; i < ref_depth; i++) {
      if (br34pToken.balanceOf(_addr) < ref_balances[i]) break;
      _level += 1;
    }

    return _level;
  }

  //@dev Returns the realized sustainability fee of the supplied address
  function sustainabilityFee(address _addr) public view returns (uint256) {
    uint256 _bracket = users[_addr].deposits.div(deposit_bracket_size);
    _bracket = SafeMath.min(_bracket, deposit_bracket_max);
    return _bracket * 5;
  }

  //@dev Returns custody info of _addr
  function getCustody(address _addr) public view returns (address _beneficiary, uint256 _heartbeat_interval, address _manager) {
    return (custody[_addr].beneficiary, custody[_addr].heartbeat_interval, custody[_addr].manager);
  }

  //@dev Returns account activity timestamps
  function lastActivity(address _addr) public view returns (uint256 _heartbeat, uint256 _lapsed_heartbeat, uint256 _checkin, uint256 _lapsed_checkin) {
    _heartbeat = custody[_addr].last_heartbeat;
    _lapsed_heartbeat = block.timestamp.safeSub(_heartbeat);
    _checkin = custody[_addr].last_checkin;
    _lapsed_checkin = block.timestamp.safeSub(_checkin);
  }

  //@dev Returns amount of claims available for sender
  function claimsAvailable(address _addr) public view returns (uint256) {
    (uint256 _gross_payout, uint256 _max_payout, uint256 _to_payout, uint256 _sustainability_fee) = payoutOf(_addr);
    return _to_payout;
  }

  //@dev Maxpayout of 3.65 of deposit
  function maxPayoutOf(uint256 _amount) public pure returns(uint256) {
    return _amount * 360 / 100;
  }

  //@dev Calculate the current payout and maxpayout of a given address
  function payoutOf(address _addr) public view returns(uint256 payout, uint256 max_payout, uint256 net_payout, uint256 sustainability_fee) {

    //The max_payout is capped so that we can also cap available rewards daily
    max_payout = maxPayoutOf(users[_addr].deposits).min(max_payout_cap);

    //This can  be 0 - 50 in increments of 5% @bb Whale tax bracket calcs here
    uint256 _fee = sustainabilityFee(_addr);
    uint256 share;

    // @BB: No need for negative fee

    if(users[_addr].payouts < max_payout) {
      //Using 1e18 we capture all significant digits when calculating available divs
      share = users[_addr].deposits.mul(payoutRate * 1e18).div(100e18).div(24 hours); //divide the profit by payout rate and seconds in the day
      payout = share * block.timestamp.safeSub(users[_addr].deposit_time);

      // payout remaining allowable divs if exceeds
      if(users[_addr].payouts + payout > max_payout) {
        payout = max_payout.safeSub(users[_addr].payouts);
      }

      sustainability_fee = payout * _fee / 100;

      net_payout = payout.safeSub(sustainability_fee);
    }
  }


  //@dev Get current user snapshot
  function userInfo(address _addr) external view returns(address upline, uint256 deposit_time, uint256 deposits, uint256 payouts, uint256 direct_bonus, uint256 match_bonus, uint256 last_airdrop) {
    return (users[_addr].upline, users[_addr].deposit_time, users[_addr].deposits, users[_addr].payouts, users[_addr].direct_bonus, users[_addr].match_bonus, airdrops[_addr].last_airdrop);
  }

  //@dev Get user totals
  function userInfoTotals(address _addr) external view returns(uint256 referrals, uint256 total_deposits, uint256 total_payouts, uint256 total_structure, uint256 airdrops_total, uint256 airdrops_received) {
    return (users[_addr].referrals, users[_addr].deposits, users[_addr].payouts, users[_addr].total_structure, airdrops[_addr].airdrops, airdrops[_addr].airdrops_received);
  }

  //@dev Get contract snapshot
  function contractInfo() external view returns(uint256 _total_users, uint256 _total_deposited, uint256 _total_withdraw, uint256 _total_bnb, uint256 _total_txs, uint256 _total_airdrops) {
    return (total_users, total_deposited, total_withdraw, total_bnb, total_txs, total_airdrops);
  }

  /////// Airdrops ///////

  //@dev Send specified DRIP amount supplying an upline referral
  function airdrop(address _to, uint256 _amount) external noBlackList isNotPaused {

    address _addr = msg.sender;

    (uint256 _realizedAmount, uint256 taxAmount) = dripToken.calculateTransferTaxes(_addr, _amount);
    //This can only fail if the balance is insufficient
    require(
      dripToken.transferFrom(
        _addr,
        address(dripVaultAddress),
        _amount
      ),
      "DRIP to contract transfer failed; check balance and allowance, airdrop"
    );


    //Make sure _to exists in the system; we increase
    require(users[_to].upline != address(0), "_to not found");

    //Fund to deposits (not a transfer)
    users[_to].deposits += _realizedAmount;


    //User stats
    airdrops[_addr].airdrops += _realizedAmount;
    airdrops[_addr].last_airdrop = block.timestamp;
    airdrops[_to].airdrops_received += _realizedAmount;

    //Keep track of overall stats
    total_airdrops += _realizedAmount;
    total_txs += 1;


    //Let em know!
    emit NewAirdrop(_addr, _to, _realizedAmount, block.timestamp);
    emit NewDeposit(_to, _realizedAmount);
  }

      /////// Airdrops ///////

  //@dev Send specified DRIP amount supplying an upline referral
    function MultiSendairdrop(address[] memory _to, uint256 _amount) external noBlackList isNotPaused {
    address _addr = msg.sender;
    uint256 _realizedAmount;
    uint256 taxAmount;
    uint256 airdropSent;

    for (uint256 i = 0; i < _to.length; i++) {
        //This can only fail if the balance is insufficient
        require(
            dripToken.transferFrom(_addr, address(dripVaultAddress), _amount),
            "DRIP to contract transfer failed; check balance and allowance, airdrop"
        );
        //Make sure _to exists in the system; we increase
        require(users[_to[i]].upline != address(0), "_to not found");
        (_realizedAmount, taxAmount) = dripToken.calculateTransferTaxes(
            _addr,
            _amount
        );
        //Fund to deposits (not a transfer)
        users[_to[i]].deposits += _realizedAmount;
        airdrops[_to[i]].airdrops_received += _realizedAmount;
        airdropSent += _realizedAmount;
        // //Let em know!
        emit NewAirdrop(_addr, _to[i], _realizedAmount, block.timestamp);
        emit NewDeposit(_to[i], _realizedAmount);
    }

    //User stats
    airdrops[_addr].airdrops += airdropSent;
    airdrops[_addr].last_airdrop = block.timestamp;
    //Keep track of overall stats
    total_airdrops += _realizedAmount;
    total_txs += 1;
    }}
library SafeMath {

  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    if (a == 0) {
      return 0;
    }
    c = a * b;
    assert(c / a == b);
    return c;
  }

 
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    return a / b;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function safeSub(uint256 a, uint256 b) internal pure returns (uint256) {
    if (b > a) {
      return 0;
    } else {
      return a - b;
    }
  }

  /**
   * @dev Adds two numbers, throws on overflow.
   */
  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }

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

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

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_src","type":"address"},{"indexed":true,"internalType":"address","name":"_dest","type":"address"},{"indexed":false,"internalType":"uint256","name":"_deposits","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_payouts","type":"uint256"}],"name":"BalanceTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"}],"name":"BeneficiaryUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Checkin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DirectPayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"HeartBeat","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"interval","type":"uint256"}],"name":"HeartBeatIntervalUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"referrals","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"total_deposits","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"total_payouts","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"total_structure","type":"uint256"}],"name":"Leaderboard","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LimitReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"address","name":"manager","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ManagerUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MatchPayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"NewAirdrop","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NewDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"address","name":"upline","type":"address"}],"name":"Upline","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"CompoundTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ExitTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_UINT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_to","type":"address[]"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"MultiSendairdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"blackListAddress","type":"address[]"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"airdrops","outputs":[{"internalType":"uint256","name":"airdrops","type":"uint256"},{"internalType":"uint256","name":"airdrops_received","type":"uint256"},{"internalType":"uint256","name":"last_airdrop","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"balanceLevel","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"claimsAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractInfo","outputs":[{"internalType":"uint256","name":"_total_users","type":"uint256"},{"internalType":"uint256","name":"_total_deposited","type":"uint256"},{"internalType":"uint256","name":"_total_withdraw","type":"uint256"},{"internalType":"uint256","name":"_total_bnb","type":"uint256"},{"internalType":"uint256","name":"_total_txs","type":"uint256"},{"internalType":"uint256","name":"_total_airdrops","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"creditsAndDebits","outputs":[{"internalType":"uint256","name":"_credits","type":"uint256"},{"internalType":"uint256","name":"_debits","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"custody","outputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"last_heartbeat","type":"uint256"},{"internalType":"uint256","name":"last_checkin","type":"uint256"},{"internalType":"uint256","name":"heartbeat_interval","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_upline","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit_bracket_size","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dripVaultAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"getCustody","outputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_heartbeat_interval","type":"uint256"},{"internalType":"address","name":"_manager","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_mintAddress","type":"address"},{"internalType":"address","name":"_BR34PTokenAddress","type":"address"},{"internalType":"address","name":"_dripTokenAddress","type":"address"},{"internalType":"address","name":"_vaultAddress","type":"address"},{"internalType":"address","name":"_oldTap","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint8","name":"_level","type":"uint8"}],"name":"isBalanceCovered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"isNetPositive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"lastActivity","outputs":[{"internalType":"uint256","name":"_heartbeat","type":"uint256"},{"internalType":"uint256","name":"_lapsed_heartbeat","type":"uint256"},{"internalType":"uint256","name":"_checkin","type":"uint256"},{"internalType":"uint256","name":"_lapsed_checkin","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"maxPayoutOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"max_payout_cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addr","type":"address[]"}],"name":"migrateFromOldContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrateStatsFromOldContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"oldTapAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"payoutOf","outputs":[{"internalType":"uint256","name":"payout","type":"uint256"},{"internalType":"uint256","name":"max_payout","type":"uint256"},{"internalType":"uint256","name":"net_payout","type":"uint256"},{"internalType":"uint256","name":"sustainability_fee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ref_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"blackListAddress","type":"address[]"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"removeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"roll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTotalAirdrop","type":"uint256"}],"name":"setTotalAirdrops","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTotalBNB","type":"uint256"}],"name":"setTotalBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTotalDeposits","type":"uint256"}],"name":"setTotalDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTotalTX","type":"uint256"}],"name":"setTotalTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTotalUsers","type":"uint256"}],"name":"setTotalUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTotalWithdraw","type":"uint256"}],"name":"setTotalWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"sustainabilityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"total_airdrops","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"total_bnb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"total_deposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"total_txs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"total_users","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"total_withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCompoundTax","type":"uint256"}],"name":"updateCompoundTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBracketSize","type":"uint256"}],"name":"updateDepositBracketSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newExitTax","type":"uint256"}],"name":"updateExitTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_newRefBalances","type":"uint256[]"}],"name":"updateHoldRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newInitialDeposit","type":"uint256"}],"name":"updateInitialDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPayoutCap","type":"uint256"}],"name":"updateMaxPayoutCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPayoutRate","type":"uint256"}],"name":"updatePayoutRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newRefBonus","type":"uint256"}],"name":"updateRefBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newRefDepth","type":"uint256"}],"name":"updateRefDepth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"userInfo","outputs":[{"internalType":"address","name":"upline","type":"address"},{"internalType":"uint256","name":"deposit_time","type":"uint256"},{"internalType":"uint256","name":"deposits","type":"uint256"},{"internalType":"uint256","name":"payouts","type":"uint256"},{"internalType":"uint256","name":"direct_bonus","type":"uint256"},{"internalType":"uint256","name":"match_bonus","type":"uint256"},{"internalType":"uint256","name":"last_airdrop","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"userInfoTotals","outputs":[{"internalType":"uint256","name":"referrals","type":"uint256"},{"internalType":"uint256","name":"total_deposits","type":"uint256"},{"internalType":"uint256","name":"total_payouts","type":"uint256"},{"internalType":"uint256","name":"total_structure","type":"uint256"},{"internalType":"uint256","name":"airdrops_total","type":"uint256"},{"internalType":"uint256","name":"airdrops_received","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"address","name":"upline","type":"address"},{"internalType":"uint256","name":"referrals","type":"uint256"},{"internalType":"uint256","name":"total_structure","type":"uint256"},{"internalType":"uint256","name":"direct_bonus","type":"uint256"},{"internalType":"uint256","name":"match_bonus","type":"uint256"},{"internalType":"uint256","name":"deposits","type":"uint256"},{"internalType":"uint256","name":"deposit_time","type":"uint256"},{"internalType":"uint256","name":"payouts","type":"uint256"},{"internalType":"uint256","name":"rolls","type":"uint256"},{"internalType":"uint256","name":"ref_claim_pos","type":"uint256"},{"internalType":"address","name":"entered_address","type":"address"}],"stateMutability":"view","type":"function"}]

6080604052607b805460ff1916600117905534801561001d57600080fd5b5061499a8061002d6000396000f3fe6080604052600436106103965760003560e01c80638c86f0a7116101da578063ca3f83d411610101578063e5d7e8e41161009a578063f07e96b31161006c578063f07e96b314610d95578063f2fde38b14610db5578063f75a4a3514610dd5578063ff89757014610df557005b8063e5d7e8e414610d33578063e7cc62bd14610d53578063e812b20214610d69578063ea2caab314610d7f57005b8063dbd2b7e6116100d3578063dbd2b7e614610c5e578063de560cca14610c7e578063e41e91ef14610c94578063e5b5019a14610d1d57005b8063ca3f83d414610be9578063cb65d1ba14610c09578063cd5e3c5d14610c29578063d20ecd2014610c3e57005b8063b12b34c411610173578063bbb228f611610145578063bbb228f614610b73578063c028b28614610b93578063c5e63fd614610bb3578063c635701f14610bc957005b8063b12b34c414610b04578063b187bd2614610b24578063ba9c748514610b3e578063baeb071814610b5e57005b80639dd46297116101ac5780639dd46297146109c6578063a87430ba146109e6578063afcda1d214610ac4578063b105d6c414610ae457005b80638c86f0a71461091b5780638da5cb5b146109725780639a8318f4146109905780639c8f9f23146109a657005b80634e71d92d116102be57806372fcfe41116102575780638456cb59116102295780638456cb59146108a65780638959af3c146108bb5780638ba4cc3c146108db5780638bf70ae5146108fb57005b806372fcfe41146107eb57806374b95b2d1461080157806379df8610146108665780638310e6bf1461088657005b80636da61d1e116102905780636da61d1e146107445780636da7cd3d146107845780636de081cf146107a4578063715018a6146107d657005b80634e71d92d146106e35780635432d271146106f8578063639a0b261461070e5780636a372c2c1461072457005b80632926e2271161033057806347b8e6a31161030257806347b8e6a31461064357806347e7ef24146106735780634838d165146106935780634b19aced146106c357005b80632926e227146105e357806335bbc397146106035780633f4ba83a14610619578063460259b01461062e57005b806315c43aaf1161036957806315c43aaf146104405780631959a0021461048d57806319d7152c1461053757806328ddc982146105ab57005b80630709f1b8146103985780630e09b64c146103d25780631459457a146103f257806314766fc314610412575b005b3480156103a457600080fd5b506103b86103b3366004614113565b610e15565b604080519283526020830191909152015b60405180910390f35b3480156103de57600080fd5b506103966103ed366004614130565b610f11565b3480156103fe57600080fd5b5061039661040d366004614149565b610f57565b34801561041e57600080fd5b5061043261042d366004614113565b6111a6565b6040519081526020016103c9565b34801561044c57600080fd5b50607d54607e54607f54608054608154607c545b604080519687526020870195909552938501929092526060840152608083015260a082015260c0016103c9565b34801561049957600080fd5b506104f86104a8366004614113565b6001600160a01b039081166000908152606c6020908152604080832080546006820154600583015460078401546003850154600490950154606e9097529490962060020154919096169692939192565b604080516001600160a01b0390981688526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0016103c9565b34801561054357600080fd5b50610581610552366004614113565b6001600160a01b039081166000908152606f602052604090206001810154600482015491549083169391921690565b604080516001600160a01b03948516815260208101939093529216918101919091526060016103c9565b3480156105b757600080fd5b506065546105cb906001600160a01b031681565b6040516001600160a01b0390911681526020016103c9565b3480156105ef57600080fd5b506103966105fe3660046142c3565b6111c4565b34801561060f57600080fd5b5061043260705481565b34801561062557600080fd5b5061039661125a565b34801561063a57600080fd5b50610396611290565b34801561064f57600080fd5b5061066361065e366004614113565b61135d565b60405190151581526020016103c9565b34801561067f57600080fd5b5061039661068e366004614300565b611374565b34801561069f57600080fd5b506106636106ae366004614113565b606d6020526000908152604090205460ff1681565b3480156106cf57600080fd5b506103966106de366004614130565b6116d4565b3480156106ef57600080fd5b50610396611703565b34801561070457600080fd5b5061043260805481565b34801561071a57600080fd5b5061043260715481565b34801561073057600080fd5b5061039661073f36600461432c565b61176e565b34801561075057600080fd5b5061076461075f366004614113565b61180b565b6040805194855260208501939093529183015260608201526080016103c9565b34801561079057600080fd5b5061039661079f366004614130565b61198f565b3480156107b057600080fd5b506107c46107bf366004614113565b6119be565b60405160ff90911681526020016103c9565b3480156107e257600080fd5b50610396611a8b565b3480156107f757600080fd5b5061043260785481565b34801561080d57600080fd5b5061046061081c366004614113565b6001600160a01b03166000908152606c6020908152604080832060018082015460058301546007840154600290940154606e90965293909520805491015494959294919392909190565b34801561087257600080fd5b506103966108813660046143bd565b611ac1565b34801561089257600080fd5b506103966108a1366004614130565b612455565b3480156108b257600080fd5b50610396612484565b3480156108c757600080fd5b506104326108d6366004614130565b6124bd565b3480156108e757600080fd5b506103966108f6366004614300565b6124dd565b34801561090757600080fd5b50610396610916366004614130565b6127f5565b34801561092757600080fd5b50610957610936366004614113565b606e6020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016103c9565b34801561097e57600080fd5b506033546001600160a01b03166105cb565b34801561099c57600080fd5b50610432607f5481565b3480156109b257600080fd5b506103966109c1366004614130565b612824565b3480156109d257600080fd5b506106636109e1366004614432565b61290f565b3480156109f257600080fd5b50610a65610a01366004614113565b606c60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a01546001600160a01b03998a169a9899979896979596949593949293919291168b565b604080516001600160a01b039c8d168152602081019b909b528a01989098526060890196909652608088019490945260a087019290925260c086015260e0850152610100840152610120830152909116610140820152610160016103c9565b348015610ad057600080fd5b50610432610adf366004614113565b61292a565b348015610af057600080fd5b50610396610aff366004614130565b612978565b348015610b1057600080fd5b50610396610b1f366004614130565b6129a7565b348015610b3057600080fd5b50607b546106639060ff1681565b348015610b4a57600080fd5b50610396610b59366004614130565b6129d6565b348015610b6a57600080fd5b50610396612a05565b348015610b7f57600080fd5b50610396610b8e366004614130565b612a5c565b348015610b9f57600080fd5b506066546105cb906001600160a01b031681565b348015610bbf57600080fd5b5061043260815481565b348015610bd557600080fd5b50610432610be4366004614130565b612a8b565b348015610bf557600080fd5b50610396610c04366004614130565b612aac565b348015610c1557600080fd5b50610396610c24366004614130565b612adb565b348015610c3557600080fd5b50610396612b18565b348015610c4a57600080fd5b50610396610c59366004614130565b612b80565b348015610c6a57600080fd5b50610396610c79366004614471565b612baf565b348015610c8a57600080fd5b50610432607e5481565b348015610ca057600080fd5b50610cea610caf366004614113565b606f60205260009081526040902080546001820154600283015460038401546004909401546001600160a01b03938416949390921692909185565b604080516001600160a01b039687168152959094166020860152928401919091526060830152608082015260a0016103c9565b348015610d2957600080fd5b5061043260001981565b348015610d3f57600080fd5b50610396610d4e366004614130565b612fc0565b348015610d5f57600080fd5b50610432607d5481565b348015610d7557600080fd5b50610432607c5481565b348015610d8b57600080fd5b5061043260775481565b348015610da157600080fd5b50610764610db0366004614113565b612fef565b348015610dc157600080fd5b50610396610dd0366004614113565b61304c565b348015610de157600080fd5b50610396610df0366004614130565b6130e4565b348015610e0157600080fd5b50610396610e103660046142c3565b613113565b6001600160a01b038082166000818152606c602090815260408083208151610160810183528154871681526001808301548286015260028084015483860152600384015460608085019190915260048501546080850152600585015460a08501908152600686015460c0860152600786015460e0860152600886015461010086019081526009870154610120870152600a90960154909a16610140850152978752606e8652848720855198890186528054808a5292810154968901969096529490940154928601929092529451945192948594919391929091610ef7916144cc565b610f0191906144cc565b93508160e0015192505050915091565b6033546001600160a01b03163314610f445760405162461bcd60e51b8152600401610f3b906144e4565b60405180910390fd5b6014811115610f5257600080fd5b607155565b600054610100900460ff1680610f70575060005460ff16155b610f8c5760405162461bcd60e51b8152600401610f3b90614519565b600054610100900460ff16158015610fae576000805461ffff19166101011790555b610fb66131a5565b6001607d81905569021e19e0c9bab240000060775569152d02c7e14af6800000607855670de0b6b3a764000060758190556076556002607255600f607355600a607481905560798190556005607055607155606780546001600160a01b03808a166001600160a01b0319928316179092556068805489841690831617905560698054888416908316179055606580548784169083168117909155606a8054831690911790556066805492861692909116919091179055607a805480830182556000829052630bebc2007ff0440771a29e57e18c66727944770b82cc77924aef333c927ce6bdd2cdb3ae0391820155815480840183556311e1a3009082015581548084018355631dcd65009082015581548084018355632faf08009082015581548084018355634d7c6d009082015581548084018355637d2b7500908201558154808401835563caa7e2009082015581548084018355640147d3570090820155815480840183556402127b3900908201558154808401835564035a4e9000908201558154808401835564056cc9c90090820155815480840183556408c71859009082015581548084018355640e33e2220090820155815480840183556416fafa7b0090820155815492830190915564252edc9d00910155801561119e576000805461ff00191690555b505050505050565b60008060008060006111b78661180b565b5098975050505050505050565b6033546001600160a01b031633146111ee5760405162461bcd60e51b8152600401610f3b906144e4565b60005b8151811015611256576000606d600084848151811061121257611212614567565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061124e8161457d565b9150506111f1565b5050565b6033546001600160a01b031633146112845760405162461bcd60e51b8152600401610f3b906144e4565b607b805460ff19169055565b6033546001600160a01b031633146112ba5760405162461bcd60e51b8152600401610f3b906144e4565b600080600080600080606660009054906101000a90046001600160a01b03166001600160a01b03166315c43aaf6040518163ffffffff1660e01b815260040160c060405180830381865afa158015611316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133a9190614596565b607d95909555607e93909355607f91909155608055608155607c55505050505050565b600080600061136b84610e15565b10949350505050565b336000908152606d602052604090205460ff16156001146113a75760405162461bcd60e51b8152600401610f3b906145e0565b607b5460ff16156113ca5760405162461bcd60e51b8152600401610f3b9061460c565b6069546040516379a5b22760e01b81523360048201819052602482018490529160009182916001600160a01b0316906379a5b227906044016040805180830381865afa15801561141e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611442919061463c565b909250905081611450612a05565b6076548510156114945760405162461bcd60e51b815260206004820152600f60248201526e135a5b9a5b5d5b4819195c1bdcda5d608a1b6044820152606401610f3b565b6001600160a01b0384166000908152606c60205260408120600501549003611508576075548510156115085760405162461bcd60e51b815260206004820152601760248201527f496e697469616c206465706f73697420746f6f206c6f770000000000000000006044820152606401610f3b565b6115128487613220565b61151d606486614660565b611526856111a6565b11156115705760006115398560006133ce565b9050600061155f6064611559611552606460705461362e565b859061364a565b90613680565b905061156b81846144cc565b925050505b6069546065546040516323b872dd60e01b81526001600160a01b0387811660048301529182166024820152604481018890529116906323b872dd906064016020604051808303816000875af11580156115cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f19190614682565b61163d5760405162461bcd60e51b815260206004820152601a60248201527f4452495020746f6b656e207472616e73666572206661696c65640000000000006044820152606401610f3b565b611647848261368c565b6001600160a01b0384166000818152606c60209081526040918290206001810154600582015460078301546002909301548551928352938201529283015260608201527f51e3415e8dd1b315ada9b5823098637d5b45e2c277bbc5069a7be8a834c5bf019060800160405180910390a2608180549060006116c78361457d565b9190505550505050505050565b6033546001600160a01b031633146116fe5760405162461bcd60e51b8152600401610f3b906144e4565b607f55565b336000908152606d602052604090205460ff16156001146117365760405162461bcd60e51b8152600401610f3b906145e0565b607b5460ff16156117595760405162461bcd60e51b8152600401610f3b9061460c565b611761612a05565b3361176b816138d5565b50565b6033546001600160a01b031633146117985760405162461bcd60e51b8152600401610f3b906144e4565b6073548151146117a757600080fd5b6117b3607a60006140cc565b60005b6073548160ff16101561125657607a828260ff16815181106117da576117da614567565b6020908102919091018101518254600181018455600093845291909220015580611803816146a4565b9150506117b6565b60008060008061184e607854611848606c6000896001600160a01b03166001600160a01b03168152602001908152602001600020600501546124bd565b90613a05565b9250600061185b8661292a565b6001600160a01b0387166000908152606c602052604081206007015491925090851115611986576118d16201518061155968056bc75e2d63100000611559607254670de0b6b3a76400006118af91906146c3565b6001600160a01b038d166000908152606c60205260409020600501549061364a565b6001600160a01b0388166000908152606c60205260409020600601549091506118fb904290613a1b565b61190590826146c3565b6001600160a01b0388166000908152606c602052604090206007015490965085906119319088906144cc565b1115611961576001600160a01b0387166000908152606c602052604090206007015461195e908690613a1b565b95505b606461196d83886146c3565b6119779190614660565b92506119838684613a1b565b93505b50509193509193565b6033546001600160a01b031633146119b95760405162461bcd60e51b8152600401610f3b906144e4565b607255565b600080805b6073548160ff161015611a8457607a8160ff16815481106119e6576119e6614567565b6000918252602090912001546068546040516370a0823160e01b81526001600160a01b038781166004830152909116906370a0823190602401602060405180830381865afa158015611a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6091906146e2565b10611a8457611a706001836146fb565b915080611a7c816146a4565b9150506119c3565b5092915050565b6033546001600160a01b03163314611ab55760405162461bcd60e51b8152600401610f3b906144e4565b611abf6000613a3e565b565b6033546001600160a01b03163314611aeb5760405162461bcd60e51b8152600401610f3b906144e4565b60005b8181101561245057606c6000848484818110611b0c57611b0c614567565b9050602002016020810190611b219190614113565b6001600160a01b0316815260208101919091526040016000206005015415611b8b5760405162461bcd60e51b815260206004820152601a60248201527f5573657220697320616c7265616479207472616e7366657265640000000000006044820152606401610f3b565b6066546000906001600160a01b031663a87430ba858585818110611bb157611bb1614567565b9050602002016020810190611bc69190614113565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240161016060405180830381865afa158015611c0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2f9190614730565b8051909150606c6000868686818110611c4a57611c4a614567565b9050602002016020810190611c5f9190614113565b6001600160a01b03166001600160a01b0316815260200190815260200160002060000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060200151606c6000868686818110611cc157611cc1614567565b9050602002016020810190611cd69190614113565b6001600160a01b03166001600160a01b03168152602001908152602001600020600101819055508060400151606c6000868686818110611d1857611d18614567565b9050602002016020810190611d2d9190614113565b6001600160a01b03166001600160a01b03168152602001908152602001600020600201819055508060600151606c6000868686818110611d6f57611d6f614567565b9050602002016020810190611d849190614113565b6001600160a01b03166001600160a01b03168152602001908152602001600020600301819055508060800151606c6000868686818110611dc657611dc6614567565b9050602002016020810190611ddb9190614113565b6001600160a01b03166001600160a01b03168152602001908152602001600020600401819055508060a00151606c6000868686818110611e1d57611e1d614567565b9050602002016020810190611e329190614113565b6001600160a01b03166001600160a01b03168152602001908152602001600020600501819055508060c00151606c6000868686818110611e7457611e74614567565b9050602002016020810190611e899190614113565b6001600160a01b03166001600160a01b03168152602001908152602001600020600601819055508060e00151606c6000868686818110611ecb57611ecb614567565b9050602002016020810190611ee09190614113565b6001600160a01b03166001600160a01b0316815260200190815260200160002060070181905550806101000151606c6000868686818110611f2357611f23614567565b9050602002016020810190611f389190614113565b6001600160a01b03166001600160a01b0316815260200190815260200160002060080181905550806101200151606c6000868686818110611f7b57611f7b614567565b9050602002016020810190611f909190614113565b6001600160a01b03166001600160a01b0316815260200190815260200160002060090181905550806101400151606c6000868686818110611fd357611fd3614567565b9050602002016020810190611fe89190614113565b6001600160a01b03908116825260208201929092526040016000908120600a0180546001600160a01b0319169383169390931790925560665416638c86f0a786868681811061203957612039614567565b905060200201602081019061204e9190614113565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401606060405180830381865afa158015612092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b691906147cd565b8051909150606e60008787878181106120d1576120d1614567565b90506020020160208101906120e69190614113565b6001600160a01b03166001600160a01b03168152602001908152602001600020600001819055508060200151606e600087878781811061212857612128614567565b905060200201602081019061213d9190614113565b6001600160a01b03166001600160a01b03168152602001908152602001600020600101819055508060400151606e600087878781811061217f5761217f614567565b90506020020160208101906121949190614113565b6001600160a01b03908116825260208201929092526040016000908120600201929092556066541663e41e91ef8787878181106121d3576121d3614567565b90506020020160208101906121e89190614113565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160a060405180830381865afa15801561222c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122509190614829565b8051909150606f600088888881811061226b5761226b614567565b90506020020160208101906122809190614113565b6001600160a01b03166001600160a01b0316815260200190815260200160002060000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060200151606f60008888888181106122e2576122e2614567565b90506020020160208101906122f79190614113565b6001600160a01b03166001600160a01b0316815260200190815260200160002060010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060400151606f600088888881811061235957612359614567565b905060200201602081019061236e9190614113565b6001600160a01b03166001600160a01b03168152602001908152602001600020600201819055508060600151606f60008888888181106123b0576123b0614567565b90506020020160208101906123c59190614113565b6001600160a01b03166001600160a01b03168152602001908152602001600020600301819055508060800151606f600088888881811061240757612407614567565b905060200201602081019061241c9190614113565b6001600160a01b031681526020810191909152604001600020600401555082915061244890508161457d565b915050611aee565b505050565b6033546001600160a01b0316331461247f5760405162461bcd60e51b8152600401610f3b906144e4565b607c55565b6033546001600160a01b031633146124ae5760405162461bcd60e51b8152600401610f3b906144e4565b607b805460ff19166001179055565b600060646124cd836101686146c3565b6124d79190614660565b92915050565b336000908152606d602052604090205460ff16156001146125105760405162461bcd60e51b8152600401610f3b906145e0565b607b5460ff16156125335760405162461bcd60e51b8152600401610f3b9061460c565b6069546040516379a5b22760e01b81523360048201819052602482018490529160009182916001600160a01b0316906379a5b227906044016040805180830381865afa158015612587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ab919061463c565b6069546065546040516323b872dd60e01b81526001600160a01b03888116600483015291821660248201526044810189905293955091935016906323b872dd906064016020604051808303816000875af115801561260d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126319190614682565b61264d5760405162461bcd60e51b8152600401610f3b906148ab565b6001600160a01b038581166000908152606c6020526040902054166126a45760405162461bcd60e51b815260206004820152600d60248201526c17dd1bc81b9bdd08199bdd5b99609a1b6044820152606401610f3b565b6001600160a01b0385166000908152606c6020526040812060050180548492906126cf9084906144cc565b90915550506001600160a01b0383166000908152606e6020526040812080548492906126fc9084906144cc565b90915550506001600160a01b038084166000908152606e6020526040808220426002909101559187168152908120600101805484929061273d9084906144cc565b9250508190555081607c600082825461275691906144cc565b9250508190555060016081600082825461277091906144cc565b9091555050604080518381524260208201526001600160a01b0380881692908616917ff6cef455daa2f0926726c225d4ab406e2be4fb2f4d92b0b4bd58e9127d501e18910160405180910390a3846001600160a01b0316600080516020614945833981519152836040516127e691815260200190565b60405180910390a25050505050565b6033546001600160a01b0316331461281f5760405162461bcd60e51b8152600401610f3b906144e4565b607455565b6033546001600160a01b0316331461284e5760405162461bcd60e51b8152600401610f3b906144e4565b60695460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af115801561289f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c39190614682565b61176b5760405162461bcd60e51b815260206004820152601a60248201527f4452495020746f6b656e207472616e73666572206661696c65640000000000006044820152606401610f3b565b60008160ff1661291e846119be565b60ff1610159392505050565b6077546001600160a01b0382166000908152606c60205260408120600501549091829161295691613680565b905061296481607954613a05565b90506129718160056146c3565b9392505050565b6033546001600160a01b031633146129a25760405162461bcd60e51b8152600401610f3b906144e4565b607d55565b6033546001600160a01b031633146129d15760405162461bcd60e51b8152600401610f3b906144e4565b607555565b6033546001600160a01b03163314612a005760405162461bcd60e51b8152600401610f3b906144e4565b607e55565b336000818152606f602052604090819020426003909101819055905182917fda763d657043a37d5b6727921f1afb11f752742cbbd2590d990a8d3b9ff357ae91612a5191815260200190565b60405180910390a250565b6033546001600160a01b03163314612a865760405162461bcd60e51b8152600401610f3b906144e4565b608055565b607a8181548110612a9b57600080fd5b600091825260209091200154905081565b6033546001600160a01b03163314612ad65760405162461bcd60e51b8152600401610f3b906144e4565b607355565b6033546001600160a01b03163314612b055760405162461bcd60e51b8152600401610f3b906144e4565b6014811115612b1357600080fd5b607055565b336000908152606d602052604090205460ff1615600114612b4b5760405162461bcd60e51b8152600401610f3b906145e0565b607b5460ff1615612b6e5760405162461bcd60e51b8152600401610f3b9061460c565b612b76612a05565b3361176b81613a90565b6033546001600160a01b03163314612baa5760405162461bcd60e51b8152600401610f3b906144e4565b607755565b336000908152606d602052604090205460ff1615600114612be25760405162461bcd60e51b8152600401610f3b906145e0565b607b5460ff1615612c055760405162461bcd60e51b8152600401610f3b9061460c565b3360008080805b8651811015612f3a576069546065546040516323b872dd60e01b81526001600160a01b0388811660048301529182166024820152604481018990529116906323b872dd906064016020604051808303816000875af1158015612c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c969190614682565b612cb25760405162461bcd60e51b8152600401610f3b906148ab565b60006001600160a01b0316606c6000898481518110612cd357612cd3614567565b6020908102919091018101516001600160a01b03908116835290820192909252604001600020541603612d385760405162461bcd60e51b815260206004820152600d60248201526c17dd1bc81b9bdd08199bdd5b99609a1b6044820152606401610f3b565b6069546040516379a5b22760e01b81526001600160a01b03878116600483015260248201899052909116906379a5b227906044016040805180830381865afa158015612d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dac919061463c565b809450819550505083606c6000898481518110612dcb57612dcb614567565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206005016000828254612e0591906144cc565b9250508190555083606e6000898481518110612e2357612e23614567565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206001016000828254612e5d91906144cc565b90915550612e6d905084836144cc565b9150868181518110612e8157612e81614567565b60200260200101516001600160a01b0316856001600160a01b03167ff6cef455daa2f0926726c225d4ab406e2be4fb2f4d92b0b4bd58e9127d501e188642604051612ed6929190918252602082015260400190565b60405180910390a3868181518110612ef057612ef0614567565b60200260200101516001600160a01b031660008051602061494583398151915285604051612f2091815260200190565b60405180910390a280612f328161457d565b915050612c0c565b506001600160a01b0384166000908152606e602052604081208054839290612f639084906144cc565b90915550506001600160a01b0384166000908152606e6020526040812042600290910155607c8054859290612f999084906144cc565b92505081905550600160816000828254612fb391906144cc565b9091555050505050505050565b6033546001600160a01b03163314612fea5760405162461bcd60e51b8152600401610f3b906144e4565b607855565b6001600160a01b0381166000908152606f60205260408120600201549080806130184285613a1b565b6001600160a01b0386166000908152606f602052604090206003015490935091506130434283613a1b565b90509193509193565b6033546001600160a01b031633146130765760405162461bcd60e51b8152600401610f3b906144e4565b6001600160a01b0381166130db5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610f3b565b61176b81613a3e565b6033546001600160a01b0316331461310e5760405162461bcd60e51b8152600401610f3b906144e4565b608155565b6033546001600160a01b0316331461313d5760405162461bcd60e51b8152600401610f3b906144e4565b60005b8151811015611256576001606d600084848151811061316157613161614567565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061319d8161457d565b915050613140565b600054610100900460ff16806131be575060005460ff16155b6131da5760405162461bcd60e51b8152600401610f3b90614519565b600054610100900460ff161580156131fc576000805461ffff19166101011790555b613204613b5f565b61320c613bc9565b801561176b576000805461ff001916905550565b6001600160a01b038281166000908152606c60205260409020541615801561325a5750816001600160a01b0316816001600160a01b031614155b801561327457506033546001600160a01b03838116911614155b80156132b157506001600160a01b0381166000908152606c60205260409020600601541515806132b157506033546001600160a01b038281169116145b15611256576001600160a01b038281166000908152606c602052604080822080546001600160a01b03191693851693841790559181529081206001018054916132f98361457d565b9190505550806001600160a01b0316826001600160a01b03167f9f4d150e5193cfa9a87226111d3b60b624d97ccc056eeeac1569af1ea27bf64160405160405180910390a3607d805490600061334e8361457d565b919050555060005b6073548160ff161015612450576001600160a01b03821615612450576001600160a01b0382166000908152606c602052604081206002018054916133998361457d565b90915550506001600160a01b039182166000908152606c602052604090205490911690806133c6816146a4565b915050613356565b60008060008060006133df8761180b565b6001600160a01b038b166000908152606c60205260409020600701549397509195509350915083116134425760405162461bcd60e51b815260206004820152600c60248201526b46756c6c207061796f75747360a01b6044820152606401610f3b565b8115613503576001600160a01b0387166000908152606c602052604090206007015483906134719084906144cc565b11156134a1576001600160a01b0387166000908152606c602052604090206007015461349e908490613a1b565b91505b6001600160a01b0387166000908152606c6020526040812060070180548692906134cc9084906144cc565b909155508690506135035760006134f560646115596134ee606460705461362e565b869061364a565b90506135018882613c29565b505b600082116135415760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc81c185e5bdd5d60aa1b6044820152606401610f3b565b81607f600082825461355391906144cc565b90915550506001600160a01b0387166000818152606c60205260409081902042600690910155517f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364906135a99085815260200190565b60405180910390a26001600160a01b0387166000908152606c60205260409020600701548311613624576001600160a01b0387166000818152606c60209081526040918290206007015491519182527f97ddeb77c85e6a1dd99a34fe2bb1a4f9b211d5ffced7a707de9dbeb24363d0e4910160405180910390a25b5095945050505050565b60008282111561364057613640614917565b612971828461492d565b60008260000361365c575060006124d7565b61366682846146c3565b9050816136738483614660565b146124d7576124d7614917565b60006129718284614660565b6001600160a01b038281166000908152606c6020526040902054161515806136c157506033546001600160a01b038381169116145b6136f95760405162461bcd60e51b81526020600482015260096024820152684e6f2075706c696e6560b81b6044820152606401610f3b565b6001600160a01b0382166000908152606c6020526040812060050180548392906137249084906144cc565b90915550506001600160a01b0382166000818152606c60205260408120426006820155600a0180546001600160a01b031916909217909155607e805483929061376e9084906144cc565b90915550506040518181526001600160a01b038316906000805160206149458339815191529060200160405180910390a26001600160a01b038083166000908152606c60205260409020541680158015906137cd57506137cd8161135d565b80156137df57506137df81600161290f565b156124505760006137f1600a84614660565b6001600160a01b0383166000908152606c60205260408120600301805492935083929091906138219084906144cc565b90915550506001600160a01b0382166000908152606c6020526040812060050180548392906138519084906144cc565b90915550506040518181526001600160a01b038316906000805160206149458339815191529060200160405180910390a2836001600160a01b0316826001600160a01b03167fba5b08f0cddc64825b52c35c09323af810c1d2e29c97aba01a4ed25cfdc482d1836040516138c791815260200190565b60405180910390a350505050565b60006138e28260016133ce565b905060006138fb6064611559611552606460715461362e565b60695460405163a9059cbb60e01b8152336004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561394d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139719190614682565b61397a57600080fd5b6001600160a01b0383166000818152606c60209081526040918290206001810154600582015460078301546002909301548551928352938201529283015260608201527f51e3415e8dd1b315ada9b5823098637d5b45e2c277bbc5069a7be8a834c5bf01906080015b60405180910390a2608180549060006139fb8361457d565b9190505550505050565b6000818310613a145781612971565b5090919050565b600082821115613a2d575060006124d7565b613a37828461492d565b90506124d7565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000613a9d8260006133ce565b90506000613ab66064611559611552606460705461362e565b9050613ac2838261368c565b6001600160a01b0383166000908152606c602052604081206008018054839290613aed9084906144cc565b90915550506001600160a01b0383166000818152606c60209081526040918290206001810154600582015460078301546002909301548551928352938201529283015260608201527f51e3415e8dd1b315ada9b5823098637d5b45e2c277bbc5069a7be8a834c5bf01906080016139e3565b600054610100900460ff1680613b78575060005460ff16155b613b945760405162461bcd60e51b8152600401610f3b90614519565b600054610100900460ff1615801561320c576000805461ffff1916610101179055801561176b576000805461ff001916905550565b600054610100900460ff1680613be2575060005460ff16155b613bfe5760405162461bcd60e51b8152600401610f3b90614519565b600054610100900460ff16158015613c20576000805461ffff19166101011790555b61320c33613a3e565b6001600160a01b038083166000908152606c6020526040812054607454921691606490613c5690856146c3565b613c609190614660565b90506000613c6f600483614660565b90506000613c7d838361362e565b90506000805b6073548160ff161015614050576001600160a01b038616613cc2576073546001600160a01b0389166000908152606c6020526040902060090155614050565b6001600160a01b0388166000908152606c602052604090206009015460ff8216148015613cf95750613cf9866109e18360016146fb565b8015613d095750613d098661135d565b15614020576001600160a01b0386166000908152606c6020526040902060010154600511801590613d38575081155b15613f4f576001600160a01b0386166000908152606c60205260408120600501805460019450859290613d6c9084906144cc565b90915550506001600160a01b0388166000908152606c602052604081206005018054869290613d9c9084906144cc565b90915550506001600160a01b0386166000908152606c602052604081206004018054859290613dcc9084906144cc565b90915550506001600160a01b0386166000908152606e602052604081208054869290613df99084906144cc565b90915550506001600160a01b038087166000908152606e602052604080822042600290910155918a1681529081206001018054869290613e3a9084906144cc565b9250508190555083607c6000828254613e5391906144cc565b90915550506040518481526001600160a01b038916906000805160206149458339815191529060200160405180910390a2856001600160a01b031660008051602061494583398151915284604051613ead91815260200190565b60405180910390a2604080518581524260208201526001600160a01b03808b1692908916917ff6cef455daa2f0926726c225d4ab406e2be4fb2f4d92b0b4bd58e9127d501e18910160405180910390a3876001600160a01b0316866001600160a01b03167f16e746f9be6c4b545700b04df27afb9fceabf59b94ef1c816e78a435059fabea85604051613f4291815260200190565b60405180910390a3614050565b6001600160a01b0386166000908152606c602052604081206005018054879290613f7a9084906144cc565b90915550506001600160a01b0386166000908152606c602052604081206004018054879290613faa9084906144cc565b90915550506040518581526001600160a01b038716906000805160206149458339815191529060200160405180910390a2876001600160a01b0316866001600160a01b03167f16e746f9be6c4b545700b04df27afb9fceabf59b94ef1c816e78a435059fabea87604051613f4291815260200190565b6001600160a01b039586166000908152606c60205260409020549095169480614048816146a4565b915050613c83565b506001600160a01b0387166000908152606c6020526040812060090180546001929061407d9084906144cc565b90915550506073546001600160a01b0388166000908152606c6020526040902060090154106140c3576001600160a01b0387166000908152606c60205260408120600901555b50505050505050565b508054600082559060005260206000209081019061176b91905b808211156140fa57600081556001016140e6565b5090565b6001600160a01b038116811461176b57600080fd5b60006020828403121561412557600080fd5b8135612971816140fe565b60006020828403121561414257600080fd5b5035919050565b600080600080600060a0868803121561416157600080fd5b853561416c816140fe565b9450602086013561417c816140fe565b9350604086013561418c816140fe565b9250606086013561419c816140fe565b915060808601356141ac816140fe565b809150509295509295909350565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff811182821017156141f4576141f46141ba565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614223576142236141ba565b604052919050565b600067ffffffffffffffff821115614245576142456141ba565b5060051b60200190565b600082601f83011261426057600080fd5b813560206142756142708361422b565b6141fa565b82815260059290921b8401810191818101908684111561429457600080fd5b8286015b848110156142b85780356142ab816140fe565b8352918301918301614298565b509695505050505050565b6000602082840312156142d557600080fd5b813567ffffffffffffffff8111156142ec57600080fd5b6142f88482850161424f565b949350505050565b6000806040838503121561431357600080fd5b823561431e816140fe565b946020939093013593505050565b6000602080838503121561433f57600080fd5b823567ffffffffffffffff81111561435657600080fd5b8301601f8101851361436757600080fd5b80356143756142708261422b565b81815260059190911b8201830190838101908783111561439457600080fd5b928401925b828410156143b257833582529284019290840190614399565b979650505050505050565b600080602083850312156143d057600080fd5b823567ffffffffffffffff808211156143e857600080fd5b818501915085601f8301126143fc57600080fd5b81358181111561440b57600080fd5b8660208260051b850101111561442057600080fd5b60209290920196919550909350505050565b6000806040838503121561444557600080fd5b8235614450816140fe565b9150602083013560ff8116811461446657600080fd5b809150509250929050565b6000806040838503121561448457600080fd5b823567ffffffffffffffff81111561449b57600080fd5b6144a78582860161424f565b95602094909401359450505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156144df576144df6144b6565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006001820161458f5761458f6144b6565b5060010190565b60008060008060008060c087890312156145af57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b6020808252601290820152714e6f20426c61636b6c6973742063616c6c7360701b604082015260600190565b60208082526016908201527514ddd85c1cc818dd5c9c995b9d1b1e481c185d5cd95960521b604082015260600190565b6000806040838503121561464f57600080fd5b505080516020909101519092909150565b60008261467d57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561469457600080fd5b8151801515811461297157600080fd5b600060ff821660ff81036146ba576146ba6144b6565b60010192915050565b60008160001904831182151516156146dd576146dd6144b6565b500290565b6000602082840312156146f457600080fd5b5051919050565b600060ff821660ff84168060ff03821115614718576147186144b6565b019392505050565b805161472b816140fe565b919050565b6000610160828403121561474357600080fd5b61474b6141d0565b61475483614720565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152506101208084015181830152506101406147c2818501614720565b908201529392505050565b6000606082840312156147df57600080fd5b6040516060810181811067ffffffffffffffff82111715614802576148026141ba565b80604052508251815260208301516020820152604083015160408201528091505092915050565b600060a0828403121561483b57600080fd5b60405160a0810181811067ffffffffffffffff8211171561485e5761485e6141ba565b604052825161486c816140fe565b8152602083015161487c816140fe565b806020830152506040830151604082015260608301516060820152608083015160808201528091505092915050565b60208082526046908201527f4452495020746f20636f6e7472616374207472616e73666572206661696c656460408201527f3b20636865636b2062616c616e636520616e6420616c6c6f77616e63652c20616060820152650697264726f760d41b608082015260a00190565b634e487b7160e01b600052600160045260246000fd5b60008282101561493f5761493f6144b6565b50039056fe2cb77763bc1e8490c1a904905c4d74b4269919aca114464f4bb4d911e60de364a264697066735822122052300b34818375f815d3405476080b1e40cc976e22574adedcebe61a0da1796964736f6c634300080d0033

Deployed ByteCode Sourcemap

11438:27319:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31438:296;;;;;;;;;;-1:-1:-1;31438:296:0;;;;;:::i;:::-;;:::i;:::-;;;;576:25:1;;;632:2;617:18;;610:34;;;;549:18;31438:296:0;;;;;;;;20497:150;;;;;;;;;;-1:-1:-1;20497:150:0;;;;;:::i;:::-;;:::i;14674:1421::-;;;;;;;;;;-1:-1:-1;14674:1421:0;;;;;:::i;:::-;;:::i;33307:218::-;;;;;;;;;;-1:-1:-1;33307:218:0;;;;;:::i;:::-;;:::i;:::-;;;1804:25:1;;;1792:2;1777:18;33307:218:0;1658:177:1;35777:288:0;;;;;;;;;;-1:-1:-1;35976:11:0;;35989:15;;36006:14;;36022:9;;36033;;36044:14;;35777:288;;;;2127:25:1;;;2183:2;2168:18;;2161:34;;;;2211:18;;;2204:34;;;;2269:2;2254:18;;2247:34;2312:3;2297:19;;2290:35;2356:3;2341:19;;2334:35;2114:3;2099:19;35777:288:0;1840:535:1;34935:389:0;;;;;;;;;;-1:-1:-1;34935:389:0;;;;;:::i;:::-;-1:-1:-1;;;;;35143:12:0;;;34990:14;35143:12;;;:5;:12;;;;;;;;:19;;35164:25;;;;35191:21;;;;35214:20;;;;35236:25;;;;35263:24;;;;;35289:8;:15;;;;;;;:28;;;35143:19;;;;;35214:20;;35236:25;;34935:389;;;;;-1:-1:-1;;;;;2713:32:1;;;2695:51;;2777:2;2762:18;;2755:34;;;;2805:18;;;2798:34;;;;2863:2;2848:18;;2841:34;;;;2906:3;2891:19;;2884:35;2733:3;2935:19;;2928:35;2994:3;2979:19;;2972:35;2682:3;2667:19;34935:389:0;2380:633:1;32593:232:0;;;;;;;;;;-1:-1:-1;32593:232:0;;;;;:::i;:::-;-1:-1:-1;;;;;32733:14:0;;;32649:20;32733:14;;;:7;:14;;;;;:26;;;;32761:33;;;;32796:22;;32733:26;;;;32761:33;;32796:22;;32593:232;;;;;-1:-1:-1;;;;;3276:15:1;;;3258:34;;3323:2;3308:18;;3301:34;;;;3371:15;;3351:18;;;3344:43;;;;3208:2;3193:18;32593:232:0;3018:375:1;12273:31:0;;;;;;;;;;-1:-1:-1;12273:31:0;;;;-1:-1:-1;;;;;12273:31:0;;;;;;-1:-1:-1;;;;;3562:32:1;;;3544:51;;3532:2;3517:18;12273:31:0;3398:203:1;18740:192:0;;;;;;;;;;-1:-1:-1;18740:192:0;;;;;:::i;:::-;;:::i;12691:26::-;;;;;;;;;;;;;;;;16101:71;;;;;;;;;;;;;:::i;18277:459::-;;;;;;;;;;;;;:::i;31188:177::-;;;;;;;;;;-1:-1:-1;31188:177:0;;;;;:::i;:::-;;:::i;:::-;;;5723:14:1;;5716:22;5698:41;;5686:2;5671:18;31188:177:0;5558:187:1;21921:1442:0;;;;;;;;;;-1:-1:-1;21921:1442:0;;;;;:::i;:::-;;:::i;12548:39::-;;;;;;;;;;-1:-1:-1;12548:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19484:117;;;;;;;;;;-1:-1:-1;19484:117:0;;;;;:::i;:::-;;:::i;23418:222::-;;;;;;;;;;;;;:::i;13406:24::-;;;;;;;;;;;;;;;;12722:22;;;;;;;;;;;;;;;;20907:265;;;;;;;;;;-1:-1:-1;20907:265:0;;;;;:::i;:::-;;:::i;33754:1137::-;;;;;;;;;;-1:-1:-1;33754:1137:0;;;;;:::i;:::-;;:::i;:::-;;;;7197:25:1;;;7253:2;7238:18;;7231:34;;;;7281:18;;;7274:34;7339:2;7324:18;;7317:34;7184:3;7169:19;33754:1137:0;6966:391:1;19855:109:0;;;;;;;;;;-1:-1:-1;19855:109:0;;;;;:::i;:::-;;:::i;31976:253::-;;;;;;;;;;-1:-1:-1;31976:253:0;;;;;:::i;:::-;;:::i;:::-;;;7534:4:1;7522:17;;;7504:36;;7492:2;7477:18;31976:253:0;7362:184:1;2607:94:0;;;;;;;;;;;;;:::i;13045:29::-;;;;;;;;;;;;;;;;35356:383;;;;;;;;;;-1:-1:-1;35356:383:0;;;;;:::i;:::-;-1:-1:-1;;;;;35574:12:0;35417:17;35574:12;;;:5;:12;;;;;;;;:22;;;;;35598:21;;;;35621:20;;;;35643:28;;;;;35673:8;:15;;;;;;;:24;;35699:33;;;35574:22;;35598:21;;35621:20;;35643:28;35673:24;;35699:33;35356:383;16694:1579;;;;;;;;;;-1:-1:-1;16694:1579:0;;;;;:::i;:::-;;:::i;19128:115::-;;;;;;;;;;-1:-1:-1;19128:115:0;;;;;:::i;:::-;;:::i;16180:68::-;;;;;;;;;;;;;:::i;33570:106::-;;;;;;;;;;-1:-1:-1;33570:106:0;;;;;:::i;:::-;;:::i;36167:1121::-;;;;;;;;;;-1:-1:-1;36167:1121:0;;;;;:::i;:::-;;:::i;20078:102::-;;;;;;;;;;-1:-1:-1;20078:102:0;;;;;:::i;:::-;;:::i;12594:43::-;;;;;;;;;;-1:-1:-1;12594:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8373:25:1;;;8429:2;8414:18;;8407:34;;;;8457:18;;;8450:34;8361:2;8346:18;12594:43:0;8171:319:1;1956:87:0;;;;;;;;;;-1:-1:-1;2029:6:0;;-1:-1:-1;;;;;2029:6:0;1956:87;;13372:29;;;;;;;;;;;;;;;;21178:176;;;;;;;;;;-1:-1:-1;21178:176:0;;;;;:::i;:::-;;:::i;31796:131::-;;;;;;;;;;-1:-1:-1;31796:131:0;;;;;:::i;:::-;;:::i;12506:37::-;;;;;;;;;;-1:-1:-1;12506:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12506:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9396:15:1;;;9378:34;;9443:2;9428:18;;9421:34;;;;9471:18;;9464:34;;;;9529:2;9514:18;;9507:34;;;;9572:3;9557:19;;9550:35;;;;9358:3;9601:19;;9594:35;;;;9660:3;9645:19;;9638:35;9704:3;9689:19;;9682:35;9748:3;9733:19;;9726:35;9792:3;9777:19;;9770:35;9842:16;;;9836:3;9821:19;;9814:45;9327:3;9312:19;12506:37:0;8912:953:1;32309:238:0;;;;;;;;;;-1:-1:-1;32309:238:0;;;;;:::i;:::-;;:::i;19249:105::-;;;;;;;;;;-1:-1:-1;19249:105:0;;;;;:::i;:::-;;:::i;20186:125::-;;;;;;;;;;-1:-1:-1;20186:125:0;;;;;:::i;:::-;;:::i;13240:27::-;;;;;;;;;;-1:-1:-1;13240:27:0;;;;;;;;19360:118;;;;;;;;;;-1:-1:-1;19360:118:0;;;;;:::i;:::-;;:::i;21674:172::-;;;;;;;;;;;;;:::i;19607:97::-;;;;;;;;;;-1:-1:-1;19607:97:0;;;;;:::i;:::-;;:::i;12309:28::-;;;;;;;;;;-1:-1:-1;12309:28:0;;;;-1:-1:-1;;;;;12309:28:0;;;13435:24;;;;;;;;;;;;;;;;13204:29;;;;;;;;;;-1:-1:-1;13204:29:0;;;;;:::i;:::-;;:::i;19970:102::-;;;;;;;;;;-1:-1:-1;19970:102:0;;;;;:::i;:::-;;:::i;20317:174::-;;;;;;;;;;-1:-1:-1;20317:174:0;;;;;:::i;:::-;;:::i;23675:216::-;;;;;;;;;;;;;:::i;20653:129::-;;;;;;;;;;-1:-1:-1;20653:129:0;;;;;:::i;:::-;;:::i;37396:1360::-;;;;;;;;;;-1:-1:-1;37396:1360:0;;;;;:::i;:::-;;:::i;13337:30::-;;;;;;;;;;;;;;;;12642:42;;;;;;;;;;-1:-1:-1;12642:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12642:42:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10606:15:1;;;10588:34;;10658:15;;;;10653:2;10638:18;;10631:43;10690:18;;;10683:34;;;;10748:2;10733:18;;10726:34;10791:3;10776:19;;10769:35;10537:3;10522:19;12642:42:0;10291:519:1;13466:45:0;;;;;;;;;;;;-1:-1:-1;;13466:45:0;;20788:113;;;;;;;;;;-1:-1:-1;20788:113:0;;;;;:::i;:::-;;:::i;13306:26::-;;;;;;;;;;;;;;;;13272:29;;;;;;;;;;;;;;;;12915:35;;;;;;;;;;;;;;;;32877:368;;;;;;;;;;-1:-1:-1;32877:368:0;;;;;:::i;:::-;;:::i;2856:192::-;;;;;;;;;;-1:-1:-1;2856:192:0;;;;;:::i;:::-;;:::i;19710:94::-;;;;;;;;;;-1:-1:-1;19710:94:0;;;;;:::i;:::-;;:::i;18936:188::-;;;;;;;;;;-1:-1:-1;18936:188:0;;;;;:::i;:::-;;:::i;31438:296::-;-1:-1:-1;;;;;31562:12:0;;;31500:16;31562:12;;;:5;:12;;;;;;;;31542:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31607:15;;;:8;:15;;;;;31581:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31676:14;;31662:11;;31500:16;;;;31542:32;;31581:41;;31676:14;;31642:31;;;:::i;:::-;:48;;;;:::i;:::-;31631:59;;31707:5;:13;;;31697:23;;31535:199;;31438:296;;;:::o;20497:150::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;;;;;;;;;20610:2:::1;20595:11;:17;;20567:46;;;::::0;::::1;;20620:7;:21:::0;20497:150::o;14674:1421::-;495:13;;;;;;;;:30;;-1:-1:-1;513:12:0;;;;512:13;495:30;487:89;;;;-1:-1:-1;;;487:89:0;;;;;;;:::i;:::-;589:19;612:13;;;;;;611:14;636:101;;;;671:13;:20;;-1:-1:-1;;706:19:0;;;;;636:101;14838:16:::1;:14;:16::i;:::-;14877:1;14863:11;:15:::0;;;14908:8:::1;14885:20;:31:::0;15030:9:::1;15013:14;:26:::0;15102:4:::1;15085:14;:21:::0;;;15113:13:::1;:20:::0;-1:-1:-1;15142:10:0::1;:14:::0;15176:2:::1;15163:9;:15:::0;-1:-1:-1;15185:9:0::1;:15:::0;;;15207:19:::1;:24:::0;;;-1:-1:-1;15280:11:0::1;:15:::0;15302:7:::1;:12:::0;15323:9:::1;:36:::0;;-1:-1:-1;;;;;15323:36:0;;::::1;-1:-1:-1::0;;;;;;15323:36:0;;::::1;;::::0;;;15366:10:::1;:39:::0;;;;::::1;::::0;;::::1;;::::0;;15412:9:::1;:37:::0;;;;::::1;::::0;;::::1;;::::0;;15480:16:::1;:32:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;15519:9:::1;:37:::0;;;::::1;::::0;;::::1;::::0;;15586:13:::1;:23:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;15643:12:::1;:22:::0;;;;::::1;::::0;;-1:-1:-1;15643:22:0;;;15661:3:::1;15643:22:::0;;;::::1;::::0;15672;;;;::::1;::::0;;15690:3:::1;15672:22:::0;;::::1;::::0;15701;;;;::::1;::::0;;15719:3:::1;15701:22:::0;;::::1;::::0;15730;;;;::::1;::::0;;15748:3:::1;15730:22:::0;;::::1;::::0;15759:23;;;;::::1;::::0;;15777:4:::1;15759:23:::0;;::::1;::::0;15789;;;;::::1;::::0;;15807:4:::1;15789:23:::0;;::::1;::::0;15819;;;;::::1;::::0;;15837:4:::1;15819:23:::0;;::::1;::::0;15849;;;;::::1;::::0;;15867:4:::1;15849:23:::0;;::::1;::::0;15879;;;;::::1;::::0;;15897:4:::1;15879:23:::0;;::::1;::::0;15909:24;;;;::::1;::::0;;15927:5:::1;15909:24:::0;;::::1;::::0;15940;;;;::::1;::::0;;15958:5:::1;15940:24:::0;;::::1;::::0;15971;;;;::::1;::::0;;15989:5:::1;15971:24:::0;;::::1;::::0;16002;;;;::::1;::::0;;16020:5:::1;16002:24:::0;;::::1;::::0;16033;;;;::::1;::::0;;16051:5:::1;16033:24:::0;;::::1;::::0;16064:25;;;;::::1;::::0;;;16082:6:::1;16064:25:::0;::::1;::::0;763:68;;;;814:5;798:21;;-1:-1:-1;;798:21:0;;;763:68;476:362;14674:1421;;;;;:::o;33307:218::-;33368:7;33385:21;33408:19;33429:18;33449:27;33480:15;33489:5;33480:8;:15::i;:::-;-1:-1:-1;33384:111:0;33307:218;-1:-1:-1;;;;;;;;33307:218:0:o;18740:192::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;18834:9:::1;18830:97;18846:16;:23;18844:1;:25;18830:97;;;18914:5;18883:9;:30;18893:16;18910:1;18893:19;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18883:30:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18883:30:0;:36;;-1:-1:-1;;18883:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18870:3;::::1;::::0;::::1;:::i;:::-;;;;18830:97;;;;18740:192:::0;:::o;16101:71::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;16148:8:::1;:16:::0;;-1:-1:-1;;16148:16:0::1;::::0;;16101:71::o;18277:459::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;18343:20:::1;18365:24:::0;18391:23:::1;18416:18:::0;18436::::1;18456:23:::0;18491:13:::1;;;;;;;;;-1:-1:-1::0;;;;;18491:13:0::1;-1:-1:-1::0;;;;;18483:35:0::1;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18527:11;:26:::0;;;;18560:15:::1;:34:::0;;;;18601:14:::1;:32:::0;;;;18640:9:::1;:22:::0;18669:9:::1;:22:::0;18698:14:::1;:32:::0;-1:-1:-1;;;;;;18277:459:0:o;31188:177::-;31247:4;31263:16;31281:15;31300:23;31317:5;31300:16;:23::i;:::-;-1:-1:-1;31339:18:0;31188:177;-1:-1:-1;;;;31188:177:0:o;21921:1442::-;16636:10;16626:21;;;;:9;:21;;;;;;;;16625:22;16626:21;16625:28;16617:58;;;;-1:-1:-1;;;16617:58:0;;;;;;;:::i;:::-;16299:8:::1;::::0;::::1;;16298:9;16290:44;;;;-1:-1:-1::0;;;16290:44:0::1;;;;;;;:::i;:::-;22096:9:::2;::::0;:48:::2;::::0;-1:-1:-1;;;22096:48:0;;22030:10:::2;22096:48;::::0;::::2;13497:51:1::0;;;13564:18;;;13557:34;;;22030:10:0;22014:13:::2;::::0;;;-1:-1:-1;;;;;22096:9:0::2;::::0;:32:::2;::::0;13470:18:1;;22096:48:0::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22049:95:::0;;-1:-1:-1;22049:95:0;-1:-1:-1;22049:95:0;22286:9:::2;:7;:9::i;:::-;22323:13;;22312:7;:24;;22304:52;;;::::0;-1:-1:-1;;;22304:52:0;;14054:2:1;22304:52:0::2;::::0;::::2;14036:21:1::0;14093:2;14073:18;;;14066:30;-1:-1:-1;;;14112:18:1;;;14105:45;14167:18;;22304:52:0::2;13852:339:1::0;22304:52:0::2;-1:-1:-1::0;;;;;22426:12:0;::::2;;::::0;;;:5:::2;:12;::::0;;;;:21:::2;;::::0;:26;;22422:109:::2;;22481:14;;22470:7;:25;;22462:61;;;::::0;-1:-1:-1;;;22462:61:0;;14398:2:1;22462:61:0::2;::::0;::::2;14380:21:1::0;14437:2;14417:18;;;14410:30;14476:25;14456:18;;;14449:53;14519:18;;22462:61:0::2;14196:347:1::0;22462:61:0::2;22539:26;22550:5;22557:7;22539:10;:26::i;:::-;22660:13;22670:3;22660:7:::0;:13:::2;:::i;:::-;22635:22;22651:5;22635:15;:22::i;:::-;:38;22631:247;;;22683:19;22705:20;22712:5;22719;22705:6;:20::i;:::-;22683:42;;22734:17;22754:56;22806:3;22754:47;22770:30;22783:3;22788:11;;22770:12;:30::i;:::-;22754:11:::0;;:15:::2;:47::i;:::-;:51:::0;::::2;:56::i;:::-;22734:76:::0;-1:-1:-1;22844:26:0::2;22734:76:::0;22844:26;::::2;:::i;:::-;;;22674:204;;22631:247;22939:9;::::0;22996:16:::2;::::0;22939:101:::2;::::0;-1:-1:-1;;;22939:101:0;;-1:-1:-1;;;;;15028:15:1;;;22939:101:0::2;::::0;::::2;15010:34:1::0;22996:16:0;;::::2;15060:18:1::0;;;15053:43;15112:18;;;15105:34;;;22939:9:0;::::2;::::0;:22:::2;::::0;14945:18:1;;22939:101:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22923:161;;;::::0;-1:-1:-1;;;22923:161:0;;15634:2:1;22923:161:0::2;::::0;::::2;15616:21:1::0;15673:2;15653:18;;;15646:30;15712:28;15692:18;;;15685:56;15758:18;;22923:161:0::2;15432:350:1::0;22923:161:0::2;23176:30;23185:5;23192:13;23176:8;:30::i;:::-;-1:-1:-1::0;;;;;23220:117:0;::::2;23239:12;::::0;;;:5:::2;:12;::::0;;;;;;;;:22:::2;::::0;::::2;::::0;23263:21:::2;::::0;::::2;::::0;23286:20:::2;::::0;::::2;::::0;23308:28:::2;::::0;;::::2;::::0;23220:117;;7197:25:1;;;7238:18;;;7231:34;7281:18;;;7274:34;7339:2;7324:18;;7317:34;23220:117:0::2;::::0;7184:3:1;7169:19;23220:117:0::2;;;;;;;23344:9;:11:::0;;;:9:::2;:11;::::0;::::2;:::i;:::-;;;;;;22005:1358;;;;21921:1442:::0;;:::o;19484:117::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;19562:14:::1;:33:::0;19484:117::o;23418:222::-;16636:10;16626:21;;;;:9;:21;;;;;;;;16625:22;16626:21;16625:28;16617:58;;;;-1:-1:-1;;;16617:58:0;;;;;;;:::i;:::-;16299:8:::1;::::0;::::1;;16298:9;16290:44;;;;-1:-1:-1::0;;;16290:44:0::1;;;;;;;:::i;:::-;23564:9:::2;:7;:9::i;:::-;23598:10;23617:17;23598:10:::0;23617::::2;:17::i;:::-;23468:172;23418:222::o:0;20907:265::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;21033:9:::1;;21007:15;:22;:35;20999:44;;;::::0;::::1;;21050:19;21057:12;;21050:19;:::i;:::-;21080:7;21076:91;21097:9;;21093:1;:13;;;21076:91;;;21122:12;21140:15;21156:1;21140:18;;;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;21122:37;;::::1;::::0;::::1;::::0;;-1:-1:-1;21122:37:0;;;;;;;::::1;::::0;21108:3;::::1;::::0;::::1;:::i;:::-;;;;21076:91;;33754:1137:::0;33807:14;33823:18;33843;33863:26;33993:54;34032:14;;33993:34;34005:5;:12;34011:5;-1:-1:-1;;;;;34005:12:0;-1:-1:-1;;;;;34005:12:0;;;;;;;;;;;;:21;;;33993:11;:34::i;:::-;:38;;:54::i;:::-;33980:67;;34136:12;34151:24;34169:5;34151:17;:24::i;:::-;-1:-1:-1;;;;;34247:12:0;;34182:13;34247:12;;;:5;:12;;;;;:20;;;34136:39;;-1:-1:-1;34182:13:0;34247:33;-1:-1:-1;34244:642:0;;;34385:70;34446:8;34385:56;34434:6;34385:44;34411:10;;34424:4;34411:17;;;;:::i;:::-;-1:-1:-1;;;;;34385:12:0;;;;;;:5;:12;;;;;:21;;;;:25;:44::i;:70::-;-1:-1:-1;;;;;34563:12:0;;;;;;:5;:12;;;;;:25;;;34377:78;;-1:-1:-1;34539:50:0;;:15;;:23;:50::i;:::-;34531:58;;:5;:58;:::i;:::-;-1:-1:-1;;;;;34656:12:0;;;;;;:5;:12;;;;;:20;;;34522:67;;-1:-1:-1;34688:10:0;;34656:29;;34522:67;;34656:29;:::i;:::-;:42;34653:117;;;-1:-1:-1;;;;;34739:12:0;;;;;;:5;:12;;;;;:20;;;34720:40;;:10;;:18;:40::i;:::-;34711:49;;34653:117;34817:3;34801:13;34810:4;34801:6;:13;:::i;:::-;:19;;;;:::i;:::-;34780:40;-1:-1:-1;34844:34:0;:6;34780:40;34844:14;:34::i;:::-;34831:47;;34244:642;33891:1000;;33754:1137;;;;;:::o;19855:109::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;19931:10:::1;:27:::0;19855:109::o;31976:253::-;32034:5;;;32071:131;32093:9;;32089:1;:13;;;32071:131;;;32152:12;32165:1;32152:15;;;;;;;;;;:::i;:::-;;;;;;;;;;;32122:10;;:27;;-1:-1:-1;;;32122:27:0;;-1:-1:-1;;;;;3562:32:1;;;32122:27:0;;;3544:51:1;32122:10:0;;;;:20;;3517:18:1;;32122:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;32169:5;32118:56;32183:11;32193:1;32183:11;;:::i;:::-;;-1:-1:-1;32104:3:0;;;;:::i;:::-;;;;32071:131;;;-1:-1:-1;32217:6:0;31976:253;-1:-1:-1;;31976:253:0:o;2607:94::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;2672:21:::1;2690:1;2672:9;:21::i;:::-;2607:94::o:0;16694:1579::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;16783:6:::1;16778:1490;16795:16:::0;;::::1;16778:1490;;;16835:5;:15;16841:5;;16847:1;16841:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16835:15:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16835:15:0;:24:::1;;::::0;:29;16827:68:::1;;;::::0;-1:-1:-1;;;16827:68:0;;16740:2:1;16827:68:0::1;::::0;::::1;16722:21:1::0;16779:2;16759:18;;;16752:30;16818:28;16798:18;;;16791:56;16864:18;;16827:68:0::1;16538:350:1::0;16827:68:0::1;16940:13;::::0;16904:25:::1;::::0;-1:-1:-1;;;;;16940:13:0::1;16932:28;16961:5:::0;;16967:1;16961:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16932:38;::::0;-1:-1:-1;;;;;;16932:38:0::1;::::0;;;;;;-1:-1:-1;;;;;3562:32:1;;;16932:38:0::1;::::0;::::1;3544:51:1::0;3517:18;;16932:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17004:12:::0;;16904:66;;-1:-1:-1;16979:5:0::1;17004:12;16985:5:::0;;16991:1;16985:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16979:15:0::1;-1:-1:-1::0;;;;;16979:15:0::1;;;;;;;;;;;;:22;;;:37;;;;;-1:-1:-1::0;;;;;16979:37:0::1;;;;;-1:-1:-1::0;;;;;16979:37:0::1;;;;;;17053:5;:15;;;17025:5;:15;17031:5;;17037:1;17031:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17025:15:0::1;-1:-1:-1::0;;;;;17025:15:0::1;;;;;;;;;;;;:25;;:43;;;;17111:5;:21;;;17077:5;:15;17083:5;;17089:1;17083:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17077:15:0::1;-1:-1:-1::0;;;;;17077:15:0::1;;;;;;;;;;;;:31;;:55;;;;17172:5;:18;;;17141:5;:15;17147:5;;17153:1;17147:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17141:15:0::1;-1:-1:-1::0;;;;;17141:15:0::1;;;;;;;;;;;;:28;;:49;;;;17229:5;:17;;;17199:5;:15;17205:5;;17211:1;17205:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17199:15:0::1;-1:-1:-1::0;;;;;17199:15:0::1;;;;;;;;;;;;:27;;:47;;;;17282:5;:14;;;17255:5;:15;17261:5;;17267:1;17261:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17255:15:0::1;-1:-1:-1::0;;;;;17255:15:0::1;;;;;;;;;;;;:24;;:41;;;;17336:5;:18;;;17305:5;:15;17311:5;;17317:1;17311:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17305:15:0::1;-1:-1:-1::0;;;;;17305:15:0::1;;;;;;;;;;;;:28;;:49;;;;17389:5;:13;;;17363:5;:15;17369:5;;17375:1;17369:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17363:15:0::1;-1:-1:-1::0;;;;;17363:15:0::1;;;;;;;;;;;;:23;;:39;;;;17435:5;:11;;;17411:5;:15;17417:5;;17423:1;17417:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17411:15:0::1;-1:-1:-1::0;;;;;17411:15:0::1;;;;;;;;;;;;:21;;:35;;;;17487:5;:19;;;17455:5;:15;17461:5;;17467:1;17461:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17455:15:0::1;-1:-1:-1::0;;;;;17455:15:0::1;;;;;;;;;;;;:29;;:51;;;;17549:5;:21;;;17515:5;:15;17521:5;;17527:1;17521:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17515:15:0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17515:15:0;;;:31:::1;;:55:::0;;-1:-1:-1;;;;;;17515:55:0::1;::::0;;::::1;::::0;;;::::1;::::0;;;17624:13:::1;::::0;::::1;17616:31;17648:5:::0;;17654:1;17648:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;17616:41;::::0;-1:-1:-1;;;;;;17616:41:0::1;::::0;;;;;;-1:-1:-1;;;;;3562:32:1;;;17616:41:0::1;::::0;::::1;3544:51:1::0;3517:18;;17616:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17696:18:::0;;17581:76;;-1:-1:-1;17666:8:0::1;17696:18;17675:5:::0;;17681:1;17675:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17666:18:0::1;-1:-1:-1::0;;;;;17666:18:0::1;;;;;;;;;;;;:27;;:48;;;;17762:9;:27;;;17723:8;:18;17732:5;;17738:1;17732:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17723:18:0::1;-1:-1:-1::0;;;;;17723:18:0::1;;;;;;;;;;;;:36;;:66;;;;17832:9;:22;;;17798:8;:18;17807:5;;17813:1;17807:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17798:18:0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17798:18:0;;;:31:::1;;:56:::0;;;;17909:13:::1;::::0;::::1;17901:30;17932:5:::0;;17938:1;17932:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;17901:40;::::0;-1:-1:-1;;;;;;17901:40:0::1;::::0;;;;;;-1:-1:-1;;;;;3562:32:1;;;17901:40:0::1;::::0;::::1;3544:51:1::0;3517:18;;17901:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17978:16:::0;;17867:74;;-1:-1:-1;17950:7:0::1;17978:16;17958:5:::0;;17964:1;17958:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17950:17:0::1;-1:-1:-1::0;;;;;17950:17:0::1;;;;;;;;;;;;:25;;;:44;;;;;-1:-1:-1::0;;;;;17950:44:0::1;;;;;-1:-1:-1::0;;;;;17950:44:0::1;;;;;;18035:8;:20;;;18003:7;:17;18011:5;;18017:1;18011:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18003:17:0::1;-1:-1:-1::0;;;;;18003:17:0::1;;;;;;;;;;;;:29;;;:52;;;;;-1:-1:-1::0;;;;;18003:52:0::1;;;;;-1:-1:-1::0;;;;;18003:52:0::1;;;;;;18099:8;:23;;;18064:7;:17;18072:5;;18078:1;18072:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18064:17:0::1;-1:-1:-1::0;;;;;18064:17:0::1;;;;;;;;;;;;:32;;:58;;;;18164:8;:21;;;18131:7;:17;18139:5;;18145:1;18139:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18131:17:0::1;-1:-1:-1::0;;;;;18131:17:0::1;;;;;;;;;;;;:30;;:54;;;;18233:8;:27;;;18194:7;:17;18202:5;;18208:1;18202:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18194:17:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18194:17:0;:36:::1;;:66:::0;-1:-1:-1;16813:3:0;;-1:-1:-1;16813:3:0::1;::::0;-1:-1:-1;16813:3:0;::::1;:::i;:::-;;;;16778:1490;;;;16694:1579:::0;;:::o;19128:115::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;19205:14:::1;:32:::0;19128:115::o;16180:68::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;16225:8:::1;:15:::0;;-1:-1:-1;;16225:15:0::1;16236:4;16225:15;::::0;;16180:68::o;33570:106::-;33628:7;33667:3;33651:13;:7;33661:3;33651:13;:::i;:::-;:19;;;;:::i;:::-;33644:26;33570:106;-1:-1:-1;;33570:106:0:o;36167:1121::-;16636:10;16626:21;;;;:9;:21;;;;;;;;16625:22;16626:21;16625:28;16617:58;;;;-1:-1:-1;;;16617:58:0;;;;;;;:::i;:::-;16299:8:::1;::::0;::::1;;16298:9;16290:44;;;;-1:-1:-1::0;;;16290:44:0::1;;;;;;;:::i;:::-;36338:9:::2;::::0;:48:::2;::::0;-1:-1:-1;;;36338:48:0;;36272:10:::2;36338:48;::::0;::::2;13497:51:1::0;;;13564:18;;;13557:34;;;36272:10:0;36256:13:::2;::::0;;;-1:-1:-1;;;;;36338:9:0::2;::::0;:32:::2;::::0;13470:18:1;;36338:48:0::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36466:9;::::0;36523:16:::2;::::0;36466:101:::2;::::0;-1:-1:-1;;;36466:101:0;;-1:-1:-1;;;;;15028:15:1;;;36466:101:0::2;::::0;::::2;15010:34:1::0;36523:16:0;;::::2;15060:18:1::0;;;15053:43;15112:18;;;15105:34;;;36291:95:0;;-1:-1:-1;36291:95:0;;-1:-1:-1;36466:9:0::2;::::0;:22:::2;::::0;14945:18:1;;36466:101:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36450:205;;;;-1:-1:-1::0;;;36450:205:0::2;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36729:10:0;;::::2;36758:1;36729:10:::0;;;:5:::2;:10;::::0;;;;:17;::::2;36721:57;;;::::0;-1:-1:-1;;;36721:57:0;;20093:2:1;36721:57:0::2;::::0;::::2;20075:21:1::0;20132:2;20112:18;;;20105:30;-1:-1:-1;;;20151:18:1;;;20144:43;20204:18;;36721:57:0::2;19891:337:1::0;36721:57:0::2;-1:-1:-1::0;;;;;36828:10:0;::::2;;::::0;;;:5:::2;:10;::::0;;;;:19:::2;;:38:::0;;36851:15;;36828:10;:38:::2;::::0;36851:15;;36828:38:::2;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;36895:15:0;::::2;;::::0;;;:8:::2;:15;::::0;;;;:43;;36923:15;;36895;:43:::2;::::0;36923:15;;36895:43:::2;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;36945:15:0;;::::2;;::::0;;;:8:::2;:15;::::0;;;;;36976::::2;36945:28;::::0;;::::2;:46:::0;36998:13;;::::2;::::0;;;;;:31:::2;;:50:::0;;37033:15;;36945;36998:50:::2;::::0;37033:15;;36998:50:::2;:::i;:::-;;;;;;;;37110:15;37092:14;;:33;;;;;;;:::i;:::-;;;;;;;;37145:1;37132:9;;:14;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;37182:56:0::2;::::0;;576:25:1;;;37222:15:0::2;632:2:1::0;617:18;;610:34;-1:-1:-1;;;;;37182:56:0;;::::2;::::0;;;::::2;::::0;::::2;::::0;549:18:1;37182:56:0::2;;;;;;;37261:3;-1:-1:-1::0;;;;;37250:32:0::2;-1:-1:-1::0;;;;;;;;;;;37266:15:0::2;37250:32;;;;1804:25:1::0;;1792:2;1777:18;;1658:177;37250:32:0::2;;;;;;;;36247:1041;;;36167:1121:::0;;:::o;20078:102::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;20150:9:::1;:24:::0;20078:102::o;21178:176::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;21256:9:::1;::::0;:48:::1;::::0;-1:-1:-1;;;21256:48:0;;21283:10:::1;21256:48;::::0;::::1;13497:51:1::0;13564:18;;;13557:34;;;-1:-1:-1;;;;;21256:9:0;;::::1;::::0;:18:::1;::::0;13470::1;;21256:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21248:100;;;::::0;-1:-1:-1;;;21248:100:0;;15634:2:1;21248:100:0::1;::::0;::::1;15616:21:1::0;15673:2;15653:18;;;15646:30;15712:28;15692:18;;;15685:56;15758:18;;21248:100:0::1;15432:350:1::0;31796:131:0;31872:4;31915:6;31892:29;;:19;31905:5;31892:12;:19::i;:::-;:29;;;;;31796:131;-1:-1:-1;;;31796:131:0:o;32309:238::-;32433:20;;-1:-1:-1;;;;;32407:12:0;;32372:7;32407:12;;;:5;:12;;;;;:21;;;32372:7;;;;32407:47;;:25;:47::i;:::-;32388:66;;32472:43;32485:8;32495:19;;32472:12;:43::i;:::-;32461:54;-1:-1:-1;32529:12:0;32461:54;32540:1;32529:12;:::i;:::-;32522:19;32309:238;-1:-1:-1;;;32309:238:0:o;19249:105::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;19321:11:::1;:27:::0;19249:105::o;20186:125::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;20270:14:::1;:35:::0;20186:125::o;19360:118::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;19438:15:::1;:34:::0;19360:118::o;21674:172::-;21723:10;21707:13;21740:14;;;:7;:14;;;;;;;21770:15;21740:27;;;;:45;;;21797:43;;21723:10;;21797:43;;;;1804:25:1;;1792:2;1777:18;;1658:177;21797:43:0;;;;;;;;21700:146;21674:172::o;19607:97::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;19675:9:::1;:23:::0;19607:97::o;13204:29::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13204:29:0;:::o;19970:102::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;20042:9:::1;:24:::0;19970:102::o;20317:174::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;20446:2:::1;20427:15;:21;;20395:54;;;::::0;::::1;;20456:11;:29:::0;20317:174::o;23675:216::-;16636:10;16626:21;;;;:9;:21;;;;;;;;16625:22;16626:21;16625:28;16617:58;;;;-1:-1:-1;;;16617:58:0;;;;;;;:::i;:::-;16299:8:::1;::::0;::::1;;16298:9;16290:44;;;;-1:-1:-1::0;;;16290:44:0::1;;;;;;;:::i;:::-;23820:9:::2;:7;:9::i;:::-;23854:10;23873:12;23854:10:::0;23873:5:::2;:12::i;20653:129::-:0;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;20738:20:::1;:38:::0;20653:129::o;37396:1360::-;16636:10;16626:21;;;;:9;:21;;;;;;;;16625:22;16626:21;16625:28;16617:58;;;;-1:-1:-1;;;16617:58:0;;;;;;;:::i;:::-;16299:8:::1;::::0;::::1;;16298:9;16290:44;;;;-1:-1:-1::0;;;16290:44:0::1;;;;;;;:::i;:::-;37517:10:::2;37501:13;::::0;;;37616:918:::2;37640:3;:10;37636:1;:14;37616:918;;;37751:9;::::0;37789:16:::2;::::0;37751:65:::2;::::0;-1:-1:-1;;;37751:65:0;;-1:-1:-1;;;;;15028:15:1;;;37751:65:0::2;::::0;::::2;15010:34:1::0;37789:16:0;;::::2;15060:18:1::0;;;15053:43;15112:18;;;15105:34;;;37751:9:0;::::2;::::0;:22:::2;::::0;14945:18:1;;37751:65:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37729:185;;;;-1:-1:-1::0;;;37729:185:0::2;;;;;;;:::i;:::-;38024:1;-1:-1:-1::0;;;;;37992:34:0::2;:5;:13;37998:3;38002:1;37998:6;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;;;-1:-1:-1;;;;;37992:13:0;;::::2;::::0;;;;::::2;::::0;;;;;;-1:-1:-1;37992:13:0;:20;::::2;:34:::0;37984:60:::2;;;::::0;-1:-1:-1;;;37984:60:0;;20093:2:1;37984:60:0::2;::::0;::::2;20075:21:1::0;20132:2;20112:18;;;20105:30;-1:-1:-1;;;20151:18:1;;;20144:43;20204:18;;37984:60:0::2;19891:337:1::0;37984:60:0::2;38086:9;::::0;:85:::2;::::0;-1:-1:-1;;;38086:85:0;;-1:-1:-1;;;;;13515:32:1;;;38086:85:0::2;::::0;::::2;13497:51:1::0;13564:18;;;13557:34;;;38086:9:0;;::::2;::::0;:32:::2;::::0;13470:18:1;;38086:85:0::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38055:116;;;;;;;;38253:15;38227:5;:13;38233:3;38237:1;38233:6;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;38227:13:0::2;-1:-1:-1::0;;;;;38227:13:0::2;;;;;;;;;;;;:22;;;:41;;;;;;;:::i;:::-;;;;;;;;38317:15;38279:8;:16;38288:3;38292:1;38288:6;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;38279:16:0::2;-1:-1:-1::0;;;;;38279:16:0::2;;;;;;;;;;;;:34;;;:53;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;38343:30:0::2;::::0;-1:-1:-1;38358:15:0;38343:30;::::2;:::i;:::-;;;38434:3;38438:1;38434:6;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;38416:59:0::2;38427:5;-1:-1:-1::0;;;;;38416:59:0::2;;38442:15;38459;38416:59;;;;;;576:25:1::0;;;632:2;617:18;;610:34;564:2;549:18;;402:248;38416:59:0::2;;;;;;;;38502:3;38506:1;38502:6;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;38491:35:0::2;-1:-1:-1::0;;;;;;;;;;;38510:15:0::2;38491:35;;;;1804:25:1::0;;1792:2;1777:18;;1658:177;38491:35:0::2;;;;;;;;37652:3:::0;::::2;::::0;::::2;:::i;:::-;;;;37616:918;;;-1:-1:-1::0;;;;;;38560:15:0;::::2;;::::0;;;:8:::2;:15;::::0;;;;:39;;38588:11;;38560:15;:39:::2;::::0;38588:11;;38560:39:::2;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;38606:15:0;::::2;;::::0;;;:8:::2;:15;::::0;;;;38637::::2;38606:28;::::0;;::::2;:46:::0;38694:14:::2;:33:::0;;38712:15;;38606;38694:33:::2;::::0;38712:15;;38694:33:::2;:::i;:::-;;;;;;;;38747:1;38734:9;;:14;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;;37396:1360:0:o;20788:113::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;20865:14:::1;:30:::0;20788:113::o;32877:368::-;-1:-1:-1;;;;;33045:14:0;;32935:18;33045:14;;;:7;:14;;;;;:29;;;;32935:18;;33101:35;:15;33045:29;33101:23;:35::i;:::-;-1:-1:-1;;;;;33154:14:0;;;;;;:7;:14;;;;;:27;;;33081:55;;-1:-1:-1;33154:27:0;-1:-1:-1;33206:33:0;:15;33154:27;33206:23;:33::i;:::-;33188:51;;32877:368;;;;;:::o;2856:192::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2945:22:0;::::1;2937:73;;;::::0;-1:-1:-1;;;2937:73:0;;20435:2:1;2937:73:0::1;::::0;::::1;20417:21:1::0;20474:2;20454:18;;;20447:30;20513:34;20493:18;;;20486:62;-1:-1:-1;;;20564:18:1;;;20557:36;20610:19;;2937:73:0::1;20233:402:1::0;2937:73:0::1;3021:19;3031:8;3021:9;:19::i;19710:94::-:0;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;19776:9:::1;:22:::0;19710:94::o;18936:188::-;2029:6;;-1:-1:-1;;;;;2029:6:0;1159:10;2176:23;2168:68;;;;-1:-1:-1;;;2168:68:0;;;;;;;:::i;:::-;19025:9:::1;19021:98;19037:16;:23;19035:1;:25;19021:98;;;19107:4;19076:9;:30;19086:16;19103:1;19086:19;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;19076:30:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;19076:30:0;:35;;-1:-1:-1;;19076:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19061:3;::::1;::::0;::::1;:::i;:::-;;;;19021:98;;1639:129:::0;495:13;;;;;;;;:30;;-1:-1:-1;513:12:0;;;;512:13;495:30;487:89;;;;-1:-1:-1;;;487:89:0;;;;;;;:::i;:::-;589:19;612:13;;;;;;611:14;636:101;;;;671:13;:20;;-1:-1:-1;;706:19:0;;;;;636:101;1697:26:::1;:24;:26::i;:::-;1734;:24;:26::i;:::-;767:14:::0;763:68;;;814:5;798:21;;-1:-1:-1;;798:21:0;;;476:362;1639:129::o;24050:774::-;-1:-1:-1;;;;;24353:12:0;;;24384:1;24353:12;;;:5;:12;;;;;:19;;:33;:53;;;;;24401:5;-1:-1:-1;;;;;24390:16:0;:7;-1:-1:-1;;;;;24390:16:0;;;24353:53;:73;;;;-1:-1:-1;2029:6:0;;-1:-1:-1;;;;;24410:16:0;;;2029:6;;24410:16;;24353:73;:133;;;;-1:-1:-1;;;;;;24431:14:0;;24461:1;24431:14;;;:5;:14;;;;;:27;;;:31;;;:53;;-1:-1:-1;2029:6:0;;-1:-1:-1;;;;;24466:18:0;;;2029:6;;24466:18;24431:53;24350:469;;;-1:-1:-1;;;;;24497:12:0;;;;;;;:5;:12;;;;;;:29;;-1:-1:-1;;;;;;24497:29:0;;;;;;;;;24535:14;;;;;;-1:-1:-1;24535:24:0;:26;;;;;;:::i;:::-;;;;;;24591:7;-1:-1:-1;;;;;24577:22:0;24584:5;-1:-1:-1;;;;;24577:22:0;;;;;;;;;;;24610:11;:13;;;:11;:13;;;:::i;:::-;;;;;;24638:7;24634:178;24655:9;;24651:1;:13;;;24634:178;;;-1:-1:-1;;;;;24685:21:0;;24682:31;24708:5;24682:31;-1:-1:-1;;;;;24726:14:0;;;;;;:5;:14;;;;;:30;;:32;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;24781:14:0;;;;;;;:5;:14;;;;;:21;;;;;24666:3;;;;:::i;:::-;;;;24634:178;;29861:1204;29929:7;29946:21;29969:19;29990:18;30010:27;30041:15;30050:5;30041:8;:15::i;:::-;-1:-1:-1;;;;;30071:12:0;;;;;;:5;:12;;;;;:20;;;29945:111;;-1:-1:-1;29945:111:0;;-1:-1:-1;29945:111:0;-1:-1:-1;29945:111:0;-1:-1:-1;30071:34:0;-1:-1:-1;30063:59:0;;;;-1:-1:-1;;;30063:59:0;;20842:2:1;30063:59:0;;;20824:21:1;20881:2;20861:18;;;20854:30;-1:-1:-1;;;20900:18:1;;;20893:42;20952:18;;30063:59:0;20640:336:1;30063:59:0;30157:14;;30154:546;;-1:-1:-1;;;;;30240:12:0;;;;;;:5;:12;;;;;:20;;;30276:11;;30240:33;;30263:10;;30240:33;:::i;:::-;:47;30237:127;;;-1:-1:-1;;;;;30333:12:0;;;;;;:5;:12;;;;;:20;;;30313:41;;:11;;:19;:41::i;:::-;30300:54;;30237:127;-1:-1:-1;;;;;30374:12:0;;;;;;:5;:12;;;;;:20;;:37;;30398:13;;30374:12;:37;;30398:13;;30374:37;:::i;:::-;;;;-1:-1:-1;30472:12:0;;-1:-1:-1;30467:226:0;;30524:27;30554:55;30605:3;30554:46;30569:30;30582:3;30587:11;;30569:12;:30::i;:::-;30554:10;;:14;:46::i;:55::-;30524:85;;30645:38;30656:5;30663:19;30645:10;:38::i;:::-;30485:208;30467:226;30729:1;30716:10;:14;30708:38;;;;-1:-1:-1;;;30708:38:0;;21183:2:1;30708:38:0;;;21165:21:1;21222:2;21202:18;;;21195:30;-1:-1:-1;;;21241:18:1;;;21234:41;21292:18;;30708:38:0;20981:335:1;30708:38:0;30799:10;30781:14;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;30838:12:0;;;;;;:5;:12;;;;;;;30866:15;30838:25;;;;:43;30895:27;;;;;30911:10;1804:25:1;;1792:2;1777:18;;1658:177;30895:27:0;;;;;;;;-1:-1:-1;;;;;30934:12:0;;;;;;:5;:12;;;;;:20;;;:35;-1:-1:-1;30931:103:0;;-1:-1:-1;;;;;30985:41:0;;31005:12;;;;:5;:12;;;;;;;;;:20;;;30985:41;;1804:25:1;;;30985:41:0;;1777:18:1;30985:41:0;;;;;;;30931:103;-1:-1:-1;31049:10:0;29861:1204;-1:-1:-1;;;;;29861:1204:0:o;39064:113::-;39122:7;39150:1;39145;:6;;39138:14;;;;:::i;:::-;39166:5;39170:1;39166;:5;:::i;38783:174::-;38841:9;38863:1;38868;38863:6;38859:37;;-1:-1:-1;38887:1:0;38880:8;;38859:37;38906:5;38910:1;38906;:5;:::i;:::-;38902:9;-1:-1:-1;38934:1:0;38925:5;38929:1;38902:9;38925:5;:::i;:::-;:10;38918:18;;;;:::i;38966:92::-;39024:7;39047:5;39051:1;39047;:5;:::i;24848:1032::-;-1:-1:-1;;;;;24986:12:0;;;25017:1;24986:12;;;:5;:12;;;;;:19;;:33;;;:53;;-1:-1:-1;2029:6:0;;-1:-1:-1;;;;;25023:16:0;;;2029:6;;25023:16;24986:53;24978:75;;;;-1:-1:-1;;;24978:75:0;;21785:2:1;24978:75:0;;;21767:21:1;21824:1;21804:18;;;21797:29;-1:-1:-1;;;21842:18:1;;;21835:39;21891:18;;24978:75:0;21583:332:1;24978:75:0;-1:-1:-1;;;;;25075:12:0;;;;;;:5;:12;;;;;:21;;:32;;25100:7;;25075:12;:32;;25100:7;;25075:32;:::i;:::-;;;;-1:-1:-1;;;;;;;25114:12:0;;;;;;:5;:12;;;;;25142:15;25114:25;;;:43;25243:28;;:34;;-1:-1:-1;;;;;;25243:34:0;;;;;;;25366:15;:26;;25385:7;;25114:12;25366:26;;25385:7;;25366:26;:::i;:::-;;;;-1:-1:-1;;25420:26:0;;1804:25:1;;;-1:-1:-1;;;;;25420:26:0;;;-1:-1:-1;;;;;;;;;;;25420:26:0;1792:2:1;1777:18;25420:26:0;;;;;;;-1:-1:-1;;;;;25520:12:0;;;25506:11;25520:12;;;:5;:12;;;;;:19;;25549:17;;;;;:39;;;25570:18;25584:3;25570:13;:18::i;:::-;25549:67;;;;;25592:24;25609:3;25614:1;25592:16;:24::i;:::-;25546:329;;;25627:14;25644:12;25654:2;25644:7;:12;:::i;:::-;-1:-1:-1;;;;;25711:10:0;;;;;;:5;:10;;;;;:23;;:33;;25627:29;;-1:-1:-1;25627:29:0;;25711:23;;:10;:33;;25627:29;;25711:33;:::i;:::-;;;;-1:-1:-1;;;;;;;25753:10:0;;;;;;:5;:10;;;;;:19;;:29;;25776:6;;25753:10;:29;;25776:6;;25753:29;:::i;:::-;;;;-1:-1:-1;;25798:23:0;;1804:25:1;;;-1:-1:-1;;;;;25798:23:0;;;-1:-1:-1;;;;;;;;;;;25798:23:0;1792:2:1;1777:18;25798:23:0;;;;;;;25853:5;-1:-1:-1;;;;;25835:32:0;25848:3;-1:-1:-1;;;;;25835:32:0;;25860:6;25835:32;;;;1804:25:1;;1792:2;1777:18;;1658:177;25835:32:0;;;;;;;;25618:257;24907:973;24848:1032;;:::o;29103:718::-;29156:17;29176:19;29183:5;29190:4;29176:6;:19::i;:::-;29156:39;;29495:22;29520:50;29566:3;29520:41;29534:26;29547:3;29552:7;;29534:12;:26::i;29520:50::-;29608:9;;:55;;-1:-1:-1;;;29608:55:0;;29635:10;29608:55;;;13497:51:1;13564:18;;;13557:34;;;29495:75:0;;-1:-1:-1;;;;;;29608:9:0;;:18;;13470::1;;29608:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29600:64;;;;;;-1:-1:-1;;;;;29678:117:0;;29697:12;;;;:5;:12;;;;;;;;;:22;;;;29721:21;;;;29744:20;;;;29766:28;;;;;29678:117;;7197:25:1;;;7238:18;;;7231:34;7281:18;;;7274:34;7339:2;7324:18;;7317:34;29678:117:0;;7184:3:1;7169:19;29678:117:0;;;;;;;;29802:9;:11;;;:9;:11;;;:::i;:::-;;;;;;29147:674;;29103:718;:::o;39646:100::-;39704:7;39731:1;39727;:5;:13;;39739:1;39727:13;;;-1:-1:-1;39735:1:0;;39646:100;-1:-1:-1;39646:100:0:o;39183:154::-;39245:7;39269:1;39265;:5;39261:71;;;-1:-1:-1;39288:1:0;39281:8;;39261:71;39319:5;39323:1;39319;:5;:::i;:::-;39312:12;;;;3056:173;3131:6;;;-1:-1:-1;;;;;3148:17:0;;;-1:-1:-1;;;;;;3148:17:0;;;;;;;3181:40;;3131:6;;;3148:17;3131:6;;3181:40;;3112:16;;3181:40;3101:128;3056:173;:::o;28563:494::-;28611:17;28631:20;28638:5;28645;28631:6;:20::i;:::-;28611:40;;28660:20;28683:54;28733:3;28683:45;28697:30;28710:3;28715:11;;28697:12;:30::i;28683:54::-;28660:77;;28792:29;28801:5;28808:12;28792:8;:29::i;:::-;-1:-1:-1;;;;;28866:12:0;;;;;;:5;:12;;;;;:18;;:34;;28888:12;;28866;:34;;28888:12;;28866:34;:::i;:::-;;;;-1:-1:-1;;;;;;;28914:117:0;;28933:12;;;;:5;:12;;;;;;;;;:22;;;;28957:21;;;;28980:20;;;;29002:28;;;;;28914:117;;7197:25:1;;;7238:18;;;7231:34;7281:18;;;7274:34;7339:2;7324:18;;7317:34;28914:117:0;;7184:3:1;7169:19;28914:117:0;6966:391:1;1008:65:0;495:13;;;;;;;;:30;;-1:-1:-1;513:12:0;;;;512:13;495:30;487:89;;;;-1:-1:-1;;;487:89:0;;;;;;;:::i;:::-;589:19;612:13;;;;;;611:14;636:101;;;;671:13;:20;;-1:-1:-1;;706:19:0;;;;;763:68;;;;814:5;798:21;;-1:-1:-1;;798:21:0;;;476:362;1008:65::o;1776:99::-;495:13;;;;;;;;:30;;-1:-1:-1;513:12:0;;;;512:13;495:30;487:89;;;;-1:-1:-1;;;487:89:0;;;;;;;:::i;:::-;589:19;612:13;;;;;;611:14;636:101;;;;671:13;:20;;-1:-1:-1;;706:19:0;;;;;636:101;1844:23:::1;1159:10:::0;1844:9:::1;:23::i;25977:2297::-:0;-1:-1:-1;;;;;26061:12:0;;;26047:11;26061:12;;;:5;:12;;;;;:19;26114:9;;26061:19;;;26126:3;;26104:19;;:7;:19;:::i;:::-;:25;;;;:::i;:::-;26087:42;-1:-1:-1;26153:14:0;26170:10;26179:1;26087:42;26170:10;:::i;:::-;26153:27;-1:-1:-1;26220:17:0;26240:18;:6;26153:27;26240:10;:18::i;:::-;26220:38;;26287:16;26324:7;26320:1739;26341:9;;26337:1;:13;;;26320:1739;;;-1:-1:-1;;;;;26432:17:0;;26429:155;;26549:9;;-1:-1:-1;;;;;26520:12:0;;;;;;:5;:12;;;;;:26;;:38;26569:5;;26429:155;-1:-1:-1;;;;;26651:12:0;;;;;;:5;:12;;;;;:26;;;:31;;;;:63;;;;-1:-1:-1;26686:28:0;26703:3;26708:5;:1;26712;26708:5;:::i;26686:28::-;26651:85;;;;;26718:18;26732:3;26718:13;:18::i;:::-;26648:1370;;;-1:-1:-1;;;;;26793:10:0;;;;;;:5;:10;;;;;:20;;;26817:1;-1:-1:-1;26793:25:0;;;:41;;;26823:11;26822:12;26793:41;26790:1136;;;-1:-1:-1;;;;;26966:10:0;;;;;;:5;:10;;;;;:19;;:32;;26908:4;;-1:-1:-1;26989:9:0;;26966:10;:32;;26989:9;;26966:32;:::i;:::-;;;;-1:-1:-1;;;;;;;27011:12:0;;;;;;:5;:12;;;;;:21;;:31;;27036:6;;27011:12;:31;;27036:6;;27011:31;:::i;:::-;;;;-1:-1:-1;;;;;;;27087:10:0;;;;;;:5;:10;;;;;:22;;:35;;27113:9;;27087:10;:35;;27113:9;;27087:35;:::i;:::-;;;;-1:-1:-1;;;;;;;27222:13:0;;;;;;:8;:13;;;;;:32;;27248:6;;27222:13;:32;;27248:6;;27222:32;:::i;:::-;;;;-1:-1:-1;;;;;;;27267:13:0;;;;;;;:8;:13;;;;;;27296:15;27267:26;;;;:44;27324:15;;;;;;;;:33;;:43;;27361:6;;27267:13;27324:43;;27361:6;;27324:43;:::i;:::-;;;;;;;;27429:6;27411:14;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;;27475:25:0;;1804::1;;;-1:-1:-1;;;;;27475:25:0;;;-1:-1:-1;;;;;;;;;;;27475:25:0;1792:2:1;1777:18;27475:25:0;;;;;;;27529:3;-1:-1:-1;;;;;27518:26:0;-1:-1:-1;;;;;;;;;;;27534:9:0;27518:26;;;;1804:25:1;;1792:2;1777:18;;1658:177;27518:26:0;;;;;;;;27564:47;;;576:25:1;;;27595:15:0;632:2:1;617:18;;610:34;-1:-1:-1;;;;;27564:47:0;;;;;;;;;;549:18:1;27564:47:0;;;;;;;27646:5;-1:-1:-1;;;;;27629:34:0;27641:3;-1:-1:-1;;;;;27629:34:0;;27653:9;27629:34;;;;1804:25:1;;1792:2;1777:18;;1658:177;27629:34:0;;;;;;;;28001:5;;26790:1136;-1:-1:-1;;;;;27696:10:0;;;;;;:5;:10;;;;;:19;;:29;;27719:6;;27696:10;:29;;27719:6;;27696:29;:::i;:::-;;;;-1:-1:-1;;;;;;;27770:10:0;;;;;;:5;:10;;;;;:22;;:32;;27796:6;;27770:10;:32;;27796:6;;27770:32;:::i;:::-;;;;-1:-1:-1;;27842:23:0;;1804:25:1;;;-1:-1:-1;;;;;27842:23:0;;;-1:-1:-1;;;;;;;;;;;27842:23:0;1792:2:1;1777:18;27842:23:0;;;;;;;27900:5;-1:-1:-1;;;;;27883:31:0;27895:3;-1:-1:-1;;;;;27883:31:0;;27907:6;27883:31;;;;1804:25:1;;1792:2;1777:18;;1658:177;26648:1370:0;-1:-1:-1;;;;;28034:10:0;;;;;;;:5;:10;;;;;:17;;;;;26352:3;;;;:::i;:::-;;;;26320:1739;;;-1:-1:-1;;;;;;28090:12:0;;;;;;:5;:12;;;;;:26;;:31;;28120:1;;28090:12;:31;;28120:1;;28090:31;:::i;:::-;;;;-1:-1:-1;;28210:9:0;;-1:-1:-1;;;;;28180:12:0;;;;;;:5;:12;;;;;:26;;;:39;28176:91;;-1:-1:-1;;;;;28229:12:0;;28258:1;28229:12;;;:5;:12;;;;;:26;;:30;28176:91;26038:2236;;;;;25977:2297;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;655:180::-;714:6;767:2;755:9;746:7;742:23;738:32;735:52;;;783:1;780;773:12;735:52;-1:-1:-1;806:23:1;;655:180;-1:-1:-1;655:180:1:o;840:813::-;935:6;943;951;959;967;1020:3;1008:9;999:7;995:23;991:33;988:53;;;1037:1;1034;1027:12;988:53;1076:9;1063:23;1095:31;1120:5;1095:31;:::i;:::-;1145:5;-1:-1:-1;1202:2:1;1187:18;;1174:32;1215:33;1174:32;1215:33;:::i;:::-;1267:7;-1:-1:-1;1326:2:1;1311:18;;1298:32;1339:33;1298:32;1339:33;:::i;:::-;1391:7;-1:-1:-1;1450:2:1;1435:18;;1422:32;1463:33;1422:32;1463:33;:::i;:::-;1515:7;-1:-1:-1;1574:3:1;1559:19;;1546:33;1588;1546;1588;:::i;:::-;1640:7;1630:17;;;840:813;;;;;;;;:::o;3606:127::-;3667:10;3662:3;3658:20;3655:1;3648:31;3698:4;3695:1;3688:15;3722:4;3719:1;3712:15;3738:252;3810:2;3804:9;3852:3;3840:16;;3886:18;3871:34;;3907:22;;;3868:62;3865:88;;;3933:18;;:::i;:::-;3969:2;3962:22;3738:252;:::o;3995:275::-;4066:2;4060:9;4131:2;4112:13;;-1:-1:-1;;4108:27:1;4096:40;;4166:18;4151:34;;4187:22;;;4148:62;4145:88;;;4213:18;;:::i;:::-;4249:2;4242:22;3995:275;;-1:-1:-1;3995:275:1:o;4275:183::-;4335:4;4368:18;4360:6;4357:30;4354:56;;;4390:18;;:::i;:::-;-1:-1:-1;4435:1:1;4431:14;4447:4;4427:25;;4275:183::o;4463:737::-;4517:5;4570:3;4563:4;4555:6;4551:17;4547:27;4537:55;;4588:1;4585;4578:12;4537:55;4624:6;4611:20;4650:4;4674:60;4690:43;4730:2;4690:43;:::i;:::-;4674:60;:::i;:::-;4768:15;;;4854:1;4850:10;;;;4838:23;;4834:32;;;4799:12;;;;4878:15;;;4875:35;;;4906:1;4903;4896:12;4875:35;4942:2;4934:6;4930:15;4954:217;4970:6;4965:3;4962:15;4954:217;;;5050:3;5037:17;5067:31;5092:5;5067:31;:::i;:::-;5111:18;;5149:12;;;;4987;;4954:217;;;-1:-1:-1;5189:5:1;4463:737;-1:-1:-1;;;;;;4463:737:1:o;5205:348::-;5289:6;5342:2;5330:9;5321:7;5317:23;5313:32;5310:52;;;5358:1;5355;5348:12;5310:52;5398:9;5385:23;5431:18;5423:6;5420:30;5417:50;;;5463:1;5460;5453:12;5417:50;5486:61;5539:7;5530:6;5519:9;5515:22;5486:61;:::i;:::-;5476:71;5205:348;-1:-1:-1;;;;5205:348:1:o;5750:315::-;5818:6;5826;5879:2;5867:9;5858:7;5854:23;5850:32;5847:52;;;5895:1;5892;5885:12;5847:52;5934:9;5921:23;5953:31;5978:5;5953:31;:::i;:::-;6003:5;6055:2;6040:18;;;;6027:32;;-1:-1:-1;;;5750:315:1:o;6070:891::-;6154:6;6185:2;6228;6216:9;6207:7;6203:23;6199:32;6196:52;;;6244:1;6241;6234:12;6196:52;6284:9;6271:23;6317:18;6309:6;6306:30;6303:50;;;6349:1;6346;6339:12;6303:50;6372:22;;6425:4;6417:13;;6413:27;-1:-1:-1;6403:55:1;;6454:1;6451;6444:12;6403:55;6490:2;6477:16;6513:60;6529:43;6569:2;6529:43;:::i;6513:60::-;6607:15;;;6689:1;6685:10;;;;6677:19;;6673:28;;;6638:12;;;;6713:19;;;6710:39;;;6745:1;6742;6735:12;6710:39;6769:11;;;;6789:142;6805:6;6800:3;6797:15;6789:142;;;6871:17;;6859:30;;6822:12;;;;6909;;;;6789:142;;;6950:5;6070:891;-1:-1:-1;;;;;;;6070:891:1:o;7551:615::-;7637:6;7645;7698:2;7686:9;7677:7;7673:23;7669:32;7666:52;;;7714:1;7711;7704:12;7666:52;7754:9;7741:23;7783:18;7824:2;7816:6;7813:14;7810:34;;;7840:1;7837;7830:12;7810:34;7878:6;7867:9;7863:22;7853:32;;7923:7;7916:4;7912:2;7908:13;7904:27;7894:55;;7945:1;7942;7935:12;7894:55;7985:2;7972:16;8011:2;8003:6;8000:14;7997:34;;;8027:1;8024;8017:12;7997:34;8080:7;8075:2;8065:6;8062:1;8058:14;8054:2;8050:23;8046:32;8043:45;8040:65;;;8101:1;8098;8091:12;8040:65;8132:2;8124:11;;;;;8154:6;;-1:-1:-1;7551:615:1;;-1:-1:-1;;;;7551:615:1:o;8495:412::-;8561:6;8569;8622:2;8610:9;8601:7;8597:23;8593:32;8590:52;;;8638:1;8635;8628:12;8590:52;8677:9;8664:23;8696:31;8721:5;8696:31;:::i;:::-;8746:5;-1:-1:-1;8803:2:1;8788:18;;8775:32;8851:4;8838:18;;8826:31;;8816:59;;8871:1;8868;8861:12;8816:59;8894:7;8884:17;;;8495:412;;;;;:::o;9870:416::-;9963:6;9971;10024:2;10012:9;10003:7;9999:23;9995:32;9992:52;;;10040:1;10037;10030:12;9992:52;10080:9;10067:23;10113:18;10105:6;10102:30;10099:50;;;10145:1;10142;10135:12;10099:50;10168:61;10221:7;10212:6;10201:9;10197:22;10168:61;:::i;:::-;10158:71;10276:2;10261:18;;;;10248:32;;-1:-1:-1;;;;9870:416:1:o;10815:127::-;10876:10;10871:3;10867:20;10864:1;10857:31;10907:4;10904:1;10897:15;10931:4;10928:1;10921:15;10947:128;10987:3;11018:1;11014:6;11011:1;11008:13;11005:39;;;11024:18;;:::i;:::-;-1:-1:-1;11060:9:1;;10947:128::o;11080:356::-;11282:2;11264:21;;;11301:18;;;11294:30;11360:34;11355:2;11340:18;;11333:62;11427:2;11412:18;;11080:356::o;11441:410::-;11643:2;11625:21;;;11682:2;11662:18;;;11655:30;11721:34;11716:2;11701:18;;11694:62;-1:-1:-1;;;11787:2:1;11772:18;;11765:44;11841:3;11826:19;;11441:410::o;11856:127::-;11917:10;11912:3;11908:20;11905:1;11898:31;11948:4;11945:1;11938:15;11972:4;11969:1;11962:15;11988:135;12027:3;12048:17;;;12045:43;;12068:18;;:::i;:::-;-1:-1:-1;12115:1:1;12104:13;;11988:135::o;12128:492::-;12243:6;12251;12259;12267;12275;12283;12336:3;12324:9;12315:7;12311:23;12307:33;12304:53;;;12353:1;12350;12343:12;12304:53;12382:9;12376:16;12366:26;;12432:2;12421:9;12417:18;12411:25;12401:35;;12476:2;12465:9;12461:18;12455:25;12445:35;;12520:2;12509:9;12505:18;12499:25;12489:35;;12564:3;12553:9;12549:19;12543:26;12533:36;;12609:3;12598:9;12594:19;12588:26;12578:36;;12128:492;;;;;;;;:::o;12625:342::-;12827:2;12809:21;;;12866:2;12846:18;;;12839:30;-1:-1:-1;;;12900:2:1;12885:18;;12878:48;12958:2;12943:18;;12625:342::o;12972:346::-;13174:2;13156:21;;;13213:2;13193:18;;;13186:30;-1:-1:-1;;;13247:2:1;13232:18;;13225:52;13309:2;13294:18;;12972:346::o;13602:245::-;13681:6;13689;13742:2;13730:9;13721:7;13717:23;13713:32;13710:52;;;13758:1;13755;13748:12;13710:52;-1:-1:-1;;13781:16:1;;13837:2;13822:18;;;13816:25;13781:16;;13816:25;;-1:-1:-1;13602:245:1:o;14548:217::-;14588:1;14614;14604:132;;14658:10;14653:3;14649:20;14646:1;14639:31;14693:4;14690:1;14683:15;14721:4;14718:1;14711:15;14604:132;-1:-1:-1;14750:9:1;;14548:217::o;15150:277::-;15217:6;15270:2;15258:9;15249:7;15245:23;15241:32;15238:52;;;15286:1;15283;15276:12;15238:52;15318:9;15312:16;15371:5;15364:13;15357:21;15350:5;15347:32;15337:60;;15393:1;15390;15383:12;15787:175;15824:3;15868:4;15861:5;15857:16;15897:4;15888:7;15885:17;15882:43;;15905:18;;:::i;:::-;15954:1;15941:15;;15787:175;-1:-1:-1;;15787:175:1:o;15967:168::-;16007:7;16073:1;16069;16065:6;16061:14;16058:1;16055:21;16050:1;16043:9;16036:17;16032:45;16029:71;;;16080:18;;:::i;:::-;-1:-1:-1;16120:9:1;;15967:168::o;16140:184::-;16210:6;16263:2;16251:9;16242:7;16238:23;16234:32;16231:52;;;16279:1;16276;16269:12;16231:52;-1:-1:-1;16302:16:1;;16140:184;-1:-1:-1;16140:184:1:o;16329:204::-;16367:3;16403:4;16400:1;16396:12;16435:4;16432:1;16428:12;16470:3;16464:4;16460:14;16455:3;16452:23;16449:49;;;16478:18;;:::i;:::-;16514:13;;16329:204;-1:-1:-1;;;16329:204:1:o;16893:138::-;16972:13;;16994:31;16972:13;16994:31;:::i;:::-;16893:138;;;:::o;17036:981::-;17127:6;17180:3;17168:9;17159:7;17155:23;17151:33;17148:53;;;17197:1;17194;17187:12;17148:53;17223:22;;:::i;:::-;17268:40;17298:9;17268:40;:::i;:::-;17261:5;17254:55;17362:2;17351:9;17347:18;17341:25;17336:2;17329:5;17325:14;17318:49;17420:2;17409:9;17405:18;17399:25;17394:2;17387:5;17383:14;17376:49;17478:2;17467:9;17463:18;17457:25;17452:2;17445:5;17441:14;17434:49;17537:3;17526:9;17522:19;17516:26;17510:3;17503:5;17499:15;17492:51;17597:3;17586:9;17582:19;17576:26;17570:3;17563:5;17559:15;17552:51;17657:3;17646:9;17642:19;17636:26;17630:3;17623:5;17619:15;17612:51;17717:3;17706:9;17702:19;17696:26;17690:3;17683:5;17679:15;17672:51;17742:3;17798:2;17787:9;17783:18;17777:25;17772:2;17765:5;17761:14;17754:49;;17822:3;17878:2;17867:9;17863:18;17857:25;17852:2;17845:5;17841:14;17834:49;;17902:3;17937:49;17982:2;17971:9;17967:18;17937:49;:::i;:::-;17921:14;;;17914:73;17925:5;17036:981;-1:-1:-1;;;17036:981:1:o;18022:559::-;18116:6;18169:2;18157:9;18148:7;18144:23;18140:32;18137:52;;;18185:1;18182;18175:12;18137:52;18218:2;18212:9;18260:2;18252:6;18248:15;18329:6;18317:10;18314:22;18293:18;18281:10;18278:34;18275:62;18272:88;;;18340:18;;:::i;:::-;18380:10;18376:2;18369:22;;18421:9;18415:16;18407:6;18400:32;18486:2;18475:9;18471:18;18465:25;18460:2;18452:6;18448:15;18441:50;18545:2;18534:9;18530:18;18524:25;18519:2;18511:6;18507:15;18500:50;18569:6;18559:16;;;18022:559;;;;:::o;18586:821::-;18680:6;18733:3;18721:9;18712:7;18708:23;18704:33;18701:53;;;18750:1;18747;18740:12;18701:53;18783:2;18777:9;18825:3;18817:6;18813:16;18895:6;18883:10;18880:22;18859:18;18847:10;18844:34;18841:62;18838:88;;;18906:18;;:::i;:::-;18942:2;18935:22;18979:16;;19004:31;18979:16;19004:31;:::i;:::-;19044:21;;19110:2;19095:18;;19089:25;19123:33;19089:25;19123:33;:::i;:::-;19189:7;19184:2;19176:6;19172:15;19165:32;;19251:2;19240:9;19236:18;19230:25;19225:2;19217:6;19213:15;19206:50;19310:2;19299:9;19295:18;19289:25;19284:2;19276:6;19272:15;19265:50;19370:3;19359:9;19355:19;19349:26;19343:3;19335:6;19331:16;19324:52;19395:6;19385:16;;;18586:821;;;;:::o;19412:474::-;19614:2;19596:21;;;19653:2;19633:18;;;19626:30;19692:34;19687:2;19672:18;;19665:62;19763:34;19758:2;19743:18;;19736:62;-1:-1:-1;;;19829:3:1;19814:19;;19807:37;19876:3;19861:19;;19412:474::o;21321:127::-;21382:10;21377:3;21373:20;21370:1;21363:31;21413:4;21410:1;21403:15;21437:4;21434:1;21427:15;21453:125;21493:4;21521:1;21518;21515:8;21512:34;;;21526:18;;:::i;:::-;-1:-1:-1;21563:9:1;;21453:125::o

Swarm Source

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