{
  "address": "0x4821975ca220601c153d02353300d6ad34adc362",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_minDepositAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxDepositAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxBalance",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "name": "BalanceWithdrawn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "depositId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "emitter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "EtherReceived",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "previousBalance",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newBalance",
          "type": "uint256"
        }
      ],
      "name": "MaxBalanceSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "previousAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newAmount",
          "type": "uint256"
        }
      ],
      "name": "MaxDepositAmountSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "previousAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newAmount",
          "type": "uint256"
        }
      ],
      "name": "MinDepositAmountSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "c__0xbf18ea64",
          "type": "bytes32"
        }
      ],
      "name": "c_0xbf18ea64",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxDepositAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "minDepositAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_maxDepositAmount",
          "type": "uint256"
        }
      ],
      "name": "setMaxAmount",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_maxBalance",
          "type": "uint256"
        }
      ],
      "name": "setMaxBalance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_minDepositAmount",
          "type": "uint256"
        }
      ],
      "name": "setMinAmount",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalDeposits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "withdrawBalance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "transactionHash": "0x83a2775ed8bc832e1a4ae46b003b5b0987a4163cc79224d65fc9c38875f0b452",
  "receipt": {
    "to": null,
    "from": "0x6c2cBc2132aB6Fc48Ebf3569Bdde7B0AA34aa0FC",
    "contractAddress": "0x170E152DeDADaa7fE028b025B18748cbab7083bD",
    "transactionIndex": 1,
    "gasUsed": "1286769",
    "logsBloom": "0x00000000000000000000000010000000000000000000000000800000000000000100000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400080000000000000000000000000000040000000000000000000000000000000000000040000000000000000000000000000000000020000000000000000000000000000000000000200000000000000400000000020000000040000000020000000000000000010000000000000008000000000000000000000000000020000",
    "blockHash": "0xb2eb3e02f35921cd1201f5a5eecbdf61c6f8196b174fb057e442fc2c85d2635f",
    "transactionHash": "0x83a2775ed8bc832e1a4ae46b003b5b0987a4163cc79224d65fc9c38875f0b452",
    "logs": [
      {
        "transactionIndex": 1,
        "blockNumber": 30510065,
        "transactionHash": "0x83a2775ed8bc832e1a4ae46b003b5b0987a4163cc79224d65fc9c38875f0b452",
        "address": "0x170E152DeDADaa7fE028b025B18748cbab7083bD",
        "topics": [
          "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
          "0x0000000000000000000000000000000000000000000000000000000000000000",
          "0x0000000000000000000000006c2cbc2132ab6fc48ebf3569bdde7b0aa34aa0fc"
        ],
        "data": "0x",
        "logIndex": 1,
        "blockHash": "0xb2eb3e02f35921cd1201f5a5eecbdf61c6f8196b174fb057e442fc2c85d2635f"
      },
      {
        "transactionIndex": 1,
        "blockNumber": 30510065,
        "transactionHash": "0x83a2775ed8bc832e1a4ae46b003b5b0987a4163cc79224d65fc9c38875f0b452",
        "address": "0x170E152DeDADaa7fE028b025B18748cbab7083bD",
        "topics": [
          "0x65779d3ca560e9bdec52d08ed75431a84df87cb7796f0e51965f6efc0f556c0f"
        ],
        "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038d7ea4c68000",
        "logIndex": 2,
        "blockHash": "0xb2eb3e02f35921cd1201f5a5eecbdf61c6f8196b174fb057e442fc2c85d2635f"
      },
      {
        "transactionIndex": 1,
        "blockNumber": 30510065,
        "transactionHash": "0x83a2775ed8bc832e1a4ae46b003b5b0987a4163cc79224d65fc9c38875f0b452",
        "address": "0x170E152DeDADaa7fE028b025B18748cbab7083bD",
        "topics": [
          "0xb1e6cc560df1786578fd4d1fe6e046f089a0c3be401e999b51a5112437911797"
        ],
        "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a7640000",
        "logIndex": 3,
        "blockHash": "0xb2eb3e02f35921cd1201f5a5eecbdf61c6f8196b174fb057e442fc2c85d2635f"
      },
      {
        "transactionIndex": 1,
        "blockNumber": 30510065,
        "transactionHash": "0x83a2775ed8bc832e1a4ae46b003b5b0987a4163cc79224d65fc9c38875f0b452",
        "address": "0x170E152DeDADaa7fE028b025B18748cbab7083bD",
        "topics": [
          "0x185c6391e7218e85de8a9346fc72024a0f88e1f04c186e6351230b93976ad50b"
        ],
        "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003635c9adc5dea00000",
        "logIndex": 4,
        "blockHash": "0xb2eb3e02f35921cd1201f5a5eecbdf61c6f8196b174fb057e442fc2c85d2635f"
      }
    ],
    "blockNumber": 30510065,
    "cumulativeGasUsed": "1322127",
    "status": 1,
    "byzantium": true
  },
  "args": [
    "1000000000000000",
    "1000000000000000000",
    "1000000000000000000000"
  ],
  "solcInputHash": "f20d616c1af6713a0e8ca9fae9d7bae7",
  "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minDepositAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxDepositAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxBalance\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"name\":\"BalanceWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"emitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"MaxBalanceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAmount\",\"type\":\"uint256\"}],\"name\":\"MaxDepositAmountSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAmount\",\"type\":\"uint256\"}],\"name\":\"MinDepositAmountSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"c__0xbf18ea64\",\"type\":\"bytes32\"}],\"name\":\"c_0xbf18ea64\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxDepositAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minDepositAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxDepositAmount\",\"type\":\"uint256\"}],\"name\":\"setMaxAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxBalance\",\"type\":\"uint256\"}],\"name\":\"setMaxBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minDepositAmount\",\"type\":\"uint256\"}],\"name\":\"setMinAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalDeposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"events\":{\"BalanceWithdrawn(address,uint256)\":{\"params\":{\"balance\":\"The current contract balance paid to the owner.\",\"owner\":\"The current owner and recipient of the funds.\"}},\"EtherReceived(uint256,address,uint256)\":{\"params\":{\"amount\":\"The amount deposited by the payer.\",\"depositId\":\"A unique sequencer number identifying the deposit.\",\"emitter\":\"The sending address of the payer.\"}},\"MaxBalanceSet(uint256,uint256)\":{\"params\":{\"newBalance\":\"The new maximum contract balance.\",\"previousBalance\":\"The previous maximum contract balance.\"}},\"MaxDepositAmountSet(uint256,uint256)\":{\"params\":{\"newAmount\":\"The new maximum deposit amount.\",\"previousAmount\":\"The previous maximum deposit amount.\"}},\"MinDepositAmountSet(uint256,uint256)\":{\"params\":{\"newAmount\":\"The new minimum deposit amount.\",\"previousAmount\":\"The previous minimum deposit amount.\"}}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_maxBalance\":\"The initial maximum contract balance.\",\"_maxDepositAmount\":\"The initial maximum deposit amount.\",\"_minDepositAmount\":\"The initial minimum deposit amount.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"setMaxAmount(uint256)\":{\"params\":{\"_maxDepositAmount\":\"The new maximum deposit amount.\"}},\"setMaxBalance(uint256)\":{\"params\":{\"_maxBalance\":\"The new maximum contract balance.\"}},\"setMinAmount(uint256)\":{\"params\":{\"_minDepositAmount\":\"The new minimum deposit amount.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"TeleportrDeposit Shout out to 0xclem for providing the inspiration for this contract: https://github.com/0xclem/teleportr/blob/main/contracts/BridgeDeposit.sol\",\"version\":1},\"userdoc\":{\"events\":{\"BalanceWithdrawn(address,uint256)\":{\"notice\":\"Emitted any time the balance is withdrawn by the owner.\"},\"EtherReceived(uint256,address,uint256)\":{\"notice\":\"Emitted any time a successful deposit is received.\"},\"MaxBalanceSet(uint256,uint256)\":{\"notice\":\"Emitted any time the contract maximum balance is set.\"},\"MaxDepositAmountSet(uint256,uint256)\":{\"notice\":\"Emitted any time the maximum deposit amount is set.\"},\"MinDepositAmountSet(uint256,uint256)\":{\"notice\":\"Emitted any time the minimum deposit amount is set.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Initializes a new TeleportrDeposit contract.\"},\"maxBalance()\":{\"notice\":\"The maximum balance the contract can hold after a receive.\"},\"maxDepositAmount()\":{\"notice\":\"The maximum amount that be deposited in a receive.\"},\"minDepositAmount()\":{\"notice\":\"The minimum amount that be deposited in a receive.\"},\"setMaxAmount(uint256)\":{\"notice\":\"Sets the maximum amount that can be deposited in a receive.\"},\"setMaxBalance(uint256)\":{\"notice\":\"Sets the maximum balance the contract can hold after a receive.\"},\"setMinAmount(uint256)\":{\"notice\":\"Sets the minimum amount that can be deposited in a receive.\"},\"totalDeposits()\":{\"notice\":\"The total number of successful deposits received.\"},\"withdrawBalance()\":{\"notice\":\"Sends the contract's current balance to the owner.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/L1/teleportr/TeleportrDeposit.sol\":\"TeleportrDeposit\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"contracts/L1/teleportr/TeleportrDeposit.sol\":{\"keccak256\":\"0x885673d5837399f19082826a2bc64889384a39f0999d003bfcca675a26ec2d74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d44b9d501288828c6fa026eaa02936301ff0e2037294747d7c1605fa93a598e0\",\"dweb:/ipfs/QmbQ2pQnvkTzuwns4azKVPmKvB2oPV6rJ6wL3ZE3vw6n15\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162001a6a38038062001a6a83398181016040528101906200003791906200054b565b620000576200004b6200043c60201b60201c565b6200044460201b60201c565b6200008a7e64b7c3d2e027eba5da5f5280491bfce7932df45fdf2e0891110c3dc3e84bf460001b6200050860201b60201c565b620000be7f0754617f84d3b5fc04f16a0983e82c729cb6d2698f728b30dfa934b5add9016960001b6200050860201b60201c565b620000f27f1cd5d3f0acece0d68e6ccf8bfd89b818133486ea9f082a4b9b7b11b6000baad560001b6200050860201b60201c565b826001819055506200012d7f30791823e64606c8be3e7feb8b103685a5aaff26eaa6bd2c7f3ce310352527be60001b6200050860201b60201c565b620001617f33d8a274a292fb8ba3cc7d2b767284bf7dc0c506646d5443215dab914e4ca6e860001b6200050860201b60201c565b816002819055506200019c7f50d9a49460146742cae39d07048c68aa13de2a770bed641810140d7a8973a70d60001b6200050860201b60201c565b620001d07f3d77b70ed2057214d5cd1b0ee90db5bba75d46a8e2c1c1175b1c3c6c7477c14260001b6200050860201b60201c565b806003819055506200020b7f942240fbaf8b00e69532f2fbe4ea09bf8f15876f36c4a0d73a3ece54aa0a522960001b6200050860201b60201c565b6200023f7f94060d265c2e1f35f4230c634aaf7f14185d0a42d6d8d5f35fe5492ece57cc0c60001b6200050860201b60201c565b60006004819055506200027b7f2c650db3dc7a065d861e08f687272c0e3d1fd605cd167042d67953202666742f60001b6200050860201b60201c565b620002af7f1b7587159c5f1160ede69f194a9e5c933514c192042fd3415bf2deb3f8f74b0760001b6200050860201b60201c565b7f65779d3ca560e9bdec52d08ed75431a84df87cb7796f0e51965f6efc0f556c0f600084604051620002e392919062000605565b60405180910390a16200031f7f14fdcec951a67568c0b528dd486521f51bdc14f531d71f850fa0bd2d9c45829460001b6200050860201b60201c565b620003537f59bcf0476adddb53cd05f64c33dcc191fa4a0a2cbb042239cce51dd2fc7b4b9a60001b6200050860201b60201c565b7fb1e6cc560df1786578fd4d1fe6e046f089a0c3be401e999b51a51124379117976000836040516200038792919062000605565b60405180910390a1620003c37fd10cdaddea1cf4d5c38c657c8184253dab5a819c5e4b0c88869a9564fd4b4c4960001b6200050860201b60201c565b620003f77fd8d1727cb6b16868521109e26db98e2148155c06bb992b0a0cb83f313921eb9160001b6200050860201b60201c565b7f185c6391e7218e85de8a9346fc72024a0f88e1f04c186e6351230b93976ad50b6000826040516200042b92919062000605565b60405180910390a150505062000632565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b50565b600080fd5b6000819050919050565b620005258162000510565b81146200053157600080fd5b50565b60008151905062000545816200051a565b92915050565b6000806000606084860312156200056757620005666200050b565b5b6000620005778682870162000534565b93505060206200058a8682870162000534565b92505060406200059d8682870162000534565b9150509250925092565b6000819050919050565b6000819050919050565b6000620005dc620005d6620005d084620005a7565b620005b1565b62000510565b9050919050565b620005ee81620005bb565b82525050565b620005ff8162000510565b82525050565b60006040820190506200061c6000830185620005e3565b6200062b6020830184620005f4565b9392505050565b61142880620006426000396000f3fe6080604052600436106100cb5760003560e01c80637d882097116100745780638ed832711161004e5780638ed83271146105365780639d51d9b714610561578063f2fde38b1461058a576103dc565b80637d882097146104b7578063897b0637146104e25780638da5cb5b1461050b576103dc565b8063715018a6116100a5578063715018a61461044c57806373ad468a146104635780637d63d0cd1461048e576103dc565b80634fe47f70146103e15780635fd8c7101461040a578063645006ca14610421576103dc565b366103dc576100fc7f5e91eb4e146243c5fc10218c63813d75795efa063ee048a70076cb6ecc61587d60001b6105b3565b6101287f73260b5f05e45d61e42c373897b87998b1a5a7bd70f9af562c4b361e04f0379d60001b6105b3565b60015434101561016d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016490611029565b60405180910390fd5b6101997f23991968fdcb96adbea8af7b4742a78253230d9f76ee5eff35c987310043166a60001b6105b3565b6101c57f249aaae9e0e29e3e4031f40b7d96a68f16ea91f027ace995e46bfdaeffc6f39160001b6105b3565b6101f17fbce8df54e38e3ccc6f9f6481c255cd9804ade53c913156b5c2da09a92946cb2360001b6105b3565b600254341115610236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022d90611095565b60405180910390fd5b6102627f2bd55ff7de06b7bc9a18ccd9faec6cc761628852dff2df2d03f1f08dc28285d660001b6105b3565b61028e7f8ad51416e28945719acfb674a9f9e6907225e745b1f9e523e751b4be1bdaac4e60001b6105b3565b6102ba7fff12f46047487761ec7b26043d01a917e9aecfcdd47cd91d771c8ea30d37e8b860001b6105b3565b6003544711156102ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f690611101565b60405180910390fd5b61032a7e3763c76368796ee311ec1b0ddfd3708e87b99464363f5ac0147716b637edb160001b6105b3565b6103567f79e71c65a22716d1eba9afec74511a85d8fe55b5f6a98109655aaf23bbcf27f060001b6105b3565b343373ffffffffffffffffffffffffffffffffffffffff166004547f2d27851832fcac28a0d4af1344f01fed7ffcfd15171c14c564a0c42aa57ae5c060405160405180910390a46103c97f1da34b6132b7d28e2dd5dcc9cc69abac10b228d460afab0c9cfbc955300ed96c60001b6105b3565b6001600460008282540192505081905550005b600080fd5b3480156103ed57600080fd5b506104086004803603810190610403919061115c565b6105b6565b005b34801561041657600080fd5b5061041f610753565b005b34801561042d57600080fd5b50610436610a05565b6040516104439190611198565b60405180910390f35b34801561045857600080fd5b50610461610a0b565b005b34801561046f57600080fd5b50610478610a93565b6040516104859190611198565b60405180910390f35b34801561049a57600080fd5b506104b560048036038101906104b091906111e9565b6105b3565b005b3480156104c357600080fd5b506104cc610a99565b6040516104d99190611198565b60405180910390f35b3480156104ee57600080fd5b506105096004803603810190610504919061115c565b610a9f565b005b34801561051757600080fd5b50610520610c3c565b60405161052d9190611257565b60405180910390f35b34801561054257600080fd5b5061054b610c65565b6040516105589190611198565b60405180910390f35b34801561056d57600080fd5b506105886004803603810190610583919061115c565b610c6b565b005b34801561059657600080fd5b506105b160048036038101906105ac919061129e565b610e08565b005b50565b6105be610f00565b73ffffffffffffffffffffffffffffffffffffffff166105dc610c3c565b73ffffffffffffffffffffffffffffffffffffffff1614610632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062990611317565b60405180910390fd5b61065e7ffee123fad7ec16093a6435cf2c5d00b4571ad879afd34fb5bbb0d90914f7898160001b6105b3565b61068a7f23b16a5b6e035bf28fefd8536d3d907084332ed11eaad0c731ab33bdf63728ab60001b6105b3565b6106b67fe3990e89e60d0565ab8d3b4f20893f23ea714ef00b2b971bfdca4ed564f9d7bc60001b6105b3565b7fb1e6cc560df1786578fd4d1fe6e046f089a0c3be401e999b51a5112437911797600254826040516106e9929190611337565b60405180910390a161071d7f7dcc232dd4ea9159fcc353f5151cc835e78ec60204ecd0bd7d926246ba5419ab60001b6105b3565b6107497fe638d78dd410ed0ed44e18bb848eaffdebe2397f929549a92d78c434746b5a1960001b6105b3565b8060028190555050565b61075b610f00565b73ffffffffffffffffffffffffffffffffffffffff16610779610c3c565b73ffffffffffffffffffffffffffffffffffffffff16146107cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c690611317565b60405180910390fd5b6107fb7fc6b27d465e4053b68a3388de9da95b673c18eb4989d1008c2e06915f910a066060001b6105b3565b6108277f2fca1e77c51979dc28ae8dc9fc4db5c9ce9be137728cb0a61cecdd0d78850eb160001b6105b3565b6108537fec90bc2e2104a1823652f6828778f93075a8d31d8e3ac2bfd179ffcbfe51739b60001b6105b3565b600061085d610c3c565b905061088b7fb45dbc3fc05181c7356e9244306dddabaf0b75b05688c615d0e7a4833ce1b98860001b6105b3565b6108b77fbc38348ea4a9b5cb61c62ee5badf6ec802094b56806baef5ac173cb7461a82d160001b6105b3565b60004790506108e87ff96c8825c2177b3c21775b49f255faad2ce4e7da2e10326bacd5248e8b712dff60001b6105b3565b6109147fd43f2aaa632b9ffeb71c574863f0f8a1552a8f75769c81b9552396c6190eff4160001b6105b3565b8173ffffffffffffffffffffffffffffffffffffffff167fddc398b321237a8d40ac914388309c2f52a08c134e4dc4ce61e32f57cb7d80f18260405161095a9190611198565b60405180910390a261098e7f3c0d0013f3a63b85c4bd529a45060dc1444fc884d2c8cc3cc575aa3a4710e27860001b6105b3565b6109ba7f5b79781fe133b568105927be0b812215d4bec71e3c2215d5d4758c9bac65c62760001b6105b3565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a00573d6000803e3d6000fd5b505050565b60015481565b610a13610f00565b73ffffffffffffffffffffffffffffffffffffffff16610a31610c3c565b73ffffffffffffffffffffffffffffffffffffffff1614610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e90611317565b60405180910390fd5b610a916000610f08565b565b60035481565b60045481565b610aa7610f00565b73ffffffffffffffffffffffffffffffffffffffff16610ac5610c3c565b73ffffffffffffffffffffffffffffffffffffffff1614610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290611317565b60405180910390fd5b610b477fb433caf62ec08507ab7af9b492ca9c31d5bcdd278f6004a28794eb4106b5cf3e60001b6105b3565b610b737f897c1d74774bdd740f697ebe75144626bd7a18205b591e95d5ad4f8de174ea7060001b6105b3565b610b9f7fd9e9dc42b180f2f843f8d913ef4d43c5f8f8bea2ec782b7a740d2561a257cde260001b6105b3565b7f65779d3ca560e9bdec52d08ed75431a84df87cb7796f0e51965f6efc0f556c0f60015482604051610bd2929190611337565b60405180910390a1610c067f8da41a211fc748f0027d0993815cc4ca3cc376d4ae4b4471d749b0984a57239960001b6105b3565b610c327f4aa4ae558612ce08434cb24e0473deb7e6c2752c6a90ce39f24fd88b9cfe6d7d60001b6105b3565b8060018190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60025481565b610c73610f00565b73ffffffffffffffffffffffffffffffffffffffff16610c91610c3c565b73ffffffffffffffffffffffffffffffffffffffff1614610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90611317565b60405180910390fd5b610d137fce1bcd2174ef6ef3da0e36105bd18a71486b853321242fc762fb2a5064cb2e5360001b6105b3565b610d3f7f96e568f68ceba0bb138445fe1d28ff043c88b4482d666e86c6663627a794d00e60001b6105b3565b610d6b7f83921b77b4f8764a56568881a61495190986808cf7eaa1d617e46cd7e7b52f7360001b6105b3565b7f185c6391e7218e85de8a9346fc72024a0f88e1f04c186e6351230b93976ad50b60035482604051610d9e929190611337565b60405180910390a1610dd27f5e9d45d2a21d81f43304c5d88d8c4b9fe0060aae15b5abf9547f24437e7f90fc60001b6105b3565b610dfe7f819805374cc1d4a4ad5b35e7e174e0b0ecb50f725597510954c8cd97e051b56760001b6105b3565b8060038190555050565b610e10610f00565b73ffffffffffffffffffffffffffffffffffffffff16610e2e610c3c565b73ffffffffffffffffffffffffffffffffffffffff1614610e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7b90611317565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb906113d2565b60405180910390fd5b610efd81610f08565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600082825260208201905092915050565b7f4465706f73697420616d6f756e7420697320746f6f20736d616c6c0000000000600082015250565b6000611013601b83610fcc565b915061101e82610fdd565b602082019050919050565b6000602082019050818103600083015261104281611006565b9050919050565b7f4465706f73697420616d6f756e7420697320746f6f2062696700000000000000600082015250565b600061107f601983610fcc565b915061108a82611049565b602082019050919050565b600060208201905081810360008301526110ae81611072565b9050919050565b7f436f6e7472616374206d61782062616c616e6365206578636565646564000000600082015250565b60006110eb601d83610fcc565b91506110f6826110b5565b602082019050919050565b6000602082019050818103600083015261111a816110de565b9050919050565b600080fd5b6000819050919050565b61113981611126565b811461114457600080fd5b50565b60008135905061115681611130565b92915050565b60006020828403121561117257611171611121565b5b600061118084828501611147565b91505092915050565b61119281611126565b82525050565b60006020820190506111ad6000830184611189565b92915050565b6000819050919050565b6111c6816111b3565b81146111d157600080fd5b50565b6000813590506111e3816111bd565b92915050565b6000602082840312156111ff576111fe611121565b5b600061120d848285016111d4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061124182611216565b9050919050565b61125181611236565b82525050565b600060208201905061126c6000830184611248565b92915050565b61127b81611236565b811461128657600080fd5b50565b60008135905061129881611272565b92915050565b6000602082840312156112b4576112b3611121565b5b60006112c284828501611289565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611301602083610fcc565b915061130c826112cb565b602082019050919050565b60006020820190508181036000830152611330816112f4565b9050919050565b600060408201905061134c6000830185611189565b6113596020830184611189565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006113bc602683610fcc565b91506113c782611360565b604082019050919050565b600060208201905081810360008301526113eb816113af565b905091905056fea264697066735822122037015225a63ecab5a43f7590abb54032a0ddd923e67369b73360917b27c6e14c64736f6c63430008090033",
  "deployedBytecode": "0x6080604052600436106100cb5760003560e01c80637d882097116100745780638ed832711161004e5780638ed83271146105365780639d51d9b714610561578063f2fde38b1461058a576103dc565b80637d882097146104b7578063897b0637146104e25780638da5cb5b1461050b576103dc565b8063715018a6116100a5578063715018a61461044c57806373ad468a146104635780637d63d0cd1461048e576103dc565b80634fe47f70146103e15780635fd8c7101461040a578063645006ca14610421576103dc565b366103dc576100fc7f5e91eb4e146243c5fc10218c63813d75795efa063ee048a70076cb6ecc61587d60001b6105b3565b6101287f73260b5f05e45d61e42c373897b87998b1a5a7bd70f9af562c4b361e04f0379d60001b6105b3565b60015434101561016d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016490611029565b60405180910390fd5b6101997f23991968fdcb96adbea8af7b4742a78253230d9f76ee5eff35c987310043166a60001b6105b3565b6101c57f249aaae9e0e29e3e4031f40b7d96a68f16ea91f027ace995e46bfdaeffc6f39160001b6105b3565b6101f17fbce8df54e38e3ccc6f9f6481c255cd9804ade53c913156b5c2da09a92946cb2360001b6105b3565b600254341115610236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022d90611095565b60405180910390fd5b6102627f2bd55ff7de06b7bc9a18ccd9faec6cc761628852dff2df2d03f1f08dc28285d660001b6105b3565b61028e7f8ad51416e28945719acfb674a9f9e6907225e745b1f9e523e751b4be1bdaac4e60001b6105b3565b6102ba7fff12f46047487761ec7b26043d01a917e9aecfcdd47cd91d771c8ea30d37e8b860001b6105b3565b6003544711156102ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f690611101565b60405180910390fd5b61032a7e3763c76368796ee311ec1b0ddfd3708e87b99464363f5ac0147716b637edb160001b6105b3565b6103567f79e71c65a22716d1eba9afec74511a85d8fe55b5f6a98109655aaf23bbcf27f060001b6105b3565b343373ffffffffffffffffffffffffffffffffffffffff166004547f2d27851832fcac28a0d4af1344f01fed7ffcfd15171c14c564a0c42aa57ae5c060405160405180910390a46103c97f1da34b6132b7d28e2dd5dcc9cc69abac10b228d460afab0c9cfbc955300ed96c60001b6105b3565b6001600460008282540192505081905550005b600080fd5b3480156103ed57600080fd5b506104086004803603810190610403919061115c565b6105b6565b005b34801561041657600080fd5b5061041f610753565b005b34801561042d57600080fd5b50610436610a05565b6040516104439190611198565b60405180910390f35b34801561045857600080fd5b50610461610a0b565b005b34801561046f57600080fd5b50610478610a93565b6040516104859190611198565b60405180910390f35b34801561049a57600080fd5b506104b560048036038101906104b091906111e9565b6105b3565b005b3480156104c357600080fd5b506104cc610a99565b6040516104d99190611198565b60405180910390f35b3480156104ee57600080fd5b506105096004803603810190610504919061115c565b610a9f565b005b34801561051757600080fd5b50610520610c3c565b60405161052d9190611257565b60405180910390f35b34801561054257600080fd5b5061054b610c65565b6040516105589190611198565b60405180910390f35b34801561056d57600080fd5b506105886004803603810190610583919061115c565b610c6b565b005b34801561059657600080fd5b506105b160048036038101906105ac919061129e565b610e08565b005b50565b6105be610f00565b73ffffffffffffffffffffffffffffffffffffffff166105dc610c3c565b73ffffffffffffffffffffffffffffffffffffffff1614610632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062990611317565b60405180910390fd5b61065e7ffee123fad7ec16093a6435cf2c5d00b4571ad879afd34fb5bbb0d90914f7898160001b6105b3565b61068a7f23b16a5b6e035bf28fefd8536d3d907084332ed11eaad0c731ab33bdf63728ab60001b6105b3565b6106b67fe3990e89e60d0565ab8d3b4f20893f23ea714ef00b2b971bfdca4ed564f9d7bc60001b6105b3565b7fb1e6cc560df1786578fd4d1fe6e046f089a0c3be401e999b51a5112437911797600254826040516106e9929190611337565b60405180910390a161071d7f7dcc232dd4ea9159fcc353f5151cc835e78ec60204ecd0bd7d926246ba5419ab60001b6105b3565b6107497fe638d78dd410ed0ed44e18bb848eaffdebe2397f929549a92d78c434746b5a1960001b6105b3565b8060028190555050565b61075b610f00565b73ffffffffffffffffffffffffffffffffffffffff16610779610c3c565b73ffffffffffffffffffffffffffffffffffffffff16146107cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c690611317565b60405180910390fd5b6107fb7fc6b27d465e4053b68a3388de9da95b673c18eb4989d1008c2e06915f910a066060001b6105b3565b6108277f2fca1e77c51979dc28ae8dc9fc4db5c9ce9be137728cb0a61cecdd0d78850eb160001b6105b3565b6108537fec90bc2e2104a1823652f6828778f93075a8d31d8e3ac2bfd179ffcbfe51739b60001b6105b3565b600061085d610c3c565b905061088b7fb45dbc3fc05181c7356e9244306dddabaf0b75b05688c615d0e7a4833ce1b98860001b6105b3565b6108b77fbc38348ea4a9b5cb61c62ee5badf6ec802094b56806baef5ac173cb7461a82d160001b6105b3565b60004790506108e87ff96c8825c2177b3c21775b49f255faad2ce4e7da2e10326bacd5248e8b712dff60001b6105b3565b6109147fd43f2aaa632b9ffeb71c574863f0f8a1552a8f75769c81b9552396c6190eff4160001b6105b3565b8173ffffffffffffffffffffffffffffffffffffffff167fddc398b321237a8d40ac914388309c2f52a08c134e4dc4ce61e32f57cb7d80f18260405161095a9190611198565b60405180910390a261098e7f3c0d0013f3a63b85c4bd529a45060dc1444fc884d2c8cc3cc575aa3a4710e27860001b6105b3565b6109ba7f5b79781fe133b568105927be0b812215d4bec71e3c2215d5d4758c9bac65c62760001b6105b3565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a00573d6000803e3d6000fd5b505050565b60015481565b610a13610f00565b73ffffffffffffffffffffffffffffffffffffffff16610a31610c3c565b73ffffffffffffffffffffffffffffffffffffffff1614610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e90611317565b60405180910390fd5b610a916000610f08565b565b60035481565b60045481565b610aa7610f00565b73ffffffffffffffffffffffffffffffffffffffff16610ac5610c3c565b73ffffffffffffffffffffffffffffffffffffffff1614610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290611317565b60405180910390fd5b610b477fb433caf62ec08507ab7af9b492ca9c31d5bcdd278f6004a28794eb4106b5cf3e60001b6105b3565b610b737f897c1d74774bdd740f697ebe75144626bd7a18205b591e95d5ad4f8de174ea7060001b6105b3565b610b9f7fd9e9dc42b180f2f843f8d913ef4d43c5f8f8bea2ec782b7a740d2561a257cde260001b6105b3565b7f65779d3ca560e9bdec52d08ed75431a84df87cb7796f0e51965f6efc0f556c0f60015482604051610bd2929190611337565b60405180910390a1610c067f8da41a211fc748f0027d0993815cc4ca3cc376d4ae4b4471d749b0984a57239960001b6105b3565b610c327f4aa4ae558612ce08434cb24e0473deb7e6c2752c6a90ce39f24fd88b9cfe6d7d60001b6105b3565b8060018190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60025481565b610c73610f00565b73ffffffffffffffffffffffffffffffffffffffff16610c91610c3c565b73ffffffffffffffffffffffffffffffffffffffff1614610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde90611317565b60405180910390fd5b610d137fce1bcd2174ef6ef3da0e36105bd18a71486b853321242fc762fb2a5064cb2e5360001b6105b3565b610d3f7f96e568f68ceba0bb138445fe1d28ff043c88b4482d666e86c6663627a794d00e60001b6105b3565b610d6b7f83921b77b4f8764a56568881a61495190986808cf7eaa1d617e46cd7e7b52f7360001b6105b3565b7f185c6391e7218e85de8a9346fc72024a0f88e1f04c186e6351230b93976ad50b60035482604051610d9e929190611337565b60405180910390a1610dd27f5e9d45d2a21d81f43304c5d88d8c4b9fe0060aae15b5abf9547f24437e7f90fc60001b6105b3565b610dfe7f819805374cc1d4a4ad5b35e7e174e0b0ecb50f725597510954c8cd97e051b56760001b6105b3565b8060038190555050565b610e10610f00565b73ffffffffffffffffffffffffffffffffffffffff16610e2e610c3c565b73ffffffffffffffffffffffffffffffffffffffff1614610e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7b90611317565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb906113d2565b60405180910390fd5b610efd81610f08565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600082825260208201905092915050565b7f4465706f73697420616d6f756e7420697320746f6f20736d616c6c0000000000600082015250565b6000611013601b83610fcc565b915061101e82610fdd565b602082019050919050565b6000602082019050818103600083015261104281611006565b9050919050565b7f4465706f73697420616d6f756e7420697320746f6f2062696700000000000000600082015250565b600061107f601983610fcc565b915061108a82611049565b602082019050919050565b600060208201905081810360008301526110ae81611072565b9050919050565b7f436f6e7472616374206d61782062616c616e6365206578636565646564000000600082015250565b60006110eb601d83610fcc565b91506110f6826110b5565b602082019050919050565b6000602082019050818103600083015261111a816110de565b9050919050565b600080fd5b6000819050919050565b61113981611126565b811461114457600080fd5b50565b60008135905061115681611130565b92915050565b60006020828403121561117257611171611121565b5b600061118084828501611147565b91505092915050565b61119281611126565b82525050565b60006020820190506111ad6000830184611189565b92915050565b6000819050919050565b6111c6816111b3565b81146111d157600080fd5b50565b6000813590506111e3816111bd565b92915050565b6000602082840312156111ff576111fe611121565b5b600061120d848285016111d4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061124182611216565b9050919050565b61125181611236565b82525050565b600060208201905061126c6000830184611248565b92915050565b61127b81611236565b811461128657600080fd5b50565b60008135905061129881611272565b92915050565b6000602082840312156112b4576112b3611121565b5b60006112c284828501611289565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611301602083610fcc565b915061130c826112cb565b602082019050919050565b60006020820190508181036000830152611330816112f4565b9050919050565b600060408201905061134c6000830185611189565b6113596020830184611189565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006113bc602683610fcc565b91506113c782611360565b604082019050919050565b600060208201905081810360008301526113eb816113af565b905091905056fea264697066735822122037015225a63ecab5a43f7590abb54032a0ddd923e67369b73360917b27c6e14c64736f6c63430008090033",
  "devdoc": {
    "events": {
      "BalanceWithdrawn(address,uint256)": {
        "params": {
          "balance": "The current contract balance paid to the owner.",
          "owner": "The current owner and recipient of the funds."
        }
      },
      "EtherReceived(uint256,address,uint256)": {
        "params": {
          "amount": "The amount deposited by the payer.",
          "depositId": "A unique sequencer number identifying the deposit.",
          "emitter": "The sending address of the payer."
        }
      },
      "MaxBalanceSet(uint256,uint256)": {
        "params": {
          "newBalance": "The new maximum contract balance.",
          "previousBalance": "The previous maximum contract balance."
        }
      },
      "MaxDepositAmountSet(uint256,uint256)": {
        "params": {
          "newAmount": "The new maximum deposit amount.",
          "previousAmount": "The previous maximum deposit amount."
        }
      },
      "MinDepositAmountSet(uint256,uint256)": {
        "params": {
          "newAmount": "The new minimum deposit amount.",
          "previousAmount": "The previous minimum deposit amount."
        }
      }
    },
    "kind": "dev",
    "methods": {
      "constructor": {
        "params": {
          "_maxBalance": "The initial maximum contract balance.",
          "_maxDepositAmount": "The initial maximum deposit amount.",
          "_minDepositAmount": "The initial minimum deposit amount."
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "renounceOwnership()": {
        "details": "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."
      },
      "setMaxAmount(uint256)": {
        "params": {
          "_maxDepositAmount": "The new maximum deposit amount."
        }
      },
      "setMaxBalance(uint256)": {
        "params": {
          "_maxBalance": "The new maximum contract balance."
        }
      },
      "setMinAmount(uint256)": {
        "params": {
          "_minDepositAmount": "The new minimum deposit amount."
        }
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "title": "TeleportrDeposit Shout out to 0xclem for providing the inspiration for this contract: https://github.com/0xclem/teleportr/blob/main/contracts/BridgeDeposit.sol",
    "version": 1
  },
  "userdoc": {
    "events": {
      "BalanceWithdrawn(address,uint256)": {
        "notice": "Emitted any time the balance is withdrawn by the owner."
      },
      "EtherReceived(uint256,address,uint256)": {
        "notice": "Emitted any time a successful deposit is received."
      },
      "MaxBalanceSet(uint256,uint256)": {
        "notice": "Emitted any time the contract maximum balance is set."
      },
      "MaxDepositAmountSet(uint256,uint256)": {
        "notice": "Emitted any time the maximum deposit amount is set."
      },
      "MinDepositAmountSet(uint256,uint256)": {
        "notice": "Emitted any time the minimum deposit amount is set."
      }
    },
    "kind": "user",
    "methods": {
      "constructor": {
        "notice": "Initializes a new TeleportrDeposit contract."
      },
      "maxBalance()": {
        "notice": "The maximum balance the contract can hold after a receive."
      },
      "maxDepositAmount()": {
        "notice": "The maximum amount that be deposited in a receive."
      },
      "minDepositAmount()": {
        "notice": "The minimum amount that be deposited in a receive."
      },
      "setMaxAmount(uint256)": {
        "notice": "Sets the maximum amount that can be deposited in a receive."
      },
      "setMaxBalance(uint256)": {
        "notice": "Sets the maximum balance the contract can hold after a receive."
      },
      "setMinAmount(uint256)": {
        "notice": "Sets the minimum amount that can be deposited in a receive."
      },
      "totalDeposits()": {
        "notice": "The total number of successful deposits received."
      },
      "withdrawBalance()": {
        "notice": "Sends the contract's current balance to the owner."
      }
    },
    "version": 1
  },
  "storageLayout": {
    "storage": [
      {
        "astId": 393,
        "contract": "contracts/L1/teleportr/TeleportrDeposit.sol:TeleportrDeposit",
        "label": "_owner",
        "offset": 0,
        "slot": "0",
        "type": "t_address"
      },
      {
        "astId": 7830,
        "contract": "contracts/L1/teleportr/TeleportrDeposit.sol:TeleportrDeposit",
        "label": "minDepositAmount",
        "offset": 0,
        "slot": "1",
        "type": "t_uint256"
      },
      {
        "astId": 7833,
        "contract": "contracts/L1/teleportr/TeleportrDeposit.sol:TeleportrDeposit",
        "label": "maxDepositAmount",
        "offset": 0,
        "slot": "2",
        "type": "t_uint256"
      },
      {
        "astId": 7836,
        "contract": "contracts/L1/teleportr/TeleportrDeposit.sol:TeleportrDeposit",
        "label": "maxBalance",
        "offset": 0,
        "slot": "3",
        "type": "t_uint256"
      },
      {
        "astId": 7839,
        "contract": "contracts/L1/teleportr/TeleportrDeposit.sol:TeleportrDeposit",
        "label": "totalDeposits",
        "offset": 0,
        "slot": "4",
        "type": "t_uint256"
      }
    ],
    "types": {
      "t_address": {
        "encoding": "inplace",
        "label": "address",
        "numberOfBytes": "20"
      },
      "t_uint256": {
        "encoding": "inplace",
        "label": "uint256",
        "numberOfBytes": "32"
      }
    }
  }
}