Contract 0x56979af35ddbce14f5dbba1571cafb9a35d48401

 

Contract Overview

Balance:
339.491690788260067075 BNB

BNB Value:
$113,938.60 (@ $335.62/BNB)

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0x72776834cf353ed04327a6d65b62e53520da3d63a5761e86eabe534304a97d1b84549562021-06-20 7:22:535 mins ago0x532fd36ea87cf9f316fad40b39385a4716065b8c IN  0x56979af35ddbce14f5dbba1571cafb9a35d484016.3 BNB0.00391438
0x6f2a006969817be7ff51aac898ef818834f3416fd9b0614a9a18f0f6aea1e5c284537232021-06-20 6:21:141 hr 7 mins ago0x8ba2451fd59b50a1b0205ea3497dc89b2af5eec8 IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010 BNB0.0003461
0x283c0ff3f6ebb7f343324ffbd0284e6f6bdd7bfdb6b4398606b7f3cb4401741384533352021-06-20 6:01:501 hr 26 mins ago0x54273b4a1694cce252832a37e181e8c5aaafceb2 IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010 BNB0.00041532
0x317619e9ae410059827055a1e5de164530f61a9df54e55dd99ed526da03b522384530822021-06-20 5:49:111 hr 39 mins ago0x35597c47e6b17964df6a60cb1cf2735171ac2cd2 IN  0x56979af35ddbce14f5dbba1571cafb9a35d4840116.5 BNB0.00045648
0xc1fc1d7b0d0c5ff4291674ae7bd4b128be8c3cbcb6a8e01439600fbc6e10446084522952021-06-20 5:09:312 hrs 18 mins ago0x95742cef4f8baf4183dcfe59f5187a8ae03f6476 IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010.099188945768863 BNB0.000457776
0x0a382cfcf892799d18944819369f79bf173b0ba64f7a5a57b6c0e37f90ce3eb284517412021-06-20 4:41:492 hrs 46 mins ago0xace16bc9ff7434aa075b54416fc291dc9abf5195 IN  0x56979af35ddbce14f5dbba1571cafb9a35d484011.15277797 BNB0.00045648
0x029fddaebdeca0125637d4075e3243cb9dc4ad96c9983d3a674edefcc1c49c8d84496042021-06-20 2:54:584 hrs 33 mins ago0xab34776469d4084a4790251a97d7324b8351605c IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010 BNB0.00042104
0xad2b745bf4427e8a9e9f701ce5a4f9e7356f2b799389b48c0b9e8c5d0e9eabeb84494972021-06-20 2:49:374 hrs 38 mins ago0xab34776469d4084a4790251a97d7324b8351605c IN  0x56979af35ddbce14f5dbba1571cafb9a35d484011 BNB0.00038148
0x36919ba3f784e3bb598598b1b0825ceccfc1e40206c75a77878327b7a78d799184490942021-06-20 2:29:284 hrs 58 mins ago0xab34776469d4084a4790251a97d7324b8351605c IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010 BNB0.00042104
0xd6d8e5b9957ff2d94977efdc2df86c8c84699a3acaf21e430510043092b274c384486872021-06-20 2:09:075 hrs 19 mins ago0x8b8da69ea24252a8b8a46014a3a6c34f99866566 IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010 BNB0.003077905
0xfeedf86109e74ea635cb708d4ea3768b3869f1a347de89eafc965c3dc8ed02d784467812021-06-20 0:33:496 hrs 54 mins ago0xf6495b7770bda0d6483ba800d22592d54819a7e1 IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010 BNB0.0004211
0xdd289ed30d30f7172335cfbaea29cde6fb0d18d48160689350edd2241dcc9bd184402652021-06-19 19:07:5212 hrs 20 mins ago0x6d41ec4b9613fe86d4796524abe114c97bd35eee IN  0x56979af35ddbce14f5dbba1571cafb9a35d484014.5 BNB0.00038148
0xe8110f6a282ed42b6622cc3d8a2f3d23aac38049ff55c47e3e3c3a6d3dfb07c284392892021-06-19 18:18:5113 hrs 9 mins ago0x84e276e751072ba1ea06688876a818a1dd173076 IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010 BNB0.00042104
0x6b2b2d2b6f2870ae0f0ff711655407608df24a53d5260ab4d376aecd1fc15d8484387422021-06-19 17:51:3013 hrs 36 mins ago0xf027433bc8d0ec87f1d970b2b6fd5f8a9d237464 IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010 BNB0.00041932
0xeb2973f1339086ecfa186ee4a4ebcd3a3759f6457586e72d4dc5a7c2c2e4f0fe84384872021-06-19 17:38:4513 hrs 49 mins ago0xdd7f92dd0cd24ffecb06ebd86c735ea3ce11d860 IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010 BNB0.00034444
0x86d0e734193c4b62f9ba020cdefacc0e931f3643431d119f5eb2bcdf37c3520084381562021-06-19 17:21:5414 hrs 6 mins ago0x9c7718ca6230b23a2202934513308e835f03d4fb IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010.06 BNB0.00045476
0x17a19496a73352d1106a155897d113157ec3aa5ff213c34b227fd0d734e35d6984380812021-06-19 17:18:0914 hrs 10 mins ago0x532fd36ea87cf9f316fad40b39385a4716065b8c IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010.326928741413114 BNB0.0039126
0x4b279455381b0e259afa797af5b25b5aeb4e3c45c90b02c325a0ad33faf6d70284340822021-06-19 13:53:5217 hrs 34 mins ago0x63c4c7f4e1c66a8497317b0b3130904fb71ce17e IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010.127154087458474 BNB0.00045476
0x4b4abf2dd460d94d4ced6186bc10bf556da344906f8efb5e14cf04b4c9ed179484340282021-06-19 13:51:0617 hrs 37 mins ago0x661ca901dfcc1707afda7e4f7cf71060d2c0aa93 IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010 BNB0.00034432
0x365d02810c707e61f1f2fbb0f20d461d08b896494d4cf9318fe1d72dd17c674884301672021-06-19 10:34:3720 hrs 53 mins ago0xa51873ed3fd30b1b71a443835afe4060109116c3 IN  0x56979af35ddbce14f5dbba1571cafb9a35d484013 BNB0.00045476
0xc189901d747e1f5508cfdd9cb8f1727df679232409e0a330169d925a69d2cc2884294592021-06-19 9:58:3221 hrs 29 mins ago0xb71d05cf5cdf7a9b15b20b9aab5e91332c271c96 IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010.5 BNB0.0034792
0x902be88b1182efaefc1e4e9225162444c86313f1abbcc6f5d21aeb5e7756c78984292602021-06-19 9:48:3421 hrs 39 mins ago0x9146af83867e16e66d610797d7961da7bb20e534 IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010 BNB0.003189138
0x0e160b18555e2b8a5e0bcca4b75da1be621944756ed0a0dc4a57de0d74a975f684292432021-06-19 9:47:4321 hrs 40 mins ago0x9146af83867e16e66d610797d7961da7bb20e534 IN  0x56979af35ddbce14f5dbba1571cafb9a35d484011 BNB0.004456512
0xc791831f180327463732d0ff4c7b0e7a1cf9122c93a3664ebcb2ac780d211de084288362021-06-19 9:27:2222 hrs ago0x22654e56cddf6e4de521ea5860f6755840dc02cc IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010 BNB0.00041926
0x357e3c4c492ed49c7e2c60c4eafe21fee06d0da2f2c153c4781627733cd593b484288242021-06-19 9:26:4622 hrs 1 min ago0x742fc1b6c46573a1910457223d087b8df8df9de2 IN  0x56979af35ddbce14f5dbba1571cafb9a35d484010 BNB0.00260097
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x72776834cf353ed04327a6d65b62e53520da3d63a5761e86eabe534304a97d1b84549562021-06-20 7:22:535 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d48401 0x3687907e643ec7b74ef7cf5294d8bc4184644cf725.182275742172705555 BNB
0x6f2a006969817be7ff51aac898ef818834f3416fd9b0614a9a18f0f6aea1e5c284537232021-06-20 6:21:141 hr 7 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d484010x8ba2451fd59b50a1b0205ea3497dc89b2af5eec80.759152535621517519 BNB
0x283c0ff3f6ebb7f343324ffbd0284e6f6bdd7bfdb6b4398606b7f3cb4401741384533352021-06-20 6:01:501 hr 26 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d484010x54273b4a1694cce252832a37e181e8c5aaafceb20.515433493286040924 BNB
0x029fddaebdeca0125637d4075e3243cb9dc4ad96c9983d3a674edefcc1c49c8d84496042021-06-20 2:54:584 hrs 33 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d484010xab34776469d4084a4790251a97d7324b8351605c1.000103966851489473 BNB
0x36919ba3f784e3bb598598b1b0825ceccfc1e40206c75a77878327b7a78d799184490942021-06-20 2:29:284 hrs 58 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d484010xab34776469d4084a4790251a97d7324b8351605c0.913387854939456494 BNB
0xd6d8e5b9957ff2d94977efdc2df86c8c84699a3acaf21e430510043092b274c384486872021-06-20 2:09:075 hrs 19 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d484010x5a27e6d28f450cba093eddde16bef93ba7dfd5630.215750951057988827 BNB
0xd6d8e5b9957ff2d94977efdc2df86c8c84699a3acaf21e430510043092b274c384486872021-06-20 2:09:075 hrs 19 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d484010x8b8da69ea24252a8b8a46014a3a6c34f998665660.072732594617114377 BNB
0xd6d8e5b9957ff2d94977efdc2df86c8c84699a3acaf21e430510043092b274c384486872021-06-20 2:09:075 hrs 19 mins ago 0x2584244ce798c90a0d229c495761d004fd908f34 0x56979af35ddbce14f5dbba1571cafb9a35d484011.454651892342287547 BNB
0xfeedf86109e74ea635cb708d4ea3768b3869f1a347de89eafc965c3dc8ed02d784467812021-06-20 0:33:496 hrs 54 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d484010xf6495b7770bda0d6483ba800d22592d54819a7e12.057415403640928509 BNB
0xe8110f6a282ed42b6622cc3d8a2f3d23aac38049ff55c47e3e3c3a6d3dfb07c284392892021-06-19 18:18:5113 hrs 9 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d484010x84e276e751072ba1ea06688876a818a1dd1730760.740736202093650618 BNB
0x6b2b2d2b6f2870ae0f0ff711655407608df24a53d5260ab4d376aecd1fc15d8484387422021-06-19 17:51:3013 hrs 36 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d484010xf027433bc8d0ec87f1d970b2b6fd5f8a9d23746460.882339141239119216 BNB
0xeb2973f1339086ecfa186ee4a4ebcd3a3759f6457586e72d4dc5a7c2c2e4f0fe84384872021-06-19 17:38:4513 hrs 49 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d484010xdd7f92dd0cd24ffecb06ebd86c735ea3ce11d860150.1978134734844622 BNB
0x17a19496a73352d1106a155897d113157ec3aa5ff213c34b227fd0d734e35d6984380812021-06-19 17:18:0914 hrs 10 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d48401 0x3687907e643ec7b74ef7cf5294d8bc4184644cf71.29793501534298867 BNB
0x4b4abf2dd460d94d4ced6186bc10bf556da344906f8efb5e14cf04b4c9ed179484340282021-06-19 13:51:0617 hrs 37 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d484010x661ca901dfcc1707afda7e4f7cf71060d2c0aa930.006132819185927747 BNB
0xc189901d747e1f5508cfdd9cb8f1727df679232409e0a330169d925a69d2cc2884294592021-06-19 9:58:3221 hrs 29 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d48401 0x2584244ce798c90a0d229c495761d004fd908f340.5 BNB
0x902be88b1182efaefc1e4e9225162444c86313f1abbcc6f5d21aeb5e7756c78984292602021-06-19 9:48:3421 hrs 39 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d484010x9146af83867e16e66d610797d7961da7bb20e5340.994996862296718269 BNB
0x902be88b1182efaefc1e4e9225162444c86313f1abbcc6f5d21aeb5e7756c78984292602021-06-19 9:48:3421 hrs 39 mins ago 0x3687907e643ec7b74ef7cf5294d8bc4184644cf7 0x56979af35ddbce14f5dbba1571cafb9a35d484011.994997185736596464 BNB
0x0e160b18555e2b8a5e0bcca4b75da1be621944756ed0a0dc4a57de0d74a975f684292432021-06-19 9:47:4321 hrs 40 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d48401 0x3687907e643ec7b74ef7cf5294d8bc4184644cf72 BNB
0xc791831f180327463732d0ff4c7b0e7a1cf9122c93a3664ebcb2ac780d211de084288362021-06-19 9:27:2222 hrs ago 0x56979af35ddbce14f5dbba1571cafb9a35d484010x22654e56cddf6e4de521ea5860f6755840dc02cc1.014570222227204576 BNB
0x357e3c4c492ed49c7e2c60c4eafe21fee06d0da2f2c153c4781627733cd593b484288242021-06-19 9:26:4622 hrs 1 min ago 0x56979af35ddbce14f5dbba1571cafb9a35d484010x742fc1b6c46573a1910457223d087b8df8df9de21.033509171861671382 BNB
0x357e3c4c492ed49c7e2c60c4eafe21fee06d0da2f2c153c4781627733cd593b484288242021-06-19 9:26:4622 hrs 1 min ago 0x3687907e643ec7b74ef7cf5294d8bc4184644cf7 0x56979af35ddbce14f5dbba1571cafb9a35d484012.070903175647595258 BNB
0xc57f02c4b566c9ee2039ea378fa56525c7a7f9e86ef5667e76965a39616b69b284288072021-06-19 9:25:5522 hrs 2 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d48401 0x3687907e643ec7b74ef7cf5294d8bc4184644cf71.537393668251442176 BNB
0x84a3f9c0406a4dbb04e4022e0ec188444b8c4e5ca6bed2b88952ff2d6d4dad1084255542021-06-19 6:43:111 day 45 mins ago 0x56979af35ddbce14f5dbba1571cafb9a35d48401 0x3687907e643ec7b74ef7cf5294d8bc4184644cf70.021757339807514722 BNB
0xa845d139f93d28308e077581219da71c8b379d15585ddf65190f1f57b8b2c7cd84241432021-06-19 5:32:351 day 1 hr ago 0x56979af35ddbce14f5dbba1571cafb9a35d484010x7f666527ecc80219f7c0d5cb3b29186ed821c3351.220784764608275924 BNB
0xa845d139f93d28308e077581219da71c8b379d15585ddf65190f1f57b8b2c7cd84241432021-06-19 5:32:351 day 1 hr ago 0x3687907e643ec7b74ef7cf5294d8bc4184644cf7 0x56979af35ddbce14f5dbba1571cafb9a35d484012.265564588196045045 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Bank

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-04-15
*/

// File: openzeppelin-solidity-2.3.0/contracts/ownership/Ownable.sol

pragma solidity ^0.5.0;

/**
 * @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.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be aplied to your functions to restrict their use to
 * the owner.
 */
contract Ownable {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _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 onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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 onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: openzeppelin-solidity-2.3.0/contracts/token/ERC20/IERC20.sol

pragma solidity ^0.5.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see `ERC20Detailed`.
 */
interface IERC20 {
    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a `Transfer` event.
     */
    function transfer(address recipient, 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.
     *
     * > 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @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);
}

// File: openzeppelin-solidity-2.3.0/contracts/math/SafeMath.sol

pragma solidity ^0.5.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @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) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @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) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    /**
     * @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) {
        // 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-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts 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) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

// File: openzeppelin-solidity-2.3.0/contracts/token/ERC20/ERC20.sol

pragma solidity ^0.5.0;



/**
 * @dev Implementation of the `IERC20` interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using `_mint`.
 * For a generic mechanism see `ERC20Mintable`.
 *
 * *For a detailed writeup see our guide [How to implement supply
 * mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).*
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an `Approval` event is emitted on calls to `transferFrom`.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard `decreaseAllowance` and `increaseAllowance`
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See `IERC20.approve`.
 */
contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;

    /**
     * @dev See `IERC20.totalSupply`.
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See `IERC20.balanceOf`.
     */
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See `IERC20.transfer`.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    /**
     * @dev See `IERC20.allowance`.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See `IERC20.approve`.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 value) public returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev See `IERC20.transferFrom`.
     *
     * Emits an `Approval` event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of `ERC20`;
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `value`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IERC20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IERC20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to `transfer`, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a `Transfer` event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a `Transfer` event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

     /**
     * @dev Destoys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a `Transfer` event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 value) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        _totalSupply = _totalSupply.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an `Approval` event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    /**
     * @dev Destoys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     *
     * See `_burn` and `_approve`.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount));
    }
}

// File: openzeppelin-solidity-2.3.0/contracts/math/Math.sol

pragma solidity ^0.5.0;

/**
 * @dev Standard math utilities missing in the Solidity language.
 */
library Math {
    /**
     * @dev Returns the largest of two numbers.
     */
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    /**
     * @dev Returns the smallest of two numbers.
     */
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    /**
     * @dev Returns the average of two numbers. The result is rounded towards
     * zero.
     */
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b) / 2 can overflow, so we distribute
        return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
    }
}

// File: openzeppelin-solidity-2.3.0/contracts/utils/ReentrancyGuard.sol

pragma solidity ^0.5.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the `nonReentrant` modifier
 * available, which can be aplied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 */
contract ReentrancyGuard {
    /// @dev counter to allow mutex lock with only one SSTORE operation
    uint256 private _guardCounter;

    constructor () internal {
        // The counter starts at one to prevent changing it from zero to a non-zero
        // value, which is a more expensive operation.
        _guardCounter = 1;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _guardCounter += 1;
        uint256 localCounter = _guardCounter;
        _;
        require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call");
    }
}

// File: contracts/BankConfig.sol

pragma solidity 0.5.16;

interface BankConfig {
    /// @dev Return minimum ETH debt size per position.
    function minDebtSize() external view returns (uint256);

    /// @dev Return the interest rate per second, using 1e18 as denom.
    function getInterestRate(uint256 debt, uint256 floating) external view returns (uint256);

    /// @dev Return the bps rate for reserve pool.
    function getReservePoolBps() external view returns (uint256);

    /// @dev Return the bps rate for Avada Kill caster.
    function getKillBps() external view returns (uint256);

    /// @dev Return whether the given address is a goblin.
    function isGoblin(address goblin) external view returns (bool);

    /// @dev Return whether the given goblin accepts more debt. Revert on non-goblin.
    function acceptDebt(address goblin) external view returns (bool);

    /// @dev Return the work factor for the goblin + ETH debt, using 1e4 as denom. Revert on non-goblin.
    function workFactor(address goblin, uint256 debt) external view returns (uint256);

    /// @dev Return the kill factor for the goblin + ETH debt, using 1e4 as denom. Revert on non-goblin.
    function killFactor(address goblin, uint256 debt) external view returns (uint256);
}

// File: contracts/Goblin.sol

pragma solidity 0.5.16;

interface Goblin {
    /// @dev Work on a (potentially new) position. Optionally send ETH back to Bank.
    function work(uint256 id, address user, uint256 debt, bytes calldata data) external payable;

    /// @dev Re-invest whatever the goblin is working on.
    function reinvest() external;

    /// @dev Return the amount of ETH wei to get back if we are to liquidate the position.
    function health(uint256 id) external view returns (uint256);

    /// @dev Liquidate the given position to ETH. Send all ETH back to Bank.
    function liquidate(uint256 id) external;
}

// File: contracts/SafeToken.sol

pragma solidity 0.5.16;

interface ERC20Interface {
    function balanceOf(address user) external view returns (uint256);
}

library SafeToken {
    function myBalance(address token) internal view returns (uint256) {
        return ERC20Interface(token).balanceOf(address(this));
    }

    function balanceOf(address token, address user) internal view returns (uint256) {
        return ERC20Interface(token).balanceOf(user);
    }

    function safeApprove(address token, address to, uint256 value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "!safeApprove");
    }

    function safeTransfer(address token, address to, uint256 value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "!safeTransfer");
    }

    function safeTransferFrom(address token, address from, address to, uint256 value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "!safeTransferFrom");
    }

    function safeTransferETH(address to, uint256 value) internal {
        (bool success, ) = to.call.value(value)(new bytes(0));
        require(success, "!safeTransferETH");
    }
}

// File: contracts/Bank.sol

pragma solidity 0.5.16;









contract Bank is ERC20, ReentrancyGuard, Ownable {
    /// @notice Libraries
    using SafeToken for address;
    using SafeMath for uint256;

    /// @notice Events
    event AddDebt(uint256 indexed id, uint256 debtShare);
    event RemoveDebt(uint256 indexed id, uint256 debtShare);
    event Work(uint256 indexed id, uint256 loan);
    event Kill(uint256 indexed id, address indexed killer, uint256 prize, uint256 left);

    string public name = "Interest Bearing BNB";
    string public symbol = "iBNB";
    uint8 public decimals = 18;

    bool public killBpsToTreasury;
    address public treasuryAddr;

    struct Position {
        address goblin;
        address owner;
        uint256 debtShare;
    }

    BankConfig public config;
    mapping (uint256 => Position) public positions;
    uint256 public nextPositionID = 1;

    uint256 public glbDebtShare;
    uint256 public glbDebtVal;
    uint256 public lastAccrueTime;
    uint256 public reservePool;

    /// @dev Require that the caller must be an EOA account to avoid flash loans.
    modifier onlyEOA() {
        require(msg.sender == tx.origin, "not eoa");
        _;
    }

    /// @dev Add more debt to the global debt pool.
    modifier accrue(uint256 msgValue) {
        if (now > lastAccrueTime) {
            uint256 interest = pendingInterest(msgValue);
            uint256 toReserve = interest.mul(config.getReservePoolBps()).div(10000);
            reservePool = reservePool.add(toReserve);
            glbDebtVal = glbDebtVal.add(interest);
            lastAccrueTime = now;
        }
        _;
    }

    constructor(BankConfig _config,bool _killBpsToTreasury,address _treasuryAddr) public {
        config = _config;
        killBpsToTreasury = _killBpsToTreasury;
        treasuryAddr = _treasuryAddr;
        lastAccrueTime = now;
    }

    /// @dev Return the pending interest that will be accrued in the next call.
    /// @param msgValue Balance value to subtract off address(this).balance when called from payable functions.
    function pendingInterest(uint256 msgValue) public view returns (uint256) {
        if (now > lastAccrueTime) {
            uint256 timePast = now.sub(lastAccrueTime);
            uint256 balance = address(this).balance.sub(msgValue);
            uint256 ratePerSec = config.getInterestRate(glbDebtVal, balance);
            return ratePerSec.mul(glbDebtVal).mul(timePast).div(1e18);
        } else {
            return 0;
        }
    }

    /// @dev Return the ETH debt value given the debt share. Be careful of unaccrued interests.
    /// @param debtShare The debt share to be converted.
    function debtShareToVal(uint256 debtShare) public view returns (uint256) {
        if (glbDebtShare == 0) return debtShare; // When there's no share, 1 share = 1 val.
        return debtShare.mul(glbDebtVal).div(glbDebtShare);
    }

    /// @dev Return the debt share for the given debt value. Be careful of unaccrued interests.
    /// @param debtVal The debt value to be converted.
    function debtValToShare(uint256 debtVal) public view returns (uint256) {
        if (glbDebtShare == 0) return debtVal; // When there's no share, 1 share = 1 val.
        return debtVal.mul(glbDebtShare).div(glbDebtVal);
    }

    /// @dev Return ETH value and debt of the given position. Be careful of unaccrued interests.
    /// @param id The position ID to query.
    function positionInfo(uint256 id) public view returns (uint256, uint256) {
        Position storage pos = positions[id];
        return (Goblin(pos.goblin).health(id), debtShareToVal(pos.debtShare));
    }

    /// @dev Return the total ETH entitled to the token holders. Be careful of unaccrued interests.
    function totalETH() public view returns (uint256) {
        return address(this).balance.add(glbDebtVal).sub(reservePool);
    }

    /// @dev Add more ETH to the bank. Hope to get some good returns.
    function deposit() external payable accrue(msg.value) nonReentrant {
        uint256 total = totalETH().sub(msg.value);
        uint256 share = total == 0 ? msg.value : msg.value.mul(totalSupply()).div(total);
        _mint(msg.sender, share);
    }

    /// @dev Withdraw ETH from the bank by burning the share tokens.
    function withdraw(uint256 share) external accrue(0) nonReentrant {
        uint256 amount = share.mul(totalETH()).div(totalSupply());
        _burn(msg.sender, share);
        SafeToken.safeTransferETH(msg.sender, amount);
    }

    /// @dev Create a new farming position to unlock your yield farming potential.
    /// @param id The ID of the position to unlock the earning. Use ZERO for new position.
    /// @param goblin The address of the authorized goblin to work for this position.
    /// @param loan The amount of ETH to borrow from the pool.
    /// @param maxReturn The max amount of ETH to return to the pool.
    /// @param data The calldata to pass along to the goblin for more working context.
    function work(uint256 id, address goblin, uint256 loan, uint256 maxReturn, bytes calldata data)
        external payable
        onlyEOA accrue(msg.value) nonReentrant
    {
        // 1. Sanity check the input position, or add a new position of ID is 0.
        if (id == 0) {
            id = nextPositionID++;
            positions[id].goblin = goblin;
            positions[id].owner = msg.sender;
        } else {
            require(id < nextPositionID, "bad position id");
            require(positions[id].goblin == goblin, "bad position goblin");
            require(positions[id].owner == msg.sender, "not position owner");
        }
        emit Work(id, loan);
        // 2. Make sure the goblin can accept more debt and remove the existing debt.
        require(config.isGoblin(goblin), "not a goblin");
        require(loan == 0 || config.acceptDebt(goblin), "goblin not accept more debt");
        uint256 debt = _removeDebt(id).add(loan);
        // 3. Perform the actual work, using a new scope to avoid stack-too-deep errors.
        uint256 back;
        {
            uint256 sendETH = msg.value.add(loan);
            require(sendETH <= address(this).balance, "insufficient ETH in the bank");
            uint256 beforeETH = address(this).balance.sub(sendETH);
            Goblin(goblin).work.value(sendETH)(id, msg.sender, debt, data);
            back = address(this).balance.sub(beforeETH);
        }
        // 4. Check and update position debt.
        uint256 lessDebt = Math.min(debt, Math.min(back, maxReturn));
        debt = debt.sub(lessDebt);
        if (debt > 0) {
            require(debt >= config.minDebtSize(), "too small debt size");
            uint256 health = Goblin(goblin).health(id);
            uint256 workFactor = config.workFactor(goblin, debt);
            require(health.mul(workFactor) >= debt.mul(10000), "bad work factor");
            _addDebt(id, debt);
        }
        // 5. Return excess ETH back.
        if (back > lessDebt) SafeToken.safeTransferETH(msg.sender, back - lessDebt);
    }

    /// @dev Kill the given to the position. Liquidate it immediately if killFactor condition is met.
    /// @param id The position ID to be killed.
    function kill(uint256 id) external onlyEOA accrue(0) nonReentrant {
        // 1. Verify that the position is eligible for liquidation.
        Position storage pos = positions[id];
        require(pos.debtShare > 0, "no debt");
        uint256 debt = _removeDebt(id);
        uint256 health = Goblin(pos.goblin).health(id);
        uint256 killFactor = config.killFactor(pos.goblin, debt);
        require(health.mul(killFactor) < debt.mul(10000), "can't liquidate");
        // 2. Perform liquidation and compute the amount of ETH received.
        uint256 beforeETH = address(this).balance;
        Goblin(pos.goblin).liquidate(id);
        uint256 back = address(this).balance.sub(beforeETH);
        uint256 prize = back.mul(config.getKillBps()).div(10000);
        uint256 rest = back.sub(prize);
        // 3. Clear position debt and return funds to liquidator and position owner.
        if (prize > 0) {
            address rewardTo = killBpsToTreasury == true ? treasuryAddr : msg.sender;
            SafeToken.safeTransferETH(rewardTo, prize);
        }
        uint256 left = rest > debt ? rest - debt : 0;
        if (left > 0) SafeToken.safeTransferETH(pos.owner, left);
        emit Kill(id, msg.sender, prize, left);
    }

    /// @dev Internal function to add the given debt value to the given position.
    function _addDebt(uint256 id, uint256 debtVal) internal {
        Position storage pos = positions[id];
        uint256 debtShare = debtValToShare(debtVal);
        pos.debtShare = pos.debtShare.add(debtShare);
        glbDebtShare = glbDebtShare.add(debtShare);
        glbDebtVal = glbDebtVal.add(debtVal);
        emit AddDebt(id, debtShare);
    }

    /// @dev Internal function to clear the debt of the given position. Return the debt value.
    function _removeDebt(uint256 id) internal returns (uint256) {
        Position storage pos = positions[id];
        uint256 debtShare = pos.debtShare;
        if (debtShare > 0) {
            uint256 debtVal = debtShareToVal(debtShare);
            pos.debtShare = 0;
            glbDebtShare = glbDebtShare.sub(debtShare);
            glbDebtVal = glbDebtVal.sub(debtVal);
            emit RemoveDebt(id, debtShare);
            return debtVal;
        } else {
            return 0;
        }
    }

    /// @dev Update bank configuration to a new address. Must only be called by owner.
    /// @param _config The new configurator address.
    function updateConfig(BankConfig _config) external onlyOwner {
        config = _config;
    }

    /// @dev Withdraw ETH reserve for underwater positions to the given address.
    /// @param to The address to transfer ETH to.
    /// @param value The number of ETH tokens to withdraw. Must not exceed `reservePool`.
    function withdrawReserve(address to, uint256 value) external onlyOwner nonReentrant {
        reservePool = reservePool.sub(value);
        SafeToken.safeTransferETH(to, value);
    }

    /// @dev Reduce ETH reserve, effectively giving them to the depositors.
    /// @param value The number of ETH reserve to reduce.
    function reduceReserve(uint256 value) external onlyOwner {
        reservePool = reservePool.sub(value);
    }

    /// @dev Set Reward Kill Bps to owner or msg,sender
    /// @param toTreasury bool set to owner or not
    function setKillBpsToTreasury (bool toTreasury) external onlyOwner {
        killBpsToTreasury = toTreasury;
    }

    /// @dev Set Treasury Address
    /// @param _treasuryAddr treasury address 
    function setTreasuryAddress (address _treasuryAddr) external onlyOwner {
        treasuryAddr = _treasuryAddr;
    }

    /// @dev Recover ERC20 tokens that were accidentally sent to this smart contract.
    /// @param token The token contract. Can be anything. This contract should not hold ERC20 tokens.
    /// @param to The address to send the tokens to.
    /// @param value The number of tokens to transfer to `to`.
    function recover(address token, address to, uint256 value) external onlyOwner nonReentrant {
        token.safeTransfer(to, value);
    }

    /// @dev Fallback function to accept ETH. Goblins will send ETH back the pool.
    function() external payable {}
}

Contract ABI

[{"inputs":[{"internalType":"contract BankConfig","name":"_config","type":"address"},{"internalType":"bool","name":"_killBpsToTreasury","type":"bool"},{"internalType":"address","name":"_treasuryAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"debtShare","type":"uint256"}],"name":"AddDebt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"killer","type":"address"},{"indexed":false,"internalType":"uint256","name":"prize","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"left","type":"uint256"}],"name":"Kill","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"debtShare","type":"uint256"}],"name":"RemoveDebt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"loan","type":"uint256"}],"name":"Work","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"config","outputs":[{"internalType":"contract BankConfig","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"debtShare","type":"uint256"}],"name":"debtShareToVal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"debtVal","type":"uint256"}],"name":"debtValToShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"glbDebtShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"glbDebtVal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"killBpsToTreasury","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastAccrueTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nextPositionID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"msgValue","type":"uint256"}],"name":"pendingInterest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"positionInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"positions","outputs":[{"internalType":"address","name":"goblin","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"debtShare","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"recover","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"reduceReserve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"reservePool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"toTreasury","type":"bool"}],"name":"setKillBpsToTreasury","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_treasuryAddr","type":"address"}],"name":"setTreasuryAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"treasuryAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract BankConfig","name":"_config","type":"address"}],"name":"updateConfig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"share","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"withdrawReserve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"goblin","type":"address"},{"internalType":"uint256","name":"loan","type":"uint256"},{"internalType":"uint256","name":"maxReturn","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"work","outputs":[],"payable":true,"stateMutability":"payable","type":"function"}]

60c0604052601460808190527f496e7465726573742042656172696e6720424e4200000000000000000000000060a09081526200004091600591906200016d565b506040805180820190915260048082526334a1272160e11b60209092019182526200006e916006916200016d565b506007805460ff191660121790556001600a553480156200008e57600080fd5b5060405162002f2e38038062002f2e83398181016040526060811015620000b457600080fd5b50805160208201516040928301516001600355600480546001600160a01b03191633179081905593519293919290916001600160a01b0316906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600880546001600160a01b0319166001600160a01b039485161790556007805461ff001916610100931515939093029290921762010000600160b01b03191662010000919093160291909117905542600d5562000212565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001b057805160ff1916838001178555620001e0565b82800160010185558215620001e0579182015b82811115620001e0578251825591602001919060010190620001c3565b50620001ee929150620001f2565b5090565b6200020f91905b80821115620001ee5760008155600101620001f9565b90565b612d0c80620002226000396000f3fe6080604052600436106102305760003560e01c80636cc919c81161012e578063a457c2d7116100ab578063dd62ed3e1161006f578063dd62ed3e14610863578063ea7d530f1461089e578063f2bc7449146108c8578063f2fde38b146108f4578063f60290e41461092757610230565b8063a457c2d7146107aa578063a6cb8f7d146107e3578063a9059cbb146107f8578063d0e30db014610831578063d29a00251461083957610230565b80638da5cb5b116100f25780638da5cb5b146107025780638f32d59b1461071757806395d89b411461072c57806399fbab88146107415780639ffe79731461079557610230565b80636cc919c81461062f57806370a0823114610662578063715018a61461069557806379502c55146106aa57806389097a6a146106bf57610230565b806323b872dd116101bc57806336bdee741161018057806336bdee741461056f57806339509351146105845780634461915e146105bd5780636605bfda146105d25780636b6216ad1461060557610230565b806323b872dd1461047c5780632e1a7d4d146104bf5780632fc11c0f146104e957806330d9a62a14610513578063313ce5671461054457610230565b806318160ddd1161020357806318160ddd146103455780631c58ce141461035a5780631c824905146103935780631ec82cb8146103a85780632118c75c146103eb57610230565b80630266f0441461023257806306fdde0314610259578063095ea7b3146102e35780630f82519914610330575b005b34801561023e57600080fd5b50610247610951565b60408051918252519081900360200190f35b34801561026557600080fd5b5061026e610957565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a8578181015183820152602001610290565b50505050905090810190601f1680156102d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102ef57600080fd5b5061031c6004803603604081101561030657600080fd5b506001600160a01b0381351690602001356109e5565b604080519115158252519081900360200190f35b34801561033c57600080fd5b506102476109fc565b34801561035157600080fd5b50610247610a02565b34801561036657600080fd5b506102306004803603604081101561037d57600080fd5b506001600160a01b038135169060200135610a08565b34801561039f57600080fd5b50610247610ac3565b3480156103b457600080fd5b50610230600480360360608110156103cb57600080fd5b506001600160a01b03813581169160208101359091169060400135610ac9565b610230600480360360a081101561040157600080fd5b8135916001600160a01b036020820135169160408201359160608101359181019060a08101608082013564010000000081111561043d57600080fd5b82018360208201111561044f57600080fd5b8035906020019184600183028401116401000000008311171561047157600080fd5b509092509050610b7f565b34801561048857600080fd5b5061031c6004803603606081101561049f57600080fd5b506001600160a01b038135811691602081013590911690604001356113fc565b3480156104cb57600080fd5b50610230600480360360208110156104e257600080fd5b5035611453565b3480156104f557600080fd5b506102476004803603602081101561050c57600080fd5b5035611586565b34801561051f57600080fd5b5061052861168f565b604080516001600160a01b039092168252519081900360200190f35b34801561055057600080fd5b506105596116a4565b6040805160ff9092168252519081900360200190f35b34801561057b57600080fd5b506102476116ad565b34801561059057600080fd5b5061031c600480360360408110156105a757600080fd5b506001600160a01b0381351690602001356116db565b3480156105c957600080fd5b5061031c611717565b3480156105de57600080fd5b50610230600480360360208110156105f557600080fd5b50356001600160a01b0316611725565b34801561061157600080fd5b506102306004803603602081101561062857600080fd5b5035611796565b34801561063b57600080fd5b506102306004803603602081101561065257600080fd5b50356001600160a01b03166117f6565b34801561066e57600080fd5b506102476004803603602081101561068557600080fd5b50356001600160a01b031661185f565b3480156106a157600080fd5b5061023061187a565b3480156106b657600080fd5b5061052861190b565b3480156106cb57600080fd5b506106e9600480360360208110156106e257600080fd5b503561191a565b6040805192835260208301919091528051918290030190f35b34801561070e57600080fd5b506105286119b7565b34801561072357600080fd5b5061031c6119c6565b34801561073857600080fd5b5061026e6119d7565b34801561074d57600080fd5b5061076b6004803603602081101561076457600080fd5b5035611a32565b604080516001600160a01b0394851681529290931660208301528183015290519081900360600190f35b3480156107a157600080fd5b50610247611a60565b3480156107b657600080fd5b5061031c600480360360408110156107cd57600080fd5b506001600160a01b038135169060200135611a66565b3480156107ef57600080fd5b50610247611aa2565b34801561080457600080fd5b5061031c6004803603604081101561081b57600080fd5b506001600160a01b038135169060200135611aa8565b610230611ab5565b34801561084557600080fd5b506102306004803603602081101561085c57600080fd5b5035611bf8565b34801561086f57600080fd5b506102476004803603604081101561088657600080fd5b506001600160a01b038135811691602001351661209d565b3480156108aa57600080fd5b50610247600480360360208110156108c157600080fd5b50356120c8565b3480156108d457600080fd5b50610230600480360360208110156108eb57600080fd5b503515156120f7565b34801561090057600080fd5b506102306004803603602081101561091757600080fd5b50356001600160a01b0316612158565b34801561093357600080fd5b506102476004803603602081101561094a57600080fd5b50356121ab565b600e5481565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109dd5780601f106109b2576101008083540402835291602001916109dd565b820191906000526020600020905b8154815290600101906020018083116109c057829003601f168201915b505050505081565b60006109f23384846121da565b5060015b92915050565b600b5481565b60025490565b610a106119c6565b610a4f576040805162461bcd60e51b81526020600482018190526024820152600080516020612c4e833981519152604482015290519081900360640190fd5b6003805460010190819055600e54610a6d908363ffffffff6122c616565b600e55610a7a8383612323565b6003548114610abe576040805162461bcd60e51b815260206004820152601f6024820152600080516020612bc5833981519152604482015290519081900360640190fd5b505050565b600a5481565b610ad16119c6565b610b10576040805162461bcd60e51b81526020600482018190526024820152600080516020612c4e833981519152604482015290519081900360640190fd5b6003805460010190819055610b356001600160a01b038516848463ffffffff61241f16565b6003548114610b79576040805162461bcd60e51b815260206004820152601f6024820152600080516020612bc5833981519152604482015290519081900360640190fd5b50505050565b333214610bbd576040805162461bcd60e51b81526020600482015260076024820152666e6f7420656f6160c81b604482015290519081900360640190fd5b34600d54421115610ca9576000610bd382611586565b90506000610c73612710610c67600860009054906101000a90046001600160a01b03166001600160a01b03166309956f666040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2e57600080fd5b505afa158015610c42573d6000803e3d6000fd5b505050506040513d6020811015610c5857600080fd5b5051859063ffffffff61257916565b9063ffffffff6125d916565b600e54909150610c89908263ffffffff61264316565b600e55600c54610c9f908363ffffffff61264316565b600c55505042600d555b600380546001019081905587610d0157600a80546001808201909255600081815260096020526040902080546001600160a01b038b166001600160a01b03199182161782559201805490921633179091559750610e10565b600a548810610d49576040805162461bcd60e51b815260206004820152600f60248201526e189859081c1bdcda5d1a5bdb881a59608a1b604482015290519081900360640190fd5b6000888152600960205260409020546001600160a01b03888116911614610dad576040805162461bcd60e51b81526020600482015260136024820152723130b2103837b9b4ba34b7b71033b7b13634b760691b604482015290519081900360640190fd5b6000888152600960205260409020600101546001600160a01b03163314610e10576040805162461bcd60e51b81526020600482015260126024820152713737ba103837b9b4ba34b7b71037bbb732b960711b604482015290519081900360640190fd5b60408051878152905189917f73c4ef442856bea52a6b34a83f35484ee65828010254ec27766c5a8c13db6c84919081900360200190a26008546040805163045d84ed60e01b81526001600160a01b038a811660048301529151919092169163045d84ed916024808301926020929190829003018186803b158015610e9357600080fd5b505afa158015610ea7573d6000803e3d6000fd5b505050506040513d6020811015610ebd57600080fd5b5051610eff576040805162461bcd60e51b815260206004820152600c60248201526b3737ba10309033b7b13634b760a11b604482015290519081900360640190fd5b851580610f7e57506008546040805161237f60e41b81526001600160a01b038a8116600483015291519190921691620237f0916024808301926020929190829003018186803b158015610f5157600080fd5b505afa158015610f65573d6000803e3d6000fd5b505050506040513d6020811015610f7b57600080fd5b50515b610fcf576040805162461bcd60e51b815260206004820152601b60248201527f676f626c696e206e6f7420616363657074206d6f726520646562740000000000604482015290519081900360640190fd5b6000610fea87610fde8b61269d565b9063ffffffff61264316565b9050600080610fff348a63ffffffff61264316565b905047811115611056576040805162461bcd60e51b815260206004820152601c60248201527f696e73756666696369656e742045544820696e207468652062616e6b00000000604482015290519081900360640190fd5b6000611068478363ffffffff6122c616565b90508a6001600160a01b03166348db8cc4838e33888d8d6040518763ffffffff1660e01b815260040180868152602001856001600160a01b03166001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505096505050505050506000604051808303818588803b15801561110657600080fd5b505af115801561111a573d6000803e3d6000fd5b505050505061113281476122c690919063ffffffff16565b92505050600061114b83611146848b612742565b612742565b905061115d838263ffffffff6122c616565b9250821561139757600860009054906101000a90046001600160a01b03166001600160a01b031663e1ed42866040518163ffffffff1660e01b815260040160206040518083038186803b1580156111b357600080fd5b505afa1580156111c7573d6000803e3d6000fd5b505050506040513d60208110156111dd57600080fd5b5051831015611229576040805162461bcd60e51b8152602060048201526013602482015272746f6f20736d616c6c20646562742073697a6560681b604482015290519081900360640190fd5b60008a6001600160a01b031663783b6d608d6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d602081101561129957600080fd5b50516008546040805163ad58e57360e01b81526001600160a01b038f81166004830152602482018990529151939450600093919092169163ad58e573916044808301926020929190829003018186803b1580156112f557600080fd5b505afa158015611309573d6000803e3d6000fd5b505050506040513d602081101561131f57600080fd5b505190506113358561271063ffffffff61257916565b611345838363ffffffff61257916565b101561138a576040805162461bcd60e51b815260206004820152600f60248201526e3130b2103bb7b935903330b1ba37b960891b604482015290519081900360640190fd5b6113948d86612758565b50505b808211156113ab576113ab33828403612323565b50505060035481146113f2576040805162461bcd60e51b815260206004820152601f6024820152600080516020612bc5833981519152604482015290519081900360640190fd5b5050505050505050565b60006114098484846127f5565b6001600160a01b038416600090815260016020908152604080832033808552925290912054611449918691611444908663ffffffff6122c616565b6121da565b5060019392505050565b6000600d544211156114fb57600061146a82611586565b905060006114c5612710610c67600860009054906101000a90046001600160a01b03166001600160a01b03166309956f666040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2e57600080fd5b600e549091506114db908263ffffffff61264316565b600e55600c546114f1908363ffffffff61264316565b600c55505042600d555b6003805460010190819055600061152b611513610a02565b610c6761151e6116ad565b879063ffffffff61257916565b90506115373385612937565b6115413382612323565b506003548114610abe576040805162461bcd60e51b815260206004820152601f6024820152600080516020612bc5833981519152604482015290519081900360640190fd5b6000600d544211156116865760006115a9600d54426122c690919063ffffffff16565b905060006115bd478563ffffffff6122c616565b600854600c546040805163c6dfa13f60e01b8152600481019290925260248201849052519293506000926001600160a01b039092169163c6dfa13f91604480820192602092909190829003018186803b15801561161957600080fd5b505afa15801561162d573d6000803e3d6000fd5b505050506040513d602081101561164357600080fd5b5051600c5490915061167c90670de0b6b3a764000090610c6790869061167090869063ffffffff61257916565b9063ffffffff61257916565b935050505061168a565b5060005b919050565b6007546201000090046001600160a01b031681565b60075460ff1681565b60006116d6600e546116ca600c544761264390919063ffffffff16565b9063ffffffff6122c616565b905090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109f2918590611444908663ffffffff61264316565b600754610100900460ff1681565b61172d6119c6565b61176c576040805162461bcd60e51b81526020600482018190526024820152600080516020612c4e833981519152604482015290519081900360640190fd5b600780546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b61179e6119c6565b6117dd576040805162461bcd60e51b81526020600482018190526024820152600080516020612c4e833981519152604482015290519081900360640190fd5b600e546117f0908263ffffffff6122c616565b600e5550565b6117fe6119c6565b61183d576040805162461bcd60e51b81526020600482018190526024820152600080516020612c4e833981519152604482015290519081900360640190fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6118826119c6565b6118c1576040805162461bcd60e51b81526020600482018190526024820152600080516020612c4e833981519152604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b6008546001600160a01b031681565b6000818152600960209081526040808320805482516303c1db6b60e51b8152600481018790529251859492936001600160a01b039092169263783b6d609260248082019391829003018186803b15801561197357600080fd5b505afa158015611987573d6000803e3d6000fd5b505050506040513d602081101561199d57600080fd5b505160028201546119ad906120c8565b9250925050915091565b6004546001600160a01b031690565b6004546001600160a01b0316331490565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109dd5780601f106109b2576101008083540402835291602001916109dd565b6009602052600090815260409020805460018201546002909201546001600160a01b03918216929091169083565b600d5481565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109f2918590611444908663ffffffff6122c616565b600c5481565b60006109f23384846127f5565b34600d54421115611b5c576000611acb82611586565b90506000611b26612710610c67600860009054906101000a90046001600160a01b03166001600160a01b03166309956f666040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2e57600080fd5b600e54909150611b3c908263ffffffff61264316565b600e55600c54611b52908363ffffffff61264316565b600c55505042600d555b60038054600101908190556000611b75346116ca6116ad565b905060008115611ba057611b9b82610c67611b8e610a02565b349063ffffffff61257916565b611ba2565b345b9050611bae3382612a10565b50506003548114611bf4576040805162461bcd60e51b815260206004820152601f6024820152600080516020612bc5833981519152604482015290519081900360640190fd5b5050565b333214611c36576040805162461bcd60e51b81526020600482015260076024820152666e6f7420656f6160c81b604482015290519081900360640190fd5b6000600d54421115611cde576000611c4d82611586565b90506000611ca8612710610c67600860009054906101000a90046001600160a01b03166001600160a01b03166309956f666040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2e57600080fd5b600e54909150611cbe908263ffffffff61264316565b600e55600c54611cd4908363ffffffff61264316565b600c55505042600d555b600380546001019081905560008381526009602052604090206002810154611d37576040805162461bcd60e51b81526020600482015260076024820152661b9bc81919589d60ca1b604482015290519081900360640190fd5b6000611d428561269d565b8254604080516303c1db6b60e51b81526004810189905290519293506000926001600160a01b039092169163783b6d6091602480820192602092909190829003018186803b158015611d9357600080fd5b505afa158015611da7573d6000803e3d6000fd5b505050506040513d6020811015611dbd57600080fd5b50516008548454604080516313f6321b60e01b81526001600160a01b03928316600482015260248101879052905193945060009391909216916313f6321b916044808301926020929190829003018186803b158015611e1b57600080fd5b505afa158015611e2f573d6000803e3d6000fd5b505050506040513d6020811015611e4557600080fd5b50519050611e5b8361271063ffffffff61257916565b611e6b838363ffffffff61257916565b10611eaf576040805162461bcd60e51b815260206004820152600f60248201526e63616e2774206c697175696461746560881b604482015290519081900360640190fd5b8354604080516301057c4960e61b8152600481018a9052905147926001600160a01b03169163415f124091602480830192600092919082900301818387803b158015611efa57600080fd5b505af1158015611f0e573d6000803e3d6000fd5b505050506000611f2782476122c690919063ffffffff16565b90506000611f82612710610c67600860009054906101000a90046001600160a01b03166001600160a01b03166328ae433e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2e57600080fd5b90506000611f96838363ffffffff6122c616565b90508115611fdd5760075460009060ff610100909104161515600114611fbc5733611fcf565b6007546201000090046001600160a01b03165b9050611fdb8184612323565b505b6000878211611fed576000611ff1565b8782035b90508015612011576001890154612011906001600160a01b031682612323565b6040805184815260208101839052815133928f927fa150a1ba7e1c4b72a15f8cb872406ce63950404709b67fbfe52b36792f483a39929081900390910190a35050505050505050506003548114610abe576040805162461bcd60e51b815260206004820152601f6024820152600080516020612bc5833981519152604482015290519081900360640190fd5b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000600b54600014156120dc57508061168a565b6109f6600b54610c67600c548561257990919063ffffffff16565b6120ff6119c6565b61213e576040805162461bcd60e51b81526020600482018190526024820152600080516020612c4e833981519152604482015290519081900360640190fd5b600780549115156101000261ff0019909216919091179055565b6121606119c6565b61219f576040805162461bcd60e51b81526020600482018190526024820152600080516020612c4e833981519152604482015290519081900360640190fd5b6121a881612b00565b50565b6000600b54600014156121bf57508061168a565b6109f6600c54610c67600b548561257990919063ffffffff16565b6001600160a01b03831661221f5760405162461bcd60e51b8152600401808060200182810382526024815260200180612cb46024913960400191505060405180910390fd5b6001600160a01b0382166122645760405162461bcd60e51b8152600401808060200182810382526022815260200180612c0b6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60008282111561231d576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b6020831061236f5780518252601f199092019160209182019101612350565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146123d1576040519150601f19603f3d011682016040523d82523d6000602084013e6123d6565b606091505b5050905080610abe576040805162461bcd60e51b815260206004820152601060248201526f042e6c2cccaa8e4c2dce6cccae48aa8960831b604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b6020831061249c5780518252601f19909201916020918201910161247d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146124fe576040519150601f19603f3d011682016040523d82523d6000602084013e612503565b606091505b5091509150818015612531575080511580612531575080806020019051602081101561252e57600080fd5b50515b612572576040805162461bcd60e51b815260206004820152600d60248201526c10b9b0b332aa3930b739b332b960991b604482015290519081900360640190fd5b5050505050565b600082612588575060006109f6565b8282028284828161259557fe5b04146125d25760405162461bcd60e51b8152600401808060200182810382526021815260200180612c2d6021913960400191505060405180910390fd5b9392505050565b600080821161262f576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161263a57fe5b04949350505050565b6000828201838110156125d2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818152600960205260408120600281015480156127375760006126c1826120c8565b60006002850155600b549091506126de908363ffffffff6122c616565b600b55600c546126f4908263ffffffff6122c616565b600c5560408051838152905186917fc141cd58846e97354928242dcc7ddd92a6a0ecf03bdb5d3a411d260b9abc3272919081900360200190a2925061168a915050565b60009250505061168a565b600081831061275157816125d2565b5090919050565b600082815260096020526040812090612770836121ab565b6002830154909150612788908263ffffffff61264316565b6002830155600b546127a0908263ffffffff61264316565b600b55600c546127b6908463ffffffff61264316565b600c5560408051828152905185917f43b70d61bab6f8bfcf27c791452876c7da386b19652e19b8f21e8927aa6577ab919081900360200190a250505050565b6001600160a01b03831661283a5760405162461bcd60e51b8152600401808060200182810382526025815260200180612c8f6025913960400191505060405180910390fd5b6001600160a01b03821661287f5760405162461bcd60e51b8152600401808060200182810382526023815260200180612ba26023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546128a8908263ffffffff6122c616565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546128dd908263ffffffff61264316565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6001600160a01b03821661297c5760405162461bcd60e51b8152600401808060200182810382526021815260200180612c6e6021913960400191505060405180910390fd5b60025461298f908263ffffffff6122c616565b6002556001600160a01b0382166000908152602081905260409020546129bb908263ffffffff6122c616565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b6001600160a01b038216612a6b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254612a7e908263ffffffff61264316565b6002556001600160a01b038216600090815260208190526040902054612aaa908263ffffffff61264316565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038116612b455760405162461bcd60e51b8152600401808060200182810382526026815260200180612be56026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b039290921691909117905556fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735265656e7472616e637947756172643a207265656e7472616e742063616c6c004f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a265627a7a72315820eb0eb5d3d257ade6db2a70670438459ba707f38851ca0d58c8d7f07ebfdc8f3c64736f6c634300051000320000000000000000000000005f9cb8aa9f41b3b39fab53802e1e685f18b77ca300000000000000000000000000000000000000000000000000000000000000010000000000000000000000008b8da69ea24252a8b8a46014a3a6c34f99866566

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

0000000000000000000000005f9cb8aa9f41b3b39fab53802e1e685f18b77ca300000000000000000000000000000000000000000000000000000000000000010000000000000000000000008b8da69ea24252a8b8a46014a3a6c34f99866566

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000005f9cb8aa9f41b3b39fab53802e1e685f18b77ca3
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 0000000000000000000000008b8da69ea24252a8b8a46014a3a6c34f99866566


Deployed ByteCode Sourcemap

23367:11565:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24337:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24337:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;23807:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23807:43:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;23807:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11606:148;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11606:148:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11606:148:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;24235:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24235:27:0;;;:::i;10629:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10629:91:0;;;:::i;33468:186::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33468:186:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;33468:186:0;;;;;;;;:::i;24193:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24193:33:0;;;:::i;34668:139::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34668:139:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;34668:139:0;;;;;;;;;;;;;;;;;:::i;28415:2089::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;28415:2089:0;;;-1:-1:-1;;;;;28415:2089:0;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;28415:2089:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28415:2089:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;28415:2089:0;;-1:-1:-1;28415:2089:0;-1:-1:-1;28415:2089:0;:::i;12225:256::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12225:256:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12225:256:0;;;;;;;;;;;;;;;;;:::i;27689:232::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27689:232:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27689:232:0;;:::i;25447:446::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25447:446:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25447:446:0;;:::i;23964:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23964:27:0;;;:::i;:::-;;;;-1:-1:-1;;;;;23964:27:0;;;;;;;;;;;;;;23893:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23893:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27149:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27149:130:0;;;:::i;12890:206::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12890:206:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12890:206:0;;;;;;;;:::i;23928:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23928:29:0;;;:::i;34234:118::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34234:118:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34234:118:0;-1:-1:-1;;;;;34234:118:0;;:::i;33798:112::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33798:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33798:112:0;;:::i;33140:96::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33140:96:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33140:96:0;-1:-1:-1;;;;;33140:96:0;;:::i;10783:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10783:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10783:110:0;-1:-1:-1;;;;;10783:110:0;;:::i;1724:140::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1724:140:0;;;:::i;24109:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24109:24:0;;;:::i;26832:208::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26832:208:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26832:208:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;913:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;913:79:0;;;:::i;1279:92::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1279:92:0;;;:::i;23857:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23857:29:0;;;:::i;24140:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24140:46:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24140:46:0;;:::i;:::-;;;;-1:-1:-1;;;;;24140:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;24301:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24301:29:0;;;:::i;13599:216::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13599:216:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13599:216:0;;;;;;;;:::i;24269:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24269:25:0;;;:::i;11106:156::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11106:156:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11106:156:0;;;;;;;;:::i;27358:253::-;;;:::i;30664:1260::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30664:1260:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30664:1260:0;;:::i;11325:134::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11325:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11325:134:0;;;;;;;;;;:::i;26056:235::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26056:235:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26056:235:0;;:::i;34027:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34027:116:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34027:116:0;;;;:::i;2019:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2019:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2019:109:0;-1:-1:-1;;;;;2019:109:0;;:::i;26452:229::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26452:229:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26452:229:0;;:::i;24337:26::-;;;;:::o;23807:43::-;;;;;;;;;;;;;;;-1:-1:-1;;23807:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11606:148::-;11671:4;11688:36;11697:10;11709:7;11718:5;11688:8;:36::i;:::-;-1:-1:-1;11742:4:0;11606:148;;;;;:::o;24235:27::-;;;;:::o;10629:91::-;10700:12;;10629:91;:::o;33468:186::-;1125:9;:7;:9::i;:::-;1117:54;;;;;-1:-1:-1;;;1117:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1117:54:0;;;;;;;;;;;;;;;19388:13;:18;;19405:1;19388:18;;;;;33577:11;;:22;;33593:5;33577:22;:15;:22;:::i;:::-;33563:11;:36;33610;33636:2;33640:5;33610:25;:36::i;:::-;19500:13;;19484:12;:29;19476:73;;;;;-1:-1:-1;;;19476:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19476:73:0;;;;;;;;;;;;;;;1182:1;33468:186;;:::o;24193:33::-;;;;:::o;34668:139::-;1125:9;:7;:9::i;:::-;1117:54;;;;;-1:-1:-1;;;1117:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1117:54:0;;;;;;;;;;;;;;;19388:13;:18;;19405:1;19388:18;;;;;34770:29;-1:-1:-1;;;;;34770:18:0;;34789:2;34793:5;34770:29;:18;:29;:::i;:::-;19500:13;;19484:12;:29;19476:73;;;;;-1:-1:-1;;;19476:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19476:73:0;;;;;;;;;;;;;;;1182:1;34668:139;;;:::o;28415:2089::-;24493:10;24507:9;24493:23;24485:43;;;;;-1:-1:-1;;;24485:43:0;;;;;;;;;;;;-1:-1:-1;;;24485:43:0;;;;;;;;;;;;;;;28561:9;24664:14;;24658:3;:20;24654:325;;;24695:16;24714:25;24730:8;24714:15;:25::i;:::-;24695:44;;24754:17;24774:51;24819:5;24774:40;24787:6;;;;;;;;;-1:-1:-1;;;;;24787:6:0;-1:-1:-1;;;;;24787:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24787:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24787:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24787:26:0;24774:8;;:40;:12;:40;:::i;:::-;:44;:51;:44;:51;:::i;:::-;24854:11;;24754:71;;-1:-1:-1;24854:26:0;;24754:71;24854:26;:15;:26;:::i;:::-;24840:11;:40;24908:10;;:24;;24923:8;24908:24;:14;:24;:::i;:::-;24895:10;:37;-1:-1:-1;;24964:3:0;24947:14;:20;24654:325;19388:13;:18;;19405:1;19388:18;;;;;28687:7;28683:388;;28716:14;:16;;;;;;;;;:14;28747:13;;;:9;:13;;;;;:29;;-1:-1:-1;;;;;28747:29:0;;-1:-1:-1;;;;;;28747:29:0;;;;;;28791:19;;:32;;;;;28813:10;28791:32;;;;28716:16;-1:-1:-1;28683:388:0;;;28869:14;;28864:2;:19;28856:47;;;;;-1:-1:-1;;;28856:47:0;;;;;;;;;;;;-1:-1:-1;;;28856:47:0;;;;;;;;;;;;;;;28926:13;;;;:9;:13;;;;;:20;-1:-1:-1;;;;;28926:30:0;;;:20;;:30;28918:62;;;;;-1:-1:-1;;;28918:62:0;;;;;;;;;;;;-1:-1:-1;;;28918:62:0;;;;;;;;;;;;;;;29003:13;;;;:9;:13;;;;;:19;;;-1:-1:-1;;;;;29003:19:0;29026:10;29003:33;28995:64;;;;;-1:-1:-1;;;28995:64:0;;;;;;;;;;;;-1:-1:-1;;;28995:64:0;;;;;;;;;;;;;;;29086:14;;;;;;;;29091:2;;29086:14;;;;;;;;;;29206:6;;:23;;;-1:-1:-1;;;29206:23:0;;-1:-1:-1;;;;;29206:23:0;;;;;;;;;:6;;;;;:15;;:23;;;;;;;;;;;;;;:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;29206:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29206:23:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29206:23:0;29198:48;;;;;-1:-1:-1;;;29198:48:0;;;;;;;;;;;;-1:-1:-1;;;29198:48:0;;;;;;;;;;;;;;;29265:9;;;:38;;-1:-1:-1;29278:6:0;;:25;;;-1:-1:-1;;;29278:25:0;;-1:-1:-1;;;;;29278:25:0;;;;;;;;;:6;;;;;:17;;:25;;;;;;;;;;;;;;:6;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;29278:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29278:25:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29278:25:0;29265:38;29257:78;;;;;-1:-1:-1;;;29257:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;29346:12;29361:25;29381:4;29361:15;29373:2;29361:11;:15::i;:::-;:19;:25;:19;:25;:::i;:::-;29346:40;-1:-1:-1;29487:12:0;;29543:19;:9;29557:4;29543:19;:13;:19;:::i;:::-;29525:37;;29596:21;29585:7;:32;;29577:73;;;;;-1:-1:-1;;;29577:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;29665:17;29685:34;:21;29711:7;29685:34;:25;:34;:::i;:::-;29665:54;;29741:6;-1:-1:-1;;;;;29734:19:0;;29760:7;29769:2;29773:10;29785:4;29791;;29734:62;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29734:62:0;-1:-1:-1;;;;;29734:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;29734:62:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29734:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29734:62:0;;;;;29818:36;29844:9;29818:21;:25;;:36;;;;:::i;:::-;29811:43;;19464:1;;29923:16;29942:41;29951:4;29957:25;29966:4;29972:9;29957:8;:25::i;:::-;29942:8;:41::i;:::-;29923:60;-1:-1:-1;30001:18:0;:4;29923:60;30001:18;:8;:18;:::i;:::-;29994:25;-1:-1:-1;30034:8:0;;30030:342;;30075:6;;;;;;;;;-1:-1:-1;;;;;30075:6:0;-1:-1:-1;;;;;30075:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30075:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30075:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30075:20:0;30067:28;;;30059:60;;;;;-1:-1:-1;;;30059:60:0;;;;;;;;;;;;-1:-1:-1;;;30059:60:0;;;;;;;;;;;;;;;30134:14;30158:6;-1:-1:-1;;;;;30151:21:0;;30173:2;30151:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30151:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30151:25:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30151:25:0;30212:6;;:31;;;-1:-1:-1;;;30212:31:0;;-1:-1:-1;;;;;30212:31:0;;;;;;;;;;;;;;;30151:25;;-1:-1:-1;30191:18:0;;30212:6;;;;;:17;;:31;;;;;30151:25;;30212:31;;;;;;;:6;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;30212:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30212:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30212:31:0;;-1:-1:-1;30292:15:0;:4;30301:5;30292:15;:8;:15;:::i;:::-;30266:22;:6;30277:10;30266:22;:10;:22;:::i;:::-;:41;;30258:69;;;;;-1:-1:-1;;;30258:69:0;;;;;;;;;;;;-1:-1:-1;;;30258:69:0;;;;;;;;;;;;;;;30342:18;30351:2;30355:4;30342:8;:18::i;:::-;30030:342;;;30432:8;30425:4;:15;30421:75;;;30442:54;30468:10;30487:8;30480:4;:15;30442:25;:54::i;:::-;19464:1;;;19500:13;;19484:12;:29;19476:73;;;;;-1:-1:-1;;;19476:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19476:73:0;;;;;;;;;;;;;;;24989:1;24539;28415:2089;;;;;;:::o;12225:256::-;12314:4;12331:36;12341:6;12349:9;12360:6;12331:9;:36::i;:::-;-1:-1:-1;;;;;12407:19:0;;;;;;:11;:19;;;;;;;;12395:10;12407:31;;;;;;;;;12378:73;;12387:6;;12407:43;;12443:6;12407:43;:35;:43;:::i;:::-;12378:8;:73::i;:::-;-1:-1:-1;12469:4:0;12225:256;;;;;:::o;27689:232::-;27738:1;24664:14;;24658:3;:20;24654:325;;;24695:16;24714:25;24730:8;24714:15;:25::i;:::-;24695:44;;24754:17;24774:51;24819:5;24774:40;24787:6;;;;;;;;;-1:-1:-1;;;;;24787:6:0;-1:-1:-1;;;;;24787:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;24774:51:0;24854:11;;24754:71;;-1:-1:-1;24854:26:0;;24754:71;24854:26;:15;:26;:::i;:::-;24840:11;:40;24908:10;;:24;;24923:8;24908:24;:14;:24;:::i;:::-;24895:10;:37;-1:-1:-1;;24964:3:0;24947:14;:20;24654:325;19388:13;:18;;19405:1;19388:18;;;;;:13;27782:40;27808:13;:11;:13::i;:::-;27782:21;27792:10;:8;:10::i;:::-;27782:5;;:21;:9;:21;:::i;:40::-;27765:57;;27833:24;27839:10;27851:5;27833;:24::i;:::-;27868:45;27894:10;27906:6;27868:25;:45::i;:::-;19464:1;19500:13;;19484:12;:29;19476:73;;;;;-1:-1:-1;;;19476:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19476:73:0;;;;;;;;;;;;;;25447:446;25511:7;25541:14;;25535:3;:20;25531:355;;;25572:16;25591:23;25599:14;;25591:3;:7;;:23;;;;:::i;:::-;25572:42;-1:-1:-1;25629:15:0;25647:35;:21;25673:8;25647:35;:25;:35;:::i;:::-;25718:6;;25741:10;;25718:43;;;-1:-1:-1;;;25718:43:0;;;;;;;;;;;;;;;;25629:53;;-1:-1:-1;25697:18:0;;-1:-1:-1;;;;;25718:6:0;;;;:22;;:43;;;;;;;;;;;;;;;:6;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;25718:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25718:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25718:43:0;25798:10;;25718:43;;-1:-1:-1;25783:50:0;;25828:4;;25783:40;;25814:8;;25783:26;;25718:43;;25783:26;:14;:26;:::i;:::-;:30;:40;:30;:40;:::i;:50::-;25776:57;;;;;;;25531:355;-1:-1:-1;25873:1:0;25531:355;25447:446;;;:::o;23964:27::-;;;;;;-1:-1:-1;;;;;23964:27:0;;:::o;23893:26::-;;;;;;:::o;27149:130::-;27190:7;27217:54;27259:11;;27217:37;27243:10;;27217:21;:25;;:37;;;;:::i;:::-;:41;:54;:41;:54;:::i;:::-;27210:61;;27149:130;:::o;12890:206::-;12996:10;12970:4;13017:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;13017:32:0;;;;;;;;;;12970:4;;12987:79;;13008:7;;13017:48;;13054:10;13017:48;:36;:48;:::i;23928:29::-;;;;;;;;;:::o;34234:118::-;1125:9;:7;:9::i;:::-;1117:54;;;;;-1:-1:-1;;;1117:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1117:54:0;;;;;;;;;;;;;;;34316:12;:28;;-1:-1:-1;;;;;34316:28:0;;;;;-1:-1:-1;;;;;;34316:28:0;;;;;;;;;34234:118::o;33798:112::-;1125:9;:7;:9::i;:::-;1117:54;;;;;-1:-1:-1;;;1117:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1117:54:0;;;;;;;;;;;;;;;33880:11;;:22;;33896:5;33880:22;:15;:22;:::i;:::-;33866:11;:36;-1:-1:-1;33798:112:0:o;33140:96::-;1125:9;:7;:9::i;:::-;1117:54;;;;;-1:-1:-1;;;1117:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1117:54:0;;;;;;;;;;;;;;;33212:6;:16;;-1:-1:-1;;;;;;33212:16:0;-1:-1:-1;;;;;33212:16:0;;;;;;;;;;33140:96::o;10783:110::-;-1:-1:-1;;;;;10867:18:0;10840:7;10867:18;;;;;;;;;;;;10783:110::o;1724:140::-;1125:9;:7;:9::i;:::-;1117:54;;;;;-1:-1:-1;;;1117:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1117:54:0;;;;;;;;;;;;;;;1807:6;;1786:40;;1823:1;;-1:-1:-1;;;;;1807:6:0;;1786:40;;1823:1;;1786:40;1837:6;:19;;-1:-1:-1;;;;;;1837:19:0;;;1724:140::o;24109:24::-;;;-1:-1:-1;;;;;24109:24:0;;:::o;26832:208::-;26887:7;26939:13;;;:9;:13;;;;;;;;26978:10;;26971:29;;-1:-1:-1;;;26971:29:0;;;;;;;;;;26887:7;;26939:13;;-1:-1:-1;;;;;26978:10:0;;;;26971:25;;:29;;;;;;;;;;;26978:10;26971:29;;;5:2:-1;;;;30:1;27;20:12;5:2;26971:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26971:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26971:29:0;27017:13;;;;27002:29;;:14;:29::i;:::-;26963:69;;;;;26832:208;;;:::o;913:79::-;978:6;;-1:-1:-1;;;;;978:6:0;913:79;:::o;1279:92::-;1357:6;;-1:-1:-1;;;;;1357:6:0;1343:10;:20;;1279:92::o;23857:29::-;;;;;;;;;;;;;;;-1:-1:-1;;23857:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24140:46;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24140:46:0;;;;;;;;;:::o;24301:29::-;;;;:::o;13599:216::-;13710:10;13684:4;13731:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;13731:32:0;;;;;;;;;;13684:4;;13701:84;;13722:7;;13731:53;;13768:15;13731:53;:36;:53;:::i;24269:25::-;;;;:::o;11106:156::-;11175:4;11192:40;11202:10;11214:9;11225:6;11192:9;:40::i;27358:253::-;27401:9;24664:14;;24658:3;:20;24654:325;;;24695:16;24714:25;24730:8;24714:15;:25::i;:::-;24695:44;;24754:17;24774:51;24819:5;24774:40;24787:6;;;;;;;;;-1:-1:-1;;;;;24787:6:0;-1:-1:-1;;;;;24787:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;24774:51:0;24854:11;;24754:71;;-1:-1:-1;24854:26:0;;24754:71;24854:26;:15;:26;:::i;:::-;24840:11;:40;24908:10;;:24;;24923:8;24908:24;:14;:24;:::i;:::-;24895:10;:37;-1:-1:-1;;24964:3:0;24947:14;:20;24654:325;19388:13;:18;;19405:1;19388:18;;;;;:13;27452:25;27467:9;27452:10;:8;:10::i;:25::-;27436:41;-1:-1:-1;27488:13:0;27504:10;;:64;;27529:39;27562:5;27529:28;27543:13;:11;:13::i;:::-;27529:9;;:28;:13;:28;:::i;:39::-;27504:64;;;27517:9;27504:64;27488:80;;27579:24;27585:10;27597:5;27579;:24::i;:::-;19464:1;;19500:13;;19484:12;:29;19476:73;;;;;-1:-1:-1;;;19476:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19476:73:0;;;;;;;;;;;;;;;24989:1;27358:253;:::o;30664:1260::-;24493:10;24507:9;24493:23;24485:43;;;;;-1:-1:-1;;;24485:43:0;;;;;;;;;;;;-1:-1:-1;;;24485:43:0;;;;;;;;;;;;;;;30714:1;24664:14;;24658:3;:20;24654:325;;;24695:16;24714:25;24730:8;24714:15;:25::i;:::-;24695:44;;24754:17;24774:51;24819:5;24774:40;24787:6;;;;;;;;;-1:-1:-1;;;;;24787:6:0;-1:-1:-1;;;;;24787:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;24774:51:0;24854:11;;24754:71;;-1:-1:-1;24854:26:0;;24754:71;24854:26;:15;:26;:::i;:::-;24840:11;:40;24908:10;;:24;;24923:8;24908:24;:14;:24;:::i;:::-;24895:10;:37;-1:-1:-1;;24964:3:0;24947:14;:20;24654:325;19388:13;:18;;19405:1;19388:18;;;;;:13;30833;;;:9;:13;;;;;30865;;;;30857:37;;;;;-1:-1:-1;;;30857:37:0;;;;;;;;;;;;-1:-1:-1;;;30857:37:0;;;;;;;;;;;;;;;30905:12;30920:15;30932:2;30920:11;:15::i;:::-;30970:10;;30963:29;;;-1:-1:-1;;;30963:29:0;;;;;;;;;;30905:30;;-1:-1:-1;30946:14:0;;-1:-1:-1;;;;;30970:10:0;;;;30963:25;;:29;;;;;;;;;;;;;;;30970:10;30963:29;;;5:2:-1;;;;30:1;27;20:12;5:2;30963:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30963:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30963:29:0;31024:6;;31042:10;;31024:35;;;-1:-1:-1;;;31024:35:0;;-1:-1:-1;;;;;31042:10:0;;;31024:35;;;;;;;;;;;;30963:29;;-1:-1:-1;31003:18:0;;31024:6;;;;;:17;;:35;;;;;30963:29;;31024:35;;;;;;;:6;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;31024:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31024:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31024:35:0;;-1:-1:-1;31103:15:0;:4;31112:5;31103:15;:8;:15;:::i;:::-;31078:22;:6;31089:10;31078:22;:10;:22;:::i;:::-;:40;31070:68;;;;;-1:-1:-1;;;31070:68:0;;;;;;;;;;;;-1:-1:-1;;;31070:68:0;;;;;;;;;;;;;;;31283:10;;31276:32;;;-1:-1:-1;;;31276:32:0;;;;;;;;;;31244:21;;-1:-1:-1;;;;;31283:10:0;;31276:28;;:32;;;;;31224:17;;31276:32;;;;;;;31224:17;31283:10;31276:32;;;5:2:-1;;;;30:1;27;20:12;5:2;31276:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31276:32:0;;;;31319:12;31334:36;31360:9;31334:21;:25;;:36;;;;:::i;:::-;31319:51;;31381:13;31397:40;31431:5;31397:29;31406:6;;;;;;;;;-1:-1:-1;;;;;31406:6:0;-1:-1:-1;;;;;31406:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;31397:40:0;31381:56;-1:-1:-1;31448:12:0;31463:15;:4;31381:56;31463:15;:8;:15;:::i;:::-;31448:30;-1:-1:-1;31579:9:0;;31575:171;;31624:17;;31605:16;;31624:17;;;;;;:25;;:17;:25;:53;;31667:10;31624:53;;;31652:12;;;;;-1:-1:-1;;;;;31652:12:0;31624:53;31605:72;;31692:42;31718:8;31728:5;31692:25;:42::i;:::-;31575:171;;31756:12;31778:4;31771;:11;:29;;31799:1;31771:29;;;31792:4;31785;:11;31771:29;31756:44;-1:-1:-1;31815:8:0;;31811:56;;31851:9;;;;31825:42;;-1:-1:-1;;;;;31851:9:0;31862:4;31825:25;:42::i;:::-;31883:33;;;;;;;;;;;;;;31892:10;;31888:2;;31883:33;;;;;;;;;;;19464:1;;;;;;;;;19500:13;;19484:12;:29;19476:73;;;;;-1:-1:-1;;;19476:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19476:73:0;;;;;;;;;;;;;;11325:134;-1:-1:-1;;;;;11424:18:0;;;11397:7;11424:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11325:134::o;26056:235::-;26120:7;26144:12;;26160:1;26144:17;26140:39;;;-1:-1:-1;26170:9:0;26163:16;;26140:39;26240:43;26270:12;;26240:25;26254:10;;26240:9;:13;;:25;;;;:::i;34027:116::-;1125:9;:7;:9::i;:::-;1117:54;;;;;-1:-1:-1;;;1117:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1117:54:0;;;;;;;;;;;;;;;34105:17;:30;;;;;;;-1:-1:-1;;34105:30:0;;;;;;;;;34027:116::o;2019:109::-;1125:9;:7;:9::i;:::-;1117:54;;;;;-1:-1:-1;;;1117:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1117:54:0;;;;;;;;;;;;;;;2092:28;2111:8;2092:18;:28::i;:::-;2019:109;:::o;26452:229::-;26514:7;26538:12;;26554:1;26538:17;26534:37;;;-1:-1:-1;26564:7:0;26557:14;;26534:37;26632:41;26662:10;;26632:25;26644:12;;26632:7;:11;;:25;;;;:::i;16401:335::-;-1:-1:-1;;;;;16494:19:0;;16486:68;;;;-1:-1:-1;;;16486:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16573:21:0;;16565:68;;;;-1:-1:-1;;;16565:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16646:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;16697:31;;;;;;;;;;;;;;;;;16401:335;;;:::o;6738:184::-;6796:7;6829:1;6824;:6;;6816:49;;;;;-1:-1:-1;;;6816:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6888:5:0;;;6738:184::o;23106:180::-;23218:12;;;23179;23218;;;;;;;;;-1:-1:-1;;;;;23197:7:0;;;23211:5;;23197:34;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;23197:34:0;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;23178:53:0;;;23250:7;23242:36;;;;;-1:-1:-1;;;23242:36:0;;;;;;;;;;;;-1:-1:-1;;;23242:36:0;;;;;;;;;;;;;;22358:346;22556:45;;;-1:-1:-1;;;;;22556:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;22556:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;22545:57:0;;;;22510:12;;22524:17;;22545:10;;;;22556:45;22545:57;;;25:18:-1;22545:57:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;22545:57:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;22509:93:0;;;;22621:7;:57;;;;-1:-1:-1;22633:11:0;;:16;;:44;;;22664:4;22653:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22653:24:0;22633:44;22613:83;;;;;-1:-1:-1;;;22613:83:0;;;;;;;;;;;;-1:-1:-1;;;22613:83:0;;;;;;;;;;;;;;;22358:346;;;;;:::o;7173:470::-;7231:7;7475:6;7471:47;;-1:-1:-1;7505:1:0;7498:8;;7471:47;7542:5;;;7546:1;7542;:5;:1;7566:5;;;;;:10;7558:56;;;;-1:-1:-1;;;7558:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7634:1;7173:470;-1:-1:-1;;;7173:470:0:o;8111:333::-;8169:7;8268:1;8264;:5;8256:44;;;;;-1:-1:-1;;;8256:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8311:9;8327:1;8323;:5;;;;;;;8111:333;-1:-1:-1;;;;8111:333:0:o;6282:181::-;6340:7;6372:5;;;6396:6;;;;6388:46;;;;;-1:-1:-1;;;6388:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;32477:513;32528:7;32571:13;;;:9;:13;;;;;32615;;;;32643;;32639:344;;32673:15;32691:25;32706:9;32691:14;:25::i;:::-;32747:1;32731:13;;;:17;32778:12;;32673:43;;-1:-1:-1;32778:27:0;;32795:9;32778:27;:16;:27;:::i;:::-;32763:12;:42;32833:10;;:23;;32848:7;32833:23;:14;:23;:::i;:::-;32820:10;:36;32876:25;;;;;;;;32887:2;;32876:25;;;;;;;;;;32923:7;-1:-1:-1;32916:14:0;;-1:-1:-1;;32916:14:0;32639:344;32970:1;32963:8;;;;;;17554:106;17612:7;17643:1;17639;:5;:13;;17651:1;17639:13;;;-1:-1:-1;17647:1:0;;17632:20;-1:-1:-1;17554:106:0:o;32015:358::-;32082:20;32105:13;;;:9;:13;;;;;;32149:23;32164:7;32149:14;:23::i;:::-;32199:13;;;;32129:43;;-1:-1:-1;32199:28:0;;32129:43;32199:28;:17;:28;:::i;:::-;32183:13;;;:44;32253:12;;:27;;32270:9;32253:27;:16;:27;:::i;:::-;32238:12;:42;32304:10;;:23;;32319:7;32304:23;:14;:23;:::i;:::-;32291:10;:36;32343:22;;;;;;;;32351:2;;32343:22;;;;;;;;;;32015:358;;;;:::o;14305:429::-;-1:-1:-1;;;;;14403:20:0;;14395:70;;;;-1:-1:-1;;;14395:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14484:23:0;;14476:71;;;;-1:-1:-1;;;14476:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14580:17:0;;:9;:17;;;;;;;;;;;:29;;14602:6;14580:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;14560:17:0;;;:9;:17;;;;;;;;;;;:49;;;;14643:20;;;;;;;:32;;14668:6;14643:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;14620:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;14691:35;;;;;;;14620:20;;14691:35;;;;;;;;;;;;;14305:429;;;:::o;15655:306::-;-1:-1:-1;;;;;15730:21:0;;15722:67;;;;-1:-1:-1;;;15722:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15817:12;;:23;;15834:5;15817:23;:16;:23;:::i;:::-;15802:12;:38;-1:-1:-1;;;;;15872:18:0;;:9;:18;;;;;;;;;;;:29;;15895:5;15872:29;:22;:29;:::i;:::-;-1:-1:-1;;;;;15851:18:0;;:9;:18;;;;;;;;;;;:50;;;;15917:36;;;;;;;15851:9;;15917:36;;;;;;;;;;;15655:306;;:::o;15015:308::-;-1:-1:-1;;;;;15091:21:0;;15083:65;;;;;-1:-1:-1;;;15083:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15176:12;;:24;;15193:6;15176:24;:16;:24;:::i;:::-;15161:12;:39;-1:-1:-1;;;;;15232:18:0;;:9;:18;;;;;;;;;;;:30;;15255:6;15232:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;15211:18:0;;:9;:18;;;;;;;;;;;:51;;;;15278:37;;;;;;;15211:18;;:9;;15278:37;;;;;;;;;;15015:308;;:::o;2234:229::-;-1:-1:-1;;;;;2308:22:0;;2300:73;;;;-1:-1:-1;;;2300:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2410:6;;2389:38;;-1:-1:-1;;;;;2389:38:0;;;;2410:6;;2389:38;;2410:6;;2389:38;2438:6;:17;;-1:-1:-1;;;;;;2438:17:0;-1:-1:-1;;;;;2438:17:0;;;;;;;;;;2234:229::o

Swarm Source

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