{
  "_format": "hh-sol-artifact-1",
  "contractName": "InputVerifier",
  "sourceName": "contracts/InputVerifier.native.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "AddressEmptyCode",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "ERC1967InvalidImplementation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1967NonPayable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UUPSUnauthorizedCallContext",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "slot",
          "type": "bytes32"
        }
      ],
      "name": "UUPSUnsupportedProxiableUUID",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferStarted",
      "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"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "HANDLE_VERSION",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UPGRADE_INTERFACE_VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getKMSVerifierAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVersion",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "initialOwner",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "kmsVerifier",
      "outputs": [
        {
          "internalType": "contract KMSVerifier",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "aclAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "userAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "contractAddress",
              "type": "address"
            }
          ],
          "internalType": "struct TFHEExecutor.ContextUserInputs",
          "name": "context",
          "type": "tuple"
        },
        {
          "internalType": "bytes32",
          "name": "inputHandle",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "inputProof",
          "type": "bytes"
        }
      ],
      "name": "verifyCiphertext",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a080604052346100cc57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166100bd57506001600160401b036002600160401b031982821601610078575b6040516117e390816100d1823960805181818161044e01526105a70152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f8080610059565b63f92ee8a960e01b8152600490fd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806303b031cf146100f45780630d8e6e2c146100ef5780634d52c107146100ea5780634f1ef286146100e557806352d1902d146100e05780636a8c8eb4146100db578063715018a6146100d657806379ba5097146100d15780638da5cb5b146100cc578063ad3cb1cc146100c7578063c4d66de8146100c2578063e30c3978146100bd578063f0ea684d146100b85763f2fde38b146100b3575f80fd5b61097e565b6100f4565b610939565b6107b5565b610758565b610713565b6106b1565b610611565b6105f7565b61058d565b61040d565b610383565b610180565b34610122575f366003190112610122576020604051739d6891a6240d6130c54ae243d8005063d05fe14b8152f35b5f80fd5b5f5b8381106101375750505f910152565b8181015183820152602001610128565b9060209161016081518092818552858086019101610126565b601f01601f1916010190565b90602061017d928181520190610147565b90565b34610122575f3660031901126101225761026861020861025c6040516101a5816102a1565b600d815261024e602082017f496e707574566572696669657200000000000000000000000000000000000000815261024861023b6101e161142b565b60236101eb611467565b916101f461142b565b956040519a8b9951809260208c0190610126565b880161103b60f11b6020820152610229825180936020602285019101610126565b01601760f91b60228201520190610a25565b601760f91b815260010190565b90610a25565b03601f1981018352826102bd565b6040519182918261016c565b0390f35b634e487b7160e01b5f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761029c57604052565b61026c565b6040810190811067ffffffffffffffff82111761029c57604052565b90601f8019910116810190811067ffffffffffffffff82111761029c57604052565b600435906001600160a01b038216820361012257565b602435906001600160a01b038216820361012257565b604435906001600160a01b038216820361012257565b67ffffffffffffffff811161029c57601f01601f191660200190565b81601f820112156101225780359061035482610321565b9261036260405194856102bd565b8284526020838301011161012257815f926020809301838601378301015290565b3461012257366003190160a0811261012257606013610122576040516103a881610280565b6103b06102df565b81526103ba6102f5565b60208201526103c761030b565b604082015260843567ffffffffffffffff811161012257610268916103f36103fd92369060040161033d565b9060643590610fc5565b6040519081529081906020820190565b6040366003190112610122576104216102df565b60243567ffffffffffffffff81116101225761044190369060040161033d565b906001600160a01b0391827f00000000000000000000000000000000000000000000000000000000000000001680301490811561055f575b5061054d57602060049361048b611539565b6040516352d1902d60e01b8152948591829086165afa5f938161051c575b506104cf57604051634c9c8ce360e01b81526001600160a01b0383166004820152602490fd5b907f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc830361050357610501925061163c565b005b604051632a87526960e21b815260048101849052602490fd5b61053f91945060203d602011610546575b61053781836102bd565b81019061152a565b925f6104a9565b503d61052d565b60405163703e46dd60e11b8152600490fd5b9050837f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f610479565b34610122575f366003190112610122576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361054d5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b34610122575f3660031901126101225760206040515f8152f35b34610122575f36600319011261012257610629611539565b5f6001600160a01b036001600160a01b03197f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008181541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549182169055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610122575f36600319011261012257336001600160a01b037f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c005416036106fb576105013361156c565b60405163118cdaa760e01b8152336004820152602490fd5b34610122575f3660031901126101225760206001600160a01b037f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b34610122575f36600319011261012257610268604051610777816102a1565b600581527f352e302e300000000000000000000000000000000000000000000000000000006020820152604051918291602083526020830190610147565b34610122576020366003190112610122576107ce6102df565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549067ffffffffffffffff60ff8360401c1615921680159081610931575b6001149081610927575b15908161091e575b5061090c577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805467ffffffffffffffff1916600117905561086590826108cb576115fa565b61086b57005b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468ff000000000000000019169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468ff00000000000000001916680100000000000000001790556115fa565b60405163f92ee8a960e01b8152600490fd5b9050155f61081f565b303b159150610817565b83915061080d565b34610122575f3660031901126101225760206001600160a01b037f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c005416604051908152f35b34610122576020366003190112610122576109976102df565b61099f611539565b6001600160a01b03809116907f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00826001600160a01b03198254161790557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227005f80a3005b90610a3860209282815194859201610126565b0190565b634e487b7160e01b5f52603260045260245ffd5b805115610a5d5760200190565b610a3c565b805160011015610a5d5760210190565b908151811015610a5d570160200190565b15610a8a57565b60405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420696e646578000000000000000000000000000000000000006044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b908160051b9180830460201490151715610af957565b610acf565b908160031b917f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811603610af957565b908160051b917f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811603610af957565b9081604102916041830403610af957565b6002019081600211610af957565b91908201809211610af957565b601f0390601f8211610af957565b91908203918211610af957565b15610bac57565b60405162461bcd60e51b815260206004820152601160248201527f57726f6e6720696e70757448616e646c650000000000000000000000000000006044820152606490fd5b15610bf857565b60405162461bcd60e51b815260206004820152601060248201527f456d70747920696e70757450726f6f66000000000000000000000000000000006044820152606490fd5b15610c4457565b60405162461bcd60e51b815260206004820152601e60248201527f4572726f7220646573657269616c697a696e6720696e70757450726f6f6600006044820152606490fd5b604051906080820182811067ffffffffffffffff82111761029c57604052604182526060366020840137565b60405190610cc2826102a1565b6001825260203681840137565b90610cd982610321565b610ce660405191826102bd565b8281528092610cf7601f1991610321565b0190602036910137565b67ffffffffffffffff811161029c5760051b60200190565b90610d2382610d01565b610d3060405191826102bd565b8281528092610d41601f1991610d01565b01905f5b828110610d5157505050565b806060602080938501015201610d45565b8051821015610a5d5760209160051b010190565b604051906080820182811067ffffffffffffffff82111761029c576040525f6060838281528260208201528260408201520152565b90816020910312610122575180151581036101225790565b9060a08201906001600160a01b03808251168452606060209260208101516020870152826040820151166040870152015116606084015260a06080840152835180925260c0830192602060c08460051b8301019501935f915b848310610e2c5750505050505090565b9091929394958480610e4a60019360bf198682030187528a51610147565b9801930193019194939290610e1c565b6040513d5f823e3d90fd5b15610e6c57565b60405162461bcd60e51b815260206004820152602660248201527f4e6f7420656e6f75676820756e69717565204b4d5320696e707574207369676e60448201527f61747572657300000000000000000000000000000000000000000000000000006064820152608490fd5b15610ede57565b60405162461bcd60e51b815260206004820152601460248201527f57726f6e672068616e646c652076657273696f6e0000000000000000000000006044820152606490fd5b15610f2a57565b60405162461bcd60e51b815260206004820152602160248201527f57726f6e6720696e64657820666f722073657269616c697a65642068616e646c6044820152606560f81b6064820152608490fd5b15610f8057565b60405162461bcd60e51b815260206004820152601a60248201527f57726f6e672068616e646c6520696e20696e70757450726f6f660000000000006044820152606490fd5b9091602091828101610fde81516001600160a01b031690565b9260409161100d6040850195610ffb87516001600160a01b031690565b86516001600160a01b031691856114ba565b96909360ff9360109660ff8b60101c1696155f14611395579793815180151561103590610bf1565b61103e83610a50565b5160f81c9961104c84610a62565b5160f81c9161105c8a8d11610a83565b6110658c610b2e565b61106e90610b6f565b61107784610b5e565b61108091610b7d565b811161108b90610c3d565b6110948c610b2e565b61109d90610b6f565b6110a684610b5e565b6110af91610b7d565b90816110ba91610b98565b6110c381610ccf565b915f5b8281106113655750505090818780949351910120976110e483610d19565b925f5b8181106112a35750506111596111699161114c61113c6111849861112a61111d61110f610d76565b98516001600160a01b031690565b6001600160a01b03168852565b8d89880152516001600160a01b031690565b6001600160a01b03166040860152565b516001600160a01b031690565b6001600160a01b03166060830152565b60405163073371f960e11b8152938492839260048401610dc3565b03815f739d6891a6240d6130c54ae243d8005063d05fe14b5af1801561129e576111b5915f91611271575b50610e65565b5f5b8881106111d05750505050505050505061017d90611524565b80602260019260051b840101516111e988821615610ed7565b6111f88289838d1c1614610f23565b8451868101888152838a1660f81b7fff000000000000000000000000000000000000000000000000000000000000001660208201526112519161123e816021840161024e565b51902062ffffff19838116911614610f79565b888214611260575b50016111b7565b61126b908d14610ba5565b5f611259565b6112919150853d8711611297575b61128981836102bd565b810190610dab565b5f6111af565b503d61127f565b610e5a565b909193959294506112b2610c89565b6112bc8288610d62565b526112c78187610d62565b505f8e5b604182106112e4575050600101908894929593916110e7565b9061134561131f61131983611314611305611300600198610b2e565b610b6f565b61130e89610b5e565b90610b7d565b610b7d565b8b610a72565b517fff000000000000000000000000000000000000000000000000000000000000001690565b61135d82611353868c610d62565b51925f1a92610a72565b53018e6112cb565b8061137d61131f6113196001949a9e98999a86610b7d565b5f1a6113898287610a72565b530199959493996110c6565b5095505092955050508492506113c38460ff6113bc6113b661131f87610a50565b60f81c90565b1611610a83565b5f915f945b8286106113dd5750505061017d925014610ba5565b9193509160019061140c6114066113b661131f6114008a6113146113008a610ae3565b88610a72565b60ff1690565b61141d61141888610b8a565b610afe565b1b17940193918593916113c8565b5f611434610cb5565b90602182015b5f190190600a906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304908161143a57505090565b600180611472610cb5565b9160218301825b611484575b50505090565b5f190190600a906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353049182156114b557919082611479565b61147e565b61151c91605c9194939460405194859260208401976bffffffffffffffffffffffff199283809260601b168a5260601b16603485015260601b16604883015261150c8151809260208686019101610126565b810103603c8101845201826102bd565b519020805c91565b6001905d565b90816020910312610122575190565b6001600160a01b037f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300541633036106fb57565b6001600160a01b0319907f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008281541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993008054906001600160a01b0380931680948316179055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b6116026116f2565b61160a6116f2565b6001600160a01b03811615611624576116229061156c565b565b604051631e4fbdf760e01b81525f6004820152602490fd5b90813b156116d1576001600160a01b0382167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc816001600160a01b03198254161790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28051156116b6576116b391611733565b50565b5050346116bf57565b60405163b398979f60e01b8152600490fd5b604051634c9c8ce360e01b81526001600160a01b0383166004820152602490fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561172157565b604051631afcd79f60e31b8152600490fd5b5f8061017d93602081519101845af43d1561176f573d9161175383610321565b9261176160405194856102bd565b83523d5f602085013e611773565b6060915b9061179a575080511561178857805190602001fd5b60405163d6bda27560e01b8152600490fd5b815115806117cd575b6117ab575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156117a356fea164736f6c6343000818000a",
  "deployedBytecode": "0x60806040526004361015610011575f80fd5b5f3560e01c806303b031cf146100f45780630d8e6e2c146100ef5780634d52c107146100ea5780634f1ef286146100e557806352d1902d146100e05780636a8c8eb4146100db578063715018a6146100d657806379ba5097146100d15780638da5cb5b146100cc578063ad3cb1cc146100c7578063c4d66de8146100c2578063e30c3978146100bd578063f0ea684d146100b85763f2fde38b146100b3575f80fd5b61097e565b6100f4565b610939565b6107b5565b610758565b610713565b6106b1565b610611565b6105f7565b61058d565b61040d565b610383565b610180565b34610122575f366003190112610122576020604051739d6891a6240d6130c54ae243d8005063d05fe14b8152f35b5f80fd5b5f5b8381106101375750505f910152565b8181015183820152602001610128565b9060209161016081518092818552858086019101610126565b601f01601f1916010190565b90602061017d928181520190610147565b90565b34610122575f3660031901126101225761026861020861025c6040516101a5816102a1565b600d815261024e602082017f496e707574566572696669657200000000000000000000000000000000000000815261024861023b6101e161142b565b60236101eb611467565b916101f461142b565b956040519a8b9951809260208c0190610126565b880161103b60f11b6020820152610229825180936020602285019101610126565b01601760f91b60228201520190610a25565b601760f91b815260010190565b90610a25565b03601f1981018352826102bd565b6040519182918261016c565b0390f35b634e487b7160e01b5f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761029c57604052565b61026c565b6040810190811067ffffffffffffffff82111761029c57604052565b90601f8019910116810190811067ffffffffffffffff82111761029c57604052565b600435906001600160a01b038216820361012257565b602435906001600160a01b038216820361012257565b604435906001600160a01b038216820361012257565b67ffffffffffffffff811161029c57601f01601f191660200190565b81601f820112156101225780359061035482610321565b9261036260405194856102bd565b8284526020838301011161012257815f926020809301838601378301015290565b3461012257366003190160a0811261012257606013610122576040516103a881610280565b6103b06102df565b81526103ba6102f5565b60208201526103c761030b565b604082015260843567ffffffffffffffff811161012257610268916103f36103fd92369060040161033d565b9060643590610fc5565b6040519081529081906020820190565b6040366003190112610122576104216102df565b60243567ffffffffffffffff81116101225761044190369060040161033d565b906001600160a01b0391827f00000000000000000000000000000000000000000000000000000000000000001680301490811561055f575b5061054d57602060049361048b611539565b6040516352d1902d60e01b8152948591829086165afa5f938161051c575b506104cf57604051634c9c8ce360e01b81526001600160a01b0383166004820152602490fd5b907f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc830361050357610501925061163c565b005b604051632a87526960e21b815260048101849052602490fd5b61053f91945060203d602011610546575b61053781836102bd565b81019061152a565b925f6104a9565b503d61052d565b60405163703e46dd60e11b8152600490fd5b9050837f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f610479565b34610122575f366003190112610122576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361054d5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b34610122575f3660031901126101225760206040515f8152f35b34610122575f36600319011261012257610629611539565b5f6001600160a01b036001600160a01b03197f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008181541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080549182169055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610122575f36600319011261012257336001600160a01b037f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c005416036106fb576105013361156c565b60405163118cdaa760e01b8152336004820152602490fd5b34610122575f3660031901126101225760206001600160a01b037f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b34610122575f36600319011261012257610268604051610777816102a1565b600581527f352e302e300000000000000000000000000000000000000000000000000000006020820152604051918291602083526020830190610147565b34610122576020366003190112610122576107ce6102df565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549067ffffffffffffffff60ff8360401c1615921680159081610931575b6001149081610927575b15908161091e575b5061090c577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805467ffffffffffffffff1916600117905561086590826108cb576115fa565b61086b57005b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468ff000000000000000019169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468ff00000000000000001916680100000000000000001790556115fa565b60405163f92ee8a960e01b8152600490fd5b9050155f61081f565b303b159150610817565b83915061080d565b34610122575f3660031901126101225760206001600160a01b037f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c005416604051908152f35b34610122576020366003190112610122576109976102df565b61099f611539565b6001600160a01b03809116907f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00826001600160a01b03198254161790557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227005f80a3005b90610a3860209282815194859201610126565b0190565b634e487b7160e01b5f52603260045260245ffd5b805115610a5d5760200190565b610a3c565b805160011015610a5d5760210190565b908151811015610a5d570160200190565b15610a8a57565b60405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420696e646578000000000000000000000000000000000000006044820152606490fd5b634e487b7160e01b5f52601160045260245ffd5b908160051b9180830460201490151715610af957565b610acf565b908160031b917f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811603610af957565b908160051b917f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811603610af957565b9081604102916041830403610af957565b6002019081600211610af957565b91908201809211610af957565b601f0390601f8211610af957565b91908203918211610af957565b15610bac57565b60405162461bcd60e51b815260206004820152601160248201527f57726f6e6720696e70757448616e646c650000000000000000000000000000006044820152606490fd5b15610bf857565b60405162461bcd60e51b815260206004820152601060248201527f456d70747920696e70757450726f6f66000000000000000000000000000000006044820152606490fd5b15610c4457565b60405162461bcd60e51b815260206004820152601e60248201527f4572726f7220646573657269616c697a696e6720696e70757450726f6f6600006044820152606490fd5b604051906080820182811067ffffffffffffffff82111761029c57604052604182526060366020840137565b60405190610cc2826102a1565b6001825260203681840137565b90610cd982610321565b610ce660405191826102bd565b8281528092610cf7601f1991610321565b0190602036910137565b67ffffffffffffffff811161029c5760051b60200190565b90610d2382610d01565b610d3060405191826102bd565b8281528092610d41601f1991610d01565b01905f5b828110610d5157505050565b806060602080938501015201610d45565b8051821015610a5d5760209160051b010190565b604051906080820182811067ffffffffffffffff82111761029c576040525f6060838281528260208201528260408201520152565b90816020910312610122575180151581036101225790565b9060a08201906001600160a01b03808251168452606060209260208101516020870152826040820151166040870152015116606084015260a06080840152835180925260c0830192602060c08460051b8301019501935f915b848310610e2c5750505050505090565b9091929394958480610e4a60019360bf198682030187528a51610147565b9801930193019194939290610e1c565b6040513d5f823e3d90fd5b15610e6c57565b60405162461bcd60e51b815260206004820152602660248201527f4e6f7420656e6f75676820756e69717565204b4d5320696e707574207369676e60448201527f61747572657300000000000000000000000000000000000000000000000000006064820152608490fd5b15610ede57565b60405162461bcd60e51b815260206004820152601460248201527f57726f6e672068616e646c652076657273696f6e0000000000000000000000006044820152606490fd5b15610f2a57565b60405162461bcd60e51b815260206004820152602160248201527f57726f6e6720696e64657820666f722073657269616c697a65642068616e646c6044820152606560f81b6064820152608490fd5b15610f8057565b60405162461bcd60e51b815260206004820152601a60248201527f57726f6e672068616e646c6520696e20696e70757450726f6f660000000000006044820152606490fd5b9091602091828101610fde81516001600160a01b031690565b9260409161100d6040850195610ffb87516001600160a01b031690565b86516001600160a01b031691856114ba565b96909360ff9360109660ff8b60101c1696155f14611395579793815180151561103590610bf1565b61103e83610a50565b5160f81c9961104c84610a62565b5160f81c9161105c8a8d11610a83565b6110658c610b2e565b61106e90610b6f565b61107784610b5e565b61108091610b7d565b811161108b90610c3d565b6110948c610b2e565b61109d90610b6f565b6110a684610b5e565b6110af91610b7d565b90816110ba91610b98565b6110c381610ccf565b915f5b8281106113655750505090818780949351910120976110e483610d19565b925f5b8181106112a35750506111596111699161114c61113c6111849861112a61111d61110f610d76565b98516001600160a01b031690565b6001600160a01b03168852565b8d89880152516001600160a01b031690565b6001600160a01b03166040860152565b516001600160a01b031690565b6001600160a01b03166060830152565b60405163073371f960e11b8152938492839260048401610dc3565b03815f739d6891a6240d6130c54ae243d8005063d05fe14b5af1801561129e576111b5915f91611271575b50610e65565b5f5b8881106111d05750505050505050505061017d90611524565b80602260019260051b840101516111e988821615610ed7565b6111f88289838d1c1614610f23565b8451868101888152838a1660f81b7fff000000000000000000000000000000000000000000000000000000000000001660208201526112519161123e816021840161024e565b51902062ffffff19838116911614610f79565b888214611260575b50016111b7565b61126b908d14610ba5565b5f611259565b6112919150853d8711611297575b61128981836102bd565b810190610dab565b5f6111af565b503d61127f565b610e5a565b909193959294506112b2610c89565b6112bc8288610d62565b526112c78187610d62565b505f8e5b604182106112e4575050600101908894929593916110e7565b9061134561131f61131983611314611305611300600198610b2e565b610b6f565b61130e89610b5e565b90610b7d565b610b7d565b8b610a72565b517fff000000000000000000000000000000000000000000000000000000000000001690565b61135d82611353868c610d62565b51925f1a92610a72565b53018e6112cb565b8061137d61131f6113196001949a9e98999a86610b7d565b5f1a6113898287610a72565b530199959493996110c6565b5095505092955050508492506113c38460ff6113bc6113b661131f87610a50565b60f81c90565b1611610a83565b5f915f945b8286106113dd5750505061017d925014610ba5565b9193509160019061140c6114066113b661131f6114008a6113146113008a610ae3565b88610a72565b60ff1690565b61141d61141888610b8a565b610afe565b1b17940193918593916113c8565b5f611434610cb5565b90602182015b5f190190600a906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304908161143a57505090565b600180611472610cb5565b9160218301825b611484575b50505090565b5f190190600a906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353049182156114b557919082611479565b61147e565b61151c91605c9194939460405194859260208401976bffffffffffffffffffffffff199283809260601b168a5260601b16603485015260601b16604883015261150c8151809260208686019101610126565b810103603c8101845201826102bd565b519020805c91565b6001905d565b90816020910312610122575190565b6001600160a01b037f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300541633036106fb57565b6001600160a01b0319907f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c008281541690557f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993008054906001600160a01b0380931680948316179055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b6116026116f2565b61160a6116f2565b6001600160a01b03811615611624576116229061156c565b565b604051631e4fbdf760e01b81525f6004820152602490fd5b90813b156116d1576001600160a01b0382167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc816001600160a01b03198254161790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28051156116b6576116b391611733565b50565b5050346116bf57565b60405163b398979f60e01b8152600490fd5b604051634c9c8ce360e01b81526001600160a01b0383166004820152602490fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561172157565b604051631afcd79f60e31b8152600490fd5b5f8061017d93602081519101845af43d1561176f573d9161175383610321565b9261176160405194856102bd565b83523d5f602085013e611773565b6060915b9061179a575080511561178857805190602001fd5b60405163d6bda27560e01b8152600490fd5b815115806117cd575b6117ab575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156117a356fea164736f6c6343000818000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
