{
  "address": "0x86A0679C7987B5BA9600affA994B78D0660088ff",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_addressManager",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_initialDiscount",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "CONFIG_OWNER_KEY",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "allowAllXDomainSenders",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "discount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDiscount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMinL2Gas",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sender",
          "type": "address"
        }
      ],
      "name": "isXDomainSenderAllowed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "l2ChainSeqGas",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "libAddressManager",
      "outputs": [
        {
          "internalType": "contract Lib_AddressManager",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "minL2Gas",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        }
      ],
      "name": "processL2SeqGas",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        }
      ],
      "name": "resolve",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_allowAllXDomainSenders",
          "type": "bool"
        }
      ],
      "name": "setAllowAllXDomainSenders",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_discount",
          "type": "uint256"
        }
      ],
      "name": "setDiscount",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_minL2Gas",
          "type": "uint256"
        }
      ],
      "name": "setMinL2Gas",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sender",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isWhitelisted",
          "type": "bool"
        }
      ],
      "name": "setWhitelistedXDomainSender",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        }
      ],
      "name": "withdrawToSeq",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "xDomainWL",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "transactionHash": "0x639d8f73f2ca77b4b59f7eb7d7e85b0572ef4ae39ff4941b785aa2b2aa00835c",
  "receipt": {
    "to": null,
    "from": "0x8943545177806ED17B9F23F0a21ee5948eCaa776",
    "contractAddress": "0x86A0679C7987B5BA9600affA994B78D0660088ff",
    "transactionIndex": 0,
    "gasUsed": "1199524",
    "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "blockHash": "0xc001489b538a87ab0c7bae960873e6f0797435109537c33cce61ad179bf5f8d7",
    "transactionHash": "0x639d8f73f2ca77b4b59f7eb7d7e85b0572ef4ae39ff4941b785aa2b2aa00835c",
    "logs": [],
    "blockNumber": 193,
    "cumulativeGasUsed": "1199524",
    "status": 1,
    "byzantium": true
  },
  "args": [
    "0xb4B46bdAA835F8E4b4d8e208B6559cD267851051",
    "0"
  ],
  "numDeployments": 1,
  "solcInputHash": "a4af6a73ed3a5b6911a24e59d7ed5284",
  "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_initialDiscount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CONFIG_OWNER_KEY\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allowAllXDomainSenders\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"discount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDiscount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinL2Gas\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isXDomainSenderAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"l2ChainSeqGas\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"libAddressManager\",\"outputs\":[{\"internalType\":\"contract Lib_AddressManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minL2Gas\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_chainId\",\"type\":\"uint256\"}],\"name\":\"processL2SeqGas\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_allowAllXDomainSenders\",\"type\":\"bool\"}],\"name\":\"setAllowAllXDomainSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_discount\",\"type\":\"uint256\"}],\"name\":\"setDiscount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minL2Gas\",\"type\":\"uint256\"}],\"name\":\"setMinL2Gas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isWhitelisted\",\"type\":\"bool\"}],\"name\":\"setWhitelistedXDomainSender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_chainId\",\"type\":\"uint256\"}],\"name\":\"withdrawToSeq\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"xDomainWL\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"resolve(string)\":{\"params\":{\"_name\":\"Name to resolve an address for.\"},\"returns\":{\"_0\":\"Address associated with the given name.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"resolve(string)\":{\"notice\":\"Resolves the address associated with a given name.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MVM/MVM_DiscountOracle.sol\":\"MVM_DiscountOracle\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor() {\\n        _setOwner(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _setOwner(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        _setOwner(newOwner);\\n    }\\n\\n    function _setOwner(address newOwner) private {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\"},\"contracts/MVM/MVM_DiscountOracle.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.9;\\n/* Contract Imports */\\n/* External Imports */\\n\\nimport { iMVM_DiscountOracle } from \\\"./iMVM_DiscountOracle.sol\\\";\\nimport { Lib_AddressResolver } from \\\"../libraries/resolver/Lib_AddressResolver.sol\\\";\\nimport { Lib_Uint } from \\\"../libraries/utils/Lib_Uint.sol\\\";\\n\\ncontract MVM_DiscountOracle is iMVM_DiscountOracle, Lib_AddressResolver {\\n    // Current l2 gas price\\n    uint256 public discount;\\n    uint256 public minL2Gas;\\n    mapping(address => bool) public xDomainWL;\\n    mapping(uint256 => uint256) public l2ChainSeqGas;\\n    bool public allowAllXDomainSenders;\\n    string public constant CONFIG_OWNER_KEY = \\\"METIS_MANAGER\\\";\\n\\n    /**********************\\n     * Function Modifiers *\\n     **********************/\\n\\n    modifier onlyManager() {\\n        require(\\n            msg.sender == resolve(CONFIG_OWNER_KEY),\\n            \\\"MVM_DiscountOracle: Function can only be called by the METIS_MANAGER.\\\"\\n        );\\n        _;\\n    }\\n\\n    constructor(address _addressManager, uint256 _initialDiscount)\\n        Lib_AddressResolver(_addressManager)\\n    {\\n        discount = _initialDiscount;\\n        minL2Gas = 200_000;\\n        allowAllXDomainSenders = false;\\n    }\\n\\n    function getMinL2Gas() public view override returns (uint256) {\\n        return minL2Gas;\\n    }\\n\\n    function getDiscount() public view override returns (uint256) {\\n        return discount;\\n    }\\n\\n    function setDiscount(uint256 _discount) public override onlyManager {\\n        discount = _discount;\\n    }\\n\\n    function setMinL2Gas(uint256 _minL2Gas) public override onlyManager {\\n        minL2Gas = _minL2Gas;\\n    }\\n\\n    function setWhitelistedXDomainSender(address _sender, bool _isWhitelisted)\\n        external\\n        override\\n        onlyManager\\n    {\\n        xDomainWL[_sender] = _isWhitelisted;\\n    }\\n\\n    function isXDomainSenderAllowed(address _sender) public view override returns (bool) {\\n        return (allowAllXDomainSenders || xDomainWL[_sender]);\\n    }\\n\\n    function setAllowAllXDomainSenders(bool _allowAllXDomainSenders) public override onlyManager {\\n        allowAllXDomainSenders = _allowAllXDomainSenders;\\n    }\\n\\n    function processL2SeqGas(address sender, uint256 _chainId) public payable override {\\n        require(isXDomainSenderAllowed(sender), \\\"sender is not whitelisted\\\");\\n        require(_chainId > 0, \\\"incorrect chainId\\\");\\n        l2ChainSeqGas[_chainId] += msg.value;\\n    }\\n\\n    function withdrawToSeq(uint256 _amount, uint256 _chainId) public override onlyManager {\\n        require(_amount > 0, \\\"incorrect amount\\\");\\n        require(_amount <= address(this).balance, \\\"insufficient balance\\\");\\n        require(_chainId > 0, \\\"incorrect chainId\\\");\\n        require(_amount <= l2ChainSeqGas[_chainId], \\\"this chain sequencer gas is not enough\\\");\\n        address _to = resolve(\\n            string(abi.encodePacked(Lib_Uint.uint2str(_chainId), \\\"_MVM_Sequencer_Wrapper\\\"))\\n        );\\n        require(_to != address(0) && _to != address(this), \\\"unknown sequencer address\\\");\\n        l2ChainSeqGas[_chainId] -= _amount;\\n        (bool success, ) = _to.call{ value: _amount }(\\\"\\\");\\n        require(success, \\\"transfer failed\\\");\\n    }\\n}\\n\",\"keccak256\":\"0x1a8a8a47d78e38ffed7766d948e1f85e29a486dc8fd67da7d715cc236c5af6e8\",\"license\":\"MIT\"},\"contracts/MVM/iMVM_DiscountOracle.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.9;\\n\\ninterface iMVM_DiscountOracle {\\n    function setDiscount(uint256 _discount) external;\\n\\n    function setMinL2Gas(uint256 _minL2Gas) external;\\n\\n    function setWhitelistedXDomainSender(address _sender, bool _isWhitelisted) external;\\n\\n    function isXDomainSenderAllowed(address _sender) external view returns (bool);\\n\\n    function setAllowAllXDomainSenders(bool _allowAllXDomainSenders) external;\\n\\n    function getMinL2Gas() external view returns (uint256);\\n\\n    function getDiscount() external view returns (uint256);\\n\\n    function processL2SeqGas(address sender, uint256 _chainId) external payable;\\n\\n    function withdrawToSeq(uint256 _amount, uint256 _chainId) external;\\n}\\n\",\"keccak256\":\"0x5fae2a8ff4190e28fc8a9bb6a0f258e21d07b1487f734b634c692f732c313f37\",\"license\":\"MIT\"},\"contracts/libraries/resolver/Lib_AddressManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.9;\\n\\n/* External Imports */\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\n/**\\n * @title Lib_AddressManager\\n */\\ncontract Lib_AddressManager is Ownable {\\n    /**********\\n     * Events *\\n     **********/\\n\\n    event AddressSet(string indexed _name, address _newAddress, address _oldAddress);\\n\\n    /*************\\n     * Variables *\\n     *************/\\n\\n    mapping(bytes32 => address) private addresses;\\n\\n    /********************\\n     * Public Functions *\\n     ********************/\\n\\n    /**\\n     * Changes the address associated with a particular name.\\n     * @param _name String name to associate an address with.\\n     * @param _address Address to associate with the name.\\n     */\\n    function setAddress(string memory _name, address _address) external onlyOwner {\\n        bytes32 nameHash = _getNameHash(_name);\\n        address oldAddress = addresses[nameHash];\\n        addresses[nameHash] = _address;\\n\\n        emit AddressSet(_name, _address, oldAddress);\\n    }\\n\\n    /**\\n     * Retrieves the address associated with a given name.\\n     * @param _name Name to retrieve an address for.\\n     * @return Address associated with the given name.\\n     */\\n    function getAddress(string memory _name) external view returns (address) {\\n        return addresses[_getNameHash(_name)];\\n    }\\n\\n    /**********************\\n     * Internal Functions *\\n     **********************/\\n\\n    /**\\n     * Computes the hash of a name.\\n     * @param _name Name to compute a hash for.\\n     * @return Hash of the given name.\\n     */\\n    function _getNameHash(string memory _name) internal pure returns (bytes32) {\\n        return keccak256(abi.encodePacked(_name));\\n    }\\n}\\n\",\"keccak256\":\"0xcde9b29429d512c549f7c1b8a033f161fa71c18cda08b241748663854196ae14\",\"license\":\"MIT\"},\"contracts/libraries/resolver/Lib_AddressResolver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.9;\\n\\n/* Library Imports */\\nimport { Lib_AddressManager } from \\\"./Lib_AddressManager.sol\\\";\\n\\n/**\\n * @title Lib_AddressResolver\\n */\\nabstract contract Lib_AddressResolver {\\n    /*************\\n     * Variables *\\n     *************/\\n\\n    Lib_AddressManager public libAddressManager;\\n\\n    /***************\\n     * Constructor *\\n     ***************/\\n\\n    /**\\n     * @param _libAddressManager Address of the Lib_AddressManager.\\n     */\\n    constructor(address _libAddressManager) {\\n        libAddressManager = Lib_AddressManager(_libAddressManager);\\n    }\\n\\n    /********************\\n     * Public Functions *\\n     ********************/\\n\\n    /**\\n     * Resolves the address associated with a given name.\\n     * @param _name Name to resolve an address for.\\n     * @return Address associated with the given name.\\n     */\\n    function resolve(string memory _name) public view returns (address) {\\n        return libAddressManager.getAddress(_name);\\n    }\\n}\\n\",\"keccak256\":\"0x515c4db671a28e2fe180201f6d11c0208c05f582ca3489fb6b8e81c27659bc62\",\"license\":\"MIT\"},\"contracts/libraries/utils/Lib_Uint.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.9;\\n\\n/**\\n * @title Lib_Uint\\n * @author\\n */\\nlibrary Lib_Uint {\\n    /**********************\\n     * Internal Functions *\\n     **********************/\\n\\n    /**\\n     * Convert uint to string\\n     * @param _i uint value.\\n     * @return _uintAsString string momery value.\\n     */\\n    function uint2str(uint256 _i) internal pure returns (string memory _uintAsString) {\\n        if (_i == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 j = _i;\\n        uint256 len;\\n        while (j != 0) {\\n            len++;\\n            j /= 10;\\n        }\\n        bytes memory bstr = new bytes(len);\\n        uint256 k = len;\\n        while (_i != 0) {\\n            k = k - 1;\\n            uint8 temp = (48 + uint8(_i - (_i / 10) * 10));\\n            bytes1 b1 = bytes1(temp);\\n            bstr[k] = b1;\\n            _i /= 10;\\n        }\\n        return string(bstr);\\n    }\\n}\\n\",\"keccak256\":\"0x00408d812fdd202f5693796c9b67821b5c7114aca93484c88cdc63b0caa3c288\",\"license\":\"MIT\"}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5060405161149a38038061149a83398101604081905261002f91610069565b600080546001600160a01b0319166001600160a01b03939093169290921790915560015562030d406002556005805460ff191690556100a3565b6000806040838503121561007c57600080fd5b82516001600160a01b038116811461009357600080fd5b6020939093015192949293505050565b6113e8806100b26000396000f3fe60806040526004361061010e5760003560e01c80639e4fbd81116100a5578063dabd271911610074578063e4af27be11610059578063e4af27be1461033a578063e7f1c10f14610350578063f61caee31461038057600080fd5b8063dabd2719146102fa578063e426541d1461031a57600080fd5b80639e4fbd8114610290578063bf53926e146102b0578063d137874b146102c5578063d417f18c146102da57600080fd5b806355423b24116100e157806355423b24146101e7578063669fdeb5146102115780636b6f4a9d146102675780639955a4b31461027d57600080fd5b8063299ca478146101135780633eac510e1461016a578063461a44781461018c5780634c83a7b1146101ac575b600080fd5b34801561011f57600080fd5b506000546101409073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561017657600080fd5b5061018a610185366004610f76565b6103a0565b005b34801561019857600080fd5b506101406101a7366004610fc7565b6104da565b3480156101b857600080fd5b506101d96101c7366004611096565b60046020526000908152604090205481565b604051908152602001610161565b3480156101f357600080fd5b506005546102019060ff1681565b6040519015158152602001610161565b34801561021d57600080fd5b5061025a6040518060400160405280600d81526020017f4d455449535f4d414e414745520000000000000000000000000000000000000081525081565b60405161016191906110db565b34801561027357600080fd5b506101d960015481565b61018a61028b366004611151565b610587565b34801561029c57600080fd5b5061018a6102ab36600461117d565b610653565b3480156102bc57600080fd5b506002546101d9565b3480156102d157600080fd5b506001546101d9565b3480156102e657600080fd5b5061018a6102f536600461119f565b610a5d565b34801561030657600080fd5b5061018a610315366004611096565b610bb7565b34801561032657600080fd5b506102016103353660046111d4565b610cc0565b34801561034657600080fd5b506101d960025481565b34801561035c57600080fd5b5061020161036b3660046111d4565b60036020526000908152604090205460ff1681565b34801561038c57600080fd5b5061018a61039b366004611096565b610cfb565b6103de6040518060400160405280600d81526020017f4d455449535f4d414e41474552000000000000000000000000000000000000008152506104da565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104a95760405162461bcd60e51b815260206004820152604560248201527f4d564d5f446973636f756e744f7261636c653a2046756e6374696f6e2063616e60448201527f206f6e6c792062652063616c6c656420627920746865204d455449535f4d414e60648201527f414745522e000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600080546040517fbf40fac100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063bf40fac1906105319085906004016110db565b60206040518083038186803b15801561054957600080fd5b505afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058191906111f1565b92915050565b61059082610cc0565b6105dc5760405162461bcd60e51b815260206004820152601960248201527f73656e646572206973206e6f742077686974656c69737465640000000000000060448201526064016104a0565b6000811161062c5760405162461bcd60e51b815260206004820152601160248201527f696e636f727265637420636861696e496400000000000000000000000000000060448201526064016104a0565b6000818152600460205260408120805434929061064a90849061123d565b90915550505050565b6106916040518060400160405280600d81526020017f4d455449535f4d414e41474552000000000000000000000000000000000000008152506104da565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107575760405162461bcd60e51b815260206004820152604560248201527f4d564d5f446973636f756e744f7261636c653a2046756e6374696f6e2063616e60448201527f206f6e6c792062652063616c6c656420627920746865204d455449535f4d414e60648201527f414745522e000000000000000000000000000000000000000000000000000000608482015260a4016104a0565b600082116107a75760405162461bcd60e51b815260206004820152601060248201527f696e636f727265637420616d6f756e740000000000000000000000000000000060448201526064016104a0565b478211156107f75760405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e636500000000000000000000000060448201526064016104a0565b600081116108475760405162461bcd60e51b815260206004820152601160248201527f696e636f727265637420636861696e496400000000000000000000000000000060448201526064016104a0565b6000818152600460205260409020548211156108cb5760405162461bcd60e51b815260206004820152602660248201527f7468697320636861696e2073657175656e63657220676173206973206e6f742060448201527f656e6f756768000000000000000000000000000000000000000000000000000060648201526084016104a0565b60006108fd6108d983610e04565b6040516020016108e99190611255565b6040516020818303038152906040526104da565b905073ffffffffffffffffffffffffffffffffffffffff81161580159061093a575073ffffffffffffffffffffffffffffffffffffffff81163014155b6109865760405162461bcd60e51b815260206004820152601960248201527f756e6b6e6f776e2073657175656e63657220616464726573730000000000000060448201526064016104a0565b600082815260046020526040812080548592906109a4908490611296565b909155505060405160009073ffffffffffffffffffffffffffffffffffffffff83169085908381818185875af1925050503d8060008114610a01576040519150601f19603f3d011682016040523d82523d6000602084013e610a06565b606091505b5050905080610a575760405162461bcd60e51b815260206004820152600f60248201527f7472616e73666572206661696c6564000000000000000000000000000000000060448201526064016104a0565b50505050565b610a9b6040518060400160405280600d81526020017f4d455449535f4d414e41474552000000000000000000000000000000000000008152506104da565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b615760405162461bcd60e51b815260206004820152604560248201527f4d564d5f446973636f756e744f7261636c653a2046756e6374696f6e2063616e60448201527f206f6e6c792062652063616c6c656420627920746865204d455449535f4d414e60648201527f414745522e000000000000000000000000000000000000000000000000000000608482015260a4016104a0565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b610bf56040518060400160405280600d81526020017f4d455449535f4d414e41474552000000000000000000000000000000000000008152506104da565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cbb5760405162461bcd60e51b815260206004820152604560248201527f4d564d5f446973636f756e744f7261636c653a2046756e6374696f6e2063616e60448201527f206f6e6c792062652063616c6c656420627920746865204d455449535f4d414e60648201527f414745522e000000000000000000000000000000000000000000000000000000608482015260a4016104a0565b600155565b60055460009060ff168061058157505073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205460ff1690565b610d396040518060400160405280600d81526020017f4d455449535f4d414e41474552000000000000000000000000000000000000008152506104da565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dff5760405162461bcd60e51b815260206004820152604560248201527f4d564d5f446973636f756e744f7261636c653a2046756e6374696f6e2063616e60448201527f206f6e6c792062652063616c6c656420627920746865204d455449535f4d414e60648201527f414745522e000000000000000000000000000000000000000000000000000000608482015260a4016104a0565b600255565b606081610e4457505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610e6e5780610e58816112ad565b9150610e679050600a836112e6565b9150610e48565b60008167ffffffffffffffff811115610e8957610e89610f98565b6040519080825280601f01601f191660200182016040528015610eb3576020820181803683370190505b509050815b8515610f5857610ec9600182611296565b90506000610ed8600a886112e6565b610ee390600a611321565b610eed9088611296565b610ef890603061135e565b905060008160f81b905080848481518110610f1557610f15611383565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610f4f600a896112e6565b97505050610eb8565b50949350505050565b80358015158114610f7157600080fd5b919050565b600060208284031215610f8857600080fd5b610f9182610f61565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215610fd957600080fd5b813567ffffffffffffffff80821115610ff157600080fd5b818401915084601f83011261100557600080fd5b81358181111561101757611017610f98565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561105d5761105d610f98565b8160405282815287602084870101111561107657600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000602082840312156110a857600080fd5b5035919050565b60005b838110156110ca5781810151838201526020016110b2565b83811115610a575750506000910152565b60208152600082518060208401526110fa8160408501602087016110af565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461114e57600080fd5b50565b6000806040838503121561116457600080fd5b823561116f8161112c565b946020939093013593505050565b6000806040838503121561119057600080fd5b50508035926020909101359150565b600080604083850312156111b257600080fd5b82356111bd8161112c565b91506111cb60208401610f61565b90509250929050565b6000602082840312156111e657600080fd5b8135610f918161112c565b60006020828403121561120357600080fd5b8151610f918161112c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156112505761125061120e565b500190565b600082516112678184602087016110af565b7f5f4d564d5f53657175656e6365725f5772617070657200000000000000000000920191825250601601919050565b6000828210156112a8576112a861120e565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156112df576112df61120e565b5060010190565b60008261131c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156113595761135961120e565b500290565b600060ff821660ff84168060ff0382111561137b5761137b61120e565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220b2eba61b516afd7ec75f9003c8e0f017ab0b2e90149f76b0d830e14e08a9e2ef64736f6c63430008090033",
  "deployedBytecode": "0x60806040526004361061010e5760003560e01c80639e4fbd81116100a5578063dabd271911610074578063e4af27be11610059578063e4af27be1461033a578063e7f1c10f14610350578063f61caee31461038057600080fd5b8063dabd2719146102fa578063e426541d1461031a57600080fd5b80639e4fbd8114610290578063bf53926e146102b0578063d137874b146102c5578063d417f18c146102da57600080fd5b806355423b24116100e157806355423b24146101e7578063669fdeb5146102115780636b6f4a9d146102675780639955a4b31461027d57600080fd5b8063299ca478146101135780633eac510e1461016a578063461a44781461018c5780634c83a7b1146101ac575b600080fd5b34801561011f57600080fd5b506000546101409073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561017657600080fd5b5061018a610185366004610f76565b6103a0565b005b34801561019857600080fd5b506101406101a7366004610fc7565b6104da565b3480156101b857600080fd5b506101d96101c7366004611096565b60046020526000908152604090205481565b604051908152602001610161565b3480156101f357600080fd5b506005546102019060ff1681565b6040519015158152602001610161565b34801561021d57600080fd5b5061025a6040518060400160405280600d81526020017f4d455449535f4d414e414745520000000000000000000000000000000000000081525081565b60405161016191906110db565b34801561027357600080fd5b506101d960015481565b61018a61028b366004611151565b610587565b34801561029c57600080fd5b5061018a6102ab36600461117d565b610653565b3480156102bc57600080fd5b506002546101d9565b3480156102d157600080fd5b506001546101d9565b3480156102e657600080fd5b5061018a6102f536600461119f565b610a5d565b34801561030657600080fd5b5061018a610315366004611096565b610bb7565b34801561032657600080fd5b506102016103353660046111d4565b610cc0565b34801561034657600080fd5b506101d960025481565b34801561035c57600080fd5b5061020161036b3660046111d4565b60036020526000908152604090205460ff1681565b34801561038c57600080fd5b5061018a61039b366004611096565b610cfb565b6103de6040518060400160405280600d81526020017f4d455449535f4d414e41474552000000000000000000000000000000000000008152506104da565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104a95760405162461bcd60e51b815260206004820152604560248201527f4d564d5f446973636f756e744f7261636c653a2046756e6374696f6e2063616e60448201527f206f6e6c792062652063616c6c656420627920746865204d455449535f4d414e60648201527f414745522e000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600080546040517fbf40fac100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063bf40fac1906105319085906004016110db565b60206040518083038186803b15801561054957600080fd5b505afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058191906111f1565b92915050565b61059082610cc0565b6105dc5760405162461bcd60e51b815260206004820152601960248201527f73656e646572206973206e6f742077686974656c69737465640000000000000060448201526064016104a0565b6000811161062c5760405162461bcd60e51b815260206004820152601160248201527f696e636f727265637420636861696e496400000000000000000000000000000060448201526064016104a0565b6000818152600460205260408120805434929061064a90849061123d565b90915550505050565b6106916040518060400160405280600d81526020017f4d455449535f4d414e41474552000000000000000000000000000000000000008152506104da565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107575760405162461bcd60e51b815260206004820152604560248201527f4d564d5f446973636f756e744f7261636c653a2046756e6374696f6e2063616e60448201527f206f6e6c792062652063616c6c656420627920746865204d455449535f4d414e60648201527f414745522e000000000000000000000000000000000000000000000000000000608482015260a4016104a0565b600082116107a75760405162461bcd60e51b815260206004820152601060248201527f696e636f727265637420616d6f756e740000000000000000000000000000000060448201526064016104a0565b478211156107f75760405162461bcd60e51b815260206004820152601460248201527f696e73756666696369656e742062616c616e636500000000000000000000000060448201526064016104a0565b600081116108475760405162461bcd60e51b815260206004820152601160248201527f696e636f727265637420636861696e496400000000000000000000000000000060448201526064016104a0565b6000818152600460205260409020548211156108cb5760405162461bcd60e51b815260206004820152602660248201527f7468697320636861696e2073657175656e63657220676173206973206e6f742060448201527f656e6f756768000000000000000000000000000000000000000000000000000060648201526084016104a0565b60006108fd6108d983610e04565b6040516020016108e99190611255565b6040516020818303038152906040526104da565b905073ffffffffffffffffffffffffffffffffffffffff81161580159061093a575073ffffffffffffffffffffffffffffffffffffffff81163014155b6109865760405162461bcd60e51b815260206004820152601960248201527f756e6b6e6f776e2073657175656e63657220616464726573730000000000000060448201526064016104a0565b600082815260046020526040812080548592906109a4908490611296565b909155505060405160009073ffffffffffffffffffffffffffffffffffffffff83169085908381818185875af1925050503d8060008114610a01576040519150601f19603f3d011682016040523d82523d6000602084013e610a06565b606091505b5050905080610a575760405162461bcd60e51b815260206004820152600f60248201527f7472616e73666572206661696c6564000000000000000000000000000000000060448201526064016104a0565b50505050565b610a9b6040518060400160405280600d81526020017f4d455449535f4d414e41474552000000000000000000000000000000000000008152506104da565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b615760405162461bcd60e51b815260206004820152604560248201527f4d564d5f446973636f756e744f7261636c653a2046756e6374696f6e2063616e60448201527f206f6e6c792062652063616c6c656420627920746865204d455449535f4d414e60648201527f414745522e000000000000000000000000000000000000000000000000000000608482015260a4016104a0565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b610bf56040518060400160405280600d81526020017f4d455449535f4d414e41474552000000000000000000000000000000000000008152506104da565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cbb5760405162461bcd60e51b815260206004820152604560248201527f4d564d5f446973636f756e744f7261636c653a2046756e6374696f6e2063616e60448201527f206f6e6c792062652063616c6c656420627920746865204d455449535f4d414e60648201527f414745522e000000000000000000000000000000000000000000000000000000608482015260a4016104a0565b600155565b60055460009060ff168061058157505073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205460ff1690565b610d396040518060400160405280600d81526020017f4d455449535f4d414e41474552000000000000000000000000000000000000008152506104da565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dff5760405162461bcd60e51b815260206004820152604560248201527f4d564d5f446973636f756e744f7261636c653a2046756e6374696f6e2063616e60448201527f206f6e6c792062652063616c6c656420627920746865204d455449535f4d414e60648201527f414745522e000000000000000000000000000000000000000000000000000000608482015260a4016104a0565b600255565b606081610e4457505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610e6e5780610e58816112ad565b9150610e679050600a836112e6565b9150610e48565b60008167ffffffffffffffff811115610e8957610e89610f98565b6040519080825280601f01601f191660200182016040528015610eb3576020820181803683370190505b509050815b8515610f5857610ec9600182611296565b90506000610ed8600a886112e6565b610ee390600a611321565b610eed9088611296565b610ef890603061135e565b905060008160f81b905080848481518110610f1557610f15611383565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610f4f600a896112e6565b97505050610eb8565b50949350505050565b80358015158114610f7157600080fd5b919050565b600060208284031215610f8857600080fd5b610f9182610f61565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215610fd957600080fd5b813567ffffffffffffffff80821115610ff157600080fd5b818401915084601f83011261100557600080fd5b81358181111561101757611017610f98565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561105d5761105d610f98565b8160405282815287602084870101111561107657600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000602082840312156110a857600080fd5b5035919050565b60005b838110156110ca5781810151838201526020016110b2565b83811115610a575750506000910152565b60208152600082518060208401526110fa8160408501602087016110af565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461114e57600080fd5b50565b6000806040838503121561116457600080fd5b823561116f8161112c565b946020939093013593505050565b6000806040838503121561119057600080fd5b50508035926020909101359150565b600080604083850312156111b257600080fd5b82356111bd8161112c565b91506111cb60208401610f61565b90509250929050565b6000602082840312156111e657600080fd5b8135610f918161112c565b60006020828403121561120357600080fd5b8151610f918161112c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156112505761125061120e565b500190565b600082516112678184602087016110af565b7f5f4d564d5f53657175656e6365725f5772617070657200000000000000000000920191825250601601919050565b6000828210156112a8576112a861120e565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156112df576112df61120e565b5060010190565b60008261131c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156113595761135961120e565b500290565b600060ff821660ff84168060ff0382111561137b5761137b61120e565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220b2eba61b516afd7ec75f9003c8e0f017ab0b2e90149f76b0d830e14e08a9e2ef64736f6c63430008090033",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "resolve(string)": {
        "params": {
          "_name": "Name to resolve an address for."
        },
        "returns": {
          "_0": "Address associated with the given name."
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "resolve(string)": {
        "notice": "Resolves the address associated with a given name."
      }
    },
    "version": 1
  },
  "storageLayout": {
    "storage": [
      {
        "astId": 16631,
        "contract": "contracts/MVM/MVM_DiscountOracle.sol:MVM_DiscountOracle",
        "label": "libAddressManager",
        "offset": 0,
        "slot": "0",
        "type": "t_contract(Lib_AddressManager)16623"
      },
      {
        "astId": 12031,
        "contract": "contracts/MVM/MVM_DiscountOracle.sol:MVM_DiscountOracle",
        "label": "discount",
        "offset": 0,
        "slot": "1",
        "type": "t_uint256"
      },
      {
        "astId": 12033,
        "contract": "contracts/MVM/MVM_DiscountOracle.sol:MVM_DiscountOracle",
        "label": "minL2Gas",
        "offset": 0,
        "slot": "2",
        "type": "t_uint256"
      },
      {
        "astId": 12037,
        "contract": "contracts/MVM/MVM_DiscountOracle.sol:MVM_DiscountOracle",
        "label": "xDomainWL",
        "offset": 0,
        "slot": "3",
        "type": "t_mapping(t_address,t_bool)"
      },
      {
        "astId": 12041,
        "contract": "contracts/MVM/MVM_DiscountOracle.sol:MVM_DiscountOracle",
        "label": "l2ChainSeqGas",
        "offset": 0,
        "slot": "4",
        "type": "t_mapping(t_uint256,t_uint256)"
      },
      {
        "astId": 12043,
        "contract": "contracts/MVM/MVM_DiscountOracle.sol:MVM_DiscountOracle",
        "label": "allowAllXDomainSenders",
        "offset": 0,
        "slot": "5",
        "type": "t_bool"
      }
    ],
    "types": {
      "t_address": {
        "encoding": "inplace",
        "label": "address",
        "numberOfBytes": "20"
      },
      "t_bool": {
        "encoding": "inplace",
        "label": "bool",
        "numberOfBytes": "1"
      },
      "t_contract(Lib_AddressManager)16623": {
        "encoding": "inplace",
        "label": "contract Lib_AddressManager",
        "numberOfBytes": "20"
      },
      "t_mapping(t_address,t_bool)": {
        "encoding": "mapping",
        "key": "t_address",
        "label": "mapping(address => bool)",
        "numberOfBytes": "32",
        "value": "t_bool"
      },
      "t_mapping(t_uint256,t_uint256)": {
        "encoding": "mapping",
        "key": "t_uint256",
        "label": "mapping(uint256 => uint256)",
        "numberOfBytes": "32",
        "value": "t_uint256"
      },
      "t_uint256": {
        "encoding": "inplace",
        "label": "uint256",
        "numberOfBytes": "32"
      }
    }
  }
}