Contract 0xaebbc1d47af8aef82717533347f116a58c81a0df 2

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x81f3771edc5c4df6ee294113093bf65e2d4414df689bf12be7e87a31a3526a5aWithdraw110848932021-09-20 17:25:206 hrs 23 mins ago0xed7598d735062be2c3c7108d8cf07dcf9b0bc93a IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.001013355
0x9f9a0d9c8dac348f78a112fe30d48422ae482fb1eb55bf24f3ffd0ba34fab26fWithdraw110730402021-09-20 7:30:1716 hrs 18 mins ago0x5f92777d2d41915812d4226414393755cfed7f85 IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.00051963
0x68bf355a752d148fb69a1d2d3828cf5fde68f5b7ecb57ee33e6563303a59fffcDeposit110730252021-09-20 7:29:3216 hrs 19 mins ago0x5f92777d2d41915812d4226414393755cfed7f85 IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.000680855
0x8c4a3b7cf3c8924e433f72814a7d9b9e0ae7065400c7846f1745639b57fae282Withdraw110730022021-09-20 7:28:2316 hrs 20 mins ago0x5f92777d2d41915812d4226414393755cfed7f85 IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.00051963
0x24766fe2a04d3ebfdc535a14d3ac0b11a6d53b7a762011f1dbfb6fcccc1d5025Deposit110729902021-09-20 7:27:4716 hrs 20 mins ago0x5f92777d2d41915812d4226414393755cfed7f85 IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.000680855
0x73ba0e4040f835dd06093c9a12acd251d853d3159891b24bdbaabc70e858458fWithdraw110523532021-09-19 14:15:451 day 9 hrs ago0x44ab2e43594433e7879b89f5b9755e36723a8e4a IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.00052179
0xc1d726f9c595b29d3a35104bb39fd615f8396a17c8287321ae182d96360b925cWithdraw110520892021-09-19 14:02:331 day 9 hrs ago0x5f92777d2d41915812d4226414393755cfed7f85 IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.001192505
0x2f9e10ef6b532fa70f2972c0a6ffe51975f2f775068710cece5beb6e44140a79Withdraw110000852021-09-17 18:23:253 days 5 hrs ago0xddeff546fa84b6d71a25ee62b74f43b349afe4be IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.001192505
0xac6b7fa121c92f546ca6188afa2f961f73b3a0f8584534be752f5fd37ffa7fbfWithdraw109923832021-09-17 11:57:353 days 11 hrs ago0x7efcfb7ca09d0653f96a33f374ad112dce1eae83 IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.001013295
0x132ae5c90a77515476a097bf4efd103c2270d645e49b6bd2896d2fa001f4b9acWithdraw109775872021-09-16 23:37:094 days 11 mins ago0xcf12d9fcb804f67914e09345d93f38102ce96590 IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.00051957
0x0e6341e90c87034e5204d0d34738a58358c637ab4956e34f89714fed9d335119Claim Reward109775722021-09-16 23:36:244 days 12 mins ago0xcf12d9fcb804f67914e09345d93f38102ce96590 IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.001159775
0xf4ba0d14117565a99588de7eafe6a350e80bab4780951890e2d1de6c4e16ffe3Withdraw109775672021-09-16 23:36:094 days 12 mins ago0x2787565e39bc72f30cd8516fa3d4c98071fd4f5a IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.00051963
0x809395acd759230fed1b1d4e3c4afc14f93244a2e6f4273612515b54846092a4Deposit109715172021-09-16 18:33:384 days 5 hrs ago0x2787565e39bc72f30cd8516fa3d4c98071fd4f5a IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.00068191
0x535fc52870be26983cb7785d92a9188dbcc5abf034a449180781595234631ed1Withdraw109680162021-09-16 15:37:484 days 8 hrs ago0xecd3e2e09af58b720a1ff50118bd1008fb7d6e6d IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.001262145
0x1c776a53530f2a36f7950248cf2608d04ebd9c4567c0c265fc61c83f9976ed70Withdraw109670212021-09-16 14:47:414 days 9 hrs ago0x2787565e39bc72f30cd8516fa3d4c98071fd4f5a IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.00051963
0x49fc35fa6f2299c5223fe068d241d4546026a80396b383a9f64f487690309ce2Claim Reward109670112021-09-16 14:47:114 days 9 hrs ago0x2787565e39bc72f30cd8516fa3d4c98071fd4f5a IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.001217845
0xaffcaf04581411a6ab5c864508a29ac4eb3f9d0d61efbf0b9b06151d47b0cf16Claim Reward109493652021-09-16 0:02:504 days 23 hrs ago0xec6f05bedf0f0ef64a2278f089614440253b802e IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.000987175
0x9c719bb04ee63c2e5834ca1e16f00e9e404123a91c4f831d9fef2c8fd6c077e8Withdraw109482432021-09-15 23:06:445 days 41 mins ago0x534355e2125d260afd34020dabe25e15acd57439 IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.00051963
0x543002dce511fded4529fcb01310602401148780368a290ed473e8a0e53800a2Withdraw109369282021-09-15 13:40:585 days 10 hrs ago0x52e94dd9165a6df3c0ad5cb40c1020db9f6cd9da IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.00051963
0xb0b06bd7009e50babb8dab4507abc98a1e2e665c575b73d16c7a43eef1f57d21Deposit109369162021-09-15 13:40:225 days 10 hrs ago0x52e94dd9165a6df3c0ad5cb40c1020db9f6cd9da IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.0013637
0x21a939232516f7296d30d1951920dac99121942555a99a878b5ef653fe73588aDeposit109200192021-09-14 23:29:086 days 19 mins ago0xa378a5e04a1b55c5c22ea6a82ef340a6c7332bd4 IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.00068191
0x18734af3f427ce5f9c10dee2ae3d11c5b516e0b7940bf58bd395d4338ea65d76Deposit108907382021-09-13 23:01:357 days 47 mins ago0x534355e2125d260afd34020dabe25e15acd57439 IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.000680855
0xd901dbbe2918981b8d3e954bf99fd379917664e4f8bc8489a04c3dd8392c47b6Withdraw108869702021-09-13 19:53:107 days 3 hrs ago0x1fbeca52029516091afa9372581628b081e85092 IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.00106276
0xe0a1aa7cdef3a740699acb25c3146b599961d2ded989acc94725836fd9deabdbWithdraw108784702021-09-13 12:46:287 days 11 hrs ago0x534355e2125d260afd34020dabe25e15acd57439 IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.001013415
0x6a9e1b91fa6fea7fa6c0e22feb22717e2f804da173e627a9feefa46db2400279Withdraw108466702021-09-12 10:14:028 days 13 hrs ago0x80c96d16c0f370cb8cc06c437d8a966f4c9fa1af IN  0xaebbc1d47af8aef82717533347f116a58c81a0df0 BNB0.001008055
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xb6348942f0367adb71f37b7d674cc41b47d7cb8dce6b19aeb1c48ccb63812a2a54713352021-03-07 11:59:42197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0xb6348942f0367adb71f37b7d674cc41b47d7cb8dce6b19aeb1c48ccb63812a2a54713352021-03-07 11:59:42197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0xb6348942f0367adb71f37b7d674cc41b47d7cb8dce6b19aeb1c48ccb63812a2a54713352021-03-07 11:59:42197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0xb6348942f0367adb71f37b7d674cc41b47d7cb8dce6b19aeb1c48ccb63812a2a54713352021-03-07 11:59:42197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0xb6348942f0367adb71f37b7d674cc41b47d7cb8dce6b19aeb1c48ccb63812a2a54713352021-03-07 11:59:42197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0xb6348942f0367adb71f37b7d674cc41b47d7cb8dce6b19aeb1c48ccb63812a2a54713352021-03-07 11:59:42197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0xb6348942f0367adb71f37b7d674cc41b47d7cb8dce6b19aeb1c48ccb63812a2a54713352021-03-07 11:59:42197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0xb6348942f0367adb71f37b7d674cc41b47d7cb8dce6b19aeb1c48ccb63812a2a54713352021-03-07 11:59:42197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0xb6348942f0367adb71f37b7d674cc41b47d7cb8dce6b19aeb1c48ccb63812a2a54713352021-03-07 11:59:42197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df PancakeSwap: zSEED0 BNB
0x3a9cba87f00bdc046e1f40b451e23578cb4a086d34fffbe89ec03126ec53ab4554713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df PancakeSwap: BSCX-BUSD0 BNB
0x3a9cba87f00bdc046e1f40b451e23578cb4a086d34fffbe89ec03126ec53ab4554713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0x3a9cba87f00bdc046e1f40b451e23578cb4a086d34fffbe89ec03126ec53ab4554713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0x3a9cba87f00bdc046e1f40b451e23578cb4a086d34fffbe89ec03126ec53ab4554713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0x3a9cba87f00bdc046e1f40b451e23578cb4a086d34fffbe89ec03126ec53ab4554713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df PancakeSwap: BSCX-BUSD0 BNB
0xa5a3fa638a5554b19f65ddbd66f9ea1dccf50c554ceb6185877b8019c55e6b1354713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df PancakeSwap: BSCX-zSEED0 BNB
0xa5a3fa638a5554b19f65ddbd66f9ea1dccf50c554ceb6185877b8019c55e6b1354713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0xa5a3fa638a5554b19f65ddbd66f9ea1dccf50c554ceb6185877b8019c55e6b1354713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0xa5a3fa638a5554b19f65ddbd66f9ea1dccf50c554ceb6185877b8019c55e6b1354713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0xa5a3fa638a5554b19f65ddbd66f9ea1dccf50c554ceb6185877b8019c55e6b1354713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0xa5a3fa638a5554b19f65ddbd66f9ea1dccf50c554ceb6185877b8019c55e6b1354713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df PancakeSwap: BSCX-BUSD0 BNB
0xa5a3fa638a5554b19f65ddbd66f9ea1dccf50c554ceb6185877b8019c55e6b1354713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0xa5a3fa638a5554b19f65ddbd66f9ea1dccf50c554ceb6185877b8019c55e6b1354713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0xa5a3fa638a5554b19f65ddbd66f9ea1dccf50c554ceb6185877b8019c55e6b1354713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df PancakeSwap: BSCX-BUSD0 BNB
0xa5a3fa638a5554b19f65ddbd66f9ea1dccf50c554ceb6185877b8019c55e6b1354713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
0xa5a3fa638a5554b19f65ddbd66f9ea1dccf50c554ceb6185877b8019c55e6b1354713342021-03-07 11:59:39197 days 11 hrs ago 0xaebbc1d47af8aef82717533347f116a58c81a0df Sowing Network: zSEED Token0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xb3f0dc2448379d2304e178fdd6c1d3b71071dfa9

Contract Name:
BSCXNTS

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv2 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-02-05
*/

pragma solidity ^0.6.6;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function burn(uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: contracts/libraries/Address.sol

pragma solidity ^0.6.0;

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

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

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

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

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

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

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: contracts/libraries/SafeMath.sol

pragma solidity ^0.6.0;

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// File: contracts/libraries/SafeERC20.sol

pragma solidity ^0.6.0;




library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

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

    function safeBurn(IERC20 token, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.burn.selector, value));
    }

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

    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

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

// File: contracts/Context.sol

pragma solidity ^0.6.0;

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: contracts/Ownable.sol

pragma solidity ^0.6.0;


contract Ownable is Context {
    address private _owner;

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

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

    /**
     * @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(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        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 virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: contracts/BSCXNTS.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;





contract BSCXNTS is Ownable {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    // Info of each user.
    struct UserInfo {
        uint256 amount;            // How many LP tokens the user has provided.
        uint256 rewardDebt;        // Reward debt. See explanation below.
        uint256 rewardDebtAtBlock; // the last block user stake
        uint256 lockAmount;        // Lock amount reward token
        uint256 lastUnlockBlock;
    }

    // Info of each pool.
    struct PoolInfo {
        IERC20 lpToken;            // Address of LP token contract.
        IERC20 rewardToken;        // Address of reward token contract.
        uint256 allocPoint;        // How many allocation points assigned to this pool. reward to distribute per block.
        uint256 lastRewardBlock;   // Last block number that Reward distribution occurs.
        uint256 accRewardPerShare; // Accumulated Reward per share, times 1e12. See below.
        uint256 rewardPerBlock;    // Reward per block.
        uint256 percentLockReward; // Percent lock reward.
        uint256 percentForDev;     // Percent for dev team.
        uint256 percentForBurn;    // Percent burn reward token.
        uint256 finishBonusAtBlock;
        uint256 startBlock;        // Start at block.
        uint256 totalLock;         // Total lock reward token on pool.
        uint256 lockFromBlock;     // Lock from block.
        uint256 lockToBlock;       // Lock to block.
    }

    // Dev address.
    address public devaddr;
    bool public status;             // Status handle farmer can harvest.
    IERC20 public referralLPToken;  // LP token for check referral program

    uint256 public stakeAmountLPLv1;    // Minimum stake LP token condition level1 for referral program.
    uint256 public stakeAmountLPLv2;    // Minimum stake LP token condition level2 for referral program.

    uint256 public percentForReferLv1; // Percent reward level1 referral program.
    uint256 public percentForReferLv2; // Percent reward level2 referral program.

    // Info of each pool.
    PoolInfo[] public poolInfo;
    mapping(address => address) public referrers;
    // Info of each user that stakes LP tokens. pid => user address => info
    mapping(uint256 => mapping (address => UserInfo)) public userInfo;

    mapping(uint256 => uint256[]) public rewardMultipliers;
    mapping(uint256 => uint256[]) public halvingAtBlocks;
    mapping(uint256 => address) public teamAddresses; // Set address receive reward for project team IDO

    // Total allocation points. Must be the sum of all allocation points in all pools same reward token.
    mapping(IERC20 => uint256) public totalAllocPoints;
    // Total locks. Must be the sum of all token locks in all pools same reward token.
    mapping(IERC20 => uint256) public totalLocks;
    mapping(address => mapping (address => uint256)) public referralAmountLv1;
    mapping(address => mapping (address => uint256)) public referralAmountLv2;

    event Deposit(address indexed user, uint256 indexed pid, uint256 amount);
    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount);
    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount);
    event SendReward(address indexed user, uint256 indexed pid, uint256 amount, uint256 lockAmount);
    event Lock(address indexed to, uint256 value);
    event Status(address indexed user, bool status);
    event ReferralLPToken(address indexed user, IERC20 referralLPToken);
    event TeamAddressPool(address indexed user, uint256 indexed pid, address teamAddress);
    event AmountLPStakeLevelRefer(address indexed user, uint256 indexed stakeAmountLPLv1, uint256 indexed stakeAmountLPLv2);
    event PercentLPLevelRefer(address indexed user, uint256 indexed percentForReferLv1, uint256 indexed percentForReferLv2);
    event SendReferralReward(address indexed user, address indexed referrer, uint256 indexed pid, uint256 amount, uint256 lockAmount);

    constructor(
        address _devaddr,
        uint256 _stakeAmountLPLv1,
        uint256 _stakeAmountLPLv2,
        uint256 _percentForReferLv1,
        uint256 _percentForReferLv2,
        IERC20 _referralLPToken
    ) public {
        devaddr = _devaddr;
        stakeAmountLPLv1 = _stakeAmountLPLv1;
        stakeAmountLPLv2 = _stakeAmountLPLv2;
        percentForReferLv1 = _percentForReferLv1;
        percentForReferLv2 = _percentForReferLv2;
        referralLPToken = _referralLPToken;

        status = true;
    }

    function poolLength() external view returns (uint256) {
        return poolInfo.length;
    }

    // Add a new lp to the pool. Can only be called by the owner.
    function add(
        IERC20 _lpToken,
        IERC20 _rewardToken,
        uint256 _startBlock,
        uint256 _allocPoint,
        uint256 _rewardPerBlock,
        uint256 _percentLockReward,
        uint256 _percentForDev,
        uint256 _percentForBurn,
        uint256 _halvingAfterBlock,
        uint256[] memory _rewardMultiplier,
        uint256 _lockFromBlock,
        uint256 _lockToBlock
    ) public onlyOwner {
        _setAllocPoints(_rewardToken, _allocPoint);
        uint256 finishBonusAtBlock = _setHalvingAtBlocks(poolInfo.length, _rewardMultiplier, _halvingAfterBlock, _startBlock);
        teamAddresses[poolInfo.length] = devaddr;

        poolInfo.push(PoolInfo({
            lpToken: _lpToken,
            rewardToken: _rewardToken,
            lastRewardBlock: block.number > _startBlock ? block.number : _startBlock,
            allocPoint: _allocPoint,
            accRewardPerShare: 0,
            startBlock: _startBlock,
            rewardPerBlock: _rewardPerBlock,
            percentLockReward: _percentLockReward,
            percentForDev: _percentForDev,
            percentForBurn: _percentForBurn,
            finishBonusAtBlock: finishBonusAtBlock,
            totalLock: 0,
            lockFromBlock: _lockFromBlock,
            lockToBlock: _lockToBlock
        }));
    }

    function _setAllocPoints(IERC20 _rewardToken, uint256 _allocPoint) internal onlyOwner {
        totalAllocPoints[_rewardToken] = totalAllocPoints[_rewardToken].add(_allocPoint);
    }

    function _setHalvingAtBlocks(uint256 _pid, uint256[] memory _rewardMultiplier, uint256 _halvingAfterBlock, uint256 _startBlock) internal onlyOwner returns(uint256) {
        rewardMultipliers[_pid] = _rewardMultiplier;
        for (uint256 i = 0; i < _rewardMultiplier.length - 1; i++) {
            uint256 halvingAtBlock = _halvingAfterBlock.mul(i + 1).add(_startBlock);
            halvingAtBlocks[_pid].push(halvingAtBlock);
        }
        uint256 finishBonusAtBlock = _halvingAfterBlock.mul(_rewardMultiplier.length - 1).add(_startBlock);
        halvingAtBlocks[_pid].push(uint256(-1));
        return finishBonusAtBlock;
    }

    function setStatus(bool _status) public onlyOwner {
        status = _status;
        emit Status(msg.sender, status);
    }

    function setReferralLPToken(IERC20 _referralLPToken) public onlyOwner {
        referralLPToken = _referralLPToken;
        emit ReferralLPToken(msg.sender, referralLPToken);
    }

    // Set team address receive reward
    function setTeamAddressPool(uint256 _pid, address _teamAddress) public {
        require(msg.sender == teamAddresses[_pid], "dev: wut?");
        teamAddresses[_pid] = _teamAddress;
        emit TeamAddressPool(msg.sender, _pid, teamAddresses[_pid]);
    }

    function setAmountLPStakeLevelRefer(uint256 _stakeAmountLPLv1, uint256 _stakeAmountLPLv2) public onlyOwner {
        stakeAmountLPLv1 = _stakeAmountLPLv1;
        stakeAmountLPLv2 = _stakeAmountLPLv2;
        emit AmountLPStakeLevelRefer(msg.sender, stakeAmountLPLv1, stakeAmountLPLv2);
    }

    function setPercentLPLevelRefer(uint256 _percentForReferLv1, uint256 _percentForReferLv2) public onlyOwner {
        percentForReferLv1 = _percentForReferLv1;
        percentForReferLv2 = _percentForReferLv2;
        emit PercentLPLevelRefer(msg.sender, percentForReferLv1, percentForReferLv2);
    }

    // Update the given pool's BSCX allocation point. Can only be called by the owner.
    function set(uint256 _pid, uint256 _allocPoint, bool _withUpdate) public onlyOwner {
        if (_withUpdate) {
            massUpdatePools();
        }
        PoolInfo storage pool = poolInfo[_pid];

        totalAllocPoints[pool.rewardToken] = totalAllocPoints[pool.rewardToken].sub(pool.allocPoint).add(_allocPoint);
        pool.allocPoint = _allocPoint;
    }

    // Update reward variables for all pools. Be careful of gas spending!
    function massUpdatePools() public {
        uint256 length = poolInfo.length;
        for (uint256 pid = 0; pid < length; ++pid) {
            updatePool(pid);
        }
    }

    // Update reward variables of the given pool to be up-to-date.
    function updatePool(uint256 _pid) public {
        PoolInfo storage pool = poolInfo[_pid];
        if (block.number <= pool.lastRewardBlock) {
            return;
        }
        uint256 lpSupply = pool.lpToken.balanceOf(address(this));

        if (lpSupply == 0) {
            pool.lastRewardBlock = block.number;
            return;
        }

        uint256 forBurn;
        uint256 forDev;
        uint256 forFarmer;
        (forBurn, forDev, forFarmer) = getPoolReward(_pid);

        if (forBurn > 0) {
            pool.rewardToken.burn(forBurn);
        }

        if (forDev > 0) {
            uint256 lockAmount = forDev.mul(pool.percentLockReward).div(100);
            if (teamAddresses[_pid] != address(0)) {
                pool.rewardToken.transfer(teamAddresses[_pid], forDev.sub(lockAmount));
                farmLock(teamAddresses[_pid], lockAmount, _pid);
            } else {
                pool.rewardToken.transfer(devaddr, forDev.sub(lockAmount));
                farmLock(devaddr, lockAmount, _pid);
            }
        }
        pool.accRewardPerShare = pool.accRewardPerShare.add(forFarmer.mul(1e12).div(lpSupply));
        pool.lastRewardBlock = block.number;
    }

    // Return reward multiplier over the given _from to _to block.
    function getMultiplier(
        uint256 _from,
        uint256 _to,
        uint256[] memory _halvingAtBlock,
        uint256[] memory _rewardMultiplier,
        uint256 _startBlock
    ) public pure returns (uint256) {
        uint256 result = 0;
        if (_from < _startBlock) return 0;

        for (uint256 i = 0; i < _halvingAtBlock.length; i++) {
            uint256 endBlock = _halvingAtBlock[i];

            if (_to <= endBlock) {
                uint256 m = _to.sub(_from).mul(_rewardMultiplier[i]);
                return result.add(m);
            }

            if (_from < endBlock) {
                uint256 m = endBlock.sub(_from).mul(_rewardMultiplier[i]);
                _from = endBlock;
                result = result.add(m);
            }
        }

        return result;
    }

    function getPoolReward(uint256 _pid) public view returns (uint256 forBurn, uint256 forDev, uint256 forFarmer) {
        PoolInfo memory pool = poolInfo[_pid];

        uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number, halvingAtBlocks[_pid], rewardMultipliers[_pid], pool.startBlock);
        uint256 amount = multiplier.mul(pool.rewardPerBlock).mul(pool.allocPoint).div(totalAllocPoints[pool.rewardToken]);
        uint256 rewardCanAlloc = pool.rewardToken.balanceOf(address(this));

        if (rewardCanAlloc <= totalLocks[pool.rewardToken]) {
            forBurn = 0;
            forDev = 0;
            forFarmer = 0;
        } else if (rewardCanAlloc.sub(totalLocks[pool.rewardToken]) < amount) {
            forBurn = 0;
            forDev = 0;
            forFarmer = rewardCanAlloc.sub(totalLocks[pool.rewardToken]);
        } else {
            forBurn = amount.mul(pool.percentForBurn).div(100);
            forDev = amount.sub(forBurn).mul(pool.percentForDev).div(100);
            forFarmer = amount.sub(forBurn).sub(forDev);
        }
    }

    // View function to see pending reward on frontend.
    function pendingReward(uint256 _pid, address _user) external view returns (uint256) {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][_user];
        uint256 accRewardPerShare = pool.accRewardPerShare;
        uint256 lpSupply = pool.lpToken.balanceOf(address(this));
        if (block.number > pool.lastRewardBlock && lpSupply > 0) {
            uint256 forFarmer;
            (, , forFarmer) = getPoolReward(_pid);
            accRewardPerShare = accRewardPerShare.add(forFarmer.mul(1e12).div(lpSupply));

        }
        return user.amount.mul(accRewardPerShare).div(1e12).sub(user.rewardDebt);
    }

    function claimReward(uint256 _pid) public {
        require(status == true, "BSCXNTS::withdraw: can not claim reward");
        updatePool(_pid);
        _harvest(_pid);
    }

    function _harvest(uint256 _pid) internal {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][msg.sender];

        if (user.amount > 0) {
            uint256 pending = user.amount.mul(pool.accRewardPerShare).div(1e12).sub(user.rewardDebt);
            uint256 masterBal = pool.rewardToken.balanceOf(address(this));

            if (pending > masterBal) {
                pending = masterBal;
            }

            if(pending > 0) {
                uint256 referAmountLv1 = pending.mul(percentForReferLv1).div(100);
                uint256 referAmountLv2 = pending.mul(percentForReferLv2).div(100);
                _transferReferral(_pid, referAmountLv1, referAmountLv2);

                uint256 amount = pending.sub(referAmountLv1).sub(referAmountLv2);
                uint256 lockAmount = amount.mul(pool.percentLockReward).div(100);
                pool.rewardToken.transfer(msg.sender, amount.sub(lockAmount));
                farmLock(msg.sender, lockAmount, _pid);
                user.rewardDebtAtBlock = block.number;

                emit SendReward(msg.sender, _pid, amount, lockAmount);
            }

            user.rewardDebt = user.amount.mul(pool.accRewardPerShare).div(1e12);
        }
    }

    function _transferReferral(uint256 _pid, uint256 _referAmountLv1, uint256 _referAmountLv2) internal {
        PoolInfo storage pool = poolInfo[_pid];
        address referrerLv1 = referrers[address(msg.sender)];
        uint256 referAmountForDev = 0;

        if (referrerLv1 != address(0)) {
            uint256 lpStaked = referralLPToken.balanceOf(referrerLv1);
            if (lpStaked >= stakeAmountLPLv1) {
                uint256 lockAmount = _referAmountLv1.mul(pool.percentLockReward).div(100);
                pool.rewardToken.transfer(referrerLv1,  _referAmountLv1.sub(lockAmount));
                farmLock(referrerLv1, lockAmount, _pid);

                referralAmountLv1[address(pool.rewardToken)][address(referrerLv1)] = referralAmountLv1[address(pool.rewardToken)][address(referrerLv1)].add(_referAmountLv1);
                emit SendReferralReward(referrerLv1, msg.sender, _pid, _referAmountLv1, lockAmount);
            } else {
                // dev team will receive reward of referrer level 1
                referAmountForDev = referAmountForDev.add(_referAmountLv1);
            }

            address referrerLv2 = referrers[referrerLv1];
            uint256 lpStaked2 = referralLPToken.balanceOf(referrerLv2);
            if (referrerLv2 != address(0) && lpStaked2 >= stakeAmountLPLv2) {
                uint256 lockAmount = _referAmountLv2.mul(pool.percentLockReward).div(100);
                pool.rewardToken.transfer(referrerLv2, _referAmountLv2.sub(lockAmount));
                farmLock(referrerLv2, lockAmount, _pid);

                referralAmountLv2[address(pool.rewardToken)][address(referrerLv2)] = referralAmountLv2[address(pool.rewardToken)][address(referrerLv2)].add(_referAmountLv2);
                emit SendReferralReward(referrerLv2, msg.sender, _pid, _referAmountLv2, lockAmount);
            } else {
                // dev team will receive reward of referrer level 2
                referAmountForDev = referAmountForDev.add(_referAmountLv2);
            }
        } else {
            referAmountForDev = _referAmountLv1.add(_referAmountLv2);
        }

        if (referAmountForDev > 0) {
            uint256 lockAmount = referAmountForDev.mul(pool.percentLockReward).div(100);
            pool.rewardToken.transfer(devaddr, referAmountForDev.sub(lockAmount));
            farmLock(devaddr, lockAmount, _pid);
        }
    }

    // Deposit LP tokens to BSCXNTS.
    function deposit(uint256 _pid, uint256 _amount, address _referrer) public {
        require(_amount > 0, "BSCXNTS::deposit: amount must be greater than 0");

        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][msg.sender];
        updatePool(_pid);
        _harvest(_pid);
        pool.lpToken.safeTransferFrom(address(msg.sender), address(this), _amount);
        if (user.amount == 0) {
            user.rewardDebtAtBlock = block.number;
        }
        user.amount = user.amount.add(_amount);
        user.rewardDebt = user.amount.mul(pool.accRewardPerShare).div(1e12);

        if (referrers[address(msg.sender)] == address(0) && _referrer != address(0) && _referrer != address(msg.sender)) {
            referrers[address(msg.sender)] = address(_referrer);
        }

        emit Deposit(msg.sender, _pid, _amount);
    }

    // Withdraw LP tokens from BSCXNTS.
    function withdraw(uint256 _pid, uint256 _amount) public {
        require(status == true, "BSCXNTS::withdraw: can not withdraw");
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][msg.sender];
        require(user.amount >= _amount, "BSCXNTS::withdraw: not good");

        updatePool(_pid);
        _harvest(_pid);

        if(_amount > 0) {
            user.amount = user.amount.sub(_amount);
            pool.lpToken.safeTransfer(address(msg.sender), _amount);
        }
        user.rewardDebt = user.amount.mul(pool.accRewardPerShare).div(1e12);
        emit Withdraw(msg.sender, _pid, _amount);
    }

    // Withdraw without caring about rewards. EMERGENCY ONLY.
    function emergencyWithdraw(uint256 _pid) public {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][msg.sender];
        pool.lpToken.safeTransfer(address(msg.sender), user.amount);
        emit EmergencyWithdraw(msg.sender, _pid, user.amount);
        user.amount = 0;
        user.rewardDebt = 0;
    }

    // Update dev address by the previous dev.
    function dev(address _devaddr) public {
        require(msg.sender == devaddr, "dev: wut?");
        devaddr = _devaddr;
    }

    function getNewRewardPerBlock(uint256 _pid) public view returns (uint256) {
        PoolInfo storage pool = poolInfo[_pid];

        uint256 multiplier = getMultiplier(block.number -1, block.number, halvingAtBlocks[_pid], rewardMultipliers[_pid], pool.startBlock);

        return multiplier
                .mul(pool.rewardPerBlock)
                .mul(pool.allocPoint)
                .div(totalAllocPoints[pool.rewardToken]);
    }

    function totalLockInPool(uint256 _pid) public view returns (uint256) {
        return poolInfo[_pid].totalLock;
    }

    function totalLock(IERC20 _rewardToken) public view returns (uint256) {
        return totalLocks[_rewardToken];
    }

    function lockOf(address _holder, uint256 _pid) public view returns (uint256) {
        return userInfo[_pid][_holder].lockAmount;
    }

    function lastUnlockBlock(address _holder, uint256 _pid) public view returns (uint256) {
        return userInfo[_pid][_holder].lastUnlockBlock;
    }

    function farmLock(address _holder, uint256 _amount, uint256 _pid) internal {
        require(_holder != address(0), "ERC20: lock to the zero address");
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][_holder];

        require(_amount <= pool.rewardToken.balanceOf(address(this)), "ERC20: lock amount over balance");
        user.lockAmount = user.lockAmount.add(_amount);
        pool.totalLock = pool.totalLock.add(_amount);
        totalLocks[pool.rewardToken] = totalLocks[pool.rewardToken].add(_amount);

        if (user.lastUnlockBlock < pool.lockFromBlock) {
            user.lastUnlockBlock = pool.lockFromBlock;
        }
        emit Lock(_holder, _amount);
    }

    function canUnlockAmount(address _holder, uint256 _pid) public view returns (uint256) {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][_holder];

        if (block.number < pool.lockFromBlock) {
            return 0;
        }
        else if (block.number >= pool.lockToBlock) {
            return user.lockAmount;
        }
        else {
            uint256 releaseBlock = block.number.sub(user.lastUnlockBlock);
            uint256 numberLockBlock = pool.lockToBlock.sub(user.lastUnlockBlock);
            return user.lockAmount.mul(releaseBlock).div(numberLockBlock);
        }
    }

    function unlock(uint256 _pid) public {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][msg.sender];
        require(user.lockAmount > 0, "ERC20: cannot unlock");

        uint256 amount = canUnlockAmount(msg.sender, _pid);
        // just for sure
        if (amount > pool.rewardToken.balanceOf(address(this))) {
            amount = pool.rewardToken.balanceOf(address(this));
        }
        pool.rewardToken.transfer(msg.sender, amount);
        user.lockAmount = user.lockAmount.sub(amount);
        user.lastUnlockBlock = block.number;
        pool.totalLock = pool.totalLock.sub(amount);
        totalLocks[pool.rewardToken] = totalLocks[pool.rewardToken].sub(amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_devaddr","type":"address"},{"internalType":"uint256","name":"_stakeAmountLPLv1","type":"uint256"},{"internalType":"uint256","name":"_stakeAmountLPLv2","type":"uint256"},{"internalType":"uint256","name":"_percentForReferLv1","type":"uint256"},{"internalType":"uint256","name":"_percentForReferLv2","type":"uint256"},{"internalType":"contract IERC20","name":"_referralLPToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"stakeAmountLPLv1","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"stakeAmountLPLv2","type":"uint256"}],"name":"AmountLPStakeLevelRefer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"percentForReferLv1","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"percentForReferLv2","type":"uint256"}],"name":"PercentLPLevelRefer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"contract IERC20","name":"referralLPToken","type":"address"}],"name":"ReferralLPToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lockAmount","type":"uint256"}],"name":"SendReferralReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lockAmount","type":"uint256"}],"name":"SendReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"Status","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"address","name":"teamAddress","type":"address"}],"name":"TeamAddressPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"contract IERC20","name":"_rewardToken","type":"address"},{"internalType":"uint256","name":"_startBlock","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"uint256","name":"_rewardPerBlock","type":"uint256"},{"internalType":"uint256","name":"_percentLockReward","type":"uint256"},{"internalType":"uint256","name":"_percentForDev","type":"uint256"},{"internalType":"uint256","name":"_percentForBurn","type":"uint256"},{"internalType":"uint256","name":"_halvingAfterBlock","type":"uint256"},{"internalType":"uint256[]","name":"_rewardMultiplier","type":"uint256[]"},{"internalType":"uint256","name":"_lockFromBlock","type":"uint256"},{"internalType":"uint256","name":"_lockToBlock","type":"uint256"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"},{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"canUnlockAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_referrer","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devaddr","type":"address"}],"name":"dev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devaddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"},{"internalType":"uint256[]","name":"_halvingAtBlock","type":"uint256[]"},{"internalType":"uint256[]","name":"_rewardMultiplier","type":"uint256[]"},{"internalType":"uint256","name":"_startBlock","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"getNewRewardPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"getPoolReward","outputs":[{"internalType":"uint256","name":"forBurn","type":"uint256"},{"internalType":"uint256","name":"forDev","type":"uint256"},{"internalType":"uint256","name":"forFarmer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"halvingAtBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"},{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"lastUnlockBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"},{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"lockOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForReferLv1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForReferLv2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accRewardPerShare","type":"uint256"},{"internalType":"uint256","name":"rewardPerBlock","type":"uint256"},{"internalType":"uint256","name":"percentLockReward","type":"uint256"},{"internalType":"uint256","name":"percentForDev","type":"uint256"},{"internalType":"uint256","name":"percentForBurn","type":"uint256"},{"internalType":"uint256","name":"finishBonusAtBlock","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"totalLock","type":"uint256"},{"internalType":"uint256","name":"lockFromBlock","type":"uint256"},{"internalType":"uint256","name":"lockToBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"referralAmountLv1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"referralAmountLv2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralLPToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referrers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardMultipliers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stakeAmountLPLv1","type":"uint256"},{"internalType":"uint256","name":"_stakeAmountLPLv2","type":"uint256"}],"name":"setAmountLPStakeLevelRefer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentForReferLv1","type":"uint256"},{"internalType":"uint256","name":"_percentForReferLv2","type":"uint256"}],"name":"setPercentLPLevelRefer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_referralLPToken","type":"address"}],"name":"setReferralLPToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_teamAddress","type":"address"}],"name":"setTeamAddressPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakeAmountLPLv1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakeAmountLPLv2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"status","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"teamAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"name":"totalAllocPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_rewardToken","type":"address"}],"name":"totalLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"totalLockInPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"name":"totalLocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"rewardDebtAtBlock","type":"uint256"},{"internalType":"uint256","name":"lockAmount","type":"uint256"},{"internalType":"uint256","name":"lastUnlockBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162003cb638038062003cb6833981810160405260c08110156200003757600080fd5b508051602082015160408301516060840151608085015160a09095015193949293919290916000620000716001600160e01b036200011016565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018054600396909655600494909455600592909255600655600280546001600160a01b03199081166001600160a01b0393841617909155600160a01b931693169290921760ff60a01b191617905562000114565b3390565b613b9280620001246000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c80636c587b471161015c578063ae169a50116100ce578063d49e77cd11610087578063d49e77cd14610a31578063e0a2b03714610a39578063e199a03a14610a65578063ee579c1214610a6d578063efd02a8914610a93578063f2fde38b14610a9b5761027f565b8063ae169a5014610950578063aea8a3ee1461096d578063b31d10b314610993578063b7637836146109bf578063c9c61a74146109eb578063d0f6161414610a0e5761027f565b80638da5cb5b116101205780638da5cb5b146108425780638dbdbe6d1461084a57806393f1a40b1461087c57806398969e82146108d35780639e5e4f87146108ff578063abca3fc1146109225761027f565b80636c587b47146106e1578063715018a6146107d15780637d16c9ec146107d9578063887d3da3146107e15780638d88a90e1461081c5761027f565b806351eb05a6116101f557806360dc47cb116101b957806360dc47cb146106465780636198e3391461064e578063630b5ba11461066b57806364482f7914610673578063651a76ff1461069e5780636b8bfc4a146106bb5761027f565b806351eb05a6146104955780635312ea8e146104b25780635821c3c2146104cf5780635c40f6f4146106045780635ffc10cc146106235761027f565b80632419217e116102475780632419217e146103b55780632a4fcef5146103ee5780634298bdbd146103f6578063441a3e701461041c5780634a2d2ae0146104415780634a3b68cc1461046f5761027f565b8063081e3eda146102845780630a8424331461029e5780631526fe27146102ca5780631d465c821461037c578063200d2ed214610399575b600080fd5b61028c610ac1565b60408051918252519081900360200190f35b61028c600480360360408110156102b457600080fd5b506001600160a01b038135169060200135610ac8565b6102e7600480360360208110156102e057600080fd5b5035610ba8565b604051808f6001600160a01b03166001600160a01b031681526020018e6001600160a01b03166001600160a01b031681526020018d81526020018c81526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019e50505050505050505050505050505060405180910390f35b61028c6004803603602081101561039257600080fd5b5035610c31565b6103a1610d79565b604080519115158252519081900360200190f35b6103d2600480360360208110156103cb57600080fd5b5035610d89565b604080516001600160a01b039092168252519081900360200190f35b6103d2610da4565b61028c6004803603602081101561040c57600080fd5b50356001600160a01b0316610db3565b61043f6004803603604081101561043257600080fd5b5080359060200135610dc5565b005b61028c6004803603604081101561045757600080fd5b506001600160a01b0381358116916020013516610f49565b6103d26004803603602081101561048557600080fd5b50356001600160a01b0316610f66565b61043f600480360360208110156104ab57600080fd5b5035610f81565b61043f600480360360208110156104c857600080fd5b50356112f4565b61028c600480360360a08110156104e557600080fd5b81359160208101359181019060608101604082013564010000000081111561050c57600080fd5b82018360208201111561051e57600080fd5b8035906020019184602083028401116401000000008311171561054057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561059057600080fd5b8201836020820111156105a257600080fd5b803590602001918460208302840111640100000000831117156105c457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250611395915050565b61043f6004803603602081101561061a57600080fd5b50351515611483565b61028c6004803603604081101561063957600080fd5b508035906020013561153c565b61028c61156a565b61043f6004803603602081101561066457600080fd5b5035611570565b61043f61180e565b61043f6004803603606081101561068957600080fd5b50803590602081013590604001351515611831565b61028c600480360360208110156106b457600080fd5b5035611923565b61043f600480360360208110156106d157600080fd5b50356001600160a01b031661194b565b61043f60048036036101808110156106f857600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359160808201359160a08101359160c08201359160e0810135916101008201359190810190610140810161012082013564010000000081111561075a57600080fd5b82018360208201111561076c57600080fd5b8035906020019184602083028401116401000000008311171561078e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505082359350505060200135611a01565b61043f611c5d565b61028c611cff565b6107fe600480360360208110156107f757600080fd5b5035611d05565b60408051938452602084019290925282820152519081900360600190f35b61043f6004803603602081101561083257600080fd5b50356001600160a01b031661207a565b6103d26120e7565b61043f6004803603606081101561086057600080fd5b50803590602081013590604001356001600160a01b03166120f6565b6108a86004803603604081101561089257600080fd5b50803590602001356001600160a01b0316612291565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b61028c600480360360408110156108e957600080fd5b50803590602001356001600160a01b03166122cb565b61043f6004803603604081101561091557600080fd5b5080359060200135612405565b61028c6004803603604081101561093857600080fd5b506001600160a01b038135811691602001351661249a565b61043f6004803603602081101561096657600080fd5b50356124b7565b61028c6004803603602081101561098357600080fd5b50356001600160a01b0316612515565b61028c600480360360408110156109a957600080fd5b506001600160a01b038135169060200135612527565b61028c600480360360408110156109d557600080fd5b506001600160a01b038135169060200135612551565b61043f60048036036040811015610a0157600080fd5b508035906020013561257b565b61028c60048036036040811015610a2457600080fd5b5080359060200135612610565b6103d2612629565b61043f60048036036040811015610a4f57600080fd5b50803590602001356001600160a01b0316612638565b61028c6126f9565b61028c60048036036020811015610a8357600080fd5b50356001600160a01b03166126ff565b61028c61271a565b61043f60048036036020811015610ab157600080fd5b50356001600160a01b0316612720565b6007545b90565b60008060078381548110610ad857fe5b600091825260208083208684526009825260408085206001600160a01b038a1686529092529220600c600e90920290920190810154909250431015610b2257600092505050610ba2565b81600d01544310610b3a57600301549150610ba29050565b6000610b5382600401544361281890919063ffffffff16565b90506000610b72836004015485600d015461281890919063ffffffff16565b9050610b9b81610b8f84866003015461286190919063ffffffff16565b9063ffffffff6128ba16565b9450505050505b92915050565b60078181548110610bb557fe5b60009182526020909120600e9091020180546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b8c0154600c8d0154600d909d01546001600160a01b039c8d169e509a909b169b989a97999698959794969395929491939092908e565b60008060078381548110610c4157fe5b90600052602060002090600e020190506000610d216001430343600b6000888152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610cb857602002820191906000526020600020905b815481526020019060010190808311610ca4575b50505060008a8152600a602090815260409182902080548351818402810184019094528084529294509250830182828015610d1257602002820191906000526020600020905b815481526020019060010190808311610cfe575b505050505086600a0154611395565b60018301546001600160a01b03166000908152600d602052604090205460028401546005850154929350610d7192610b8f9190610d6590869063ffffffff61286116565b9063ffffffff61286116565b949350505050565b600154600160a01b900460ff1681565b600c602052600090815260409020546001600160a01b031681565b6002546001600160a01b031681565b600d6020526000908152604090205481565b60018054600160a01b900460ff16151514610e115760405162461bcd60e51b8152600401808060200182810382526023815260200180613aa86023913960400191505060405180910390fd5b600060078381548110610e2057fe5b6000918252602080832086845260098252604080852033865290925292208054600e9092029092019250831115610e9e576040805162461bcd60e51b815260206004820152601b60248201527f425343584e54533a3a77697468647261773a206e6f7420676f6f640000000000604482015290519081900360640190fd5b610ea784610f81565b610eb0846128fc565b8215610ee6578054610ec8908463ffffffff61281816565b81558154610ee6906001600160a01b0316338563ffffffff612b9e16565b60048201548154610f079164e8d4a5100091610b8f9163ffffffff61286116565b6001820155604080518481529051859133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a350505050565b601060209081526000928352604080842090915290825290205481565b6008602052600090815260409020546001600160a01b031681565b600060078281548110610f9057fe5b90600052602060002090600e0201905080600301544311610fb157506112f1565b8054604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610ffb57600080fd5b505afa15801561100f573d6000803e3d6000fd5b505050506040513d602081101561102557600080fd5b505190508061103b5750436003909101556112f1565b600080600061104986611d05565b9194509250905082156110d357600185015460408051630852cd8d60e31b81526004810186905290516001600160a01b03909216916342966c68916024808201926020929091908290030181600087803b1580156110a657600080fd5b505af11580156110ba573d6000803e3d6000fd5b505050506040513d60208110156110d057600080fd5b50505b81156112b05760006110f76064610b8f88600601548661286190919063ffffffff16565b6000888152600c60205260409020549091506001600160a01b0316156111f15760018601546000888152600c60205260409020546001600160a01b039182169163a9059cbb911661114e868563ffffffff61281816565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561119d57600080fd5b505af11580156111b1573d6000803e3d6000fd5b505050506040513d60208110156111c757600080fd5b50506000878152600c60205260409020546111ec906001600160a01b03168289612bf0565b6112ae565b60018087015490546001600160a01b039182169163a9059cbb911661121c868563ffffffff61281816565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561126b57600080fd5b505af115801561127f573d6000803e3d6000fd5b505050506040513d602081101561129557600080fd5b50506001546112ae906001600160a01b03168289612bf0565b505b6112dd6112cc85610b8f8464e8d4a5100063ffffffff61286116565b60048701549063ffffffff612e3216565b600486015550504360039093019290925550505b50565b60006007828154811061130357fe5b600091825260208083208584526009825260408085203380875293529093208054600e909302909301805490945061134e926001600160a01b0391909116919063ffffffff612b9e16565b80546040805191825251849133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a360008082556001909101555050565b600080828710156113aa57600091505061147a565b60005b85518110156114765760008682815181106113c457fe5b6020026020010151905080881161141e5760006114018784815181106113e657fe5b6020026020010151610d658c8c61281890919063ffffffff16565b9050611413848263ffffffff612e3216565b94505050505061147a565b8089101561146d57600061145287848151811061143757fe5b6020026020010151610d658c8561281890919063ffffffff16565b91995089919050611469848263ffffffff612e3216565b9350505b506001016113ad565b5090505b95945050505050565b61148b612e8c565b6000546001600160a01b039081169116146114db576040805162461bcd60e51b81526020600482018190526024820152600080516020613aec833981519152604482015290519081900360640190fd5b60018054821515600160a01b90810260ff60a01b199092169190911791829055604080519190920460ff1615158152905133917f558839e12adce85a404b8c93c3761d6ee519f1cd01761fe1123cdbd257d2eaae919081900360200190a250565b600b602052816000526040600020818154811061155557fe5b90600052602060002001600091509150505481565b60065481565b60006007828154811061157f57fe5b6000918252602080832085845260098252604080852033865290925292206003810154600e90920290920192506115f4576040805162461bcd60e51b815260206004820152601460248201527345524332303a2063616e6e6f7420756e6c6f636b60601b604482015290519081900360640190fd5b60006116003385610ac8565b6001840154604080516370a0823160e01b815230600482015290519293506001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561165057600080fd5b505afa158015611664573d6000803e3d6000fd5b505050506040513d602081101561167a57600080fd5b50518111156116ff576001830154604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156116d057600080fd5b505afa1580156116e4573d6000803e3d6000fd5b505050506040513d60208110156116fa57600080fd5b505190505b60018301546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561175557600080fd5b505af1158015611769573d6000803e3d6000fd5b505050506040513d602081101561177f57600080fd5b50506003820154611796908263ffffffff61281816565b6003830155436004830155600b8301546117b6908263ffffffff61281816565b600b84015560018301546001600160a01b03166000908152600e60205260409020546117e8908263ffffffff61281816565b6001909301546001600160a01b03166000908152600e6020526040902092909255505050565b60075460005b8181101561182d5761182581610f81565b600101611814565b5050565b611839612e8c565b6000546001600160a01b03908116911614611889576040805162461bcd60e51b81526020600482018190526024820152600080516020613aec833981519152604482015290519081900360640190fd5b80156118975761189761180e565b6000600784815481106118a657fe5b600091825260208083206002600e909302019182015460018301546001600160a01b03168452600d9091526040909220549092506118fb9185916118ef9163ffffffff61281816565b9063ffffffff612e3216565b60018201546001600160a01b03166000908152600d6020526040902055600201919091555050565b60006007828154811061193257fe5b90600052602060002090600e0201600b01549050919050565b611953612e8c565b6000546001600160a01b039081169116146119a3576040805162461bcd60e51b81526020600482018190526024820152600080516020613aec833981519152604482015290519081900360640190fd5b600280546001600160a01b038084166001600160a01b03199092169190911791829055604080519290911682525133917f768447173f14f725553736897ef33f8a4706a3565cd73b1a62e6ea19885f8ddd919081900360200190a250565b611a09612e8c565b6000546001600160a01b03908116911614611a59576040805162461bcd60e51b81526020600482018190526024820152600080516020613aec833981519152604482015290519081900360640190fd5b611a638b8a612e90565b600754600090611a759085878e612f31565b9050600160009054906101000a90046001600160a01b0316600c6000600780549050815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506007604051806101c001604052808f6001600160a01b031681526020018e6001600160a01b031681526020018c81526020018d4311611b08578d611b0a565b435b8152602001600081526020018b81526020018a81526020018981526020018881526020018381526020018d8152602001600081526020018581526020018481525090806001815401808255809150506001900390600052602060002090600e020160009091909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d0155505050505050505050505050505050565b611c65612e8c565b6000546001600160a01b03908116911614611cb5576040805162461bcd60e51b81526020600482018190526024820152600080516020613aec833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60045481565b6000806000611d1261396c565b60078581548110611d1f57fe5b60009182526020808320604080516101c081018252600e90940290910180546001600160a01b0390811685526001820154168484015260028101548483015260038101546060850181905260048201546080860152600582015460a0860152600682015460c0860152600782015460e086015260088201546101008601526009820154610120860152600a820154610140860152600b80830154610160870152600c830154610180870152600d909201546101a08601528a86529083528185208054835181860281018601909452808452949650611e9694919343939290830182828015611e2c57602002820191906000526020600020905b815481526020019060010190808311611e18575b50505060008c8152600a602090815260409182902080548351818402810184019094528084529294509250830182828015611e8657602002820191906000526020600020905b815481526020019060010190808311611e72575b5050505050866101400151611395565b90506000611ee6600d600085602001516001600160a01b03166001600160a01b0316815260200190815260200160002054610b8f8560400151610d658760a001518761286190919063ffffffff16565b602080850151604080516370a0823160e01b815230600482015290519394506000936001600160a01b03909216926370a0823192602480840193829003018186803b158015611f3457600080fd5b505afa158015611f48573d6000803e3d6000fd5b505050506040513d6020811015611f5e57600080fd5b50516020858101516001600160a01b03166000908152600e90915260409020549091508111611f985760009650600095506000945061206f565b6020808501516001600160a01b03166000908152600e90915260409020548290611fc990839063ffffffff61281816565b101561200b576020808501516001600160a01b03166000908152600e909152604081205490975087965061200490829063ffffffff61281816565b945061206f565b6120286064610b8f8661010001518561286190919063ffffffff16565b965061204a6064610b8f8660e00151610d658b8761281890919063ffffffff16565b955061206c86612060848a63ffffffff61281816565b9063ffffffff61281816565b94505b505050509193909250565b6001546001600160a01b031633146120c5576040805162461bcd60e51b81526020600482015260096024820152686465763a207775743f60b81b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b600082116121355760405162461bcd60e51b815260040180806020018281038252602f815260200180613a79602f913960400191505060405180910390fd5b60006007848154811061214457fe5b600091825260208083208784526009825260408085203386529092529220600e909102909101915061217585610f81565b61217e856128fc565b815461219b906001600160a01b031633308763ffffffff61304f16565b80546121a8574360028201555b80546121ba908563ffffffff612e3216565b80825560048301546121dd9164e8d4a5100091610b8f919063ffffffff61286116565b6001820155336000908152600860205260409020546001600160a01b031615801561221057506001600160a01b03831615155b801561222557506001600160a01b0383163314155b156122535733600090815260086020526040902080546001600160a01b0319166001600160a01b0385161790555b604080518581529051869133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a35050505050565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b600080600784815481106122db57fe5b600091825260208083208784526009825260408085206001600160a01b038981168752908452818620600e95909502909201600481810154825484516370a0823160e01b81523093810193909352935192985095969492909316926370a08231926024808301939192829003018186803b15801561235857600080fd5b505afa15801561236c573d6000803e3d6000fd5b505050506040513d602081101561238257600080fd5b505160038501549091504311801561239a5750600081115b156123dd5760006123aa88611d05565b92506123d991506123cc905083610b8f8464e8d4a5100063ffffffff61286116565b849063ffffffff612e3216565b9250505b610b9b836001015461206064e8d4a51000610b8f86886000015461286190919063ffffffff16565b61240d612e8c565b6000546001600160a01b0390811691161461245d576040805162461bcd60e51b81526020600482018190526024820152600080516020613aec833981519152604482015290519081900360640190fd5b600382905560048190556040518190839033907f655e226a259ebe491272542e3439b1bc594e996b3c410d74ad92599ffd08584c90600090a45050565b600f60209081526000928352604080842090915290825290205481565b60018054600160a01b900460ff161515146125035760405162461bcd60e51b8152600401808060200182810382526027815260200180613b0c6027913960400191505060405180910390fd5b61250c81610f81565b6112f1816128fc565b600e6020526000908152604090205481565b60009081526009602090815260408083206001600160a01b03949094168352929052206003015490565b60009081526009602090815260408083206001600160a01b03949094168352929052206004015490565b612583612e8c565b6000546001600160a01b039081169116146125d3576040805162461bcd60e51b81526020600482018190526024820152600080516020613aec833981519152604482015290519081900360640190fd5b600582905560068190556040518190839033907fb630deee6171e3d099cf0ace743030257d788023cc2708ebe7d95701bb7636ea90600090a45050565b600a602052816000526040600020818154811061155557fe5b6001546001600160a01b031681565b6000828152600c60205260409020546001600160a01b0316331461268f576040805162461bcd60e51b81526020600482015260096024820152686465763a207775743f60b81b604482015290519081900360640190fd5b6000828152600c602090815260409182902080546001600160a01b0319166001600160a01b0385811691909117918290558351911681529151849233927ff8b8e8e2fcd50ae383e69dc00401acca513d68e70b655cf123a0a254a9ecc5fd92918290030190a35050565b60035481565b6001600160a01b03166000908152600e602052604090205490565b60055481565b612728612e8c565b6000546001600160a01b03908116911614612778576040805162461bcd60e51b81526020600482018190526024820152600080516020613aec833981519152604482015290519081900360640190fd5b6001600160a01b0381166127bd5760405162461bcd60e51b8152600401808060200182810382526026815260200180613a536026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061285a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130af565b9392505050565b60008261287057506000610ba2565b8282028284828161287d57fe5b041461285a5760405162461bcd60e51b8152600401808060200182810382526021815260200180613acb6021913960400191505060405180910390fd5b600061285a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613146565b60006007828154811061290b57fe5b6000918252602080832085845260098252604080852033865290925292208054600e909202909201925015612b99576000612968826001015461206064e8d4a51000610b8f8760040154876000015461286190919063ffffffff16565b6001840154604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156129bb57600080fd5b505afa1580156129cf573d6000803e3d6000fd5b505050506040513d60208110156129e557600080fd5b50519050808211156129f5578091505b8115612b70576000612a176064610b8f6005548661286190919063ffffffff16565b90506000612a356064610b8f6006548761286190919063ffffffff16565b9050612a428783836131ab565b6000612a5882612060878663ffffffff61281816565b90506000612a786064610b8f8a600601548561286190919063ffffffff16565b60018901549091506001600160a01b031663a9059cbb33612a9f858563ffffffff61281816565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612aee57600080fd5b505af1158015612b02573d6000803e3d6000fd5b505050506040513d6020811015612b1857600080fd5b50612b26905033828b612bf0565b436002880155604080518381526020810183905281518b9233927fee9cbb749817d7aa2d7b761a12c7789e3f9ac46e77f63c47e4f5f21da5e7cf0b929081900390910190a3505050505b60048401548354612b919164e8d4a5100091610b8f9163ffffffff61286116565b600184015550505b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612b9990849061373e565b6001600160a01b038316612c4b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206c6f636b20746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600060078281548110612c5a57fe5b600091825260208083208584526009825260408085206001600160a01b03808b168752908452948190206001600e9095029092019384015481516370a0823160e01b81523060048201529151949650919491909116926370a0823192602480840193919291829003018186803b158015612cd357600080fd5b505afa158015612ce7573d6000803e3d6000fd5b505050506040513d6020811015612cfd57600080fd5b5051841115612d53576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206c6f636b20616d6f756e74206f7665722062616c616e636500604482015290519081900360640190fd5b6003810154612d68908563ffffffff612e3216565b6003820155600b820154612d82908563ffffffff612e3216565b600b83015560018201546001600160a01b03166000908152600e6020526040902054612db4908563ffffffff612e3216565b60018301546001600160a01b03166000908152600e6020526040902055600c82015460048201541015612dec57600c82015460048201555b6040805185815290516001600160a01b038716917f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d427919081900360200190a25050505050565b60008282018381101561285a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b612e98612e8c565b6000546001600160a01b03908116911614612ee8576040805162461bcd60e51b81526020600482018190526024820152600080516020613aec833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600d6020526040902054612f11908263ffffffff612e3216565b6001600160a01b039092166000908152600d602052604090209190915550565b6000612f3b612e8c565b6000546001600160a01b03908116911614612f8b576040805162461bcd60e51b81526020600482018190526024820152600080516020613aec833981519152604482015290519081900360640190fd5b6000858152600a602090815260409091208551612faa928701906139ed565b5060005b6001855103811015613003576000612fd3846118ef876001860163ffffffff61286116565b6000888152600b602090815260408220805460018181018355918452919092200191909155919091019050612fae565b506000613021836118ef60018851038761286190919063ffffffff16565b6000878152600b60209081526040822080546001810182559083529120600019910155915050949350505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526130a990859061373e565b50505050565b6000818484111561313e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156131035781810151838201526020016130eb565b50505050905090810190601f1680156131305780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836131955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156131035781810151838201526020016130eb565b5060008385816131a157fe5b0495945050505050565b6000600784815481106131ba57fe5b6000918252602080832033845260089091526040832054600e9092020192506001600160a01b031690811561363d57600254604080516370a0823160e01b81526001600160a01b038581166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b15801561323a57600080fd5b505afa15801561324e573d6000803e3d6000fd5b505050506040513d602081101561326457600080fd5b505160035490915081106133ec5760006132906064610b8f87600601548a61286190919063ffffffff16565b60018601549091506001600160a01b031663a9059cbb856132b78a8563ffffffff61281816565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561330657600080fd5b505af115801561331a573d6000803e3d6000fd5b505050506040513d602081101561333057600080fd5b5061333e905084828a612bf0565b60018501546001600160a01b039081166000908152600f6020908152604080832093881683529290522054613379908863ffffffff612e3216565b60018601546001600160a01b039081166000908152600f60209081526040808320938916808452938252918290209390935580518a815292830184905280518b933393927f05afe8f316791873cdc709cfd4ea3883348a440e927827e1805f51c7655f334692918290030190a4506133ff565b6133fc828763ffffffff612e3216565b91505b6001600160a01b0380841660009081526008602090815260408083205460025482516370a0823160e01b8152918616600483018190529251929516926370a0823192602480840193829003018186803b15801561345b57600080fd5b505afa15801561346f573d6000803e3d6000fd5b505050506040513d602081101561348557600080fd5b505190506001600160a01b038216158015906134a357506004548110155b156136225760006134c66064610b8f89600601548b61286190919063ffffffff16565b60018801549091506001600160a01b031663a9059cbb846134ed8b8563ffffffff61281816565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561353c57600080fd5b505af1158015613550573d6000803e3d6000fd5b505050506040513d602081101561356657600080fd5b50613574905083828c612bf0565b60018701546001600160a01b039081166000908152601060209081526040808320938716835292905220546135af908963ffffffff612e3216565b60018801546001600160a01b039081166000908152601060209081526040808320938816808452938252918290209390935580518b815292830184905280518d933393927f05afe8f316791873cdc709cfd4ea3883348a440e927827e1805f51c7655f334692918290030190a450613635565b613632848863ffffffff612e3216565b93505b505050613650565b61364d858563ffffffff612e3216565b90505b80156137365760006136746064610b8f86600601548561286190919063ffffffff16565b60018086015490549192506001600160a01b039081169163a9059cbb91166136a2858563ffffffff61281816565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156136f157600080fd5b505af1158015613705573d6000803e3d6000fd5b505050506040513d602081101561371b57600080fd5b5050600154613734906001600160a01b03168289612bf0565b505b505050505050565b6060613793826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166137ef9092919063ffffffff16565b805190915015612b99578080602001905160208110156137b257600080fd5b5051612b995760405162461bcd60e51b815260040180806020018281038252602a815260200180613b33602a913960400191505060405180910390fd5b6060610d718484600085606061380485613966565b613855576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106138945780518252601f199092019160209182019101613875565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146138f6576040519150601f19603f3d011682016040523d82523d6000602084013e6138fb565b606091505b5091509150811561390f579150610d719050565b80511561391f5780518082602001fd5b60405162461bcd60e51b81526020600482018181528651602484015286518793919283926044019190850190808383600083156131035781810151838201526020016130eb565b3b151590565b604051806101c0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215613a28579160200282015b82811115613a28578251825591602001919060010190613a0d565b50613a34929150613a38565b5090565b610ac591905b80821115613a345760008155600101613a3e56fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373425343584e54533a3a6465706f7369743a20616d6f756e74206d7573742062652067726561746572207468616e2030425343584e54533a3a77697468647261773a2063616e206e6f74207769746864726177536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572425343584e54533a3a77697468647261773a2063616e206e6f7420636c61696d207265776172645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122021b5595947d6fc32008427bfabf6c0890c3908819673fffff0f79203a4cc92a664736f6c63430006060033000000000000000000000000dad254728a37d1e80c21afae688c64d0383cc307000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000012c0000000000000000000000000000000000000000000000000000000000000046000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000a32a983a64ce21834221aa0ad1f1533907553136

Deployed ByteCode Sourcemap

10342:22329:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10342:22329:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;14942:95:0;;;:::i;:::-;;;;;;;;;;;;;;;;31265:651;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;31265:651:0;;;;;;;;:::i;12456:26::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12456:26:0;;:::i;:::-;;;;;-1:-1:-1;;;;;12456:26:0;-1:-1:-1;;;;;12456:26:0;;;;;;-1:-1:-1;;;;;12456:26:0;-1:-1:-1;;;;;12456:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29511:444;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;29511:444:0;;:::i;11895:18::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;12811:48;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12811:48:0;;:::i;:::-;;;;-1:-1:-1;;;;;12811:48:0;;;;;;;;;;;;;;11969:29;;;:::i;13025:50::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13025:50:0;-1:-1:-1;;;;;13025:50:0;;:::i;28225:666::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;28225:666:0;;;;;;;:::i;:::-;;13301:73;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;13301:73:0;;;;;;;;;;:::i;12489:44::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12489:44:0;-1:-1:-1;;;;;12489:44:0;;:::i;19364:1231::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19364:1231:0;;:::i;28962:356::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;28962:356:0;;:::i;20671:829::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;20671:829:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;20671:829:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;20671:829:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;20671:829:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20671:829:0;;;;;;;;-1:-1:-1;20671:829:0;;-1:-1:-1;;27:11;11:28;;8:2;;;52:1;49;42:12;8:2;20671:829:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;20671:829:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;20671:829:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20671:829:0;;-1:-1:-1;;20671:829:0;;;-1:-1:-1;20671:829:0;;-1:-1:-1;;20671:829:0:i;17314:127::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17314:127:0;;;;:::i;12752:52::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12752:52:0;;;;;;;:::i;12344:33::-;;;:::i;31924:744::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;31924:744:0;;:::i;19108:180::-;;;:::i;18652:373::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18652:373:0;;;;;;;;;;;;;;:::i;29963:119::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;29963:119:0;;:::i;17449:183::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17449:183:0;-1:-1:-1;;;;;17449:183:0;;:::i;15112:1348::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;15112:1348:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;15112:1348:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;15112:1348:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;15112:1348:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;15112:1348:0;;-1:-1:-1;;15112:1348:0;;;-1:-1:-1;;;15112:1348:0;;;;:::i;9686:148::-;;;:::i;12153:31::-;;;:::i;21508:1094::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21508:1094:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;29374:129;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;29374:129:0;-1:-1:-1;;;;;29374:129:0;;:::i;9044:79::-;;;:::i;27285:891::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;27285:891:0;;;;;;;;;;;-1:-1:-1;;;;;27285:891:0;;:::i;12617:65::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12617:65:0;;;;;;-1:-1:-1;;;;;12617:65:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22667:664;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22667:664:0;;;;;;-1:-1:-1;;;;;22667:664:0;;:::i;17948:296::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17948:296:0;;;;;;;:::i;13221:73::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;13221:73:0;;;;;;;;;;:::i;23339:179::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23339:179:0;;:::i;13170:44::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13170:44:0;-1:-1:-1;;;;;13170:44:0;;:::i;30218:137::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;30218:137:0;;;;;;;;:::i;30363:151::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;30363:151:0;;;;;;;;:::i;18252:304::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18252:304:0;;;;;;;:::i;12691:54::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12691:54:0;;;;;;;:::i;11866:22::-;;;:::i;17680:260::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17680:260:0;;;;;;-1:-1:-1;;;;;17680:260:0;;:::i;12047:31::-;;;:::i;30090:120::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30090:120:0;-1:-1:-1;;;;;30090:120:0;;:::i;12261:33::-;;;:::i;9989:244::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9989:244:0;-1:-1:-1;;;;;9989:244:0;;:::i;14942:95::-;15014:8;:15;14942:95;;:::o;31265:651::-;31342:7;31362:21;31386:8;31395:4;31386:14;;;;;;;;;;;;;;;;31435;;;:8;:14;;;;;;-1:-1:-1;;;;;31435:23:0;;;;;;;;;31490:18;31386:14;;;;;;;31490:18;;;;31386:14;;-1:-1:-1;31475:12:0;:33;31471:438;;;31532:1;31525:8;;;;;;31471:438;31580:4;:16;;;31564:12;:32;31560:349;;31620:15;;;;-1:-1:-1;31613:22:0;;-1:-1:-1;31613:22:0;31560:349;31677:20;31700:38;31717:4;:20;;;31700:12;:16;;:38;;;;:::i;:::-;31677:61;;31753:23;31779:42;31800:4;:20;;;31779:4;:16;;;:20;;:42;;;;:::i;:::-;31753:68;;31843:54;31881:15;31843:33;31863:12;31843:4;:15;;;:19;;:33;;;;:::i;:::-;:37;:54;:37;:54;:::i;:::-;31836:61;;;;;;31265:651;;;;;:::o;12456:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12456:26:0;;;;-1:-1:-1;12456:26:0;;;;;;;;;;;;;;;;;;;;;;;;;:::o;29511:444::-;29576:7;29596:21;29620:8;29629:4;29620:14;;;;;;;;;;;;;;;;;;29596:38;;29647:18;29668:109;29696:1;29682:12;:15;29699:12;29713:15;:21;29729:4;29713:21;;;;;;;;;;;29668:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;29736:23:0;;;;:17;:23;;;;;;;;;29668:109;;;;;;;;;;;;;;;;;;;-1:-1:-1;29736:23:0;-1:-1:-1;29668:109:0;;29736:23;29668:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29761:4;:15;;;29668:13;:109::i;:::-;29929:16;;;;-1:-1:-1;;;;;29929:16:0;29912:34;;;;:16;:34;;;;;;29873:15;;;;29830:19;;;;29647:130;;-1:-1:-1;29797:150:0;;:92;;29873:15;29797:53;;29647:130;;29797:53;:32;:53;:::i;:::-;:75;:92;:75;:92;:::i;:150::-;29790:157;29511:444;-1:-1:-1;;;;29511:444:0:o;11895:18::-;;;-1:-1:-1;;;11895:18:0;;;;;:::o;12811:48::-;;;;;;;;;;;;-1:-1:-1;;;;;12811:48:0;;:::o;11969:29::-;;;-1:-1:-1;;;;;11969:29:0;;:::o;13025:50::-;;;;;;;;;;;;;:::o;28225:666::-;28300:6;;;-1:-1:-1;;;28300:6:0;;;;:14;;;28292:62;;;;-1:-1:-1;;;28292:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28365:21;28389:8;28398:4;28389:14;;;;;;;;;;;;;;;;28438;;;:8;:14;;;;;;28453:10;28438:26;;;;;;;28483:11;;28389:14;;;;;;;;-1:-1:-1;28483:22:0;-1:-1:-1;28483:22:0;28475:62;;;;;-1:-1:-1;;;28475:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28550:16;28561:4;28550:10;:16::i;:::-;28577:14;28586:4;28577:8;:14::i;:::-;28607:11;;28604:151;;28649:11;;:24;;28665:7;28649:24;:15;:24;:::i;:::-;28635:38;;28688:12;;:55;;-1:-1:-1;;;;;28688:12:0;28722:10;28735:7;28688:55;:25;:55;:::i;:::-;28799:22;;;;28783:11;;:49;;28827:4;;28783:39;;;:15;:39;:::i;:49::-;28765:15;;;:67;28848:35;;;;;;;;28869:4;;28857:10;;28848:35;;;;;;;;;28225:666;;;;:::o;13301:73::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;12489:44::-;;;;;;;;;;;;-1:-1:-1;;;;;12489:44:0;;:::o;19364:1231::-;19416:21;19440:8;19449:4;19440:14;;;;;;;;;;;;;;;;;;19416:38;;19485:4;:20;;;19469:12;:36;19465:75;;19522:7;;;19465:75;19569:12;;:37;;;-1:-1:-1;;;19569:37:0;;19600:4;19569:37;;;;;;19550:16;;-1:-1:-1;;;;;19569:12:0;;:22;;:37;;;;;;;;;;;;;;:12;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;19569:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19569:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19569:37:0;;-1:-1:-1;19623:13:0;19619:102;;-1:-1:-1;19676:12:0;19653:20;;;;:35;19703:7;;19619:102;19733:15;19759:14;19784:17;19843:19;19857:4;19843:13;:19::i;:::-;19812:50;;-1:-1:-1;19812:50:0;-1:-1:-1;19812:50:0;-1:-1:-1;19879:11:0;;19875:74;;19907:16;;;;:30;;;-1:-1:-1;;;19907:30:0;;;;;;;;;;-1:-1:-1;;;;;19907:16:0;;;;:21;;:30;;;;;;;;;;;;;;;:16;;:30;;;2:2:-1;;;;27:1;24;17:12;2:2;19907:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19907:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;19875:74:0;19965:10;;19961:484;;19992:18;20013:43;20052:3;20013:34;20024:4;:22;;;20013:6;:10;;:34;;;;:::i;:43::-;20106:1;20075:19;;;:13;:19;;;;;;19992:64;;-1:-1:-1;;;;;;20075:19:0;:33;20071:363;;20129:16;;;;;20155:19;;;:13;:19;;;;;;-1:-1:-1;;;;;20129:16:0;;;;:25;;20155:19;20176:22;:6;20187:10;20176:22;:10;:22;:::i;:::-;20129:70;;;;;;;;;;;;;-1:-1:-1;;;;;20129:70:0;-1:-1:-1;;;;;20129:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20129:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20129:70:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;20227:19:0;;;;:13;20129:70;20227:19;;;;;20218:47;;-1:-1:-1;;;;;20227:19:0;20248:10;20241:4;20218:8;:47::i;:::-;20071:363;;;20306:16;;;;;20332:7;;-1:-1:-1;;;;;20306:16:0;;;;:25;;20332:7;20341:22;:6;20352:10;20341:22;:10;:22;:::i;:::-;20306:58;;;;;;;;;;;;;-1:-1:-1;;;;;20306:58:0;-1:-1:-1;;;;;20306:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20306:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20306:58:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;20392:7:0;;20383:35;;-1:-1:-1;;;;;20392:7:0;20401:10;20413:4;20383:8;:35::i;:::-;19961:484;;20480:61;20507:33;20531:8;20507:19;:9;20521:4;20507:19;:13;:19;:::i;:33::-;20480:22;;;;;:61;:26;:61;:::i;:::-;20455:22;;;:86;-1:-1:-1;;20575:12:0;20552:20;;;;:35;;;;-1:-1:-1;;19364:1231:0;;:::o;28962:356::-;29021:21;29045:8;29054:4;29045:14;;;;;;;;;;;;;;;;29094;;;:8;:14;;;;;;29109:10;29094:26;;;;;;;;29178:11;;29045:14;;;;;;;29131:12;;29045:14;;-1:-1:-1;29131:59:0;;-1:-1:-1;;;;;29131:12:0;;;;;29109:10;29131:59;:25;:59;:::i;:::-;29242:11;;29206:48;;;;;;;29236:4;;29224:10;;29206:48;;;;;;;;;29279:1;29265:15;;;29291;;;;:19;-1:-1:-1;;28962:356:0:o;20671:829::-;20886:7;;20939:19;;;20935:33;;;20967:1;20960:8;;;;;20935:33;20986:9;20981:486;21005:15;:22;21001:1;:26;20981:486;;;21049:16;21068:15;21084:1;21068:18;;;;;;;;;;;;;;21049:37;;21114:8;21107:3;:15;21103:147;;21143:9;21155:40;21174:17;21192:1;21174:20;;;;;;;;;;;;;;21155:14;21163:5;21155:3;:7;;:14;;;;:::i;:40::-;21143:52;-1:-1:-1;21221:13:0;:6;21143:52;21221:13;:10;:13;:::i;:::-;21214:20;;;;;;;;21103:147;21278:8;21270:5;:16;21266:190;;;21307:9;21319:45;21343:17;21361:1;21343:20;;;;;;;;;;;;;;21319:19;21332:5;21319:8;:12;;:19;;;;:::i;:45::-;21391:8;;-1:-1:-1;21391:8:0;;21307:57;-1:-1:-1;21427:13:0;:6;21307:57;21427:13;:10;:13;:::i;:::-;21418:22;;21266:190;;-1:-1:-1;21029:3:0;;20981:486;;;-1:-1:-1;21486:6:0;-1:-1:-1;20671:829:0;;;;;;;;:::o;17314:127::-;9266:12;:10;:12::i;:::-;9256:6;;-1:-1:-1;;;;;9256:6:0;;;:22;;;9248:67;;;;;-1:-1:-1;;;9248:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9248:67:0;;;;;;;;;;;;;;;17375:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;17375:16:0;;::::1;-1:-1:-1::0;;;;17375:16:0;;::::1;::::0;;;::::1;::::0;;;;17407:26:::1;::::0;;17426:6;;;::::1;17375:16;17426:6;17407:26;;::::0;;;;17414:10:::1;::::0;17407:26:::1;::::0;;;;;::::1;::::0;;::::1;17314:127:::0;:::o;12752:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12344:33::-;;;;:::o;31924:744::-;31972:21;31996:8;32005:4;31996:14;;;;;;;;;;;;;;;;32045;;;:8;:14;;;;;;32060:10;32045:26;;;;;;;32090:15;;;;31996:14;;;;;;;;-1:-1:-1;32082:52:0;;;;;-1:-1:-1;;;32082:52:0;;;;;;;;;;;;-1:-1:-1;;;32082:52:0;;;;;;;;;;;;;;;32147:14;32164:33;32180:10;32192:4;32164:15;:33::i;:::-;32247:16;;;;:41;;;-1:-1:-1;;;32247:41:0;;32282:4;32247:41;;;;;;32147:50;;-1:-1:-1;;;;;;32247:16:0;;;;:26;;:41;;;;;;;;;;;;;;;:16;:41;;;2:2:-1;;;;27:1;24;17:12;2:2;32247:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32247:41:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;32247:41:0;32238:50;;32234:133;;;32314:16;;;;:41;;;-1:-1:-1;;;32314:41:0;;32349:4;32314:41;;;;;;-1:-1:-1;;;;;32314:16:0;;;;:26;;:41;;;;;;;;;;;;;;;:16;:41;;;2:2:-1;;;;27:1;24;17:12;2:2;32314:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32314:41:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;32314:41:0;;-1:-1:-1;32234:133:0;32377:16;;;;:45;;;-1:-1:-1;;;32377:45:0;;32403:10;32377:45;;;;;;;;;;;;-1:-1:-1;;;;;32377:16:0;;;;:25;;:45;;;;;;;;;;;;;;;:16;;:45;;;2:2:-1;;;;27:1;24;17:12;2:2;32377:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32377:45:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;32451:15:0;;;;:27;;32471:6;32451:27;:19;:27;:::i;:::-;32433:15;;;:45;32512:12;32489:20;;;:35;32552:14;;;;:26;;32571:6;32552:26;:18;:26;:::i;:::-;32535:14;;;:43;32631:16;;;;-1:-1:-1;;;;;32631:16:0;32620:28;;;;:10;:28;;;;;;:40;;32653:6;32620:40;:32;:40;:::i;:::-;32600:16;;;;;-1:-1:-1;;;;;32600:16:0;32589:28;;;;:10;:28;;;;;:71;;;;-1:-1:-1;;;31924:744:0:o;19108:180::-;19170:8;:15;19153:14;19196:85;19224:6;19218:3;:12;19196:85;;;19254:15;19265:3;19254:10;:15::i;:::-;19232:5;;19196:85;;;;19108:180;:::o;18652:373::-;9266:12;:10;:12::i;:::-;9256:6;;-1:-1:-1;;;;;9256:6:0;;;:22;;;9248:67;;;;;-1:-1:-1;;;9248:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9248:67:0;;;;;;;;;;;;;;;18750:11:::1;18746:61;;;18778:17;:15;:17::i;:::-;18817:21;18841:8;18850:4;18841:14;;;;;;;;;::::0;;;::::1;::::0;;;18944:15:::1;18841:14;::::0;;::::1;;18944:15:::0;;::::1;::::0;18922:16:::1;::::0;::::1;::::0;-1:-1:-1;;;;;18922:16:0::1;18905:34:::0;;:16:::1;:34:::0;;;;;;;;18841:14;;-1:-1:-1;18905:72:0::1;::::0;18965:11;;18905:55:::1;::::0;::::1;:38;:55;:::i;:::-;:59:::0;:72:::1;:59;:72;:::i;:::-;18885:16;::::0;::::1;::::0;-1:-1:-1;;;;;18885:16:0::1;18868:34;::::0;;;:16:::1;:34;::::0;;;;:109;18988:15:::1;;:29:::0;;;;-1:-1:-1;;18652:373:0:o;29963:119::-;30023:7;30050:8;30059:4;30050:14;;;;;;;;;;;;;;;;;;:24;;;30043:31;;29963:119;;;:::o;17449:183::-;9266:12;:10;:12::i;:::-;9256:6;;-1:-1:-1;;;;;9256:6:0;;;:22;;;9248:67;;;;;-1:-1:-1;;;9248:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9248:67:0;;;;;;;;;;;;;;;17530:15:::1;:34:::0;;-1:-1:-1;;;;;17530:34:0;;::::1;-1:-1:-1::0;;;;;;17530:34:0;;::::1;::::0;;;::::1;::::0;;;;17580:44:::1;::::0;;17608:15;;;::::1;17580:44:::0;;;17596:10:::1;::::0;17580:44:::1;::::0;;;;;::::1;::::0;;::::1;17449:183:::0;:::o;15112:1348::-;9266:12;:10;:12::i;:::-;9256:6;;-1:-1:-1;;;;;9256:6:0;;;:22;;;9248:67;;;;;-1:-1:-1;;;9248:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9248:67:0;;;;;;;;;;;;;;;15560:42:::1;15576:12;15590:11;15560:15;:42::i;:::-;15662:8;:15:::0;15613:26:::1;::::0;15642:88:::1;::::0;15679:17;15698:18;15718:11;15642:19:::1;:88::i;:::-;15613:117;;15774:7;;;;;;;;;-1:-1:-1::0;;;;;15774:7:0::1;15741:13;:30;15755:8;:15;;;;15741:30;;;;;;;;;;;;:40;;;;;-1:-1:-1::0;;;;;15741:40:0::1;;;;;-1:-1:-1::0;;;;;15741:40:0::1;;;;;;15794:8;15808:643;;;;;;;;15841:8;-1:-1:-1::0;;;;;15808:643:0::1;;;;;15877:12;-1:-1:-1::0;;;;;15808:643:0::1;;;;;16003:11;15808:643;;;;15936:11;15921:12;:26;:55;;15965:11;15921:55;;;15950:12;15921:55;15808:643;;;;16048:1;15808:643;;;;16118:15;15808:643;;;;16167:18;15808:643;;;;16215:14;15808:643;;;;16260:15;15808:643;;;;16310:18;15808:643;;;;16076:11;15808:643;;;;16354:1;15808:643;;;;16385:14;15808:643;;;;16427:12;15808:643;;::::0;15794:658:::1;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;15794:658:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;15794:658:0::1;;;;;-1:-1:-1::0;;;;;15794:658:0::1;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;15794:658:0::1;;;;;-1:-1:-1::0;;;;;15794:658:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9326:1;15112:1348:::0;;;;;;;;;;;;:::o;9686:148::-;9266:12;:10;:12::i;:::-;9256:6;;-1:-1:-1;;;;;9256:6:0;;;:22;;;9248:67;;;;;-1:-1:-1;;;9248:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9248:67:0;;;;;;;;;;;;;;;9793:1:::1;9777:6:::0;;9756:40:::1;::::0;-1:-1:-1;;;;;9777:6:0;;::::1;::::0;9756:40:::1;::::0;9793:1;;9756:40:::1;9824:1;9807:19:::0;;-1:-1:-1;;;;;;9807:19:0::1;::::0;;9686:148::o;12153:31::-;;;;:::o;21508:1094::-;21566:15;21583:14;21599:17;21629:20;;:::i;:::-;21652:8;21661:4;21652:14;;;;;;;;;;;;;;;;21629:37;;;;;;;;21652:14;;;;;;;21629:37;;-1:-1:-1;;;;;21629:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21750:21;;;;;;;;;21700:114;;;;;;;;;;;;;;;;;21629:37;;-1:-1:-1;21700:114:0;;21629:37;;21736:12;;21700:114;;;;21750:21;21700:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21773:23:0;;;;:17;:23;;;;;;;;;21700:114;;;;;;;;;;;;;;;;;;;-1:-1:-1;21773:23:0;-1:-1:-1;21700:114:0;;21773:23;21700:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21798:4;:15;;;21700:13;:114::i;:::-;21679:135;;21825:14;21842:96;21903:16;:34;21920:4;:16;;;-1:-1:-1;;;;;21903:34:0;-1:-1:-1;;;;;21903:34:0;;;;;;;;;;;;;21842:56;21882:4;:15;;;21842:35;21857:4;:19;;;21842:10;:14;;:35;;;;:::i;:96::-;21974:16;;;;;:41;;;-1:-1:-1;;;21974:41:0;;22009:4;21974:41;;;;;;21825:113;;-1:-1:-1;21949:22:0;;-1:-1:-1;;;;;21974:26:0;;;;;;:41;;;;;;;;;;:26;:41;;;2:2:-1;;;;27:1;24;17:12;2:2;21974:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21974:41:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21974:41:0;;22061:16;;;;-1:-1:-1;;;;;22050:28:0;;;;;:10;:28;;;;;;;21974:41;;-1:-1:-1;22032:46:0;;22028:567;;22105:1;22095:11;;22130:1;22121:10;;22158:1;22146:13;;22028:567;;;22211:16;;;;;-1:-1:-1;;;;;22200:28:0;;;;;:10;:28;;;;;;;22232:6;;22181:48;;:14;;:48;:18;:48;:::i;:::-;:57;22177:418;;;22348:16;;;;;-1:-1:-1;;;;;22337:28:0;22265:1;22337:28;;;:10;:28;;;;;;;22265:1;;-1:-1:-1;22265:1:0;;-1:-1:-1;22318:48:0;;:14;;:48;:18;:48;:::i;:::-;22306:60;;22177:418;;;22409:40;22445:3;22409:31;22420:4;:19;;;22409:6;:10;;:31;;;;:::i;:40::-;22399:50;;22473:52;22521:3;22473:43;22497:4;:18;;;22473:19;22484:7;22473:6;:10;;:19;;;;:::i;:52::-;22464:61;-1:-1:-1;22552:31:0;22464:61;22552:19;:6;22563:7;22552:19;:10;:19;:::i;:::-;:23;:31;:23;:31;:::i;:::-;22540:43;;22177:418;21508:1094;;;;;;;;;:::o;29374:129::-;29445:7;;-1:-1:-1;;;;;29445:7:0;29431:10;:21;29423:43;;;;;-1:-1:-1;;;29423:43:0;;;;;;;;;;;;-1:-1:-1;;;29423:43:0;;;;;;;;;;;;;;;29477:7;:18;;-1:-1:-1;;;;;;29477:18:0;-1:-1:-1;;;;;29477:18:0;;;;;;;;;;29374:129::o;9044:79::-;9082:7;9109:6;-1:-1:-1;;;;;9109:6:0;9044:79;:::o;27285:891::-;27388:1;27378:7;:11;27370:71;;;;-1:-1:-1;;;27370:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27454:21;27478:8;27487:4;27478:14;;;;;;;;;;;;;;;;27527;;;:8;:14;;;;;;27542:10;27527:26;;;;;;;27478:14;;;;;;;;-1:-1:-1;27564:16:0;27536:4;27564:10;:16::i;:::-;27591:14;27600:4;27591:8;:14::i;:::-;27616:12;;:74;;-1:-1:-1;;;;;27616:12:0;27654:10;27675:4;27682:7;27616:74;:29;:74;:::i;:::-;27705:11;;27701:86;;27763:12;27738:22;;;:37;27701:86;27811:11;;:24;;27827:7;27811:24;:15;:24;:::i;:::-;27797:38;;;27880:22;;;;27864:49;;27908:4;;27864:39;;27797:38;27864:39;:15;:39;:::i;:49::-;27846:15;;;:67;27948:10;27972:1;27930:30;;;:9;:30;;;;;;-1:-1:-1;;;;;27930:30:0;:44;:71;;;;-1:-1:-1;;;;;;27978:23:0;;;;27930:71;:107;;;;-1:-1:-1;;;;;;28005:32:0;;28026:10;28005:32;;27930:107;27926:191;;;28072:10;28054:30;;;;:9;:30;;;;;:51;;-1:-1:-1;;;;;;28054:51:0;-1:-1:-1;;;;;28054:51:0;;;;;27926:191;28134:34;;;;;;;;28154:4;;28142:10;;28134:34;;;;;;;;;27285:891;;;;;:::o;12617:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22667:664::-;22742:7;22762:21;22786:8;22795:4;22786:14;;;;;;;;;;;;;;;;22835;;;:8;:14;;;;;;-1:-1:-1;;;;;22835:21:0;;;;;;;;;;;22786:14;;;;;;;;22895:22;;;;;22947:12;;:37;;-1:-1:-1;;;22947:37:0;;22978:4;22947:37;;;;;;;;;22786:14;;-1:-1:-1;22835:21:0;;22786:14;22947:12;;;;;:22;;:37;;;;;22786:14;;22947:37;;;;;:12;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;22947:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22947:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22947:37:0;23014:20;;;;22947:37;;-1:-1:-1;22999:12:0;:35;:51;;;;;23049:1;23038:8;:12;22999:51;22995:246;;;23067:17;23117:19;23131:4;23117:13;:19::i;:::-;23099:37;-1:-1:-1;23171:56:0;;-1:-1:-1;23193:33:0;;-1:-1:-1;23217:8:0;23193:19;23099:37;23207:4;23193:19;:13;:19;:::i;:33::-;23171:17;;:56;:21;:56;:::i;:::-;23151:76;;22995:246;;23258:65;23307:4;:15;;;23258:44;23297:4;23258:34;23274:17;23258:4;:11;;;:15;;:34;;;;:::i;17948:296::-;9266:12;:10;:12::i;:::-;9256:6;;-1:-1:-1;;;;;9256:6:0;;;:22;;;9248:67;;;;;-1:-1:-1;;;9248:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9248:67:0;;;;;;;;;;;;;;;18066:16:::1;:36:::0;;;18113:16:::1;:36:::0;;;18165:71:::1;::::0;18132:17;;18085;;18189:10:::1;::::0;18165:71:::1;::::0;-1:-1:-1;;18165:71:0::1;17948:296:::0;;:::o;13221:73::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;23339:179::-;23400:6;;;-1:-1:-1;;;23400:6:0;;;;:14;;;23392:66;;;;-1:-1:-1;;;23392:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23469:16;23480:4;23469:10;:16::i;:::-;23496:14;23505:4;23496:8;:14::i;13170:44::-;;;;;;;;;;;;;:::o;30218:137::-;30286:7;30313:14;;;:8;:14;;;;;;;;-1:-1:-1;;;;;30313:23:0;;;;;;;;;;:34;;;;30218:137::o;30363:151::-;30440:7;30467:14;;;:8;:14;;;;;;;;-1:-1:-1;;;;;30467:23:0;;;;;;;;;;:39;;;;30363:151::o;18252:304::-;9266:12;:10;:12::i;:::-;9256:6;;-1:-1:-1;;;;;9256:6:0;;;:22;;;9248:67;;;;;-1:-1:-1;;;9248:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9248:67:0;;;;;;;;;;;;;;;18370:18:::1;:40:::0;;;18421:18:::1;:40:::0;;;18477:71:::1;::::0;18442:19;;18391;;18497:10:::1;::::0;18477:71:::1;::::0;-1:-1:-1;;18477:71:0::1;18252:304:::0;;:::o;12691:54::-;;;;;;;;;;;;;;;;;;11866:22;;;-1:-1:-1;;;;;11866:22:0;;:::o;17680:260::-;17784:19;;;;:13;:19;;;;;;-1:-1:-1;;;;;17784:19:0;17770:10;:33;17762:55;;;;;-1:-1:-1;;;17762:55:0;;;;;;;;;;;;-1:-1:-1;;;17762:55:0;;;;;;;;;;;;;;;17828:19;;;;:13;:19;;;;;;;;;:34;;-1:-1:-1;;;;;;17828:34:0;-1:-1:-1;;;;;17828:34:0;;;;;;;;;;;17878:54;;17912:19;;17878:54;;;;17828:19;;17894:10;;17878:54;;;;;;;;;17680:260;;:::o;12047:31::-;;;;:::o;30090:120::-;-1:-1:-1;;;;;30178:24:0;30151:7;30178:24;;;:10;:24;;;;;;;30090:120::o;12261:33::-;;;;:::o;9989:244::-;9266:12;:10;:12::i;:::-;9256:6;;-1:-1:-1;;;;;9256:6:0;;;:22;;;9248:67;;;;;-1:-1:-1;;;9248:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9248:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10078:22:0;::::1;10070:73;;;;-1:-1:-1::0;;;10070:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10180:6;::::0;;10159:38:::1;::::0;-1:-1:-1;;;;;10159:38:0;;::::1;::::0;10180:6;::::1;::::0;10159:38:::1;::::0;::::1;10208:6;:17:::0;;-1:-1:-1;;;;;;10208:17:0::1;-1:-1:-1::0;;;;;10208:17:0;;;::::1;::::0;;;::::1;::::0;;9989:244::o;3987:136::-;4045:7;4072:43;4076:1;4079;4072:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4065:50;3987:136;-1:-1:-1;;;3987:136:0:o;4331:471::-;4389:7;4634:6;4630:47;;-1:-1:-1;4664:1:0;4657:8;;4630:47;4701:5;;;4705:1;4701;:5;:1;4725:5;;;;;:10;4717:56;;;;-1:-1:-1;;;4717:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4810:132;4868:7;4895:39;4899:1;4902;4895:39;;;;;;;;;;;;;;;;;:3;:39::i;23526:1287::-;23578:21;23602:8;23611:4;23602:14;;;;;;;;;;;;;;;;23651;;;:8;:14;;;;;;23666:10;23651:26;;;;;;;23694:11;;23602:14;;;;;;;;-1:-1:-1;23694:15:0;23690:1116;;23726:15;23744:70;23798:4;:15;;;23744:49;23788:4;23744:39;23760:4;:22;;;23744:4;:11;;;:15;;:39;;;;:::i;:70::-;23849:16;;;;:41;;;-1:-1:-1;;;23849:41:0;;23884:4;23849:41;;;;;;23726:88;;-1:-1:-1;23829:17:0;;-1:-1:-1;;;;;23849:16:0;;;;:26;;:41;;;;;;;;;;;;;;;:16;:41;;;2:2:-1;;;;27:1;24;17:12;2:2;23849:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23849:41:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23849:41:0;;-1:-1:-1;23911:19:0;;;23907:79;;;23961:9;23951:19;;23907:79;24005:11;;24002:709;;24037:22;24062:40;24098:3;24062:31;24074:18;;24062:7;:11;;:31;;;;:::i;:40::-;24037:65;;24121:22;24146:40;24182:3;24146:31;24158:18;;24146:7;:11;;:31;;;;:::i;:40::-;24121:65;;24205:55;24223:4;24229:14;24245;24205:17;:55::i;:::-;24281:14;24298:47;24330:14;24298:27;:7;24310:14;24298:27;:11;:27;:::i;:47::-;24281:64;;24364:18;24385:43;24424:3;24385:34;24396:4;:22;;;24385:6;:10;;:34;;;;:::i;:43::-;24447:16;;;;24364:64;;-1:-1:-1;;;;;;24447:16:0;:25;24473:10;24485:22;:6;24364:64;24485:22;:10;:22;:::i;:::-;24447:61;;;;;;;;;;;;;-1:-1:-1;;;;;24447:61:0;-1:-1:-1;;;;;24447:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24447:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24447:61:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24527:38:0;;-1:-1:-1;24536:10:0;24548;24560:4;24527:8;:38::i;:::-;24609:12;24584:22;;;:37;24647:48;;;;;;;;;;;;;;24670:4;;24658:10;;24647:48;;;;;;;;;;;24002:709;;;;;24761:22;;;;24745:11;;:49;;24789:4;;24745:39;;;:15;:39;:::i;:49::-;24727:15;;;:67;-1:-1:-1;;23690:1116:0;23526:1287;;;:::o;5716:177::-;5826:58;;;-1:-1:-1;;;;;5826:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;5826:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;5799:86:0;;5819:5;;5799:19;:86::i;30522:735::-;-1:-1:-1;;;;;30616:21:0;;30608:65;;;;;-1:-1:-1;;;30608:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;30684:21;30708:8;30717:4;30708:14;;;;;;;;;;;;;;;;30757;;;:8;:14;;;;;;-1:-1:-1;;;;;30757:23:0;;;;;;;;;;;;30812:16;30708:14;;;;;;;30812:16;;;;:41;;-1:-1:-1;;;30812:41:0;;30847:4;30812:41;;;;;;30708:14;;-1:-1:-1;30757:23:0;;30812:16;;;;;:26;;:41;;;;;30708:14;;30812:41;;;;;;:16;:41;;;2:2:-1;;;;27:1;24;17:12;2:2;30812:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30812:41:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30812:41:0;30801:52;;;30793:96;;;;;-1:-1:-1;;;30793:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;30918:15;;;;:28;;30938:7;30918:28;:19;:28;:::i;:::-;30900:15;;;:46;30974:14;;;;:27;;30993:7;30974:27;:18;:27;:::i;:::-;30957:14;;;:44;31054:16;;;;-1:-1:-1;;;;;31054:16:0;31043:28;;;;:10;:28;;;;;;:41;;31076:7;31043:41;:32;:41;:::i;:::-;31023:16;;;;-1:-1:-1;;;;;31023:16:0;31012:28;;;;:10;:28;;;;;:72;31124:18;;;;31101:20;;;;:41;31097:115;;;31182:18;;;;31159:20;;;:41;31097:115;31227:22;;;;;;;;-1:-1:-1;;;;;31227:22:0;;;;;;;;;;;;;30522:735;;;;;:::o;3798:181::-;3856:7;3888:5;;;3912:6;;;;3904:46;;;;;-1:-1:-1;;;3904:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8126:106;8214:10;8126:106;:::o;16468:185::-;9266:12;:10;:12::i;:::-;9256:6;;-1:-1:-1;;;;;9256:6:0;;;:22;;;9248:67;;;;;-1:-1:-1;;;9248:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9248:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16598:30:0;::::1;;::::0;;;:16:::1;:30;::::0;;;;;:47:::1;::::0;16633:11;16598:47:::1;:34;:47;:::i;:::-;-1:-1:-1::0;;;;;16565:30:0;;::::1;;::::0;;;:16:::1;:30;::::0;;;;:80;;;;-1:-1:-1;16468:185:0:o;16661:645::-;16816:7;9266:12;:10;:12::i;:::-;9256:6;;-1:-1:-1;;;;;9256:6:0;;;:22;;;9248:67;;;;;-1:-1:-1;;;9248:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9248:67:0;;;;;;;;;;;;;;;16836:23:::1;::::0;;;:17:::1;:23;::::0;;;;;;;:43;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;16895:9:0::1;16890:214;16941:1;16914:17;:24;:28;16910:1;:32;16890:214;;;16964:22;16989:46;17023:11:::0;16989:29:::1;:18:::0;17016:1:::1;17012:5:::0;::::1;16989:29;:22;:29;:::i;:46::-;17050:21;::::0;;;:15:::1;:21;::::0;;;;;;27:10:-1;;39:1:::1;23:18:::0;;::::1;45:23:::0;;17050:42:0;;;;;;;::::1;::::0;;;;16944:3;;;::::1;::::0;-1:-1:-1;16890:214:0::1;;;;17114:26;17143:69;17200:11;17143:52;17193:1;17166:17;:24;:28;17143:18;:22;;:52;;;;:::i;:69::-;17223:21;::::0;;;:15:::1;:21;::::0;;;;;;27:10:-1;;39:1:::1;23:18:::0;::::1;45:23:::0;;17223:39:0;;;;;-1:-1:-1;;17223:39:0;::::1;::::0;17114:98;-1:-1:-1;;16661:645:0;;;;;;:::o;6062:205::-;6190:68;;;-1:-1:-1;;;;;6190:68:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6190:68:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;6163:96:0;;6183:5;;6163:19;:96::i;:::-;6062:205;;;;:::o;4131:192::-;4217:7;4253:12;4245:6;;;;4237:29;;;;-1:-1:-1;;;4237:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4237:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4289:5:0;;;4131:192::o;4950:278::-;5036:7;5071:12;5064:5;5056:28;;;;-1:-1:-1;;;5056:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;5056:28:0;;5095:9;5111:1;5107;:5;;;;;;;4950:278;-1:-1:-1;;;;;4950:278:0:o;24821:2418::-;24932:21;24956:8;24965:4;24956:14;;;;;;;;;;;;;;;;25021:10;25003:30;;:9;:30;;;;;;;24956:14;;;;;;-1:-1:-1;;;;;;25003:30:0;;25090:25;;25086:1871;;25151:15;;:38;;;-1:-1:-1;;;25151:38:0;;-1:-1:-1;;;;;25151:38:0;;;;;;;;;25132:16;;25151:15;;;;;:25;;:38;;;;;;;;;;;;;;;:15;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;25151:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25151:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25151:38:0;25220:16;;25151:38;;-1:-1:-1;25208:28:0;;25204:738;;25257:18;25278:52;25326:3;25278:43;25298:4;:22;;;25278:15;:19;;:43;;;;:::i;:52::-;25349:16;;;;25257:73;;-1:-1:-1;;;;;;25349:16:0;:25;25375:11;25389:31;:15;25257:73;25389:31;:19;:31;:::i;:::-;25349:72;;;;;;;;;;;;;-1:-1:-1;;;;;25349:72:0;-1:-1:-1;;;;;25349:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25349:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25349:72:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25440:39:0;;-1:-1:-1;25449:11:0;25462:10;25474:4;25440:8;:39::i;:::-;25595:16;;;;-1:-1:-1;;;;;25595:16:0;;;25569:44;;;;:17;:44;;;;;;;;:66;;;;;;;;;;:87;;25640:15;25569:87;:70;:87;:::i;:::-;25526:16;;;;-1:-1:-1;;;;;25526:16:0;;;25500:44;;;;:17;:44;;;;;;;;:66;;;;;;;;;;;;;:156;;;;25680:78;;;;;;;;;;;;;25724:4;;25712:10;;25500:66;25680:78;;;;;;;;;25204:738;;;;25888:38;:17;25910:15;25888:38;:21;:38;:::i;:::-;25868:58;;25204:738;-1:-1:-1;;;;;25980:22:0;;;25958:19;25980:22;;;:9;:22;;;;;;;;;26037:15;;:38;;-1:-1:-1;;;26037:38:0;;25980:22;;;26037:38;;;;;;;;25980:22;;26037:15;;:25;;:38;;;;;;;;;;:15;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;26037:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26037:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26037:38:0;;-1:-1:-1;;;;;;26094:25:0;;;;;;:58;;;26136:16;;26123:9;:29;;26094:58;26090:767;;;26173:18;26194:52;26242:3;26194:43;26214:4;:22;;;26194:15;:19;;:43;;;;:::i;:52::-;26265:16;;;;26173:73;;-1:-1:-1;;;;;;26265:16:0;:25;26291:11;26304:31;:15;26173:73;26304:31;:19;:31;:::i;:::-;26265:71;;;;;;;;;;;;;-1:-1:-1;;;;;26265:71:0;-1:-1:-1;;;;;26265:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26265:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26265:71:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26355:39:0;;-1:-1:-1;26364:11:0;26377:10;26389:4;26355:8;:39::i;:::-;26510:16;;;;-1:-1:-1;;;;;26510:16:0;;;26484:44;;;;:17;:44;;;;;;;;:66;;;;;;;;;;:87;;26555:15;26484:87;:70;:87;:::i;:::-;26441:16;;;;-1:-1:-1;;;;;26441:16:0;;;26415:44;;;;:17;:44;;;;;;;;:66;;;;;;;;;;;;;:156;;;;26595:78;;;;;;;;;;;;;26639:4;;26627:10;;26415:66;26595:78;;;;;;;;;26090:767;;;;26803:38;:17;26825:15;26803:38;:21;:38;:::i;:::-;26783:58;;26090:767;25086:1871;;;;;;26909:36;:15;26929;26909:36;:19;:36;:::i;:::-;26889:56;;25086:1871;26973:21;;26969:263;;27011:18;27032:54;27082:3;27032:45;27054:4;:22;;;27032:17;:21;;:45;;;;:::i;:54::-;27101:16;;;;;27127:7;;27011:75;;-1:-1:-1;;;;;;27101:16:0;;;;:25;;27127:7;27136:33;:17;27011:75;27136:33;:21;:33;:::i;:::-;27101:69;;;;;;;;;;;;;-1:-1:-1;;;;;27101:69:0;-1:-1:-1;;;;;27101:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27101:69:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27101:69:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;27194:7:0;;27185:35;;-1:-1:-1;;;;;27194:7:0;27203:10;27215:4;27185:8;:35::i;:::-;26969:263;;24821:2418;;;;;;:::o;7264:761::-;7688:23;7714:69;7742:4;7714:69;;;;;;;;;;;;;;;;;7722:5;-1:-1:-1;;;;;7714:27:0;;;:69;;;;;:::i;:::-;7798:17;;7688:95;;-1:-1:-1;7798:21:0;7794:224;;7940:10;7929:30;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;7929:30:0;7921:85;;;;-1:-1:-1;;;7921:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1954:196;2057:12;2089:53;2112:6;2120:4;2126:1;2129:12;2846;2879:18;2890:6;2879:10;:18::i;:::-;2871:60;;;;;-1:-1:-1;;;2871:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3005:12;3019:23;3046:6;-1:-1:-1;;;;;3046:11:0;3066:8;3077:4;3046:36;;;;;;;;;;;;;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;;;3046:36:0;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;3004:78:0;;;;3097:7;3093:595;;;3128:10;-1:-1:-1;3121:17:0;;-1:-1:-1;3121:17:0;3093:595;3242:17;;:21;3238:439;;3505:10;3499:17;3566:15;3553:10;3549:2;3545:19;3538:44;3453:148;3641:20;;-1:-1:-1;;;3641:20:0;;;;;;;;;;;;;;;;;3648:12;;3641:20;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;940:422:0;1307:20;1346:8;;;940:422::o;10342:22329::-;;;;;;;;;;-1:-1:-1;;;;;10342:22329:0;;;;;;-1:-1:-1;;;;;10342:22329:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10342:22329:0;;;-1:-1:-1;10342:22329:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;

Swarm Source

ipfs://21b5595947d6fc32008427bfabf6c0890c3908819673fffff0f79203a4cc92a6
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.