Contract 0xe4f3c9b9058D4B88f3c551c64e26E99A25D63996 1

 

Contract Overview

Balance:
0 Ether

EtherValue:
$0.00

Token:
 
Txn Hash
Method
Block
From
To
Value
0xc9497d3575b335a539609699176e0896a6d668b4e69b54f176ecd9220394be93Add Tokens To Re...108596662020-09-14 10:51:00747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0205495250
0x5f329daaedb6501986499e6a1f5dba24eb089fde477344d73712b364ad7b1fd0Add Tokens To Re...108596652020-09-14 10:50:50747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0936675250
0x69411b010efb86e384b939b7682223f191c54a3c3f56eeb99cfc64df59056dc9Add Tokens To Re...108596632020-09-14 10:50:20747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937095250
0x433e2db9033ab2ad9121ae180bdf0d3706b62dc308de68b80c4caadcea4ffe11Add Tokens To Re...108596602020-09-14 10:50:00747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937095250
0x3cc0f3030e24bb7482ef179f4a853a90ab075651e6001663712203464720117fAdd Tokens To Re...108596582020-09-14 10:49:32747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937155250
0xb95144424ad09dbfa3ee5126e6765acecd6b659f0d0ffda2b2dc4198a24ec13dAdd Tokens To Re...108596572020-09-14 10:49:31747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937155250
0xdf78759b7518cf77b9af9a7cd79f9b508d8d391ab1323e1d99334142ede1a176Add Tokens To Re...108596552020-09-14 10:48:52747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937155250
0x73b7c1f06f4b664c4b10520ca2cedb93c6ffa8807296ac8574f7d20c5ef1677aAdd Tokens To Re...108596532020-09-14 10:48:24747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937155250
0x20a5c2125e158f860afa98e3f3baac1bac2a27d76ef33fc9a5da6ee24ca8afaeAdd Tokens To Re...108596482020-09-14 10:46:39747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937095250
0x681e8fa490d45da22c163a76db7d14e28c43a4304384ddf9b84fb27647969099Add Tokens To Re...108596432020-09-14 10:44:06747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937155250
0xc1d45a1051c0d6c6f2138cf19bfbf75171a9f6b994c84e32f8dc5baa40973a1fAdd Tokens To Re...108596422020-09-14 10:43:55747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937095250
0x16bab6013934d16c4f066a291f8ef923524f1053a20169ca77bb85a8da48fb13Add Tokens To Re...108596412020-09-14 10:43:38747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937095250
0x8331f2b408f1058de1cf8fb52b6bb515aea55eba9f8852c130d4aff4b0712443Add Tokens To Re...108596392020-09-14 10:43:17747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937155250
0x979c5f314f8c378bdb9f24a180e538cd9445b63950e82b8a0fd07d4d7712b2f6Add Tokens To Re...108596382020-09-14 10:43:04747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937155250
0x91642edd776d7b88d32188042e9951a3164329c5cde4982ce4ce6fd30e79b652Add Tokens To Re...108596372020-09-14 10:42:47747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937095250
0xa68f156c682a8826423d3b5cd03914552421c717cf9c8eef4ddbdb180fa12712Add Tokens To Re...108596352020-09-14 10:42:29747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937155250
0x70bddc8f2cab53f38f983c501f829fb652ae68f81f47f5ebdf37f7e7bc165c96Add Tokens To Re...108596342020-09-14 10:42:28747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937155250
0xfbdaf3d47e3d8b417df34b02717b59a98ab2a5e6f1a4f014adb73a6f2ce1fdf7Add Tokens To Re...108596302020-09-14 10:41:44747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937155250
0x9beb0e1957c8a7b6f19bbb801e4b1b853b22e9c36ec9e4658aef377ab4c1e387Add Tokens To Re...108596272020-09-14 10:41:19747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937155250
0x89a1e8160d7feace0a138d0e42797ae6903d9f0485038d3740f4574fc5100ca8Add Tokens To Re...108596262020-09-14 10:41:03747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937155250
0x5f6dec2f4d69cc971fc7151b05013cc456cfc980ba0198416f4eb15f176cbc3eAdd Tokens To Re...108596252020-09-14 10:40:46747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937155250
0x4d8de77003a7dc759646de43c8bbd0168b4d7cf17ca5e25fa00296c79f338f89Add Tokens To Re...108596222020-09-14 10:40:36747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0937155250
0x3e59aebb49e285c974ba1b5b4ee981ea281f609f6f70fba5313bce7523a12488Add Tokens To Re...108596162020-09-14 10:38:13747 days 23 hrs agoAnimoca: Deployer IN  0xe4f3c9b9058d4b88f3c551c64e26e99a25d639960 Ether0.0974655250
0xc2b5e8bc487762b8dfea9155da94954ee7ba1e9008ca92688a25353519abb95c0x60806040108595832020-09-14 10:28:56747 days 23 hrs agoAnimoca: Deployer IN  Create: NFTRepairCentre0 Ether0.43139425250
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NFTRepairCentre

Compiler Version
v0.6.8+commit.0bbfe453

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-09-14
*/

// Sources flattened with buidler v1.4.3 https://buidler.dev

// File @openzeppelin/contracts/GSN/[email protected]

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.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 GSN 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 payable) {
        return msg.sender;
    }

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


// File @openzeppelin/contracts/access/[email protected]

pragma solidity ^0.6.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * 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.
 */
contract Ownable is Context {
    address private _owner;

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

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

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


// File @openzeppelin/contracts/utils/[email protected]

pragma solidity ^0.6.0;


/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor () internal {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!_paused, "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(_paused, "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}


// File @openzeppelin/contracts/math/[email protected]

pragma solidity ^0.6.0;

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

        return c;
    }

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

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

        return c;
    }

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

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}


// File @openzeppelin/contracts/introspection/[email protected]

pragma solidity ^0.6.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}


// File @openzeppelin/contracts/introspection/[email protected]

pragma solidity ^0.6.0;


/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts may inherit from this and call {_registerInterface} to declare
 * their support of an interface.
 */
contract ERC165 is IERC165 {
    /*
     * bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7
     */
    bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;

    /**
     * @dev Mapping of interface ids to whether or not it's supported.
     */
    mapping(bytes4 => bool) private _supportedInterfaces;

    constructor () internal {
        // Derived contracts need only register support for their own interfaces,
        // we register support for ERC165 itself here
        _registerInterface(_INTERFACE_ID_ERC165);
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     *
     * Time complexity O(1), guaranteed to always use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) public view override returns (bool) {
        return _supportedInterfaces[interfaceId];
    }

    /**
     * @dev Registers the contract as an implementer of the interface defined by
     * `interfaceId`. Support of the actual ERC165 interface is automatic and
     * registering its interface id is not required.
     *
     * See {IERC165-supportsInterface}.
     *
     * Requirements:
     *
     * - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`).
     */
    function _registerInterface(bytes4 interfaceId) internal virtual {
        require(interfaceId != 0xffffffff, "ERC165: invalid interface id");
        _supportedInterfaces[interfaceId] = true;
    }
}


// File @animoca/ethereum-contracts-assets_inventory/contracts/token/ERC1155/[email protected]

pragma solidity 0.6.8;

/**
 * @title ERC-1155 Multi Token Standard, token receiver
 * @dev See https://eips.ethereum.org/EIPS/eip-1155
 * Interface for any contract that wants to support transfers from ERC1155 asset contracts.
 * Note: The ERC-165 identifier for this interface is 0x4e2312e0.
 */
interface IERC1155TokenReceiver {

    /**
     * @notice Handle the receipt of a single ERC1155 token type.
     * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated.
     * This function MUST return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` (i.e. 0xf23a6e61) if it accepts the transfer.
     * This function MUST revert if it rejects the transfer.
     * Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.
     * @param operator  The address which initiated the transfer (i.e. msg.sender)
     * @param from      The address which previously owned the token
     * @param id        The ID of the token being transferred
     * @param value     The amount of tokens being transferred
     * @param data      Additional data with no specified format
     * @return bytes4   `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
    */
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external returns (bytes4);

    /**
     * @notice Handle the receipt of multiple ERC1155 token types.
     * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated.
     * This function MUST return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` (i.e. 0xbc197c81) if it accepts the transfer(s).
     * This function MUST revert if it rejects the transfer(s).
     * Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.
     * @param operator  The address which initiated the batch transfer (i.e. msg.sender)
     * @param from      The address which previously owned the token
     * @param ids       An array containing ids of each token being transferred (order and length must match _values array)
     * @param values    An array containing amounts of each token being transferred (order and length must match _ids array)
     * @param data      Additional data with no specified format
     * @return          `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
    */
    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external returns (bytes4);
}


// File @animoca/ethereum-contracts-assets_inventory/contracts/token/ERC1155/[email protected]

pragma solidity 0.6.8;



abstract contract ERC1155TokenReceiver is IERC1155TokenReceiver, ERC165 {

    // bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))
    bytes4 internal constant _ERC1155_RECEIVED = 0xf23a6e61;

    // bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))
    bytes4 internal constant _ERC1155_BATCH_RECEIVED = 0xbc197c81;

    bytes4 internal constant _ERC1155_REJECTED = 0xffffffff;

    constructor() internal {
        _registerInterface(type(IERC1155TokenReceiver).interfaceId);
    }
}


// File @animoca/f1dt-ethereum-contracts/contracts/token/ERC1155721/[email protected]

pragma solidity ^0.6.8;





/**
 * @title NFTRepairCentre
 * This contract is used to manage F1 Delta Time defective tokens. Defective tokens are NFTs which were created with an incorrect id.
 * As the core metadata attributes are encoded in the token id, tokens with an incorrect id may not be usable some in ecosystem contracts.
 *
 * This contract has two missions:
 * - Publish a public list of defective tokens (through `repairList`) that ecosystem contracts relying on core metadata attributes can consult as a blacklist,
 * - Let the owners of the defective tokens swap them for replacement tokens. Defective tokens are sent to the `tokensGraveyard` when replaced.
 *
 * The owners of defective tokens who want to use them in these ecosystem contracts will have to repair them first,
 * but will be compensated for their trouble with `revvCompensation` REVVs for each repaired token.
 */
contract NFTRepairCentre is ERC1155TokenReceiver, Ownable, Pausable {
    using SafeMath for uint256;

    event TokensToRepairAdded(uint256[] defectiveTokens, uint256[] replacementTokens);
    event RepairedSingle(uint256 defectiveToken, uint256 replacementToken);
    event RepairedBatch(uint256[] defectiveTokens, uint256[] replacementTokens);

    IDeltaTimeInventory inventoryContract;
    address tokensGraveyard;
    IREVV revvContract;
    uint256 revvCompensation;

    mapping(uint256 => uint256) repairList;

    /**
     * Constructor.
     * @dev Reverts if one of the argument addresses is zero.
     * @param inventoryContract_ the address of the DeltaTimeInventoryContract.
     * @param tokensGraveyard_ the address of the tokens graveyard.
     * @param revvContract_ the address of the REVV contract.
     * @param revvCompensation_ the amount of REVV to compensate for each token replacement.
     */
    constructor(
        address inventoryContract_,
        address tokensGraveyard_,
        address revvContract_,
        uint256 revvCompensation_
    ) public {
        require(
            inventoryContract_ != address(0) && tokensGraveyard_ != address(0) && revvContract_ != address(0),
            "RepairCentre: zero address"
        );
        inventoryContract = IDeltaTimeInventory(inventoryContract_);
        tokensGraveyard = tokensGraveyard_;
        revvContract = IREVV(revvContract_);
        revvCompensation = revvCompensation_;
    }

    /*                                             Public Admin Functions                                             */

    /**
     * @notice Adds tokens to the repair list and transfers the necessary amount of REVV for the compensations to the contract.
     * @dev Reverts if not called by the owner.
     * @dev Reverts if `defectiveTokens` and `replacementTokens` have inconsistent lengths.
     * @dev Reverts if the REVV transfer fails.
     * @dev Emits a TokensToRepairAdded event.
     * @param defectiveTokens the list of defective tokens.
     * @param replacementTokens the list of replacement tokens.
     */
    function addTokensToRepair(uint256[] calldata defectiveTokens, uint256[] calldata replacementTokens)
        external
        onlyOwner
    {
        uint256 length = defectiveTokens.length;
        require(length != 0 && length == replacementTokens.length, "RepairCentre: wrong lengths");
        for (uint256 i = 0; i < length; ++i) {
            repairList[defectiveTokens[i]] = replacementTokens[i];
        }
        revvContract.transferFrom(msg.sender, address(this), revvCompensation.mul(length));
        emit TokensToRepairAdded(defectiveTokens, replacementTokens);
    }

    /**
     * Removes this contract as minter for the inventory contract
     * @dev Reverts if the sender is not the contract owner.
     */
    function renounceMinter() external onlyOwner {
        inventoryContract.renounceMinter();
    }

    /**
     * Pauses the repair operations.
     * @dev Reverts if the sender is not the contract owner.
     * @dev Reverts if the contract is paused already.
     */
    function pause() external onlyOwner {
        _pause();
    }

    /**
     * Unpauses the repair operations.
     * @dev Reverts if the sender is not the contract owner.
     * @dev Reverts if the contract is not paused.
     */
    function unpause() external onlyOwner {
        _unpause();
    }

    /*                                             ERC1155TokenReceiver                                             */

    /**
     * @notice ERC1155 single transfer receiver which repairs a single token and removes it from the repair list.
     * @dev This contract must have been given a minter role for the inventory prior to caslling this function.
     * @dev Reverts if the transfer was not operated through `inventoryContract`.
     * @dev Reverts if `id` is not in the repair list.
     * @dev Reverts if the defective token transfer to the graveyard fails.
     * @dev Reverts if the replacement token minting to the owner fails.
     * @dev Reverts if the REVV compensation transfer fails.
     * @dev Emits an ERC1155 TransferSingle event for the defective token transfer to the graveyard.
     * @dev Emits an ERC1155 TransferSingle event for the replacement token minting to the owner.
     * @dev Emits an ERC20 Transfer event for the REVV compensation transfer.
     * @dev Emits a RepairedSingle event.
     * @param /operator the address which initiated the transfer (i.e. msg.sender).
     * @param from the address which previously owned the token.
     * @param defectiveToken the id of the token to repair.
     * @param /value the amount of tokens being transferred.
     * @param /data additional data with no specified format.
     * @return bytes4 `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
     */
    function onERC1155Received(
        address, /*operator*/
        address from,
        uint256 defectiveToken,
        uint256, /*value*/
        bytes calldata /*data*/
    ) external virtual override whenNotPaused returns (bytes4) {
        require(msg.sender == address(inventoryContract), "RepairCentre: wrong inventory");

        uint256 replacementToken = repairList[defectiveToken];
        require(replacementToken != 0, "RepairCentre: token not defective");
        delete repairList[defectiveToken];

        inventoryContract.safeTransferFrom(address(this), tokensGraveyard, defectiveToken, 1, bytes(""));

        try inventoryContract.mintNonFungible(from, replacementToken, bytes32(""), true)  {} catch {
            inventoryContract.mintNonFungible(from, replacementToken, bytes32(""), false);
        }
        revvContract.transfer(from, revvCompensation);

        emit RepairedSingle(defectiveToken, replacementToken);

        return _ERC1155_RECEIVED;
    }

    /**
     * @notice ERC1155 batch transfer receiver which repairs a batch of tokens and removes them from the repair list.
     * @dev This contract must have been given a minter role for the inventory prior to caslling this function.
     * @dev Reverts if `ids` is an empty array.
     * @dev Reverts if the transfer was not operated through `inventoryContract`.
     * @dev Reverts if `ids` contains an id not in the repair list.
     * @dev Reverts if the defective tokens transfer to the graveyard fails.
     * @dev Reverts if the replacement tokens minting to the owner fails.
     * @dev Reverts if the REVV compensation transfer fails.
     * @dev Emits an ERC1155 TransferBatch event for the defective tokens transfer to the graveyard.
     * @dev Emits an ERC1155 TransferBatch event for the replacement tokens minting to the owner.
     * @dev Emits an ERC20 Transfer event for the REVV compensation transfer.
     * @dev Emits a RepairedBatch event.
     * @param /operator the address which initiated the batch transfer (i.e. msg.sender).
     * @param from the address which previously owned the token.
     * @param defectiveTokens an array containing the ids of the defective tokens to repair.
     * @param values an array containing amounts of each token being transferred (order and length must match _ids array).
     * @param /data additional data with no specified format.
     * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
     */
    function onERC1155BatchReceived(
        address, /*operator*/
        address from,
        uint256[] calldata defectiveTokens,
        uint256[] calldata values,
        bytes calldata /*data*/
    ) external virtual override whenNotPaused returns (bytes4) {
        require(msg.sender == address(inventoryContract), "RepairCentre: wrong inventory");

        uint256 length = defectiveTokens.length;
        require(length != 0, "RepairCentre: empty array");

        address[] memory recipients = new address[](length);
        uint256[] memory replacementTokens = new uint256[](length);
        bytes32[] memory uris = new bytes32[](length);
        for (uint256 i = 0; i < length; ++i) {
            uint256 defectiveToken = defectiveTokens[i];
            uint256 replacementToken = repairList[defectiveToken];
            require(replacementToken != 0, "RepairCentre: token not defective");
            delete repairList[defectiveToken];
            recipients[i] = from;
            replacementTokens[i] = replacementToken;
        }

        inventoryContract.safeBatchTransferFrom(address(this), tokensGraveyard, defectiveTokens, values, bytes(""));

        try inventoryContract.batchMint(recipients, replacementTokens, uris, values, true)  {} catch {
            inventoryContract.batchMint(recipients, replacementTokens, uris, values, false);
        }

        revvContract.transfer(from, revvCompensation.mul(length));

        emit RepairedBatch(defectiveTokens, replacementTokens);

        return _ERC1155_BATCH_RECEIVED;
    }

    /*                                             Other Public Functions                                             */

    /**
     * @notice Verifies whether a list of tokens contains a defective token.
     * This function can be used by contracts having logic based on NFTs core attributes, in which case the repair list is a blacklist.
     * @param tokens an array containing the token ids to verify.
     * @return true if the array contains a defective token, false otherwise.
     */
    function containsDefectiveToken(uint256[] calldata tokens) external view returns(bool) {
        for (uint256 i = 0; i < tokens.length; ++i) {
            if (repairList[tokens[i]] != 0) {
                return true;
            }
        } 
        return false;
    }
}

interface IDeltaTimeInventory {
    /**
     * @notice Transfers `value` amount of an `id` from  `from` to `to`  (with safety call).
     * @dev Caller must be approved to manage the tokens being transferred out of the `from` account (see "Approval" section of the standard).
     * MUST revert if `to` is the zero address.
     * MUST revert if balance of holder for token `id` is lower than the `value` sent.
     * MUST revert on any other error.
     * MUST emit the `TransferSingle` event to reflect the balance change (see "Safe Transfer Rules" section of the standard).
     * After the above conditions are met, this function MUST check if `to` is a smart contract (e.g. code size > 0). If so, it MUST call `onERC1155Received` on `to` and act appropriately (see "Safe Transfer Rules" section of the standard).
     * @param from    Source address
     * @param to      Target address
     * @param id      ID of the token type
     * @param value   Transfer amount
     * @param data    Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `to`
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external;

    /**
     * @notice Transfers `values` amount(s) of `ids` from the `from` address to the `to` address specified (with safety call).
     * @dev Caller must be approved to manage the tokens being transferred out of the `from` account (see "Approval" section of the standard).
     * MUST revert if `to` is the zero address.
     * MUST revert if length of `ids` is not the same as length of `values`.
     * MUST revert if any of the balance(s) of the holder(s) for token(s) in `ids` is lower than the respective amount(s) in `values` sent to the recipient.
     * MUST revert on any other error.
     * MUST emit `TransferSingle` or `TransferBatch` event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard).
     * Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc).
     * After the above conditions for the transfer(s) in the batch are met, this function MUST check if `to` is a smart contract (e.g. code size > 0). If so, it MUST call the relevant `ERC1155TokenReceiver` hook(s) on `to` and act appropriately (see "Safe Transfer Rules" section of the standard).
     * @param from    Source address
     * @param to      Target address
     * @param ids     IDs of each token type (order and length must match _values array)
     * @param values  Transfer amounts per token type (order and length must match _ids array)
     * @param data    Additional data with no specified format, MUST be sent unaltered in call to the `ERC1155TokenReceiver` hook(s) on `to`
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external;

    /**
     * @dev Public function to mint a batch of new tokens
     * Reverts if some the given token IDs already exist
     * @param to address[] List of addresses that will own the minted tokens
     * @param ids uint256[] List of ids of the tokens to be minted
     * @param uris bytes32[] Concatenated metadata URIs of nfts to be minted
     * @param values uint256[] List of quantities of ft to be minted
     */
    function batchMint(
        address[] calldata to,
        uint256[] calldata ids,
        bytes32[] calldata uris,
        uint256[] calldata values,
        bool safe
    ) external;

    /**
     * @dev Public function to mint one non fungible token id
     * Reverts if the given token ID is not non fungible token id
     * @param to address recipient that will own the minted tokens
     * @param tokenId uint256 ID of the token to be minted
     * @param byteUri bytes32 Concatenated metadata URI of nft to be minted
     */
    function mintNonFungible(
        address to,
        uint256 tokenId,
        bytes32 byteUri,
        bool safe
    ) external;

    /**
     * Removes the minter role for the message sender
     */
    function renounceMinter() external;
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"inventoryContract_","type":"address"},{"internalType":"address","name":"tokensGraveyard_","type":"address"},{"internalType":"address","name":"revvContract_","type":"address"},{"internalType":"uint256","name":"revvCompensation_","type":"uint256"}],"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"defectiveTokens","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"replacementTokens","type":"uint256[]"}],"name":"RepairedBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"defectiveToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"replacementToken","type":"uint256"}],"name":"RepairedSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"defectiveTokens","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"replacementTokens","type":"uint256[]"}],"name":"TokensToRepairAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"uint256[]","name":"defectiveTokens","type":"uint256[]"},{"internalType":"uint256[]","name":"replacementTokens","type":"uint256[]"}],"name":"addTokensToRepair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"containsDefectiveToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"defectiveTokens","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"defectiveToken","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","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":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162001dd038038062001dd0833981810160405260808110156200003757600080fd5b5080516020820151604083015160609093015191929091620000696301ffc9a760e01b6001600160e01b03620001c216565b62000084630271189760e51b6001600160e01b03620001c216565b6000620000996001600160e01b036200024716565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001805460ff60a01b191690556001600160a01b038416158015906200011557506001600160a01b03831615155b80156200012a57506001600160a01b03821615155b6200017c576040805162461bcd60e51b815260206004820152601a60248201527f52657061697243656e7472653a207a65726f2061646472657373000000000000604482015290519081900360640190fd5b600280546001600160a01b03199081166001600160a01b03968716179091556003805482169486169490941790935560048054909316919093161790556005556200024b565b6001600160e01b0319808216141562000222576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b3390565b611b75806200025b6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638456cb5911610081578063bc197c811161005b578063bc197c81146102ac578063f23a6e611461040e578063f2fde38b146104a3576100d4565b80638456cb59146102785780638da5cb5b1461028057806398650275146102a4576100d4565b80635c975abb116100b25780635c975abb146101a6578063715018a6146101ae578063737d7a46146101b6576100d4565b806301ffc9a7146100d95780630fe920f31461012c5780633f4ba83a1461019c575b600080fd5b610118600480360360208110156100ef57600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166104c9565b604080519115158252519081900360200190f35b6101186004803603602081101561014257600080fd5b81019060208101813564010000000081111561015d57600080fd5b82018360208201111561016f57600080fd5b8035906020019184602083028401116401000000008311171561019157600080fd5b509092509050610500565b6101a4610557565b005b6101186105cb565b6101a46105db565b6101a4600480360360408110156101cc57600080fd5b8101906020810181356401000000008111156101e757600080fd5b8201836020820111156101f957600080fd5b8035906020019184602083028401116401000000008311171561021b57600080fd5b91939092909160208101903564010000000081111561023957600080fd5b82018360208201111561024b57600080fd5b8035906020019184602083028401116401000000008311171561026d57600080fd5b5090925090506106a7565b6101a461091f565b610288610991565b604080516001600160a01b039092168252519081900360200190f35b6101a46109a0565b6103d9600480360360a08110156102c257600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156102f657600080fd5b82018360208201111561030857600080fd5b8035906020019184602083028401116401000000008311171561032a57600080fd5b91939092909160208101903564010000000081111561034857600080fd5b82018360208201111561035a57600080fd5b8035906020019184602083028401116401000000008311171561037c57600080fd5b91939092909160208101903564010000000081111561039a57600080fd5b8201836020820111156103ac57600080fd5b803590602001918460018302840111640100000000831117156103ce57600080fd5b509092509050610a74565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b6103d9600480360360a081101561042457600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561046457600080fd5b82018360208201111561047657600080fd5b8035906020019184600183028401116401000000008311171561049857600080fd5b509092509050611343565b6101a4600480360360208110156104b957600080fd5b50356001600160a01b03166117ce565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526020819052604090205460ff1690565b6000805b8281101561054b576006600085858481811061051c57fe5b90506020020135815260200190815260200160002054600014610543576001915050610551565b600101610504565b50600090505b92915050565b61055f6118f1565b6001546001600160a01b039081169116146105c1576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6105c96118f5565b565b600154600160a01b900460ff1690565b6105e36118f1565b6001546001600160a01b03908116911614610645576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6106af6118f1565b6001546001600160a01b03908116911614610711576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b82801580159061072057508082145b610771576040805162461bcd60e51b815260206004820152601b60248201527f52657061697243656e7472653a2077726f6e67206c656e677468730000000000604482015290519081900360640190fd5b60005b818110156107c15783838281811061078857fe5b905060200201356006600088888581811061079f57fe5b6020908102929092013583525081019190915260400160002055600101610774565b506004546005546001600160a01b03909116906323b872dd90339030906107ee908663ffffffff6119c116565b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b15801561085657600080fd5b505af115801561086a573d6000803e3d6000fd5b505050506040513d602081101561088057600080fd5b5050604080518181529081018590527fb380eaa9f6cb279d2695d070bb2e054fba005a2e08671b41772a93865d51b5db9086908690869086908060208181019060608301908890880280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050505050565b6109276118f1565b6001546001600160a01b03908116911614610989576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6105c9611a21565b6001546001600160a01b031690565b6109a86118f1565b6001546001600160a01b03908116911614610a0a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600260009054906101000a90046001600160a01b03166001600160a01b031663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a5a57600080fd5b505af1158015610a6e573d6000803e3d6000fd5b50505050565b600154600090600160a01b900460ff1615610ad6576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6002546001600160a01b03163314610b35576040805162461bcd60e51b815260206004820152601d60248201527f52657061697243656e7472653a2077726f6e6720696e76656e746f7279000000604482015290519081900360640190fd5b8580610b88576040805162461bcd60e51b815260206004820152601960248201527f52657061697243656e7472653a20656d70747920617272617900000000000000604482015290519081900360640190fd5b60608167ffffffffffffffff81118015610ba157600080fd5b50604051908082528060200260200182016040528015610bcb578160200160208202803683370190505b50905060608267ffffffffffffffff81118015610be757600080fd5b50604051908082528060200260200182016040528015610c11578160200160208202803683370190505b50905060608367ffffffffffffffff81118015610c2d57600080fd5b50604051908082528060200260200182016040528015610c57578160200160208202803683370190505b50905060005b84811015610d2e5760008c8c83818110610c7357fe5b60209081029290920135600081815260069093526040909220549192505080610ccd5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b1f6021913960400191505060405180910390fd5b60008281526006602052604081205585518f90879085908110610cec57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505080858481518110610d1957fe5b60209081029190910101525050600101610c5d565b50600260009054906101000a90046001600160a01b03166001600160a01b0316632eb2c2d630600360009054906101000a90046001600160a01b03168e8e8e8e604051806020016040528060008152506040518863ffffffff1660e01b815260040180886001600160a01b03166001600160a01b03168152602001876001600160a01b03166001600160a01b031681526020018060200180602001806020018481038452898982818152602001925060200280828437600083820152601f01601f191690910185810384528781526020908101915088908802808284376000838201819052601f909101601f191690920186810384528751815287516020918201939189019250908190849084905b83811015610e55578181015183820152602001610e3d565b50505050905090810190601f168015610e825780820380516001836020036101000a031916815260200191505b509a5050505050505050505050600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b50505050600260009054906101000a90046001600160a01b03166001600160a01b031663e6fd76fe8484848d8d60016040518763ffffffff1660e01b815260040180806020018060200180602001806020018615151515815260200185810385528b818151815260200191508051906020019060200280838360005b83811015610f51578181015183820152602001610f39565b5050505090500185810384528a818151815260200191508051906020019060200280838360005b83811015610f90578181015183820152602001610f78565b50505050905001858103835289818151815260200191508051906020019060200280838360005b83811015610fcf578181015183820152602001610fb7565b505050509050018581038252888882818152602001925060200280828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b15801561102a57600080fd5b505af192505050801561103b575060015b6111c157600260009054906101000a90046001600160a01b03166001600160a01b031663e6fd76fe8484848d8d60006040518763ffffffff1660e01b815260040180806020018060200180602001806020018615151515815260200185810385528b818151815260200191508051906020019060200280838360005b838110156110cf5781810151838201526020016110b7565b5050505090500185810384528a818151815260200191508051906020019060200280838360005b8381101561110e5781810151838201526020016110f6565b50505050905001858103835289818151815260200191508051906020019060200280838360005b8381101561114d578181015183820152602001611135565b505050509050018581038252888882818152602001925060200280828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b1580156111a857600080fd5b505af11580156111bc573d6000803e3d6000fd5b505050505b6004546005546001600160a01b039091169063a9059cbb908e906111eb908863ffffffff6119c116565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561123a57600080fd5b505af115801561124e573d6000803e3d6000fd5b505050506040513d602081101561126457600080fd5b5050604080518181529081018b90527f2cf905ead2e9d792396a729bff8203532d1ae96085bee924227803dee4189e60908c908c90859080602081810190606083019087908702808284376000838201819052601f909101601f1916909201858103845286518152865160209182019382890193509102908190849084905b838110156112fb5781810151838201526020016112e3565b505050509050019550505050505060405180910390a1507fbc197c81000000000000000000000000000000000000000000000000000000009c9b505050505050505050505050565b600154600090600160a01b900460ff16156113a5576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6002546001600160a01b03163314611404576040805162461bcd60e51b815260206004820152601d60248201527f52657061697243656e7472653a2077726f6e6720696e76656e746f7279000000604482015290519081900360640190fd5b6000858152600660205260409020548061144f5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b1f6021913960400191505060405180910390fd5b6006600087815260200190815260200160002060009055600260009054906101000a90046001600160a01b03166001600160a01b031663f242432a30600360009054906101000a90046001600160a01b0316896001604051806020016040528060008152506040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561153c578181015183820152602001611524565b50505050905090810190601f1680156115695780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b15801561158c57600080fd5b505af11580156115a0573d6000803e3d6000fd5b5050600254604080517f9220dd040000000000000000000000000000000000000000000000000000000081526001600160a01b038c811660048301526024820187905260006044830181905260016064840152925193169450639220dd0493506084808201939182900301818387803b15801561161c57600080fd5b505af192505050801561162d575060015b6116c457600254604080517f9220dd040000000000000000000000000000000000000000000000000000000081526001600160a01b038a8116600483015260248201859052600060448301819052606483018190529251931692639220dd049260848084019391929182900301818387803b1580156116ab57600080fd5b505af11580156116bf573d6000803e3d6000fd5b505050505b60048054600554604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038c811695820195909552602481019290925251929091169163a9059cbb916044808201926020929091908290030181600087803b15801561173a57600080fd5b505af115801561174e573d6000803e3d6000fd5b505050506040513d602081101561176457600080fd5b5050604080518781526020810183905281517f356799e8140806fb4937337aad7d8803d2678e879ee90e5dd1d005754764c73f929181900390910190a1507ff23a6e6100000000000000000000000000000000000000000000000000000000979650505050505050565b6117d66118f1565b6001546001600160a01b03908116911614611838576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811661187d5760405162461bcd60e51b8152600401808060200182810382526026815260200180611ad86026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b3390565b600154600160a01b900460ff16611953576040805162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6119a46118f1565b604080516001600160a01b039092168252519081900360200190a1565b6000826119d057506000610551565b828202828482816119dd57fe5b0414611a1a5760405162461bcd60e51b8152600401808060200182810382526021815260200180611afe6021913960400191505060405180910390fd5b9392505050565b600154600160a01b900460ff1615611a80576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586119a46118f156fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7752657061697243656e7472653a20746f6b656e206e6f7420646566656374697665a2646970667358221220df1538ec392757689f7f2e818015f30124572d152eefa652f5aa1937537d502d64736f6c634300060800330000000000000000000000002af75676692817d85121353f0d6e8e9ae6ad55760000000000000000000000003fe6c8fd6bb02d6f1567fa9530cd08bce18b8032000000000000000000000000557b933a7c2c45672b610f8954a3deb39a51a8ca0000000000000000000000000000000000000000000000056bc75e2d63100000

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

0000000000000000000000002af75676692817d85121353f0d6e8e9ae6ad55760000000000000000000000003fe6c8fd6bb02d6f1567fa9530cd08bce18b8032000000000000000000000000557b933a7c2c45672b610f8954a3deb39a51a8ca0000000000000000000000000000000000000000000000056bc75e2d63100000

-----Decoded View---------------
Arg [0] : inventoryContract_ (address): 0x2aF75676692817d85121353f0D6e8E9aE6AD5576
Arg [1] : tokensGraveyard_ (address): 0x3fe6C8Fd6BB02d6F1567Fa9530CD08BcE18b8032
Arg [2] : revvContract_ (address): 0x557B933a7C2c45672B610F8954A3deB39a51A8Ca
Arg [3] : revvCompensation_ (uint256): 100000000000000000000

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000002af75676692817d85121353f0d6e8e9ae6ad5576
Arg [1] : 0000000000000000000000003fe6c8fd6bb02d6f1567fa9530cd08bce18b8032
Arg [2] : 000000000000000000000000557b933a7c2c45672b610f8954a3deb39a51a8ca
Arg [3] : 0000000000000000000000000000000000000000000000056bc75e2d63100000


Deployed ByteCode Sourcemap

18527:9901:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18527:9901:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;12854:142:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12854:142:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;28148:277;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;28148:277:0;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;28148:277:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;28148:277:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;28148:277:0;;-1:-1:-1;28148:277:0;-1:-1:-1;28148:277:0;:::i;21954:67::-;;;:::i;:::-;;4451:78;;;:::i;2821:148::-;;;:::i;20684:592::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;20684:592:0;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;20684:592:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;20684:592:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;20684:592:0;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;20684:592:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;20684:592:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;20684:592:0;;-1:-1:-1;20684:592:0;-1:-1:-1;20684:592:0;:::i;21711:63::-;;;:::i;2179:79::-;;;:::i;:::-;;;;-1:-1:-1;;;;;2179:79:0;;;;;;;;;;;;;;21431:98;;;:::i;26055:1582::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;26055:1582:0;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;26055:1582:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;26055:1582:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;26055:1582:0;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;26055:1582:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;26055:1582:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;26055:1582:0;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;26055:1582:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;26055:1582:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;26055:1582:0;;-1:-1:-1;26055:1582:0;-1:-1:-1;26055:1582:0;:::i;:::-;;;;;;;;;;;;;;;;;;;23512:1004;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;23512:1004:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;23512:1004:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;23512:1004:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;23512:1004:0;;-1:-1:-1;23512:1004:0;-1:-1:-1;23512:1004:0;:::i;3124:244::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3124:244:0;-1:-1:-1;;;;;3124:244:0;;:::i;12854:142::-;12955:33;;12931:4;12955:33;;;;;;;;;;;;;;12854:142::o;28148:277::-;28229:4;;28246:148;28266:17;;;28246:148;;;28309:10;:21;28320:6;;28327:1;28320:9;;;;;;;;;;;;;28309:21;;;;;;;;;;;;28334:1;28309:26;28305:78;;28363:4;28356:11;;;;;28305:78;28285:3;;28246:148;;;;28412:5;28405:12;;28148:277;;;;;:::o;21954:67::-;2401:12;:10;:12::i;:::-;2391:6;;-1:-1:-1;;;;;2391:6:0;;;:22;;;2383:67;;;;;-1:-1:-1;;;2383:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22003:10:::1;:8;:10::i;:::-;21954:67::o:0;4451:78::-;4514:7;;-1:-1:-1;;;4514:7:0;;;;;4451:78::o;2821:148::-;2401:12;:10;:12::i;:::-;2391:6;;-1:-1:-1;;;;;2391:6:0;;;:22;;;2383:67;;;;;-1:-1:-1;;;2383:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:6:::1;::::0;2891:40:::1;::::0;2928:1:::1;::::0;-1:-1:-1;;;;;2912:6:0::1;::::0;2891:40:::1;::::0;2928:1;;2891:40:::1;2942:6;:19:::0;;;::::1;::::0;;2821:148::o;20684:592::-;2401:12;:10;:12::i;:::-;2391:6;;-1:-1:-1;;;;;2391:6:0;;;:22;;;2383:67;;;;;-1:-1:-1;;;2383:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20855:15;20896:11;;;::::1;::::0;:49:::1;;-1:-1:-1::0;20911:34:0;;::::1;20896:49;20888:89;;;::::0;;-1:-1:-1;;;20888:89:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20993:9;20988:117;21012:6;21008:1;:10;20988:117;;;21073:17;;21091:1;21073:20;;;;;;;;;;;;;21040:10;:30;21051:15;;21067:1;21051:18;;;;;;;;::::0;;::::1;::::0;;;::::1;;21040:30:::0;;-1:-1:-1;21040:30:0;::::1;::::0;;;;;;-1:-1:-1;21040:30:0;:53;21020:3:::1;;20988:117;;;-1:-1:-1::0;21115:12:0::1;::::0;21168:16:::1;::::0;-1:-1:-1;;;;;21115:12:0;;::::1;::::0;:25:::1;::::0;21141:10:::1;::::0;21161:4:::1;::::0;21168:28:::1;::::0;21189:6;21168:28:::1;:20;:28;:::i;:::-;21115:82;;;;;;;;;;;;;-1:-1:-1::0;;;;;21115:82:0::1;-1:-1:-1::0;;;;;21115:82:0::1;;;;;;-1:-1:-1::0;;;;;21115:82:0::1;-1:-1:-1::0;;;;;21115:82:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;21115:82:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21115:82:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;21213:55:0::1;::::0;;;;;;;;;;;::::1;::::0;21233:15;;;;21250:17;;;;21213:55;21115:82:::1;21213:55:::0;;::::1;::::0;;;;;21233:15;;21213:55;::::1;::::0;21233:15;21213:55;1:33:-1::1;99:1;81:16:::0;;::::1;74:27:::0;137:4:::1;117:14;-1:-1:::0;;113:30:::1;157:16:::0;;::::1;21213:55:0::0;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;-1:-1:-1;21213:55:0;;;::::1;::::0;;;1:33:-1::1;99:1;81:16:::0;;::::1;74:27:::0;21213:55:0::1;::::0;137:4:-1::1;117:14:::0;;::::1;-1:-1:::0;;113:30:::1;157:16:::0;;::::1;21213:55:0::0;;::::1;::::0;-1:-1:-1;21213:55:0;;-1:-1:-1;;;;;;;21213:55:0::1;2461:1;20684:592:::0;;;;:::o;21711:63::-;2401:12;:10;:12::i;:::-;2391:6;;-1:-1:-1;;;;;2391:6:0;;;:22;;;2383:67;;;;;-1:-1:-1;;;2383:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21758:8:::1;:6;:8::i;2179:79::-:0;2244:6;;-1:-1:-1;;;;;2244:6:0;2179:79;:::o;21431:98::-;2401:12;:10;:12::i;:::-;2391:6;;-1:-1:-1;;;;;2391:6:0;;;:22;;;2383:67;;;;;-1:-1:-1;;;2383:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21487:17:::1;;;;;;;;;-1:-1:-1::0;;;;;21487:17:0::1;-1:-1:-1::0;;;;;21487:32:0::1;;:34;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;21487:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21487:34:0;;;;21431:98::o:0;26055:1582::-;4769:7;;26312:6;;-1:-1:-1;;;4769:7:0;;;;4768:8;4760:37;;;;;-1:-1:-1;;;4760:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26361:17:::1;::::0;-1:-1:-1;;;;;26361:17:0::1;26339:10;:40;26331:82;;;::::0;;-1:-1:-1;;;26331:82:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;26443:15:::0;26484:11;26476:49:::1;;;::::0;;-1:-1:-1;;;26476:49:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;26538:27;26582:6;26568:21;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;26568:21:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;::::0;-1:-1;26568:21:0::1;;26538:51;;26600:34;26651:6;26637:21;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;26637:21:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;::::0;-1:-1;26637:21:0::1;;26600:58;;26669:21;26707:6;26693:21;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;26693:21:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;::::0;-1:-1;26693:21:0::1;-1:-1:-1::0;26669:45:0;-1:-1:-1;26730:9:0::1;26725:394;26749:6;26745:1;:10;26725:394;;;26777:22;26802:15;;26818:1;26802:18;;;;;;;;::::0;;::::1;::::0;;;::::1;;26835:24;26862:26:::0;;;:10:::1;:26:::0;;;;;;;;26802:18;;-1:-1:-1;;26911:21:0;26903:67:::1;;;;-1:-1:-1::0;;;26903:67:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26992:26;::::0;;;:10:::1;:26;::::0;;;;26985:33;27033:13;;27049:4;;27033:10;;27044:1;;27033:13;::::1;;;;;;;;;;:20;-1:-1:-1::0;;;;;27033:20:0::1;;;-1:-1:-1::0;;;;;27033:20:0::1;;;::::0;::::1;27091:16;27068:17;27086:1;27068:20;;;;;;;;;::::0;;::::1;::::0;;;;;:39;-1:-1:-1;;26757:3:0::1;;26725:394;;;;27131:17;;;;;;;;;-1:-1:-1::0;;;;;27131:17:0::1;-1:-1:-1::0;;;;;27131:39:0::1;;27179:4;27186:15;;;;;;;;;-1:-1:-1::0;;;;;27186:15:0::1;27203;;27220:6;;27228:9;;;;;;;;;;;::::0;27131:107:::1;;;;;;;;;;;;;-1:-1:-1::0;;;;;27131:107:0::1;-1:-1:-1::0;;;;;27131:107:0::1;;;;;;-1:-1:-1::0;;;;;27131:107:0::1;-1:-1:-1::0;;;;;27131:107:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;;::::1;74:27:::0;137:4:::1;117:14;-1:-1:::0;;113:30:::1;157:16:::0;;::::1;27131:107:0::0;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;-1:-1:-1;27131:107:0;;;::::1;::::0;;;1:33:-1::1;99:1;81:16:::0;;::::1;74:27:::0;;;137:4:::1;117:14:::0;;::::1;-1:-1:::0;;113:30:::1;157:16:::0;;::::1;27131:107:0::0;;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;-1:-1:-1;27131:107:0;;;;;;;8:100:-1::1;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;27131:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;27131:107:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;27131:107:0;;;;27255:17;;;;;;;;;-1:-1:-1::0;;;;;27255:17:0::1;-1:-1:-1::0;;;;;27255:27:0::1;;27283:10;27295:17;27314:4;27320:6;;27328:4;27255:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;27255:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;27255:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;27255:78:0;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;27255:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;27255:78:0;;;;;;;;;;;;;;27251:199;;27359:17;;;;;;;;;-1:-1:-1::0;;;;;27359:17:0::1;-1:-1:-1::0;;;;;27359:27:0::1;;27387:10;27399:17;27418:4;27424:6;;27432:5;27359:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;27359:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;27359:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;27359:79:0;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;27359:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;27359:79:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;27359:79:0;;;;27251:199;27462:12;::::0;27490:16:::1;::::0;-1:-1:-1;;;;;27462:12:0;;::::1;::::0;:21:::1;::::0;27484:4;;27490:28:::1;::::0;27511:6;27490:28:::1;:20;:28;:::i;:::-;27462:57;;;;;;;;;;;;;-1:-1:-1::0;;;;;27462:57:0::1;-1:-1:-1::0;;;;;27462:57:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;27462:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;27462:57:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;27537:49:0::1;::::0;;;;;;;;;;;::::1;::::0;27551:15;;;;27568:17;;27537:49;27462:57:::1;27537:49:::0;;::::1;::::0;;;;;27551:15;;27537:49;::::1;::::0;27551:15;27537:49;1:33:-1::1;99:1;81:16:::0;;::::1;74:27:::0;;;137:4:::1;117:14:::0;;::::1;-1:-1:::0;;113:30:::1;157:16:::0;;::::1;27537:49:0::0;;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;-1:-1:-1;27537:49:0;::::1;::::0;;;;;;;8:100:-1::1;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;27537:49:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;27606:23:0;;26055:1582;-1:-1:-1;;;;;;;;;;;;26055:1582:0:o;23512:1004::-;4769:7;;23744:6;;-1:-1:-1;;;4769:7:0;;;;4768:8;4760:37;;;;;-1:-1:-1;;;4760:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23793:17:::1;::::0;-1:-1:-1;;;;;23793:17:0::1;23771:10;:40;23763:82;;;::::0;;-1:-1:-1;;;23763:82:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;23858:24;23885:26:::0;;;:10:::1;:26;::::0;;;;;23930:21;23922:67:::1;;;;-1:-1:-1::0;;;23922:67:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24007:10;:26;24018:14;24007:26;;;;;;;;;;;24000:33;;;24046:17;;;;;;;;;-1:-1:-1::0;;;;;24046:17:0::1;-1:-1:-1::0;;;;;24046:34:0::1;;24089:4;24096:15;;;;;;;;;-1:-1:-1::0;;;;;24096:15:0::1;24113:14;24129:1;24132:9;;;;;;;;;;;::::0;24046:96:::1;;;;;;;;;;;;;-1:-1:-1::0;;;;;24046:96:0::1;-1:-1:-1::0;;;;;24046:96:0::1;;;;;;-1:-1:-1::0;;;;;24046:96:0::1;-1:-1:-1::0;;;;;24046:96:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;24046:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;24046:96:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;24159:17:0::1;::::0;:76:::1;::::0;;;;;-1:-1:-1;;;;;24159:76:0;;::::1;;::::0;::::1;::::0;;;;;;;:17:::1;:76:::0;;;;;;:17;:76;;;;;;:17;::::1;::::0;-1:-1:-1;24159:33:0::1;::::0;-1:-1:-1;24159:76:0;;;;;;;;;;;:17;;:76;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;24159:76:0;;;;;;;;;;;;;;24155:195;;24261:17;::::0;:77:::1;::::0;;;;;-1:-1:-1;;;;;24261:77:0;;::::1;;::::0;::::1;::::0;;;;;;;:17:::1;:77:::0;;;;;;;;;;;;;;:17;::::1;::::0;:33:::1;::::0;:77;;;;;:17;;:77;;;;;;:17;;:77;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;24261:77:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;24261:77:0;;;;24155:195;24360:12;::::0;;24388:16:::1;::::0;24360:45:::1;::::0;;;;;-1:-1:-1;;;;;24360:45:0;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;:12;;;::::1;::::0;:21:::1;::::0;:45;;;;;::::1;::::0;;;;;;;;;:12:::1;::::0;:45;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;24360:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;24360:45:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;24423:48:0::1;::::0;;;;;24360:45:::1;24423:48:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;-1:-1:-1::0;24491:17:0;;23512:1004;-1:-1:-1;;;;;;;23512:1004:0:o;3124:244::-;2401:12;:10;:12::i;:::-;2391:6;;-1:-1:-1;;;;;2391:6:0;;;:22;;;2383:67;;;;;-1:-1:-1;;;2383:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3213:22:0;::::1;3205:73;;;;-1:-1:-1::0;;;3205:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3315:6;::::0;3294:38:::1;::::0;-1:-1:-1;;;;;3294:38:0;;::::1;::::0;3315:6:::1;::::0;3294:38:::1;::::0;3315:6:::1;::::0;3294:38:::1;3343:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;3343:17:0;;;::::1;::::0;;;::::1;::::0;;3124:244::o;727:106::-;815:10;727:106;:::o;5500:120::-;5045:7;;-1:-1:-1;;;5045:7:0;;;;5037:40;;;;;-1:-1:-1;;;5037:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5559:7:::1;:15:::0;;;::::1;::::0;;5590:22:::1;5599:12;:10;:12::i;:::-;5590:22;::::0;;-1:-1:-1;;;;;5590:22:0;;::::1;::::0;;;;;;;::::1;::::0;;::::1;5500:120::o:0;7910:471::-;7968:7;8213:6;8209:47;;-1:-1:-1;8243:1:0;8236:8;;8209:47;8280:5;;;8284:1;8280;:5;:1;8304:5;;;;;:10;8296:56;;;;-1:-1:-1;;;8296:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8372:1;7910:471;-1:-1:-1;;;7910:471:0:o;5241:118::-;4769:7;;-1:-1:-1;;;4769:7:0;;;;4768:8;4760:37;;;;;-1:-1:-1;;;4760:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5311:4:::1;5301:14:::0;;;::::1;-1:-1:-1::0;;;5301:14:0::1;::::0;;5331:20:::1;5338:12;:10;:12::i

Swarm Source

ipfs://df1538ec392757689f7f2e818015f30124572d152eefa652f5aa1937537d502d
Block Transaction Difficulty Gas Used Reward
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.

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