Contract 0xd6C3Cd84B69F5b362B0DeBE507Fb49eE511ce094

 

Contract Overview

Balance:
0.5 BNB

BNB Value:
$242.94 (@ $485.87/BNB)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xa6ba1e04f7fd44841023b04c580cdc2aee4cdbff4010f10af5c1a17c579b6e11Approve119196242021-10-19 22:23:482 hrs 2 mins ago0xb4f206847a1cb447bf9983699d0ef5868062b41c IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.00007439
0x73f3bcfc8d624fd1bea4ae5b867f585866703d1a502b8a1612184f622dfe6e06Approve119156102021-10-19 18:41:445 hrs 44 mins ago0x92426f0497f4a6332c84aeecf4de71dab152433f IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0xa2f3942f2ca56df07481bff2019ac2b1e9370dd26241d136dc0bb340de8cf18aApprove119151182021-10-19 18:15:026 hrs 10 mins ago0x491739e75ddeb93ffed2f9324277de348e824aea IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0xf868d58bc6ee87f58c0f0975da428bb5f4d12c5408a4f6a1669000e6b8730366Approve119149862021-10-19 18:08:186 hrs 17 mins ago0x8a0545ee695bc276ceafbf42c5ff64c84b540b6e IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0x6c1f54dc95d9a300663a3d3efa4d6a8902b81258c3617189acbe8efe62d9fd86Approve119148522021-10-19 18:00:466 hrs 25 mins ago0x7e0e3d57f195c64a597b5602ba2f213252d09d20 IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0x91c22e87175633d2a588bb50c8ba9d4294e1fe4847f54cff3860c7669ae25b8aTransfer119139062021-10-19 17:12:307 hrs 13 mins ago0xa85af4809013cce724f894ab78c9f0d4ffbe7d8c IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.00147631
0x1072c3e74dad5cec5e3aad5efb8defea39cb9c487bac56937b6edc89ffc808aeApprove119137452021-10-19 17:04:177 hrs 21 mins ago0x9f1bad9048c67da4d7af9cb3d789b5ee42cc65ea IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0xacd9d924e78feb34b3dd45270710cf4556f5d2fd457dda2b4e2cad4c95201e3dApprove119135942021-10-19 16:56:197 hrs 29 mins ago0xec70090efa1f4e4185176c93bd5cb2208bf2d266 IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0x7052104ce665928402e5ae67cd7516a6d3e4c317e6faf8d31951a9e2c16e4760Approve119105482021-10-19 14:21:0010 hrs 4 mins ago0xcbeda46d4c1bcc779dbcbefb3235663992002540 IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0x78d8e0daa6670dede209b6ba81e850b0a837e7cabae94886142dbe6b65afab46Approve118798852021-10-18 12:37:231 day 11 hrs ago0xb22d7972617eb22d7ae31e8b5c01e6556001dcf8 IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0x407bcb45ac04593b27dd81318201aa779faa4ebd97f8862c2bb265d9c7db0f89Approve118783712021-10-18 11:21:131 day 13 hrs ago0xf8c015d57d62735face0b096ed3f54510f05a3c2 IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0x5d4a46eeece73541803b0f86e2671f073120266c585cb8252778a20e0d81a648Approve118780912021-10-18 11:07:001 day 13 hrs ago0x692145e5703d057b707cf083b3f2b192ad04fafb IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.00007439
0x65c654b15af7eaee94ad6d48bd1e9a788fc5314396ad8481384ea02f6c4e284cApprove118760602021-10-18 9:25:261 day 15 hrs ago0x10072cf9e906599636e0223bb5c1e36d51865573 IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0xf6e981d1c99f0bbc7ae6bedfe5d803ee7ff142c1c84b56e4071cd44402fc18fdApprove118754412021-10-18 8:54:291 day 15 hrs ago0xc5e7fa01250f967086e7f05227f7d1fee8f2bf54 IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0x84cb4069dcbdc3ce335b82e0409c40405cf4dc138bc3ce15825acbf3bc10c91aApprove118752352021-10-18 8:44:111 day 15 hrs ago0xbc15dcbf3fd8da9385a60f383638c8958414d7a9 IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0x5b8a331d197425414db1fa4b96fd9eef099c2fea71a1b3a619b0384b1804f3d7Approve118654192021-10-18 0:32:241 day 23 hrs ago0x93af9a131b39aabf09ef5822be0290d714d58ecb IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0xa3adf96cf31b7d577f1db9e532573c8adc0c6ef9002bc20470c03b9d34c4c098Approve118587712021-10-17 18:57:502 days 5 hrs ago0x4bb12cc382e36b4b6faf7bdca7708969aed258ef IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0xbe8e6396f7bae2cafee5b2534c17bdfa4a8ec11bb305a6b7316d480be2274fb4Approve118550592021-10-17 15:50:462 days 8 hrs ago0xb1b9b4bbe8a92d535f5df2368e7fd2ecfb3a1950 IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000128495
0x19d3875f24b792b0735edb07c2204178eda0f4bfc23970dea45787495bde9e54Approve118550532021-10-17 15:50:282 days 8 hrs ago0xb1b9b4bbe8a92d535f5df2368e7fd2ecfb3a1950 IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000224495
0xf899f7b00a216438e2c44cd009563d2a9d529be238e5a45bab6f835b8714eed2Approve118543842021-10-17 15:16:062 days 9 hrs ago0x86d6bea347d49b42572d0d356d6ee4502c5938de IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000315973
0x1c0a5fd80ebf4798dd22d8936974084aa8d376418f41fa1e43e3567dfb9154adTransfer118535072021-10-17 14:32:082 days 9 hrs ago0xabb338d6ca3c142ab98c3b77da5702f554deb8c8 IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.00145501
0xc08a4f8b6e66b4072fc0504040f4a418b8cccd2e3874e59f3f981ba3cef52b98Approve118503562021-10-17 11:51:532 days 12 hrs ago0x38d516d208ea87d974639e0d01f912d0721fcf65 IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0x3bf74747edcc00b814897b0b35c53d9d28050875c23a29e58aa1985dceebd404Approve118473442021-10-17 9:20:302 days 15 hrs ago0x6686cac1f25b43ed5f0fb425b214c5e9d5dbdef3 IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0xa090a1f658552bd848657c6e0c162c4192666b3a598efb5423c10b5b405c5ea9Approve118455572021-10-17 7:51:092 days 16 hrs ago0x29968d90914c6a775dd33ecefb73fe79355d5580 IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
0xe3a1f2290a2490e8ca9d809085a0064967c55951cf8a0dd3096d1b054594143eApprove118435822021-10-17 6:12:242 days 18 hrs ago0xefb330e0d8e848cedf03bae75a21566fcf0af362 IN  0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940 BNB0.000225695
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xc47464c7f196a7d0cad32c3ac97b88b2c694c97e438f69b756920ead8f8ea129118638482021-10-17 23:13:262 days 1 hr ago 0xd6c3cd84b69f5b362b0debe507fb49ee511ce094 PancakeSwap: Router v20.646917293639545093 BNB
0xc47464c7f196a7d0cad32c3ac97b88b2c694c97e438f69b756920ead8f8ea129118638482021-10-17 23:13:262 days 1 hr ago PancakeSwap: Router v2 0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940.646917293639545093 BNB
0xdc5cd86db2ced2a2c122a41d2206663b12c3bc118b59e99ca1c95b3325dcf6f0118332822021-10-16 21:37:083 days 2 hrs ago 0xd6c3cd84b69f5b362b0debe507fb49ee511ce094 PancakeSwap: Router v20.741963363656434021 BNB
0xdc5cd86db2ced2a2c122a41d2206663b12c3bc118b59e99ca1c95b3325dcf6f0118332822021-10-16 21:37:083 days 2 hrs ago PancakeSwap: Router v2 0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940.741963363656434021 BNB
0x9ad7283c3a5e445134609763adac030d94074fb001ebd3fa44b188563c1d58bd118214132021-10-16 11:37:563 days 12 hrs ago 0xd6c3cd84b69f5b362b0debe507fb49ee511ce094 PancakeSwap: Router v20.961683396944279664 BNB
0x9ad7283c3a5e445134609763adac030d94074fb001ebd3fa44b188563c1d58bd118214132021-10-16 11:37:563 days 12 hrs ago PancakeSwap: Router v2 0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940.961683396944279664 BNB
0x638fe876af3de697f724ffc8e6b28be15b781bcc1b07fc7dc0eb099f8d472092117745172021-10-14 20:26:085 days 3 hrs ago 0xd6c3cd84b69f5b362b0debe507fb49ee511ce094 PancakeSwap: Router v20.474803472225155608 BNB
0x638fe876af3de697f724ffc8e6b28be15b781bcc1b07fc7dc0eb099f8d472092117745172021-10-14 20:26:085 days 3 hrs ago PancakeSwap: Router v2 0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940.474803472225155608 BNB
0xc1b5583b8b07a7e76f8bf8e0b94eb298b42fcbf498536661072fe2b89e358d7492584342021-07-18 7:29:0693 days 16 hrs ago 0xd6c3cd84b69f5b362b0debe507fb49ee511ce094 PancakeSwap: Router v20.306202178042029096 BNB
0xc1b5583b8b07a7e76f8bf8e0b94eb298b42fcbf498536661072fe2b89e358d7492584342021-07-18 7:29:0693 days 16 hrs ago PancakeSwap: Router v2 0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940.306202178042029096 BNB
0xc539d9d0b1e4021fb8fd6e163ab9ab394df145b7d010ac159c7d7dbf9fb4bc3982919892021-06-14 14:18:13127 days 10 hrs ago 0xd6c3cd84b69f5b362b0debe507fb49ee511ce094 PancakeSwap: Router v20.613923065958135939 BNB
0xc539d9d0b1e4021fb8fd6e163ab9ab394df145b7d010ac159c7d7dbf9fb4bc3982919892021-06-14 14:18:13127 days 10 hrs ago PancakeSwap: Router v2 0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940.613923065958135939 BNB
0xf6200159f2f8731f9b0be691f0c3ae57e3942fadc166b45069414290fdb2cbcc82919702021-06-14 14:17:16127 days 10 hrs ago 0xd6c3cd84b69f5b362b0debe507fb49ee511ce094 PancakeSwap: Router v20.613923065958135939 BNB
0xf6200159f2f8731f9b0be691f0c3ae57e3942fadc166b45069414290fdb2cbcc82919702021-06-14 14:17:16127 days 10 hrs ago PancakeSwap: Router v2 0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940.613923065958135939 BNB
0x551f583fb78b58f73def0d2429d43e012bb9fc59b3ae178020ff1956dc6bfc8881489352021-06-09 14:17:28132 days 10 hrs ago 0xd6c3cd84b69f5b362b0debe507fb49ee511ce094 PancakeSwap: Router v20.515370037901206076 BNB
0x551f583fb78b58f73def0d2429d43e012bb9fc59b3ae178020ff1956dc6bfc8881489352021-06-09 14:17:28132 days 10 hrs ago PancakeSwap: Router v2 0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940.515370037901206076 BNB
0xac7cd7c15a588a99a23d58e67b8e47508f0487c32895fef72941e6bb3314714478321332021-05-29 13:31:25143 days 10 hrs ago 0xd6c3cd84b69f5b362b0debe507fb49ee511ce094 PancakeSwap: Router v21.06170611992180462 BNB
0xac7cd7c15a588a99a23d58e67b8e47508f0487c32895fef72941e6bb3314714478321332021-05-29 13:31:25143 days 10 hrs ago PancakeSwap: Router v2 0xd6c3cd84b69f5b362b0debe507fb49ee511ce0941.06170611992180462 BNB
0x8e7fb4c488df9c879bfeb90a8cfda5a0b60ae25ac83bcca3fbe4ad1aeec66b2e76958182021-05-24 19:17:19148 days 5 hrs ago 0xd6c3cd84b69f5b362b0debe507fb49ee511ce094 PancakeSwap: Router v21.294783288398249131 BNB
0x8e7fb4c488df9c879bfeb90a8cfda5a0b60ae25ac83bcca3fbe4ad1aeec66b2e76958182021-05-24 19:17:19148 days 5 hrs ago PancakeSwap: Router v2 0xd6c3cd84b69f5b362b0debe507fb49ee511ce0941.294783288398249131 BNB
0xe8715f00b4b90226b9d268788cf580bce1b7cefba3b41f5b05e314576ce7bf4c76596162021-05-23 12:59:15149 days 11 hrs ago 0xd6c3cd84b69f5b362b0debe507fb49ee511ce094 PancakeSwap: Router v20.959684227323693414 BNB
0xe8715f00b4b90226b9d268788cf580bce1b7cefba3b41f5b05e314576ce7bf4c76596162021-05-23 12:59:15149 days 11 hrs ago PancakeSwap: Router v2 0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940.959684227323693414 BNB
0x222b1f7e6071dce063f8eec924940ac276f4460203cb4cf482d5db672f889df075489642021-05-19 16:22:50153 days 8 hrs ago 0xd6c3cd84b69f5b362b0debe507fb49ee511ce094 PancakeSwap: Router v20.619124713875239577 BNB
0x222b1f7e6071dce063f8eec924940ac276f4460203cb4cf482d5db672f889df075489642021-05-19 16:22:50153 days 8 hrs ago PancakeSwap: Router v2 0xd6c3cd84b69f5b362b0debe507fb49ee511ce0940.619124713875239577 BNB
0xef9982722a06e1228939ffe1dcb67c39128ab64fcfe5bb80487ebec98dde11f775045562021-05-18 2:36:27154 days 21 hrs ago 0xd6c3cd84b69f5b362b0debe507fb49ee511ce094 PancakeSwap: Router v20.550170556250716346 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ConquerUranus

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 10 : BEP20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/utils/Context.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/Address.sol";
import "@openzeppelin/contracts/utils/math/SafeMath.sol";
import "./interfaces/IBEP20.sol";


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

    mapping(address => uint256) internal _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_, uint8 decimals_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

    /**
     * @dev Returns the bep token owner.
     */
    function getOwner() external view returns (address) {
        return owner();
    }

    /**
     * @dev Returns the token name.
     */
    function name() public view virtual returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the token symbol.
     */
    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the token decimals.
     */
    function decimals() public override view returns (uint8) {
        return _decimals;
    }

    /**
     * @dev See {BEP20-totalSupply}.
     */
    function totalSupply() public virtual override view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {BEP20-balanceOf}.
     */
    function balanceOf(address account) public virtual override view returns (uint256) {
        return _balances[account];
    }

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

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

    /**
     * @dev See {BEP20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

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

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

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

        _balances[sender] = _balances[sender].sub(amount, 'BEP20: transfer amount exceeds balance');
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), 'BEP20: burn from the zero address');
        _balances[account] = _balances[account].sub(amount, 'BEP20: burn amount exceeds balance');
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

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

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

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

File 2 of 10 : ConquerUranus.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./interfaces/IPancakeRouter02.sol";
import "./interfaces/IPancakeFactory.sol";
import "./BEP20.sol";

/// @author The Development Team
/// @title Token
contract ConquerUranus is BEP20("ConquerUranus", "ANVS", 18) {

    using SafeMath for uint256;
    using Address for address;

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

    mapping(address => bool) private _isExcludedFromReward;
    address[] private _excludedFromReward;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 2543164 * 10**6 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    /// Control the amount on transfers to avoid dump price
    uint256 public _maxTxAmount = (_tTotal * 5).div(1000);
    uint256 private numTokensSellToAddToLiquidity = (_tTotal * 5).div(1000);

    /// Fee state variables section
    uint256 public _holderFee;
    uint256 public _liquidityFee;
    uint256 public _vaultFee;

    uint256 public totalSendedToTheVoid;
    uint256 public totalLiquidity;

    IPancakeRouter02 public immutable pancakeRouter;
    address public immutable pancakePair;

    address public blackHoleVaultAddress;
    address public spaceWasteVaultAddress;
    address public devAddress;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled;

    /// Event section
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event Burn(address indexed burner, uint256 amount);

    /// Modifiers section

    /// Modifier that uses a mutex pattern for swaps
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    /// Modifier that restricts the users who can send to the void
    modifier sendersToTheVoid {
        require(
            _msgSender() == owner() ||
            _msgSender() == devAddress ||
            _msgSender() == blackHoleVaultAddress
        );
        _;
    }

    /// Modifier that restricts a function only for vault address
    modifier onlyVault {
        require(_msgSender() == blackHoleVaultAddress);
        _;
    }

    constructor (
        address blackHoleVaultAddress_,
        address devAddress_,
        address routerAddress_,
        address spaceWasteVaultAddress_
    )
    {

        // Declaration of addresses
        blackHoleVaultAddress = blackHoleVaultAddress_;
        devAddress = devAddress_;
        spaceWasteVaultAddress = spaceWasteVaultAddress_;

        swapAndLiquifyEnabled = true;

        _rOwned[_msgSender()] = _rTotal;

        IPancakeRouter02 _pancakeRouter = IPancakeRouter02(routerAddress_);
        // Creation of pancake pair for the token
        pancakePair = IPancakeFactory(_pancakeRouter.factory())
        .createPair(address(this), _pancakeRouter.WETH());

        // set the rest of the contract variables
        pancakeRouter = _pancakeRouter;

        // Excluding main accounts from rewards
        excludeFromReward(address(this));
        excludeFromReward(owner());
        excludeFromReward(blackHoleVaultAddress);
        excludeFromReward(devAddress);
        excludeFromReward(spaceWasteVaultAddress);

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    //to recieve BNB from pancakeRouter when swaping
    receive() external payable {}

    /// This function include and account into reward system. Only an Owner can include.
    /// @param account The address of the account to include
    function includeInReward(address account) external onlyOwner {
        require(_isExcludedFromReward[account], "Account is already excluded");
        for (uint256 i = 0; i < _excludedFromReward.length; i++) {
            if (_excludedFromReward[i] == account) {
                _excludedFromReward[i] = _excludedFromReward[_excludedFromReward.length - 1];
                _tOwned[account] = 0;
                _isExcludedFromReward[account] = false;
                _excludedFromReward.pop();
                break;
            }
        }
    }

    /// This function permits change the holder fee percent
    /// Only owner can change the fee
    /// @param holderFee is the new fee for holders
    function setHoldersFee(uint256 holderFee, uint256 liquidityFee, uint256 vaultFee) external onlyOwner {
        _holderFee = holderFee;
        _liquidityFee = liquidityFee;
        _vaultFee = vaultFee;
    }

    /// This function sets the max percent for transfers
    /// @param maxTxPercent is the new percentaje
    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner {
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(
            10**2
        );
    }

    /// This function enable or disable the swap and liquify function
    /// @param _enabled is the boolean value to set
    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    /// This is the public function to send the half of tokens in vault to the black hole
    /// and the other half to the dev wallet
    /// @return a boolean value
    function sendToTheVoidDevAndSpaceWasteWallet() public onlyVault returns (bool) {
        // Take tokens from vault
        uint256 amountToBlackHole = _tOwned[blackHoleVaultAddress].div(2);
        uint256 amountToDistribute = _tOwned[blackHoleVaultAddress].sub(amountToBlackHole);
        uint256 amountToDev = amountToDistribute.div(2);
        uint256 amountToSpaceWasteVault = amountToDistribute.sub(amountToDev);
        _tOwned[blackHoleVaultAddress] = 0;

        // We distribute to black hole and developers wallet
        // Sending to black hole
        _sendToTheVoid(amountToBlackHole);

        // Sending to devs wallet
        _tOwned[devAddress] = _tOwned[devAddress].add(amountToDev);
        _tOwned[spaceWasteVaultAddress] = _tOwned[spaceWasteVaultAddress].add(amountToSpaceWasteVault);
        emit Transfer(blackHoleVaultAddress, devAddress, amountToDev);
        emit Transfer(blackHoleVaultAddress, spaceWasteVaultAddress, amountToSpaceWasteVault);
        return true;
    }

    /// This is the public function to send tokens to the black hole
    /// @dev Only can burn Owner, Vault and Dev
    /// @param amount the quantity to burn
    /// @return a boolean value
    function sendToTheVoid(uint256 amount) public sendersToTheVoid returns (bool) {
        _sendToTheVoid(amount);
        return true;
    }

    /// This function deliver an amount to the totalFees
    /// @param tAmount is the quantity of token to deliver
    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcludedFromReward[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    /// This function exclude and account from reward, in case of the account have some reflection
    /// pass it to tokens. Only an Owner can include.
    /// @param account The address of the account to exclude
    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcludedFromReward[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcludedFromReward[account] = true;
        _excludedFromReward.push(account);
    }

    /// This function calculates the conversion from normal token to reflection
    /// @param tAmount the quantity of token to convert
    /// @param deductTransferFee boolean that indicates if the conversion deduct fees in calculus or not
    /// @return the value in reflection
    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    /// This function calculates the conversion from reflection to normal token
    /// @param rAmount the quantity of reflection to convert in token
    /// @return the value in token
    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    /// This function returns the total supply of tokens
    function totalSupply() public view override  returns (uint256) {
        return _tTotal;
    }

    /// This functions shows the balance of an account
    /// @param account the account to get the balance
    /// @return an unsigned intger with the balance
    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcludedFromReward[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    /// This function returns a boolean value depending on whether the account is
    /// excluded from rewards.
    /// @param account is the account to check if is excluded from reward
    /// @return boolean value with the status
    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcludedFromReward[account];
    }

    /// This function gets a list of excluded accounts from reward.
    /// @return an array with the list of excluded accounts
    function getExcludedFromReward() public view returns (address[] memory) {
        return _excludedFromReward;
    }

    /// This functions return the total fees
    /// @return an unsigned integer with the total fees
    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    /// This function burns an amount defined by param
    /// @param amount the amount that will be burn
    function _sendToTheVoid(uint256 amount) internal {
        require(amount <= _tTotal, "Amount must be less than total");
        // Substract token to burn from sender account
        if(_tOwned[_msgSender()] > 0 && amount <= _tOwned[_msgSender()]){
            _tOwned[_msgSender()] = _tOwned[_msgSender()].sub(amount, "Amount to burn exceeds token owned");
        }
        // Only if account have reflection, but its not probably because dev, vault and owner are excluded from
        // reward
        uint256 ratedQuantity = amount.mul(_getRate());
        if(_rOwned[_msgSender()] > 0 && ratedQuantity <= _rOwned[_msgSender()]){
            _rOwned[_msgSender()] = _rOwned[_msgSender()].sub(ratedQuantity, "Amount to burn exceeds reflected token owned");
        }
        _tOwned[address(1)] = _tOwned[address(1)].add(amount);
        _rOwned[address(1)] = _rOwned[address(1)].add(amount.mul(_getRate()));
        totalSendedToTheVoid = totalSendedToTheVoid.add((amount));
        emit Transfer(_msgSender(), address(1), amount);
    }

    ///This function is responsible for transfering tokens, is modified from BEP20
    /// and different functionalities have been added.
    /// @param from sender of the transfer
    /// @param to recipient of the transfer
    /// @param amount quantity of tokens to transfer
    function _transfer(address from, address to, uint256 amount) internal virtual override{
        require(from != address(0), "BEP20: transfer from the zero address");
        require(to != address(0), "BEP20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(from != owner() && to != owner())
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

        uint256 contractTokenBalance = balanceOf(address(this));

        if(contractTokenBalance >= _maxTxAmount) {
            contractTokenBalance = _maxTxAmount;
        }

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        /// Cases of condition:
        /// 1. The token balance of this contract is over the min number of
        /// tokens that we need to initiate a swap + liquidity lock (overMinTokenBalance checks it)
        /// 2. Avoid that  don't get caught in a circular liquidity event using a mutex pattern with the modifier lockTheSwap.
        /// variable inSwapAndLiquify controls it
        /// 3. Avoid swap & liquify if sender is uniswap pair with from != pancakePair.
        /// 4. swapAndLiquifyEnable, must be enabled :)
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != pancakePair &&
            swapAndLiquifyEnabled
        ) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
            //add liquidity
            swapAndLiquify(contractTokenBalance);
        }

        // Transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from,to,amount);
    }

    /// This function adds fee value to the total fee counter
    /// @param rFee is the value to substract from rTotal
    /// @param tFee is the value to add to tFeeTotal
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    /// This function sends token from an excluded from reward sender to excluded from reward recipient
    /// @param sender is the account that sends tokens
    /// @param recipient is the account that will receive tokens
    /// @param tAmount is the quantity to send
    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tVault) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _takeVault(tVault);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    /// This function is in charge of dividing the balance sheets in two
    /// and making repurchases and liquidity additions.
    /// @param contractTokenBalance only tokenBalance
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        // This part of code splits the contract balance into halves
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // Swap tokens of the contract for ETH
        swapTokensForETH(half); //

        // The balance of ETH to swap
        uint256 newBalance = address(this).balance.sub(initialBalance);

        // Add liquidity to pancake
        addLiquidity(otherHalf, newBalance);

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    /// This function is in charge of taking a part of the tokens to buy BNB that will later
    /// be added to the pair together with another amount of tokens.
    /// @param tokenAmount is the quantity of tokens to change for BNB
    function swapTokensForETH(uint256 tokenAmount) private {
        // Generate the Pancake swap pair path of Token -> BNB
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = pancakeRouter.WETH();

        /// Gives the approve to router for taking tokens
        _approve(address(this), address(pancakeRouter), tokenAmount);

        /// Make the swap to get BNB
        pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of BNB
            path,
            address(this),
            block.timestamp
        );
    }

    /// This functions adds liquidity to pair
    /// @param tokenAmount quantity of tokens to add
    /// @param ethAmount quantity of BNB to add
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(pancakeRouter), tokenAmount);

        // add the liquidity
        pancakeRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
        totalLiquidity = totalLiquidity.add(ethAmount);
    }

    /// This method is responsible for taking all fee, if takeFee is true
    /// @param sender is the address of account which will send the tokens
    /// @param recipient is the address of the account which will receive the tokens
    /// @param amount is the quantity to transfer
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        if (_isExcludedFromReward[sender] && !_isExcludedFromReward[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcludedFromReward[sender] && _isExcludedFromReward[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcludedFromReward[sender] && !_isExcludedFromReward[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcludedFromReward[sender] && _isExcludedFromReward[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
    }

    /// This function sends token from sender to recipient
    /// @param sender is the account that sends tokens
    /// @param recipient is the account that will receive tokens
    /// @param tAmount is the quantity to send
    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tVault) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _takeVault(tVault);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    /// This function sends token from sender to excluded from reward recipient
    /// @param sender is the account that sends tokens
    /// @param recipient is the account that will receive tokens
    /// @param tAmount is the quantity to send
    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tVault) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _takeVault(tVault);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    /// This function sends token from excluded from reward sender to recipient
    /// @param sender is the account that sends tokens
    /// @param recipient is the account that will receive tokens
    /// @param tAmount is the quantity to send
    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tVault) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _takeVault(tVault);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    /// This function add liquidity into the contract for rOwned and tOwned (if account is excluded from reward)
    /// of the contract account
    /// @param tLiquidity quantity of liquidity to add
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcludedFromReward[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }

    /// This function add to vault the fee correspondant for it
    /// @param tVault quantity of tokens to add in vault
    function _takeVault(uint256 tVault) private {
        uint256 currentRate =  _getRate();
        uint256 rVault = tVault.mul(currentRate);
        _rOwned[blackHoleVaultAddress] = _rOwned[blackHoleVaultAddress].add(rVault);
        if(_isExcludedFromReward[address(this)])
            _tOwned[blackHoleVaultAddress] = _tOwned[blackHoleVaultAddress].add(tVault);
        emit Transfer(_msgSender(), blackHoleVaultAddress, tVault);
    }

    /// This function calls _getTvalues and _getRValues to obtain all the values
    /// @return the same values returned in _getTValues and _getRValues
    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tVault) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, tVault, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity, tVault);
    }

    /// This function is used to calculate different tValues with tAmount
    /// @param tAmount the value which is used to calculate
    /// @return tFee Value calculated with tax fee percentaje over tAmount
    /// @return tLiquidity Value calculated with liquidity fee percentaje over tAmount
    /// @return tLiquidity Value calculated with vault fee percentaje over tAmount
    /// @return tTransferAmount value extracted from the subtraction of tFee, tLiquidity and tVault over tAmount
    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
        (uint256 tFee, uint256 tLiquidity, uint256 tVault) = calculateFees(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub(tVault);
        return (tTransferAmount, tFee, tLiquidity, tVault);
    }

    /// This function obtains the rate calculated with the current supply
    /// @return rate obtained with rSupply / tSupply
    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    /// This function calculates rSupply and tSupply considering whether the account
    /// is excluded from the reward or not
    /// @return rSupply and tSupply || _rTotal and _tTotal depending on the conditions
    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 tSupply = _tTotal;  // add totalburned to avoid a decrease on reflection
        uint256 rSupply = _rTotal;
        for (uint256 i = 0; i < _excludedFromReward.length; i++) {
            if (_rOwned[_excludedFromReward[i]] > rSupply || _tOwned[_excludedFromReward[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excludedFromReward[i]]);
            tSupply = tSupply.sub(_tOwned[_excludedFromReward[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    /// This functions calculates fees for an amount
    /// @param _amount the quantity to calculate its fee
    /// @return fees for holders, liquidity and vault
    function calculateFees(uint256 _amount) private view returns (uint256, uint256, uint256){
        uint256 tFee = _amount.mul(_holderFee).div(10**2);
        uint256 tLiquidity = _amount.mul(_liquidityFee).div(10**2);
        uint256 tVault = _amount.mul(_vaultFee).div(10**2);
        return (tFee, tLiquidity, tVault);
    }

    /// This function is used to calculate different tValues with tValues and the current rate
    /// @param tAmount the value which is used to calculate
    /// @param tFee is the tax fee of tAmount
    /// @param tLiquidity is the liquidity fee of tAmount
    /// @param currentRate rate obtained with the division rSupply / tSupply
    /// @return rAmount the result obtained by multiplying tAmount by currentRate
    /// @return rTransferAmount value extracted from the subtraction of rFee and rLiquidity over rAmount
    /// @return tTransferAmount value extracted from the subtraction of tFee and tLiquidity over tAmount
    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tVault, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub(tVault.mul(currentRate));
        return (rAmount, rTransferAmount, rFee);
    }
}

File 3 of 10 : IBEP20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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

    /**
     * @dev Returns the token decimals.
     */
    function decimals() external view returns (uint8);

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

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

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

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

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

File 4 of 10 : IPancakeFactory.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IPancakeFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

File 5 of 10 : IPancakeRouter01.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IPancakeRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

File 6 of 10 : IPancakeRouter02.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./IPancakeRouter01.sol";

interface IPancakeRouter02 is IPancakeRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

File 7 of 10 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

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

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        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 8 of 10 : Address.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on 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;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    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");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    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");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    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");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        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 9 of 10 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

File 10 of 10 : SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"blackHoleVaultAddress_","type":"address"},{"internalType":"address","name":"devAddress_","type":"address"},{"internalType":"address","name":"routerAddress_","type":"address"},{"internalType":"address","name":"spaceWasteVaultAddress_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_holderFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_vaultFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blackHoleVaultAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getExcludedFromReward","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakePair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakeRouter","outputs":[{"internalType":"contract IPancakeRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendToTheVoid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendToTheVoidDevAndSpaceWasteWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"holderFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"vaultFee","type":"uint256"}],"name":"setHoldersFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"spaceWasteVaultAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSendedToTheVoid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526c201967f49158a5253fbc000000600c55600c54600019620000279190620012c6565b600019620000369190620011c9565b600d55620000656103e86005600c5462000051919062001168565b620006c060201b620024f31790919060201c565b600f55620000946103e86005600c5462000080919062001168565b620006c060201b620024f31790919060201c565b601055348015620000a457600080fd5b5060405162006ea438038062006ea48339818101604052810190620000ca919062000ef5565b6040518060400160405280600d81526020017f436f6e717565725572616e7573000000000000000000000000000000000000008152506040518060400160405280600481526020017f414e565300000000000000000000000000000000000000000000000000000000815250601260006200014a620006d860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35082600490805190602001906200020092919062000e02565b5081600590805190602001906200021992919062000e02565b5080600660006101000a81548160ff021916908360ff16021790555050505083601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601860156101000a81548160ff021916908315150217905550600d54600760006200032d620006d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b757600080fd5b505afa158015620003cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f2919062000ec9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045557600080fd5b505afa1580156200046a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000490919062000ec9565b6040518363ffffffff1660e01b8152600401620004af9291906200106f565b602060405180830381600087803b158015620004ca57600080fd5b505af1158015620004df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000505919062000ec9565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506200058330620006e060201b60201c565b620005a3620005976200099a60201b60201c565b620006e060201b60201c565b620005d6601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620006e060201b60201c565b62000609601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620006e060201b60201c565b6200063c601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620006e060201b60201c565b6200064c620006d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c54604051620006ad919062001102565b60405180910390a35050505050620013a5565b60008183620006d0919062001130565b905092915050565b600033905090565b620006f0620006d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007166200099a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200076f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200076690620010e0565b60405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615620007ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007f690620010be565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115620008dc5762000898600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620009c360201b60201c565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600d5482111562000a0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a04906200109c565b60405180910390fd5b600062000a1f62000a4360201b60201c565b905062000a3b8184620006c060201b620024f31790919060201c565b915050919050565b600080600062000a5862000a7d60201b60201c565b9150915062000a768183620006c060201b620024f31790919060201c565b9250505090565b6000806000600c5490506000600d54905060005b600b8054905081101562000da4578160076000600b848154811062000adf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118062000bf557508260086000600b848154811062000b8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1562000c0e57600d54600c549450945050505062000de6565b62000ccc60076000600b848154811062000c51577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548362000dea60201b620025091790919060201c565b915062000d8c60086000600b848154811062000d11577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548462000dea60201b620025091790919060201c565b9250808062000d9b9062001278565b91505062000a91565b5062000dc3600c54600d54620006c060201b620024f31790919060201c565b81101562000ddd57600d54600c5493509350505062000de6565b80829350935050505b9091565b6000818362000dfa9190620011c9565b905092915050565b82805462000e109062001242565b90600052602060002090601f01602090048101928262000e34576000855562000e80565b82601f1062000e4f57805160ff191683800117855562000e80565b8280016001018555821562000e80579182015b8281111562000e7f57825182559160200191906001019062000e62565b5b50905062000e8f919062000e93565b5090565b5b8082111562000eae57600081600090555060010162000e94565b5090565b60008151905062000ec3816200138b565b92915050565b60006020828403121562000edc57600080fd5b600062000eec8482850162000eb2565b91505092915050565b6000806000806080858703121562000f0c57600080fd5b600062000f1c8782880162000eb2565b945050602062000f2f8782880162000eb2565b935050604062000f428782880162000eb2565b925050606062000f558782880162000eb2565b91505092959194509250565b62000f6c8162001204565b82525050565b600062000f81602a836200111f565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b600062000fe9601b836200111f565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b60006200102b6020836200111f565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b620010698162001238565b82525050565b600060408201905062001086600083018562000f61565b62001095602083018462000f61565b9392505050565b60006020820190508181036000830152620010b78162000f72565b9050919050565b60006020820190508181036000830152620010d98162000fda565b9050919050565b60006020820190508181036000830152620010fb816200101c565b9050919050565b60006020820190506200111960008301846200105e565b92915050565b600082825260208201905092915050565b60006200113d8262001238565b91506200114a8362001238565b9250826200115d576200115c6200132d565b5b828204905092915050565b6000620011758262001238565b9150620011828362001238565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620011be57620011bd620012fe565b5b828202905092915050565b6000620011d68262001238565b9150620011e38362001238565b925082821015620011f957620011f8620012fe565b5b828203905092915050565b6000620012118262001218565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200125b57607f821691505b602082108114156200127257620012716200135c565b5b50919050565b6000620012858262001238565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620012bb57620012ba620012fe565b5b600182019050919050565b6000620012d38262001238565b9150620012e08362001238565b925082620012f357620012f26200132d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620013968162001204565b8114620013a257600080fd5b50565b60805160601c60a05160601c615aa9620013fb60003960008181611bd8015261291f015260008181611bfc015281816138ce015281816139e401528181613a0b01528181613aa70152613ace0152615aa96000f3fe60806040526004361061023f5760003560e01c80636bc87c3a1161012e578063a457c2d7116100ab578063d443694d1161006f578063d443694d146108c2578063d543dbeb146108ed578063dd62ed3e14610916578063f111e6e914610953578063f2fde38b1461097e57610246565b8063a457c2d7146107c9578063a9059cbb14610806578063b8c9d25c14610843578063c21ebd071461086e578063c49b9a801461089957610246565b806388f82020116100f257806388f82020146106e0578063893d20e81461071d5780638da5cb5b146107485780638f080c181461077357806395d89b411461079e57610246565b80636bc87c3a146105f957806370a0823114610624578063715018a61461066157806376979cab146106785780637d1db4a5146106b557610246565b806339509351116101bc57806346c3a2fd1161018057806346c3a2fd146105265780634a74bb021461055157806352390c021461057c578063641fc177146105a557806369e31309146105ce57610246565b8063395093511461042d5780633ad10ef61461046a5780633bd5d17314610495578063403a80c4146104be5780634549b039146104e957610246565b806318160ddd1161020357806318160ddd1461033457806323b872dd1461035f5780632d8381191461039c578063313ce567146103d95780633685d4191461040457610246565b806306fdde031461024b578063095ea7b31461027657806313114a9d146102b357806315563c57146102de57806315770f921461030957610246565b3661024657005b600080fd5b34801561025757600080fd5b506102606109a7565b60405161026d91906153c9565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190614bdf565b610a39565b6040516102aa9190615393565b60405180910390f35b3480156102bf57600080fd5b506102c8610a57565b6040516102d5919061558b565b60405180910390f35b3480156102ea57600080fd5b506102f3610a61565b6040516103009190615371565b60405180910390f35b34801561031557600080fd5b5061031e610aef565b60405161032b919061558b565b60405180910390f35b34801561034057600080fd5b50610349610af5565b604051610356919061558b565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190614b90565b610aff565b6040516103939190615393565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be9190614c44565b610bd8565b6040516103d0919061558b565b60405180910390f35b3480156103e557600080fd5b506103ee610c46565b6040516103fb9190615637565b60405180910390f35b34801561041057600080fd5b5061042b60048036038101906104269190614b02565b610c5d565b005b34801561043957600080fd5b50610454600480360381019061044f9190614bdf565b61102b565b6040516104619190615393565b60405180910390f35b34801561047657600080fd5b5061047f6110de565b60405161048c91906152f5565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190614c44565b611104565b005b3480156104ca57600080fd5b506104d3611280565b6040516104e0919061558b565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b9190614c6d565b611286565b60405161051d919061558b565b60405180910390f35b34801561053257600080fd5b5061053b61130c565b604051610548919061558b565b60405180910390f35b34801561055d57600080fd5b50610566611312565b6040516105739190615393565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e9190614b02565b611325565b005b3480156105b157600080fd5b506105cc60048036038101906105c79190614ca9565b6115c0565b005b3480156105da57600080fd5b506105e3611656565b6040516105f0919061558b565b60405180910390f35b34801561060557600080fd5b5061060e61165c565b60405161061b919061558b565b60405180910390f35b34801561063057600080fd5b5061064b60048036038101906106469190614b02565b611662565b604051610658919061558b565b60405180910390f35b34801561066d57600080fd5b5061067661174d565b005b34801561068457600080fd5b5061069f600480360381019061069a9190614c44565b611887565b6040516106ac9190615393565b60405180910390f35b3480156106c157600080fd5b506106ca61199f565b6040516106d7919061558b565b60405180910390f35b3480156106ec57600080fd5b5061070760048036038101906107029190614b02565b6119a5565b6040516107149190615393565b60405180910390f35b34801561072957600080fd5b506107326119fb565b60405161073f91906152f5565b60405180910390f35b34801561075457600080fd5b5061075d611a0a565b60405161076a91906152f5565b60405180910390f35b34801561077f57600080fd5b50610788611a33565b60405161079591906152f5565b60405180910390f35b3480156107aa57600080fd5b506107b3611a59565b6040516107c091906153c9565b60405180910390f35b3480156107d557600080fd5b506107f060048036038101906107eb9190614bdf565b611aeb565b6040516107fd9190615393565b60405180910390f35b34801561081257600080fd5b5061082d60048036038101906108289190614bdf565b611bb8565b60405161083a9190615393565b60405180910390f35b34801561084f57600080fd5b50610858611bd6565b60405161086591906152f5565b60405180910390f35b34801561087a57600080fd5b50610883611bfa565b60405161089091906153ae565b60405180910390f35b3480156108a557600080fd5b506108c060048036038101906108bb9190614c1b565b611c1e565b005b3480156108ce57600080fd5b506108d7611cee565b6040516108e491906152f5565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f9190614c44565b611d14565b005b34801561092257600080fd5b5061093d60048036038101906109389190614b54565b611dc1565b60405161094a919061558b565b60405180910390f35b34801561095f57600080fd5b50610968611e48565b6040516109759190615393565b60405180910390f35b34801561098a57600080fd5b506109a560048036038101906109a09190614b02565b61234a565b005b6060600480546109b69061587a565b80601f01602080910402602001604051908101604052809291908181526020018280546109e29061587a565b8015610a2f5780601f10610a0457610100808354040283529160200191610a2f565b820191906000526020600020905b815481529060010190602001808311610a1257829003601f168201915b5050505050905090565b6000610a4d610a4661251f565b8484612527565b6001905092915050565b6000600e54905090565b6060600b805480602002602001604051908101604052809291908181526020018280548015610ae557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610a9b575b5050505050905090565b60155481565b6000600c54905090565b6000610b0c8484846126f2565b610bcd84610b1861251f565b610bc8856040518060600160405280602881526020016159d960289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b7e61251f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ac9092919063ffffffff16565b612527565b600190509392505050565b6000600d54821115610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c169061542b565b60405180910390fd5b6000610c29612a01565b9050610c3e81846124f390919063ffffffff16565b915050919050565b6000600660009054906101000a900460ff16905090565b610c6561251f565b73ffffffffffffffffffffffffffffffffffffffff16610c83611a0a565b73ffffffffffffffffffffffffffffffffffffffff1614610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd0906154eb565b60405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5c9061546b565b60405180910390fd5b60005b600b80549050811015611027578173ffffffffffffffffffffffffffffffffffffffff16600b8281548110610dc6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561101457600b6001600b80549050610e219190615788565b81548110610e58577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b8281548110610ebd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b805480610fda577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611027565b808061101f906158ac565b915050610d68565b5050565b60006110d461103861251f565b846110cf856002600061104961251f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c90919063ffffffff16565b612527565b6001905092915050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061110e61251f565b9050600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561119d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111949061554b565b60405180910390fd5b60006111a883612a42565b505050505050905061120281600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250990919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061125a81600d5461250990919063ffffffff16565b600d8190555061127583600e54612a2c90919063ffffffff16565b600e81905550505050565b60115481565b6000600c548311156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c4906154ab565b60405180910390fd5b816112ee5760006112dd84612a42565b505050505050905080915050611306565b60006112f984612a42565b5050505050915050809150505b92915050565b60135481565b601860159054906101000a900460ff1681565b61132d61251f565b73ffffffffffffffffffffffffffffffffffffffff1661134b611a0a565b73ffffffffffffffffffffffffffffffffffffffff16146113a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611398906154eb565b60405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561142e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114259061546b565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611502576114be600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd8565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115c861251f565b73ffffffffffffffffffffffffffffffffffffffff166115e6611a0a565b73ffffffffffffffffffffffffffffffffffffffff161461163c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611633906154eb565b60405180910390fd5b826011819055508160128190555080601381905550505050565b60145481565b60125481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116fd57600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611748565b611745600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd8565b90505b919050565b61175561251f565b73ffffffffffffffffffffffffffffffffffffffff16611773611a0a565b73ffffffffffffffffffffffffffffffffffffffff16146117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c0906154eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611891611a0a565b73ffffffffffffffffffffffffffffffffffffffff166118af61251f565b73ffffffffffffffffffffffffffffffffffffffff1614806119255750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661190d61251f565b73ffffffffffffffffffffffffffffffffffffffff16145b806119845750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661196c61251f565b73ffffffffffffffffffffffffffffffffffffffff16145b61198d57600080fd5b61199682612aaa565b60019050919050565b600f5481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611a05611a0a565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060058054611a689061587a565b80601f0160208091040260200160405190810160405280929190818152602001828054611a949061587a565b8015611ae15780601f10611ab657610100808354040283529160200191611ae1565b820191906000526020600020905b815481529060010190602001808311611ac457829003601f168201915b5050505050905090565b6000611bae611af861251f565b84611ba985604051806060016040528060258152602001615a4f6025913960026000611b2261251f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ac9092919063ffffffff16565b612527565b6001905092915050565b6000611bcc611bc561251f565b84846126f2565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b611c2661251f565b73ffffffffffffffffffffffffffffffffffffffff16611c44611a0a565b73ffffffffffffffffffffffffffffffffffffffff1614611c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c91906154eb565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611ce39190615393565b60405180910390a150565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611d1c61251f565b73ffffffffffffffffffffffffffffffffffffffff16611d3a611a0a565b73ffffffffffffffffffffffffffffffffffffffff1614611d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d87906154eb565b60405180910390fd5b611db86064611daa83600c54612f9e90919063ffffffff16565b6124f390919063ffffffff16565b600f8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e8b61251f565b73ffffffffffffffffffffffffffffffffffffffff1614611eab57600080fd5b6000611f22600260086000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f390919063ffffffff16565b90506000611f9a8260086000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250990919063ffffffff16565b90506000611fb26002836124f390919063ffffffff16565b90506000611fc9828461250990919063ffffffff16565b9050600060086000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061203b84612aaa565b6120af8260086000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c90919063ffffffff16565b60086000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121888160086000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c90919063ffffffff16565b60086000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161228e919061558b565b60405180910390a3601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612337919061558b565b60405180910390a3600194505050505090565b61235261251f565b73ffffffffffffffffffffffffffffffffffffffff16612370611a0a565b73ffffffffffffffffffffffffffffffffffffffff16146123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd906154eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242d9061544b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000818361250191906156fd565b905092915050565b600081836125179190615788565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258e9061540b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fe9061556b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126e5919061558b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612762576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612759906153eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c99061552b565b60405180910390fd5b60008111612815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280c9061550b565b60405180910390fd5b61281d611a0a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561288b575061285b611a0a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156128d657600f548111156128d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cc906154cb565b60405180910390fd5b5b60006128e130611662565b9050600f5481106128f257600f5490505b600060105482101590508080156129165750601860149054906101000a900460ff16155b801561296e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156129865750601860159054906101000a900460ff165b1561299a57601054915061299982612fb4565b5b6129a585858561308a565b5050505050565b60008383111582906129f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129eb91906153c9565b60405180910390fd5b5082840390509392505050565b6000806000612a0e61337e565b91509150612a2581836124f390919063ffffffff16565b9250505090565b60008183612a3a91906156a7565b905092915050565b6000806000806000806000806000806000612a5c8c6136c9565b93509350935093506000806000612a7d8f878787612a78612a01565b613735565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b600c54811115612aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae69061548b565b60405180910390fd5b600060086000612afd61251f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015612b8b575060086000612b4c61251f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b15612c4e57612c0381604051806060016040528060228152602001615a2d6022913960086000612bb961251f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ac9092919063ffffffff16565b60086000612c0f61251f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000612c6a612c5b612a01565b83612f9e90919063ffffffff16565b9050600060076000612c7a61251f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015612d08575060076000612cc961251f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b15612dcb57612d80816040518060600160405280602c8152602001615a01602c913960076000612d3661251f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ac9092919063ffffffff16565b60076000612d8c61251f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b612e1e8260086000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c90919063ffffffff16565b60086000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ece612e7f612e70612a01565b84612f9e90919063ffffffff16565b60076000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c90919063ffffffff16565b60076000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f2782601454612a2c90919063ffffffff16565b601481905550600173ffffffffffffffffffffffffffffffffffffffff16612f4d61251f565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f92919061558b565b60405180910390a35050565b60008183612fac919061572e565b905092915050565b6001601860146101000a81548160ff0219169083151502179055506000612fe56002836124f390919063ffffffff16565b90506000612ffc828461250990919063ffffffff16565b9050600047905061300c836137e3565b6000613021824761250990919063ffffffff16565b905061302d8382613aa1565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161306093929190615600565b60405180910390a1505050506000601860146101000a81548160ff02191690831515021790555050565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561312d5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131425761313d838383613bac565b613379565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131e55750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131fa576131f5838383613e1a565b613378565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561329e5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132b3576132ae838383614088565b613377565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133555750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561336a57613365838383614261565b613376565b613375838383614088565b5b5b5b5b505050565b6000806000600c5490506000600d54905060005b600b8054905081101561368c578160076000600b84815481106133de577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806134f257508260086000600b848154811061348a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561350957600d54600c54945094505050506136c5565b6135bf60076000600b848154811061354a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361250990919063ffffffff16565b915061367760086000600b8481548110613602577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461250990919063ffffffff16565b92508080613684906158ac565b915050613392565b506136a4600c54600d546124f390919063ffffffff16565b8110156136bc57600d54600c549350935050506136c5565b80829350935050505b9091565b60008060008060008060006136dd88614564565b925092509250600061371c8261370e85613700888e61250990919063ffffffff16565b61250990919063ffffffff16565b61250990919063ffffffff16565b9050808484849750975097509750505050509193509193565b60008060008061374e858a612f9e90919063ffffffff16565b90506000613765868a612f9e90919063ffffffff16565b9050600061377c878a612f9e90919063ffffffff16565b905060006137c9613796898b612f9e90919063ffffffff16565b6137bb846137ad878961250990919063ffffffff16565b61250990919063ffffffff16565b61250990919063ffffffff16565b905083818496509650965050505050955095509592505050565b6000600267ffffffffffffffff811115613826577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156138545781602001602082028036833780820191505090505b5090503081600081518110613892577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561393257600080fd5b505afa158015613946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396a9190614b2b565b816001815181106139a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a09307f000000000000000000000000000000000000000000000000000000000000000084612527565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613a6b9594939291906155a6565b600060405180830381600087803b158015613a8557600080fd5b505af1158015613a99573d6000803e3d6000fd5b505050505050565b613acc307f000000000000000000000000000000000000000000000000000000000000000084612527565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613b16611a0a565b426040518863ffffffff1660e01b8152600401613b3896959493929190615310565b6060604051808303818588803b158015613b5157600080fd5b505af1158015613b65573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b8a9190614cf8565b505050613ba281601554612a2c90919063ffffffff16565b6015819055505050565b6000806000806000806000613bc088612a42565b9650965096509650965096509650613c2088600860008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250990919063ffffffff16565b600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cb587600760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250990919063ffffffff16565b600760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4a86600760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c90919063ffffffff16565b600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d96826145ff565b613d9f816147a4565b613da98584614a5f565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613e06919061558b565b60405180910390a350505050505050505050565b6000806000806000806000613e2e88612a42565b9650965096509650965096509650613e8e87600760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250990919063ffffffff16565b600760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f2384600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c90919063ffffffff16565b600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fb886600760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c90919063ffffffff16565b600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614004826145ff565b61400d816147a4565b6140178584614a5f565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051614074919061558b565b60405180910390a350505050505050505050565b600080600080600080600061409c88612a42565b96509650965096509650965096506140fc87600760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250990919063ffffffff16565b600760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061419186600760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c90919063ffffffff16565b600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141dd826145ff565b6141e6816147a4565b6141f08584614a5f565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161424d919061558b565b60405180910390a350505050505050505050565b600080600080600080600061427588612a42565b96509650965096509650965096506142d588600860008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250990919063ffffffff16565b600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061436a87600760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250990919063ffffffff16565b600760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143ff84600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c90919063ffffffff16565b600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061449486600760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c90919063ffffffff16565b600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144e0826145ff565b6144e9816147a4565b6144f38584614a5f565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051614550919061558b565b60405180910390a350505050505050505050565b600080600080614592606461458460115488612f9e90919063ffffffff16565b6124f390919063ffffffff16565b905060006145be60646145b060125489612f9e90919063ffffffff16565b6124f390919063ffffffff16565b905060006145ea60646145dc6013548a612f9e90919063ffffffff16565b6124f390919063ffffffff16565b90508282829550955095505050509193909250565b6000614609612a01565b905060006146208284612f9e90919063ffffffff16565b905061467481600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561479f5761475b83600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b60006147ae612a01565b905060006147c58284612f9e90919063ffffffff16565b905061483b8160076000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c90919063ffffffff16565b60076000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156149cc576149668360086000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2c90919063ffffffff16565b60086000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614a0d61251f565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051614a52919061558b565b60405180910390a3505050565b614a7482600d5461250990919063ffffffff16565b600d81905550614a8f81600e54612a2c90919063ffffffff16565b600e819055505050565b600081359050614aa881615993565b92915050565b600081519050614abd81615993565b92915050565b600081359050614ad2816159aa565b92915050565b600081359050614ae7816159c1565b92915050565b600081519050614afc816159c1565b92915050565b600060208284031215614b1457600080fd5b6000614b2284828501614a99565b91505092915050565b600060208284031215614b3d57600080fd5b6000614b4b84828501614aae565b91505092915050565b60008060408385031215614b6757600080fd5b6000614b7585828601614a99565b9250506020614b8685828601614a99565b9150509250929050565b600080600060608486031215614ba557600080fd5b6000614bb386828701614a99565b9350506020614bc486828701614a99565b9250506040614bd586828701614ad8565b9150509250925092565b60008060408385031215614bf257600080fd5b6000614c0085828601614a99565b9250506020614c1185828601614ad8565b9150509250929050565b600060208284031215614c2d57600080fd5b6000614c3b84828501614ac3565b91505092915050565b600060208284031215614c5657600080fd5b6000614c6484828501614ad8565b91505092915050565b60008060408385031215614c8057600080fd5b6000614c8e85828601614ad8565b9250506020614c9f85828601614ac3565b9150509250929050565b600080600060608486031215614cbe57600080fd5b6000614ccc86828701614ad8565b9350506020614cdd86828701614ad8565b9250506040614cee86828701614ad8565b9150509250925092565b600080600060608486031215614d0d57600080fd5b6000614d1b86828701614aed565b9350506020614d2c86828701614aed565b9250506040614d3d86828701614aed565b9150509250925092565b6000614d538383614d5f565b60208301905092915050565b614d68816157bc565b82525050565b614d77816157bc565b82525050565b6000614d8882615662565b614d928185615685565b9350614d9d83615652565b8060005b83811015614dce578151614db58882614d47565b9750614dc083615678565b925050600181019050614da1565b5085935050505092915050565b614de4816157ce565b82525050565b614df381615811565b82525050565b614e0281615835565b82525050565b6000614e138261566d565b614e1d8185615696565b9350614e2d818560208601615847565b614e3681615982565b840191505092915050565b6000614e4e602583615696565b91507f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614eb4602483615696565b91507f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614f1a602a83615696565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b6000614f80602683615696565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614fe6601b83615696565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b6000615026601e83615696565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c00006000830152602082019050919050565b6000615066601f83615696565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b60006150a6602883615696565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b600061510c602083615696565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061514c602983615696565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b60006151b2602383615696565b91507f42455032303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615218602c83615696565b91507f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008301527f6869732066756e6374696f6e00000000000000000000000000000000000000006020830152604082019050919050565b600061527e602283615696565b91507f42455032303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6152e0816157fa565b82525050565b6152ef81615804565b82525050565b600060208201905061530a6000830184614d6e565b92915050565b600060c0820190506153256000830189614d6e565b61533260208301886152d7565b61533f6040830187614df9565b61534c6060830186614df9565b6153596080830185614d6e565b61536660a08301846152d7565b979650505050505050565b6000602082019050818103600083015261538b8184614d7d565b905092915050565b60006020820190506153a86000830184614ddb565b92915050565b60006020820190506153c36000830184614dea565b92915050565b600060208201905081810360008301526153e38184614e08565b905092915050565b6000602082019050818103600083015261540481614e41565b9050919050565b6000602082019050818103600083015261542481614ea7565b9050919050565b6000602082019050818103600083015261544481614f0d565b9050919050565b6000602082019050818103600083015261546481614f73565b9050919050565b6000602082019050818103600083015261548481614fd9565b9050919050565b600060208201905081810360008301526154a481615019565b9050919050565b600060208201905081810360008301526154c481615059565b9050919050565b600060208201905081810360008301526154e481615099565b9050919050565b60006020820190508181036000830152615504816150ff565b9050919050565b600060208201905081810360008301526155248161513f565b9050919050565b60006020820190508181036000830152615544816151a5565b9050919050565b600060208201905081810360008301526155648161520b565b9050919050565b6000602082019050818103600083015261558481615271565b9050919050565b60006020820190506155a060008301846152d7565b92915050565b600060a0820190506155bb60008301886152d7565b6155c86020830187614df9565b81810360408301526155da8186614d7d565b90506155e96060830185614d6e565b6155f660808301846152d7565b9695505050505050565b600060608201905061561560008301866152d7565b61562260208301856152d7565b61562f60408301846152d7565b949350505050565b600060208201905061564c60008301846152e6565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006156b2826157fa565b91506156bd836157fa565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156156f2576156f16158f5565b5b828201905092915050565b6000615708826157fa565b9150615713836157fa565b92508261572357615722615924565b5b828204905092915050565b6000615739826157fa565b9150615744836157fa565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561577d5761577c6158f5565b5b828202905092915050565b6000615793826157fa565b915061579e836157fa565b9250828210156157b1576157b06158f5565b5b828203905092915050565b60006157c7826157da565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061581c82615823565b9050919050565b600061582e826157da565b9050919050565b6000615840826157fa565b9050919050565b60005b8381101561586557808201518184015260208101905061584a565b83811115615874576000848401525b50505050565b6000600282049050600182168061589257607f821691505b602082108114156158a6576158a5615953565b5b50919050565b60006158b7826157fa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156158ea576158e96158f5565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61599c816157bc565b81146159a757600080fd5b50565b6159b3816157ce565b81146159be57600080fd5b50565b6159ca816157fa565b81146159d557600080fd5b5056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365416d6f756e7420746f206275726e2065786365656473207265666c656374656420746f6b656e206f776e6564416d6f756e7420746f206275726e206578636565647320746f6b656e206f776e656442455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122093c82d4d489eb49c2a9fa8437f7b13c7ccbcdc2653f4b117f007e78738cbfb9064736f6c634300080000330000000000000000000000007d7ca00c504ec3d64325d27c16b9edc1d04413d3000000000000000000000000a2474f4db32872d98e1d2f5517a0a1837531036e00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e0000000000000000000000008749e0e2e09c22cdd5a33f26a7b768a3b1ee922f

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

0000000000000000000000007d7ca00c504ec3d64325d27c16b9edc1d04413d3000000000000000000000000a2474f4db32872d98e1d2f5517a0a1837531036e00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e0000000000000000000000008749e0e2e09c22cdd5a33f26a7b768a3b1ee922f

-----Decoded View---------------
Arg [0] : blackHoleVaultAddress_ (address): 0x7d7ca00c504ec3d64325d27c16b9edc1d04413d3
Arg [1] : devAddress_ (address): 0xa2474f4db32872d98e1d2f5517a0a1837531036e
Arg [2] : routerAddress_ (address): 0x10ed43c718714eb63d5aa57b78b54704e256024e
Arg [3] : spaceWasteVaultAddress_ (address): 0x8749e0e2e09c22cdd5a33f26a7b768a3b1ee922f

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000007d7ca00c504ec3d64325d27c16b9edc1d04413d3
Arg [1] : 000000000000000000000000a2474f4db32872d98e1d2f5517a0a1837531036e
Arg [2] : 00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e
Arg [3] : 0000000000000000000000008749e0e2e09c22cdd5a33f26a7b768a3b1ee922f


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.