Contract 0x392bbcceda72b0d6a03009dcc90395dd961a6c5a

Contract Overview

Balance:
0 CRO

CRO Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x3ed082ab6818ae57630dbafb6e3272c8dbff9c0070784317f6889826645cba97Stake49149122022-10-03 7:08:491 hr 59 mins ago0x10e0907bf64491bba7e6f0b77d77587afa6a8274 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO1.407186898825 4,907.330720712
0xe7cb53709d1ac0b93dd41a071dcb0ebec4792647b8a4056f23b9abd80162cb81Stake49148182022-10-03 6:59:542 hrs 8 mins ago0x10e0907bf64491bba7e6f0b77d77587afa6a8274 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO2.378531317548 4,907.335048967
0x87628b7b8c5ad4bb16c231fe0d0627d05143404a8a4ec1d01c10fd15be209e4bStake49146482022-10-03 6:43:492 hrs 24 mins ago0x3e73bf488983a9aaaa5b22217bc2f445562a222c IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO1.833422597794 4,907.342984611
0x3e50c6bd8480ccb7204a28898adb9cfd47cc8517f4c19e32ceb0635bf7e67b7dClaim Reward49138402022-10-03 5:27:223 hrs 41 mins ago0x6f60262923263580a089bacf02197760412d974c IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO2.3623976137740
0x11ac3bf1456e3b2ea534d06a5f2f34a6a90e48b221da063d5f1ec2a75e528f93Claim Bonus49138392022-10-03 5:27:173 hrs 41 mins ago0x6f60262923263580a089bacf02197760412d974c IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO2.2084412527450
0x981cad34a26b5e3d4319ec16d4e8a7391e8e9c98d9de3a53fa45fd89c7247eb0Stake49137452022-10-03 5:18:223 hrs 50 mins ago0x3a7f2a930aac00454500091ee07c0c7c8a0c37dd IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO2.240280
0x70d818d1001b2d7760c6e7d517080fb1657d80b818a7c980a2b32c67785e346aClaim Reward49137202022-10-03 5:16:013 hrs 52 mins ago0x3a7f2a930aac00454500091ee07c0c7c8a0c37dd IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO5.792680
0xa7aea6a33b271adab91ec14daf6f284916daef658a10d4ed8185f73b1d2806faStake49126672022-10-03 3:36:425 hrs 32 mins ago0x4f266e13280f8cac12b78d4863bfb76d86f829c4 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO1.204245432302 4,907.435581854
0xf02660092b1705d0618bc52cf3ac4ce2f41de2f9c8f2eab53f6f84c49ed5aab2Stake49126042022-10-03 3:30:425 hrs 38 mins ago0xf796abad27168e97cb18d90ea8141b2540e54984 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO1.565188237274 4,907.43845989
0xc92801ceac7f217877b660ef1ac462b6acc27e197c4e5ab3dc8e58eb0c4e9b6cStake49125412022-10-03 3:24:445 hrs 44 mins ago0xfb8e7d50a5057d68dc0469f058a6a364bd7b4ca6 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO1.4676614860920
0x5f994e35165475ae845f1e3c378648080a88ececd712686382325a22a6ea9590Claim Reward49121722022-10-03 2:49:496 hrs 18 mins ago0xd5fb84bd905a814408ac8497b6f01a5a309fe7ea IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO2.363157241743 4,907.458595152
0x160d50b558959d5910f37ca7d89f69ade819c320de2e0b768cbdd00582f4ba22Claim Bonus49121682022-10-03 2:49:266 hrs 19 mins ago0xd5fb84bd905a814408ac8497b6f01a5a309fe7ea IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO2.135539579018 4,907.458783209
0x2b1ecff5ca4f90602bb14e53dcf8c5d39de077d63d573ffbb3ccce46a748ec56Stake49119102022-10-03 2:25:016 hrs 43 mins ago0x3d7f9f22eadebb8463e7b225376dcf1729a62fee IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO1.224551362119 4,907.47075326
0x03a1cf3bbcb6d6dd0e2d7ddbd99ef7968db0c042e5d8deeed25fe085a3faff02Stake49118962022-10-03 2:23:436 hrs 45 mins ago0x8b560ebb1c9d758f069e748a6462236840b7fcb0 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO1.67109215188 4,907.471372842
0x953adf35b360163938f5981b35281ddb2d51a152f2ef743d5bc20018e1f99dc8Stake49118112022-10-03 2:15:396 hrs 53 mins ago0xfb8e7d50a5057d68dc0469f058a6a364bd7b4ca6 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO1.4473805147680
0xd5c0d62ada0a21949e00b1ceaac9448b647c3632cd6c38837adaed5107c81027Unstake49117702022-10-03 2:11:466 hrs 57 mins ago0xdd5ca0f206097a828fc89769f50beeed18576a7d IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO3.722458861341 4,907.477194436
0x80a072a098593a7f0aa1037f815752e76397b72300536d9fbcfa9903c3f7a007Unstake49111912022-10-03 1:17:057 hrs 51 mins ago0xca8ee2dcacba56664221d41ec9fb041262784ed8 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO4.1198414489040
0x7fb865aafd6bd948fa753be8075dc65fadd9ccb2a6f5b5792366c6732982be69Stake49099112022-10-02 23:16:099 hrs 52 mins ago0xfb8e7d50a5057d68dc0469f058a6a364bd7b4ca6 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO1.4271147676070
0x071f0504c41e4c472ebf5c3b2a6d72f6b960a26d99a505bd64cbb38f751bb35bClaim Reward49095152022-10-02 22:38:4110 hrs 30 mins ago0xf6ae4dbd0ee0892079280f190bc10df5b5225cb1 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO2.2241030680850
0x4cab09bb0b6b5c1c731f186c205022b603e0170e67a4a15bd60fc07475f37569Claim Reward49089312022-10-02 21:43:3111 hrs 25 mins ago0x7608b738a911a3d3c8d5c8de9fd10833320e3e98 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO2.9262578600540
0x20c0948ed92a6cb3c364069e27c840f8a825ccfbd9c8ec1621ccc2b7cc921346Stake49080602022-10-02 20:21:0712 hrs 47 mins ago0xfb8e7d50a5057d68dc0469f058a6a364bd7b4ca6 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO1.4068475441960
0x3f1d9fab82225570fa48aad66e6e6447cc17908eef9a2db44a16579395313f0aClaim Reward49075802022-10-02 19:35:3313 hrs 33 mins ago0x1405d7e44400824de19b24c6333d0dfa2f241774 IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO4.232137878627 4,907.668653436
0x2f4c3bd793d4b3c2e739b43bbc580cdacabfe0ed1fbe6a8487308b0b595e7b7dClaim Reward49074682022-10-02 19:24:5713 hrs 43 mins ago0xe25b393b5ef355ff76b34cac8e13257c898709eb IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO3.747617358453 4,907.673617453
0x3254dd39ed89e96e45f263216484eb1c4866f68d4fdc32f0659650117c3691b9Claim Bonus49072902022-10-02 19:08:0614 hrs ago0x7ed4cc291174448727bb95e3ae0b2d499f49702e IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO2.134983930070
0x3c9aa6a2e2cb163be7ea4b50191a83fc883566625de0687c6395f714d39b13dfClaim Reward49072872022-10-02 19:07:4914 hrs ago0x7ed4cc291174448727bb95e3ae0b2d499f49702e IN  0x392bbcceda72b0d6a03009dcc90395dd961a6c5a0 CRO3.5388879798440
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DBF_NFT_Staking

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-08-18
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;


library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {
        
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}


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

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


abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


library Address {

    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

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

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

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

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

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

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal 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

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface IERC721Receiver {

    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

contract ERC721Holder is IERC721Receiver {
 
    function onERC721Received(
        address,
        address,
        uint256,
        bytes memory
    ) public virtual override returns (bytes4) {
        return this.onERC721Received.selector;
    }
}


interface IERC165 {

    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

interface IERC721 is IERC165 {
  
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    function balanceOf(address owner) external view returns (uint256 balance);

    function ownerOf(uint256 tokenId) external view returns (address owner);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function approve(address to, uint256 tokenId) external;

    function getApproved(uint256 tokenId) external view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) external;

    function isApprovedForAll(address owner, address operator) external view returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}


interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the token collection symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping(uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping(address => uint256) private _balances;

    // Mapping from token ID to approved address
    mapping(uint256 => address) private _tokenApprovals;

    // Mapping from owner to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }

    /**
     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
     * by default, can be overriden in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev See {IERC721-isApprovedForAll}.
     */
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    /**
     * @dev Returns whether `spender` is allowed to manage `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    /**
     * @dev Safely mints `tokenId` and transfers it to `to`.
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
     */
    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    /**
     * @dev Mints `tokenId` and transfers it to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);

        _afterTokenTransfer(address(0), to, tokenId);
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        // Clear approvals
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);

        _afterTokenTransfer(owner, address(0), tokenId);
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);

        _afterTokenTransfer(from, to, tokenId);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits a {Approval} event.
     */
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    /**
     * @dev Approve `operator` to operate on all of `owner` tokens
     *
     * Emits a {ApprovalForAll} event.
     */
    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC721: approve to caller");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}

  
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}

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

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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

contract DBF_NFT_Staking is Ownable, ERC721Holder {

    IERC20 internal R_Token;
    ERC721 internal NFT;

    bool public paused = true;
    
    uint256 public rvalue = 15740740740741;
    uint256 public totalStaked = 0;
    uint256 public uAdr = 0;
    uint256 public pending = 0;

    struct DataBase {
        address _user;
        uint256 _TokenId;
        uint256 _IsStaked;
        uint256 _StakedTime;
        uint256 _lastClaimed;
    }
    struct ClaimDataBase {
        uint256 _bonusToClaim;
    }

    mapping (address => DataBase[]) public userRecord;
    mapping (address => ClaimDataBase) public claimRecord;
    mapping (uint256 => address) public accountIndex;
    mapping (address => uint256) public accountIDs;
    mapping (uint256 => uint256) public stakedIndex;

    constructor(address _nftAdr, address _token) {
        R_Token = IERC20(_token);
        NFT = ERC721(_nftAdr);
    }

	function setRval(uint256 _rval) public onlyOwner {
		rvalue = _rval;
	}

    function distribute() public onlyOwner {
        uint256 monthlyRewards = ((rvalue * 10000) * 2678400);
        uint256 scBal = ((R_Token.balanceOf(address(this))) - pending);
        uint256 leftToDist = 0;
        if (scBal > monthlyRewards) { leftToDist = (scBal - monthlyRewards); }
        if (leftToDist > 0)
        {  
            uint256 perNFT = (leftToDist / 2) / totalStaked;
            for(uint i = 0; i < uAdr; i++)
            {
                if (stakedIndex[i] > 0)
                {
                    claimRecord[accountIndex[i]]._bonusToClaim += (perNFT * stakedIndex[i]);
                    pending += (perNFT * stakedIndex[i]);
                }
            }
            burn(leftToDist / 2);
        }
    }

    function backupDist() public onlyOwner {
        uint256 monthlyRewards = (rvalue * 10000) * 2678400;
        uint256 scBal = ((R_Token.balanceOf(address(this))) - pending);
        uint256 leftToDist = 0;
        if (scBal > monthlyRewards) { leftToDist = (scBal - monthlyRewards); }
        if (leftToDist > 0)
        {  
            leftToDist = (leftToDist / 2);
            R_Token.transfer(msg.sender,leftToDist);
            burn(leftToDist);
        }
    }

    function checkBonus() public view returns (uint256) {
        if (claimRecord[msg.sender]._bonusToClaim > 0)
        {
            return claimRecord[msg.sender]._bonusToClaim;
        }
        else
        {
            return 0;
        }
    }

    function claimBonus() public {
        uint256 bonus = claimRecord[msg.sender]._bonusToClaim;
        require(bonus > 0, "You have no bonus left to claim!");
        require(R_Token.balanceOf(address(this)) >= bonus, "Oops, nothing left in the reward pool");
        claimRecord[msg.sender]._bonusToClaim = 0;
        pending -= bonus;
        R_Token.transfer(msg.sender,bonus);
    }

    function viewAccounts(uint256 from, uint256 to) public view returns (address[] memory) {
        address[] memory theAccounts = new address[](to - from);
        uint x = 0;
        for (uint i = from-1; i < to; i++) {
            if (stakedIndex[i] > 0)
            {
                theAccounts[x] = accountIndex[i];
                x++;
            }
        }
        return theAccounts;
    }

    function stake(uint256[] calldata _tokenIds) public {
        for(uint i =0; i < _tokenIds.length; i++)
        {
            stakeSingle(_tokenIds[i]);
        }
    }

    function stakeSingle(uint _tokenId) public {
        require(!paused,"Staking is Currently Paused!!");
        address account = msg.sender;
        NFT.safeTransferFrom(account, address(this) , _tokenId,"");
        uint userRegistery = getlength(account);
        bool swipper;
        if(userRegistery > 0) {
            DataBase[] storage update = userRecord[account];
            uint i = 0;
            while(i < userRegistery) {
                if(userRecord[account][i]._TokenId == _tokenId) {
                    update[i]._IsStaked = 1;
                    update[i]._StakedTime = block.timestamp;
                    update[i]._lastClaimed = block.timestamp;
                    swipper = true;
                    break;
                }
                i++;
            }
        }
        if(!swipper) {
            userRecord[account].push(
                DataBase({
                    _user: account,
                    _TokenId: _tokenId,
                    _IsStaked: 1,
                    _StakedTime: block.timestamp,
                    _lastClaimed: block.timestamp
                })
            );
        }

        totalStaked += 1;
        if (accountIDs[account] == 0)
        {
            accountIndex[uAdr] = account;
            stakedIndex[uAdr] += 1;
            accountIDs[account] = uAdr;
            uAdr += 1;
        }
        else
        {            
            stakedIndex[accountIDs[account]] += 1;
        }
    }    

    function claimReward() public {
        require(!paused,"Staking is Currently Paused!!");
        address account = msg.sender;
        uint256 totalSecondsCount;
        uint userRegistery = getlength(account);
        if(userRegistery > 0) {
            DataBase[] storage update = userRecord[account];
            uint i = 0;
            while(i < userRegistery) {
                uint256 second = 0;
                if(update[i]._IsStaked == 1) {
                    second = block.timestamp - update[i]._lastClaimed;
                    totalSecondsCount += second;
                    update[i]._lastClaimed =  block.timestamp;
                }
                i++;
            }
        }
        else{
            revert("Error: No Record Found!!");
        }

        uint256 subtotalReward = rvalue * totalSecondsCount;
        if(subtotalReward > 0) {
            R_Token.transfer(account,subtotalReward);
        }
        else {
            revert("Please Wait till the reward Get Generated!!");
        }

    }

    function unstake(uint256[] calldata _tokenIds) public {
        for(uint i =0; i < _tokenIds.length; i++)
        {
            unstakeSingle(_tokenIds[i]);
        }
    }

    function unstakeSingle(uint _tokenId) public {
        require(!paused,"Staking is Currently Paused!!");
        address account = msg.sender;
        uint userRegistery = getlength(account);
        uint[] memory checkIds = getStakeNftId(account);
        uint i;
        bool found;
        uint totalNftReward;
        while(i < userRegistery) {
            if(checkIds[i] == _tokenId) {
                found = true;
                break;
            }
            i++;
        }

        if(found) {

            if(userRegistery > 0) {
                DataBase[] storage update = userRecord[account];
                uint j = 0;
                while(j < userRegistery) {
                    uint256 second = 0;
                    if(update[j]._TokenId == _tokenId) {
                        second = block.timestamp - update[j]._lastClaimed;
                        totalNftReward += second;
                        update[j]._lastClaimed =  block.timestamp;
                        update[j]._IsStaked = 0;
                        break;
                    }
                    j++;
                }
            }
            
            totalStaked -= 1;
            stakedIndex[accountIDs[account]] -= 1;

            uint256 totalRewardonNft = rvalue * totalNftReward;
            R_Token.transfer(account,totalRewardonNft);
            NFT.transferFrom(address(this),account, _tokenId);
        }
        else{
            revert("Error: No Record Found!!");
        }
        
    }
    
    function checkReward(address _adr) public view returns (uint256) {
        address account = _adr;
        uint256 totalSecondsCount;
        uint userRegistery = getlength(account);
        if(userRegistery > 0) {
            DataBase[] storage update = userRecord[account];
            uint i = 0;
            while(i < userRegistery) {
                uint256 second = 0;
                if(update[i]._IsStaked == 1) {
                    second = block.timestamp - update[i]._lastClaimed;
                    totalSecondsCount += second;
                }
                i++;
            }
        }

        uint256 subtotalReward = rvalue * totalSecondsCount;
        if(subtotalReward > 0) {
            return subtotalReward;
        }
        else {
            return 0;
        }

    }

    function getStakeNftId(address _adr) public view returns (uint256[] memory) {
        address account = _adr;
        uint userRegistery = getlength(account);
        uint256[] memory ownedTokenIds = new uint256[](userRegistery);

        if(userRegistery > 0) {
            DataBase[] storage rec = userRecord[account];
            uint i = 0;
            while(i < userRegistery) {
                if(rec[i]._IsStaked == 1) {
                    ownedTokenIds[i] = rec[i]._TokenId;
                }
                i++;
            }
        }
        else {
            revert("Error: No Record Found!!");
        }

        return ownedTokenIds;   

    }
    
    function getlength(address _adr) internal view returns (uint) {
        return userRecord[_adr].length;
    }

    function rescueTokens(address _adr) public onlyOwner {
        IERC20(_adr).transfer(msg.sender,IERC20(_adr).balanceOf(address(this)));
    }

    function rescueNft(uint _id,address recipient) public onlyOwner {
        NFT.transferFrom(address(this),recipient, _id);
    }

    function setPaused(bool _status) public onlyOwner {
        paused = _status;
    }
    function burn(uint256 amount) public onlyOwner {        
        address deadAdd = 0x000000000000000000000000000000000000dEaD;        
        R_Token.transfer(deadAdd,amount);
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_nftAdr","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"accountIDs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"accountIndex","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"backupDist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"}],"name":"checkReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimRecord","outputs":[{"internalType":"uint256","name":"_bonusToClaim","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distribute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"}],"name":"getStakeNftId","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"rescueNft","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rvalue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rval","type":"uint256"}],"name":"setRval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"stakeSingle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakedIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uAdr","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"unstakeSingle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userRecord","outputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_TokenId","type":"uint256"},{"internalType":"uint256","name":"_IsStaked","type":"uint256"},{"internalType":"uint256","name":"_StakedTime","type":"uint256"},{"internalType":"uint256","name":"_lastClaimed","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"from","type":"uint256"},{"internalType":"uint256","name":"to","type":"uint256"}],"name":"viewAccounts","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"}]

60806040526002805460ff60a01b1916600160a01b179055650e50ed42a6856003556000600481905560058190556006553480156200003d57600080fd5b50604051620022db380380620022db83398101604081905262000060916200011a565b620000746200006e620000a9565b620000ad565b600180546001600160a01b039283166001600160a01b0319918216179091556002805493909216921691909117905562000151565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200011557600080fd5b919050565b600080604083850312156200012d578182fd5b6200013883620000fd565b91506200014860208401620000fd565b90509250929050565b61217a80620001616000396000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c80637b86a66e1161010f578063b88a802f116100a2578063e20ccec311610071578063e20ccec3146103e6578063e449f341146103ee578063e4fc6b6d14610401578063f2fde38b14610409576101e4565b8063b88a802f146103a5578063bd542f95146103ad578063c0bd1fc8146103c0578063c3c90e64146103d3576101e4565b80639384f418116100de5780639384f4181461036f57806395808366146103825780639669f64e1461038a578063b643191e14610392576101e4565b80637b86a66e146103395780637e7031fb1461034c578063817b1cd21461035f5780638da5cb5b14610367576101e4565b806342966c68116101875780635c975abb116101565780635c975abb146102e7578063622d62e0146102fc5780636ca2981114610311578063715018a614610331576101e4565b806342966c68146102955780634d8d773e146102a857806350635394146102bb5780635b89c6cd146102c3576101e4565b806316c38b3c116101c357806316c38b3c1461023a57806329676c3b1461024d578063350825ba1461025557806336f9825f14610275576101e4565b8062ae3bf8146101e95780630fbf0a93146101fe578063150b7a0214610211575b600080fd5b6101fc6101f7366004611b31565b61041c565b005b6101fc61020c366004611c50565b61055d565b61022461021f366004611b52565b6105ae565b6040516102319190611eb5565b60405180910390f35b6101fc610248366004611cbf565b6105be565b6101fc61061b565b610268610263366004611d52565b6107c5565b6040516102319190611e25565b610288610283366004611cf7565b6108d1565b6040516102319190611d73565b6101fc6102a3366004611cf7565b6108ec565b6101fc6102b6366004611cf7565b6109b1565b6101fc6109f5565b6102d66102d1366004611c27565b610b1b565b604051610231959493929190611df7565b6102ef610b73565b6040516102319190611eaa565b610304610b83565b6040516102319190612078565b61032461031f366004611b31565b610b89565b6040516102319190611e72565b6101fc610cea565b6101fc610347366004611cf7565b610d35565b6101fc61035a366004611cf7565b6110a1565b6103046113d5565b6102886113db565b61030461037d366004611b31565b6113eb565b6103046113fd565b610304611403565b6103046103a0366004611cf7565b611436565b6101fc611448565b6101fc6103bb366004611d27565b611636565b6103046103ce366004611b31565b6116df565b6103046103e1366004611b31565b6116f1565b6103046117f7565b6101fc6103fc366004611c50565b6117fd565b6101fc611849565b6101fc610417366004611b31565b611a3a565b610424611aab565b6001600160a01b03166104356113db565b6001600160a01b0316146104645760405162461bcd60e51b815260040161045b90611fc7565b60405180910390fd5b6040516370a0823160e01b81526001600160a01b0382169063a9059cbb90339083906370a082319061049a903090600401611d73565b60206040518083038186803b1580156104b257600080fd5b505afa1580156104c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ea9190611d0f565b6040518363ffffffff1660e01b8152600401610507929190611dde565b602060405180830381600087803b15801561052157600080fd5b505af1158015610535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105599190611cdb565b5050565b60005b818110156105a95761059783838381811061058b57634e487b7160e01b600052603260045260246000fd5b90506020020135610d35565b806105a1816120ef565b915050610560565b505050565b630a85bd0160e11b949350505050565b6105c6611aab565b6001600160a01b03166105d76113db565b6001600160a01b0316146105fd5760405162461bcd60e51b815260040161045b90611fc7565b60028054911515600160a01b0260ff60a01b19909216919091179055565b610623611aab565b6001600160a01b03166106346113db565b6001600160a01b03161461065a5760405162461bcd60e51b815260040161045b90611fc7565b600060035461271061066c91906120b9565b610679906228de806120b9565b6006546001546040516370a0823160e01b81529293506000926001600160a01b03909116906370a08231906106b2903090600401611d73565b60206040518083038186803b1580156106ca57600080fd5b505afa1580156106de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107029190611d0f565b61070c91906120d8565b90506000828211156107255761072283836120d8565b90505b80156105a957610736600282612099565b60015460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb906107699033908590600401611dde565b602060405180830381600087803b15801561078357600080fd5b505af1158015610797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bb9190611cdb565b506105a9816108ec565b606060006107d384846120d8565b67ffffffffffffffff8111156107f957634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610822578160200160208202803683370190505b5090506000806108336001876120d8565b90505b848110156108c7576000818152600b6020526040902054156108b55760008181526009602052604090205483516001600160a01b039091169084908490811061088f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0390921660209283029190910190910152816108b1816120ef565b9250505b806108bf816120ef565b915050610836565b5090949350505050565b6009602052600090815260409020546001600160a01b031681565b6108f4611aab565b6001600160a01b03166109056113db565b6001600160a01b03161461092b5760405162461bcd60e51b815260040161045b90611fc7565b60015460405163a9059cbb60e01b815261dead916001600160a01b03169063a9059cbb9061095f9084908690600401611dde565b602060405180830381600087803b15801561097957600080fd5b505af115801561098d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a99190611cdb565b6109b9611aab565b6001600160a01b03166109ca6113db565b6001600160a01b0316146109f05760405162461bcd60e51b815260040161045b90611fc7565b600355565b3360009081526008602052604090205480610a225760405162461bcd60e51b815260040161045b90611f47565b6001546040516370a0823160e01b815282916001600160a01b0316906370a0823190610a52903090600401611d73565b60206040518083038186803b158015610a6a57600080fd5b505afa158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa29190611d0f565b1015610ac05760405162461bcd60e51b815260040161045b90612033565b33600090815260086020526040812081905560068054839290610ae49084906120d8565b909155505060015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906105079033908590600401611dde565b60076020528160005260406000208181548110610b3757600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401546001600160a01b039093169550909350919085565b600254600160a01b900460ff1681565b60055481565b6060816000610b9782611aaf565b905060008167ffffffffffffffff811115610bc257634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610beb578160200160208202803683370190505b5090508115610cc8576001600160a01b0383166000908152600760205260408120905b83811015610cc157818181548110610c3657634e487b7160e01b600052603260045260246000fd5b90600052602060002090600502016002015460011415610caf57818181548110610c7057634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160010154838281518110610ca257634e487b7160e01b600052603260045260246000fd5b6020026020010181815250505b80610cb9816120ef565b915050610c0e565b5050610ce0565b60405162461bcd60e51b815260040161045b90611f10565b925050505b919050565b610cf2611aab565b6001600160a01b0316610d036113db565b6001600160a01b031614610d295760405162461bcd60e51b815260040161045b90611fc7565b610d336000611aca565b565b600254600160a01b900460ff1615610d5f5760405162461bcd60e51b815260040161045b90611ffc565b600254604051635c46a7ef60e11b815233916001600160a01b03169063b88d4fde90610d9390849030908790600401611dab565b600060405180830381600087803b158015610dad57600080fd5b505af1158015610dc1573d6000803e3d6000fd5b505050506000610dd082611aaf565b905060008115610f10576001600160a01b0383166000908152600760205260408120905b83811015610f0d576001600160a01b0385166000908152600760205260409020805487919083908110610e3757634e487b7160e01b600052603260045260246000fd5b9060005260206000209060050201600101541415610efb576001828281548110610e7157634e487b7160e01b600052603260045260246000fd5b90600052602060002090600502016002018190555042828281548110610ea757634e487b7160e01b600052603260045260246000fd5b90600052602060002090600502016003018190555042828281548110610edd57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600502016004018190555060019250610f0d565b80610f05816120ef565b915050610df4565b50505b80610fa2576001600160a01b038381166000818152600760209081526040808320815160a0810183529485528483018a8152600192860183815242606088018181526080890191825284548087018655948852959096209651600590930290960180546001600160a01b0319169290971691909117865551908501559151600284015590516003830155516004909101555b600160046000828254610fb59190612081565b90915550506001600160a01b0383166000908152600a602052604090205461105f5760058054600090815260096020908152604080832080546001600160a01b0319166001600160a01b03891617905592548252600b9052908120805460019290611021908490612081565b9091555050600580546001600160a01b0385166000908152600a6020526040812082905560019291611054908490612081565b9091555061109b9050565b6001600160a01b0383166000908152600a60209081526040808320548352600b9091528120805460019290611095908490612081565b90915550505b50505050565b600254600160a01b900460ff16156110cb5760405162461bcd60e51b815260040161045b90611ffc565b3360006110d782611aaf565b905060006110e483610b89565b905060008060005b8483101561113e578684848151811061111557634e487b7160e01b600052603260045260246000fd5b6020026020010151141561112c576001915061113e565b82611136816120ef565b9350506110ec565b8115610cc857841561127b576001600160a01b0386166000908152600760205260408120905b868110156112785760008983838154811061118f57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060050201600101541415611265578282815481106111c757634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160040154426111e491906120d8565b90506111f08185612081565b93504283838154811061121357634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160040181905550600083838154811061124a57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600502016002018190555050611278565b8161126f816120ef565b92505050611164565b50505b60016004600082825461128e91906120d8565b90915550506001600160a01b0386166000908152600a60209081526040808320548352600b90915281208054600192906112c99084906120d8565b90915550506003546000906112df9083906120b9565b60015460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb90611312908a908590600401611dde565b602060405180830381600087803b15801561132c57600080fd5b505af1158015611340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113649190611cdb565b506002546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906113999030908b908d90600401611d87565b600060405180830381600087803b1580156113b357600080fd5b505af11580156113c7573d6000803e3d6000fd5b505050505050505050505050565b60045481565b6000546001600160a01b03165b90565b600a6020526000908152604090205481565b60035481565b336000908152600860205260408120541561142e5750336000908152600860205260409020546113e8565b5060006113e8565b600b6020526000908152604090205481565b600254600160a01b900460ff16156114725760405162461bcd60e51b815260040161045b90611ffc565b3360008061147f83611aaf565b90508015610cc8576001600160a01b0383166000908152600760205260408120905b8281101561157a5760008282815481106114cb57634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160020154600114156115675782828154811061150557634e487b7160e01b600052603260045260246000fd5b9060005260206000209060050201600401544261152291906120d8565b905061152e8186612081565b94504283838154811061155157634e487b7160e01b600052603260045260246000fd5b9060005260206000209060050201600401819055505b81611571816120ef565b925050506114a1565b505060008260035461158c91906120b9565b9050801561161e5760015460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906115c69087908590600401611dde565b602060405180830381600087803b1580156115e057600080fd5b505af11580156115f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116189190611cdb565b5061109b565b60405162461bcd60e51b815260040161045b90611f7c565b61163e611aab565b6001600160a01b031661164f6113db565b6001600160a01b0316146116755760405162461bcd60e51b815260040161045b90611fc7565b6002546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906116a990309085908790600401611d87565b600060405180830381600087803b1580156116c357600080fd5b505af11580156116d7573d6000803e3d6000fd5b505050505050565b60086020526000908152604090205481565b60008181806116ff83611aaf565b905080156117c7576001600160a01b0383166000908152600760205260408120905b828110156117c457600082828154811061174b57634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160020154600114156117b15782828154811061178557634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020160040154426117a291906120d8565b90506117ae8186612081565b94505b816117bb816120ef565b92505050611721565b50505b6000826003546117d791906120b9565b905080156117ea579350610ce592505050565b6000945050505050610ce5565b60065481565b60005b818110156105a95761183783838381811061182b57634e487b7160e01b600052603260045260246000fd5b905060200201356110a1565b80611841816120ef565b915050611800565b611851611aab565b6001600160a01b03166118626113db565b6001600160a01b0316146118885760405162461bcd60e51b815260040161045b90611fc7565b600060035461271061189a91906120b9565b6118a7906228de806120b9565b6006546001546040516370a0823160e01b81529293506000926001600160a01b03909116906370a08231906118e0903090600401611d73565b60206040518083038186803b1580156118f857600080fd5b505afa15801561190c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119309190611d0f565b61193a91906120d8565b90506000828211156119535761195083836120d8565b90505b80156105a95760045460009061196a600284612099565b6119749190612099565b905060005b600554811015611a2b576000818152600b602052604090205415611a19576000818152600b60205260409020546119b090836120b9565b6000828152600960209081526040808320546001600160a01b031683526008909152812080549091906119e4908490612081565b90915550506000818152600b6020526040902054611a0290836120b9565b60066000828254611a139190612081565b90915550505b80611a23816120ef565b915050611979565b5061109b6102a3600284612099565b611a42611aab565b6001600160a01b0316611a536113db565b6001600160a01b031614611a795760405162461bcd60e51b815260040161045b90611fc7565b6001600160a01b038116611a9f5760405162461bcd60e51b815260040161045b90611eca565b611aa881611aca565b50565b3390565b6001600160a01b031660009081526007602052604090205490565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b0381168114610ce557600080fd5b600060208284031215611b42578081fd5b611b4b82611b1a565b9392505050565b60008060008060808587031215611b67578283fd5b611b7085611b1a565b9350611b7e60208601611b1a565b925060408501359150606085013567ffffffffffffffff80821115611ba1578283fd5b818701915087601f830112611bb4578283fd5b813581811115611bc657611bc6612120565b604051601f8201601f19908116603f01168101908382118183101715611bee57611bee612120565b816040528281528a6020848701011115611c06578586fd5b82602086016020830137918201602001949094529598949750929550505050565b60008060408385031215611c39578182fd5b611c4283611b1a565b946020939093013593505050565b60008060208385031215611c62578182fd5b823567ffffffffffffffff80821115611c79578384fd5b818501915085601f830112611c8c578384fd5b813581811115611c9a578485fd5b8660208083028501011115611cad578485fd5b60209290920196919550909350505050565b600060208284031215611cd0578081fd5b8135611b4b81612136565b600060208284031215611cec578081fd5b8151611b4b81612136565b600060208284031215611d08578081fd5b5035919050565b600060208284031215611d20578081fd5b5051919050565b60008060408385031215611d39578182fd5b82359150611d4960208401611b1a565b90509250929050565b60008060408385031215611d64578182fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039384168152919092166020820152604081019190915260806060820181905260009082015260a00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03959095168552602085019390935260408401919091526060830152608082015260a00190565b6020808252825182820181905260009190848201906040850190845b81811015611e665783516001600160a01b031683529284019291840191600101611e41565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611e6657835183529284019291840191600101611e8e565b901515815260200190565b6001600160e01b031991909116815260200190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526018908201527f4572726f723a204e6f205265636f726420466f756e6421210000000000000000604082015260600190565b6020808252818101527f596f752068617665206e6f20626f6e7573206c65667420746f20636c61696d21604082015260600190565b6020808252602b908201527f506c6561736520576169742074696c6c2074686520726577617264204765742060408201526a47656e657261746564212160a81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601d908201527f5374616b696e672069732043757272656e746c79205061757365642121000000604082015260600190565b60208082526025908201527f4f6f70732c206e6f7468696e67206c65667420696e2074686520726577617264604082015264081c1bdbdb60da1b606082015260800190565b90815260200190565b600082198211156120945761209461210a565b500190565b6000826120b457634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156120d3576120d361210a565b500290565b6000828210156120ea576120ea61210a565b500390565b60006000198214156121035761210361210a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114611aa857600080fdfea2646970667358221220ae86e86dbe833836dc04226780af1a045b5c922171e6bf958bc847be7ab35c2e64736f6c63430008010033000000000000000000000000da9d418c4b8ac59a6ec92cdfdd514f75a0f44e18000000000000000000000000a2ae6273dd65f9fa76c3d383ede9c1261e025dac

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

000000000000000000000000da9d418c4b8ac59a6ec92cdfdd514f75a0f44e18000000000000000000000000a2ae6273dd65f9fa76c3d383ede9c1261e025dac

-----Decoded View---------------
Arg [0] : _nftAdr (address): 0xda9d418c4b8ac59a6ec92cdfdd514f75a0f44e18
Arg [1] : _token (address): 0xa2ae6273dd65f9fa76c3d383ede9c1261e025dac

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000da9d418c4b8ac59a6ec92cdfdd514f75a0f44e18
Arg [1] : 000000000000000000000000a2ae6273dd65f9fa76c3d383ede9c1261e025dac


Deployed ByteCode Sourcemap

21688:10072:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31193:143;;;;;;:::i;:::-;;:::i;:::-;;25041:173;;;;;;:::i;:::-;;:::i;6618:207::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31481:85;;;;;;:::i;:::-;;:::i;23476:477::-;;;:::i;24625:408::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;22345:48::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;31572:185::-;;;;;;:::i;:::-;;:::i;22634:73::-;;;;;;:::i;:::-;;:::i;24225:392::-;;;:::i;22229:49::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;21805:25::-;;;:::i;:::-;;;;;;;:::i;21925:23::-;;;:::i;:::-;;;;;;;:::i;30381:681::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2222:103::-;;;:::i;25222:1509::-;;;;;;:::i;:::-;;:::i;27992:1546::-;;;;;;:::i;:::-;;:::i;21888:30::-;;;:::i;1999:87::-;;;:::i;22400:46::-;;;;;;:::i;:::-;;:::i;21843:38::-;;;:::i;23961:256::-;;;:::i;22453:47::-;;;;;;:::i;:::-;;:::i;26743:1056::-;;;:::i;31344:129::-;;;;;;:::i;:::-;;:::i;22285:53::-;;;;;;:::i;:::-;;:::i;29550:823::-;;;;;;:::i;:::-;;:::i;21955:26::-;;;:::i;27807:177::-;;;;;;:::i;:::-;;:::i;22715:753::-;;;:::i;2333:201::-;;;;;;:::i;:::-;;:::i;31193:143::-;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;;;;;;;;;31290:37:::1;::::0;-1:-1:-1;;;31290:37:0;;-1:-1:-1;;;;;31257:21:0;::::1;::::0;::::1;::::0;31279:10:::1;::::0;31257:21;;31290:22:::1;::::0;:37:::1;::::0;31321:4:::1;::::0;31290:37:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31257:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31193:143:::0;:::o;25041:173::-;25108:6;25104:103;25119:20;;;25104:103;;;25170:25;25182:9;;25192:1;25182:12;;;;;-1:-1:-1;;;25182:12:0;;;;;;;;;;;;;;;25170:11;:25::i;:::-;25141:3;;;;:::i;:::-;;;;25104:103;;;;25041:173;;:::o;6618:207::-;-1:-1:-1;;;6618:207:0;;;;;;:::o;31481:85::-;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;31542:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;31542:16:0::1;-1:-1:-1::0;;;;31542:16:0;;::::1;::::0;;;::::1;::::0;;31481:85::o;23476:477::-;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;23526:22:::1;23552:6;;23561:5;23552:14;;;;:::i;:::-;23551:26;::::0;23570:7:::1;23551:26;:::i;:::-;23642:7;::::0;23606::::1;::::0;:32:::1;::::0;-1:-1:-1;;;23606:32:0;;23526:51;;-1:-1:-1;23588:13:0::1;::::0;-1:-1:-1;;;;;23606:7:0;;::::1;::::0;:17:::1;::::0;:32:::1;::::0;23632:4:::1;::::0;23606:32:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23605:44;;;;:::i;:::-;23588:62;;23661:18;23706:14;23698:5;:22;23694:70;;;23738:22;23746:14:::0;23738:5;:22:::1;:::i;:::-;23724:37;;23694:70;23778:14:::0;;23774:172:::1;;23834:14;23847:1;23834:10:::0;:14:::1;:::i;:::-;23864:7;::::0;:39:::1;::::0;-1:-1:-1;;;23864:39:0;;23820:29;;-1:-1:-1;;;;;;23864:7:0::1;::::0;:16:::1;::::0;:39:::1;::::0;23881:10:::1;::::0;23820:29;;23864:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23918:16;23923:10;23918:4;:16::i;24625:408::-:0;24694:16;24723:28;24768:9;24773:4;24768:2;:9;:::i;:::-;24754:24;;;;;;-1:-1:-1;;;24754:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24754:24:0;-1:-1:-1;24723:55:0;-1:-1:-1;24789:6:0;;24824;24829:1;24824:4;:6;:::i;:::-;24815:15;;24810:187;24836:2;24832:1;:6;24810:187;;;24881:1;24864:14;;;:11;:14;;;;;;:18;24860:126;;24933:15;;;;:12;:15;;;;;;24916:14;;-1:-1:-1;;;;;24933:15:0;;;;24916:11;;24928:1;;24916:14;;;;-1:-1:-1;;;24916:14:0;;;;;;;;;-1:-1:-1;;;;;24916:32:0;;;:14;;;;;;;;;;;:32;24967:3;;;;:::i;:::-;;;;24860:126;24840:3;;;;:::i;:::-;;;;24810:187;;;-1:-1:-1;25014:11:0;;24625:408;-1:-1:-1;;;;24625:408:0:o;22345:48::-;;;;;;;;;;;;-1:-1:-1;;;;;22345:48:0;;:::o;31572:185::-;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;31717:7:::1;::::0;:32:::1;::::0;-1:-1:-1;;;31717:32:0;;31656:42:::1;::::0;-1:-1:-1;;;;;31717:7:0::1;::::0;:16:::1;::::0;:32:::1;::::0;31656:42;;31742:6;;31717:32:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;22634:73::-:0;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;22688:6:::1;:14:::0;22634:73::o;24225:392::-;24293:10;24265:13;24281:23;;;:11;:23;;;;;:37;24337:9;24329:54;;;;-1:-1:-1;;;24329:54:0;;;;;;;:::i;:::-;24402:7;;:32;;-1:-1:-1;;;24402:32:0;;24438:5;;-1:-1:-1;;;;;24402:7:0;;:17;;:32;;24428:4;;24402:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;24394:91;;;;-1:-1:-1;;;24394:91:0;;;;;;;:::i;:::-;24508:10;24536:1;24496:23;;;:11;:23;;;;;:41;;;24548:7;:16;;24559:5;;24536:1;24548:16;;24559:5;;24548:16;:::i;:::-;;;;-1:-1:-1;;24575:7:0;;:34;;-1:-1:-1;;;24575:34:0;;-1:-1:-1;;;;;24575:7:0;;;;:16;;:34;;24592:10;;24603:5;;24575:34;;;:::i;22229:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22229:49:0;;;;-1:-1:-1;22229:49:0;;-1:-1:-1;22229:49:0;;;:::o;21805:25::-;;;-1:-1:-1;;;21805:25:0;;;;;:::o;21925:23::-;;;;:::o;30381:681::-;30439:16;30486:4;30468:15;30522:18;30486:4;30522:9;:18::i;:::-;30501:39;;30551:30;30598:13;30584:28;;;;;;-1:-1:-1;;;30584:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30584:28:0;-1:-1:-1;30551:61:0;-1:-1:-1;30628:17:0;;30625:392;;-1:-1:-1;;;;;30687:19:0;;30662:22;30687:19;;;:10;:19;;;;;;30746:184;30756:13;30752:1;:17;30746:184;;;30793:3;30797:1;30793:6;;;;;;-1:-1:-1;;;30793:6:0;;;;;;;;;;;;;;;;;;;:16;;;30813:1;30793:21;30790:103;;;30858:3;30862:1;30858:6;;;;;;-1:-1:-1;;;30858:6:0;;;;;;;;;;;;;;;;;;;:15;;;30839:13;30853:1;30839:16;;;;;;-1:-1:-1;;;30839:16:0;;;;;;;;;;;;;;:34;;;;;30790:103;30911:3;;;;:::i;:::-;;;;30746:184;;;30625:392;;;;;30971:34;;-1:-1:-1;;;30971:34:0;;;;;;;:::i;30625:392::-;31036:13;-1:-1:-1;;;30381:681:0;;;;:::o;2222:103::-;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;2287:30:::1;2314:1;2287:18;:30::i;:::-;2222:103::o:0;25222:1509::-;25285:6;;-1:-1:-1;;;25285:6:0;;;;25284:7;25276:48;;;;-1:-1:-1;;;25276:48:0;;;;;;;:::i;:::-;25374:3;;:58;;-1:-1:-1;;;25374:58:0;;25353:10;;-1:-1:-1;;;;;25374:3:0;;:20;;:58;;25353:10;;25412:4;;25420:8;;25374:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25443:18;25464;25474:7;25464:9;:18::i;:::-;25443:39;-1:-1:-1;25493:12:0;25519:17;;25516:520;;-1:-1:-1;;;;;25581:19:0;;25553:25;25581:19;;;:10;:19;;;;;;25640:385;25650:13;25646:1;:17;25640:385;;;-1:-1:-1;;;;;25687:19:0;;;;;;:10;:19;;;;;:22;;25722:8;;25687:19;25707:1;;25687:22;;;;-1:-1:-1;;;25687:22:0;;;;;;;;;;;;;;;;;;;:31;;;:43;25684:304;;;25777:1;25755:6;25762:1;25755:9;;;;;;-1:-1:-1;;;25755:9:0;;;;;;;;;;;;;;;;;;;:19;;:23;;;;25825:15;25801:6;25808:1;25801:9;;;;;;-1:-1:-1;;;25801:9:0;;;;;;;;;;;;;;;;;;;:21;;:39;;;;25888:15;25863:6;25870:1;25863:9;;;;;;-1:-1:-1;;;25863:9:0;;;;;;;;;;;;;;;;;;;:22;;:40;;;;25936:4;25926:14;;25963:5;;25684:304;26006:3;;;;:::i;:::-;;;;25640:385;;;25516:520;;;26050:7;26046:343;;-1:-1:-1;;;;;26074:19:0;;;;;;;:10;:19;;;;;;;;26117:245;;;;;;;;;;;;;;;;26238:1;26117:245;;;;;;26275:15;26117:245;;;;;;;;;;;;26074:303;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26074:303:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26046:343;26416:1;26401:11;;:16;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;26432:19:0;;;;;;:10;:19;;;;;;26428:296;;26495:4;;;26482:18;;;;:12;:18;;;;;;;;:28;;-1:-1:-1;;;;;;26482:28:0;-1:-1:-1;;;;;26482:28:0;;;;;26537:4;;26525:17;;:11;:17;;;;;:22;;-1:-1:-1;;26482:18:0;26525:22;;-1:-1:-1;;26525:22:0;:::i;:::-;;;;-1:-1:-1;;26584:4:0;;;-1:-1:-1;;;;;26562:19:0;;;;;;:10;:19;;;;;:26;;;26611:1;;26584:4;26603:9;;26611:1;;26603:9;:::i;:::-;;;;-1:-1:-1;26428:296:0;;-1:-1:-1;26428:296:0;;-1:-1:-1;;;;;26687:19:0;;26675:32;26687:19;;;:10;:19;;;;;;;;;26675:32;;:11;:32;;;;;:37;;26711:1;;26675:32;:37;;26711:1;;26675:37;:::i;:::-;;;;-1:-1:-1;;26428:296:0;25222:1509;;;;:::o;27992:1546::-;28057:6;;-1:-1:-1;;;28057:6:0;;;;28056:7;28048:48;;;;-1:-1:-1;;;28048:48:0;;;;;;;:::i;:::-;28125:10;28107:15;28167:18;28125:10;28167:9;:18::i;:::-;28146:39;;28196:22;28221;28235:7;28221:13;:22::i;:::-;28196:47;;28254:6;28271:10;28292:19;28322:168;28332:13;28328:1;:17;28322:168;;;28380:8;28365;28374:1;28365:11;;;;;;-1:-1:-1;;;28365:11:0;;;;;;;;;;;;;;;:23;28362:99;;;28417:4;28409:12;;28440:5;;28362:99;28475:3;;;;:::i;:::-;;;;28322:168;;;28505:5;28502:1019;;;28532:17;;28529:621;;-1:-1:-1;;;;;28598:19:0;;28570:25;28598:19;;;:10;:19;;;;;;28665:470;28675:13;28671:1;:17;28665:470;;;28713:14;28779:8;28757:6;28764:1;28757:9;;;;;;-1:-1:-1;;;28757:9:0;;;;;;;;;;;;;;;;;;;:18;;;:30;28754:336;;;28843:6;28850:1;28843:9;;;;;;-1:-1:-1;;;28843:9:0;;;;;;;;;;;;;;;;;;;:22;;;28825:15;:40;;;;:::i;:::-;28816:49;-1:-1:-1;28892:24:0;28816:49;28892:24;;:::i;:::-;;;28969:15;28943:6;28950:1;28943:9;;;;;;-1:-1:-1;;;28943:9:0;;;;;;;;;;;;;;;;;;;:22;;:41;;;;29033:1;29011:6;29018:1;29011:9;;;;;;-1:-1:-1;;;29011:9:0;;;;;;;;;;;;;;;;;;;:19;;:23;;;;29061:5;;;28754:336;29112:3;;;;:::i;:::-;;;;28665:470;;;;28529:621;;;29193:1;29178:11;;:16;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;29221:19:0;;29209:32;29221:19;;;:10;:19;;;;;;;;;29209:32;;:11;:32;;;;;:37;;29245:1;;29209:32;:37;;29245:1;;29209:37;:::i;:::-;;;;-1:-1:-1;;29290:6:0;;29263:24;;29290:23;;29299:14;;29290:23;:::i;:::-;29328:7;;:42;;-1:-1:-1;;;29328:42:0;;29263:50;;-1:-1:-1;;;;;;29328:7:0;;:16;;:42;;29345:7;;29263:50;;29328:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;29385:3:0;;:49;;-1:-1:-1;;;29385:49:0;;-1:-1:-1;;;;;29385:3:0;;;;:16;;:49;;29410:4;;29416:7;;29425:8;;29385:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28502:1019;27992:1546;;;;;;;:::o;21888:30::-;;;;:::o;1999:87::-;2045:7;2072:6;-1:-1:-1;;;;;2072:6:0;1999:87;;:::o;22400:46::-;;;;;;;;;;;;;:::o;21843:38::-;;;;:::o;23961:256::-;24040:10;24004:7;24028:23;;;:11;:23;;;;;:37;:41;24024:186;;-1:-1:-1;24114:10:0;24102:23;;;;:11;:23;;;;;:37;24095:44;;24024:186;-1:-1:-1;24197:1:0;24190:8;;22453:47;;;;;;;;;;;;;:::o;26743:1056::-;26793:6;;-1:-1:-1;;;26793:6:0;;;;26792:7;26784:48;;;;-1:-1:-1;;;26784:48:0;;;;;;;:::i;:::-;26861:10;26843:15;;26939:18;26861:10;26939:9;:18::i;:::-;26918:39;-1:-1:-1;26971:17:0;;26968:563;;-1:-1:-1;;;;;27033:19:0;;27005:25;27033:19;;;:10;:19;;;;;;27092:353;27102:13;27098:1;:17;27092:353;;;27136:14;27176:6;27183:1;27176:9;;;;;;-1:-1:-1;;;27176:9:0;;;;;;;;;;;;;;;;;;;:19;;;27199:1;27176:24;27173:235;;;27252:6;27259:1;27252:9;;;;;;-1:-1:-1;;;27252:9:0;;;;;;;;;;;;;;;;;;;:22;;;27234:15;:40;;;;:::i;:::-;27225:49;-1:-1:-1;27297:27:0;27225:49;27297:27;;:::i;:::-;;;27373:15;27347:6;27354:1;27347:9;;;;;;-1:-1:-1;;;27347:9:0;;;;;;;;;;;;;;;;;;;:22;;:41;;;;27173:235;27426:3;;;;:::i;:::-;;;;27092:353;;;;26968:563;;27543:22;27577:17;27568:6;;:26;;;;:::i;:::-;27543:51;-1:-1:-1;27608:18:0;;27605:185;;27643:7;;:40;;-1:-1:-1;;;27643:40:0;;-1:-1:-1;;;;;27643:7:0;;;;:16;;:40;;27660:7;;27668:14;;27643:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27605:185;;;27725:53;;-1:-1:-1;;;27725:53:0;;;;;;;:::i;31344:129::-;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;31419:3:::1;::::0;:46:::1;::::0;-1:-1:-1;;;31419:46:0;;-1:-1:-1;;;;;31419:3:0;;::::1;::::0;:16:::1;::::0;:46:::1;::::0;31444:4:::1;::::0;31450:9;;31461:3;;31419:46:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31344:129:::0;;:::o;22285:53::-;;;;;;;;;;;;;:::o;29550:823::-;29606:7;29644:4;29606:7;;29716:18;29644:4;29716:9;:18::i;:::-;29695:39;-1:-1:-1;29748:17:0;;29745:424;;-1:-1:-1;;;;;29810:19:0;;29782:25;29810:19;;;:10;:19;;;;;;29869:289;29879:13;29875:1;:17;29869:289;;;29913:14;29953:6;29960:1;29953:9;;;;;;-1:-1:-1;;;29953:9:0;;;;;;;;;;;;;;;;;;;:19;;;29976:1;29953:24;29950:171;;;30029:6;30036:1;30029:9;;;;;;-1:-1:-1;;;30029:9:0;;;;;;;;;;;;;;;;;;;:22;;;30011:15;:40;;;;:::i;:::-;30002:49;-1:-1:-1;30074:27:0;30002:49;30074:27;;:::i;:::-;;;29950:171;30139:3;;;;:::i;:::-;;;;29869:289;;;;29745:424;;;30181:22;30215:17;30206:6;;:26;;;;:::i;:::-;30181:51;-1:-1:-1;30246:18:0;;30243:121;;30288:14;-1:-1:-1;30281:21:0;;-1:-1:-1;;;30281:21:0;30243:121;30351:1;30344:8;;;;;;;;21955:26;;;;:::o;27807:177::-;27876:6;27872:105;27887:20;;;27872:105;;;27938:27;27952:9;;27962:1;27952:12;;;;;-1:-1:-1;;;27952:12:0;;;;;;;;;;;;;;;27938:13;:27::i;:::-;27909:3;;;;:::i;:::-;;;;27872:105;;22715:753;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;22765:22:::1;22792:6;;22801:5;22792:14;;;;:::i;:::-;22791:26;::::0;22810:7:::1;22791:26;:::i;:::-;22883:7;::::0;22847::::1;::::0;:32:::1;::::0;-1:-1:-1;;;22847:32:0;;22765:53;;-1:-1:-1;22829:13:0::1;::::0;-1:-1:-1;;;;;22847:7:0;;::::1;::::0;:17:::1;::::0;:32:::1;::::0;22873:4:::1;::::0;22847:32:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22846:44;;;;:::i;:::-;22829:62;;22902:18;22947:14;22939:5;:22;22935:70;;;22979:22;22987:14:::0;22979:5;:22:::1;:::i;:::-;22965:37;;22935:70;23019:14:::0;;23015:446:::1;;23097:11;::::0;23061:14:::1;::::0;23079::::1;23092:1;23079:10:::0;:14:::1;:::i;:::-;23078:30;;;;:::i;:::-;23061:47;;23127:6;23123:292;23143:4;;23139:1;:8;23123:292;;;23207:1;23190:14:::0;;;:11:::1;:14;::::0;;;;;:18;23186:214:::1;;23306:14;::::0;;;:11:::1;:14;::::0;;;;;23297:23:::1;::::0;:6;:23:::1;:::i;:::-;23250:28;23262:15:::0;;;:12:::1;:15;::::0;;;;;;;;-1:-1:-1;;;;;23262:15:0::1;23250:28:::0;;:11:::1;:28:::0;;;;;:71;;:28;;;:71:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;;23365:14:0::1;::::0;;;:11:::1;:14;::::0;;;;;23356:23:::1;::::0;:6;:23:::1;:::i;:::-;23344:7;;:36;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;23186:214:0::1;23149:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23123:292;;;-1:-1:-1::0;23429:20:0::1;23434:14;23447:1;23434:10:::0;:14:::1;:::i;2333:201::-:0;2145:12;:10;:12::i;:::-;-1:-1:-1;;;;;2134:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;2134:23:0;;2126:68;;;;-1:-1:-1;;;2126:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2422:22:0;::::1;2414:73;;;;-1:-1:-1::0;;;2414:73:0::1;;;;;;;:::i;:::-;2498:28;2517:8;2498:18;:28::i;:::-;2333:201:::0;:::o;1545:98::-;1625:10;1545:98;:::o;31074:111::-;-1:-1:-1;;;;;31154:16:0;31130:4;31154:16;;;:10;:16;;;;;:23;;31074:111::o;2542:191::-;2616:16;2635:6;;-1:-1:-1;;;;;2652:17:0;;;-1:-1:-1;;;;;;2652:17:0;;;;;;2685:40;;2635:6;;;;;;;2685:40;;2616:16;2685:40;2542:191;;:::o;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:198;;306:2;294:9;285:7;281:23;277:32;274:2;;;327:6;319;312:22;274:2;355:31;376:9;355:31;:::i;:::-;345:41;264:128;-1:-1:-1;;;264:128:1:o;397:1187::-;;;;;569:3;557:9;548:7;544:23;540:33;537:2;;;591:6;583;576:22;537:2;619:31;640:9;619:31;:::i;:::-;609:41;;669:40;705:2;694:9;690:18;669:40;:::i;:::-;659:50;;756:2;745:9;741:18;728:32;718:42;;811:2;800:9;796:18;783:32;834:18;875:2;867:6;864:14;861:2;;;896:6;888;881:22;861:2;939:6;928:9;924:22;914:32;;984:7;977:4;973:2;969:13;965:27;955:2;;1011:6;1003;996:22;955:2;1052;1039:16;1074:2;1070;1067:10;1064:2;;;1080:18;;:::i;:::-;1155:2;1149:9;1123:2;1209:13;;-1:-1:-1;;1205:22:1;;;1229:2;1201:31;1197:40;1185:53;;;1253:18;;;1273:22;;;1250:46;1247:2;;;1299:18;;:::i;:::-;1339:10;1335:2;1328:22;1374:2;1366:6;1359:18;1414:7;1409:2;1404;1400;1396:11;1392:20;1389:33;1386:2;;;1440:6;1432;1425:22;1386:2;1501;1496;1492;1488:11;1483:2;1475:6;1471:15;1458:46;1524:15;;;1541:2;1520:24;1513:40;;;;527:1057;;;;-1:-1:-1;527:1057:1;;-1:-1:-1;;;;527:1057:1:o;1589:266::-;;;1718:2;1706:9;1697:7;1693:23;1689:32;1686:2;;;1739:6;1731;1724:22;1686:2;1767:31;1788:9;1767:31;:::i;:::-;1757:41;1845:2;1830:18;;;;1817:32;;-1:-1:-1;;;1676:179:1:o;1860:666::-;;;2007:2;1995:9;1986:7;1982:23;1978:32;1975:2;;;2028:6;2020;2013:22;1975:2;2073:9;2060:23;2102:18;2143:2;2135:6;2132:14;2129:2;;;2164:6;2156;2149:22;2129:2;2207:6;2196:9;2192:22;2182:32;;2252:7;2245:4;2241:2;2237:13;2233:27;2223:2;;2279:6;2271;2264:22;2223:2;2324;2311:16;2350:2;2342:6;2339:14;2336:2;;;2371:6;2363;2356:22;2336:2;2430:7;2425:2;2419;2411:6;2407:15;2403:2;2399:24;2395:33;2392:46;2389:2;;;2456:6;2448;2441:22;2389:2;2492;2484:11;;;;;2514:6;;-1:-1:-1;1965:561:1;;-1:-1:-1;;;;1965:561:1:o;2531:253::-;;2640:2;2628:9;2619:7;2615:23;2611:32;2608:2;;;2661:6;2653;2646:22;2608:2;2705:9;2692:23;2724:30;2748:5;2724:30;:::i;2789:257::-;;2909:2;2897:9;2888:7;2884:23;2880:32;2877:2;;;2930:6;2922;2915:22;2877:2;2967:9;2961:16;2986:30;3010:5;2986:30;:::i;3051:190::-;;3163:2;3151:9;3142:7;3138:23;3134:32;3131:2;;;3184:6;3176;3169:22;3131:2;-1:-1:-1;3212:23:1;;3121:120;-1:-1:-1;3121:120:1:o;3246:194::-;;3369:2;3357:9;3348:7;3344:23;3340:32;3337:2;;;3390:6;3382;3375:22;3337:2;-1:-1:-1;3418:16:1;;3327:113;-1:-1:-1;3327:113:1:o;3445:266::-;;;3574:2;3562:9;3553:7;3549:23;3545:32;3542:2;;;3595:6;3587;3580:22;3542:2;3636:9;3623:23;3613:33;;3665:40;3701:2;3690:9;3686:18;3665:40;:::i;:::-;3655:50;;3532:179;;;;;:::o;3716:258::-;;;3845:2;3833:9;3824:7;3820:23;3816:32;3813:2;;;3866:6;3858;3851:22;3813:2;-1:-1:-1;;3894:23:1;;;3964:2;3949:18;;;3936:32;;-1:-1:-1;3803:171:1:o;3979:203::-;-1:-1:-1;;;;;4143:32:1;;;;4125:51;;4113:2;4098:18;;4080:102::o;4187:375::-;-1:-1:-1;;;;;4445:15:1;;;4427:34;;4497:15;;;;4492:2;4477:18;;4470:43;4544:2;4529:18;;4522:34;;;;4377:2;4362:18;;4344:218::o;4567:558::-;-1:-1:-1;;;;;4890:15:1;;;4872:34;;4942:15;;;;4937:2;4922:18;;4915:43;4989:2;4974:18;;4967:34;;;;5037:3;5032:2;5017:18;;5010:31;;;4567:558;5057:19;;;5050:33;4852:3;5100:19;;4824:301::o;5130:274::-;-1:-1:-1;;;;;5322:32:1;;;;5304:51;;5386:2;5371:18;;5364:34;5292:2;5277:18;;5259:145::o;5409:489::-;-1:-1:-1;;;;;5686:32:1;;;;5668:51;;5750:2;5735:18;;5728:34;;;;5793:2;5778:18;;5771:34;;;;5836:2;5821:18;;5814:34;5879:3;5864:19;;5857:35;5655:3;5640:19;;5622:276::o;5903:661::-;6074:2;6126:21;;;6196:13;;6099:18;;;6218:22;;;5903:661;;6074:2;6297:15;;;;6271:2;6256:18;;;5903:661;6343:195;6357:6;6354:1;6351:13;6343:195;;;6422:13;;-1:-1:-1;;;;;6418:39:1;6406:52;;6513:15;;;;6478:12;;;;6454:1;6372:9;6343:195;;;-1:-1:-1;6555:3:1;;6054:510;-1:-1:-1;;;;;;6054:510:1:o;6569:635::-;6740:2;6792:21;;;6862:13;;6765:18;;;6884:22;;;6569:635;;6740:2;6963:15;;;;6937:2;6922:18;;;6569:635;7009:169;7023:6;7020:1;7017:13;7009:169;;;7084:13;;7072:26;;7153:15;;;;7118:12;;;;7045:1;7038:9;7009:169;;7209:187;7374:14;;7367:22;7349:41;;7337:2;7322:18;;7304:92::o;7401:202::-;-1:-1:-1;;;;;;7563:33:1;;;;7545:52;;7533:2;7518:18;;7500:103::o;7608:402::-;7810:2;7792:21;;;7849:2;7829:18;;;7822:30;7888:34;7883:2;7868:18;;7861:62;-1:-1:-1;;;7954:2:1;7939:18;;7932:36;8000:3;7985:19;;7782:228::o;8015:348::-;8217:2;8199:21;;;8256:2;8236:18;;;8229:30;8295:26;8290:2;8275:18;;8268:54;8354:2;8339:18;;8189:174::o;8368:356::-;8570:2;8552:21;;;8589:18;;;8582:30;8648:34;8643:2;8628:18;;8621:62;8715:2;8700:18;;8542:182::o;8729:407::-;8931:2;8913:21;;;8970:2;8950:18;;;8943:30;9009:34;9004:2;8989:18;;8982:62;-1:-1:-1;;;9075:2:1;9060:18;;9053:41;9126:3;9111:19;;8903:233::o;9141:356::-;9343:2;9325:21;;;9362:18;;;9355:30;9421:34;9416:2;9401:18;;9394:62;9488:2;9473:18;;9315:182::o;9502:353::-;9704:2;9686:21;;;9743:2;9723:18;;;9716:30;9782:31;9777:2;9762:18;;9755:59;9846:2;9831:18;;9676:179::o;9860:401::-;10062:2;10044:21;;;10101:2;10081:18;;;10074:30;10140:34;10135:2;10120:18;;10113:62;-1:-1:-1;;;10206:2:1;10191:18;;10184:35;10251:3;10236:19;;10034:227::o;10266:177::-;10412:25;;;10400:2;10385:18;;10367:76::o;10448:128::-;;10519:1;10515:6;10512:1;10509:13;10506:2;;;10525:18;;:::i;:::-;-1:-1:-1;10561:9:1;;10496:80::o;10581:217::-;;10647:1;10637:2;;-1:-1:-1;;;10672:31:1;;10726:4;10723:1;10716:15;10754:4;10679:1;10744:15;10637:2;-1:-1:-1;10783:9:1;;10627:171::o;10803:168::-;;10909:1;10905;10901:6;10897:14;10894:1;10891:21;10886:1;10879:9;10872:17;10868:45;10865:2;;;10916:18;;:::i;:::-;-1:-1:-1;10956:9:1;;10855:116::o;10976:125::-;;11044:1;11041;11038:8;11035:2;;;11049:18;;:::i;:::-;-1:-1:-1;11086:9:1;;11025:76::o;11106:135::-;;-1:-1:-1;;11166:17:1;;11163:2;;;11186:18;;:::i;:::-;-1:-1:-1;11233:1:1;11222:13;;11153:88::o;11246:127::-;11307:10;11302:3;11298:20;11295:1;11288:31;11338:4;11335:1;11328:15;11362:4;11359:1;11352:15;11378:127;11439:10;11434:3;11430:20;11427:1;11420:31;11470:4;11467:1;11460:15;11494:4;11491:1;11484:15;11510:120;11598:5;11591:13;11584:21;11577:5;11574:32;11564:2;;11620:1;11617;11610:12

Swarm Source

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