ETH Price: $3,880.94 (+0.67%)

Contract

0x36C2c64B6F55D00D48e999519a560FFC4De8c77e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Token190349972024-01-18 16:40:35643 days ago1705596035IN
0x36C2c64B...C4De8c77e
0 ETH0.0029015952.63858382
Withdraw Token190349802024-01-18 16:37:11643 days ago1705595831IN
0x36C2c64B...C4De8c77e
0 ETH0.002368143.86197928
Stake187622992023-12-11 10:14:23681 days ago1702289663IN
0x36C2c64B...C4De8c77e
0 ETH0.0168628787.73972823
Stake187049652023-12-03 9:27:11689 days ago1701595631IN
0x36C2c64B...C4De8c77e
0 ETH0.0048962427.21766861
Stake186988632023-12-02 12:57:11690 days ago1701521831IN
0x36C2c64B...C4De8c77e
0 ETH0.0051099326.58766505
Stake186715942023-11-28 17:25:23694 days ago1701192323IN
0x36C2c64B...C4De8c77e
0 ETH0.02012306104.70291379
Stake182762862023-10-04 9:33:11749 days ago1696411991IN
0x36C2c64B...C4De8c77e
0 ETH0.0025192113.10782781
Stake182726722023-10-03 21:25:59750 days ago1696368359IN
0x36C2c64B...C4De8c77e
0 ETH0.005907132.83693239
Stake182647682023-10-02 18:54:11751 days ago1696272851IN
0x36C2c64B...C4De8c77e
0 ETH0.0137682876.53638709
Stake182548242023-10-01 9:34:23752 days ago1696152863IN
0x36C2c64B...C4De8c77e
0 ETH0.0023422213.3771334
Stake182473322023-09-30 8:28:23753 days ago1696062503IN
0x36C2c64B...C4De8c77e
0 ETH0.0031857816.57603057
Stake182453482023-09-30 1:49:23754 days ago1696038563IN
0x36C2c64B...C4De8c77e
0 ETH0.0024346513.53400443
Stake182204252023-09-26 14:03:59757 days ago1695737039IN
0x36C2c64B...C4De8c77e
0 ETH0.0074389438.70580261
Stake182165542023-09-26 1:03:35758 days ago1695690215IN
0x36C2c64B...C4De8c77e
0 ETH0.0030320718.62684352
Stake182159262023-09-25 22:57:11758 days ago1695682631IN
0x36C2c64B...C4De8c77e
0 ETH0.001263938
Stake182115282023-09-25 8:11:47758 days ago1695629507IN
0x36C2c64B...C4De8c77e
0 ETH0.001607668.3648737
Stake182088432023-09-24 23:10:23759 days ago1695597023IN
0x36C2c64B...C4De8c77e
0 ETH0.0028186517.31443711
Stake182082522023-09-24 21:11:23759 days ago1695589883IN
0x36C2c64B...C4De8c77e
0 ETH0.0031326219.24311072
Stake182082002023-09-24 21:00:35759 days ago1695589235IN
0x36C2c64B...C4De8c77e
0 ETH0.0032801217.067969
Stake182014962023-09-23 22:28:35760 days ago1695508115IN
0x36C2c64B...C4De8c77e
0 ETH0.001153826.58980239
Stake181999882023-09-23 17:25:11760 days ago1695489911IN
0x36C2c64B...C4De8c77e
0 ETH0.0034069917.29510881
Stake181950262023-09-23 0:43:47761 days ago1695429827IN
0x36C2c64B...C4De8c77e
0 ETH0.0035369817.52786876
Stake181861542023-09-21 18:52:23762 days ago1695322343IN
0x36C2c64B...C4De8c77e
0 ETH0.0037325121.31743347
Stake181859572023-09-21 18:12:47762 days ago1695319967IN
0x36C2c64B...C4De8c77e
0 ETH0.0078828545.02123289
Stake181841722023-09-21 12:12:35762 days ago1695298355IN
0x36C2c64B...C4De8c77e
0 ETH0.0036729119.11065922
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Staking

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 5: staking.sol
// SPDX-License-Identifier:MIT
pragma solidity 0.8.18;

import "./SafeMath.sol";
import "./IERC20.sol";
import "./Ownable.sol";

contract Staking is Ownable {
  using SafeMath for uint256;

  struct Staker {
    address user;
    uint256 amount;
    STATUS status;
    uint256 startDay;
  }

  enum STATUS {
    ACTIVE,
    COMPLETED
  }

  uint256 startStakingDate;
  uint256 amountPerDay;

  Staker[] internal stakers;

  bool startStaking = false;
  uint256 dayInSeconds = 24 * 60 * 60;

  IERC20 token;
  IERC20 xCrediToken;

  uint256 periodInDays = 181;
  uint256 daysForStaking = periodInDays * dayInSeconds;
  uint256 minimumStakingAmount = 0;

  mapping(uint256 => uint256) increase;
  mapping(address => uint256[]) stakingsMap;

  event Received(address, uint256);
  event Staked(address indexed user, uint256 amount, uint256 startDay);
  event Claimed(address indexed user, uint256 amount, uint256 date);

  constructor(address _token, address _xCrediToken) {
    require(_token != address(0), "Invalid address for token");
    require(_xCrediToken != address(0), "Invalid address for xCrediToken");

    token = IERC20(_token);
    xCrediToken = IERC20(_xCrediToken);
  }

  modifier calculation(uint256 index) {
    require(stakers.length > index, "Incorrect staker");
    require(stakers[index].user == address(msg.sender), "Not owner");
    _;
  }

  function params()
    external
    view
    returns (
      address,
      address,
      uint256,
      uint256
    )
  {
    return (address(token), address(xCrediToken), periodInDays, minimumStakingAmount);
  }

  receive() external payable {
    emit Received(msg.sender, msg.value);
  }

  fallback() external payable {
    emit Received(msg.sender, msg.value);
  }

  function getCurrentDate() external view returns (uint256) {
    return block.timestamp;
  }

  function start() external onlyOwner {
    require(startStaking == false, "Staking started");
    require(xCrediToken.balanceOf(address(this)) > 0, "Token balance: 0");

    startStaking = true;
    startStakingDate = block.timestamp;
    amountPerDay = xCrediToken.balanceOf(address(this)).div(periodInDays);
  }

  function withdraw() external onlyOwner {
    uint256 balance = address(this).balance;
    require(balance > 0, "Insufficient balance");
    address payable owner = payable(owner());
    owner.transfer(balance);
  }

  function withdrawToken(IERC20 _token) external onlyOwner {
    uint256 balance = _token.balanceOf(address(this));
    require(balance > 0, "Insufficient balance");
    require(_token.transfer(address(owner()), balance), "Transfer failed");
  }

  function getBalance() external view returns (uint256) {
    return address(this).balance;
  }

  function getAmountPerDay() external view returns (uint256) {
    return amountPerDay;
  }

  function getEndDate() external view returns (uint256) {
    return _getEndDate();
  }

  function _getEndDate() internal view returns (uint256) {
    return (startStakingDate.add(daysForStaking));
  }

  function getStartStakingDate() external view returns (uint256) {
    return startStakingDate;
  }

  function getTokenBalance() external view returns (uint256) {
    return token.balanceOf(address(this));
  }

  function getXCrediBalance() external view returns (uint256) {
    return xCrediToken.balanceOf(address(this));
  }

  function getStakers() external view returns (Staker[] memory) {
    return stakers;
  }

  function stake(uint256 amount) external {
    _stake(amount);
  }

  function weight(uint256 index) external view returns (uint256) {
    require(index < periodInDays, "Period should be lower");
    uint256 w = 0;

    for (uint256 ti = 0; ti < index; ti++) {
      w = w.add(increase[ti]);
    }

    return w;
  }

  function getCurrentDay() external view returns (uint256) {
    uint256 startDate = (block.timestamp.sub(startStakingDate)).div(dayInSeconds);
    return startDate;
  }

  function _stake(uint256 amount) internal {
    require(startStaking == true, "Staking not started");
    require(amount >= minimumStakingAmount, "Amount should be greater than 1000");

    require(_getEndDate() > block.timestamp, "Staking period finished");
    require(amount > 0, "Amount should be greater than 0");
    require(amount <= token.balanceOf(address(msg.sender)), "Insufficient USDC balance");
    require(token.transferFrom(address(msg.sender), address(this), amount), "Transfer failed");

    uint256 startDate = (block.timestamp.sub(startStakingDate)).div(dayInSeconds);

    stakers.push(Staker(address(msg.sender), amount, STATUS.ACTIVE, startDate));
    stakingsMap[address(msg.sender)].push(stakers.length - 1);

    increase[startDate] = increase[startDate].add(amount);

    emit Staked(address(msg.sender), amount, startDate);
  }

  function userStakings() external view returns (uint256[] memory) {
    return stakingsMap[address(msg.sender)];
  }

  function userStaking(uint256 index) external view returns (Staker memory) {
    return stakers[index];
  }

  function calculateRewards(uint256 index) external view returns (uint256, bool) {
    return _calculateRewards(index);
  }

  function _calculateRewards(uint256 index) internal view calculation(index) returns (uint256, bool) {
    uint256 rewards = 0;
    uint256 w = 0;
    bool calimable = false;
    (uint256 currentDay, uint256 startDay) = getDays(index);

    for (uint256 ti = 0; ti < periodInDays; ti++) {
      w = w.add(increase[ti]);

      if (currentDay > ti && startDay <= ti) {
        if (w > 0) {
          uint256 amount = stakers[index].amount.mul(amountPerDay).div(w);
          rewards = rewards.add(amount);
        }
      }

      if (ti >= currentDay) {
        break;
      }
    }

    if (currentDay > periodInDays.sub(1)) {
      calimable = true;
    }

    return (rewards, calimable);
  }

  function getDays(uint256 index) internal view returns (uint256, uint256) {
    uint256 currentDay = (block.timestamp.sub(startStakingDate)).div(dayInSeconds);
    uint256 startDay = stakers[index].startDay;

    return (currentDay, startDay);
  }

  function withdrawPrincipal(uint256 index, uint256 requestAmount) external calculation(index) {
    require(stakers[index].status == STATUS.ACTIVE, "Staking is completed");
    require(stakers[index].amount >= requestAmount, "Request amount should be lower than staked amount");

    (uint256 currentDay, uint256 startDay) = getDays(index);

    require(currentDay < periodInDays, "Staking period is over, please request a reward claim");

    if (requestAmount < stakers[index].amount) {
      require(stakers[index].amount.sub(requestAmount) >= minimumStakingAmount, "Rest USDC amount should be greater than 1000");
      uint256 restAmount = stakers[index].amount.sub(requestAmount);
      stakers[index].amount = restAmount;
    } else {
      stakers[index].status = STATUS.COMPLETED;
      stakers[index].amount = 0;
    }
    increase[startDay] = increase[startDay].sub(requestAmount);
    require(token.transfer(stakers[index].user, requestAmount), "Transfer failed");
  }

  function claim(uint256 index) external calculation(index) {
    require(stakers[index].status == STATUS.ACTIVE, "Staking is completed");
    (uint256 currentDay, uint256 startDay) = getDays(index);

    require(currentDay > periodInDays.sub(1), "Staking is not over");

    (uint256 rewards, bool claimable) = _calculateRewards(index);

    Staker memory staker = stakers[index];
    uint256 amount = staker.amount;

    require(token.transfer(staker.user, amount), "Transfer failed USDC");
    require(xCrediToken.transfer(staker.user, rewards), "Transfer failed xCREDI");

    stakers[index].status = STATUS.COMPLETED;

    emit Claimed(staker.user, rewards, block.timestamp);
  }

}

File 2 of 5: Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 3 of 5: IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

File 4 of 5: Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "./Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 5 of 5: SafeMath.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_xCrediToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"date","type":"uint256"}],"name":"Claimed","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":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startDay","type":"uint256"}],"name":"Staked","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"calculateRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAmountPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEndDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStakers","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Staking.STATUS","name":"status","type":"uint8"},{"internalType":"uint256","name":"startDay","type":"uint256"}],"internalType":"struct Staking.Staker[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStartStakingDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getXCrediBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"params","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"userStaking","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"enum Staking.STATUS","name":"status","type":"uint8"},{"internalType":"uint256","name":"startDay","type":"uint256"}],"internalType":"struct Staking.Staker","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"userStakings","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"weight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"requestAmount","type":"uint256"}],"name":"withdrawPrincipal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600460006101000a81548160ff0219169083151502179055506201518060055560b56008556005546008546200003d91906200030b565b6009556000600a553480156200005257600080fd5b5060405162003b6838038062003b688339818101604052810190620000789190620003c0565b620000986200008c6200020660201b60201c565b6200020e60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200010a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001019062000468565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200017c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017390620004da565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620004fc565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200031882620002d2565b91506200032583620002d2565b92508282026200033581620002d2565b915082820484148315176200034f576200034e620002dc565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000388826200035b565b9050919050565b6200039a816200037b565b8114620003a657600080fd5b50565b600081519050620003ba816200038f565b92915050565b60008060408385031215620003da57620003d962000356565b5b6000620003ea85828601620003a9565b9250506020620003fd85828601620003a9565b9150509250929050565b600082825260208201905092915050565b7f496e76616c6964206164647265737320666f7220746f6b656e00000000000000600082015250565b60006200045060198362000407565b91506200045d8262000418565b602082019050919050565b60006020820190508181036000830152620004838162000441565b9050919050565b7f496e76616c6964206164647265737320666f7220784372656469546f6b656e00600082015250565b6000620004c2601f8362000407565b9150620004cf826200048a565b602082019050919050565b60006020820190508181036000830152620004f581620004b3565b9050919050565b61365c806200050c6000396000f3fe6080604052600436106101445760003560e01c806382b2e257116100b6578063b13564881161006f578063b13564881461047c578063be9a6555146104a7578063cff0ab96146104be578063d3ea4350146104ec578063f2fde38b1461052a578063f8e27f931461055357610184565b806382b2e2571461037e57806389476069146103a95780638da5cb5b146103d25780639254d772146103fd578063a694fc3a14610428578063aee132a31461045157610184565b80633e6968b6116101085780633e6968b6146102925780633fb9f22e146102bd57806343352d61146102e857806366cbb0371461031357806367c0d0c81461033c578063715018a61461036757610184565b806312065fe0146101bf578063240e2848146101ea57806332ca304f14610227578063379607f5146102525780633ccfd60b1461027b57610184565b36610184577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874333460405161017a92919061248a565b60405180910390a1005b7f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587433346040516101b592919061248a565b60405180910390a1005b3480156101cb57600080fd5b506101d4610590565b6040516101e191906124b3565b60405180910390f35b3480156101f657600080fd5b50610211600480360381019061020c91906124ff565b610598565b60405161021e9190612616565b60405180910390f35b34801561023357600080fd5b5061023c610679565b60405161024991906124b3565b60405180910390f35b34801561025e57600080fd5b50610279600480360381019061027491906124ff565b61071c565b005b34801561028757600080fd5b50610290610c78565b005b34801561029e57600080fd5b506102a7610d1f565b6040516102b491906124b3565b60405180910390f35b3480156102c957600080fd5b506102d2610d54565b6040516102df91906124b3565b60405180910390f35b3480156102f457600080fd5b506102fd610d5e565b60405161030a9190612735565b60405180910390f35b34801561031f57600080fd5b5061033a60048036038101906103359190612757565b610e62565b005b34801561034857600080fd5b506103516113a9565b60405161035e9190612846565b60405180910390f35b34801561037357600080fd5b5061037c61143e565b005b34801561038a57600080fd5b50610393611452565b6040516103a091906124b3565b60405180910390f35b3480156103b557600080fd5b506103d060048036038101906103cb91906128a6565b6114f5565b005b3480156103de57600080fd5b506103e7611686565b6040516103f491906128d3565b60405180910390f35b34801561040957600080fd5b506104126116af565b60405161041f91906124b3565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a91906124ff565b6116b7565b005b34801561045d57600080fd5b506104666116c3565b60405161047391906124b3565b60405180910390f35b34801561048857600080fd5b506104916116cd565b60405161049e91906124b3565b60405180910390f35b3480156104b357600080fd5b506104bc6116dc565b005b3480156104ca57600080fd5b506104d36118f2565b6040516104e394939291906128ee565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e91906124ff565b611952565b60405161052192919061294e565b60405180910390f35b34801561053657600080fd5b50610551600480360381019061054c91906129a3565b611967565b005b34801561055f57600080fd5b5061057a600480360381019061057591906124ff565b6119ea565b60405161058791906124b3565b60405180910390f35b600047905090565b6105a06123e0565b600382815481106105b4576105b36129d0565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900460ff1660018111156106525761065161254a565b5b60018111156106645761066361254a565b5b81526020016003820154815250509050919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106d691906128d3565b602060405180830381865afa1580156106f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107179190612a14565b905090565b808060038054905011610764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075b90612a9e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166003828154811061078f5761078e6129d0565b5b906000526020600020906004020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080e90612b0a565b60405180910390fd5b6000600181111561082b5761082a61254a565b5b6003838154811061083f5761083e6129d0565b5b906000526020600020906004020160020160009054906101000a900460ff1660018111156108705761086f61254a565b5b146108b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a790612b76565b60405180910390fd5b6000806108bc84611a81565b915091506108d66001600854611ae890919063ffffffff16565b8211610917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090e90612be2565b60405180910390fd5b60008061092386611afe565b9150915060006003878154811061093d5761093c6129d0565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900460ff1660018111156109db576109da61254a565b5b60018111156109ed576109ec61254a565b5b81526020016003820154815250509050600081602001519050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8360000151836040518363ffffffff1660e01b8152600401610a6792919061248a565b6020604051808303816000875af1158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa9190612c2e565b610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae090612ca7565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8360000151866040518363ffffffff1660e01b8152600401610b4a92919061248a565b6020604051808303816000875af1158015610b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8d9190612c2e565b610bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc390612d13565b60405180910390fd5b600160038981548110610be257610be16129d0565b5b906000526020600020906004020160020160006101000a81548160ff02191690836001811115610c1557610c1461254a565b5b0217905550816000015173ffffffffffffffffffffffffffffffffffffffff167f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a8542604051610c66929190612d33565b60405180910390a25050505050505050565b610c80611d19565b600047905060008111610cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbf90612da8565b60405180910390fd5b6000610cd2611686565b90508073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610d1a573d6000803e3d6000fd5b505050565b600080610d4b600554610d3d60015442611ae890919063ffffffff16565b611d9790919063ffffffff16565b90508091505090565b6000600254905090565b60606003805480602002602001604051908101604052809291908181526020016000905b82821015610e5957838290600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900460ff166001811115610e2a57610e2961254a565b5b6001811115610e3c57610e3b61254a565b5b815260200160038201548152505081526020019060010190610d82565b50505050905090565b818060038054905011610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190612a9e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1660038281548110610ed557610ed46129d0565b5b906000526020600020906004020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5490612b0a565b60405180910390fd5b60006001811115610f7157610f7061254a565b5b60038481548110610f8557610f846129d0565b5b906000526020600020906004020160020160009054906101000a900460ff166001811115610fb657610fb561254a565b5b14610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90612b76565b60405180910390fd5b816003848154811061100b5761100a6129d0565b5b906000526020600020906004020160010154101561105e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105590612e3a565b60405180910390fd5b60008061106a85611a81565b9150915060085482106110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a990612ecc565b60405180910390fd5b600385815481106110c6576110c56129d0565b5b9060005260206000209060040201600101548410156111c757600a5461111a85600388815481106110fa576110f96129d0565b5b906000526020600020906004020160010154611ae890919063ffffffff16565b101561115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115290612f5e565b60405180910390fd5b60006111958560038881548110611175576111746129d0565b5b906000526020600020906004020160010154611ae890919063ffffffff16565b905080600387815481106111ac576111ab6129d0565b5b90600052602060002090600402016001018190555050611241565b6001600386815481106111dd576111dc6129d0565b5b906000526020600020906004020160020160006101000a81548160ff021916908360018111156112105761120f61254a565b5b021790555060006003868154811061122b5761122a6129d0565b5b9060005260206000209060040201600101819055505b61126784600b600084815260200190815260200160002054611ae890919063ffffffff16565b600b600083815260200190815260200160002081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600387815481106112d0576112cf6129d0565b5b906000526020600020906004020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b815260040161132092919061248a565b6020604051808303816000875af115801561133f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113639190612c2e565b6113a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139990612fca565b60405180910390fd5b5050505050565b6060600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561143457602002820191906000526020600020905b815481526020019060010190808311611420575b5050505050905090565b611446611d19565b6114506000611dad565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114af91906128d3565b602060405180830381865afa1580156114cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f09190612a14565b905090565b6114fd611d19565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161153891906128d3565b602060405180830381865afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115799190612a14565b9050600081116115be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b590612da8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6115e2611686565b836040518363ffffffff1660e01b815260040161160092919061248a565b6020604051808303816000875af115801561161f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116439190612c2e565b611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167990612fca565b60405180910390fd5b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600042905090565b6116c081611e71565b50565b6000600154905090565b60006116d761238e565b905090565b6116e4611d19565b60001515600460009054906101000a900460ff1615151461173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190613036565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161179791906128d3565b602060405180830381865afa1580156117b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d89190612a14565b11611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f906130a2565b60405180910390fd5b6001600460006101000a81548160ff021916908315150217905550426001819055506118ea600854600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161189b91906128d3565b602060405180830381865afa1580156118b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118dc9190612a14565b611d9790919063ffffffff16565b600281905550565b600080600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600854600a54935093509350935090919293565b60008061195e83611afe565b91509150915091565b61196f611d19565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d590613134565b60405180910390fd5b6119e781611dad565b50565b60006008548210611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a27906131a0565b60405180910390fd5b6000805b83811015611a7757611a62600b600083815260200190815260200160002054836123ac90919063ffffffff16565b91508080611a6f906131ef565b915050611a34565b5080915050919050565b6000806000611aaf600554611aa160015442611ae890919063ffffffff16565b611d9790919063ffffffff16565b9050600060038581548110611ac757611ac66129d0565b5b90600052602060002090600402016003015490508181935093505050915091565b60008183611af69190613237565b905092915050565b600080828060038054905011611b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4090612a9e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1660038281548110611b7457611b736129d0565b5b906000526020600020906004020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf390612b0a565b60405180910390fd5b60008060008080611c0c89611a81565b9150915060005b600854811015611ce557611c43600b600083815260200190815260200160002054866123ac90919063ffffffff16565b94508083118015611c545750808211155b15611cca576000851115611cc9576000611cb086611ca260025460038f81548110611c8257611c816129d0565b5b9060005260206000209060040201600101546123c290919063ffffffff16565b611d9790919063ffffffff16565b9050611cc581886123ac90919063ffffffff16565b9650505b5b82811015611ce5578080611cdd906131ef565b915050611c13565b50611cfc6001600854611ae890919063ffffffff16565b821115611d0857600192505b848397509750505050505050915091565b611d216123d8565b73ffffffffffffffffffffffffffffffffffffffff16611d3f611686565b73ffffffffffffffffffffffffffffffffffffffff1614611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c906132b7565b60405180910390fd5b565b60008183611da59190613306565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60011515600460009054906101000a900460ff16151514611ec7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebe90613383565b60405180910390fd5b600a54811015611f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0390613415565b60405180910390fd5b42611f1561238e565b11611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c90613481565b60405180910390fd5b60008111611f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8f906134ed565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611ff391906128d3565b602060405180830381865afa158015612010573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120349190612a14565b811115612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90613559565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016120d593929190613579565b6020604051808303816000875af11580156120f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121189190612c2e565b612157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214e90612fca565b60405180910390fd5b600061218260055461217460015442611ae890919063ffffffff16565b611d9790919063ffffffff16565b9050600360405180608001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001848152602001600060018111156121c7576121c661254a565b5b815260200183815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff021916908360018111156122755761227461254a565b5b0217905550606082015181600301555050600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060016003805490506122d79190613237565b908060018154018082558091505060019003906000526020600020016000909190919091505561232382600b6000848152602001908152602001600020546123ac90919063ffffffff16565b600b6000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee908383604051612382929190612d33565b60405180910390a25050565b60006123a76009546001546123ac90919063ffffffff16565b905090565b600081836123ba91906135b0565b905092915050565b600081836123d091906135e4565b905092915050565b600033905090565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600060018111156124235761242261254a565b5b8152602001600081525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061245b82612430565b9050919050565b61246b81612450565b82525050565b6000819050919050565b61248481612471565b82525050565b600060408201905061249f6000830185612462565b6124ac602083018461247b565b9392505050565b60006020820190506124c8600083018461247b565b92915050565b600080fd5b6124dc81612471565b81146124e757600080fd5b50565b6000813590506124f9816124d3565b92915050565b600060208284031215612515576125146124ce565b5b6000612523848285016124ea565b91505092915050565b61253581612450565b82525050565b61254481612471565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061258a5761258961254a565b5b50565b600081905061259b82612579565b919050565b60006125ab8261258d565b9050919050565b6125bb816125a0565b82525050565b6080820160008201516125d7600085018261252c565b5060208201516125ea602085018261253b565b5060408201516125fd60408501826125b2565b506060820151612610606085018261253b565b50505050565b600060808201905061262b60008301846125c1565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b608082016000820151612673600085018261252c565b506020820151612686602085018261253b565b50604082015161269960408501826125b2565b5060608201516126ac606085018261253b565b50505050565b60006126be838361265d565b60808301905092915050565b6000602082019050919050565b60006126e282612631565b6126ec818561263c565b93506126f78361264d565b8060005b8381101561272857815161270f88826126b2565b975061271a836126ca565b9250506001810190506126fb565b5085935050505092915050565b6000602082019050818103600083015261274f81846126d7565b905092915050565b6000806040838503121561276e5761276d6124ce565b5b600061277c858286016124ea565b925050602061278d858286016124ea565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006127cf838361253b565b60208301905092915050565b6000602082019050919050565b60006127f382612797565b6127fd81856127a2565b9350612808836127b3565b8060005b8381101561283957815161282088826127c3565b975061282b836127db565b92505060018101905061280c565b5085935050505092915050565b6000602082019050818103600083015261286081846127e8565b905092915050565b600061287382612450565b9050919050565b61288381612868565b811461288e57600080fd5b50565b6000813590506128a08161287a565b92915050565b6000602082840312156128bc576128bb6124ce565b5b60006128ca84828501612891565b91505092915050565b60006020820190506128e86000830184612462565b92915050565b60006080820190506129036000830187612462565b6129106020830186612462565b61291d604083018561247b565b61292a606083018461247b565b95945050505050565b60008115159050919050565b61294881612933565b82525050565b6000604082019050612963600083018561247b565b612970602083018461293f565b9392505050565b61298081612450565b811461298b57600080fd5b50565b60008135905061299d81612977565b92915050565b6000602082840312156129b9576129b86124ce565b5b60006129c78482850161298e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612a0e816124d3565b92915050565b600060208284031215612a2a57612a296124ce565b5b6000612a38848285016129ff565b91505092915050565b600082825260208201905092915050565b7f496e636f7272656374207374616b657200000000000000000000000000000000600082015250565b6000612a88601083612a41565b9150612a9382612a52565b602082019050919050565b60006020820190508181036000830152612ab781612a7b565b9050919050565b7f4e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b6000612af4600983612a41565b9150612aff82612abe565b602082019050919050565b60006020820190508181036000830152612b2381612ae7565b9050919050565b7f5374616b696e6720697320636f6d706c65746564000000000000000000000000600082015250565b6000612b60601483612a41565b9150612b6b82612b2a565b602082019050919050565b60006020820190508181036000830152612b8f81612b53565b9050919050565b7f5374616b696e67206973206e6f74206f76657200000000000000000000000000600082015250565b6000612bcc601383612a41565b9150612bd782612b96565b602082019050919050565b60006020820190508181036000830152612bfb81612bbf565b9050919050565b612c0b81612933565b8114612c1657600080fd5b50565b600081519050612c2881612c02565b92915050565b600060208284031215612c4457612c436124ce565b5b6000612c5284828501612c19565b91505092915050565b7f5472616e73666572206661696c65642055534443000000000000000000000000600082015250565b6000612c91601483612a41565b9150612c9c82612c5b565b602082019050919050565b60006020820190508181036000830152612cc081612c84565b9050919050565b7f5472616e73666572206661696c65642078435245444900000000000000000000600082015250565b6000612cfd601683612a41565b9150612d0882612cc7565b602082019050919050565b60006020820190508181036000830152612d2c81612cf0565b9050919050565b6000604082019050612d48600083018561247b565b612d55602083018461247b565b9392505050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000612d92601483612a41565b9150612d9d82612d5c565b602082019050919050565b60006020820190508181036000830152612dc181612d85565b9050919050565b7f5265717565737420616d6f756e742073686f756c64206265206c6f776572207460008201527f68616e207374616b656420616d6f756e74000000000000000000000000000000602082015250565b6000612e24603183612a41565b9150612e2f82612dc8565b604082019050919050565b60006020820190508181036000830152612e5381612e17565b9050919050565b7f5374616b696e6720706572696f64206973206f7665722c20706c65617365207260008201527f65717565737420612072657761726420636c61696d0000000000000000000000602082015250565b6000612eb6603583612a41565b9150612ec182612e5a565b604082019050919050565b60006020820190508181036000830152612ee581612ea9565b9050919050565b7f52657374205553444320616d6f756e742073686f756c6420626520677265617460008201527f6572207468616e20313030300000000000000000000000000000000000000000602082015250565b6000612f48602c83612a41565b9150612f5382612eec565b604082019050919050565b60006020820190508181036000830152612f7781612f3b565b9050919050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000612fb4600f83612a41565b9150612fbf82612f7e565b602082019050919050565b60006020820190508181036000830152612fe381612fa7565b9050919050565b7f5374616b696e6720737461727465640000000000000000000000000000000000600082015250565b6000613020600f83612a41565b915061302b82612fea565b602082019050919050565b6000602082019050818103600083015261304f81613013565b9050919050565b7f546f6b656e2062616c616e63653a203000000000000000000000000000000000600082015250565b600061308c601083612a41565b915061309782613056565b602082019050919050565b600060208201905081810360008301526130bb8161307f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061311e602683612a41565b9150613129826130c2565b604082019050919050565b6000602082019050818103600083015261314d81613111565b9050919050565b7f506572696f642073686f756c64206265206c6f77657200000000000000000000600082015250565b600061318a601683612a41565b915061319582613154565b602082019050919050565b600060208201905081810360008301526131b98161317d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131fa82612471565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361322c5761322b6131c0565b5b600182019050919050565b600061324282612471565b915061324d83612471565b9250828203905081811115613265576132646131c0565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132a1602083612a41565b91506132ac8261326b565b602082019050919050565b600060208201905081810360008301526132d081613294565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061331182612471565b915061331c83612471565b92508261332c5761332b6132d7565b5b828204905092915050565b7f5374616b696e67206e6f74207374617274656400000000000000000000000000600082015250565b600061336d601383612a41565b915061337882613337565b602082019050919050565b6000602082019050818103600083015261339c81613360565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e20313060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b60006133ff602283612a41565b915061340a826133a3565b604082019050919050565b6000602082019050818103600083015261342e816133f2565b9050919050565b7f5374616b696e6720706572696f642066696e6973686564000000000000000000600082015250565b600061346b601783612a41565b915061347682613435565b602082019050919050565b6000602082019050818103600083015261349a8161345e565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e203000600082015250565b60006134d7601f83612a41565b91506134e2826134a1565b602082019050919050565b60006020820190508181036000830152613506816134ca565b9050919050565b7f496e73756666696369656e7420555344432062616c616e636500000000000000600082015250565b6000613543601983612a41565b915061354e8261350d565b602082019050919050565b6000602082019050818103600083015261357281613536565b9050919050565b600060608201905061358e6000830186612462565b61359b6020830185612462565b6135a8604083018461247b565b949350505050565b60006135bb82612471565b91506135c683612471565b92508282019050808211156135de576135dd6131c0565b5b92915050565b60006135ef82612471565b91506135fa83612471565b925082820261360881612471565b9150828204841483151761361f5761361e6131c0565b5b509291505056fea2646970667358221220acb97ed99c1600d650420723d8b0e017be05b5663c4eefaecc19240ef5636ac164736f6c63430008120033000000000000000000000000ac9fbdbe486f8023606b932a747bc476011b50710000000000000000000000003bbfb303842dd4a76da4c927be644e9cf3170afd

Deployed Bytecode

0x6080604052600436106101445760003560e01c806382b2e257116100b6578063b13564881161006f578063b13564881461047c578063be9a6555146104a7578063cff0ab96146104be578063d3ea4350146104ec578063f2fde38b1461052a578063f8e27f931461055357610184565b806382b2e2571461037e57806389476069146103a95780638da5cb5b146103d25780639254d772146103fd578063a694fc3a14610428578063aee132a31461045157610184565b80633e6968b6116101085780633e6968b6146102925780633fb9f22e146102bd57806343352d61146102e857806366cbb0371461031357806367c0d0c81461033c578063715018a61461036757610184565b806312065fe0146101bf578063240e2848146101ea57806332ca304f14610227578063379607f5146102525780633ccfd60b1461027b57610184565b36610184577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874333460405161017a92919061248a565b60405180910390a1005b7f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587433346040516101b592919061248a565b60405180910390a1005b3480156101cb57600080fd5b506101d4610590565b6040516101e191906124b3565b60405180910390f35b3480156101f657600080fd5b50610211600480360381019061020c91906124ff565b610598565b60405161021e9190612616565b60405180910390f35b34801561023357600080fd5b5061023c610679565b60405161024991906124b3565b60405180910390f35b34801561025e57600080fd5b50610279600480360381019061027491906124ff565b61071c565b005b34801561028757600080fd5b50610290610c78565b005b34801561029e57600080fd5b506102a7610d1f565b6040516102b491906124b3565b60405180910390f35b3480156102c957600080fd5b506102d2610d54565b6040516102df91906124b3565b60405180910390f35b3480156102f457600080fd5b506102fd610d5e565b60405161030a9190612735565b60405180910390f35b34801561031f57600080fd5b5061033a60048036038101906103359190612757565b610e62565b005b34801561034857600080fd5b506103516113a9565b60405161035e9190612846565b60405180910390f35b34801561037357600080fd5b5061037c61143e565b005b34801561038a57600080fd5b50610393611452565b6040516103a091906124b3565b60405180910390f35b3480156103b557600080fd5b506103d060048036038101906103cb91906128a6565b6114f5565b005b3480156103de57600080fd5b506103e7611686565b6040516103f491906128d3565b60405180910390f35b34801561040957600080fd5b506104126116af565b60405161041f91906124b3565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a91906124ff565b6116b7565b005b34801561045d57600080fd5b506104666116c3565b60405161047391906124b3565b60405180910390f35b34801561048857600080fd5b506104916116cd565b60405161049e91906124b3565b60405180910390f35b3480156104b357600080fd5b506104bc6116dc565b005b3480156104ca57600080fd5b506104d36118f2565b6040516104e394939291906128ee565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e91906124ff565b611952565b60405161052192919061294e565b60405180910390f35b34801561053657600080fd5b50610551600480360381019061054c91906129a3565b611967565b005b34801561055f57600080fd5b5061057a600480360381019061057591906124ff565b6119ea565b60405161058791906124b3565b60405180910390f35b600047905090565b6105a06123e0565b600382815481106105b4576105b36129d0565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900460ff1660018111156106525761065161254a565b5b60018111156106645761066361254a565b5b81526020016003820154815250509050919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106d691906128d3565b602060405180830381865afa1580156106f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107179190612a14565b905090565b808060038054905011610764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075b90612a9e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166003828154811061078f5761078e6129d0565b5b906000526020600020906004020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080e90612b0a565b60405180910390fd5b6000600181111561082b5761082a61254a565b5b6003838154811061083f5761083e6129d0565b5b906000526020600020906004020160020160009054906101000a900460ff1660018111156108705761086f61254a565b5b146108b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a790612b76565b60405180910390fd5b6000806108bc84611a81565b915091506108d66001600854611ae890919063ffffffff16565b8211610917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090e90612be2565b60405180910390fd5b60008061092386611afe565b9150915060006003878154811061093d5761093c6129d0565b5b90600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900460ff1660018111156109db576109da61254a565b5b60018111156109ed576109ec61254a565b5b81526020016003820154815250509050600081602001519050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8360000151836040518363ffffffff1660e01b8152600401610a6792919061248a565b6020604051808303816000875af1158015610a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaa9190612c2e565b610ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae090612ca7565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8360000151866040518363ffffffff1660e01b8152600401610b4a92919061248a565b6020604051808303816000875af1158015610b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8d9190612c2e565b610bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc390612d13565b60405180910390fd5b600160038981548110610be257610be16129d0565b5b906000526020600020906004020160020160006101000a81548160ff02191690836001811115610c1557610c1461254a565b5b0217905550816000015173ffffffffffffffffffffffffffffffffffffffff167f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a8542604051610c66929190612d33565b60405180910390a25050505050505050565b610c80611d19565b600047905060008111610cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbf90612da8565b60405180910390fd5b6000610cd2611686565b90508073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610d1a573d6000803e3d6000fd5b505050565b600080610d4b600554610d3d60015442611ae890919063ffffffff16565b611d9790919063ffffffff16565b90508091505090565b6000600254905090565b60606003805480602002602001604051908101604052809291908181526020016000905b82821015610e5957838290600052602060002090600402016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820160009054906101000a900460ff166001811115610e2a57610e2961254a565b5b6001811115610e3c57610e3b61254a565b5b815260200160038201548152505081526020019060010190610d82565b50505050905090565b818060038054905011610eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea190612a9e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1660038281548110610ed557610ed46129d0565b5b906000526020600020906004020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5490612b0a565b60405180910390fd5b60006001811115610f7157610f7061254a565b5b60038481548110610f8557610f846129d0565b5b906000526020600020906004020160020160009054906101000a900460ff166001811115610fb657610fb561254a565b5b14610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90612b76565b60405180910390fd5b816003848154811061100b5761100a6129d0565b5b906000526020600020906004020160010154101561105e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105590612e3a565b60405180910390fd5b60008061106a85611a81565b9150915060085482106110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a990612ecc565b60405180910390fd5b600385815481106110c6576110c56129d0565b5b9060005260206000209060040201600101548410156111c757600a5461111a85600388815481106110fa576110f96129d0565b5b906000526020600020906004020160010154611ae890919063ffffffff16565b101561115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115290612f5e565b60405180910390fd5b60006111958560038881548110611175576111746129d0565b5b906000526020600020906004020160010154611ae890919063ffffffff16565b905080600387815481106111ac576111ab6129d0565b5b90600052602060002090600402016001018190555050611241565b6001600386815481106111dd576111dc6129d0565b5b906000526020600020906004020160020160006101000a81548160ff021916908360018111156112105761120f61254a565b5b021790555060006003868154811061122b5761122a6129d0565b5b9060005260206000209060040201600101819055505b61126784600b600084815260200190815260200160002054611ae890919063ffffffff16565b600b600083815260200190815260200160002081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600387815481106112d0576112cf6129d0565b5b906000526020600020906004020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b815260040161132092919061248a565b6020604051808303816000875af115801561133f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113639190612c2e565b6113a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139990612fca565b60405180910390fd5b5050505050565b6060600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561143457602002820191906000526020600020905b815481526020019060010190808311611420575b5050505050905090565b611446611d19565b6114506000611dad565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114af91906128d3565b602060405180830381865afa1580156114cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f09190612a14565b905090565b6114fd611d19565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161153891906128d3565b602060405180830381865afa158015611555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115799190612a14565b9050600081116115be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b590612da8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6115e2611686565b836040518363ffffffff1660e01b815260040161160092919061248a565b6020604051808303816000875af115801561161f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116439190612c2e565b611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167990612fca565b60405180910390fd5b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600042905090565b6116c081611e71565b50565b6000600154905090565b60006116d761238e565b905090565b6116e4611d19565b60001515600460009054906101000a900460ff1615151461173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190613036565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161179791906128d3565b602060405180830381865afa1580156117b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d89190612a14565b11611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f906130a2565b60405180910390fd5b6001600460006101000a81548160ff021916908315150217905550426001819055506118ea600854600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161189b91906128d3565b602060405180830381865afa1580156118b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118dc9190612a14565b611d9790919063ffffffff16565b600281905550565b600080600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600854600a54935093509350935090919293565b60008061195e83611afe565b91509150915091565b61196f611d19565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d590613134565b60405180910390fd5b6119e781611dad565b50565b60006008548210611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a27906131a0565b60405180910390fd5b6000805b83811015611a7757611a62600b600083815260200190815260200160002054836123ac90919063ffffffff16565b91508080611a6f906131ef565b915050611a34565b5080915050919050565b6000806000611aaf600554611aa160015442611ae890919063ffffffff16565b611d9790919063ffffffff16565b9050600060038581548110611ac757611ac66129d0565b5b90600052602060002090600402016003015490508181935093505050915091565b60008183611af69190613237565b905092915050565b600080828060038054905011611b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4090612a9e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1660038281548110611b7457611b736129d0565b5b906000526020600020906004020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf390612b0a565b60405180910390fd5b60008060008080611c0c89611a81565b9150915060005b600854811015611ce557611c43600b600083815260200190815260200160002054866123ac90919063ffffffff16565b94508083118015611c545750808211155b15611cca576000851115611cc9576000611cb086611ca260025460038f81548110611c8257611c816129d0565b5b9060005260206000209060040201600101546123c290919063ffffffff16565b611d9790919063ffffffff16565b9050611cc581886123ac90919063ffffffff16565b9650505b5b82811015611ce5578080611cdd906131ef565b915050611c13565b50611cfc6001600854611ae890919063ffffffff16565b821115611d0857600192505b848397509750505050505050915091565b611d216123d8565b73ffffffffffffffffffffffffffffffffffffffff16611d3f611686565b73ffffffffffffffffffffffffffffffffffffffff1614611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c906132b7565b60405180910390fd5b565b60008183611da59190613306565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60011515600460009054906101000a900460ff16151514611ec7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebe90613383565b60405180910390fd5b600a54811015611f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0390613415565b60405180910390fd5b42611f1561238e565b11611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c90613481565b60405180910390fd5b60008111611f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8f906134ed565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611ff391906128d3565b602060405180830381865afa158015612010573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120349190612a14565b811115612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90613559565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016120d593929190613579565b6020604051808303816000875af11580156120f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121189190612c2e565b612157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214e90612fca565b60405180910390fd5b600061218260055461217460015442611ae890919063ffffffff16565b611d9790919063ffffffff16565b9050600360405180608001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001848152602001600060018111156121c7576121c661254a565b5b815260200183815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff021916908360018111156122755761227461254a565b5b0217905550606082015181600301555050600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060016003805490506122d79190613237565b908060018154018082558091505060019003906000526020600020016000909190919091505561232382600b6000848152602001908152602001600020546123ac90919063ffffffff16565b600b6000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee908383604051612382929190612d33565b60405180910390a25050565b60006123a76009546001546123ac90919063ffffffff16565b905090565b600081836123ba91906135b0565b905092915050565b600081836123d091906135e4565b905092915050565b600033905090565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600060018111156124235761242261254a565b5b8152602001600081525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061245b82612430565b9050919050565b61246b81612450565b82525050565b6000819050919050565b61248481612471565b82525050565b600060408201905061249f6000830185612462565b6124ac602083018461247b565b9392505050565b60006020820190506124c8600083018461247b565b92915050565b600080fd5b6124dc81612471565b81146124e757600080fd5b50565b6000813590506124f9816124d3565b92915050565b600060208284031215612515576125146124ce565b5b6000612523848285016124ea565b91505092915050565b61253581612450565b82525050565b61254481612471565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061258a5761258961254a565b5b50565b600081905061259b82612579565b919050565b60006125ab8261258d565b9050919050565b6125bb816125a0565b82525050565b6080820160008201516125d7600085018261252c565b5060208201516125ea602085018261253b565b5060408201516125fd60408501826125b2565b506060820151612610606085018261253b565b50505050565b600060808201905061262b60008301846125c1565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b608082016000820151612673600085018261252c565b506020820151612686602085018261253b565b50604082015161269960408501826125b2565b5060608201516126ac606085018261253b565b50505050565b60006126be838361265d565b60808301905092915050565b6000602082019050919050565b60006126e282612631565b6126ec818561263c565b93506126f78361264d565b8060005b8381101561272857815161270f88826126b2565b975061271a836126ca565b9250506001810190506126fb565b5085935050505092915050565b6000602082019050818103600083015261274f81846126d7565b905092915050565b6000806040838503121561276e5761276d6124ce565b5b600061277c858286016124ea565b925050602061278d858286016124ea565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006127cf838361253b565b60208301905092915050565b6000602082019050919050565b60006127f382612797565b6127fd81856127a2565b9350612808836127b3565b8060005b8381101561283957815161282088826127c3565b975061282b836127db565b92505060018101905061280c565b5085935050505092915050565b6000602082019050818103600083015261286081846127e8565b905092915050565b600061287382612450565b9050919050565b61288381612868565b811461288e57600080fd5b50565b6000813590506128a08161287a565b92915050565b6000602082840312156128bc576128bb6124ce565b5b60006128ca84828501612891565b91505092915050565b60006020820190506128e86000830184612462565b92915050565b60006080820190506129036000830187612462565b6129106020830186612462565b61291d604083018561247b565b61292a606083018461247b565b95945050505050565b60008115159050919050565b61294881612933565b82525050565b6000604082019050612963600083018561247b565b612970602083018461293f565b9392505050565b61298081612450565b811461298b57600080fd5b50565b60008135905061299d81612977565b92915050565b6000602082840312156129b9576129b86124ce565b5b60006129c78482850161298e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612a0e816124d3565b92915050565b600060208284031215612a2a57612a296124ce565b5b6000612a38848285016129ff565b91505092915050565b600082825260208201905092915050565b7f496e636f7272656374207374616b657200000000000000000000000000000000600082015250565b6000612a88601083612a41565b9150612a9382612a52565b602082019050919050565b60006020820190508181036000830152612ab781612a7b565b9050919050565b7f4e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b6000612af4600983612a41565b9150612aff82612abe565b602082019050919050565b60006020820190508181036000830152612b2381612ae7565b9050919050565b7f5374616b696e6720697320636f6d706c65746564000000000000000000000000600082015250565b6000612b60601483612a41565b9150612b6b82612b2a565b602082019050919050565b60006020820190508181036000830152612b8f81612b53565b9050919050565b7f5374616b696e67206973206e6f74206f76657200000000000000000000000000600082015250565b6000612bcc601383612a41565b9150612bd782612b96565b602082019050919050565b60006020820190508181036000830152612bfb81612bbf565b9050919050565b612c0b81612933565b8114612c1657600080fd5b50565b600081519050612c2881612c02565b92915050565b600060208284031215612c4457612c436124ce565b5b6000612c5284828501612c19565b91505092915050565b7f5472616e73666572206661696c65642055534443000000000000000000000000600082015250565b6000612c91601483612a41565b9150612c9c82612c5b565b602082019050919050565b60006020820190508181036000830152612cc081612c84565b9050919050565b7f5472616e73666572206661696c65642078435245444900000000000000000000600082015250565b6000612cfd601683612a41565b9150612d0882612cc7565b602082019050919050565b60006020820190508181036000830152612d2c81612cf0565b9050919050565b6000604082019050612d48600083018561247b565b612d55602083018461247b565b9392505050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000612d92601483612a41565b9150612d9d82612d5c565b602082019050919050565b60006020820190508181036000830152612dc181612d85565b9050919050565b7f5265717565737420616d6f756e742073686f756c64206265206c6f776572207460008201527f68616e207374616b656420616d6f756e74000000000000000000000000000000602082015250565b6000612e24603183612a41565b9150612e2f82612dc8565b604082019050919050565b60006020820190508181036000830152612e5381612e17565b9050919050565b7f5374616b696e6720706572696f64206973206f7665722c20706c65617365207260008201527f65717565737420612072657761726420636c61696d0000000000000000000000602082015250565b6000612eb6603583612a41565b9150612ec182612e5a565b604082019050919050565b60006020820190508181036000830152612ee581612ea9565b9050919050565b7f52657374205553444320616d6f756e742073686f756c6420626520677265617460008201527f6572207468616e20313030300000000000000000000000000000000000000000602082015250565b6000612f48602c83612a41565b9150612f5382612eec565b604082019050919050565b60006020820190508181036000830152612f7781612f3b565b9050919050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000612fb4600f83612a41565b9150612fbf82612f7e565b602082019050919050565b60006020820190508181036000830152612fe381612fa7565b9050919050565b7f5374616b696e6720737461727465640000000000000000000000000000000000600082015250565b6000613020600f83612a41565b915061302b82612fea565b602082019050919050565b6000602082019050818103600083015261304f81613013565b9050919050565b7f546f6b656e2062616c616e63653a203000000000000000000000000000000000600082015250565b600061308c601083612a41565b915061309782613056565b602082019050919050565b600060208201905081810360008301526130bb8161307f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061311e602683612a41565b9150613129826130c2565b604082019050919050565b6000602082019050818103600083015261314d81613111565b9050919050565b7f506572696f642073686f756c64206265206c6f77657200000000000000000000600082015250565b600061318a601683612a41565b915061319582613154565b602082019050919050565b600060208201905081810360008301526131b98161317d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131fa82612471565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361322c5761322b6131c0565b5b600182019050919050565b600061324282612471565b915061324d83612471565b9250828203905081811115613265576132646131c0565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132a1602083612a41565b91506132ac8261326b565b602082019050919050565b600060208201905081810360008301526132d081613294565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061331182612471565b915061331c83612471565b92508261332c5761332b6132d7565b5b828204905092915050565b7f5374616b696e67206e6f74207374617274656400000000000000000000000000600082015250565b600061336d601383612a41565b915061337882613337565b602082019050919050565b6000602082019050818103600083015261339c81613360565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e20313060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b60006133ff602283612a41565b915061340a826133a3565b604082019050919050565b6000602082019050818103600083015261342e816133f2565b9050919050565b7f5374616b696e6720706572696f642066696e6973686564000000000000000000600082015250565b600061346b601783612a41565b915061347682613435565b602082019050919050565b6000602082019050818103600083015261349a8161345e565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e203000600082015250565b60006134d7601f83612a41565b91506134e2826134a1565b602082019050919050565b60006020820190508181036000830152613506816134ca565b9050919050565b7f496e73756666696369656e7420555344432062616c616e636500000000000000600082015250565b6000613543601983612a41565b915061354e8261350d565b602082019050919050565b6000602082019050818103600083015261357281613536565b9050919050565b600060608201905061358e6000830186612462565b61359b6020830185612462565b6135a8604083018461247b565b949350505050565b60006135bb82612471565b91506135c683612471565b92508282019050808211156135de576135dd6131c0565b5b92915050565b60006135ef82612471565b91506135fa83612471565b925082820261360881612471565b9150828204841483151761361f5761361e6131c0565b5b509291505056fea2646970667358221220acb97ed99c1600d650420723d8b0e017be05b5663c4eefaecc19240ef5636ac164736f6c63430008120033

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

000000000000000000000000ac9fbdbe486f8023606b932a747bc476011b50710000000000000000000000003bbfb303842dd4a76da4c927be644e9cf3170afd

-----Decoded View---------------
Arg [0] : _token (address): 0xAC9fbdbE486F8023606b932a747BC476011B5071
Arg [1] : _xCrediToken (address): 0x3bBFb303842dD4a76Da4C927Be644E9cf3170afD

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000ac9fbdbe486f8023606b932a747bc476011b5071
Arg [1] : 0000000000000000000000003bbfb303842dd4a76da4c927be644e9cf3170afd


Deployed Bytecode Sourcemap

129:7619:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1621:31;1630:10;1642:9;1621:31;;;;;;;:::i;:::-;;;;;;;;129:7619;;1700:31;1709:10;1721:9;1700:31;;;;;;;:::i;:::-;;;;;;;;129:7619;2616:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4898:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3222:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7063:682;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2151:214;;;;;;;;;;;;;:::i;:::-;;3750:167;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2713:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3340:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6080:979;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4779:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1824:101:2;;;;;;;;;;;;;:::i;:::-;;3111:107:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2369:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1194:85:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1740:91:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3431:65;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3010:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2806:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1835:312;;;;;;;;;;;;;:::i;:::-;;1366:213;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;5008:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2074:198:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3500:246:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2616:93;2661:7;2683:21;2676:28;;2616:93;:::o;4898:106::-;4957:13;;:::i;:::-;4985:7;4993:5;4985:14;;;;;;;;:::i;:::-;;;;;;;;;;;;4978:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4898:106;;;:::o;3222:114::-;3273:7;3295:11;;;;;;;;;;;:21;;;3325:4;3295:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3288:43;;3222:114;:::o;7063:682::-;7114:5;1254;1237:7;:14;;;;:22;1229:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;1325:10;1294:42;;:7;1302:5;1294:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:19;;;;;;;;;;;;:42;;;1286:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7160:13:::1;7135:38;;;;;;;;:::i;:::-;;:7;7143:5;7135:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:21;;;;;;;;;;;;:38;;;;;;;;:::i;:::-;;;7127:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7205:18;7225:16:::0;7245:14:::1;7253:5;7245:7;:14::i;:::-;7204:55;;;;7287:19;7304:1;7287:12;;:16;;:19;;;;:::i;:::-;7274:10;:32;7266:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7338:15;7355:14:::0;7373:24:::1;7391:5;7373:17;:24::i;:::-;7337:60;;;;7404:20;7427:7;7435:5;7427:14;;;;;;;;:::i;:::-;;;;;;;;;;;;7404:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;::::0;::::1;;;7447:14;7464:6;:13;;;7447:30;;7492:5;;;;;;;;;;;:14;;;7507:6;:11;;;7520:6;7492:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7484:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7566:11;;;;;;;;;;;:20;;;7587:6;:11;;;7600:7;7566:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7558:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;7666:16;7642:7;7650:5;7642:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:21;;;:40;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;7702:6;:11;;;7694:46;;;7715:7;7724:15;7694:46;;;;;;;:::i;:::-;;;;;;;;7121:624;;;;;;7063:682:::0;;:::o;2151:214::-;1087:13:2;:11;:13::i;:::-;2196:15:4::1;2214:21;2196:39;;2259:1;2249:7;:11;2241:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;2291:21;2323:7;:5;:7::i;:::-;2291:40;;2337:5;:14;;:23;2352:7;2337:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;2190:175;;2151:214::o:0;3750:167::-;3798:7;3813:17;3833:57;3877:12;;3834:37;3854:16;;3834:15;:19;;:37;;;;:::i;:::-;3833:43;;:57;;;;:::i;:::-;3813:77;;3903:9;3896:16;;;3750:167;:::o;2713:89::-;2763:7;2785:12;;2778:19;;2713:89;:::o;3340:87::-;3385:15;3415:7;3408:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3340:87;:::o;6080:979::-;6166:5;1254;1237:7;:14;;;;:22;1229:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;1325:10;1294:42;;:7;1302:5;1294:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:19;;;;;;;;;;;;:42;;;1286:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;6212:13:::1;6187:38;;;;;;;;:::i;:::-;;:7;6195:5;6187:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:21;;;;;;;;;;;;:38;;;;;;;;:::i;:::-;;;6179:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6289:13;6264:7;6272:5;6264:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:21;;;:38;;6256:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;6364:18;6384:16:::0;6404:14:::1;6412:5;6404:7;:14::i;:::-;6363:55;;;;6446:12;;6433:10;:25;6425:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;6543:7;6551:5;6543:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:21;;;6527:13;:37;6523:384;;;6626:20;;6582:40;6608:13;6582:7;6590:5;6582:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:21;;;:25;;:40;;;;:::i;:::-;:64;;6574:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;6703:18;6724:40;6750:13;6724:7;6732:5;6724:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:21;;;:25;;:40;;;;:::i;:::-;6703:61;;6796:10;6772:7;6780:5;6772:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:21;;:34;;;;6566:247;6523:384;;;6851:16;6827:7;6835:5;6827:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:21;;;:40;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;6899:1;6875:7;6883:5;6875:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:21;;:25;;;;6523:384;6933:37;6956:13;6933:8;:18;6942:8;6933:18;;;;;;;;;;;;:22;;:37;;;;:::i;:::-;6912:8;:18;6921:8;6912:18;;;;;;;;;;;:58;;;;6984:5;;;;;;;;;;;:14;;;6999:7;7007:5;6999:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:19;;;;;;;;;;;;7020:13;6984:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6976:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;6173:886;;6080:979:::0;;;:::o;4779:115::-;4826:16;4857:11;:32;4877:10;4857:32;;;;;;;;;;;;;;;4850:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4779:115;:::o;1824:101:2:-;1087:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;3111:107:4:-;3161:7;3183:5;;;;;;;;;;;:15;;;3207:4;3183:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3176:37;;3111:107;:::o;2369:243::-;1087:13:2;:11;:13::i;:::-;2432:15:4::1;2450:6;:16;;;2475:4;2450:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2432:49;;2505:1;2495:7;:11;2487:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;2545:6;:15;;;2569:7;:5;:7::i;:::-;2579;2545:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2537:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;2426:186;2369:243:::0;:::o;1194:85:2:-;1240:7;1266:6;;;;;;;;;;;1259:13;;1194:85;:::o;1740:91:4:-;1789:7;1811:15;1804:22;;1740:91;:::o;3431:65::-;3477:14;3484:6;3477;:14::i;:::-;3431:65;:::o;3010:97::-;3064:7;3086:16;;3079:23;;3010:97;:::o;2806:85::-;2851:7;2873:13;:11;:13::i;:::-;2866:20;;2806:85;:::o;1835:312::-;1087:13:2;:11;:13::i;:::-;1901:5:4::1;1885:21;;:12;;;;;;;;;;;:21;;;1877:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1979:1;1940:11;;;;;;;;;;;:21;;;1970:4;1940:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;1932:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;2023:4;2008:12;;:19;;;;;;;;;;;;;;;;;;2052:15;2033:16;:34;;;;2088:54;2129:12;;2088:11;;;;;;;;;;;:21;;;2118:4;2088:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;:54;;;;:::i;:::-;2073:12;:69;;;;1835:312::o:0;1366:213::-;1426:7;1441;1456;1471;1509:5;;;;;;;;;;;1525:11;;;;;;;;;;;1539:12;;1553:20;;1493:81;;;;;;;;1366:213;;;;:::o;5008:121::-;5072:7;5081:4;5100:24;5118:5;5100:17;:24::i;:::-;5093:31;;;;5008:121;;;:::o;2074:198:2:-;1087:13;:11;:13::i;:::-;2182:1:::1;2162:22;;:8;:22;;::::0;2154:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;3500:246:4:-;3554:7;3585:12;;3577:5;:20;3569:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;3630:9;3655:10;3650:77;3676:5;3671:2;:10;3650:77;;;3701:19;3707:8;:12;3716:2;3707:12;;;;;;;;;;;;3701:1;:5;;:19;;;;:::i;:::-;3697:23;;3683:4;;;;;:::i;:::-;;;;3650:77;;;;3740:1;3733:8;;;3500:246;;;:::o;5830:::-;5885:7;5894;5909:18;5930:57;5974:12;;5931:37;5951:16;;5931:15;:19;;:37;;;;:::i;:::-;5930:43;;:57;;;;:::i;:::-;5909:78;;5993:16;6012:7;6020:5;6012:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;5993:42;;6050:10;6062:8;6042:29;;;;;;5830:246;;;:::o;3122:96:3:-;3180:7;3210:1;3206;:5;;;;:::i;:::-;3199:12;;3122:96;;;;:::o;5133:693:4:-;5217:7;5226:4;5201:5;1254;1237:7;:14;;;;:22;1229:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;1325:10;1294:42;;:7;1302:5;1294:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:19;;;;;;;;;;;;:42;;;1286:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5238:15:::1;5263:9:::0;5282:14:::1;5311:18:::0;5331:16;5351:14:::1;5359:5;5351:7;:14::i;:::-;5310:55;;;;5377:10;5372:341;5398:12;;5393:2;:17;5372:341;;;5430:19;5436:8;:12;5445:2;5436:12;;;;;;;;;;;;5430:1;:5;;:19;;;;:::i;:::-;5426:23;;5475:2;5462:10;:15;:33;;;;;5493:2;5481:8;:14;;5462:33;5458:195;;;5515:1;5511;:5;5507:138;;;5530:14;5547:46;5591:1;5547:39;5573:12;;5547:7;5555:5;5547:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:21;;;:25;;:39;;;;:::i;:::-;:43;;:46;;;;:::i;:::-;5530:63;;5615:19;5627:6;5615:7;:11;;:19;;;;:::i;:::-;5605:29;;5518:127;5507:138;5458:195;5671:10;5665:2;:16;5661:46:::0;5693:5:::1;5661:46;5412:4;;;;;:::i;:::-;;;;5372:341;;;;5736:19;5753:1;5736:12;;:16;;:19;;;;:::i;:::-;5723:10;:32;5719:69;;;5777:4;5765:16;;5719:69;5802:7;5811:9;5794:27;;;;;;;;;5133:693:::0;;;;:::o;1352:130:2:-;1426:12;:10;:12::i;:::-;1415:23;;:7;:5;:7::i;:::-;:23;;;1407:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1352:130::o;3850:96:3:-;3908:7;3938:1;3934;:5;;;;:::i;:::-;3927:12;;3850:96;;;;:::o;2426:187:2:-;2499:16;2518:6;;;;;;;;;;;2499:25;;2543:8;2534:6;;:17;;;;;;;;;;;;;;;;;;2597:8;2566:40;;2587:8;2566:40;;;;;;;;;;;;2489:124;2426:187;:::o;3921:854:4:-;3992:4;3976:20;;:12;;;;;;;;;;;:20;;;3968:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;4044:20;;4034:6;:30;;4026:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;4134:15;4118:13;:11;:13::i;:::-;:31;4110:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4200:1;4191:6;:10;4183:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;4261:5;;;;;;;;;;;:15;;;4285:10;4261:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4251:6;:46;;4243:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;4341:5;;;;;;;;;;;:18;;;4368:10;4389:4;4396:6;4341:62;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4333:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;4430:17;4450:57;4494:12;;4451:37;4471:16;;4451:15;:19;;:37;;;;:::i;:::-;4450:43;;:57;;;;:::i;:::-;4430:77;;4514:7;4527:61;;;;;;;;4542:10;4527:61;;;;;;4555:6;4527:61;;;;4563:13;4527:61;;;;;;;;:::i;:::-;;;;;;4578:9;4527:61;;;4514:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4595:11;:32;4615:10;4595:32;;;;;;;;;;;;;;;4650:1;4633:7;:14;;;;:18;;;;:::i;:::-;4595:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4681:31;4705:6;4681:8;:19;4690:9;4681:19;;;;;;;;;;;;:23;;:31;;;;:::i;:::-;4659:8;:19;4668:9;4659:19;;;;;;;;;;;:53;;;;4739:10;4724:46;;;4752:6;4760:9;4724:46;;;;;;;:::i;:::-;;;;;;;;3962:813;3921:854;:::o;2895:111::-;2941:7;2964:36;2985:14;;2964:16;;:20;;:36;;;;:::i;:::-;2956:45;;2895:111;:::o;2755:96:3:-;2813:7;2843:1;2839;:5;;;;:::i;:::-;2832:12;;2755:96;;;;:::o;3465:::-;3523:7;3553:1;3549;:5;;;;:::i;:::-;3542:12;;3465:96;;;;:::o;640::0:-;693:7;719:10;712:17;;640:96;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;7:126:5:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:77::-;402:7;431:5;420:16;;365:77;;;:::o;448:118::-;535:24;553:5;535:24;:::i;:::-;530:3;523:37;448:118;;:::o;572:332::-;693:4;731:2;720:9;716:18;708:26;;744:71;812:1;801:9;797:17;788:6;744:71;:::i;:::-;825:72;893:2;882:9;878:18;869:6;825:72;:::i;:::-;572:332;;;;;:::o;910:222::-;1003:4;1041:2;1030:9;1026:18;1018:26;;1054:71;1122:1;1111:9;1107:17;1098:6;1054:71;:::i;:::-;910:222;;;;:::o;1219:117::-;1328:1;1325;1318:12;1465:122;1538:24;1556:5;1538:24;:::i;:::-;1531:5;1528:35;1518:63;;1577:1;1574;1567:12;1518:63;1465:122;:::o;1593:139::-;1639:5;1677:6;1664:20;1655:29;;1693:33;1720:5;1693:33;:::i;:::-;1593:139;;;;:::o;1738:329::-;1797:6;1846:2;1834:9;1825:7;1821:23;1817:32;1814:119;;;1852:79;;:::i;:::-;1814:119;1972:1;1997:53;2042:7;2033:6;2022:9;2018:22;1997:53;:::i;:::-;1987:63;;1943:117;1738:329;;;;:::o;2073:108::-;2150:24;2168:5;2150:24;:::i;:::-;2145:3;2138:37;2073:108;;:::o;2187:::-;2264:24;2282:5;2264:24;:::i;:::-;2259:3;2252:37;2187:108;;:::o;2301:180::-;2349:77;2346:1;2339:88;2446:4;2443:1;2436:15;2470:4;2467:1;2460:15;2487:115;2570:1;2563:5;2560:12;2550:46;;2576:18;;:::i;:::-;2550:46;2487:115;:::o;2608:131::-;2655:7;2684:5;2673:16;;2690:43;2727:5;2690:43;:::i;:::-;2608:131;;;:::o;2745:::-;2803:9;2836:34;2864:5;2836:34;:::i;:::-;2823:47;;2745:131;;;:::o;2882:137::-;2967:45;3006:5;2967:45;:::i;:::-;2962:3;2955:58;2882:137;;:::o;3079:867::-;3222:4;3217:3;3213:14;3309:4;3302:5;3298:16;3292:23;3328:63;3385:4;3380:3;3376:14;3362:12;3328:63;:::i;:::-;3237:164;3485:4;3478:5;3474:16;3468:23;3504:63;3561:4;3556:3;3552:14;3538:12;3504:63;:::i;:::-;3411:166;3661:4;3654:5;3650:16;3644:23;3680:71;3745:4;3740:3;3736:14;3722:12;3680:71;:::i;:::-;3587:174;3847:4;3840:5;3836:16;3830:23;3866:63;3923:4;3918:3;3914:14;3900:12;3866:63;:::i;:::-;3771:168;3191:755;3079:867;;:::o;3952:315::-;4091:4;4129:3;4118:9;4114:19;4106:27;;4143:117;4257:1;4246:9;4242:17;4233:6;4143:117;:::i;:::-;3952:315;;;;:::o;4273:137::-;4363:6;4397:5;4391:12;4381:22;;4273:137;;;:::o;4416:207::-;4538:11;4572:6;4567:3;4560:19;4612:4;4607:3;4603:14;4588:29;;4416:207;;;;:::o;4629:155::-;4719:4;4742:3;4734:11;;4772:4;4767:3;4763:14;4755:22;;4629:155;;;:::o;4844:857::-;4977:4;4972:3;4968:14;5064:4;5057:5;5053:16;5047:23;5083:63;5140:4;5135:3;5131:14;5117:12;5083:63;:::i;:::-;4992:164;5240:4;5233:5;5229:16;5223:23;5259:63;5316:4;5311:3;5307:14;5293:12;5259:63;:::i;:::-;5166:166;5416:4;5409:5;5405:16;5399:23;5435:71;5500:4;5495:3;5491:14;5477:12;5435:71;:::i;:::-;5342:174;5602:4;5595:5;5591:16;5585:23;5621:63;5678:4;5673:3;5669:14;5655:12;5621:63;:::i;:::-;5526:168;4946:755;4844:857;;:::o;5707:271::-;5822:10;5843:92;5931:3;5923:6;5843:92;:::i;:::-;5967:4;5962:3;5958:14;5944:28;;5707:271;;;;:::o;5984:136::-;6077:4;6109;6104:3;6100:14;6092:22;;5984:136;;;:::o;6184:916::-;6349:3;6378:77;6449:5;6378:77;:::i;:::-;6471:109;6573:6;6568:3;6471:109;:::i;:::-;6464:116;;6604:79;6677:5;6604:79;:::i;:::-;6706:7;6737:1;6722:353;6747:6;6744:1;6741:13;6722:353;;;6823:6;6817:13;6850:109;6955:3;6940:13;6850:109;:::i;:::-;6843:116;;6982:83;7058:6;6982:83;:::i;:::-;6972:93;;6782:293;6769:1;6766;6762:9;6757:14;;6722:353;;;6726:14;7091:3;7084:10;;6354:746;;;6184:916;;;;:::o;7106:465::-;7295:4;7333:2;7322:9;7318:18;7310:26;;7382:9;7376:4;7372:20;7368:1;7357:9;7353:17;7346:47;7410:154;7559:4;7550:6;7410:154;:::i;:::-;7402:162;;7106:465;;;;:::o;7577:474::-;7645:6;7653;7702:2;7690:9;7681:7;7677:23;7673:32;7670:119;;;7708:79;;:::i;:::-;7670:119;7828:1;7853:53;7898:7;7889:6;7878:9;7874:22;7853:53;:::i;:::-;7843:63;;7799:117;7955:2;7981:53;8026:7;8017:6;8006:9;8002:22;7981:53;:::i;:::-;7971:63;;7926:118;7577:474;;;;;:::o;8057:114::-;8124:6;8158:5;8152:12;8142:22;;8057:114;;;:::o;8177:184::-;8276:11;8310:6;8305:3;8298:19;8350:4;8345:3;8341:14;8326:29;;8177:184;;;;:::o;8367:132::-;8434:4;8457:3;8449:11;;8487:4;8482:3;8478:14;8470:22;;8367:132;;;:::o;8505:179::-;8574:10;8595:46;8637:3;8629:6;8595:46;:::i;:::-;8673:4;8668:3;8664:14;8650:28;;8505:179;;;;:::o;8690:113::-;8760:4;8792;8787:3;8783:14;8775:22;;8690:113;;;:::o;8839:732::-;8958:3;8987:54;9035:5;8987:54;:::i;:::-;9057:86;9136:6;9131:3;9057:86;:::i;:::-;9050:93;;9167:56;9217:5;9167:56;:::i;:::-;9246:7;9277:1;9262:284;9287:6;9284:1;9281:13;9262:284;;;9363:6;9357:13;9390:63;9449:3;9434:13;9390:63;:::i;:::-;9383:70;;9476:60;9529:6;9476:60;:::i;:::-;9466:70;;9322:224;9309:1;9306;9302:9;9297:14;;9262:284;;;9266:14;9562:3;9555:10;;8963:608;;;8839:732;;;;:::o;9577:373::-;9720:4;9758:2;9747:9;9743:18;9735:26;;9807:9;9801:4;9797:20;9793:1;9782:9;9778:17;9771:47;9835:108;9938:4;9929:6;9835:108;:::i;:::-;9827:116;;9577:373;;;;:::o;9956:109::-;10006:7;10035:24;10053:5;10035:24;:::i;:::-;10024:35;;9956:109;;;:::o;10071:148::-;10157:37;10188:5;10157:37;:::i;:::-;10150:5;10147:48;10137:76;;10209:1;10206;10199:12;10137:76;10071:148;:::o;10225:165::-;10284:5;10322:6;10309:20;10300:29;;10338:46;10378:5;10338:46;:::i;:::-;10225:165;;;;:::o;10396:355::-;10468:6;10517:2;10505:9;10496:7;10492:23;10488:32;10485:119;;;10523:79;;:::i;:::-;10485:119;10643:1;10668:66;10726:7;10717:6;10706:9;10702:22;10668:66;:::i;:::-;10658:76;;10614:130;10396:355;;;;:::o;10757:222::-;10850:4;10888:2;10877:9;10873:18;10865:26;;10901:71;10969:1;10958:9;10954:17;10945:6;10901:71;:::i;:::-;10757:222;;;;:::o;10985:553::-;11162:4;11200:3;11189:9;11185:19;11177:27;;11214:71;11282:1;11271:9;11267:17;11258:6;11214:71;:::i;:::-;11295:72;11363:2;11352:9;11348:18;11339:6;11295:72;:::i;:::-;11377;11445:2;11434:9;11430:18;11421:6;11377:72;:::i;:::-;11459;11527:2;11516:9;11512:18;11503:6;11459:72;:::i;:::-;10985:553;;;;;;;:::o;11544:90::-;11578:7;11621:5;11614:13;11607:21;11596:32;;11544:90;;;:::o;11640:109::-;11721:21;11736:5;11721:21;:::i;:::-;11716:3;11709:34;11640:109;;:::o;11755:320::-;11870:4;11908:2;11897:9;11893:18;11885:26;;11921:71;11989:1;11978:9;11974:17;11965:6;11921:71;:::i;:::-;12002:66;12064:2;12053:9;12049:18;12040:6;12002:66;:::i;:::-;11755:320;;;;;:::o;12081:122::-;12154:24;12172:5;12154:24;:::i;:::-;12147:5;12144:35;12134:63;;12193:1;12190;12183:12;12134:63;12081:122;:::o;12209:139::-;12255:5;12293:6;12280:20;12271:29;;12309:33;12336:5;12309:33;:::i;:::-;12209:139;;;;:::o;12354:329::-;12413:6;12462:2;12450:9;12441:7;12437:23;12433:32;12430:119;;;12468:79;;:::i;:::-;12430:119;12588:1;12613:53;12658:7;12649:6;12638:9;12634:22;12613:53;:::i;:::-;12603:63;;12559:117;12354:329;;;;:::o;12689:180::-;12737:77;12734:1;12727:88;12834:4;12831:1;12824:15;12858:4;12855:1;12848:15;12875:143;12932:5;12963:6;12957:13;12948:22;;12979:33;13006:5;12979:33;:::i;:::-;12875:143;;;;:::o;13024:351::-;13094:6;13143:2;13131:9;13122:7;13118:23;13114:32;13111:119;;;13149:79;;:::i;:::-;13111:119;13269:1;13294:64;13350:7;13341:6;13330:9;13326:22;13294:64;:::i;:::-;13284:74;;13240:128;13024:351;;;;:::o;13381:169::-;13465:11;13499:6;13494:3;13487:19;13539:4;13534:3;13530:14;13515:29;;13381:169;;;;:::o;13556:166::-;13696:18;13692:1;13684:6;13680:14;13673:42;13556:166;:::o;13728:366::-;13870:3;13891:67;13955:2;13950:3;13891:67;:::i;:::-;13884:74;;13967:93;14056:3;13967:93;:::i;:::-;14085:2;14080:3;14076:12;14069:19;;13728:366;;;:::o;14100:419::-;14266:4;14304:2;14293:9;14289:18;14281:26;;14353:9;14347:4;14343:20;14339:1;14328:9;14324:17;14317:47;14381:131;14507:4;14381:131;:::i;:::-;14373:139;;14100:419;;;:::o;14525:159::-;14665:11;14661:1;14653:6;14649:14;14642:35;14525:159;:::o;14690:365::-;14832:3;14853:66;14917:1;14912:3;14853:66;:::i;:::-;14846:73;;14928:93;15017:3;14928:93;:::i;:::-;15046:2;15041:3;15037:12;15030:19;;14690:365;;;:::o;15061:419::-;15227:4;15265:2;15254:9;15250:18;15242:26;;15314:9;15308:4;15304:20;15300:1;15289:9;15285:17;15278:47;15342:131;15468:4;15342:131;:::i;:::-;15334:139;;15061:419;;;:::o;15486:170::-;15626:22;15622:1;15614:6;15610:14;15603:46;15486:170;:::o;15662:366::-;15804:3;15825:67;15889:2;15884:3;15825:67;:::i;:::-;15818:74;;15901:93;15990:3;15901:93;:::i;:::-;16019:2;16014:3;16010:12;16003:19;;15662:366;;;:::o;16034:419::-;16200:4;16238:2;16227:9;16223:18;16215:26;;16287:9;16281:4;16277:20;16273:1;16262:9;16258:17;16251:47;16315:131;16441:4;16315:131;:::i;:::-;16307:139;;16034:419;;;:::o;16459:169::-;16599:21;16595:1;16587:6;16583:14;16576:45;16459:169;:::o;16634:366::-;16776:3;16797:67;16861:2;16856:3;16797:67;:::i;:::-;16790:74;;16873:93;16962:3;16873:93;:::i;:::-;16991:2;16986:3;16982:12;16975:19;;16634:366;;;:::o;17006:419::-;17172:4;17210:2;17199:9;17195:18;17187:26;;17259:9;17253:4;17249:20;17245:1;17234:9;17230:17;17223:47;17287:131;17413:4;17287:131;:::i;:::-;17279:139;;17006:419;;;:::o;17431:116::-;17501:21;17516:5;17501:21;:::i;:::-;17494:5;17491:32;17481:60;;17537:1;17534;17527:12;17481:60;17431:116;:::o;17553:137::-;17607:5;17638:6;17632:13;17623:22;;17654:30;17678:5;17654:30;:::i;:::-;17553:137;;;;:::o;17696:345::-;17763:6;17812:2;17800:9;17791:7;17787:23;17783:32;17780:119;;;17818:79;;:::i;:::-;17780:119;17938:1;17963:61;18016:7;18007:6;17996:9;17992:22;17963:61;:::i;:::-;17953:71;;17909:125;17696:345;;;;:::o;18047:170::-;18187:22;18183:1;18175:6;18171:14;18164:46;18047:170;:::o;18223:366::-;18365:3;18386:67;18450:2;18445:3;18386:67;:::i;:::-;18379:74;;18462:93;18551:3;18462:93;:::i;:::-;18580:2;18575:3;18571:12;18564:19;;18223:366;;;:::o;18595:419::-;18761:4;18799:2;18788:9;18784:18;18776:26;;18848:9;18842:4;18838:20;18834:1;18823:9;18819:17;18812:47;18876:131;19002:4;18876:131;:::i;:::-;18868:139;;18595:419;;;:::o;19020:172::-;19160:24;19156:1;19148:6;19144:14;19137:48;19020:172;:::o;19198:366::-;19340:3;19361:67;19425:2;19420:3;19361:67;:::i;:::-;19354:74;;19437:93;19526:3;19437:93;:::i;:::-;19555:2;19550:3;19546:12;19539:19;;19198:366;;;:::o;19570:419::-;19736:4;19774:2;19763:9;19759:18;19751:26;;19823:9;19817:4;19813:20;19809:1;19798:9;19794:17;19787:47;19851:131;19977:4;19851:131;:::i;:::-;19843:139;;19570:419;;;:::o;19995:332::-;20116:4;20154:2;20143:9;20139:18;20131:26;;20167:71;20235:1;20224:9;20220:17;20211:6;20167:71;:::i;:::-;20248:72;20316:2;20305:9;20301:18;20292:6;20248:72;:::i;:::-;19995:332;;;;;:::o;20333:170::-;20473:22;20469:1;20461:6;20457:14;20450:46;20333:170;:::o;20509:366::-;20651:3;20672:67;20736:2;20731:3;20672:67;:::i;:::-;20665:74;;20748:93;20837:3;20748:93;:::i;:::-;20866:2;20861:3;20857:12;20850:19;;20509:366;;;:::o;20881:419::-;21047:4;21085:2;21074:9;21070:18;21062:26;;21134:9;21128:4;21124:20;21120:1;21109:9;21105:17;21098:47;21162:131;21288:4;21162:131;:::i;:::-;21154:139;;20881:419;;;:::o;21306:236::-;21446:34;21442:1;21434:6;21430:14;21423:58;21515:19;21510:2;21502:6;21498:15;21491:44;21306:236;:::o;21548:366::-;21690:3;21711:67;21775:2;21770:3;21711:67;:::i;:::-;21704:74;;21787:93;21876:3;21787:93;:::i;:::-;21905:2;21900:3;21896:12;21889:19;;21548:366;;;:::o;21920:419::-;22086:4;22124:2;22113:9;22109:18;22101:26;;22173:9;22167:4;22163:20;22159:1;22148:9;22144:17;22137:47;22201:131;22327:4;22201:131;:::i;:::-;22193:139;;21920:419;;;:::o;22345:240::-;22485:34;22481:1;22473:6;22469:14;22462:58;22554:23;22549:2;22541:6;22537:15;22530:48;22345:240;:::o;22591:366::-;22733:3;22754:67;22818:2;22813:3;22754:67;:::i;:::-;22747:74;;22830:93;22919:3;22830:93;:::i;:::-;22948:2;22943:3;22939:12;22932:19;;22591:366;;;:::o;22963:419::-;23129:4;23167:2;23156:9;23152:18;23144:26;;23216:9;23210:4;23206:20;23202:1;23191:9;23187:17;23180:47;23244:131;23370:4;23244:131;:::i;:::-;23236:139;;22963:419;;;:::o;23388:231::-;23528:34;23524:1;23516:6;23512:14;23505:58;23597:14;23592:2;23584:6;23580:15;23573:39;23388:231;:::o;23625:366::-;23767:3;23788:67;23852:2;23847:3;23788:67;:::i;:::-;23781:74;;23864:93;23953:3;23864:93;:::i;:::-;23982:2;23977:3;23973:12;23966:19;;23625:366;;;:::o;23997:419::-;24163:4;24201:2;24190:9;24186:18;24178:26;;24250:9;24244:4;24240:20;24236:1;24225:9;24221:17;24214:47;24278:131;24404:4;24278:131;:::i;:::-;24270:139;;23997:419;;;:::o;24422:165::-;24562:17;24558:1;24550:6;24546:14;24539:41;24422:165;:::o;24593:366::-;24735:3;24756:67;24820:2;24815:3;24756:67;:::i;:::-;24749:74;;24832:93;24921:3;24832:93;:::i;:::-;24950:2;24945:3;24941:12;24934:19;;24593:366;;;:::o;24965:419::-;25131:4;25169:2;25158:9;25154:18;25146:26;;25218:9;25212:4;25208:20;25204:1;25193:9;25189:17;25182:47;25246:131;25372:4;25246:131;:::i;:::-;25238:139;;24965:419;;;:::o;25390:165::-;25530:17;25526:1;25518:6;25514:14;25507:41;25390:165;:::o;25561:366::-;25703:3;25724:67;25788:2;25783:3;25724:67;:::i;:::-;25717:74;;25800:93;25889:3;25800:93;:::i;:::-;25918:2;25913:3;25909:12;25902:19;;25561:366;;;:::o;25933:419::-;26099:4;26137:2;26126:9;26122:18;26114:26;;26186:9;26180:4;26176:20;26172:1;26161:9;26157:17;26150:47;26214:131;26340:4;26214:131;:::i;:::-;26206:139;;25933:419;;;:::o;26358:166::-;26498:18;26494:1;26486:6;26482:14;26475:42;26358:166;:::o;26530:366::-;26672:3;26693:67;26757:2;26752:3;26693:67;:::i;:::-;26686:74;;26769:93;26858:3;26769:93;:::i;:::-;26887:2;26882:3;26878:12;26871:19;;26530:366;;;:::o;26902:419::-;27068:4;27106:2;27095:9;27091:18;27083:26;;27155:9;27149:4;27145:20;27141:1;27130:9;27126:17;27119:47;27183:131;27309:4;27183:131;:::i;:::-;27175:139;;26902:419;;;:::o;27327:225::-;27467:34;27463:1;27455:6;27451:14;27444:58;27536:8;27531:2;27523:6;27519:15;27512:33;27327:225;:::o;27558:366::-;27700:3;27721:67;27785:2;27780:3;27721:67;:::i;:::-;27714:74;;27797:93;27886:3;27797:93;:::i;:::-;27915:2;27910:3;27906:12;27899:19;;27558:366;;;:::o;27930:419::-;28096:4;28134:2;28123:9;28119:18;28111:26;;28183:9;28177:4;28173:20;28169:1;28158:9;28154:17;28147:47;28211:131;28337:4;28211:131;:::i;:::-;28203:139;;27930:419;;;:::o;28355:172::-;28495:24;28491:1;28483:6;28479:14;28472:48;28355:172;:::o;28533:366::-;28675:3;28696:67;28760:2;28755:3;28696:67;:::i;:::-;28689:74;;28772:93;28861:3;28772:93;:::i;:::-;28890:2;28885:3;28881:12;28874:19;;28533:366;;;:::o;28905:419::-;29071:4;29109:2;29098:9;29094:18;29086:26;;29158:9;29152:4;29148:20;29144:1;29133:9;29129:17;29122:47;29186:131;29312:4;29186:131;:::i;:::-;29178:139;;28905:419;;;:::o;29330:180::-;29378:77;29375:1;29368:88;29475:4;29472:1;29465:15;29499:4;29496:1;29489:15;29516:233;29555:3;29578:24;29596:5;29578:24;:::i;:::-;29569:33;;29624:66;29617:5;29614:77;29611:103;;29694:18;;:::i;:::-;29611:103;29741:1;29734:5;29730:13;29723:20;;29516:233;;;:::o;29755:194::-;29795:4;29815:20;29833:1;29815:20;:::i;:::-;29810:25;;29849:20;29867:1;29849:20;:::i;:::-;29844:25;;29893:1;29890;29886:9;29878:17;;29917:1;29911:4;29908:11;29905:37;;;29922:18;;:::i;:::-;29905:37;29755:194;;;;:::o;29955:182::-;30095:34;30091:1;30083:6;30079:14;30072:58;29955:182;:::o;30143:366::-;30285:3;30306:67;30370:2;30365:3;30306:67;:::i;:::-;30299:74;;30382:93;30471:3;30382:93;:::i;:::-;30500:2;30495:3;30491:12;30484:19;;30143:366;;;:::o;30515:419::-;30681:4;30719:2;30708:9;30704:18;30696:26;;30768:9;30762:4;30758:20;30754:1;30743:9;30739:17;30732:47;30796:131;30922:4;30796:131;:::i;:::-;30788:139;;30515:419;;;:::o;30940:180::-;30988:77;30985:1;30978:88;31085:4;31082:1;31075:15;31109:4;31106:1;31099:15;31126:185;31166:1;31183:20;31201:1;31183:20;:::i;:::-;31178:25;;31217:20;31235:1;31217:20;:::i;:::-;31212:25;;31256:1;31246:35;;31261:18;;:::i;:::-;31246:35;31303:1;31300;31296:9;31291:14;;31126:185;;;;:::o;31317:169::-;31457:21;31453:1;31445:6;31441:14;31434:45;31317:169;:::o;31492:366::-;31634:3;31655:67;31719:2;31714:3;31655:67;:::i;:::-;31648:74;;31731:93;31820:3;31731:93;:::i;:::-;31849:2;31844:3;31840:12;31833:19;;31492:366;;;:::o;31864:419::-;32030:4;32068:2;32057:9;32053:18;32045:26;;32117:9;32111:4;32107:20;32103:1;32092:9;32088:17;32081:47;32145:131;32271:4;32145:131;:::i;:::-;32137:139;;31864:419;;;:::o;32289:221::-;32429:34;32425:1;32417:6;32413:14;32406:58;32498:4;32493:2;32485:6;32481:15;32474:29;32289:221;:::o;32516:366::-;32658:3;32679:67;32743:2;32738:3;32679:67;:::i;:::-;32672:74;;32755:93;32844:3;32755:93;:::i;:::-;32873:2;32868:3;32864:12;32857:19;;32516:366;;;:::o;32888:419::-;33054:4;33092:2;33081:9;33077:18;33069:26;;33141:9;33135:4;33131:20;33127:1;33116:9;33112:17;33105:47;33169:131;33295:4;33169:131;:::i;:::-;33161:139;;32888:419;;;:::o;33313:173::-;33453:25;33449:1;33441:6;33437:14;33430:49;33313:173;:::o;33492:366::-;33634:3;33655:67;33719:2;33714:3;33655:67;:::i;:::-;33648:74;;33731:93;33820:3;33731:93;:::i;:::-;33849:2;33844:3;33840:12;33833:19;;33492:366;;;:::o;33864:419::-;34030:4;34068:2;34057:9;34053:18;34045:26;;34117:9;34111:4;34107:20;34103:1;34092:9;34088:17;34081:47;34145:131;34271:4;34145:131;:::i;:::-;34137:139;;33864:419;;;:::o;34289:181::-;34429:33;34425:1;34417:6;34413:14;34406:57;34289:181;:::o;34476:366::-;34618:3;34639:67;34703:2;34698:3;34639:67;:::i;:::-;34632:74;;34715:93;34804:3;34715:93;:::i;:::-;34833:2;34828:3;34824:12;34817:19;;34476:366;;;:::o;34848:419::-;35014:4;35052:2;35041:9;35037:18;35029:26;;35101:9;35095:4;35091:20;35087:1;35076:9;35072:17;35065:47;35129:131;35255:4;35129:131;:::i;:::-;35121:139;;34848:419;;;:::o;35273:175::-;35413:27;35409:1;35401:6;35397:14;35390:51;35273:175;:::o;35454:366::-;35596:3;35617:67;35681:2;35676:3;35617:67;:::i;:::-;35610:74;;35693:93;35782:3;35693:93;:::i;:::-;35811:2;35806:3;35802:12;35795:19;;35454:366;;;:::o;35826:419::-;35992:4;36030:2;36019:9;36015:18;36007:26;;36079:9;36073:4;36069:20;36065:1;36054:9;36050:17;36043:47;36107:131;36233:4;36107:131;:::i;:::-;36099:139;;35826:419;;;:::o;36251:442::-;36400:4;36438:2;36427:9;36423:18;36415:26;;36451:71;36519:1;36508:9;36504:17;36495:6;36451:71;:::i;:::-;36532:72;36600:2;36589:9;36585:18;36576:6;36532:72;:::i;:::-;36614;36682:2;36671:9;36667:18;36658:6;36614:72;:::i;:::-;36251:442;;;;;;:::o;36699:191::-;36739:3;36758:20;36776:1;36758:20;:::i;:::-;36753:25;;36792:20;36810:1;36792:20;:::i;:::-;36787:25;;36835:1;36832;36828:9;36821:16;;36856:3;36853:1;36850:10;36847:36;;;36863:18;;:::i;:::-;36847:36;36699:191;;;;:::o;36896:410::-;36936:7;36959:20;36977:1;36959:20;:::i;:::-;36954:25;;36993:20;37011:1;36993:20;:::i;:::-;36988:25;;37048:1;37045;37041:9;37070:30;37088:11;37070:30;:::i;:::-;37059:41;;37249:1;37240:7;37236:15;37233:1;37230:22;37210:1;37203:9;37183:83;37160:139;;37279:18;;:::i;:::-;37160:139;36944:362;36896:410;;;;:::o

Swarm Source

ipfs://acb97ed99c1600d650420723d8b0e017be05b5663c4eefaecc19240ef5636ac1

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

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