diff --git a/abis/Passkey.json b/abis/Passkey.json new file mode 100644 index 0000000..5eb4731 --- /dev/null +++ b/abis/Passkey.json @@ -0,0 +1,4208 @@ +{ + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "keyId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "y", + "type": "uint256" + } + ], + "name": "PasskeyRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "keyId", + "type": "bytes32" + } + ], + "name": "PasskeyRemoved", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "callGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "verificationGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxFeePerGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxPriorityFeePerGas", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct UserOperation", + "name": "", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "callback", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "keyId", + "type": "bytes32" + } + ], + "name": "getPublicKey", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "y", + "type": "uint256" + } + ], + "internalType": "struct PasskeyModule.PublicKey", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "digest", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "keyId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "y", + "type": "uint256" + } + ], + "name": "registerPublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "keyId", + "type": "bytes32" + } + ], + "name": "removePublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "callGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "verificationGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxFeePerGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxPriorityFeePerGas", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct UserOperation", + "name": "userOp", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "digest", + "type": "bytes32" + } + ], + "name": "validateUserOp", + "outputs": [ + { + "internalType": "uint256", + "name": "validationData", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": { + "object": "0x608060405234801561001057600080fd5b50611c66806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80631626ba7e146100675780633082ab5b146100985780637cefdd5d146100ad5780638f3285f5146100db578063dee30c97146100ee578063fff35b7214610100575b600080fd5b61007a610075366004611683565b610121565b6040516001600160e01b031990911681526020015b60405180910390f35b6100ab6100a63660046116ff565b61014c565b005b6100c06100bb36600461172b565b6101c0565b6040805182518152602092830151928101929092520161008f565b6100ab6100e9366004611763565b61020b565b6100ab6100fc36600461177c565b5050565b61011361010e36600461177c565b610257565b60405190815260200161008f565b600061012e848484610286565b156101415750630b135d3f60e11b610145565b5060005b9392505050565b60408051808201825283815260208082018481523360008181528084528581208982528452859020935184559051600190930192909255825185815290810184905285927fe6813de69096f2d13f196130a730ba346707680ee5fabe9a6001c48b2e2a395a910160405180910390a3505050565b604080518082018252600080825260209182018190526001600160a01b0385168152808252828120848252825282902082518084019093528054835260010154908201525b92915050565b33600081815260208181526040808320858452909152808220828155600101829055518392917f2d7aa68d7c6e29815818dcd0deea0f49ceac033240ac3b69b6a6734c23e5843d91a350565b60006102708261026b6101408601866117b9565b610286565b1561027d57506000610205565b50600192915050565b6000806102966014828587611807565b61029f91611831565b60601c90503081146102b5576000915050610145565b6000806102c58560148189611807565b8101906102d291906118fe565b33600090815260208181526040808320858452825291829020825180840190935280548084526001909101549183019190915292945090925090158061031a57506020810151155b1561032c576000945050505050610145565b60008280602001905181019061034291906119f1565b905061037b8960405160200161035a91815260200190565b60405160208183030381529060405260008385600001518660200151610388565b9998505050505050505050565b60006103a36002600080516020611bd1833981519152611ac3565b8460a0015111156103d15760a08401516103cb90600080516020611bd1833981519152611ae5565b60a08501525b60608401516000906103f4906103e8816015611af8565b60208801519190610708565b90507fff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e63481805190602001201461042e5760009150506106ff565b60006104398861076e565b6040516020016104499190611b0b565b604051602081830303815290604052905060006104818760400151835189604001516104759190611af8565b60208a01519190610708565b905081805190602001208180519060200120146104a457600093505050506106ff565b86518051600160f81b91829160209081106104c1576104c1611b4c565b0160200151166001600160f81b031916146104e257600093505050506106ff565b87801561051a575086518051600160fa1b918291602090811061050757610507611b4c565b0160200151166001600160f81b03191614155b1561052b57600093505050506106ff565b6000600288602001516040516105419190611b62565b602060405180830381855afa15801561055e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906105819190611b7e565b90506000600289600001518360405160200161059e929190611b97565b60408051601f19818403018152908290526105b891611b62565b602060405180830381855afa1580156105d5573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906105f89190611b7e565b6080808b015160a0808d015160408051602081018790529081019390935260608301529181018b905290810189905290915060009060c00160405160208183030381529060405290506000806101006001600160a01b03168360405161065e9190611b62565b600060405180830381855afa9150503d8060008114610699576040519150601f19603f3d011682016040523d82523d6000602084013e61069e565b606091505b508051919350915015158280156106b25750805b156106de57818060200190518101906106cb9190611b7e565b60011499505050505050505050506106ff565b6106f3858e608001518f60a001518f8f610794565b99505050505050505050505b95945050505050565b60608351828111610717578092505b838111610722578093505b5081831015610145575060405182820380825293830193601f19601f820181165b86810151848201528101806107435750600083830160200152603f9091011681016040529392505050565b606061020582604051806060016040528060408152602001611bf1604091396000610877565b60008415806107b15750600080516020611bd18339815191528510155b806107ba575083155b806107d35750600080516020611bd18339815191528410155b156107e0575060006106ff565b6107ea83836109f7565b6107f6575060006106ff565b600061080185610af2565b90506000600080516020611bd183398151915282890990506000600080516020611bd18339815191528389099050600061083d87878585610b64565b9050600080516020611bd18339815191526108668a600080516020611bd1833981519152611ae5565b8208159a9950505050505050505050565b606083516000036108975750604080516020810190915260008152610145565b6000826108c8576003855160046108ae9190611bb9565b6108b9906002611af8565b6108c39190611ac3565b6108ed565b6003855160026108d89190611af8565b6108e29190611ac3565b6108ed906004611bb9565b905060008167ffffffffffffffff81111561090a5761090a611866565b6040519080825280601f01601f191660200182016040528015610934576020820181803683370190505b50905060018501602082018788518901602081018051600082525b828410156109aa576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061094f565b9052505085156109eb576003885106600181146109ce57600281146109e1576109e9565b603d6001830353603d60028303536109e9565b603d60018303535b505b50909695505050505050565b6000600160601b63ffffffff60c01b031983101580610a245750600160601b63ffffffff60c01b03198210155b80610a36575082158015610a36575081155b15610a4357506000610205565b6000600160601b63ffffffff60c01b031983840990506000600160601b63ffffffff60c01b0319807fffffffff00000001000000000000000000000000fffffffffffffffffffffffc8709600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b0319898a0909089050600160601b63ffffffff60c01b03197f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b820891909114949350505050565b600060405160208152602080820152602060408201528260608201527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f6080820152600080516020611bd183398151915260a082015260208160c0836005600019fa610b5d57600080fd5b5192915050565b600080808060ff818088158015610b79575087155b15610b8d5760009650505050505050611245565b610bd97f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f58d8d61124d565b909250905081158015610bea575080155b15610c3757600080516020611bd183398151915288600080516020611bd1833981519152038a0898506000975088158015610c23575087155b15610c375760009650505050505050611245565b600189841c16600189851c1660011b015b80610c6a5760018403935060018a851c1660018a861c1660011b019050610c48565b50600189841c16600189851c1660011b01955060018603610ccc577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29696507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f593505b60028603610cdb578a96508993505b60038603610cea578196508093505b60018303925060019550600194505b8260001911156111ce57600160601b63ffffffff60c01b031984600209600160601b63ffffffff60c01b0319818209600160601b63ffffffff60c01b0319818a09600160601b63ffffffff60c01b03198284099250600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b03198b8d08600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b0319038e0809600309600160601b63ffffffff60c01b03198985099850600160601b63ffffffff60c01b03198a84099950600160601b63ffffffff60c01b031980836002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319838409089a50600160601b63ffffffff60c01b03198083600160601b63ffffffff60c01b0319038d0882099250600160601b63ffffffff60c01b031983600160601b63ffffffff60c01b03198a870908975060018d881c1660018d891c1660011b01905080610e765787600160601b63ffffffff60c01b0319039750505050506111c3565b60018103610ec5577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29693507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f592505b60028103610ed4578e93508d92505b60038103610ee3578593508492505b89610efc57509198506001975087965094506111c39050565b600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b03198b860908600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198d8809089350806110b557836110b557600160601b63ffffffff60c01b0319896002600160601b0363ffffffff60c01b0319099450600160601b63ffffffff60c01b03198586099350600160601b63ffffffff60c01b0319848d099250600160601b63ffffffff60c01b03198486099450600160601b63ffffffff60c01b0319808c600160601b63ffffffff60c01b0319038e08600160601b63ffffffff60c01b03198d8f08099050600160601b63ffffffff60c01b0319816003099150600160601b63ffffffff60c01b03198a86099950600160601b63ffffffff60c01b03198b85099a50600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848509089b50600160601b63ffffffff60c01b0319808d600160601b63ffffffff60c01b031903850883099350600160601b63ffffffff60c01b0319808a87098508985050505050506111c3565b600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b0319848309600160601b63ffffffff60c01b0319838d099b50600160601b63ffffffff60c01b0319818c099a50600160601b63ffffffff60c01b0319838e09600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031984600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b031987880908089350600160601b63ffffffff60c01b031980838d09600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b031903860809089a50505050809a50505050505b600183039250610cf9565b60405186606082015260208152602080820152602060408201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa61122857600080fd5b600160601b63ffffffff60c01b0319815189099750505050505050505b949350505050565b6000808080866112645785859350935050506112d2565b846112765787879350935050506112d2565b858814801561128457508487145b156112a55761129688886001806112db565b929a50909850925090506112bf565b6112b488886001808a8a611436565b929a50909850925090505b6112cb888884846115ba565b9350935050505b94509492505050565b600080600080600160601b63ffffffff60c01b0319876002099350600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b03198289099050600160601b63ffffffff60c01b03198285099250600160601b63ffffffff60c01b03198683099150600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b0319888b08600160601b63ffffffff60c01b031989600160601b63ffffffff60c01b0319038c08096003099550600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319888909089350600160601b63ffffffff60c01b03198085600160601b63ffffffff60c01b031903830887099750600160601b63ffffffff60c01b03198584099050600160601b63ffffffff60c01b031980888509600160601b63ffffffff60c01b03190389089250945094509450949050565b60008060008088600003611455575084925083915060019050806115ad565b600160601b63ffffffff60c01b0319988903988981898809089450600160601b63ffffffff60c01b03198a600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198a8909089550600160601b63ffffffff60c01b03198687099350600160601b63ffffffff60c01b03198685099250600160601b63ffffffff60c01b03198489099150600160601b63ffffffff60c01b03198388099050600160601b63ffffffff60c01b0319848b099750600160601b63ffffffff60c01b031980896002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b0319898a0908089350600160601b63ffffffff60c01b031980848b09600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b0319038d08090892505b9650965096509692505050565b60008060006115c884611627565b9050600160601b63ffffffff60c01b031981870991506000600160601b63ffffffff60c01b03198287099050600160601b63ffffffff60c01b03198182099150600160601b63ffffffff60c01b03198289099350505094509492505050565b600060405160208152602080820152602060408201528260608201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa610b5d57600080fd5b60008060006040848603121561169857600080fd5b83359250602084013567ffffffffffffffff808211156116b757600080fd5b818601915086601f8301126116cb57600080fd5b8135818111156116da57600080fd5b8760208285010111156116ec57600080fd5b6020830194508093505050509250925092565b60008060006060848603121561171457600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561173e57600080fd5b82356001600160a01b038116811461175557600080fd5b946020939093013593505050565b60006020828403121561177557600080fd5b5035919050565b6000806040838503121561178f57600080fd5b823567ffffffffffffffff8111156117a657600080fd5b8301610160818603121561175557600080fd5b6000808335601e198436030181126117d057600080fd5b83018035915067ffffffffffffffff8211156117eb57600080fd5b60200191503681900382131561180057600080fd5b9250929050565b6000808585111561181757600080fd5b8386111561182457600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff19813581811691601485101561185e5780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561189f5761189f611866565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156118ce576118ce611866565b604052919050565b600067ffffffffffffffff8211156118f0576118f0611866565b50601f01601f191660200190565b6000806040838503121561191157600080fd5b82359150602083013567ffffffffffffffff81111561192f57600080fd5b8301601f8101851361194057600080fd5b803561195361194e826118d6565b6118a5565b81815286602083850101111561196857600080fd5b816020840160208301376000602083830101528093505050509250929050565b60005b838110156119a357818101518382015260200161198b565b50506000910152565b600082601f8301126119bd57600080fd5b81516119cb61194e826118d6565b8181528460208386010111156119e057600080fd5b611245826020830160208701611988565b600060208284031215611a0357600080fd5b815167ffffffffffffffff80821115611a1b57600080fd5b9083019060c08286031215611a2f57600080fd5b611a3761187c565b825182811115611a4657600080fd5b611a52878286016119ac565b825250602083015182811115611a6757600080fd5b611a73878286016119ac565b60208301525060408301516040820152606083015160608201526080830151608082015260a083015160a082015280935050505092915050565b634e487b7160e01b600052601160045260246000fd5b600082611ae057634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561020557610205611aad565b8082018082111561020557610205611aad565b6c1131b430b63632b733b2911d1160991b81528151600090611b3481600d850160208701611988565b601160f91b600d939091019283015250600e01919050565b634e487b7160e01b600052603260045260246000fd5b60008251611b74818460208701611988565b9190910192915050565b600060208284031215611b9057600080fd5b5051919050565b60008351611ba9818460208801611988565b9190910191825250602001919050565b808202811582820484141761020557610205611aad56feffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6325514142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5fa26469706673582212207483adfc32a79d055abcaff26da17006e562c6abeb4fa5437e7bbda43dab394264736f6c63430008130033", + "sourceMap": "265:2342:84:-:0;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80631626ba7e146100675780633082ab5b146100985780637cefdd5d146100ad5780638f3285f5146100db578063dee30c97146100ee578063fff35b7214610100575b600080fd5b61007a610075366004611683565b610121565b6040516001600160e01b031990911681526020015b60405180910390f35b6100ab6100a63660046116ff565b61014c565b005b6100c06100bb36600461172b565b6101c0565b6040805182518152602092830151928101929092520161008f565b6100ab6100e9366004611763565b61020b565b6100ab6100fc36600461177c565b5050565b61011361010e36600461177c565b610257565b60405190815260200161008f565b600061012e848484610286565b156101415750630b135d3f60e11b610145565b5060005b9392505050565b60408051808201825283815260208082018481523360008181528084528581208982528452859020935184559051600190930192909255825185815290810184905285927fe6813de69096f2d13f196130a730ba346707680ee5fabe9a6001c48b2e2a395a910160405180910390a3505050565b604080518082018252600080825260209182018190526001600160a01b0385168152808252828120848252825282902082518084019093528054835260010154908201525b92915050565b33600081815260208181526040808320858452909152808220828155600101829055518392917f2d7aa68d7c6e29815818dcd0deea0f49ceac033240ac3b69b6a6734c23e5843d91a350565b60006102708261026b6101408601866117b9565b610286565b1561027d57506000610205565b50600192915050565b6000806102966014828587611807565b61029f91611831565b60601c90503081146102b5576000915050610145565b6000806102c58560148189611807565b8101906102d291906118fe565b33600090815260208181526040808320858452825291829020825180840190935280548084526001909101549183019190915292945090925090158061031a57506020810151155b1561032c576000945050505050610145565b60008280602001905181019061034291906119f1565b905061037b8960405160200161035a91815260200190565b60405160208183030381529060405260008385600001518660200151610388565b9998505050505050505050565b60006103a36002600080516020611bd1833981519152611ac3565b8460a0015111156103d15760a08401516103cb90600080516020611bd1833981519152611ae5565b60a08501525b60608401516000906103f4906103e8816015611af8565b60208801519190610708565b90507fff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e63481805190602001201461042e5760009150506106ff565b60006104398861076e565b6040516020016104499190611b0b565b604051602081830303815290604052905060006104818760400151835189604001516104759190611af8565b60208a01519190610708565b905081805190602001208180519060200120146104a457600093505050506106ff565b86518051600160f81b91829160209081106104c1576104c1611b4c565b0160200151166001600160f81b031916146104e257600093505050506106ff565b87801561051a575086518051600160fa1b918291602090811061050757610507611b4c565b0160200151166001600160f81b03191614155b1561052b57600093505050506106ff565b6000600288602001516040516105419190611b62565b602060405180830381855afa15801561055e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906105819190611b7e565b90506000600289600001518360405160200161059e929190611b97565b60408051601f19818403018152908290526105b891611b62565b602060405180830381855afa1580156105d5573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906105f89190611b7e565b6080808b015160a0808d015160408051602081018790529081019390935260608301529181018b905290810189905290915060009060c00160405160208183030381529060405290506000806101006001600160a01b03168360405161065e9190611b62565b600060405180830381855afa9150503d8060008114610699576040519150601f19603f3d011682016040523d82523d6000602084013e61069e565b606091505b508051919350915015158280156106b25750805b156106de57818060200190518101906106cb9190611b7e565b60011499505050505050505050506106ff565b6106f3858e608001518f60a001518f8f610794565b99505050505050505050505b95945050505050565b60608351828111610717578092505b838111610722578093505b5081831015610145575060405182820380825293830193601f19601f820181165b86810151848201528101806107435750600083830160200152603f9091011681016040529392505050565b606061020582604051806060016040528060408152602001611bf1604091396000610877565b60008415806107b15750600080516020611bd18339815191528510155b806107ba575083155b806107d35750600080516020611bd18339815191528410155b156107e0575060006106ff565b6107ea83836109f7565b6107f6575060006106ff565b600061080185610af2565b90506000600080516020611bd183398151915282890990506000600080516020611bd18339815191528389099050600061083d87878585610b64565b9050600080516020611bd18339815191526108668a600080516020611bd1833981519152611ae5565b8208159a9950505050505050505050565b606083516000036108975750604080516020810190915260008152610145565b6000826108c8576003855160046108ae9190611bb9565b6108b9906002611af8565b6108c39190611ac3565b6108ed565b6003855160026108d89190611af8565b6108e29190611ac3565b6108ed906004611bb9565b905060008167ffffffffffffffff81111561090a5761090a611866565b6040519080825280601f01601f191660200182016040528015610934576020820181803683370190505b50905060018501602082018788518901602081018051600082525b828410156109aa576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061094f565b9052505085156109eb576003885106600181146109ce57600281146109e1576109e9565b603d6001830353603d60028303536109e9565b603d60018303535b505b50909695505050505050565b6000600160601b63ffffffff60c01b031983101580610a245750600160601b63ffffffff60c01b03198210155b80610a36575082158015610a36575081155b15610a4357506000610205565b6000600160601b63ffffffff60c01b031983840990506000600160601b63ffffffff60c01b0319807fffffffff00000001000000000000000000000000fffffffffffffffffffffffc8709600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b0319898a0909089050600160601b63ffffffff60c01b03197f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b820891909114949350505050565b600060405160208152602080820152602060408201528260608201527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f6080820152600080516020611bd183398151915260a082015260208160c0836005600019fa610b5d57600080fd5b5192915050565b600080808060ff818088158015610b79575087155b15610b8d5760009650505050505050611245565b610bd97f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f58d8d61124d565b909250905081158015610bea575080155b15610c3757600080516020611bd183398151915288600080516020611bd1833981519152038a0898506000975088158015610c23575087155b15610c375760009650505050505050611245565b600189841c16600189851c1660011b015b80610c6a5760018403935060018a851c1660018a861c1660011b019050610c48565b50600189841c16600189851c1660011b01955060018603610ccc577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29696507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f593505b60028603610cdb578a96508993505b60038603610cea578196508093505b60018303925060019550600194505b8260001911156111ce57600160601b63ffffffff60c01b031984600209600160601b63ffffffff60c01b0319818209600160601b63ffffffff60c01b0319818a09600160601b63ffffffff60c01b03198284099250600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b03198b8d08600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b0319038e0809600309600160601b63ffffffff60c01b03198985099850600160601b63ffffffff60c01b03198a84099950600160601b63ffffffff60c01b031980836002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319838409089a50600160601b63ffffffff60c01b03198083600160601b63ffffffff60c01b0319038d0882099250600160601b63ffffffff60c01b031983600160601b63ffffffff60c01b03198a870908975060018d881c1660018d891c1660011b01905080610e765787600160601b63ffffffff60c01b0319039750505050506111c3565b60018103610ec5577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29693507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f592505b60028103610ed4578e93508d92505b60038103610ee3578593508492505b89610efc57509198506001975087965094506111c39050565b600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b03198b860908600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198d8809089350806110b557836110b557600160601b63ffffffff60c01b0319896002600160601b0363ffffffff60c01b0319099450600160601b63ffffffff60c01b03198586099350600160601b63ffffffff60c01b0319848d099250600160601b63ffffffff60c01b03198486099450600160601b63ffffffff60c01b0319808c600160601b63ffffffff60c01b0319038e08600160601b63ffffffff60c01b03198d8f08099050600160601b63ffffffff60c01b0319816003099150600160601b63ffffffff60c01b03198a86099950600160601b63ffffffff60c01b03198b85099a50600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848509089b50600160601b63ffffffff60c01b0319808d600160601b63ffffffff60c01b031903850883099350600160601b63ffffffff60c01b0319808a87098508985050505050506111c3565b600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b0319848309600160601b63ffffffff60c01b0319838d099b50600160601b63ffffffff60c01b0319818c099a50600160601b63ffffffff60c01b0319838e09600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031984600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b031987880908089350600160601b63ffffffff60c01b031980838d09600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b031903860809089a50505050809a50505050505b600183039250610cf9565b60405186606082015260208152602080820152602060408201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa61122857600080fd5b600160601b63ffffffff60c01b0319815189099750505050505050505b949350505050565b6000808080866112645785859350935050506112d2565b846112765787879350935050506112d2565b858814801561128457508487145b156112a55761129688886001806112db565b929a50909850925090506112bf565b6112b488886001808a8a611436565b929a50909850925090505b6112cb888884846115ba565b9350935050505b94509492505050565b600080600080600160601b63ffffffff60c01b0319876002099350600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b03198289099050600160601b63ffffffff60c01b03198285099250600160601b63ffffffff60c01b03198683099150600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b0319888b08600160601b63ffffffff60c01b031989600160601b63ffffffff60c01b0319038c08096003099550600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319888909089350600160601b63ffffffff60c01b03198085600160601b63ffffffff60c01b031903830887099750600160601b63ffffffff60c01b03198584099050600160601b63ffffffff60c01b031980888509600160601b63ffffffff60c01b03190389089250945094509450949050565b60008060008088600003611455575084925083915060019050806115ad565b600160601b63ffffffff60c01b0319988903988981898809089450600160601b63ffffffff60c01b03198a600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198a8909089550600160601b63ffffffff60c01b03198687099350600160601b63ffffffff60c01b03198685099250600160601b63ffffffff60c01b03198489099150600160601b63ffffffff60c01b03198388099050600160601b63ffffffff60c01b0319848b099750600160601b63ffffffff60c01b031980896002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b0319898a0908089350600160601b63ffffffff60c01b031980848b09600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b0319038d08090892505b9650965096509692505050565b60008060006115c884611627565b9050600160601b63ffffffff60c01b031981870991506000600160601b63ffffffff60c01b03198287099050600160601b63ffffffff60c01b03198182099150600160601b63ffffffff60c01b03198289099350505094509492505050565b600060405160208152602080820152602060408201528260608201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa610b5d57600080fd5b60008060006040848603121561169857600080fd5b83359250602084013567ffffffffffffffff808211156116b757600080fd5b818601915086601f8301126116cb57600080fd5b8135818111156116da57600080fd5b8760208285010111156116ec57600080fd5b6020830194508093505050509250925092565b60008060006060848603121561171457600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561173e57600080fd5b82356001600160a01b038116811461175557600080fd5b946020939093013593505050565b60006020828403121561177557600080fd5b5035919050565b6000806040838503121561178f57600080fd5b823567ffffffffffffffff8111156117a657600080fd5b8301610160818603121561175557600080fd5b6000808335601e198436030181126117d057600080fd5b83018035915067ffffffffffffffff8211156117eb57600080fd5b60200191503681900382131561180057600080fd5b9250929050565b6000808585111561181757600080fd5b8386111561182457600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff19813581811691601485101561185e5780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561189f5761189f611866565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156118ce576118ce611866565b604052919050565b600067ffffffffffffffff8211156118f0576118f0611866565b50601f01601f191660200190565b6000806040838503121561191157600080fd5b82359150602083013567ffffffffffffffff81111561192f57600080fd5b8301601f8101851361194057600080fd5b803561195361194e826118d6565b6118a5565b81815286602083850101111561196857600080fd5b816020840160208301376000602083830101528093505050509250929050565b60005b838110156119a357818101518382015260200161198b565b50506000910152565b600082601f8301126119bd57600080fd5b81516119cb61194e826118d6565b8181528460208386010111156119e057600080fd5b611245826020830160208701611988565b600060208284031215611a0357600080fd5b815167ffffffffffffffff80821115611a1b57600080fd5b9083019060c08286031215611a2f57600080fd5b611a3761187c565b825182811115611a4657600080fd5b611a52878286016119ac565b825250602083015182811115611a6757600080fd5b611a73878286016119ac565b60208301525060408301516040820152606083015160608201526080830151608082015260a083015160a082015280935050505092915050565b634e487b7160e01b600052601160045260246000fd5b600082611ae057634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561020557610205611aad565b8082018082111561020557610205611aad565b6c1131b430b63632b733b2911d1160991b81528151600090611b3481600d850160208701611988565b601160f91b600d939091019283015250600e01919050565b634e487b7160e01b600052603260045260246000fd5b60008251611b74818460208701611988565b9190910192915050565b600060208284031215611b9057600080fd5b5051919050565b60008351611ba9818460208801611988565b9190910191825250602001919050565b808202811582820484141761020557610205611aad56feffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc6325514142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5fa26469706673582212207483adfc32a79d055abcaff26da17006e562c6abeb4fa5437e7bbda43dab394264736f6c63430008130033", + "sourceMap": "265:2342:84:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2134:325;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;840:33:89;;;822:52;;810:2;795:18;2134:325:84;;;;;;;;617:196;;;;;;:::i;:::-;;:::i;:::-;;2465:140;;;;;;:::i;:::-;;:::i;:::-;;;;1785:13:89;;1767:32;;1855:4;1843:17;;;1837:24;1815:20;;;1808:54;;;;1740:18;2465:140:84;1565:303:89;819:152:84;;;;;;:::i;:::-;;:::i;2057:71::-;;;;;;:::i;:::-;;;;1763:288;;;;;;:::i;:::-;;:::i;:::-;;;2670:25:89;;;2658:2;2643:18;1763:288:84;2524:177:89;2134:325:84;2264:17;2301:44;2327:6;2335:9;;2301:25;:44::i;:::-;2297:156;;;-1:-1:-1;;;;2361:37:84;;2297:156;-1:-1:-1;2436:6:84;2297:156;2134:325;;;;;:::o;617:196::-;733:15;;;;;;;;;;;;;;;;;;712:10;-1:-1:-1;700:23:84;;;;;;;;;:30;;;;;;;;:48;;;;;;;;;;;;;;764:42;;2880:25:89;;;2921:18;;;2914:34;;;700:30:84;;764:42;;2853:18:89;764:42:84;;;;;;;617:196;;;:::o;2465:140::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;2574:17:84;;;;;;;;;;:24;;;;;;;;2567:31;;;;;;;;;;;;;;;;;;;2465:140;;;;;:::o;819:152::-;897:10;885:11;:23;;;;;;;;;;;:30;;;;;;;;;878:37;;;;;;;;931:33;909:5;;897:10;931:33;;;819:152;:::o;1763:288::-;1898:22;1940:51;1966:6;1974:16;;;;:6;:16;:::i;:::-;1940:25;:51::i;:::-;1936:90;;;-1:-1:-1;2014:1:84;2007:8;;1936:90;-1:-1:-1;2043:1:84;1763:288;;;;:::o;977:780::-;1101:4;;1154:14;1165:2;1101:4;1154:9;;:14;:::i;:::-;1146:23;;;:::i;:::-;1138:32;;;-1:-1:-1;1202:4:84;1184:23;;1180:66;;1230:5;1223:12;;;;;1180:66;1257:13;;1316:14;:9;1326:2;1316:9;;:14;:::i;:::-;1305:44;;;;;;;:::i;:::-;1400:10;1359:26;1388:23;;;;;;;;;;;:30;;;;;;;;;1359:59;;;;;;;;;;;;;;;;;;;;;;;;;1256:93;;-1:-1:-1;1256:93:84;;-1:-1:-1;1359:59:84;1441:16;;:36;;-1:-1:-1;1461:11:84;;;;:16;1441:36;1437:79;;;1500:5;1493:12;;;;;;;;1437:79;1526:33;1573:16;1562:53;;;;;;;;;;;;:::i;:::-;1526:89;;1632:118;1671:6;1660:18;;;;;;2670:25:89;;2658:2;2643:18;;2524:177;1660:18:84;;;;;;;;;;;;;1691:5;1712:4;1721:9;:11;;;1737:9;:11;;;1632:15;:118::i;:::-;1625:125;977:780;-1:-1:-1;;;;;;;;;977:780:84:o;6637:2983:83:-;6796:4;2058:21;2078:1;-1:-1:-1;;;;;;;;;;;2058:21:83;:::i;:::-;6820:12;:14;;;:30;6816:164;;;6955:14;;;;6935:34;;-1:-1:-1;;;;;;;;;;;6935:34:83;:::i;:::-;6918:14;;;:51;6816:164;7177:22;;;;7121:19;;7143:86;;7201:27;7177:22;7226:2;7201:27;:::i;:::-;7143;;;;;:86;:33;:86::i;:::-;7121:108;;2569:34;7259:5;7243:23;;;;;;:46;7239:89;;7312:5;7305:12;;;;;7239:89;7442:30;7512:27;7529:9;7512:16;:27::i;:::-;7481:64;;;;;;;;:::i;:::-;;;;;;;;;;;;;7442:104;;7556:29;7588:140;7635:12;:27;;;7694:17;:24;7664:12;:27;;;:54;;;;:::i;:::-;7588:27;;;;;:140;:33;:140::i;:::-;7556:172;;7789:17;7779:28;;;;;;7758:15;7742:33;;;;;;:65;7738:108;;7830:5;7823:12;;;;;;;7738:108;7962:30;;:34;;-1:-1:-1;;;8022:19:83;;;7993:2;;7962:34;;;;;;:::i;:::-;;;;;:56;-1:-1:-1;;;;;;7962:56:83;:79;7958:122;;8064:5;8057:12;;;;;;;7958:122;8244:9;:94;;;;-1:-1:-1;8258:30:83;;:34;;-1:-1:-1;;;8319:19:83;;;8289:2;;8258:34;;;;;;:::i;:::-;;;;;:56;-1:-1:-1;;;;;;8258:56:83;8257:81;;8244:94;8240:137;;;8361:5;8354:12;;;;;;;8240:137;8496:26;8525:42;8538:12;:27;;;8525:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8496:71;;8724:19;8746:76;8770:12;:30;;;8802:18;8753:68;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;8753:68:83;;;;;;;;;;8746:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8876:14;;;;;8892;;;;;8852:61;;;;;;10287:25:89;;;10328:18;;;10321:34;;;;-1:-1:-1;10371:18:89;;10364:34;10414:18;;;10407:34;;;10457:19;;;10450:35;;;8724:98:83;;-1:-1:-1;8832:17:83;;10259:19:89;;8852:61:83;;;;;;;;;;;;8832:81;;8971:12;8985:16;2330:5;-1:-1:-1;;;;;9005:20:83;9026:4;9005:26;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9438:10:83;;8970:61;;-1:-1:-1;8970:61:83;-1:-1:-1;9438:14:83;;8970:61;9466:16;;;;;9477:5;9466:16;9462:60;;;9502:3;9491:26;;;;;;;;;;;;:::i;:::-;9521:1;9491:31;9484:38;;;;;;;;;;;;;9462:60;9540:73;9563:11;9576:12;:14;;;9592:12;:14;;;9608:1;9611;9540:22;:73::i;:::-;9533:80;;;;;;;;;;;6637:2983;;;;;;;;:::o;33730:1279:81:-;33819:20;33944:7;33938:14;33993:3;33978:13;33975:22;33965:58;;34008:13;34001:20;;33965:58;34064:5;34049:13;34046:24;34036:62;;34083:13;34074:22;;34036:62;;34124:3;34117:5;34114:14;34111:882;;;-1:-1:-1;34163:4:81;34157:11;34205:15;;;34237:28;;;34293:19;;;;-1:-1:-1;;34342:4:81;34452:23;;34448:31;;34433:237;34538:15;;;34532:22;34516:14;;;34509:46;34581:9;;34630:22;34433:237;34630:22;-1:-1:-1;34786:1:81;34748:36;;;34764:4;34748:36;34741:47;34968:4;34950:23;;;34946:31;34934:44;;34928:4;34921:58;33730:1279;;;;;:::o;882:132:74:-;943:13;975:32;983:4;989:10;;;;;;;;;;;;;;;;;1001:5;975:7;:32::i;1554:693:79:-;1662:4;1682:6;;;:32;;;-1:-1:-1;;;;;;;;;;;1692:1:79;:22;;1682:32;:42;;;-1:-1:-1;1718:6:79;;1682:42;:68;;;;-1:-1:-1;;;;;;;;;;;1728:1:79;:22;;1682:68;1678:111;;;-1:-1:-1;1773:5:79;1766:12;;1678:111;1804:39;1836:2;1840;1804:31;:39::i;:::-;1799:83;;-1:-1:-1;1866:5:79;1859:12;;1799:83;1892:12;1907:30;1935:1;1907:27;:30::i;:::-;1892:45;-1:-1:-1;1948:16:79;-1:-1:-1;;;;;;;;;;;1992:4:79;1982:7;1967:49;1948:68;-1:-1:-1;2026:16:79;-1:-1:-1;;;;;;;;;;;2055:4:79;2052:1;2045:34;2026:53;;2089:10;2115:64;2152:2;2156;2160:8;2170;2115:36;:64::i;:::-;2110:69;-1:-1:-1;;;;;;;;;;;;2206:5:79;2210:1;-1:-1:-1;;;;;;;;;;;2206:5:79;:::i;:::-;2202:2;2195:20;2233:7;;1554:693;-1:-1:-1;;;;;;;;;;1554:693:79:o;1083:3768:74:-;1180:13;1412:4;:11;1427:1;1412:16;1408:31;;-1:-1:-1;1430:9:74;;;;;;;;;-1:-1:-1;1430:9:74;;;;1408:31;2160:20;2183:11;:69;;2251:1;2232:4;:11;2228:1;:15;;;;:::i;:::-;:19;;2246:1;2228:19;:::i;:::-;2227:25;;;;:::i;:::-;2183:69;;;2222:1;2203:4;:11;2217:1;2203:15;;;;:::i;:::-;2202:21;;;;:::i;:::-;2197:27;;:1;:27;:::i;:::-;2160:92;;2263:20;2297:12;2286:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2286:24:74;;2263:47;;2485:1;2478:5;2474:13;2586:4;2578:6;2574:17;2619:4;2666;2660:11;2654:4;2650:22;2914:4;2906:6;2902:17;2956:8;2950:15;2995:4;2985:8;2978:22;3067:1231;3086:6;3077:7;3074:19;3067:1231;;;3174:1;3165:7;3161:15;3150:26;;3212:7;3206:14;3799:4;3791:5;3787:2;3783:14;3779:25;3769:8;3765:40;3759:47;3748:9;3740:67;3852:1;3841:9;3837:17;3824:30;;3942:4;3934:5;3930:2;3926:14;3922:25;3912:8;3908:40;3902:47;3891:9;3883:67;3995:1;3984:9;3980:17;3967:30;;4084:4;4076:5;4073:1;4069:13;4065:24;4055:8;4051:39;4045:46;4034:9;4026:66;4137:1;4126:9;4122:17;4109:30;;4218:4;4211:5;4207:16;4197:8;4193:31;4187:38;4176:9;4168:58;;4271:1;4260:9;4256:17;4243:30;;3067:1231;;;4359:28;;-1:-1:-1;;4401:410:74;;;;4586:1;4579:4;4573:11;4569:19;4610:1;4605:132;;;;4759:1;4754:43;;;;4562:235;;4605:132;4661:4;4657:1;4646:9;4642:17;4634:32;4714:4;4710:1;4699:9;4695:17;4687:32;4605:132;;4754:43;4790:4;4786:1;4775:9;4771:17;4763:32;4562:235;;4401:410;-1:-1:-1;4838:6:74;;1083:3768;-1:-1:-1;;;;;;1083:3768:74:o;13133:438:80:-;13203:4;-1:-1:-1;;;;;;;;13223:1:80;:6;;:16;;;;-1:-1:-1;;;;;;;;13233:1:80;:6;;13223:16;:42;;;-1:-1:-1;13245:6:80;;13244:20;;;;-1:-1:-1;13257:6:80;;13244:20;13219:85;;;-1:-1:-1;13288:5:80;13281:12;;13219:85;13337:11;-1:-1:-1;;;;;;;;13361:1:80;13358;13351:15;13337:29;-1:-1:-1;13387:11:80;-1:-1:-1;;;;;;;;1530:66:80;1665;13446:1;13439:15;-1:-1:-1;;;;;;;;13432:1:80;-1:-1:-1;;;;;;;;13425:1:80;13422;13415:15;13408:29;13401:57;13387:71;-1:-1:-1;;;;;;;;;1801:66:80;13495:3;13488:17;13544:10;;;;;13133:438;-1:-1:-1;;;;13133:438:80:o;3159:734::-;3214:14;3284:4;3278:11;3395:4;3386:7;3379:21;3440:4;3433;3424:7;3420:18;3413:32;3485:4;3478;3469:7;3465:18;3458:32;3589:1;3582:4;3573:7;3569:18;3562:29;3631:11;3624:4;3615:7;3611:18;3604:39;-1:-1:-1;;;;;;;;;;;3676:4:80;3667:7;3663:18;3656:29;3817:4;3808:7;3802:4;3793:7;3787:4;3783:1;3779:6;3768:54;3758:82;;3836:1;3833;3826:12;3758:82;3863:14;;3159:734;-1:-1:-1;;3159:734:80:o;14334:6618::-;14516:9;;;;14613:3;14516:9;;14695:13;;:30;;;;-1:-1:-1;14712:13:80;;14695:30;14691:44;;;14734:1;14727:8;;;;;;;;;;14691:44;14761:25;1937:66;2031;14779:2;14783;14761:9;:25::i;:::-;14750:36;;-1:-1:-1;14750:36:80;-1:-1:-1;14822:7:80;;14821:22;;;;-1:-1:-1;14835:7:80;;14821:22;14800:243;;;-1:-1:-1;;;;;;;;;;;14924:8:80;-1:-1:-1;;;;;;;;;;;14920:12:80;14910:8;14903:33;14892:44;-1:-1:-1;14965:1:80;;-1:-1:-1;14988:13:80;;:30;;;;-1:-1:-1;15005:13:80;;14988:30;14984:44;;;15027:1;15020:8;;;;;;;;;;14984:44;15167:1;15156:8;15149:5;15145:20;15141:28;15136:1;15125:8;15118:5;15114:20;15110:28;15107:1;15103:36;15099:71;15083:263;15176:2;15083:263;;15225:1;15218:5;15214:13;15205:22;;15322:1;15311:8;15304:5;15300:20;15296:28;15291:1;15280:8;15273:5;15269:20;15265:28;15262:1;15258:36;15254:71;15248:77;;15083:263;;;15087:85;15437:1;15426:8;15419:5;15415:20;15411:28;15406:1;15395:8;15388:5;15384:20;15380:28;15377:1;15373:36;15369:71;15363:77;;15468:1;15464:2;15461:9;15458:88;;15498:2;15493:7;;15526:2;15521:7;;15458:88;15573:1;15569:2;15566:9;15563:88;;15603:2;15598:7;;15631:2;15626:7;;15563:88;15678:1;15674:2;15671:9;15668:88;;15708:2;15703:7;;15736:2;15731:7;;15668:88;15794:1;15787:5;15783:13;15774:22;;15819:1;15813:7;;15844:1;15837:8;;15863:4025;15882:5;-1:-1:-1;;15870:18:80;15863:4025;;;-1:-1:-1;;;;;;;;15998:1:80;15995;15988:15;-1:-1:-1;;;;;;;;16064:2:80;16060;16053:17;-1:-1:-1;;;;;;;;16120:2:80;16117:1;16110:16;-1:-1:-1;;;;;;;;16176:2:80;16172;16165:17;16159:23;;-1:-1:-1;;;;;;;;16282:1:80;-1:-1:-1;;;;;;;;16274:2:80;16271:1;16264:16;-1:-1:-1;;;;;;;;16255:2:80;-1:-1:-1;;;;;;;;16248:10:80;16245:1;16238:24;16231:53;16228:1;16221:67;-1:-1:-1;;;;;;;;16351:3:80;16347:2;16340:18;16333:25;;-1:-1:-1;;;;;;;;16410:2:80;16406;16399:17;16393:23;;-1:-1:-1;;;;;;;;16509:1:80;16505:2;-1:-1:-1;;;;;;;;;;16489:22:80;-1:-1:-1;;;;;;;;16481:2:80;16477;16470:17;16463:52;16458:57;;-1:-1:-1;;;;;;;;16587:1:80;16582:2;-1:-1:-1;;;;;;;;16575:10:80;16572:1;16565:24;16561:2;16554:39;16548:45;;-1:-1:-1;;;;;;;;16663:2:80;-1:-1:-1;;;;;;;;16656:1:80;16652:2;16645:16;16638:31;16633:36;;16896:1;16885:8;16878:5;16874:20;16870:28;16865:1;16854:8;16847:5;16843:20;16839:28;16836:1;16832:36;16828:71;16822:77;;16935:2;16925:148;;16981:1;-1:-1:-1;;;;;;;;16974:9:80;16969:14;;17039:8;;;;;;16925:148;17121:1;17117:2;17114:9;17111:114;;17160:2;17154:8;;17197:2;17191:8;;17111:114;17260:1;17256:2;17253:9;17250:114;;17299:2;17293:8;;17336:2;17330:8;;17250:114;17399:1;17395:2;17392:9;17389:114;;17438:2;17432:8;;17475:2;17469:8;;17389:114;17538:2;17528:223;;-1:-1:-1;17577:2:80;;-1:-1:-1;17650:1:80;;-1:-1:-1;17650:1:80;;-1:-1:-1;17613:2:80;-1:-1:-1;17717:8:80;;-1:-1:-1;17717:8:80;17528:223;-1:-1:-1;;;;;;;;17931:1:80;-1:-1:-1;;;;;;;;17922:3:80;17918:2;17911:18;17904:32;-1:-1:-1;;;;;;;;18004:1:80;-1:-1:-1;;;;;;;;17997:9:80;-1:-1:-1;;;;;;;;17989:2:80;17985;17978:17;17971:39;17965:45;;18235:2;18225:1043;;18279:2;18269:973;;-1:-1:-1;;;;;;;;18339:1:80;-1:-1:-1;;;;;;;;;;18323:21:80;18317:27;;-1:-1:-1;;;;;;;;18413:2:80;18409;18402:17;18396:23;;-1:-1:-1;;;;;;;;18477:2:80;18474:1;18467:16;18461:22;;-1:-1:-1;;;;;;;;18546:2:80;18542;18535:17;18529:23;;-1:-1:-1;;;;;;;;18646:1:80;18641:2;-1:-1:-1;;;;;;;;18634:10:80;18631:1;18624:24;-1:-1:-1;;;;;;;;18616:2:80;18613:1;18606:16;18599:53;18593:59;;-1:-1:-1;;;;;;;;18716:2:80;18713:1;18706:16;18700:22;;-1:-1:-1;;;;;;;;18793:3:80;18789:2;18782:18;18775:25;;-1:-1:-1;;;;;;;;18864:2:80;18860;18853:17;18847:23;;-1:-1:-1;;;;;;;;18975:1:80;18971:2;-1:-1:-1;;;;;;;;;;18955:22:80;-1:-1:-1;;;;;;;;18947:2:80;18943;18936:17;18929:52;18924:57;;-1:-1:-1;;;;;;;;19065:1:80;19061;-1:-1:-1;;;;;;;;19054:9:80;19050:2;19043:24;19039:2;19032:39;19026:45;;-1:-1:-1;;;;;;;;19145:1:80;19142;19138:2;19131:16;19127:2;19120:31;19115:36;;19204:8;;;;;;;18269:973;-1:-1:-1;;;;;;;;19311:2:80;19307;19300:17;19294:23;;-1:-1:-1;;;;;;;;19369:2:80;19365;19358:17;-1:-1:-1;;;;;;;;19485:2:80;19481;19474:17;19468:23;;-1:-1:-1;;;;;;;;19535:3:80;19530;19523:19;19516:26;;-1:-1:-1;;;;;;;;19600:2:80;19597:1;19590:16;-1:-1:-1;;;;;;;;19708:1:80;19703:3;-1:-1:-1;;;;;;;;;;19687:23:80;-1:-1:-1;;;;;;;;19677:3:80;-1:-1:-1;;;;;;;;19670:11:80;-1:-1:-1;;;;;;;;19662:2:80;19658;19651:17;19644:41;19637:77;19631:83;;-1:-1:-1;;;;;;;;19809:1:80;19804:3;19801:1;19794:17;-1:-1:-1;;;;;;;;19786:2:80;-1:-1:-1;;;;;;;;19777:2:80;-1:-1:-1;;;;;;;;19770:10:80;19765:3;19758:26;19751:41;19744:71;19739:76;;;;;19846:2;19841:7;;16755:3115;;;;15863:4025;15911:1;15904:5;15900:13;15891:22;;15863:4025;;;19931:4;19925:11;19974:2;19967:4;19964:1;19960:12;19953:24;20239:4;20236:1;20229:15;20282:4;20275;20272:1;20268:12;20261:26;20325:4;20318;20315:1;20311:12;20304:26;-1:-1:-1;;;;;;;;;;20472:4:80;20469:1;20465:12;20458:29;-1:-1:-1;;;;;;;;20518:4:80;20515:1;20511:12;20504:23;20655:4;20652:1;20646:4;20643:1;20637:4;20633:1;20629:6;20618:42;20608:70;;20674:1;20671;20664:12;20608:70;-1:-1:-1;;;;;;;;20859:1:80;20853:8;20850:1;20843:22;20838:27;;;20937:8;;;;;;14334:6618;;;;;;;:::o;13673:501::-;13763:7;;;;12984:6;13835:41;;13869:2;13873;13861:15;;;;;;;;13835:41;12984:6;13886:41;;13920:2;13924;13912:15;;;;;;;;13886:41;13948:2;13942;:8;13941:24;;;;;13962:2;13956;:8;13941:24;13937:183;;;14003:22;14012:2;14016;14020:1;14023;14003:8;:22::i;:::-;13981:44;;-1:-1:-1;13981:44:80;;-1:-1:-1;13981:44:80;-1:-1:-1;13981:44:80;-1:-1:-1;13937:183:80;;;14078:31;14088:2;14092;14096:1;14099;14102:2;14106;14078:9;:31::i;:::-;14056:53;;-1:-1:-1;14056:53:80;;-1:-1:-1;14056:53:80;-1:-1:-1;14056:53:80;-1:-1:-1;13937:183:80;14137:30;14149:2;14153;14157:3;14162:4;14137:11;:30::i;:::-;14130:37;;;;;;13673:501;;;;;;;;:::o;9863:928::-;9975:10;9987;9999;10011;-1:-1:-1;;;;;;;;10104:1:80;10101;10094:15;10088:21;;-1:-1:-1;;;;;;;;10154:2:80;10150;10143:17;10137:23;;-1:-1:-1;;;;;;;;10202:2:80;10199:1;10192:16;10186:22;;-1:-1:-1;;;;;;;;10254:2:80;10250;10243:17;10237:23;;-1:-1:-1;;;;;;;;10302:2:80;10298;10291:17;10285:23;;-1:-1:-1;;;;;;;;10404:1:80;-1:-1:-1;;;;;;;;10396:2:80;10393:1;10386:16;-1:-1:-1;;;;;;;;10377:2:80;-1:-1:-1;;;;;;;;10370:10:80;10367:1;10360:24;10353:53;10350:1;10343:67;10337:73;;-1:-1:-1;;;;;;;;10503:1:80;10499:2;-1:-1:-1;;;;;;;;;;10483:22:80;-1:-1:-1;;;;;;;;10475:2:80;10471;10464:17;10457:52;10451:58;;-1:-1:-1;;;;;;;;10577:1:80;10572:2;-1:-1:-1;;;;;;;;10565:10:80;10561:2;10554:25;10550:2;10543:40;10538:45;;-1:-1:-1;;;;;;;;10627:3:80;10623:2;10616:18;10610:24;;-1:-1:-1;;;;;;;;10702:1:80;10699;10695:2;10688:16;-1:-1:-1;;;;;;;;10681:24:80;10678:1;10671:38;10665:44;;9863:928;;;;;;;;;:::o;11008:1073::-;11149:10;11161;11173;11185;11239:2;11245:1;11239:7;11235:67;;-1:-1:-1;11274:2:80;;-1:-1:-1;11278:2:80;;-1:-1:-1;11282:1:80;;-1:-1:-1;11282:1:80;11266:21;;11235:67;-1:-1:-1;;;;;;;;11349:10:80;;;;;11353:1;11400:4;11396:2;11389:19;11382:34;11376:40;;-1:-1:-1;;;;;;;;11473:2:80;-1:-1:-1;;;;;;;;11466:10:80;-1:-1:-1;;;;;;;;11457:3:80;11453:2;11446:18;11439:41;11433:47;;-1:-1:-1;;;;;;;;11514:2:80;11510;11503:17;11497:23;;-1:-1:-1;;;;;;;;11565:2:80;11561;11554:17;11548:23;;-1:-1:-1;;;;;;;;11619:2:80;11614:3;11607:18;11601:24;;-1:-1:-1;;;;;;;;11678:2:80;11672:4;11665:19;11659:25;;-1:-1:-1;;;;;;;;11739:2:80;11735;11728:17;11721:24;;-1:-1:-1;;;;;;;;11850:1:80;11845:3;-1:-1:-1;;;;;;;;;;11829:23:80;-1:-1:-1;;;;;;;;11820:2:80;-1:-1:-1;;;;;;;;11813:10:80;-1:-1:-1;;;;;;;;11805:2:80;11801;11794:17;11787:40;11780:76;11774:82;;-1:-1:-1;;;;;;;;11958:1:80;11954:2;11950;11943:17;-1:-1:-1;;;;;;;;11935:2:80;-1:-1:-1;;;;;;;;11926:2:80;-1:-1:-1;;;;;;;;11919:10:80;11914:3;11907:26;11900:41;11893:71;11887:77;;11008:1073;;;;;;;;;;;;:::o;9375:379::-;9490:10;9502;9528:14;9545:16;9557:3;9545:11;:16::i;:::-;9528:33;-1:-1:-1;;;;;;;;;9594:6:80;9591:1;9584:20;9579:25;-1:-1:-1;9622:10:80;-1:-1:-1;;;;;;;;9646:6:80;9642:2;9635:21;9622:34;-1:-1:-1;;;;;;;;;9692:2:80;9688;9681:17;9672:26;-1:-1:-1;;;;;;;;;9730:6:80;9727:1;9720:20;9715:25;;9518:236;;9375:379;;;;;;;:::o;4005:730::-;4060:14;4130:4;4124:11;4241:4;4232:7;4225:21;4286:4;4279;4270:7;4266:18;4259:32;4331:4;4324;4315:7;4311:18;4304:32;4435:1;4428:4;4419:7;4415:18;4408:29;-1:-1:-1;;;;;;;;;;4470:4:80;4461:7;4457:18;4450:35;-1:-1:-1;;;;;;;;4518:4:80;4509:7;4505:18;4498:29;4659:4;4650:7;4644:4;4635:7;4629:4;4625:1;4621:6;4610:54;4600:82;;4678:1;4675;4668:12;14:659:89;93:6;101;109;162:2;150:9;141:7;137:23;133:32;130:52;;;178:1;175;168:12;130:52;214:9;201:23;191:33;;275:2;264:9;260:18;247:32;298:18;339:2;331:6;328:14;325:34;;;355:1;352;345:12;325:34;393:6;382:9;378:22;368:32;;438:7;431:4;427:2;423:13;419:27;409:55;;460:1;457;450:12;409:55;500:2;487:16;526:2;518:6;515:14;512:34;;;542:1;539;532:12;512:34;587:7;582:2;573:6;569:2;565:15;561:24;558:37;555:57;;;608:1;605;598:12;555:57;639:2;635;631:11;621:21;;661:6;651:16;;;;;14:659;;;;;:::o;885:316::-;962:6;970;978;1031:2;1019:9;1010:7;1006:23;1002:32;999:52;;;1047:1;1044;1037:12;999:52;-1:-1:-1;;1070:23:89;;;1140:2;1125:18;;1112:32;;-1:-1:-1;1191:2:89;1176:18;;;1163:32;;885:316;-1:-1:-1;885:316:89:o;1206:354::-;1274:6;1282;1335:2;1323:9;1314:7;1310:23;1306:32;1303:52;;;1351:1;1348;1341:12;1303:52;1377:23;;-1:-1:-1;;;;;1429:31:89;;1419:42;;1409:70;;1475:1;1472;1465:12;1409:70;1498:5;1550:2;1535:18;;;;1522:32;;-1:-1:-1;;;1206:354:89:o;1873:180::-;1932:6;1985:2;1973:9;1964:7;1960:23;1956:32;1953:52;;;2001:1;1998;1991:12;1953:52;-1:-1:-1;2024:23:89;;1873:180;-1:-1:-1;1873:180:89:o;2058:461::-;2159:6;2167;2220:2;2208:9;2199:7;2195:23;2191:32;2188:52;;;2236:1;2233;2226:12;2188:52;2276:9;2263:23;2309:18;2301:6;2298:30;2295:50;;;2341:1;2338;2331:12;2295:50;2364:22;;2420:3;2402:16;;;2398:26;2395:46;;;2437:1;2434;2427:12;2959:521;3036:4;3042:6;3102:11;3089:25;3196:2;3192:7;3181:8;3165:14;3161:29;3157:43;3137:18;3133:68;3123:96;;3215:1;3212;3205:12;3123:96;3242:33;;3294:20;;;-1:-1:-1;3337:18:89;3326:30;;3323:50;;;3369:1;3366;3359:12;3323:50;3402:4;3390:17;;-1:-1:-1;3433:14:89;3429:27;;;3419:38;;3416:58;;;3470:1;3467;3460:12;3416:58;2959:521;;;;;:::o;3485:331::-;3590:9;3601;3643:8;3631:10;3628:24;3625:44;;;3665:1;3662;3655:12;3625:44;3694:6;3684:8;3681:20;3678:40;;;3714:1;3711;3704:12;3678:40;-1:-1:-1;;3740:23:89;;;3785:25;;;;;-1:-1:-1;3485:331:89:o;3821:337::-;-1:-1:-1;;3942:19:89;;4029:11;;;;4060:2;4052:11;;4049:103;;;4139:2;4133;4126:3;4122:2;4118:12;4115:1;4111:20;4107:29;4103:2;4099:38;4095:47;4086:56;;4049:103;;;3821:337;;;;:::o;4163:127::-;4224:10;4219:3;4215:20;4212:1;4205:31;4255:4;4252:1;4245:15;4279:4;4276:1;4269:15;4295:253;4367:2;4361:9;4409:4;4397:17;;4444:18;4429:34;;4465:22;;;4426:62;4423:88;;;4491:18;;:::i;:::-;4527:2;4520:22;4295:253;:::o;4553:275::-;4624:2;4618:9;4689:2;4670:13;;-1:-1:-1;;4666:27:89;4654:40;;4724:18;4709:34;;4745:22;;;4706:62;4703:88;;;4771:18;;:::i;:::-;4807:2;4800:22;4553:275;;-1:-1:-1;4553:275:89:o;4833:186::-;4881:4;4914:18;4906:6;4903:30;4900:56;;;4936:18;;:::i;:::-;-1:-1:-1;5002:2:89;4981:15;-1:-1:-1;;4977:29:89;5008:4;4973:40;;4833:186::o;5024:739::-;5101:6;5109;5162:2;5150:9;5141:7;5137:23;5133:32;5130:52;;;5178:1;5175;5168:12;5130:52;5214:9;5201:23;5191:33;;5275:2;5264:9;5260:18;5247:32;5302:18;5294:6;5291:30;5288:50;;;5334:1;5331;5324:12;5288:50;5357:22;;5410:4;5402:13;;5398:27;-1:-1:-1;5388:55:89;;5439:1;5436;5429:12;5388:55;5475:2;5462:16;5500:48;5516:31;5544:2;5516:31;:::i;:::-;5500:48;:::i;:::-;5571:2;5564:5;5557:17;5611:7;5606:2;5601;5597;5593:11;5589:20;5586:33;5583:53;;;5632:1;5629;5622:12;5583:53;5687:2;5682;5678;5674:11;5669:2;5662:5;5658:14;5645:45;5731:1;5726:2;5721;5714:5;5710:14;5706:23;5699:34;5752:5;5742:15;;;;;5024:739;;;;;:::o;5768:250::-;5853:1;5863:113;5877:6;5874:1;5871:13;5863:113;;;5953:11;;;5947:18;5934:11;;;5927:39;5899:2;5892:10;5863:113;;;-1:-1:-1;;6010:1:89;5992:16;;5985:27;5768:250::o;6023:441::-;6076:5;6129:3;6122:4;6114:6;6110:17;6106:27;6096:55;;6147:1;6144;6137:12;6096:55;6176:6;6170:13;6207:48;6223:31;6251:2;6223:31;:::i;6207:48::-;6280:2;6271:7;6264:19;6326:3;6319:4;6314:2;6306:6;6302:15;6298:26;6295:35;6292:55;;;6343:1;6340;6333:12;6292:55;6356:77;6430:2;6423:4;6414:7;6410:18;6403:4;6395:6;6391:17;6356:77;:::i;6469:1006::-;6570:6;6623:2;6611:9;6602:7;6598:23;6594:32;6591:52;;;6639:1;6636;6629:12;6591:52;6672:9;6666:16;6701:18;6742:2;6734:6;6731:14;6728:34;;;6758:1;6755;6748:12;6728:34;6781:22;;;;6837:4;6819:16;;;6815:27;6812:47;;;6855:1;6852;6845:12;6812:47;6881:22;;:::i;:::-;6934:2;6928:9;6962:2;6952:8;6949:16;6946:36;;;6978:1;6975;6968:12;6946:36;7005:55;7052:7;7041:8;7037:2;7033:17;7005:55;:::i;:::-;6998:5;6991:70;;7100:2;7096;7092:11;7086:18;7129:2;7119:8;7116:16;7113:36;;;7145:1;7142;7135:12;7113:36;7181:55;7228:7;7217:8;7213:2;7209:17;7181:55;:::i;:::-;7176:2;7169:5;7165:14;7158:79;;7283:2;7279;7275:11;7269:18;7264:2;7257:5;7253:14;7246:42;7334:2;7330;7326:11;7320:18;7315:2;7308:5;7304:14;7297:42;7386:3;7382:2;7378:12;7372:19;7366:3;7359:5;7355:15;7348:44;7439:3;7435:2;7431:12;7425:19;7419:3;7412:5;7408:15;7401:44;7464:5;7454:15;;;;;6469:1006;;;;:::o;7794:127::-;7855:10;7850:3;7846:20;7843:1;7836:31;7886:4;7883:1;7876:15;7910:4;7907:1;7900:15;7926:217;7966:1;7992;7982:132;;8036:10;8031:3;8027:20;8024:1;8017:31;8071:4;8068:1;8061:15;8099:4;8096:1;8089:15;7982:132;-1:-1:-1;8128:9:89;;7926:217::o;8148:128::-;8215:9;;;8236:11;;;8233:37;;;8250:18;;:::i;8281:125::-;8346:9;;;8367:10;;;8364:36;;;8380:18;;:::i;8411:611::-;-1:-1:-1;;;8741:51:89;;8815:13;;8723:3;;8837:75;8815:13;8900:2;8891:12;;8884:4;8872:17;;8837:75;:::i;:::-;-1:-1:-1;;;8971:2:89;8931:16;;;;8963:11;;;8956:33;-1:-1:-1;9013:2:89;9005:11;;8411:611;-1:-1:-1;8411:611:89:o;9027:127::-;9088:10;9083:3;9079:20;9076:1;9069:31;9119:4;9116:1;9109:15;9143:4;9140:1;9133:15;9159:287;9288:3;9326:6;9320:13;9342:66;9401:6;9396:3;9389:4;9381:6;9377:17;9342:66;:::i;:::-;9424:16;;;;;9159:287;-1:-1:-1;;9159:287:89:o;9451:184::-;9521:6;9574:2;9562:9;9553:7;9549:23;9545:32;9542:52;;;9590:1;9587;9580:12;9542:52;-1:-1:-1;9613:16:89;;9451:184;-1:-1:-1;9451:184:89:o;9640:383::-;9797:3;9835:6;9829:13;9851:66;9910:6;9905:3;9898:4;9890:6;9886:17;9851:66;:::i;:::-;9939:16;;;;9964:21;;;-1:-1:-1;10012:4:89;10001:16;;9640:383;-1:-1:-1;9640:383:89:o;10685:168::-;10758:9;;;10789;;10806:15;;;10800:22;;10786:37;10776:71;;10827:18;;:::i", + "linkReferences": {} + }, + "methodIdentifiers": { + "callback((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32)": "dee30c97", + "getPublicKey(address,bytes32)": "7cefdd5d", + "isValidSignature(bytes32,bytes)": "1626ba7e", + "registerPublicKey(bytes32,uint256,uint256)": "3082ab5b", + "removePublicKey(bytes32)": "8f3285f5", + "validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32)": "fff35b72" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"keyId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"name\":\"PasskeyRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"keyId\",\"type\":\"bytes32\"}],\"name\":\"PasskeyRemoved\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"callback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"keyId\",\"type\":\"bytes32\"}],\"name\":\"getPublicKey\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct PasskeyModule.PublicKey\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"keyId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"name\":\"registerPublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"keyId\",\"type\":\"bytes32\"}],\"name\":\"removePublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"validateUserOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"validationData\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/Passkey.sol\":\"PasskeyModule\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":webauthn-sol/=lib/webauthn-sol/src/\"]},\"sources\":{\"lib/account-abstraction/contracts/core/BaseAccount.sol\":{\"keccak256\":\"0x5eb3253b32fd8ba8ae7b9d83da8e9924254a4d3d17a8772b41280e8572974b3c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://b2d23d1276f85300e2ad0c7219614a072796b4f5581fd552b0bcaa47904400d3\",\"dweb:/ipfs/QmVWK5WZ3VskNTfCBxLqY4xBP7WGm3cRM9Qhdy56f5TfAk\"]},\"lib/account-abstraction/contracts/core/Helpers.sol\":{\"keccak256\":\"0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746\",\"dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU\"]},\"lib/account-abstraction/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x556a0e5980de18e90b115553ed502408155ba35f58642823010d9288047bc418\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a0f420134b79596db8737173c7b933ae0a33059e107b6327c43aa40d4744a9e4\",\"dweb:/ipfs/QmRo8s1AhXmEMV7uPYnbpYwU19e9Bk6jmYBJTiPx3Fo85W\"]},\"lib/account-abstraction/contracts/interfaces/IAggregator.sol\":{\"keccak256\":\"0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b\",\"dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP\"]},\"lib/account-abstraction/contracts/interfaces/IEntryPoint.sol\":{\"keccak256\":\"0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf\",\"dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd\"]},\"lib/account-abstraction/contracts/interfaces/INonceManager.sol\":{\"keccak256\":\"0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2\",\"dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b\"]},\"lib/account-abstraction/contracts/interfaces/IStakeManager.sol\":{\"keccak256\":\"0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3\",\"dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ\"]},\"lib/account-abstraction/contracts/interfaces/UserOperation.sol\":{\"keccak256\":\"0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c\",\"dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/utils/Create2.sol\":{\"keccak256\":\"0x6e00f269073ffc4350e56b7e8153c9092d5f70bfba423299990514183101ef89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8dc5ff5c204604be7594ce2fa9100a0638f22b5aada6ebec1e165b0f50a48447\",\"dweb:/ipfs/QmfH7uWphPrq8jqwGvyh4pFnLEgEPmLwyGV2Bvx1Acjggh\"]},\"src/interfaces/IModule.sol\":{\"keccak256\":\"0x1de63b5efcf162b4486e094fd0fbb74afc320fdc8b52e2f10bfd4ed121c26d43\",\"license\":\"Apache\",\"urls\":[\"bzz-raw://c50fdd7a1d76e7f0c066abcb36d92842c5174463b2841080ef196102c52df964\",\"dweb:/ipfs/QmdcJdq3A9tgVWKQ5FrCuBjHmM3vyrxhApueVwRiJXYAsN\"]},\"src/interfaces/IWallet.sol\":{\"keccak256\":\"0xbb9abebf75ef11e45750a4652f1ab7448c39f28425b2b08cf273a80575f9e3be\",\"license\":\"Apache\",\"urls\":[\"bzz-raw://361727344a05d34a09d643e11d39001fe9b013e499a52fe5e35906fd681df4f5\",\"dweb:/ipfs/QmUC8AxxjupBdaS4c5bGPXp2Y7YcUkD2fX1UWYh6qnpyaq\"]},\"src/libraries/Base64.sol\":{\"keccak256\":\"0x0d721af3814ddfbb2e21b718aa1ccebae60770e4e101c8901bf40cdc2e61127c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9a9be2e63d9b06e4ea596853c28b4d07c49804f3d14bbb752624813942290d0\",\"dweb:/ipfs/QmfZRpbZ1hrNrwdWhUpFZ4XwE7Cg7Z5cZeCz2agTrPQwYr\"]},\"src/libraries/Base64Url.sol\":{\"keccak256\":\"0x6e409772dd9811bbc06212a4d76e0c49872b3fcccf6deded83d5cc45fe70d838\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c938bc1c269b33c9cc65e3d6351e07635a1ef177653bbebde80bad22a3c688d9\",\"dweb:/ipfs/QmZ4V7Y7cXUHFwJxvhpBYXzUKwBdnLMhq6X1LupTCEgMRN\"]},\"src/libraries/FCL_ecdsa.sol\":{\"keccak256\":\"0xbf7cdea8f1d4b285764c60698899a91b3091fd9e38f7762979a6af4f6a38effd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ace910c8f9c33673b0b3c69658abd5043f3b189b348e69b0198d8f87661af7\",\"dweb:/ipfs/QmcLhDNEV5qHy8UfGKLM5yaj3U4Tvjyq4FcZFzRRapZwnz\"]},\"src/libraries/FCL_elliptic.sol\":{\"keccak256\":\"0x87b36af497eb28dbcf8efcc9f35cdb961427cd44341e62328d585c8f5b1d4de6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c82c4d5b527936f48d1bb1c8cc424ca9318fcf38c2739fe09759ea9f518b5fc3\",\"dweb:/ipfs/QmVxXHGUyAtZZxRzkfoq5u7Tp1A8MPTQ5Lcd6qrZJg6xDk\"]},\"src/libraries/LibString.sol\":{\"keccak256\":\"0xff57c212b054277cc248b58a2f687a2e33e6eb18fe417682ba101dce6dd85029\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36b4fcc9d8f1eec0d9da4c0ab770875aa9a9a82ff06c4849a987a6acf2e7c0e0\",\"dweb:/ipfs/QmSp9YiVtBSm6RGnWD2arKirRj855J7mRqbHaB6gF8ikqj\"]},\"src/libraries/WebAuthn.sol\":{\"keccak256\":\"0x27cf9ccfc9bf0b34b442804834174bc847aa815fa8ed20c4eb6f544f0403ac86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cf63d38ba0684048b263e736fdd3c6eba7d0493ccbad3470f6c3084a8c8fdcd7\",\"dweb:/ipfs/QmTBPQg2M7tvdoKWgQ91KsJQe7WCJCPWuEKEDSDGdETCzJ\"]},\"src/modules/Passkey.sol\":{\"keccak256\":\"0x76af48fb4013306b5a1f6a236ee8046387f6ba1b3c0d194797636afa7e317ca9\",\"license\":\"Apache\",\"urls\":[\"bzz-raw://73ea00fe1b7d9a29eb905bac437fc0d7119ba55a59e7c44d9443aebac14362ef\",\"dweb:/ipfs/Qma2PEo7LsEfiv8HWFZJn5XSnfNUjHgaZaWD4mNVYRMGRL\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.19+commit.7dd6d404" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "keyId", + "type": "bytes32", + "indexed": true + }, + { + "internalType": "uint256", + "name": "x", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "y", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "PasskeyRegistered", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address", + "indexed": true + }, + { + "internalType": "bytes32", + "name": "keyId", + "type": "bytes32", + "indexed": true + } + ], + "type": "event", + "name": "PasskeyRemoved", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "struct UserOperation", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "callGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "verificationGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxFeePerGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxPriorityFeePerGas", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ] + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "callback" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "keyId", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "getPublicKey", + "outputs": [ + { + "internalType": "struct PasskeyModule.PublicKey", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "y", + "type": "uint256" + } + ] + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "digest", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "keyId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "y", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "registerPublicKey" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "keyId", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "removePublicKey" + }, + { + "inputs": [ + { + "internalType": "struct UserOperation", + "name": "userOp", + "type": "tuple", + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "callGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "verificationGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxFeePerGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxPriorityFeePerGas", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ] + }, + { + "internalType": "bytes32", + "name": "digest", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "validateUserOp", + "outputs": [ + { + "internalType": "uint256", + "name": "validationData", + "type": "uint256" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", + ":account-abstraction/=lib/account-abstraction/contracts/", + ":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/", + ":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", + ":forge-std/=lib/forge-std/src/", + ":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/", + ":openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + ":openzeppelin/=lib/openzeppelin-contracts/contracts/", + ":webauthn-sol/=lib/webauthn-sol/src/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/modules/Passkey.sol": "PasskeyModule" + }, + "libraries": {} + }, + "sources": { + "lib/account-abstraction/contracts/core/BaseAccount.sol": { + "keccak256": "0x5eb3253b32fd8ba8ae7b9d83da8e9924254a4d3d17a8772b41280e8572974b3c", + "urls": [ + "bzz-raw://b2d23d1276f85300e2ad0c7219614a072796b4f5581fd552b0bcaa47904400d3", + "dweb:/ipfs/QmVWK5WZ3VskNTfCBxLqY4xBP7WGm3cRM9Qhdy56f5TfAk" + ], + "license": "GPL-3.0" + }, + "lib/account-abstraction/contracts/core/Helpers.sol": { + "keccak256": "0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a", + "urls": [ + "bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746", + "dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU" + ], + "license": "GPL-3.0" + }, + "lib/account-abstraction/contracts/interfaces/IAccount.sol": { + "keccak256": "0x556a0e5980de18e90b115553ed502408155ba35f58642823010d9288047bc418", + "urls": [ + "bzz-raw://a0f420134b79596db8737173c7b933ae0a33059e107b6327c43aa40d4744a9e4", + "dweb:/ipfs/QmRo8s1AhXmEMV7uPYnbpYwU19e9Bk6jmYBJTiPx3Fo85W" + ], + "license": "GPL-3.0" + }, + "lib/account-abstraction/contracts/interfaces/IAggregator.sol": { + "keccak256": "0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a", + "urls": [ + "bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b", + "dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP" + ], + "license": "GPL-3.0" + }, + "lib/account-abstraction/contracts/interfaces/IEntryPoint.sol": { + "keccak256": "0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8", + "urls": [ + "bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf", + "dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd" + ], + "license": "GPL-3.0" + }, + "lib/account-abstraction/contracts/interfaces/INonceManager.sol": { + "keccak256": "0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12", + "urls": [ + "bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2", + "dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b" + ], + "license": "GPL-3.0" + }, + "lib/account-abstraction/contracts/interfaces/IStakeManager.sol": { + "keccak256": "0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f", + "urls": [ + "bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3", + "dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ" + ], + "license": "GPL-3.0-only" + }, + "lib/account-abstraction/contracts/interfaces/UserOperation.sol": { + "keccak256": "0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c", + "urls": [ + "bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c", + "dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN" + ], + "license": "GPL-3.0" + }, + "lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol": { + "keccak256": "0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544", + "urls": [ + "bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e", + "dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Create2.sol": { + "keccak256": "0x6e00f269073ffc4350e56b7e8153c9092d5f70bfba423299990514183101ef89", + "urls": [ + "bzz-raw://8dc5ff5c204604be7594ce2fa9100a0638f22b5aada6ebec1e165b0f50a48447", + "dweb:/ipfs/QmfH7uWphPrq8jqwGvyh4pFnLEgEPmLwyGV2Bvx1Acjggh" + ], + "license": "MIT" + }, + "src/interfaces/IModule.sol": { + "keccak256": "0x1de63b5efcf162b4486e094fd0fbb74afc320fdc8b52e2f10bfd4ed121c26d43", + "urls": [ + "bzz-raw://c50fdd7a1d76e7f0c066abcb36d92842c5174463b2841080ef196102c52df964", + "dweb:/ipfs/QmdcJdq3A9tgVWKQ5FrCuBjHmM3vyrxhApueVwRiJXYAsN" + ], + "license": "Apache" + }, + "src/interfaces/IWallet.sol": { + "keccak256": "0xbb9abebf75ef11e45750a4652f1ab7448c39f28425b2b08cf273a80575f9e3be", + "urls": [ + "bzz-raw://361727344a05d34a09d643e11d39001fe9b013e499a52fe5e35906fd681df4f5", + "dweb:/ipfs/QmUC8AxxjupBdaS4c5bGPXp2Y7YcUkD2fX1UWYh6qnpyaq" + ], + "license": "Apache" + }, + "src/libraries/Base64.sol": { + "keccak256": "0x0d721af3814ddfbb2e21b718aa1ccebae60770e4e101c8901bf40cdc2e61127c", + "urls": [ + "bzz-raw://a9a9be2e63d9b06e4ea596853c28b4d07c49804f3d14bbb752624813942290d0", + "dweb:/ipfs/QmfZRpbZ1hrNrwdWhUpFZ4XwE7Cg7Z5cZeCz2agTrPQwYr" + ], + "license": "MIT" + }, + "src/libraries/Base64Url.sol": { + "keccak256": "0x6e409772dd9811bbc06212a4d76e0c49872b3fcccf6deded83d5cc45fe70d838", + "urls": [ + "bzz-raw://c938bc1c269b33c9cc65e3d6351e07635a1ef177653bbebde80bad22a3c688d9", + "dweb:/ipfs/QmZ4V7Y7cXUHFwJxvhpBYXzUKwBdnLMhq6X1LupTCEgMRN" + ], + "license": "Apache-2.0" + }, + "src/libraries/FCL_ecdsa.sol": { + "keccak256": "0xbf7cdea8f1d4b285764c60698899a91b3091fd9e38f7762979a6af4f6a38effd", + "urls": [ + "bzz-raw://b2ace910c8f9c33673b0b3c69658abd5043f3b189b348e69b0198d8f87661af7", + "dweb:/ipfs/QmcLhDNEV5qHy8UfGKLM5yaj3U4Tvjyq4FcZFzRRapZwnz" + ], + "license": "MIT" + }, + "src/libraries/FCL_elliptic.sol": { + "keccak256": "0x87b36af497eb28dbcf8efcc9f35cdb961427cd44341e62328d585c8f5b1d4de6", + "urls": [ + "bzz-raw://c82c4d5b527936f48d1bb1c8cc424ca9318fcf38c2739fe09759ea9f518b5fc3", + "dweb:/ipfs/QmVxXHGUyAtZZxRzkfoq5u7Tp1A8MPTQ5Lcd6qrZJg6xDk" + ], + "license": "MIT" + }, + "src/libraries/LibString.sol": { + "keccak256": "0xff57c212b054277cc248b58a2f687a2e33e6eb18fe417682ba101dce6dd85029", + "urls": [ + "bzz-raw://36b4fcc9d8f1eec0d9da4c0ab770875aa9a9a82ff06c4849a987a6acf2e7c0e0", + "dweb:/ipfs/QmSp9YiVtBSm6RGnWD2arKirRj855J7mRqbHaB6gF8ikqj" + ], + "license": "MIT" + }, + "src/libraries/WebAuthn.sol": { + "keccak256": "0x27cf9ccfc9bf0b34b442804834174bc847aa815fa8ed20c4eb6f544f0403ac86", + "urls": [ + "bzz-raw://cf63d38ba0684048b263e736fdd3c6eba7d0493ccbad3470f6c3084a8c8fdcd7", + "dweb:/ipfs/QmTBPQg2M7tvdoKWgQ91KsJQe7WCJCPWuEKEDSDGdETCzJ" + ], + "license": "MIT" + }, + "src/modules/Passkey.sol": { + "keccak256": "0x76af48fb4013306b5a1f6a236ee8046387f6ba1b3c0d194797636afa7e317ca9", + "urls": [ + "bzz-raw://73ea00fe1b7d9a29eb905bac437fc0d7119ba55a59e7c44d9443aebac14362ef", + "dweb:/ipfs/Qma2PEo7LsEfiv8HWFZJn5XSnfNUjHgaZaWD4mNVYRMGRL" + ], + "license": "Apache" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/modules/Passkey.sol", + "id": 58759, + "exportedSymbols": { + "Base64Url": [ + 55209 + ], + "BaseAccount": [ + 141 + ], + "Create2": [ + 51885 + ], + "IAccount": [ + 3182 + ], + "IAggregator": [ + 3216 + ], + "IERC1271": [ + 50642 + ], + "IEntryPoint": [ + 3420 + ], + "IModule": [ + 55004 + ], + "INonceManager": [ + 3439 + ], + "IStakeManager": [ + 3579 + ], + "IWallet": [ + 55044 + ], + "PasskeyModule": [ + 58758 + ], + "UserOperation": [ + 3606 + ], + "UserOperationLib": [ + 3776 + ], + "ValidationData": [ + 2374 + ], + "WebAuthn": [ + 58497 + ], + "_intersectTimeRange": [ + 2518 + ], + "_packValidationData": [ + 2555, + 2593 + ], + "_parseValidationData": [ + 2433 + ], + "calldataKeccak": [ + 2603 + ] + }, + "nodeType": "SourceUnit", + "src": "35:2573:84", + "nodes": [ + { + "id": 58499, + "nodeType": "PragmaDirective", + "src": "35:23:84", + "nodes": [], + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ] + }, + { + "id": 58500, + "nodeType": "ImportDirective", + "src": "60:40:84", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/Create2.sol", + "file": "openzeppelin/utils/Create2.sol", + "nameLocation": "-1:-1:-1", + "scope": 58759, + "sourceUnit": 51886, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 58501, + "nodeType": "ImportDirective", + "src": "102:35:84", + "nodes": [], + "absolutePath": "src/interfaces/IModule.sol", + "file": "../interfaces/IModule.sol", + "nameLocation": "-1:-1:-1", + "scope": 58759, + "sourceUnit": 55005, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 58502, + "nodeType": "ImportDirective", + "src": "138:35:84", + "nodes": [], + "absolutePath": "src/interfaces/IWallet.sol", + "file": "../interfaces/IWallet.sol", + "nameLocation": "-1:-1:-1", + "scope": 58759, + "sourceUnit": 55045, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 58503, + "nodeType": "ImportDirective", + "src": "174:36:84", + "nodes": [], + "absolutePath": "src/libraries/Base64Url.sol", + "file": "../libraries/Base64Url.sol", + "nameLocation": "-1:-1:-1", + "scope": 58759, + "sourceUnit": 55210, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 58505, + "nodeType": "ImportDirective", + "src": "212:51:84", + "nodes": [], + "absolutePath": "src/libraries/WebAuthn.sol", + "file": "../libraries/WebAuthn.sol", + "nameLocation": "-1:-1:-1", + "scope": 58759, + "sourceUnit": 58498, + "symbolAliases": [ + { + "foreign": { + "id": 58504, + "name": "WebAuthn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58497, + "src": "220:8:84", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 58758, + "nodeType": "ContractDefinition", + "src": "265:2342:84", + "nodes": [ + { + "id": 58512, + "nodeType": "StructDefinition", + "src": "305:62:84", + "nodes": [], + "canonicalName": "PasskeyModule.PublicKey", + "members": [ + { + "constant": false, + "id": 58509, + "mutability": "mutable", + "name": "x", + "nameLocation": "340:1:84", + "nodeType": "VariableDeclaration", + "scope": 58512, + "src": "332:9:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58508, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "332:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58511, + "mutability": "mutable", + "name": "y", + "nameLocation": "359:1:84", + "nodeType": "VariableDeclaration", + "scope": 58512, + "src": "351:9:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58510, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "351:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "PublicKey", + "nameLocation": "312:9:84", + "scope": 58758, + "visibility": "public" + }, + { + "id": 58519, + "nodeType": "VariableDeclaration", + "src": "373:69:84", + "nodes": [], + "constant": false, + "mutability": "mutable", + "name": "_publicKeys", + "nameLocation": "431:11:84", + "scope": 58758, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_struct$_PublicKey_$58512_storage_$_$", + "typeString": "mapping(address => mapping(bytes32 => struct PasskeyModule.PublicKey))" + }, + "typeName": { + "id": 58518, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 58513, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "381:7:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "373:49:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_struct$_PublicKey_$58512_storage_$_$", + "typeString": "mapping(address => mapping(bytes32 => struct PasskeyModule.PublicKey))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 58517, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 58514, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "400:7:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "392:29:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_PublicKey_$58512_storage_$", + "typeString": "mapping(bytes32 => struct PasskeyModule.PublicKey)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 58516, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58515, + "name": "PublicKey", + "nameLocations": [ + "411:9:84" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 58512, + "src": "411:9:84" + }, + "referencedDeclaration": 58512, + "src": "411:9:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PublicKey_$58512_storage_ptr", + "typeString": "struct PasskeyModule.PublicKey" + } + } + } + }, + "visibility": "private" + }, + { + "id": 58529, + "nodeType": "EventDefinition", + "src": "449:91:84", + "nodes": [], + "anonymous": false, + "eventSelector": "e6813de69096f2d13f196130a730ba346707680ee5fabe9a6001c48b2e2a395a", + "name": "PasskeyRegistered", + "nameLocation": "455:17:84", + "parameters": { + "id": 58528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58521, + "indexed": true, + "mutability": "mutable", + "name": "user", + "nameLocation": "489:4:84", + "nodeType": "VariableDeclaration", + "scope": 58529, + "src": "473:20:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 58520, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "473:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58523, + "indexed": true, + "mutability": "mutable", + "name": "keyId", + "nameLocation": "511:5:84", + "nodeType": "VariableDeclaration", + "scope": 58529, + "src": "495:21:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58522, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "495:7:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58525, + "indexed": false, + "mutability": "mutable", + "name": "x", + "nameLocation": "526:1:84", + "nodeType": "VariableDeclaration", + "scope": 58529, + "src": "518:9:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58524, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "518:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58527, + "indexed": false, + "mutability": "mutable", + "name": "y", + "nameLocation": "537:1:84", + "nodeType": "VariableDeclaration", + "scope": 58529, + "src": "529:9:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58526, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "529:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "472:67:84" + } + }, + { + "id": 58535, + "nodeType": "EventDefinition", + "src": "545:66:84", + "nodes": [], + "anonymous": false, + "eventSelector": "2d7aa68d7c6e29815818dcd0deea0f49ceac033240ac3b69b6a6734c23e5843d", + "name": "PasskeyRemoved", + "nameLocation": "551:14:84", + "parameters": { + "id": 58534, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58531, + "indexed": true, + "mutability": "mutable", + "name": "user", + "nameLocation": "582:4:84", + "nodeType": "VariableDeclaration", + "scope": 58535, + "src": "566:20:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 58530, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "566:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58533, + "indexed": true, + "mutability": "mutable", + "name": "keyId", + "nameLocation": "604:5:84", + "nodeType": "VariableDeclaration", + "scope": 58535, + "src": "588:21:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58532, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "588:7:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "565:45:84" + } + }, + { + "id": 58565, + "nodeType": "FunctionDefinition", + "src": "617:196:84", + "nodes": [], + "body": { + "id": 58564, + "nodeType": "Block", + "src": "690:123:84", + "nodes": [], + "statements": [ + { + "expression": { + "id": 58554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 58544, + "name": "_publicKeys", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58519, + "src": "700:11:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_struct$_PublicKey_$58512_storage_$_$", + "typeString": "mapping(address => mapping(bytes32 => struct PasskeyModule.PublicKey storage ref))" + } + }, + "id": 58548, + "indexExpression": { + "expression": { + "id": 58545, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "712:3:84", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 58546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "716:6:84", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "712:10:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "700:23:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_PublicKey_$58512_storage_$", + "typeString": "mapping(bytes32 => struct PasskeyModule.PublicKey storage ref)" + } + }, + "id": 58549, + "indexExpression": { + "id": 58547, + "name": "keyId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58537, + "src": "724:5:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "700:30:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PublicKey_$58512_storage", + "typeString": "struct PasskeyModule.PublicKey storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 58551, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58539, + "src": "743:1:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 58552, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58541, + "src": "746:1:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 58550, + "name": "PublicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58512, + "src": "733:9:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_PublicKey_$58512_storage_ptr_$", + "typeString": "type(struct PasskeyModule.PublicKey storage pointer)" + } + }, + "id": 58553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "733:15:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PublicKey_$58512_memory_ptr", + "typeString": "struct PasskeyModule.PublicKey memory" + } + }, + "src": "700:48:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PublicKey_$58512_storage", + "typeString": "struct PasskeyModule.PublicKey storage ref" + } + }, + "id": 58555, + "nodeType": "ExpressionStatement", + "src": "700:48:84" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 58557, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "782:3:84", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 58558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "786:6:84", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "782:10:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 58559, + "name": "keyId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58537, + "src": "794:5:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 58560, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58539, + "src": "801:1:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 58561, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58541, + "src": "804:1:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 58556, + "name": "PasskeyRegistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58529, + "src": "764:17:84", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes32,uint256,uint256)" + } + }, + "id": 58562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "764:42:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58563, + "nodeType": "EmitStatement", + "src": "759:47:84" + } + ] + }, + "functionSelector": "3082ab5b", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "registerPublicKey", + "nameLocation": "626:17:84", + "parameters": { + "id": 58542, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58537, + "mutability": "mutable", + "name": "keyId", + "nameLocation": "652:5:84", + "nodeType": "VariableDeclaration", + "scope": 58565, + "src": "644:13:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58536, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "644:7:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58539, + "mutability": "mutable", + "name": "x", + "nameLocation": "667:1:84", + "nodeType": "VariableDeclaration", + "scope": 58565, + "src": "659:9:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58538, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "659:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58541, + "mutability": "mutable", + "name": "y", + "nameLocation": "678:1:84", + "nodeType": "VariableDeclaration", + "scope": 58565, + "src": "670:9:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58540, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "670:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "643:37:84" + }, + "returnParameters": { + "id": 58543, + "nodeType": "ParameterList", + "parameters": [], + "src": "690:0:84" + }, + "scope": 58758, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 58585, + "nodeType": "FunctionDefinition", + "src": "819:152:84", + "nodes": [], + "body": { + "id": 58584, + "nodeType": "Block", + "src": "868:103:84", + "nodes": [], + "statements": [ + { + "expression": { + "id": 58576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "878:37:84", + "subExpression": { + "baseExpression": { + "baseExpression": { + "id": 58570, + "name": "_publicKeys", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58519, + "src": "885:11:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_struct$_PublicKey_$58512_storage_$_$", + "typeString": "mapping(address => mapping(bytes32 => struct PasskeyModule.PublicKey storage ref))" + } + }, + "id": 58573, + "indexExpression": { + "expression": { + "id": 58571, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "897:3:84", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 58572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "901:6:84", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "897:10:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "885:23:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_PublicKey_$58512_storage_$", + "typeString": "mapping(bytes32 => struct PasskeyModule.PublicKey storage ref)" + } + }, + "id": 58575, + "indexExpression": { + "id": 58574, + "name": "keyId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58567, + "src": "909:5:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "885:30:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PublicKey_$58512_storage", + "typeString": "struct PasskeyModule.PublicKey storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58577, + "nodeType": "ExpressionStatement", + "src": "878:37:84" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 58579, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "946:3:84", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 58580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "950:6:84", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "946:10:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 58581, + "name": "keyId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58567, + "src": "958:5:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 58578, + "name": "PasskeyRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58535, + "src": "931:14:84", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32)" + } + }, + "id": 58582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "931:33:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58583, + "nodeType": "EmitStatement", + "src": "926:38:84" + } + ] + }, + "functionSelector": "8f3285f5", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "removePublicKey", + "nameLocation": "828:15:84", + "parameters": { + "id": 58568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58567, + "mutability": "mutable", + "name": "keyId", + "nameLocation": "852:5:84", + "nodeType": "VariableDeclaration", + "scope": 58585, + "src": "844:13:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58566, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "844:7:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "843:15:84" + }, + "returnParameters": { + "id": 58569, + "nodeType": "ParameterList", + "parameters": [], + "src": "868:0:84" + }, + "scope": 58758, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 58683, + "nodeType": "FunctionDefinition", + "src": "977:780:84", + "nodes": [], + "body": { + "id": 58682, + "nodeType": "Block", + "src": "1111:646:84", + "nodes": [], + "statements": [ + { + "assignments": [ + 58595 + ], + "declarations": [ + { + "constant": false, + "id": 58595, + "mutability": "mutable", + "name": "module", + "nameLocation": "1129:6:84", + "nodeType": "VariableDeclaration", + "scope": 58682, + "src": "1121:14:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 58594, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1121:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 58605, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "id": 58600, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58589, + "src": "1154:9:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "endExpression": { + "hexValue": "3230", + "id": 58601, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1165:2:84", + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "id": 58602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "1154:14:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + ], + "id": 58599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1146:7:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes20_$", + "typeString": "type(bytes20)" + }, + "typeName": { + "id": 58598, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "1146:7:84", + "typeDescriptions": {} + } + }, + "id": 58603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1146:23:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + ], + "id": 58597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1138:7:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 58596, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1138:7:84", + "typeDescriptions": {} + } + }, + "id": 58604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1138:32:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1121:49:84" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 58611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58606, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58595, + "src": "1184:6:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 58609, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1202:4:84", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PasskeyModule_$58758", + "typeString": "contract PasskeyModule" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_PasskeyModule_$58758", + "typeString": "contract PasskeyModule" + } + ], + "id": 58608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1194:7:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 58607, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1194:7:84", + "typeDescriptions": {} + } + }, + "id": 58610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1194:13:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1184:23:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58615, + "nodeType": "IfStatement", + "src": "1180:66:84", + "trueBody": { + "id": 58614, + "nodeType": "Block", + "src": "1209:37:84", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 58612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1230:5:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 58593, + "id": 58613, + "nodeType": "Return", + "src": "1223:12:84" + } + ] + } + }, + { + "assignments": [ + 58617, + 58619 + ], + "declarations": [ + { + "constant": false, + "id": 58617, + "mutability": "mutable", + "name": "keyId", + "nameLocation": "1265:5:84", + "nodeType": "VariableDeclaration", + "scope": 58682, + "src": "1257:13:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58616, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1257:7:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58619, + "mutability": "mutable", + "name": "passkeySignature", + "nameLocation": "1285:16:84", + "nodeType": "VariableDeclaration", + "scope": 58682, + "src": "1272:29:84", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 58618, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1272:5:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 58631, + "initialValue": { + "arguments": [ + { + "baseExpression": { + "id": 58622, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58589, + "src": "1316:9:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 58624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "1316:14:84", + "startExpression": { + "hexValue": "3230", + "id": 58623, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1326:2:84", + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + }, + { + "components": [ + { + "id": 58626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1333:7:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 58625, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1333:7:84", + "typeDescriptions": {} + } + }, + { + "id": 58628, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1342:5:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 58627, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1342:5:84", + "typeDescriptions": {} + } + } + ], + "id": 58629, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1332:16:84", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_bytes_storage_ptr_$_$", + "typeString": "tuple(type(bytes32),type(bytes storage pointer))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_bytes32_$_$_t_type$_t_bytes_storage_ptr_$_$", + "typeString": "tuple(type(bytes32),type(bytes storage pointer))" + } + ], + "expression": { + "id": 58620, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1305:3:84", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 58621, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1309:6:84", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "1305:10:84", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 58630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1305:44:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bytes32,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1256:93:84" + }, + { + "assignments": [ + 58634 + ], + "declarations": [ + { + "constant": false, + "id": 58634, + "mutability": "mutable", + "name": "publicKey", + "nameLocation": "1376:9:84", + "nodeType": "VariableDeclaration", + "scope": 58682, + "src": "1359:26:84", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PublicKey_$58512_memory_ptr", + "typeString": "struct PasskeyModule.PublicKey" + }, + "typeName": { + "id": 58633, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58632, + "name": "PublicKey", + "nameLocations": [ + "1359:9:84" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 58512, + "src": "1359:9:84" + }, + "referencedDeclaration": 58512, + "src": "1359:9:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PublicKey_$58512_storage_ptr", + "typeString": "struct PasskeyModule.PublicKey" + } + }, + "visibility": "internal" + } + ], + "id": 58641, + "initialValue": { + "baseExpression": { + "baseExpression": { + "id": 58635, + "name": "_publicKeys", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58519, + "src": "1388:11:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_struct$_PublicKey_$58512_storage_$_$", + "typeString": "mapping(address => mapping(bytes32 => struct PasskeyModule.PublicKey storage ref))" + } + }, + "id": 58638, + "indexExpression": { + "expression": { + "id": 58636, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1400:3:84", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 58637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1404:6:84", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1400:10:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1388:23:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_PublicKey_$58512_storage_$", + "typeString": "mapping(bytes32 => struct PasskeyModule.PublicKey storage ref)" + } + }, + "id": 58640, + "indexExpression": { + "id": 58639, + "name": "keyId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58617, + "src": "1412:5:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1388:30:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PublicKey_$58512_storage", + "typeString": "struct PasskeyModule.PublicKey storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1359:59:84" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 58650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58642, + "name": "publicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58634, + "src": "1441:9:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PublicKey_$58512_memory_ptr", + "typeString": "struct PasskeyModule.PublicKey memory" + } + }, + "id": 58643, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1451:1:84", + "memberName": "x", + "nodeType": "MemberAccess", + "referencedDeclaration": 58509, + "src": "1441:11:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 58644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1456:1:84", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1441:16:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58646, + "name": "publicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58634, + "src": "1461:9:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PublicKey_$58512_memory_ptr", + "typeString": "struct PasskeyModule.PublicKey memory" + } + }, + "id": 58647, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1471:1:84", + "memberName": "y", + "nodeType": "MemberAccess", + "referencedDeclaration": 58511, + "src": "1461:11:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 58648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1476:1:84", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1461:16:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1441:36:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58654, + "nodeType": "IfStatement", + "src": "1437:79:84", + "trueBody": { + "id": 58653, + "nodeType": "Block", + "src": "1479:37:84", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 58651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1500:5:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 58593, + "id": 58652, + "nodeType": "Return", + "src": "1493:12:84" + } + ] + } + }, + { + "assignments": [ + 58659 + ], + "declarations": [ + { + "constant": false, + "id": 58659, + "mutability": "mutable", + "name": "auth", + "nameLocation": "1555:4:84", + "nodeType": "VariableDeclaration", + "scope": 58682, + "src": "1526:33:84", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$58263_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth" + }, + "typeName": { + "id": 58658, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58657, + "name": "WebAuthn.WebAuthnAuth", + "nameLocations": [ + "1526:8:84", + "1535:12:84" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 58263, + "src": "1526:21:84" + }, + "referencedDeclaration": 58263, + "src": "1526:21:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$58263_storage_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth" + } + }, + "visibility": "internal" + } + ], + "id": 58667, + "initialValue": { + "arguments": [ + { + "id": 58662, + "name": "passkeySignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58619, + "src": "1573:16:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "expression": { + "id": 58663, + "name": "WebAuthn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58497, + "src": "1592:8:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_WebAuthn_$58497_$", + "typeString": "type(library WebAuthn)" + } + }, + "id": 58664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1601:12:84", + "memberName": "WebAuthnAuth", + "nodeType": "MemberAccess", + "referencedDeclaration": 58263, + "src": "1592:21:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_WebAuthnAuth_$58263_storage_ptr_$", + "typeString": "type(struct WebAuthn.WebAuthnAuth storage pointer)" + } + } + ], + "id": 58665, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1591:23:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_WebAuthnAuth_$58263_storage_ptr_$", + "typeString": "type(struct WebAuthn.WebAuthnAuth storage pointer)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_struct$_WebAuthnAuth_$58263_storage_ptr_$", + "typeString": "type(struct WebAuthn.WebAuthnAuth storage pointer)" + } + ], + "expression": { + "id": 58660, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1562:3:84", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 58661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1566:6:84", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "1562:10:84", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 58666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1562:53:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$58263_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1526:89:84" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58672, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58587, + "src": "1671:6:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58670, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1660:3:84", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 58671, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1664:6:84", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "1660:10:84", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 58673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1660:18:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "66616c7365", + "id": 58674, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1691:5:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "id": 58675, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58659, + "src": "1712:4:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$58263_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + { + "expression": { + "id": 58676, + "name": "publicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58634, + "src": "1721:9:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PublicKey_$58512_memory_ptr", + "typeString": "struct PasskeyModule.PublicKey memory" + } + }, + "id": 58677, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1731:1:84", + "memberName": "x", + "nodeType": "MemberAccess", + "referencedDeclaration": 58509, + "src": "1721:11:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 58678, + "name": "publicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58634, + "src": "1737:9:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PublicKey_$58512_memory_ptr", + "typeString": "struct PasskeyModule.PublicKey memory" + } + }, + "id": 58679, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1747:1:84", + "memberName": "y", + "nodeType": "MemberAccess", + "referencedDeclaration": 58511, + "src": "1737:11:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_struct$_WebAuthnAuth_$58263_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 58668, + "name": "WebAuthn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58497, + "src": "1632:8:84", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_WebAuthn_$58497_$", + "typeString": "type(library WebAuthn)" + } + }, + "id": 58669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1641:6:84", + "memberName": "verify", + "nodeType": "MemberAccess", + "referencedDeclaration": 58496, + "src": "1632:15:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bool_$_t_struct$_WebAuthnAuth_$58263_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (bytes memory,bool,struct WebAuthn.WebAuthnAuth memory,uint256,uint256) view returns (bool)" + } + }, + "id": 58680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "1649:9:84", + "1680:9:84", + "1698:12:84", + "1718:1:84", + "1734:1:84" + ], + "names": [ + "challenge", + "requireUV", + "webAuthnAuth", + "x", + "y" + ], + "nodeType": "FunctionCall", + "src": "1632:118:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 58593, + "id": 58681, + "nodeType": "Return", + "src": "1625:125:84" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_validatePasskeySignature", + "nameLocation": "986:25:84", + "parameters": { + "id": 58590, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58587, + "mutability": "mutable", + "name": "digest", + "nameLocation": "1020:6:84", + "nodeType": "VariableDeclaration", + "scope": 58683, + "src": "1012:14:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58586, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1012:7:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58589, + "mutability": "mutable", + "name": "signature", + "nameLocation": "1043:9:84", + "nodeType": "VariableDeclaration", + "scope": 58683, + "src": "1028:24:84", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 58588, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1028:5:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1011:42:84" + }, + "returnParameters": { + "id": 58593, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58592, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 58683, + "src": "1101:4:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 58591, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1101:4:84", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1100:6:84" + }, + "scope": 58758, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 58706, + "nodeType": "FunctionDefinition", + "src": "1763:288:84", + "nodes": [], + "body": { + "id": 58705, + "nodeType": "Block", + "src": "1926:125:84", + "nodes": [], + "statements": [ + { + "condition": { + "arguments": [ + { + "id": 58695, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58688, + "src": "1966:6:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 58696, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58686, + "src": "1974:6:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserOperation_$3606_calldata_ptr", + "typeString": "struct UserOperation calldata" + } + }, + "id": 58697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1981:9:84", + "memberName": "signature", + "nodeType": "MemberAccess", + "referencedDeclaration": 3605, + "src": "1974:16:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 58694, + "name": "_validatePasskeySignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58683, + "src": "1940:25:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes calldata) view returns (bool)" + } + }, + "id": 58698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1940:51:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58702, + "nodeType": "IfStatement", + "src": "1936:90:84", + "trueBody": { + "id": 58701, + "nodeType": "Block", + "src": "1993:33:84", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 58699, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2014:1:84", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 58693, + "id": 58700, + "nodeType": "Return", + "src": "2007:8:84" + } + ] + } + }, + { + "expression": { + "hexValue": "31", + "id": 58703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2043:1:84", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "functionReturnParameters": 58693, + "id": 58704, + "nodeType": "Return", + "src": "2036:8:84" + } + ] + }, + "baseFunctions": [ + 54995 + ], + "functionSelector": "fff35b72", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "validateUserOp", + "nameLocation": "1772:14:84", + "overrides": { + "id": 58690, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1872:8:84" + }, + "parameters": { + "id": 58689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58686, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "1810:6:84", + "nodeType": "VariableDeclaration", + "scope": 58706, + "src": "1787:29:84", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserOperation_$3606_calldata_ptr", + "typeString": "struct UserOperation" + }, + "typeName": { + "id": 58685, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58684, + "name": "UserOperation", + "nameLocations": [ + "1787:13:84" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3606, + "src": "1787:13:84" + }, + "referencedDeclaration": 3606, + "src": "1787:13:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserOperation_$3606_storage_ptr", + "typeString": "struct UserOperation" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58688, + "mutability": "mutable", + "name": "digest", + "nameLocation": "1826:6:84", + "nodeType": "VariableDeclaration", + "scope": 58706, + "src": "1818:14:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58687, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1818:7:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1786:47:84" + }, + "returnParameters": { + "id": 58693, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58692, + "mutability": "mutable", + "name": "validationData", + "nameLocation": "1906:14:84", + "nodeType": "VariableDeclaration", + "scope": 58706, + "src": "1898:22:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58691, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1898:7:84", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1897:24:84" + }, + "scope": 58758, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "id": 58716, + "nodeType": "FunctionDefinition", + "src": "2057:71:84", + "nodes": [], + "body": { + "id": 58715, + "nodeType": "Block", + "src": "2126:2:84", + "nodes": [], + "statements": [] + }, + "baseFunctions": [ + 55003 + ], + "functionSelector": "dee30c97", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "callback", + "nameLocation": "2066:8:84", + "overrides": { + "id": 58713, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2117:8:84" + }, + "parameters": { + "id": 58712, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58709, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 58716, + "src": "2075:22:84", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserOperation_$3606_calldata_ptr", + "typeString": "struct UserOperation" + }, + "typeName": { + "id": 58708, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58707, + "name": "UserOperation", + "nameLocations": [ + "2075:13:84" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3606, + "src": "2075:13:84" + }, + "referencedDeclaration": 3606, + "src": "2075:13:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserOperation_$3606_storage_ptr", + "typeString": "struct UserOperation" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58711, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 58716, + "src": "2099:7:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58710, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2099:7:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2074:33:84" + }, + "returnParameters": { + "id": 58714, + "nodeType": "ParameterList", + "parameters": [], + "src": "2126:0:84" + }, + "scope": 58758, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 58740, + "nodeType": "FunctionDefinition", + "src": "2134:325:84", + "nodes": [], + "body": { + "id": 58739, + "nodeType": "Block", + "src": "2287:172:84", + "nodes": [], + "statements": [ + { + "condition": { + "arguments": [ + { + "id": 58727, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58718, + "src": "2327:6:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 58728, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58720, + "src": "2335:9:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 58726, + "name": "_validatePasskeySignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58683, + "src": "2301:25:84", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes calldata) view returns (bool)" + } + }, + "id": 58729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2301:44:84", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 58737, + "nodeType": "Block", + "src": "2415:38:84", + "statements": [ + { + "expression": { + "hexValue": "307830303030", + "id": 58735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2436:6:84", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0000" + }, + "functionReturnParameters": 58725, + "id": 58736, + "nodeType": "Return", + "src": "2429:13:84" + } + ] + }, + "id": 58738, + "nodeType": "IfStatement", + "src": "2297:156:84", + "trueBody": { + "id": 58734, + "nodeType": "Block", + "src": "2347:62:84", + "statements": [ + { + "expression": { + "expression": { + "expression": { + "id": 58730, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2368:4:84", + "typeDescriptions": { + "typeIdentifier": "t_contract$_PasskeyModule_$58758", + "typeString": "contract PasskeyModule" + } + }, + "id": 58731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2373:16:84", + "memberName": "isValidSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": 58740, + "src": "2368:21:84", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (bytes32,bytes memory) view external returns (bytes4)" + } + }, + "id": 58732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2390:8:84", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "2368:30:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 58725, + "id": 58733, + "nodeType": "Return", + "src": "2361:37:84" + } + ] + } + } + ] + }, + "baseFunctions": [ + 50641 + ], + "functionSelector": "1626ba7e", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isValidSignature", + "nameLocation": "2143:16:84", + "overrides": { + "id": 58722, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2238:8:84" + }, + "parameters": { + "id": 58721, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58718, + "mutability": "mutable", + "name": "digest", + "nameLocation": "2168:6:84", + "nodeType": "VariableDeclaration", + "scope": 58740, + "src": "2160:14:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58717, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2160:7:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58720, + "mutability": "mutable", + "name": "signature", + "nameLocation": "2191:9:84", + "nodeType": "VariableDeclaration", + "scope": 58740, + "src": "2176:24:84", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 58719, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2176:5:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2159:42:84" + }, + "returnParameters": { + "id": 58725, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58724, + "mutability": "mutable", + "name": "magicValue", + "nameLocation": "2271:10:84", + "nodeType": "VariableDeclaration", + "scope": 58740, + "src": "2264:17:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 58723, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2264:6:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "2263:19:84" + }, + "scope": 58758, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 58757, + "nodeType": "FunctionDefinition", + "src": "2465:140:84", + "nodes": [], + "body": { + "id": 58756, + "nodeType": "Block", + "src": "2557:48:84", + "nodes": [], + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 58750, + "name": "_publicKeys", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58519, + "src": "2574:11:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_struct$_PublicKey_$58512_storage_$_$", + "typeString": "mapping(address => mapping(bytes32 => struct PasskeyModule.PublicKey storage ref))" + } + }, + "id": 58752, + "indexExpression": { + "id": 58751, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58742, + "src": "2586:4:84", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2574:17:84", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_PublicKey_$58512_storage_$", + "typeString": "mapping(bytes32 => struct PasskeyModule.PublicKey storage ref)" + } + }, + "id": 58754, + "indexExpression": { + "id": 58753, + "name": "keyId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58744, + "src": "2592:5:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2574:24:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PublicKey_$58512_storage", + "typeString": "struct PasskeyModule.PublicKey storage ref" + } + }, + "functionReturnParameters": 58749, + "id": 58755, + "nodeType": "Return", + "src": "2567:31:84" + } + ] + }, + "functionSelector": "7cefdd5d", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPublicKey", + "nameLocation": "2474:12:84", + "parameters": { + "id": 58745, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58742, + "mutability": "mutable", + "name": "user", + "nameLocation": "2495:4:84", + "nodeType": "VariableDeclaration", + "scope": 58757, + "src": "2487:12:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 58741, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2487:7:84", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58744, + "mutability": "mutable", + "name": "keyId", + "nameLocation": "2509:5:84", + "nodeType": "VariableDeclaration", + "scope": 58757, + "src": "2501:13:84", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58743, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2501:7:84", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2486:29:84" + }, + "returnParameters": { + "id": 58749, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58748, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 58757, + "src": "2539:16:84", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PublicKey_$58512_memory_ptr", + "typeString": "struct PasskeyModule.PublicKey" + }, + "typeName": { + "id": 58747, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58746, + "name": "PublicKey", + "nameLocations": [ + "2539:9:84" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 58512, + "src": "2539:9:84" + }, + "referencedDeclaration": 58512, + "src": "2539:9:84", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PublicKey_$58512_storage_ptr", + "typeString": "struct PasskeyModule.PublicKey" + } + }, + "visibility": "internal" + } + ], + "src": "2538:18:84" + }, + "scope": 58758, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 58506, + "name": "IModule", + "nameLocations": [ + "291:7:84" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 55004, + "src": "291:7:84" + }, + "id": 58507, + "nodeType": "InheritanceSpecifier", + "src": "291:7:84" + } + ], + "canonicalName": "PasskeyModule", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "linearizedBaseContracts": [ + 58758, + 55004, + 50642 + ], + "name": "PasskeyModule", + "nameLocation": "274:13:84", + "scope": 58759, + "usedErrors": [] + } + ], + "license": "Apache" + }, + "id": 84 +} \ No newline at end of file diff --git a/app/add-key/page.tsx b/app/add-key/page.tsx new file mode 100644 index 0000000..7c2c794 --- /dev/null +++ b/app/add-key/page.tsx @@ -0,0 +1,8 @@ +import type { NextPage } from "next"; +import AddKeyPage from "@/templates/AddKeyPage"; + +const AddKey: NextPage = () => { + return ; +}; + +export default AddKey; diff --git a/app/page.tsx b/app/page.tsx index 9dadda9..7b168f2 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -15,7 +15,7 @@ export default function Home() { return; } if (!wallet) { - route.push("/create"); + route.push("/welcome"); return; } }, [wallet, loading, route]); diff --git a/templates/AddKeyPage/index.tsx b/templates/AddKeyPage/index.tsx new file mode 100644 index 0000000..91f5aca --- /dev/null +++ b/templates/AddKeyPage/index.tsx @@ -0,0 +1,168 @@ +"use client"; +import { Communicator } from "@abstraction-hq/wallet-sdk"; +import { useWalletStore } from "@/stores/walletStore"; +import type { NextPage } from "next"; +import React, { useEffect, useState } from "react"; +import { useSearchParams } from "next/navigation"; +import SignUpHandle from "../CreatePage/SignUpHandle"; +import Image from "@/components/Image"; +import Icon from "@/components/Icon"; +import Tooltip from "@/components/Tooltip"; +import Loading from "@/components/Loading"; +import PasskeyAccount from "@/account/passkeyAccount"; +import { ethClient } from "@/config"; +import { PASSKEY } from "@/constants"; +import { encodeFunctionData } from "viem"; +import Passkey from "@/abis/Passkey.json" +import toast from "react-hot-toast"; +import { submitUserOp } from "@/utils/bundler"; + +const AddKeyPage: NextPage = () => { + const loading = useWalletStore((state) => state.loading); + const wallet = useWalletStore((state) => state.wallets[state.activeWallet]); + const searchParams = useSearchParams(); + + const passkeyId = searchParams.get("passkeyId"); + const x = searchParams.get("x"); + const y = searchParams.get("y"); + const device = searchParams.get("device"); + + const onConnect = async () => { + const account = new PasskeyAccount( + wallet.passkeyCredentialId || "", + 0n, + 0n + ); + + const [userOp, userOpHash] = await account.sendTransactionOperation( + ethClient, + [ + { + target: PASSKEY, + value: 0, + data: encodeFunctionData({ + abi: Passkey.abi, + functionName: "registerPublicKey", + args: [passkeyId, x, y], + }), + }, + ] + ); + + toast.promise(submitUserOp(userOp), { + loading: "Sending...", + success: (data) =>
Transaction Success - Click to view on scan
, + error: (err) =>
Transaction Fail - Click to view on scan
, + }) + + window.close(); + }; + + if (loading) { + return ( +
+ +
+ ); + } + + if (!wallet) { + return
Wallet not found
; + } + + return ( +
+
+
+ Login Request +
+
+
+
+
+
+ Accounts connect +
+
+
+ {wallet?.senderAddress} +
+
+
+ +
+
+
+
+
+
+
+
+ Passkey Id +
+
+
+ {passkeyId} +
+
+
+
+
+
+
+
+
+ Passkey X +
+
+
+ {x} +
+
+
+
+
+
+
+
+
+ Passkey Y +
+
+
+ {y} +
+
+
+
+
+
+
+ +
+
+
+ PLEASE READ CAREFULLY BEFORE ACCEPT: This action Allow the key + access to your account, the key can be used to send any + transaction on your behalf. +
+
+
+
+ +
+
+
+
+ ); +}; + +export default AddKeyPage; diff --git a/templates/CreatePage/index.tsx b/templates/CreatePage/index.tsx index 276426d..ccd7e0e 100644 --- a/templates/CreatePage/index.tsx +++ b/templates/CreatePage/index.tsx @@ -7,7 +7,7 @@ import { getXYCoordinates, WebAuthnUtils } from "@/utils/webauthn"; import Field from "@/components/Field"; import { client, parsers } from "@passwordless-id/webauthn"; import { RegistrationEncoded } from "@passwordless-id/webauthn/dist/esm/types"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import toast from "react-hot-toast"; import { submitUserOp } from "@/utils/bundler"; import { useRouter } from "next/navigation"; @@ -18,6 +18,7 @@ const CreatePage = () => { const wallets = useWalletStore((state) => state.wallets); const route = useRouter(); + const onCreateWallet = async () => { const randomString = Math.random().toString(36).substring(2, 15); diff --git a/templates/LoginPage/index.tsx b/templates/LoginPage/index.tsx index 8653548..b27348c 100644 --- a/templates/LoginPage/index.tsx +++ b/templates/LoginPage/index.tsx @@ -1,4 +1,5 @@ "use client"; + import PasskeyAccount from "@/account/passkeyAccount"; import Login from "@/components/Login"; import { ethClient } from "@/config"; @@ -19,8 +20,15 @@ const LoginPage = () => { const createWallet = useWalletStore((state) => state.onCreateWallet); const [passkeyName, setPasskeyName] = useState(""); const wallets = useWalletStore((state) => state.wallets); + + const [loginLink, setLoginLink] = useState(""); const route = useRouter(); + const onLogin = async () => { + + } + + const restoreWithPasskey = async () => { const randomString = Math.random().toString(36).substring(2, 15); @@ -35,7 +43,9 @@ const LoginPage = () => { const parsedData = parsers.parseRegistration(regData); let passkey = getXYCoordinates(parsedData.credential.publicKey); - + const loginLink = `${window.origin}/add-key?passkeyId=${parsedData.credential.id}&x=${passkey[0]}&y=${passkey[1]}&device=browser`; + + console.log(loginLink); // TODO: show passkey qr code and wait for pass key is add to wallet @@ -61,10 +71,14 @@ const LoginPage = () => { onChange={(e) => setPasskeyName(e.target.value)} required /> - - +
+ + +
); };