UNPKG

@openzeppelin/contracts-upgradeable

Version:
398 lines (397 loc) 27.6 kB
{ "_format": "hh-sol-artifact-1", "contractName": "ERC2771ForwarderUpgradeable", "sourceName": "contracts/metatx/ERC2771ForwarderUpgradeable.sol", "abi": [ { "inputs": [ { "internalType": "uint48", "name": "deadline", "type": "uint48" } ], "name": "ERC2771ForwarderExpiredRequest", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "from", "type": "address" } ], "name": "ERC2771ForwarderInvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "requestedValue", "type": "uint256" }, { "internalType": "uint256", "name": "msgValue", "type": "uint256" } ], "name": "ERC2771ForwarderMismatchedValue", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "address", "name": "forwarder", "type": "address" } ], "name": "ERC2771UntrustfulTarget", "type": "error" }, { "inputs": [], "name": "FailedCall", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "signer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "success", "type": "bool" } ], "name": "ExecutedForwardRequest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "gas", "type": "uint256" }, { "internalType": "uint48", "name": "deadline", "type": "uint48" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "internalType": "struct ERC2771ForwarderUpgradeable.ForwardRequestData", "name": "request", "type": "tuple" } ], "name": "execute", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "gas", "type": "uint256" }, { "internalType": "uint48", "name": "deadline", "type": "uint48" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "internalType": "struct ERC2771ForwarderUpgradeable.ForwardRequestData[]", "name": "requests", "type": "tuple[]" }, { "internalType": "address payable", "name": "refundReceiver", "type": "address" } ], "name": "executeBatch", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "gas", "type": "uint256" }, { "internalType": "uint48", "name": "deadline", "type": "uint48" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "internalType": "struct ERC2771ForwarderUpgradeable.ForwardRequestData", "name": "request", "type": "tuple" } ], "name": "verify", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x6080604052348015600e575f5ffd5b5061121e8061001c5f395ff3fe608060405260043610610054575f3560e01c806319d8d38c146100585780637ecebe001461008c57806384b0196e146100ed578063ccf96b4a14610114578063df905caf14610129578063f62d18881461013c575b5f5ffd5b348015610063575f5ffd5b50610077610072366004610d07565b61015b565b60405190151581526020015b60405180910390f35b348015610097575f5ffd5b506100df6100a6366004610d59565b6001600160a01b03165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052604090205490565b604051908152602001610083565b3480156100f8575f5ffd5b5061010161018b565b6040516100839796959493929190610da2565b610127610122366004610e38565b6101cd565b005b610127610137366004610d07565b6102d2565b348015610147575f5ffd5b50610127610156366004610ece565b61032d565b5f5f5f5f61016885610425565b509250925092508280156101795750815b80156101825750805b95945050505050565b5f6060805f5f5f606061019c6104a7565b6101a461057a565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6001600160a01b038116155f80805b8581101561028b578686828181106101f6576101f6610f81565b90506020028101906102089190610f95565b610216906040013584610fb3565b92505f61024688888481811061022e5761022e610f81565b90506020028101906102409190610f95565b866105cb565b9050806102825787878381811061025f5761025f610f81565b90506020028101906102719190610f95565b61027f906040013584610fb3565b92505b506001016101dc565b503482146102ba576040516370647f7960e01b8152600481018390523460248201526044015b60405180910390fd5b80156102ca576102ca84826107c5565b505050505050565b8060400135341461030257604080516370647f7960e01b81529082013560048201523460248201526044016102b1565b61030d8160016105cb565b61032a5760405163d6bda27560e01b815260040160405180910390fd5b50565b5f61033661083c565b805490915060ff600160401b820416159067ffffffffffffffff165f8115801561035d5750825b90505f8267ffffffffffffffff1660011480156103795750303b155b905081158015610387575080155b156103a55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156103cf57845460ff60401b1916600160401b1785555b6103d886610866565b83156102ca57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b5f5f5f5f5f5f61043487610891565b909250905061045161044c6040890160208a01610d59565b6109d3565b4261046260a08a0160808b01610fd2565b65ffffffffffff161015838015610496575061048160208a018a610d59565b6001600160a01b0316836001600160a01b0316145b919750955093509150509193509193565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100916104f890610ff7565b80601f016020809104026020016040519081016040528092919081815260200182805461052490610ff7565b801561056f5780601f106105465761010080835404028352916020019161056f565b820191905f5260205f20905b81548152906001019060200180831161055257829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100916104f890610ff7565b5f5f5f5f5f6105d987610425565b9350935093509350851561069f5783610627576105fc6040880160208901610d59565b60405163d2650cd160e01b81526001600160a01b0390911660048201523060248201526044016102b1565b826106605761063c60a0880160808901610fd2565b604051634a777ac560e11b815265ffffffffffff90911660048201526024016102b1565b8161069f57806106736020890189610d59565b604051636422d02b60e11b81526001600160a01b039283166004820152911660248201526044016102b1565b8380156106a95750815b80156106b25750825b156107bb576001600160a01b0381165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260408120805460018101909155905060608801355f61070e60408b0160208c01610d59565b905060408a01355f61072360a08d018d61102f565b61073060208f018f610d59565b60405160200161074293929190611079565b60405160208183030381529060405290505f5f5f83516020850186888af19a505a905061076f818e610a4c565b604080518781528c151560208201526001600160a01b038916917f842fb24a83793558587a3dab2be7674da4a51d09c5542d6dd354e5d0ea70813c910160405180910390a25050505050505b5050505092915050565b804710156107ef5760405163cf47918160e01b8152476004820152602481018290526044016102b1565b610808828260405180602001604052805f815250610a64565b15610811575050565b3d156108235761081f610a79565b5050565b60405163d6bda27560e01b815260040160405180910390fd5b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b61086e610a84565b61032a81604051806040016040528060018152602001603160f81b815250610aab565b5f8080806109ae6108a560c087018761102f565b6109a77f7f96328b83274ebc7c1cf4f7a3abda602b51a78b7fa1d86a2ce353d75e587cac6108d660208b018b610d59565b6108e660408c0160208d01610d59565b8b604001358c606001356109058e5f0160208101906100a69190610d59565b8e60800160208101906109189190610fd2565b8f8060a00190610928919061102f565b60405161093692919061109f565b6040805191829003822060208301999099526001600160a01b0397881690820152959094166060860152608085019290925260a084015260c083015265ffffffffffff1660e08201526101008101919091526101200160405160208183030381529060405280519060200120610b14565b9190610b40565b5090925090505f8160038111156109c7576109c76110ae565b14959194509092505050565b6040513060248201525f90819060440160408051601f19818403018152919052602080820180516001600160e01b031663572b6c0560e01b17815282519293505f928392839290918391895afa92503d91505f519050828015610a37575060208210155b8015610a4257505f81115b9695505050505050565b610a5b603f60608301356110c2565b82101561081f57fe5b5f5f5f83516020850186885af1949350505050565b6040513d5f823e3d81fd5b610a8c610b87565b610aa957604051631afcd79f60e31b815260040160405180910390fd5b565b610ab3610a84565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610aff848261112d565b5060038101610b0e838261112d565b50505050565b5f610860610b20610ba0565b8360405161190160f01b8152600281019290925260228201526042902090565b5f80806041849003610b74578435602086013560408701355f1a610b6689828585610bae565b955095509550505050610b7e565b505f915060029050825b93509350939050565b5f610b9061083c565b54600160401b900460ff16919050565b5f610ba9610c76565b905090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610be757505f91506003905082610c6c565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c38573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c6357505f925060019150829050610c6c565b92505f91508190505b9450945094915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610ca0610ce9565b610ca8610cfe565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f610cf26104a7565b80519060200120905090565b5f610cf261057a565b5f60208284031215610d17575f5ffd5b813567ffffffffffffffff811115610d2d575f5ffd5b820160e08185031215610d3e575f5ffd5b9392505050565b6001600160a01b038116811461032a575f5ffd5b5f60208284031215610d69575f5ffd5b8135610d3e81610d45565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60ff60f81b8816815260e060208201525f610dc060e0830189610d74565b8281036040840152610dd28189610d74565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015610e27578351835260209384019390920191600101610e09565b50909b9a5050505050505050505050565b5f5f5f60408486031215610e4a575f5ffd5b833567ffffffffffffffff811115610e60575f5ffd5b8401601f81018613610e70575f5ffd5b803567ffffffffffffffff811115610e86575f5ffd5b8660208260051b8401011115610e9a575f5ffd5b602091820194509250840135610eaf81610d45565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610ede575f5ffd5b813567ffffffffffffffff811115610ef4575f5ffd5b8201601f81018413610f04575f5ffd5b803567ffffffffffffffff811115610f1e57610f1e610eba565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610f4d57610f4d610eba565b604052818152828201602001861015610f64575f5ffd5b816020840160208301375f91810160200191909152949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f823560de19833603018112610fa9575f5ffd5b9190910192915050565b8082018082111561086057634e487b7160e01b5f52601160045260245ffd5b5f60208284031215610fe2575f5ffd5b813565ffffffffffff81168114610d3e575f5ffd5b600181811c9082168061100b57607f821691505b60208210810361102957634e487b7160e01b5f52602260045260245ffd5b50919050565b5f5f8335601e19843603018112611044575f5ffd5b83018035915067ffffffffffffffff82111561105e575f5ffd5b602001915036819003821315611072575f5ffd5b9250929050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b818382375f9101908152919050565b634e487b7160e01b5f52602160045260245ffd5b5f826110dc57634e487b7160e01b5f52601260045260245ffd5b500490565b601f82111561112857805f5260205f20601f840160051c810160208510156111065750805b601f840160051c820191505b81811015611125575f8155600101611112565b50505b505050565b815167ffffffffffffffff81111561114757611147610eba565b61115b816111558454610ff7565b846110e1565b6020601f82116001811461118d575f83156111765750848201515b5f19600385901b1c1916600184901b178455611125565b5f84815260208120601f198516915b828110156111bc578785015182556020948501946001909201910161119c565b50848210156111d957868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220e1b2c7ce0a9d7e438b68454649bf002accd6e259585218dc9edfa5341f78042664736f6c634300081f0033", "deployedBytecode": "0x608060405260043610610054575f3560e01c806319d8d38c146100585780637ecebe001461008c57806384b0196e146100ed578063ccf96b4a14610114578063df905caf14610129578063f62d18881461013c575b5f5ffd5b348015610063575f5ffd5b50610077610072366004610d07565b61015b565b60405190151581526020015b60405180910390f35b348015610097575f5ffd5b506100df6100a6366004610d59565b6001600160a01b03165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052604090205490565b604051908152602001610083565b3480156100f8575f5ffd5b5061010161018b565b6040516100839796959493929190610da2565b610127610122366004610e38565b6101cd565b005b610127610137366004610d07565b6102d2565b348015610147575f5ffd5b50610127610156366004610ece565b61032d565b5f5f5f5f61016885610425565b509250925092508280156101795750815b80156101825750805b95945050505050565b5f6060805f5f5f606061019c6104a7565b6101a461057a565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6001600160a01b038116155f80805b8581101561028b578686828181106101f6576101f6610f81565b90506020028101906102089190610f95565b610216906040013584610fb3565b92505f61024688888481811061022e5761022e610f81565b90506020028101906102409190610f95565b866105cb565b9050806102825787878381811061025f5761025f610f81565b90506020028101906102719190610f95565b61027f906040013584610fb3565b92505b506001016101dc565b503482146102ba576040516370647f7960e01b8152600481018390523460248201526044015b60405180910390fd5b80156102ca576102ca84826107c5565b505050505050565b8060400135341461030257604080516370647f7960e01b81529082013560048201523460248201526044016102b1565b61030d8160016105cb565b61032a5760405163d6bda27560e01b815260040160405180910390fd5b50565b5f61033661083c565b805490915060ff600160401b820416159067ffffffffffffffff165f8115801561035d5750825b90505f8267ffffffffffffffff1660011480156103795750303b155b905081158015610387575080155b156103a55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156103cf57845460ff60401b1916600160401b1785555b6103d886610866565b83156102ca57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b5f5f5f5f5f5f61043487610891565b909250905061045161044c6040890160208a01610d59565b6109d3565b4261046260a08a0160808b01610fd2565b65ffffffffffff161015838015610496575061048160208a018a610d59565b6001600160a01b0316836001600160a01b0316145b919750955093509150509193509193565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100916104f890610ff7565b80601f016020809104026020016040519081016040528092919081815260200182805461052490610ff7565b801561056f5780601f106105465761010080835404028352916020019161056f565b820191905f5260205f20905b81548152906001019060200180831161055257829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100916104f890610ff7565b5f5f5f5f5f6105d987610425565b9350935093509350851561069f5783610627576105fc6040880160208901610d59565b60405163d2650cd160e01b81526001600160a01b0390911660048201523060248201526044016102b1565b826106605761063c60a0880160808901610fd2565b604051634a777ac560e11b815265ffffffffffff90911660048201526024016102b1565b8161069f57806106736020890189610d59565b604051636422d02b60e11b81526001600160a01b039283166004820152911660248201526044016102b1565b8380156106a95750815b80156106b25750825b156107bb576001600160a01b0381165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260408120805460018101909155905060608801355f61070e60408b0160208c01610d59565b905060408a01355f61072360a08d018d61102f565b61073060208f018f610d59565b60405160200161074293929190611079565b60405160208183030381529060405290505f5f5f83516020850186888af19a505a905061076f818e610a4c565b604080518781528c151560208201526001600160a01b038916917f842fb24a83793558587a3dab2be7674da4a51d09c5542d6dd354e5d0ea70813c910160405180910390a25050505050505b5050505092915050565b804710156107ef5760405163cf47918160e01b8152476004820152602481018290526044016102b1565b610808828260405180602001604052805f815250610a64565b15610811575050565b3d156108235761081f610a79565b5050565b60405163d6bda27560e01b815260040160405180910390fd5b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b61086e610a84565b61032a81604051806040016040528060018152602001603160f81b815250610aab565b5f8080806109ae6108a560c087018761102f565b6109a77f7f96328b83274ebc7c1cf4f7a3abda602b51a78b7fa1d86a2ce353d75e587cac6108d660208b018b610d59565b6108e660408c0160208d01610d59565b8b604001358c606001356109058e5f0160208101906100a69190610d59565b8e60800160208101906109189190610fd2565b8f8060a00190610928919061102f565b60405161093692919061109f565b6040805191829003822060208301999099526001600160a01b0397881690820152959094166060860152608085019290925260a084015260c083015265ffffffffffff1660e08201526101008101919091526101200160405160208183030381529060405280519060200120610b14565b9190610b40565b5090925090505f8160038111156109c7576109c76110ae565b14959194509092505050565b6040513060248201525f90819060440160408051601f19818403018152919052602080820180516001600160e01b031663572b6c0560e01b17815282519293505f928392839290918391895afa92503d91505f519050828015610a37575060208210155b8015610a4257505f81115b9695505050505050565b610a5b603f60608301356110c2565b82101561081f57fe5b5f5f5f83516020850186885af1949350505050565b6040513d5f823e3d81fd5b610a8c610b87565b610aa957604051631afcd79f60e31b815260040160405180910390fd5b565b610ab3610a84565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610aff848261112d565b5060038101610b0e838261112d565b50505050565b5f610860610b20610ba0565b8360405161190160f01b8152600281019290925260228201526042902090565b5f80806041849003610b74578435602086013560408701355f1a610b6689828585610bae565b955095509550505050610b7e565b505f915060029050825b93509350939050565b5f610b9061083c565b54600160401b900460ff16919050565b5f610ba9610c76565b905090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610be757505f91506003905082610c6c565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c38573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c6357505f925060019150829050610c6c565b92505f91508190505b9450945094915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610ca0610ce9565b610ca8610cfe565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f610cf26104a7565b80519060200120905090565b5f610cf261057a565b5f60208284031215610d17575f5ffd5b813567ffffffffffffffff811115610d2d575f5ffd5b820160e08185031215610d3e575f5ffd5b9392505050565b6001600160a01b038116811461032a575f5ffd5b5f60208284031215610d69575f5ffd5b8135610d3e81610d45565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60ff60f81b8816815260e060208201525f610dc060e0830189610d74565b8281036040840152610dd28189610d74565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015610e27578351835260209384019390920191600101610e09565b50909b9a5050505050505050505050565b5f5f5f60408486031215610e4a575f5ffd5b833567ffffffffffffffff811115610e60575f5ffd5b8401601f81018613610e70575f5ffd5b803567ffffffffffffffff811115610e86575f5ffd5b8660208260051b8401011115610e9a575f5ffd5b602091820194509250840135610eaf81610d45565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610ede575f5ffd5b813567ffffffffffffffff811115610ef4575f5ffd5b8201601f81018413610f04575f5ffd5b803567ffffffffffffffff811115610f1e57610f1e610eba565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610f4d57610f4d610eba565b604052818152828201602001861015610f64575f5ffd5b816020840160208301375f91810160200191909152949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f823560de19833603018112610fa9575f5ffd5b9190910192915050565b8082018082111561086057634e487b7160e01b5f52601160045260245ffd5b5f60208284031215610fe2575f5ffd5b813565ffffffffffff81168114610d3e575f5ffd5b600181811c9082168061100b57607f821691505b60208210810361102957634e487b7160e01b5f52602260045260245ffd5b50919050565b5f5f8335601e19843603018112611044575f5ffd5b83018035915067ffffffffffffffff82111561105e575f5ffd5b602001915036819003821315611072575f5ffd5b9250929050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b818382375f9101908152919050565b634e487b7160e01b5f52602160045260245ffd5b5f826110dc57634e487b7160e01b5f52601260045260245ffd5b500490565b601f82111561112857805f5260205f20601f840160051c810160208510156111065750805b601f840160051c820191505b81811015611125575f8155600101611112565b50505b505050565b815167ffffffffffffffff81111561114757611147610eba565b61115b816111558454610ff7565b846110e1565b6020601f82116001811461118d575f83156111765750848201515b5f19600385901b1c1916600184901b178455611125565b5f84815260208120601f198516915b828110156111bc578785015182556020948501946001909201910161119c565b50848210156111d957868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220e1b2c7ce0a9d7e438b68454649bf002accd6e259585218dc9edfa5341f78042664736f6c634300081f0033", "linkReferences": {}, "deployedLinkReferences": {} }