{
  "_format": "hh-sol-artifact-1",
  "contractName": "MeterUser",
  "sourceName": "contracts/test/ResourceMetering.t.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "BASE_FEE_MAX_CHANGE_DENOMINATOR",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ELASTICITY_MULTIPLIER",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "INITIAL_BASE_FEE",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAXIMUM_BASE_FEE",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_RESOURCE_LIMIT",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINIMUM_BASE_FEE",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "TARGET_RESOURCE_LIMIT",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "params",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "prevBaseFee",
          "type": "uint128"
        },
        {
          "internalType": "uint64",
          "name": "prevBoughtGas",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "prevBlockNum",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_amount",
          "type": "uint64"
        }
      ],
      "name": "use",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b62000206565b600054610100900460ff1615808015620000435750600054600160ff909116105b8062000073575062000060306200015460201b620006ab1760201c565b15801562000073575060005460ff166001145b620000dc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000100576000805461ff0019166101001790555b6200010a62000163565b801562000151576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b600054610100900460ff16620001d05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000d3565b60408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b0217600155565b61117480620002166000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063867ead1311610076578063ca3e99ba1161005b578063ca3e99ba14610151578063cd7c978914610159578063cff0ab961461016157600080fd5b8063867ead1314610135578063b4b64fbb1461013e57600080fd5b806364b79208116100a757806364b79208146101195780636bb0291e146101235780638129fc1c1461012b57600080fd5b806313620abd146100c35780635c1f2827146100f4575b600080fd5b6100ce633b9aca0081565b6040516fffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61010b6fffffffffffffffffffffffffffffffff81565b6040519081526020016100eb565b61010b627a120081565b61010b600481565b6101336101f5565b005b61010b61271081565b61013361014c366004610e0c565b61038c565b61010b61069a565b61010b600881565b6001546101bc906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016100eb565b600054610100900460ff16158080156102155750600054600160ff909116105b8061022f5750303b15801561022f575060005460ff166001145b6102c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561031e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6103266106c7565b801561038957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b8060005a6001549091506000906103c9907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643610e65565b905080156104fd5760006103e16004627a1200610eab565b60015461040c9190700100000000000000000000000000000000900467ffffffffffffffff16610f13565b9050600060086104206004627a1200610eab565b6001546104409085906fffffffffffffffffffffffffffffffff16610f87565b61044a9190610eab565b6104549190610eab565b6001549091506000906104979061047e9084906fffffffffffffffffffffffffffffffff16611043565b6127106fffffffffffffffffffffffffffffffff6107aa565b905060018411156104be576104bb61047e8260086104b6600189610e65565b6107c7565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054849190601090610530908490700100000000000000000000000000000000900467ffffffffffffffff166110b7565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550627a1200600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16131561060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d6974000060648201526084016102b7565b600154600090610638906fffffffffffffffffffffffffffffffff1667ffffffffffffffff86166110e3565b6fffffffffffffffffffffffffffffffff169050600061065c48633b9aca0061081c565b610666908361111b565b905060005a6106759086610e65565b9050808211156106915761069161068c8284610e65565b610835565b50505050505050565b6106a86004627a1200610eab565b81565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600054610100900460ff1661075e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102b7565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b60006107bf6107b98585610863565b83610873565b949350505050565b6000670de0b6b3a76400006108086107df8583610eab565b6107f190670de0b6b3a7640000610f13565b61080385670de0b6b3a7640000610f87565b610882565b6108129086610f87565b6107bf9190610eab565b60008183101561082c578161082e565b825b9392505050565b6000805a90505b825a6108489083610e65565b101561085e576108578261112f565b915061083c565b505050565b60008183121561082c578161082e565b600081831261082c578161082e565b600061082e670de0b6b3a76400008361089a866108b3565b6108a49190610f87565b6108ae9190610eab565b610af7565b600080821361091e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016102b7565b6000606061092b84610d36565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c18213610b2857506000919050565b680755bf798b4a1bf1e58212610b9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f57000000000000000000000000000000000000000060448201526064016102b7565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000808211610da1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016102b7565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b600060208284031215610e1e57600080fd5b813567ffffffffffffffff8116811461082e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610e7757610e77610e36565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610eba57610eba610e7c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615610f0e57610f0e610e36565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615610f4d57610f4d610e36565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615610f8157610f81610e36565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615610fc857610fc8610e36565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561100357611003610e36565b6000871292508782058712848416161561101f5761101f610e36565b8785058712818416161561103557611035610e36565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561107d5761107d610e36565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156110b1576110b1610e36565b50500190565b600067ffffffffffffffff8083168185168083038211156110da576110da610e36565b01949350505050565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561111257611112610e36565b02949350505050565b60008261112a5761112a610e7c565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361116057611160610e36565b506001019056fea164736f6c634300080f000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c8063867ead1311610076578063ca3e99ba1161005b578063ca3e99ba14610151578063cd7c978914610159578063cff0ab961461016157600080fd5b8063867ead1314610135578063b4b64fbb1461013e57600080fd5b806364b79208116100a757806364b79208146101195780636bb0291e146101235780638129fc1c1461012b57600080fd5b806313620abd146100c35780635c1f2827146100f4575b600080fd5b6100ce633b9aca0081565b6040516fffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61010b6fffffffffffffffffffffffffffffffff81565b6040519081526020016100eb565b61010b627a120081565b61010b600481565b6101336101f5565b005b61010b61271081565b61013361014c366004610e0c565b61038c565b61010b61069a565b61010b600881565b6001546101bc906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016100eb565b600054610100900460ff16158080156102155750600054600160ff909116105b8061022f5750303b15801561022f575060005460ff166001145b6102c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561031e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6103266106c7565b801561038957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b8060005a6001549091506000906103c9907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643610e65565b905080156104fd5760006103e16004627a1200610eab565b60015461040c9190700100000000000000000000000000000000900467ffffffffffffffff16610f13565b9050600060086104206004627a1200610eab565b6001546104409085906fffffffffffffffffffffffffffffffff16610f87565b61044a9190610eab565b6104549190610eab565b6001549091506000906104979061047e9084906fffffffffffffffffffffffffffffffff16611043565b6127106fffffffffffffffffffffffffffffffff6107aa565b905060018411156104be576104bb61047e8260086104b6600189610e65565b6107c7565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054849190601090610530908490700100000000000000000000000000000000900467ffffffffffffffff166110b7565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550627a1200600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff16131561060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d6974000060648201526084016102b7565b600154600090610638906fffffffffffffffffffffffffffffffff1667ffffffffffffffff86166110e3565b6fffffffffffffffffffffffffffffffff169050600061065c48633b9aca0061081c565b610666908361111b565b905060005a6106759086610e65565b9050808211156106915761069161068c8284610e65565b610835565b50505050505050565b6106a86004627a1200610eab565b81565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600054610100900460ff1661075e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102b7565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b60006107bf6107b98585610863565b83610873565b949350505050565b6000670de0b6b3a76400006108086107df8583610eab565b6107f190670de0b6b3a7640000610f13565b61080385670de0b6b3a7640000610f87565b610882565b6108129086610f87565b6107bf9190610eab565b60008183101561082c578161082e565b825b9392505050565b6000805a90505b825a6108489083610e65565b101561085e576108578261112f565b915061083c565b505050565b60008183121561082c578161082e565b600081831261082c578161082e565b600061082e670de0b6b3a76400008361089a866108b3565b6108a49190610f87565b6108ae9190610eab565b610af7565b600080821361091e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016102b7565b6000606061092b84610d36565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c18213610b2857506000919050565b680755bf798b4a1bf1e58212610b9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f57000000000000000000000000000000000000000060448201526064016102b7565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6000808211610da1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016102b7565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b600060208284031215610e1e57600080fd5b813567ffffffffffffffff8116811461082e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610e7757610e77610e36565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610eba57610eba610e7c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615610f0e57610f0e610e36565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615610f4d57610f4d610e36565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615610f8157610f81610e36565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615610fc857610fc8610e36565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561100357611003610e36565b6000871292508782058712848416161561101f5761101f610e36565b8785058712818416161561103557611035610e36565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561107d5761107d610e36565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156110b1576110b1610e36565b50500190565b600067ffffffffffffffff8083168185168083038211156110da576110da610e36565b01949350505050565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561111257611112610e36565b02949350505050565b60008261112a5761112a610e7c565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361116057611160610e36565b506001019056fea164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
