{
  "_format": "hh-sol-artifact-1",
  "contractName": "Diamond",
  "sourceName": "contracts/diamond/Diamond.sol",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "facet",
              "type": "address"
            },
            {
              "internalType": "enum FacetCutAction",
              "name": "action",
              "type": "uint8"
            },
            {
              "internalType": "bytes4[]",
              "name": "selectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct FacetCut[]",
          "name": "cuts",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct Initialization[]",
          "name": "initializations",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "payable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "facet",
          "type": "address"
        }
      ],
      "name": "EmptyFacet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "EmptyInitCallData",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "EtherReceptionDisabled",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "facet",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        }
      ],
      "name": "FunctionAlreadyPresent",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        }
      ],
      "name": "FunctionNotFound",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "InitCallReverted",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        }
      ],
      "name": "ModifyingImmutableFunction",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "facet",
          "type": "address"
        }
      ],
      "name": "NonContractFacet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "NonContractInitCallTarget",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "facet",
          "type": "address"
        }
      ],
      "name": "RemovingWithNonZeroAddressFacet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "facet",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        }
      ],
      "name": "ReplacingFunctionByItself",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAddressTargetInitCallButNonEmptyData",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "facet",
              "type": "address"
            },
            {
              "internalType": "enum FacetCutAction",
              "name": "action",
              "type": "uint8"
            },
            {
              "internalType": "bytes4[]",
              "name": "selectors",
              "type": "bytes4[]"
            }
          ],
          "indexed": false,
          "internalType": "struct FacetCut[]",
          "name": "cuts",
          "type": "tuple[]"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "DiamondCut",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x6080604052610f9180380380610014816101ea565b9283398101906040818303126100b65780516001600160401b0381116100b65781019082601f830112156100b6578151916100566100518461020f565b6101ea565b9260208085838152019160051b830101918583116100b65760208101915b8383106100bb57505050506020810151926001600160401b0384116100b6576100a7936100a19201610278565b9061035b565b6040516101389081610df98239f35b600080fd5b82516001600160401b0381116100b65782016060818903601f1901126100b6576100e36101a7565b906100f060208201610226565b8252604081015160038110156100b657602083015260608101516001600160401b0381116100b657602091010188601f820112156100b65780516101366100518261020f565b9160208084848152019260051b820101908b82116100b657602001915b818310610170575050506040820152815260209283019201610074565b82516001600160e01b0319811681036100b657815260209283019201610153565b634e487b7160e01b600052604160045260246000fd5b60405190606082016001600160401b038111838210176101c657604052565b610191565b60408051919082016001600160401b038111838210176101c657604052565b6040519190601f01601f191682016001600160401b038111838210176101c657604052565b6001600160401b0381116101c65760051b60200190565b51906001600160a01b03821682036100b657565b6001600160401b0381116101c657601f01601f191660200190565b60005b8381106102685750506000910152565b8181015183820152602001610258565b81601f820112156100b6578051906102926100518361020f565b9260208085858152019360051b830101918183116100b65760208101935b8385106102bf57505050505090565b84516001600160401b0381116100b65782016040818503601f1901126100b6576102e76101cb565b906102f460208201610226565b825260408101516001600160401b0381116100b65760209101019184601f840112156100b6578251916103296100518461023a565b83815286602085870101116100b65761034c602095948695868085019101610255565b838201528152019401936102b0565b90610380610379600080516020610f518339815191525461ffff1690565b61ffff1690565b8060009160078216610528575b84516000905b808210610480575050810361045d575b60078116610430575b505080519060005b8281106103f4575050506103ef7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6739160405191829182610588565b0390a1565b8061042a6104156104076001948661053e565b51516001600160a01b031690565b6020610421848761053e565b510151906106d2565b016103b4565b6104559060031c5b600052600080516020610f71833981519152602052604060002090565b5538806103ac565b600080516020610f51833981519152805461ffff191661ffff83161790556103a3565b909261048c848861053e565b5190604082015151156105095760208201516104a781610568565b6104b081610568565b806104ce5750906001956104c392610c6c565b9490935b0190610393565b806104de60019297949397610568565b036104f457906104ef600192610b12565b6104c7565b600195610501929561079c565b9490936104c7565b815163b39ad1bb60e01b6000526001600160a01b031660045260246000fd5b91506105376104388260031c90565b549161038d565b80518210156105525760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b6003111561057257565b634e487b7160e01b600052602160045260246000fd5b9060608201916060815281518093526080810192602060808260051b8401019301936000905b8282106105da57505060006020830152506105d792506040818303910152602090600081520190565b90565b838503607f19018152855180516001600160a01b03168652602081015194959394929391926060830191600382101561057257604060809160209384870152015193606060408201528451809452019201906000905b80821061064e575050506020958601959094939260010191016105ae565b82516001600160e01b031916845260209384019390920191600190910190610630565b3d15610692573d906106856100518361023a565b9182523d6000602084013e565b606090565b909160609260018060a01b03168252604060208301526106c68151809281604086015260208686019101610255565b601f01601f1916010190565b906001600160a01b038216806106fd57509050516106ec57565b6301cd29fb60e71b60005260046000fd5b81511561077f57300361075b575b600080825160208401855af490610720610671565b911561072b57505050565b815192831561073b575050602001fd5b61075760405192839263e83ddca560e01b845260048401610697565b0390fd5b813b61070b5763df3b7fa960e01b6000526001600160a01b03821660045260246000fd5b623ca88560ea1b6000526001600160a01b03831660045260246000fd5b82516001600160a01b031680610af5575060076107bc8295939560031c90565b9116916000915b60408501518051841015610ae7576107de846107ec9261053e565b516001600160e01b03191690565b9561081887600080516020610f318339815191529063ffffffff60e01b16600052602052604060002090565b549461086e61086261085c61084e8b600080516020610f318339815191529063ffffffff60e01b16600052602052604060002090565b546001600160601b03191690565b60601c90565b6001600160a01b031690565b15610ac857306108a861086261085c61084e8c600080516020610f318339815191529063ffffffff60e01b16600052602052604060002090565b14610aa95781610a9957505060001901916108db83600080516020610f7183398151915290600052602052604060002090565b54936007965b6000610942610901886108f48c60051b90565b1b63ffffffff60e01b1690565b6001600160e01b031980821694919082168503610a1f575b506001600160e01b0319166000908152600080516020610f318339815191526020526040902090565b5561095e600761095661ffff851660031c90565b931660051b90565b90828614610a0257906109be9161098d84600080516020610f7183398151915290600052602052604060002090565b5490821c9163ffffffff60e01b901c19161791600080516020610f7183398151915290600052602052604060002090565b555b85156109d3575b929492600101916107c3565b925060006109f983600080516020610f7183398151915290600052602052604060002090565b556000926109c7565b6001600160e01b0319821c1990961695901c9490941793506109c0565b610a92610a60610a5361084e84600080516020610f318339815191529063ffffffff60e01b16600052602052604060002090565b6001600160601b03191690565b60018060601b0388161791600080516020610f318339815191529063ffffffff60e01b16600052602052604060002090565b5538610919565b60001901969094919391906108e1565b6363c95ddd60e11b6000526001600160e01b0319881660045260246000fd5b630a82dd7360e31b6000526001600160e01b0319881660045260246000fd5b5090935060031b9050179190565b6391a5e1a360e01b6000526001600160a01b031660045260246000fd5b80516001600160a01b031690813b15610c4e57604001805151606083901b6001600160601b0319169290916001600160a01b0382169060005b848110610b5a57505050505050565b610b686107de82845161053e565b6001600160e01b031981166000908152600080516020610f3183398151915260205260409020548060601c8015610c2f57308114610c10578514610be4576001600160e01b03199091166000908152600080516020610f3183398151915260205260409020600192916001600160601b03168817905501610b4b565b6373d5d79760e01b6000526001600160a01b0386166004526001600160e01b0319821660245260446000fd5b6363c95ddd60e11b6000526001600160e01b0319831660045260246000fd5b630a82dd7360e31b6000526001600160e01b0319831660045260246000fd5b63190c2f0160e11b6000526001600160a01b03821660045260246000fd5b825191939290916001600160a01b03163081141580610def575b610dd257506040810190815151906000925b828410610ca757505050509190565b90919293610cb96107de86845161053e565b96610ceb61085c61084e8a600080516020610f318339815191529063ffffffff60e01b16600052602052604060002090565b6001600160a01b038116610da7575083516001600160e01b031989166000908152600080516020610f318339815191526020526040902060e0929160601b6001600160601b03191684179055610d446007841660051b90565b9863ffffffff831b16891c9063ffffffff831b8a1c1916179714610d72575b60018091019401929190610c98565b95610d9e610d808860031c90565b600080516020610f7183398151915290600052602052604060002090565b55600095610d63565b635f19e89b60e11b6000526001600160a01b03166004526001600160e01b0319881660245260446000fd5b63190c2f0160e11b6000526001600160a01b031660045260246000fd5b50803b15610c8656fe608060405236156100d8577fffffffff0000000000000000000000000000000000000000000000000000000060003516806000527f65d27473a5b05206737961f69a3b7a55316862d7a6ef82b3f5455fe92fab43e260205260406000205460601c9081156100885760008083368280378136915af43d6000803e15610083573d6000f35b3d6000fd5b7fffffffff00000000000000000000000000000000000000000000000000000000907f5416eb98000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b7f7b5c32900000000000000000000000000000000000000000000000000000000060005260046000fdfea2646970667358221220120b5ccaef7a982bab4fa37a76f400415985543c4f2263483a24e1115a0b64ef64736f6c634300081e003365d27473a5b05206737961f69a3b7a55316862d7a6ef82b3f5455fe92fab43e265d27473a5b05206737961f69a3b7a55316862d7a6ef82b3f5455fe92fab43e365d27473a5b05206737961f69a3b7a55316862d7a6ef82b3f5455fe92fab43e4",
  "deployedBytecode": "0x608060405236156100d8577fffffffff0000000000000000000000000000000000000000000000000000000060003516806000527f65d27473a5b05206737961f69a3b7a55316862d7a6ef82b3f5455fe92fab43e260205260406000205460601c9081156100885760008083368280378136915af43d6000803e15610083573d6000f35b3d6000fd5b7fffffffff00000000000000000000000000000000000000000000000000000000907f5416eb98000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b7f7b5c32900000000000000000000000000000000000000000000000000000000060005260046000fdfea2646970667358221220120b5ccaef7a982bab4fa37a76f400415985543c4f2263483a24e1115a0b64ef64736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
