diff --git a/.changeset/polite-chairs-fry.md b/.changeset/polite-chairs-fry.md new file mode 100644 index 000000000..8b3c2c977 --- /dev/null +++ b/.changeset/polite-chairs-fry.md @@ -0,0 +1,5 @@ +--- +"@layerzerolabs/ovault-evm": patch +--- + +Adding VaultComposerSyncDepositOnly contract diff --git a/packages/ovault-evm/.gitignore b/packages/ovault-evm/.gitignore index 013981fcd..6d647e791 100644 --- a/packages/ovault-evm/.gitignore +++ b/packages/ovault-evm/.gitignore @@ -9,7 +9,7 @@ artifacts/* !artifacts/VaultComposerSync_E2E.t.sol !artifacts/VaultComposerSync_ProxySend.t.sol !artifacts/VaultComposerSync_Unit.t.sol - +!artifacts/VaultComposerSyncDepositOnly.sol/ # sdk .env diff --git a/packages/ovault-evm/artifacts/VaultComposerSyncDepositOnly.sol/VaultComposerSyncDepositOnly.json b/packages/ovault-evm/artifacts/VaultComposerSyncDepositOnly.sol/VaultComposerSyncDepositOnly.json new file mode 100644 index 000000000..7b31abb9d --- /dev/null +++ b/packages/ovault-evm/artifacts/VaultComposerSyncDepositOnly.sol/VaultComposerSyncDepositOnly.json @@ -0,0 +1,1400 @@ +{ + "abi": [ + { + "type": "constructor", + "inputs": [ + { "name": "_vault", "type": "address", "internalType": "address" }, + { "name": "_assetOFT", "type": "address", "internalType": "address" }, + { "name": "_shareOFT", "type": "address", "internalType": "address" } + ], + "stateMutability": "nonpayable" + }, + { "type": "receive", "stateMutability": "payable" }, + { + "type": "function", + "name": "ASSET_ERC20", + "inputs": [], + "outputs": [{ "name": "", "type": "address", "internalType": "address" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ASSET_OFT", + "inputs": [], + "outputs": [{ "name": "", "type": "address", "internalType": "address" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ENDPOINT", + "inputs": [], + "outputs": [{ "name": "", "type": "address", "internalType": "address" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "SHARE_ERC20", + "inputs": [], + "outputs": [{ "name": "", "type": "address", "internalType": "address" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "SHARE_OFT", + "inputs": [], + "outputs": [{ "name": "", "type": "address", "internalType": "address" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "VAULT", + "inputs": [], + "outputs": [ + { "name": "", "type": "address", "internalType": "contract IERC4626" } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "VAULT_EID", + "inputs": [], + "outputs": [{ "name": "", "type": "uint32", "internalType": "uint32" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "depositAndSend", + "inputs": [ + { + "name": "_assetAmount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_sendParam", + "type": "tuple", + "internalType": "struct SendParam", + "components": [ + { "name": "dstEid", "type": "uint32", "internalType": "uint32" }, + { "name": "to", "type": "bytes32", "internalType": "bytes32" }, + { + "name": "amountLD", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "minAmountLD", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "extraOptions", + "type": "bytes", + "internalType": "bytes" + }, + { "name": "composeMsg", "type": "bytes", "internalType": "bytes" }, + { "name": "oftCmd", "type": "bytes", "internalType": "bytes" } + ] + }, + { + "name": "_refundAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "handleCompose", + "inputs": [ + { "name": "_oftIn", "type": "address", "internalType": "address" }, + { + "name": "_composeFrom", + "type": "bytes32", + "internalType": "bytes32" + }, + { "name": "_composeMsg", "type": "bytes", "internalType": "bytes" }, + { "name": "_amount", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "lzCompose", + "inputs": [ + { + "name": "_composeSender", + "type": "address", + "internalType": "address" + }, + { "name": "_guid", "type": "bytes32", "internalType": "bytes32" }, + { "name": "_message", "type": "bytes", "internalType": "bytes" }, + { "name": "", "type": "address", "internalType": "address" }, + { "name": "", "type": "bytes", "internalType": "bytes" } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "quoteSend", + "inputs": [ + { "name": "_from", "type": "address", "internalType": "address" }, + { "name": "_targetOFT", "type": "address", "internalType": "address" }, + { + "name": "_vaultInAmount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_sendParam", + "type": "tuple", + "internalType": "struct SendParam", + "components": [ + { "name": "dstEid", "type": "uint32", "internalType": "uint32" }, + { "name": "to", "type": "bytes32", "internalType": "bytes32" }, + { + "name": "amountLD", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "minAmountLD", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "extraOptions", + "type": "bytes", + "internalType": "bytes" + }, + { "name": "composeMsg", "type": "bytes", "internalType": "bytes" }, + { "name": "oftCmd", "type": "bytes", "internalType": "bytes" } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct MessagingFee", + "components": [ + { + "name": "nativeFee", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "lzTokenFee", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "redeemAndSend", + "inputs": [ + { + "name": "_shareAmount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_sendParam", + "type": "tuple", + "internalType": "struct SendParam", + "components": [ + { "name": "dstEid", "type": "uint32", "internalType": "uint32" }, + { "name": "to", "type": "bytes32", "internalType": "bytes32" }, + { + "name": "amountLD", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "minAmountLD", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "extraOptions", + "type": "bytes", + "internalType": "bytes" + }, + { "name": "composeMsg", "type": "bytes", "internalType": "bytes" }, + { "name": "oftCmd", "type": "bytes", "internalType": "bytes" } + ] + }, + { + "name": "_refundAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "event", + "name": "Deposited", + "inputs": [ + { + "name": "sender", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "recipient", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "dstEid", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + }, + { + "name": "assetAmt", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "shareAmt", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Redeemed", + "inputs": [ + { + "name": "sender", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "recipient", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + }, + { + "name": "dstEid", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + }, + { + "name": "shareAmt", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "assetAmt", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Refunded", + "inputs": [ + { + "name": "guid", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Sent", + "inputs": [ + { + "name": "guid", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "AssetTokenNotVaultAsset", + "inputs": [ + { "name": "assetERC20", "type": "address", "internalType": "address" }, + { "name": "vaultAsset", "type": "address", "internalType": "address" } + ] + }, + { + "type": "error", + "name": "ERC4626ExceededMaxDeposit", + "inputs": [ + { "name": "receiver", "type": "address", "internalType": "address" }, + { "name": "assets", "type": "uint256", "internalType": "uint256" }, + { "name": "max", "type": "uint256", "internalType": "uint256" } + ] + }, + { + "type": "error", + "name": "ERC4626ExceededMaxRedeem", + "inputs": [ + { "name": "owner", "type": "address", "internalType": "address" }, + { "name": "shares", "type": "uint256", "internalType": "uint256" }, + { "name": "max", "type": "uint256", "internalType": "uint256" } + ] + }, + { + "type": "error", + "name": "InsufficientMsgValue", + "inputs": [ + { + "name": "expectedMsgValue", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "actualMsgValue", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { "type": "error", "name": "NoMsgValueExpected", "inputs": [] }, + { + "type": "error", + "name": "OnlyEndpoint", + "inputs": [ + { "name": "caller", "type": "address", "internalType": "address" } + ] + }, + { + "type": "error", + "name": "OnlySelf", + "inputs": [ + { "name": "caller", "type": "address", "internalType": "address" } + ] + }, + { + "type": "error", + "name": "OnlyValidComposeCaller", + "inputs": [ + { "name": "caller", "type": "address", "internalType": "address" } + ] + }, + { "type": "error", "name": "RedemptionDisabled", "inputs": [] }, + { "type": "error", "name": "ReentrancyGuardReentrantCall", "inputs": [] }, + { + "type": "error", + "name": "SafeERC20FailedOperation", + "inputs": [ + { "name": "token", "type": "address", "internalType": "address" } + ] + }, + { + "type": "error", + "name": "ShareOFTNotAdapter", + "inputs": [ + { "name": "shareOFT", "type": "address", "internalType": "address" } + ] + }, + { + "type": "error", + "name": "ShareTokenNotVault", + "inputs": [ + { "name": "shareERC20", "type": "address", "internalType": "address" }, + { "name": "vault", "type": "address", "internalType": "address" } + ] + }, + { + "type": "error", + "name": "SlippageExceeded", + "inputs": [ + { "name": "amountLD", "type": "uint256", "internalType": "uint256" }, + { "name": "minAmountLD", "type": "uint256", "internalType": "uint256" } + ] + } + ], + "bytecode": { + "object": "0x61016060405234801562000011575f80fd5b506040516200252b3803806200252b833981016040819052620000349162000611565b60015f556001600160a01b03808416608052821660a081905260408051637e062a3560e11b8152905185928592859263fc0c546a916004808201926020929091908290030181865afa1580156200008d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000b3919062000662565b6001600160a01b0390811660c052811660e081905260408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa15801562000102573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000128919062000662565b6001600160a01b0316610100816001600160a01b03168152505060a0516001600160a01b0316635e280f116040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000181573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a7919062000662565b6001600160a01b03166101208190526040805163416ecebf60e01b8152905163416ecebf916004808201926020929091908290030181865afa158015620001f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000216919062000687565b63ffffffff1661014052608051610100516001600160a01b0390811691161462000272576101005160805160405163070bc55b60e11b81526001600160a01b039283166004820152911660248201526044015b60405180910390fd5b6080516001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d7919062000662565b6001600160a01b031660c0516001600160a01b031614620003875760c0516080516001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000334573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200035a919062000662565b60405163ba9d665f60e01b81526001600160a01b0392831660048201529116602482015260440162000269565b60e0516001600160a01b0316639f68b9646040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ec9190620006ac565b6200041a5760e051604051637e0a8a5760e11b81526001600160a01b03909116600482015260240162000269565b60c05160405163095ea7b360e01b81526001600160a01b0385811660048301525f1960248301529091169063095ea7b3906044016020604051808303815f875af11580156200046b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004919190620006ac565b506101005160405163095ea7b360e01b81526001600160a01b0383811660048301525f1960248301529091169063095ea7b3906044016020604051808303815f875af1158015620004e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200050a9190620006ac565b50816001600160a01b0316639f68b9646040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000548573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200056e9190620006ac565b15620005ed5760c05160405163095ea7b360e01b81526001600160a01b0384811660048301525f1960248301529091169063095ea7b3906044016020604051808303815f875af1158015620005c5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005eb9190620006ac565b505b505050505050620006cd565b6001600160a01b03811681146200060e575f80fd5b50565b5f805f6060848603121562000624575f80fd5b83516200063181620005f9565b60208501519093506200064481620005f9565b60408501519092506200065781620005f9565b809150509250925092565b5f6020828403121562000673575f80fd5b81516200068081620005f9565b9392505050565b5f6020828403121562000698575f80fd5b815163ffffffff8116811462000680575f80fd5b5f60208284031215620006bd575f80fd5b8151801515811462000680575f80fd5b60805160a05160c05160e051610100516101205161014051611d8f6200079c5f395f81816102a501526111c601525f8181610200015261096b01525f818161027201528181610375015261124401525f818161018701528181610a1d0152610d4d01525f818161015401528181610311015261126a01525f818160e2015281816103be015281816108dd015281816109c601528181610e0301526111f101525f81816101ba0152818161045601528181610557015281816106270152818161072301526110f60152611d8f5ff3fe6080604052600436106100c6575f3560e01c80636fad06f511610071578063a99ecc541161004c578063a99ecc5414610261578063aa72fe3f14610294578063d0a10260146102dc575f80fd5b80636fad06f5146101ef5780637e6e1e10146102225780639a6b198c1461024e575f80fd5b8063369caf83116100a1578063369caf8314610176578063411557d1146101a957806353174fa4146101dc575f80fd5b80630bfec755146100d157806319197ec61461012e5780631df34fa314610143575f80fd5b366100cd57005b5f80fd5b3480156100dc575f80fd5b506101047f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004611679565b6102ef565b005b34801561014e575f80fd5b506101047f000000000000000000000000000000000000000000000000000000000000000081565b348015610181575f80fd5b506101047f000000000000000000000000000000000000000000000000000000000000000081565b3480156101b4575f80fd5b506101047f000000000000000000000000000000000000000000000000000000000000000081565b6101416101ea366004611679565b610353565b3480156101fa575f80fd5b506101047f000000000000000000000000000000000000000000000000000000000000000081565b34801561022d575f80fd5b5061024161023c3660046116cc565b6103a9565b6040516101259190611730565b61014161025c366004611747565b610843565b34801561026c575f80fd5b506101047f000000000000000000000000000000000000000000000000000000000000000081565b34801561029f575f80fd5b506102c77f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610125565b6101416102ea3660046117e7565b610953565b6102f7610c50565b61033973ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333086610c91565b61034533848484610d20565b61034e60015f55565b505050565b61035b610c50565b61039d73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333086610c91565b61034533848484610dd6565b604080518082019091525f80825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036105e0576040517fd905777e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063d905777e90602401602060405180830381865afa15801561049d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c1919061187e565b905080841115610528576040517fb94abeec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015260248101859052604481018290526064015b60405180910390fd5b6040517f4cdad506000000000000000000000000000000000000000000000000000000008152600481018590527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634cdad50690602401602060405180830381865afa1580156105b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d5919061187e565b6040840152506107a8565b6040517f402d267d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063402d267d90602401602060405180830381865afa15801561066e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610692919061187e565b9050808411156106f4576040517f79012fb200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152602481018590526044810182905260640161051f565b6040517fef8b30f7000000000000000000000000000000000000000000000000000000008152600481018590527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ef8b30f790602401602060405180830381865afa15801561077d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a1919061187e565b6040840152505b6040517f3b6f743b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690633b6f743b906107fc9085905f90600401611975565b6040805180830381865afa158015610816573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083a91906119e5565b95945050505050565b33301461087e576040517fa19dbf0000000000000000000000000000000000000000000000000000000000815233600482015260240161051f565b5f80838060200190518101906108949190611a54565b91509150803410156108db576040517f7cb769dc0000000000000000000000000000000000000000000000000000000081526004810182905234602482015260440161051f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361093f5761093a85848432610d20565b61094b565b61094b85848432610dd6565b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109c4576040517f91ac5e4f00000000000000000000000000000000000000000000000000000000815233600482015260240161051f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015610a6c57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15610abb576040517f84fb3f0d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8816600482015260240161051f565b5f610ac68686610e81565b90505f610ad38787610ea2565b90505f610ae08888610eb1565b6040517f9a6b198c0000000000000000000000000000000000000000000000000000000081529091503090639a6b198c903490610b27908e90889087908990600401611b3b565b5f604051808303818588803b158015610b3e575f80fd5b505af193505050508015610b50575060015b610c19573d808015610b7d576040519150601f19603f3d011682016040523d82523d5f602084013e610b82565b606091505b507f7cb769dc00000000000000000000000000000000000000000000000000000000610bad82611b80565b7fffffffff000000000000000000000000000000000000000000000000000000001603610bdc57805181602001fd5b610be98b8a8a8632610efb565b6040518a907ffe509803c09416b28ff3d8f690c8b0c61462a892c46d5430c8fb20abe472daf0905f90a250610c44565b60405189907f27b5aea9f5736c02241d8a0272e9ec988ea44cf85c4b4760329431aa19678394905f90a25b50505050505050505050565b60025f5403610c8b576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f55565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610d1a9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611020565b50505050565b5f610d2b85856110bf565b9050610d3b818460600151611175565b604083018190525f6060840152610d737f000000000000000000000000000000000000000000000000000000000000000084846111bd565b6020838101518451604080518981529384019290925263ffffffff169082015260608101859052608081018290527fa53b96f27930f89fac6e5802f6b77fcad303dde855a10e5ef076e730d1f43afa9060a0015b60405180910390a15050505050565b5f610de185856113a5565b9050610df1818460600151611175565b604083018190525f6060840152610e297f000000000000000000000000000000000000000000000000000000000000000084846111bd565b6020838101518451604080518981529384019290925263ffffffff169082015260608101859052608081018290527f57e232f18448926c8d7554dfd1851d4a4cd10d6b804aabcd714b1f1c067e50ee9060a001610dc7565b5f610e90604c602c8486611bcf565b610e9991611bf6565b90505b92915050565b5f610e90602c600c8486611bcf565b6060610ec082604c8186611bcf565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929695505050505050565b610f406040518060e001604052805f63ffffffff1681526020015f80191681526020015f81526020015f81526020016060815260200160608152602001606081525090565b610f4a85856113d8565b63ffffffff168152610f5c8585610e81565b602080830191909152604080830185905280518082018252348082525f9382019390935290517fc7c7f5b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89169263c7c7f5b3929091610fd59186918890600401611c32565b60c06040518083038185885af1158015610ff1573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110169190611c81565b5050505050505050565b5f8060205f8451602086015f885af18061103f576040513d5f823e3d81fd5b50505f513d91508115611056578060011415611070565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610d1a576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161051f565b6040517f6e553f65000000000000000000000000000000000000000000000000000000008152600481018290523060248201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636e553f65906044016020604051808303815f875af1158015611151573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e99919061187e565b808210156111b9576040517f71c4efed000000000000000000000000000000000000000000000000000000008152600481018390526024810182905260440161051f565b5050565b815163ffffffff7f000000000000000000000000000000000000000000000000000000000000000081169116036112f5575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611268577f000000000000000000000000000000000000000000000000000000000000000061128a565b7f00000000000000000000000000000000000000000000000000000000000000005b905034156112c4576040517f7578d2bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d1a6112d2846020015190565b604085015173ffffffffffffffffffffffffffffffffffffffff841691906113fa565b604080518082018252348082525f602083015291517fc7c7f5b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169263c7c7f5b392909161135d9187918790600401611c32565b60c06040518083038185885af1158015611379573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061139e9190611c81565b5050505050565b5f6040517fd896f90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6113e7600c60088486611bcf565b6113f091611d11565b60e01c9392505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261034e91859182169063a9059cbb90606401610cd3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160e0810167ffffffffffffffff8111828210171561148857611488611438565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156114d5576114d5611438565b604052919050565b63ffffffff811681146114ee575f80fd5b50565b80356114fc816114dd565b919050565b5f67ffffffffffffffff82111561151a5761151a611438565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611555575f80fd5b813561156861156382611501565b61148e565b81815284602083860101111561157c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60e082840312156115a8575f80fd5b6115b0611465565b90506115bb826114f1565b8152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff808211156115f5575f80fd5b61160185838601611546565b608084015260a0840135915080821115611619575f80fd5b61162585838601611546565b60a084015260c084013591508082111561163d575f80fd5b5061164a84828501611546565b60c08301525092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114fc575f80fd5b5f805f6060848603121561168b575f80fd5b83359250602084013567ffffffffffffffff8111156116a8575f80fd5b6116b486828701611598565b9250506116c360408501611656565b90509250925092565b5f805f80608085870312156116df575f80fd5b6116e885611656565b93506116f660208601611656565b925060408501359150606085013567ffffffffffffffff811115611718575f80fd5b61172487828801611598565b91505092959194509250565b815181526020808301519082015260408101610e9c565b5f805f806080858703121561175a575f80fd5b61176385611656565b935060208501359250604085013567ffffffffffffffff811115611785575f80fd5b61179187828801611546565b949793965093946060013593505050565b5f8083601f8401126117b2575f80fd5b50813567ffffffffffffffff8111156117c9575f80fd5b6020830191508360208285010111156117e0575f80fd5b9250929050565b5f805f805f805f60a0888a0312156117fd575f80fd5b61180688611656565b965060208801359550604088013567ffffffffffffffff80821115611829575f80fd5b6118358b838c016117a2565b909750955085915061184960608b01611656565b945060808a013591508082111561185e575f80fd5b5061186b8a828b016117a2565b989b979a50959850939692959293505050565b5f6020828403121561188e575f80fd5b5051919050565b5f5b838110156118af578181015183820152602001611897565b50505f910152565b5f81518084526118ce816020860160208601611895565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b63ffffffff81511682526020810151602083015260408101516040830152606081015160608301525f608082015160e0608085015261194260e08501826118b7565b905060a083015184820360a086015261195b82826118b7565b91505060c083015184820360c086015261083a82826118b7565b604081525f6119876040830185611900565b905082151560208301529392505050565b5f604082840312156119a8575f80fd5b6040516040810181811067ffffffffffffffff821117156119cb576119cb611438565b604052825181526020928301519281019290925250919050565b5f604082840312156119f5575f80fd5b610e998383611998565b80516114fc816114dd565b5f82601f830112611a19575f80fd5b8151611a2761156382611501565b818152846020838601011115611a3b575f80fd5b611a4c826020830160208701611895565b949350505050565b5f8060408385031215611a65575f80fd5b825167ffffffffffffffff80821115611a7c575f80fd5b9084019060e08287031215611a8f575f80fd5b611a97611465565b611aa0836119ff565b8152602083015160208201526040830151604082015260608301516060820152608083015182811115611ad1575f80fd5b611add88828601611a0a565b60808301525060a083015182811115611af4575f80fd5b611b0088828601611a0a565b60a08301525060c083015182811115611b17575f80fd5b611b2388828601611a0a565b60c08301525060209590950151949694955050505050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152608060408201525f611b6f60808301856118b7565b905082606083015295945050505050565b5f815160208301517fffffffff0000000000000000000000000000000000000000000000000000000080821693506004831015611bc75780818460040360031b1b83161693505b505050919050565b5f8085851115611bdd575f80fd5b83861115611be9575f80fd5b5050820193919092039150565b80356020831015610e9c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b608081525f611c446080830186611900565b9050611c5d602083018580518252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff83166060830152949350505050565b5f8082840360c0811215611c93575f80fd5b6080811215611ca0575f80fd5b506040516060810167ffffffffffffffff8282108183111715611cc557611cc5611438565b8160405285518352602086015191508082168214611ce1575f80fd5b506020820152611cf48560408601611998565b60408201529150611d088460808501611998565b90509250929050565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015611d515780818660040360031b1b83161692505b50509291505056fea26469706673582212207b5ccda07c4935ab2f58433c1f66a53eae2b067eb1cddbe5aed083753328d69164736f6c63430008160033", + "sourceMap": "623:1286:1:-:0;;;1106:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1857:1:30;2061:7;:21;-1:-1:-1;;;;;2964:24:0;;;;;2999:21;;;;;;3044:23;;;-1:-1:-1;;;3044:23:0;;;;1220:6:1;;1228:9;;1239;;3044:21:0;;:23;;;;;;;;;;;;;;;2999:21;3044:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3030:37:0;;;;;3077:21;;;;;;3122:23;;;-1:-1:-1;;;3122:23:0;;;;:21;;:23;;;;;;;;;;;;;;;3077:21;3122:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3108:37:0;;;-1:-1:-1;;;;;3108:37:0;;;;;3185:9;;-1:-1:-1;;;;;3175:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3156:51:0;;;;;3229:36;;;-1:-1:-1;;;3229:36:0;;;;:34;;:36;;;;;;;;;;;;;;;3156:51;3229:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3217:48;;;;3303:5;;3280:11;;-1:-1:-1;;;;;3280:29:0;;;;;;3276:114;;3351:11;;3372:5;;3332:47;;-1:-1:-1;;;3332:47:0;;-1:-1:-1;;;;;1730:15:34;;;3332:47:0;;;1712:34:34;1782:15;;1762:18;;;1755:43;1647:18;;3332:47:0;;;;;;;;3276:114;3427:5;;-1:-1:-1;;;;;3427:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3404:37:0;:11;;-1:-1:-1;;;;;3404:37:0;;3400:135;;3488:11;;3509:5;;-1:-1:-1;;;;;3509:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3464:60;;-1:-1:-1;;;3464:60:0;;-1:-1:-1;;;;;1730:15:34;;;3464:60:0;;;1712:34:34;1782:15;;1762:18;;;1755:43;1647:18;;3464:60:0;1500:304:34;3400:135:0;3771:9;;-1:-1:-1;;;;;3766:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3761:77;;3828:9;;3809:29;;-1:-1:-1;;;3809:29:0;;-1:-1:-1;;;;;2255:32:34;;;3809:29:0;;;2237:51:34;2210:18;;3809:29:0;2091:203:34;3761:77:0;3939:11;;3932:54;;-1:-1:-1;;;3932:54:0;;-1:-1:-1;;;;;2491:32:34;;;3932:54:0;;;2473:51:34;-1:-1:-1;;2540:18:34;;;2533:34;3932:27:0;;;;;;2446:18:34;;3932:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4265:11:0;;4258:57;;-1:-1:-1;;;4258:57:0;;-1:-1:-1;;;;;2491:32:34;;;4258:57:0;;;2473:51:34;-1:-1:-1;;2540:18:34;;;2533:34;4258:27:0;;;;;;2446:18:34;;4258:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4402:9;-1:-1:-1;;;;;4397:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4393:97;;;4440:11;;4433:57;;-1:-1:-1;;;4433:57:0;;-1:-1:-1;;;;;2491:32:34;;;4433:57:0;;;2473:51:34;-1:-1:-1;;2540:18:34;;;2533:34;4433:27:0;;;;;;2446:18:34;;4433:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4393:97;2888:1609;;;1106:146:1;;;623:1286;;14:131:34;-1:-1:-1;;;;;89:31:34;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:519::-;238:6;246;254;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;355:9;349:16;374:31;399:5;374:31;:::i;:::-;474:2;459:18;;453:25;424:5;;-1:-1:-1;487:33:34;453:25;487:33;:::i;:::-;591:2;576:18;;570:25;539:7;;-1:-1:-1;604:33:34;570:25;604:33;:::i;:::-;656:7;646:17;;;150:519;;;;;:::o;674:251::-;744:6;797:2;785:9;776:7;772:23;768:32;765:52;;;813:1;810;803:12;765:52;845:9;839:16;864:31;889:5;864:31;:::i;:::-;914:5;674:251;-1:-1:-1;;;674:251:34:o;1215:280::-;1284:6;1337:2;1325:9;1316:7;1312:23;1308:32;1305:52;;;1353:1;1350;1343:12;1305:52;1385:9;1379:16;1435:10;1428:5;1424:22;1417:5;1414:33;1404:61;;1461:1;1458;1451:12;1809:277;1876:6;1929:2;1917:9;1908:7;1904:23;1900:32;1897:52;;;1945:1;1942;1935:12;1897:52;1977:9;1971:16;2030:5;2023:13;2016:21;2009:5;2006:32;1996:60;;2052:1;2049;2042:12;2299:274;623:1286:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x6080604052600436106100c6575f3560e01c80636fad06f511610071578063a99ecc541161004c578063a99ecc5414610261578063aa72fe3f14610294578063d0a10260146102dc575f80fd5b80636fad06f5146101ef5780637e6e1e10146102225780639a6b198c1461024e575f80fd5b8063369caf83116100a1578063369caf8314610176578063411557d1146101a957806353174fa4146101dc575f80fd5b80630bfec755146100d157806319197ec61461012e5780631df34fa314610143575f80fd5b366100cd57005b5f80fd5b3480156100dc575f80fd5b506101047f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61014161013c366004611679565b6102ef565b005b34801561014e575f80fd5b506101047f000000000000000000000000000000000000000000000000000000000000000081565b348015610181575f80fd5b506101047f000000000000000000000000000000000000000000000000000000000000000081565b3480156101b4575f80fd5b506101047f000000000000000000000000000000000000000000000000000000000000000081565b6101416101ea366004611679565b610353565b3480156101fa575f80fd5b506101047f000000000000000000000000000000000000000000000000000000000000000081565b34801561022d575f80fd5b5061024161023c3660046116cc565b6103a9565b6040516101259190611730565b61014161025c366004611747565b610843565b34801561026c575f80fd5b506101047f000000000000000000000000000000000000000000000000000000000000000081565b34801561029f575f80fd5b506102c77f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610125565b6101416102ea3660046117e7565b610953565b6102f7610c50565b61033973ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333086610c91565b61034533848484610d20565b61034e60015f55565b505050565b61035b610c50565b61039d73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333086610c91565b61034533848484610dd6565b604080518082019091525f80825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036105e0576040517fd905777e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063d905777e90602401602060405180830381865afa15801561049d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c1919061187e565b905080841115610528576040517fb94abeec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015260248101859052604481018290526064015b60405180910390fd5b6040517f4cdad506000000000000000000000000000000000000000000000000000000008152600481018590527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634cdad50690602401602060405180830381865afa1580156105b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d5919061187e565b6040840152506107a8565b6040517f402d267d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063402d267d90602401602060405180830381865afa15801561066e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610692919061187e565b9050808411156106f4576040517f79012fb200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87166004820152602481018590526044810182905260640161051f565b6040517fef8b30f7000000000000000000000000000000000000000000000000000000008152600481018590527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ef8b30f790602401602060405180830381865afa15801561077d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a1919061187e565b6040840152505b6040517f3b6f743b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690633b6f743b906107fc9085905f90600401611975565b6040805180830381865afa158015610816573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083a91906119e5565b95945050505050565b33301461087e576040517fa19dbf0000000000000000000000000000000000000000000000000000000000815233600482015260240161051f565b5f80838060200190518101906108949190611a54565b91509150803410156108db576040517f7cb769dc0000000000000000000000000000000000000000000000000000000081526004810182905234602482015260440161051f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361093f5761093a85848432610d20565b61094b565b61094b85848432610dd6565b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146109c4576040517f91ac5e4f00000000000000000000000000000000000000000000000000000000815233600482015260240161051f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015610a6c57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b15610abb576040517f84fb3f0d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8816600482015260240161051f565b5f610ac68686610e81565b90505f610ad38787610ea2565b90505f610ae08888610eb1565b6040517f9a6b198c0000000000000000000000000000000000000000000000000000000081529091503090639a6b198c903490610b27908e90889087908990600401611b3b565b5f604051808303818588803b158015610b3e575f80fd5b505af193505050508015610b50575060015b610c19573d808015610b7d576040519150601f19603f3d011682016040523d82523d5f602084013e610b82565b606091505b507f7cb769dc00000000000000000000000000000000000000000000000000000000610bad82611b80565b7fffffffff000000000000000000000000000000000000000000000000000000001603610bdc57805181602001fd5b610be98b8a8a8632610efb565b6040518a907ffe509803c09416b28ff3d8f690c8b0c61462a892c46d5430c8fb20abe472daf0905f90a250610c44565b60405189907f27b5aea9f5736c02241d8a0272e9ec988ea44cf85c4b4760329431aa19678394905f90a25b50505050505050505050565b60025f5403610c8b576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f55565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610d1a9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611020565b50505050565b5f610d2b85856110bf565b9050610d3b818460600151611175565b604083018190525f6060840152610d737f000000000000000000000000000000000000000000000000000000000000000084846111bd565b6020838101518451604080518981529384019290925263ffffffff169082015260608101859052608081018290527fa53b96f27930f89fac6e5802f6b77fcad303dde855a10e5ef076e730d1f43afa9060a0015b60405180910390a15050505050565b5f610de185856113a5565b9050610df1818460600151611175565b604083018190525f6060840152610e297f000000000000000000000000000000000000000000000000000000000000000084846111bd565b6020838101518451604080518981529384019290925263ffffffff169082015260608101859052608081018290527f57e232f18448926c8d7554dfd1851d4a4cd10d6b804aabcd714b1f1c067e50ee9060a001610dc7565b5f610e90604c602c8486611bcf565b610e9991611bf6565b90505b92915050565b5f610e90602c600c8486611bcf565b6060610ec082604c8186611bcf565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929695505050505050565b610f406040518060e001604052805f63ffffffff1681526020015f80191681526020015f81526020015f81526020016060815260200160608152602001606081525090565b610f4a85856113d8565b63ffffffff168152610f5c8585610e81565b602080830191909152604080830185905280518082018252348082525f9382019390935290517fc7c7f5b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89169263c7c7f5b3929091610fd59186918890600401611c32565b60c06040518083038185885af1158015610ff1573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110169190611c81565b5050505050505050565b5f8060205f8451602086015f885af18061103f576040513d5f823e3d81fd5b50505f513d91508115611056578060011415611070565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610d1a576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161051f565b6040517f6e553f65000000000000000000000000000000000000000000000000000000008152600481018290523060248201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636e553f65906044016020604051808303815f875af1158015611151573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e99919061187e565b808210156111b9576040517f71c4efed000000000000000000000000000000000000000000000000000000008152600481018390526024810182905260440161051f565b5050565b815163ffffffff7f000000000000000000000000000000000000000000000000000000000000000081169116036112f5575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611268577f000000000000000000000000000000000000000000000000000000000000000061128a565b7f00000000000000000000000000000000000000000000000000000000000000005b905034156112c4576040517f7578d2bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d1a6112d2846020015190565b604085015173ffffffffffffffffffffffffffffffffffffffff841691906113fa565b604080518082018252348082525f602083015291517fc7c7f5b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169263c7c7f5b392909161135d9187918790600401611c32565b60c06040518083038185885af1158015611379573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061139e9190611c81565b5050505050565b5f6040517fd896f90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6113e7600c60088486611bcf565b6113f091611d11565b60e01c9392505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261034e91859182169063a9059cbb90606401610cd3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160e0810167ffffffffffffffff8111828210171561148857611488611438565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156114d5576114d5611438565b604052919050565b63ffffffff811681146114ee575f80fd5b50565b80356114fc816114dd565b919050565b5f67ffffffffffffffff82111561151a5761151a611438565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611555575f80fd5b813561156861156382611501565b61148e565b81815284602083860101111561157c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60e082840312156115a8575f80fd5b6115b0611465565b90506115bb826114f1565b8152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff808211156115f5575f80fd5b61160185838601611546565b608084015260a0840135915080821115611619575f80fd5b61162585838601611546565b60a084015260c084013591508082111561163d575f80fd5b5061164a84828501611546565b60c08301525092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114fc575f80fd5b5f805f6060848603121561168b575f80fd5b83359250602084013567ffffffffffffffff8111156116a8575f80fd5b6116b486828701611598565b9250506116c360408501611656565b90509250925092565b5f805f80608085870312156116df575f80fd5b6116e885611656565b93506116f660208601611656565b925060408501359150606085013567ffffffffffffffff811115611718575f80fd5b61172487828801611598565b91505092959194509250565b815181526020808301519082015260408101610e9c565b5f805f806080858703121561175a575f80fd5b61176385611656565b935060208501359250604085013567ffffffffffffffff811115611785575f80fd5b61179187828801611546565b949793965093946060013593505050565b5f8083601f8401126117b2575f80fd5b50813567ffffffffffffffff8111156117c9575f80fd5b6020830191508360208285010111156117e0575f80fd5b9250929050565b5f805f805f805f60a0888a0312156117fd575f80fd5b61180688611656565b965060208801359550604088013567ffffffffffffffff80821115611829575f80fd5b6118358b838c016117a2565b909750955085915061184960608b01611656565b945060808a013591508082111561185e575f80fd5b5061186b8a828b016117a2565b989b979a50959850939692959293505050565b5f6020828403121561188e575f80fd5b5051919050565b5f5b838110156118af578181015183820152602001611897565b50505f910152565b5f81518084526118ce816020860160208601611895565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b63ffffffff81511682526020810151602083015260408101516040830152606081015160608301525f608082015160e0608085015261194260e08501826118b7565b905060a083015184820360a086015261195b82826118b7565b91505060c083015184820360c086015261083a82826118b7565b604081525f6119876040830185611900565b905082151560208301529392505050565b5f604082840312156119a8575f80fd5b6040516040810181811067ffffffffffffffff821117156119cb576119cb611438565b604052825181526020928301519281019290925250919050565b5f604082840312156119f5575f80fd5b610e998383611998565b80516114fc816114dd565b5f82601f830112611a19575f80fd5b8151611a2761156382611501565b818152846020838601011115611a3b575f80fd5b611a4c826020830160208701611895565b949350505050565b5f8060408385031215611a65575f80fd5b825167ffffffffffffffff80821115611a7c575f80fd5b9084019060e08287031215611a8f575f80fd5b611a97611465565b611aa0836119ff565b8152602083015160208201526040830151604082015260608301516060820152608083015182811115611ad1575f80fd5b611add88828601611a0a565b60808301525060a083015182811115611af4575f80fd5b611b0088828601611a0a565b60a08301525060c083015182811115611b17575f80fd5b611b2388828601611a0a565b60c08301525060209590950151949694955050505050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152608060408201525f611b6f60808301856118b7565b905082606083015295945050505050565b5f815160208301517fffffffff0000000000000000000000000000000000000000000000000000000080821693506004831015611bc75780818460040360031b1b83161693505b505050919050565b5f8085851115611bdd575f80fd5b83861115611be9575f80fd5b5050820193919092039150565b80356020831015610e9c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b608081525f611c446080830186611900565b9050611c5d602083018580518252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff83166060830152949350505050565b5f8082840360c0811215611c93575f80fd5b6080811215611ca0575f80fd5b506040516060810167ffffffffffffffff8282108183111715611cc557611cc5611438565b8160405285518352602086015191508082168214611ce1575f80fd5b506020820152611cf48560408601611998565b60408201529150611d088460808501611998565b90509250929050565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015611d515780818660040360031b1b83161692505b50509291505056fea26469706673582212207b5ccda07c4935ab2f58433c1f66a53eae2b067eb1cddbe5aed083753328d69164736f6c63430008160033", + "sourceMap": "623:1286:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:34:0;;;;;;;;;;;;;;;;;;190:42:34;178:55;;;160:74;;148:2;133:18;2093:34:0;;;;;;;;8653:377;;;;;;:::i;:::-;;:::i;:::-;;2133:36;;;;;;;;;;;;;;;2175:34;;;;;;;;;;;;;;;2055:31;;;;;;;;;;;;;;;11215:375;;;;;;:::i;:::-;;:::i;2258:33::-;;;;;;;;;;;;;;;14687:1049;;;;;;;;;;-1:-1:-1;14687:1049:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7354:957::-;;;;;;:::i;:::-;;:::i;2215:36::-;;;;;;;;;;;;;;;2297:33;;;;;;;;;;;;;;;;;;5668:10:34;5656:23;;;5638:42;;5626:2;5611:18;2297:33:0;5494:192:34;5097:1518:0;;;;;;:::i;:::-;;:::i;8653:377::-;2500:21:30;:19;:21::i;:::-;8830:77:0::1;:36;8837:11;8830:36;8867:10;8887:4;8894:12:::0;8830:36:::1;:77::i;:::-;8917:106;8969:10;8982:12;8996:10;9008:14;8917:15;:106::i;:::-;2542:20:30::0;1857:1;3068:7;:21;2888:208;2542:20;8653:377:0;;;:::o;11215:375::-;2500:21:30;:19;:21::i;:::-;11391:77:0::1;:36;11398:11;11391:36;11428:10;11448:4;11455:12:::0;11391:36:::1;:77::i;:::-;11478:105;11529:10;11542:12;11556:10;11568:14;11478;:105::i;14687:1049::-:0;-1:-1:-1;;;;;;;;;;;;;;;;;15065:9:0;15051:23;;:10;:23;;;15047:621;;15110:22;;;;;:15;178:55:34;;;15110:22:0;;;160:74:34;15090:17:0;;15110:5;:15;;;;;;133:18:34;;15110:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15090:42;;15167:9;15150:14;:26;15146:138;;;15203:66;;;;;7404:42:34;7392:55;;15203:66:0;;;7374:74:34;7464:18;;;7457:34;;;7507:18;;;7500:34;;;7347:18;;15203:66:0;;;;;;;;15146:138;15320:35;;;;;;;;7691:25:34;;;15320:5:0;:19;;;;;7664:18:34;;15320:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15298:19;;;:57;-1:-1:-1;15047:621:0;;;15407:23;;;;;:16;178:55:34;;;15407:23:0;;;160:74:34;15386:18:0;;15407:5;:16;;;;;;133:18:34;;15407:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15386:44;;15465:10;15448:14;:27;15444:141;;;15502:68;;;;;7404:42:34;7392:55;;15502:68:0;;;7374:74:34;7464:18;;;7457:34;;;7507:18;;;7500:34;;;7347:18;;15502:68:0;7172:368:34;15444:141:0;15621:36;;;;;;;;7691:25:34;;;15621:5:0;:20;;;;;7664:18:34;;15621:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15599:19;;;:58;-1:-1:-1;15047:621:0;15684:45;;;;;:26;;;;;;:45;;15711:10;;15723:5;;15684:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15677:52;14687:1049;-1:-1:-1;;;;;14687:1049:0:o;7354:957::-;7571:10;7593:4;7571:27;7567:60;;7607:20;;;;;7616:10;7607:20;;;160:74:34;133:18;;7607:20:0;14:226:34;7567:60:0;7908:26;7936:19;7970:11;7959:45;;;;;;;;;;;;:::i;:::-;7907:97;;;;8030:11;8018:9;:23;8014:80;;;8050:44;;;;;;;;12211:25:34;;;8084:9:0;12252:18:34;;;12245:34;12184:18;;8050:44:0;12037:248:34;8014:80:0;8119:9;8109:19;;:6;:19;;;8105:200;;8144:60;8160:12;8174:7;8183:9;8194;8144:15;:60::i;:::-;8105:200;;;8235:59;8250:12;8264:7;8273:9;8284;8235:14;:59::i;:::-;7513:798;;7354:957;;;;:::o;5097:1518::-;5476:10;:22;5490:8;5476:22;;5472:59;;5507:24;;;;;5520:10;5507:24;;;160:74:34;133:18;;5507:24:0;14:226:34;5472:59:0;5563:9;5545:27;;:14;:27;;;;:58;;;;;5594:9;5576:27;;:14;:27;;;;5545:58;5541:109;;;5612:38;;;;;190:42:34;178:55;;5612:38:0;;;160:74:34;133:18;;5612:38:0;14:226:34;5541:109:0;5661:19;5683:22;:8;;:20;:22::i;:::-;5661:44;;5715:14;5732:19;:8;;:17;:19::i;:::-;5715:36;;5761:23;5787:21;:8;;:19;:21::i;:::-;5916:87;;;;;5761:47;;-1:-1:-1;5916:4:0;;:18;;5943:9;;5916:87;;5955:14;;5971:11;;5761:47;;5996:6;;5916:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5912:697;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6352:29:0;6336:12;6343:4;6336:12;:::i;:::-;:45;;;6332:166;;6460:4;6454:11;6447:4;6443:2;6439:13;6432:34;6332:166;6512:52;6520:14;6536:8;;6546:6;6554:9;6512:7;:52::i;:::-;6583:15;;6592:5;;6583:15;;;;;6046:563;5912:697;;;6023:11;;6028:5;;6023:11;;;;;5912:697;5462:1153;;;5097:1518;;;;;;;:::o;2575:307:30:-;1899:1;2702:7;;:18;2698:86;;2743:30;;;;;;;;;;;;;;2698:86;1899:1;2858:7;:17;2575:307::o;1670:188:25:-;1797:53;;1812:18;13469:15:34;;;1797:53:25;;;13451:34:34;13521:15;;;13501:18;;;13494:43;13553:18;;;13546:34;;;1770:81:25;;1790:5;;1812:18;;;;;13363::34;;1797:53:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1770:19;:81::i;:::-;1670:188;;;;:::o;9806:542:0:-;9991:19;10013:34;10022:10;10034:12;10013:8;:34::i;:::-;9991:56;;10057:52;10073:11;10086:10;:22;;;10057:15;:52::i;:::-;10120:19;;;:33;;;10188:1;10163:22;;;:26;10200:44;10206:9;10120:10;10229:14;10200:5;:44::i;:::-;10281:13;;;;;10296:17;;10259:82;;;13848:25:34;;;13889:18;;;13882:34;;;;13964:10;13952:23;13932:18;;;13925:51;14007:2;13992:18;;13985:34;;;14050:3;14035:19;;14028:35;;;10259:82:0;;13835:3:34;13820:19;10259:82:0;;;;;;;;9981:367;9806:542;;;;:::o;12423:536::-;12606:19;12628:32;12636:9;12647:12;12628:7;:32::i;:::-;12606:54;;12670:52;12686:11;12699:10;:22;;;12670:15;:52::i;:::-;12733:19;;;:33;;;12801:1;12776:22;;;:26;12813:44;12819:9;12733:10;12842:14;12813:5;:44::i;:::-;12892:13;;;;;12907:17;;12872:80;;;13848:25:34;;;13889:18;;;13882:34;;;;13964:10;13952:23;13932:18;;;13925:51;14007:2;13992:18;;13985:34;;;14050:3;14035:19;;14028:35;;;12872:80:0;;13835:3:34;13820:19;12872:80:0;13591:478:34;1989:149:14;2054:7;2088:42;335:2;282;2088:4;;:42;:::i;:::-;2080:51;;;:::i;:::-;2073:58;;1989:149;;;;;:::o;1676:150::-;1738:7;1780:37;282:2;232;1780:4;;:37;:::i;2273:128::-;2337:12;2368:26;:4;335:2;2368:4;;:26;:::i;:::-;2361:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2361:33:14;;2273:128;-1:-1:-1;;;;;;2273:128:14:o;17232:577:0:-;17478:32;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17478:32:0;17545:35;17571:8;;17545:25;:35::i;:::-;17520:60;;;;17611:40;17642:8;;17611:30;:40::i;:::-;17590:18;;;;:61;;;;17661:24;;;;:34;;;17759:26;;;;;;;17730:9;17759:26;;;-1:-1:-1;17759:26:0;;;;;;;17706:96;;;;;:15;;;;;;17730:9;;17706:96;;17590:15;;17787:14;;17706:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;17346:463;17232:577;;;;;:::o;7738:720:25:-;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:25;8278:8;8234:16;;-1:-1:-1;8310:15:25;;:68;;8362:11;8377:1;8362:16;;8310:68;;;8328:26;;;;:31;8310:68;8306:146;;;8401:40;;;;;190:42:34;178:55;;8401:40:25;;;160:74:34;133:18;;8401:40:25;14:226:34;10717:184:0;10852:42;;;;;;;;16381:25:34;;;10888:4:0;16422:18:34;;;16415:83;10807:19:0;;10852:5;:13;;;;;16354:18:34;;10852:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13928:183::-;14042:12;14030:9;:24;14026:78;;;14063:41;;;;;;;;12211:25:34;;;12252:18;;;12245:34;;;12184:18;;14063:41:0;12037:248:34;14026:78:0;13928:183;;:::o;16248:628::-;16353:17;;:30;16374:9;16353:30;;;;;16349:521;;16489:13;16513:9;16505:17;;:4;:17;;;:45;;16539:11;16505:45;;;16525:11;16505:45;16489:61;-1:-1:-1;16569:9:0;:13;16565:46;;16591:20;;;;;;;;;;;;;;16565:46;16625:81;16652:32;:10;:13;;;2976:2:14;2865:123;16652:32:0;16686:19;;;;16625:26;;;;:81;:26;:81::i;16349:521::-;16816:26;;;;;;;;16792:9;16816:26;;;-1:-1:-1;16816:26:0;;;;16768:91;;;;;:15;;;;;;16792:9;;16768:91;;16804:10;;16844:14;;16768:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16248:628;;;:::o;1653:254:1:-;1773:7;1880:20;;;;;;;;;;;;;;1358:141:14;1418:6;1457:33;232:2;185:1;1457:4;;:33;:::i;:::-;1450:41;;;:::i;:::-;1443:49;;;1358:141;-1:-1:-1;;;1358:141:14:o;1271:160:25:-;1380:43;;1395:14;17075:55:34;;;1380:43:25;;;17057:74:34;17147:18;;;17140:34;;;1353:71:25;;1373:5;;1395:14;;;;;17030:18:34;;1380:43:25;16883:297:34;245:184;297:77;294:1;287:88;394:4;391:1;384:15;418:4;415:1;408:15;434:253;506:2;500:9;548:4;536:17;;583:18;568:34;;604:22;;;565:62;562:88;;;630:18;;:::i;:::-;666:2;659:22;434:253;:::o;692:334::-;763:2;757:9;819:2;809:13;;824:66;805:86;793:99;;922:18;907:34;;943:22;;;904:62;901:88;;;969:18;;:::i;:::-;1005:2;998:22;692:334;;-1:-1:-1;692:334:34:o;1031:121::-;1116:10;1109:5;1105:22;1098:5;1095:33;1085:61;;1142:1;1139;1132:12;1085:61;1031:121;:::o;1157:132::-;1224:20;;1253:30;1224:20;1253:30;:::i;:::-;1157:132;;;:::o;1294:245::-;1342:4;1375:18;1367:6;1364:30;1361:56;;;1397:18;;:::i;:::-;-1:-1:-1;1454:2:34;1442:15;1459:66;1438:88;1528:4;1434:99;;1294:245::o;1544:462::-;1586:5;1639:3;1632:4;1624:6;1620:17;1616:27;1606:55;;1657:1;1654;1647:12;1606:55;1693:6;1680:20;1724:48;1740:31;1768:2;1740:31;:::i;:::-;1724:48;:::i;:::-;1797:2;1788:7;1781:19;1843:3;1836:4;1831:2;1823:6;1819:15;1815:26;1812:35;1809:55;;;1860:1;1857;1850:12;1809:55;1925:2;1918:4;1910:6;1906:17;1899:4;1890:7;1886:18;1873:55;1973:1;1948:16;;;1966:4;1944:27;1937:38;;;;1952:7;1544:462;-1:-1:-1;;;1544:462:34:o;2011:1002::-;2067:5;2115:4;2103:9;2098:3;2094:19;2090:30;2087:50;;;2133:1;2130;2123:12;2087:50;2155:22;;:::i;:::-;2146:31;;2200:28;2218:9;2200:28;:::i;:::-;2193:5;2186:43;2289:2;2278:9;2274:18;2261:32;2256:2;2249:5;2245:14;2238:56;2354:2;2343:9;2339:18;2326:32;2321:2;2314:5;2310:14;2303:56;2419:2;2408:9;2404:18;2391:32;2386:2;2379:5;2375:14;2368:56;2475:3;2464:9;2460:19;2447:33;2499:18;2540:2;2532:6;2529:14;2526:34;;;2556:1;2553;2546:12;2526:34;2593:45;2634:3;2625:6;2614:9;2610:22;2593:45;:::i;:::-;2587:3;2580:5;2576:15;2569:70;2692:3;2681:9;2677:19;2664:33;2648:49;;2722:2;2712:8;2709:16;2706:36;;;2738:1;2735;2728:12;2706:36;2775:47;2818:3;2807:8;2796:9;2792:24;2775:47;:::i;:::-;2769:3;2762:5;2758:15;2751:72;2876:3;2865:9;2861:19;2848:33;2832:49;;2906:2;2896:8;2893:16;2890:36;;;2922:1;2919;2912:12;2890:36;;2959:47;3002:3;2991:8;2980:9;2976:24;2959:47;:::i;:::-;2953:3;2946:5;2942:15;2935:72;;2011:1002;;;;:::o;3018:196::-;3086:20;;3146:42;3135:54;;3125:65;;3115:93;;3204:1;3201;3194:12;3219:491;3323:6;3331;3339;3392:2;3380:9;3371:7;3367:23;3363:32;3360:52;;;3408:1;3405;3398:12;3360:52;3444:9;3431:23;3421:33;;3505:2;3494:9;3490:18;3477:32;3532:18;3524:6;3521:30;3518:50;;;3564:1;3561;3554:12;3518:50;3587:60;3639:7;3630:6;3619:9;3615:22;3587:60;:::i;:::-;3577:70;;;3666:38;3700:2;3689:9;3685:18;3666:38;:::i;:::-;3656:48;;3219:491;;;;;:::o;3963:566::-;4076:6;4084;4092;4100;4153:3;4141:9;4132:7;4128:23;4124:33;4121:53;;;4170:1;4167;4160:12;4121:53;4193:29;4212:9;4193:29;:::i;:::-;4183:39;;4241:38;4275:2;4264:9;4260:18;4241:38;:::i;:::-;4231:48;;4326:2;4315:9;4311:18;4298:32;4288:42;;4381:2;4370:9;4366:18;4353:32;4408:18;4400:6;4397:30;4394:50;;;4440:1;4437;4430:12;4394:50;4463:60;4515:7;4506:6;4495:9;4491:22;4463:60;:::i;:::-;4453:70;;;3963:566;;;;;;;:::o;4692:261::-;4612:12;;4600:25;;4674:4;4663:16;;;4657:23;4641:14;;;4634:47;4886:2;4871:18;;4898:49;4534:153;4958:531;5053:6;5061;5069;5077;5130:3;5118:9;5109:7;5105:23;5101:33;5098:53;;;5147:1;5144;5137:12;5098:53;5170:29;5189:9;5170:29;:::i;:::-;5160:39;;5246:2;5235:9;5231:18;5218:32;5208:42;;5301:2;5290:9;5286:18;5273:32;5328:18;5320:6;5317:30;5314:50;;;5360:1;5357;5350:12;5314:50;5383:49;5424:7;5415:6;5404:9;5400:22;5383:49;:::i;:::-;4958:531;;;;-1:-1:-1;5373:59:34;;5479:2;5464:18;5451:32;;-1:-1:-1;;;4958:531:34:o;5691:347::-;5742:8;5752:6;5806:3;5799:4;5791:6;5787:17;5783:27;5773:55;;5824:1;5821;5814:12;5773:55;-1:-1:-1;5847:20:34;;5890:18;5879:30;;5876:50;;;5922:1;5919;5912:12;5876:50;5959:4;5951:6;5947:17;5935:29;;6011:3;6004:4;5995:6;5987;5983:19;5979:30;5976:39;5973:59;;;6028:1;6025;6018:12;5973:59;5691:347;;;;;:::o;6043:935::-;6160:6;6168;6176;6184;6192;6200;6208;6261:3;6249:9;6240:7;6236:23;6232:33;6229:53;;;6278:1;6275;6268:12;6229:53;6301:29;6320:9;6301:29;:::i;:::-;6291:39;;6377:2;6366:9;6362:18;6349:32;6339:42;;6432:2;6421:9;6417:18;6404:32;6455:18;6496:2;6488:6;6485:14;6482:34;;;6512:1;6509;6502:12;6482:34;6551:58;6601:7;6592:6;6581:9;6577:22;6551:58;:::i;:::-;6628:8;;-1:-1:-1;6525:84:34;-1:-1:-1;6525:84:34;;-1:-1:-1;6682:38:34;6716:2;6701:18;;6682:38;:::i;:::-;6672:48;;6773:3;6762:9;6758:19;6745:33;6729:49;;6803:2;6793:8;6790:16;6787:36;;;6819:1;6816;6809:12;6787:36;;6858:60;6910:7;6899:8;6888:9;6884:24;6858:60;:::i;:::-;6043:935;;;;-1:-1:-1;6043:935:34;;-1:-1:-1;6043:935:34;;;;6832:86;;-1:-1:-1;;;6043:935:34:o;6983:184::-;7053:6;7106:2;7094:9;7085:7;7081:23;7077:32;7074:52;;;7122:1;7119;7112:12;7074:52;-1:-1:-1;7145:16:34;;6983:184;-1:-1:-1;6983:184:34:o;7727:250::-;7812:1;7822:113;7836:6;7833:1;7830:13;7822:113;;;7912:11;;;7906:18;7893:11;;;7886:39;7858:2;7851:10;7822:113;;;-1:-1:-1;;7969:1:34;7951:16;;7944:27;7727:250::o;7982:329::-;8023:3;8061:5;8055:12;8088:6;8083:3;8076:19;8104:76;8173:6;8166:4;8161:3;8157:14;8150:4;8143:5;8139:16;8104:76;:::i;:::-;8225:2;8213:15;8230:66;8209:88;8200:98;;;;8300:4;8196:109;;7982:329;-1:-1:-1;;7982:329:34:o;8316:763::-;8416:10;8408:5;8402:12;8398:29;8393:3;8386:42;8477:4;8470:5;8466:16;8460:23;8453:4;8448:3;8444:14;8437:47;8533:4;8526:5;8522:16;8516:23;8509:4;8504:3;8500:14;8493:47;8589:4;8582:5;8578:16;8572:23;8565:4;8560:3;8556:14;8549:47;8368:3;8642:4;8635:5;8631:16;8625:23;8680:4;8673;8668:3;8664:14;8657:28;8706:46;8746:4;8741:3;8737:14;8723:12;8706:46;:::i;:::-;8694:58;;8800:4;8793:5;8789:16;8783:23;8848:3;8842:4;8838:14;8831:4;8826:3;8822:14;8815:38;8876;8909:4;8893:14;8876:38;:::i;:::-;8862:52;;;8962:4;8955:5;8951:16;8945:23;9012:3;9004:6;9000:16;8993:4;8988:3;8984:14;8977:40;9033;9066:6;9050:14;9033:40;:::i;9084:345::-;9289:2;9278:9;9271:21;9252:4;9309:55;9360:2;9349:9;9345:18;9337:6;9309:55;:::i;:::-;9301:63;;9414:6;9407:14;9400:22;9395:2;9384:9;9380:18;9373:50;9084:345;;;;;:::o;9434:478::-;9504:5;9552:4;9540:9;9535:3;9531:19;9527:30;9524:50;;;9570:1;9567;9560:12;9524:50;9603:4;9597:11;9647:4;9639:6;9635:17;9718:6;9706:10;9703:22;9682:18;9670:10;9667:34;9664:62;9661:88;;;9729:18;;:::i;:::-;9765:4;9758:24;9830:16;;9815:32;;9901:2;9886:18;;;9880:25;9863:15;;;9856:50;;;;-1:-1:-1;9800:6:34;9434:478;-1:-1:-1;9434:478:34:o;9917:259::-;10017:6;10070:2;10058:9;10049:7;10045:23;10041:32;10038:52;;;10086:1;10083;10076:12;10038:52;10109:61;10162:7;10151:9;10109:61;:::i;10181:136::-;10259:13;;10281:30;10259:13;10281:30;:::i;10322:441::-;10375:5;10428:3;10421:4;10413:6;10409:17;10405:27;10395:55;;10446:1;10443;10436:12;10395:55;10475:6;10469:13;10506:48;10522:31;10550:2;10522:31;:::i;10506:48::-;10579:2;10570:7;10563:19;10625:3;10618:4;10613:2;10605:6;10601:15;10597:26;10594:35;10591:55;;;10642:1;10639;10632:12;10591:55;10655:77;10729:2;10722:4;10713:7;10709:18;10702:4;10694:6;10690:17;10655:77;:::i;:::-;10750:7;10322:441;-1:-1:-1;;;;10322:441:34:o;10768:1264::-;10874:6;10882;10935:2;10923:9;10914:7;10910:23;10906:32;10903:52;;;10951:1;10948;10941:12;10903:52;10984:9;10978:16;11013:18;11054:2;11046:6;11043:14;11040:34;;;11070:1;11067;11060:12;11040:34;11093:22;;;;11149:4;11131:16;;;11127:27;11124:47;;;11167:1;11164;11157:12;11124:47;11193:22;;:::i;:::-;11238:32;11267:2;11238:32;:::i;:::-;11231:5;11224:47;11317:2;11313;11309:11;11303:18;11298:2;11291:5;11287:14;11280:42;11368:2;11364;11360:11;11354:18;11349:2;11342:5;11338:14;11331:42;11419:2;11415;11411:11;11405:18;11400:2;11393:5;11389:14;11382:42;11463:3;11459:2;11455:12;11449:19;11493:2;11483:8;11480:16;11477:36;;;11509:1;11506;11499:12;11477:36;11546:55;11593:7;11582:8;11578:2;11574:17;11546:55;:::i;:::-;11540:3;11533:5;11529:15;11522:80;;11641:3;11637:2;11633:12;11627:19;11671:2;11661:8;11658:16;11655:36;;;11687:1;11684;11677:12;11655:36;11724:55;11771:7;11760:8;11756:2;11752:17;11724:55;:::i;:::-;11718:3;11711:5;11707:15;11700:80;;11819:3;11815:2;11811:12;11805:19;11849:2;11839:8;11836:16;11833:36;;;11865:1;11862;11855:12;11833:36;11902:55;11949:7;11938:8;11934:2;11930:17;11902:55;:::i;:::-;11896:3;11885:15;;11878:80;-1:-1:-1;12022:2:34;12007:18;;;;12001:25;11889:5;;12001:25;;-1:-1:-1;;;;;10768:1264:34:o;12290:481::-;12533:42;12525:6;12521:55;12510:9;12503:74;12613:6;12608:2;12597:9;12593:18;12586:34;12656:3;12651:2;12640:9;12636:18;12629:31;12484:4;12677:45;12717:3;12706:9;12702:19;12694:6;12677:45;:::i;:::-;12669:53;;12758:6;12753:2;12742:9;12738:18;12731:34;12290:481;;;;;;;:::o;12776:407::-;12859:5;12899;12893:12;12941:4;12934:5;12930:16;12924:23;12966:66;13058:2;13054;13050:11;13041:20;;13084:1;13076:6;13073:13;13070:107;;;13164:2;13158;13148:6;13145:1;13141:14;13138:1;13134:22;13130:31;13126:2;13122:40;13118:49;13109:58;;13070:107;;;;12776:407;;;:::o;14074:331::-;14179:9;14190;14232:8;14220:10;14217:24;14214:44;;;14254:1;14251;14244:12;14214:44;14283:6;14273:8;14270:20;14267:40;;;14303:1;14300;14293:12;14267:40;-1:-1:-1;;14329:23:34;;;14374:25;;;;;-1:-1:-1;14074:331:34:o;14410:315::-;14530:19;;14569:2;14561:11;;14558:161;;;14641:66;14630:2;14626:12;;;14623:1;14619:20;14615:93;14604:105;14410:315;;;;:::o;14730:541::-;15029:3;15018:9;15011:22;14992:4;15050:56;15101:3;15090:9;15086:19;15078:6;15050:56;:::i;:::-;15042:64;;15115:58;15169:2;15158:9;15154:18;15146:6;4612:12;;4600:25;;4674:4;4663:16;;;4657:23;4641:14;;4634:47;4534:153;15115:58;15221:42;15213:6;15209:55;15204:2;15193:9;15189:18;15182:83;14730:541;;;;;;:::o;15276:926::-;15417:6;15425;15469:9;15460:7;15456:23;15499:3;15495:2;15491:12;15488:32;;;15516:1;15513;15506:12;15488:32;15540:4;15536:2;15532:13;15529:33;;;15558:1;15555;15548:12;15529:33;;15591:2;15585:9;15633:4;15625:6;15621:17;15657:18;15725:6;15713:10;15710:22;15705:2;15693:10;15690:18;15687:46;15684:72;;;15736:18;;:::i;:::-;15776:10;15772:2;15765:22;15817:9;15811:16;15803:6;15796:32;15871:2;15860:9;15856:18;15850:25;15837:38;;15915:2;15908:5;15904:14;15897:5;15894:25;15884:53;;15933:1;15930;15923:12;15884:53;-1:-1:-1;15965:2:34;15953:15;;15946:30;16009:70;16071:7;16066:2;16051:18;;16009:70;:::i;:::-;16004:2;15992:15;;15985:95;15996:6;-1:-1:-1;16124:72:34;16188:7;16181:4;16166:20;;16124:72;:::i;:::-;16114:82;;15276:926;;;;;:::o;16509:369::-;16667:66;16629:19;;16751:11;;;;16782:1;16774:10;;16771:101;;;16859:2;16853;16846:3;16843:1;16839:11;16836:1;16832:19;16828:28;16824:2;16820:37;16816:46;16807:55;;16771:101;;;16509:369;;;;:::o", + "linkReferences": {}, + "immutableReferences": { + "40": [ + { "start": 442, "length": 32 }, + { "start": 1110, "length": 32 }, + { "start": 1367, "length": 32 }, + { "start": 1575, "length": 32 }, + { "start": 1827, "length": 32 }, + { "start": 4342, "length": 32 } + ], + "42": [ + { "start": 226, "length": 32 }, + { "start": 958, "length": 32 }, + { "start": 2269, "length": 32 }, + { "start": 2502, "length": 32 }, + { "start": 3587, "length": 32 }, + { "start": 4593, "length": 32 } + ], + "44": [ + { "start": 340, "length": 32 }, + { "start": 785, "length": 32 }, + { "start": 4714, "length": 32 } + ], + "46": [ + { "start": 391, "length": 32 }, + { "start": 2589, "length": 32 }, + { "start": 3405, "length": 32 } + ], + "48": [ + { "start": 626, "length": 32 }, + { "start": 885, "length": 32 }, + { "start": 4676, "length": 32 } + ], + "50": [ + { "start": 512, "length": 32 }, + { "start": 2411, "length": 32 } + ], + "52": [ + { "start": 677, "length": 32 }, + { "start": 4550, "length": 32 } + ] + } + }, + "methodIdentifiers": { + "ASSET_ERC20()": "1df34fa3", + "ASSET_OFT()": "0bfec755", + "ENDPOINT()": "6fad06f5", + "SHARE_ERC20()": "a99ecc54", + "SHARE_OFT()": "369caf83", + "VAULT()": "411557d1", + "VAULT_EID()": "aa72fe3f", + "depositAndSend(uint256,(uint32,bytes32,uint256,uint256,bytes,bytes,bytes),address)": "19197ec6", + "handleCompose(address,bytes32,bytes,uint256)": "9a6b198c", + "lzCompose(address,bytes32,bytes,address,bytes)": "d0a10260", + "quoteSend(address,address,uint256,(uint32,bytes32,uint256,uint256,bytes,bytes,bytes))": "7e6e1e10", + "redeemAndSend(uint256,(uint32,bytes32,uint256,uint256,bytes,bytes,bytes),address)": "53174fa4" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_assetOFT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_shareOFT\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"assetERC20\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultAsset\",\"type\":\"address\"}],\"name\":\"AssetTokenNotVaultAsset\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxDeposit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"ERC4626ExceededMaxRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expectedMsgValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualMsgValue\",\"type\":\"uint256\"}],\"name\":\"InsufficientMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoMsgValueExpected\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"OnlyValidComposeCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RedemptionDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"shareOFT\",\"type\":\"address\"}],\"name\":\"ShareOFTNotAdapter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"shareERC20\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"name\":\"ShareTokenNotVault\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assetAmt\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shareAmt\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shareAmt\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assetAmt\",\"type\":\"uint256\"}],\"name\":\"Redeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"}],\"name\":\"Refunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"}],\"name\":\"Sent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ASSET_ERC20\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ASSET_OFT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ENDPOINT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SHARE_ERC20\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SHARE_OFT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT\",\"outputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_EID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_assetAmount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"depositAndSend\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oftIn\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_composeFrom\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"handleCompose\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_composeSender\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"lzCompose\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_targetOFT\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_vaultInAmount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shareAmount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"redeemAndSend\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"LayerZero Labs (@ravinagill15)\",\"details\":\"Overrides the _redeem function to always revert, effectively making this a deposit-only composer Use this when you want to allow users to deposit assets and receive shares cross-chain, but prevent them from redeeming shares back to assets through the composer\",\"errors\":{\"ERC4626ExceededMaxDeposit(address,uint256,uint256)\":[{\"details\":\"Attempted to deposit more assets than the max amount for `receiver`.\"}],\"ERC4626ExceededMaxRedeem(address,uint256,uint256)\":[{\"details\":\"Attempted to redeem more shares than the max amount for `receiver`.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_assetOFT\":\"The address of the asset OFT (Omnichain Fungible Token) contract\",\"_shareOFT\":\"The address of the share OFT contract (must be an adapter)\",\"_vault\":\"The address of the ERC4626 vault contract\"}},\"depositAndSend(uint256,(uint32,bytes32,uint256,uint256,bytes,bytes,bytes),address)\":{\"params\":{\"_assetAmount\":\"The number of ERC20 tokens to deposit and send\",\"_refundAddress\":\"Address to receive excess `msg.value`\",\"_sendParam\":\"Parameters on how to send the shares to the recipient\"}},\"handleCompose(address,bytes32,bytes,uint256)\":{\"details\":\"This function can only be called by the contract itself (self-call restriction) Decodes the compose message to extract SendParam and minimum message value Routes to either deposit or redeem flow based on the input OFT token type\",\"params\":{\"_amount\":\"The amount of tokens received in the lzReceive associated with this lzTx\",\"_composeFrom\":\"The bytes32 identifier of the compose sender\",\"_composeMsg\":\"The encoded message containing SendParam and minMsgValue\",\"_oftIn\":\"The OFT token whose funds have been received in the lzReceive associated with this lzTx\"}},\"lzCompose(address,bytes32,bytes,address,bytes)\":{\"details\":\"This composer is designed to handle refunds to an EOA address and not a contractAny revert in handleCompose() causes a refund back to the src EXCEPT for InsufficientMsgValue\",\"params\":{\"_composeSender\":\"The OFT contract address used for refunds, must be either ASSET_OFT or SHARE_OFT\",\"_guid\":\"LayerZero's unique tx id (created on the source tx)\",\"_message\":\"Decomposable bytes object into [composeHeader][composeMessage]\"}},\"quoteSend(address,address,uint256,(uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"details\":\"Revert on slippage will be thrown by the OFT and not _assertSlippageThis function can be overridden to implement custom quoting logic\",\"params\":{\"_from\":\"The \\\"sender address\\\" used for the quote\",\"_sendParam\":\"The parameters for the send operation\",\"_targetOFT\":\"The OFT contract address to quote\",\"_vaultInAmount\":\"The amount of tokens to send to the vault\"},\"returns\":{\"_0\":\"MessagingFee The estimated fee for the send operation\"}},\"redeemAndSend(uint256,(uint32,bytes32,uint256,uint256,bytes,bytes,bytes),address)\":{\"params\":{\"_refundAddress\":\"Address to receive excess payment of the LZ fees\",\"_sendParam\":\"Parameter that defines how to send the assets\",\"_shareAmount\":\"The number of vault shares to redeem\"}}},\"title\":\"VaultComposerSyncDepositOnly - Deposit-Only Vault Composer\",\"version\":1},\"userdoc\":{\"errors\":{\"RedemptionDisabled()\":[{\"notice\":\"Custom error thrown when redemption is attempted\"}],\"ShareOFTNotAdapter(address)\":[{\"notice\":\"========================== Error Messages =====================================\"}]},\"events\":{\"Sent(bytes32)\":{\"notice\":\"========================== EVENTS =====================================\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Initializes the VaultComposerSyncDepositOnly contract\"},\"depositAndSend(uint256,(uint32,bytes32,uint256,uint256,bytes,bytes,bytes),address)\":{\"notice\":\"Deposits ERC20 assets from the caller into the vault and sends them to the recipient\"},\"handleCompose(address,bytes32,bytes,uint256)\":{\"notice\":\"Handles the compose operation for OFT (Omnichain Fungible Token) transactions\"},\"lzCompose(address,bytes32,bytes,address,bytes)\":{\"notice\":\"Handles LayerZero compose operations for vault transactions with automatic refund functionality\"},\"quoteSend(address,address,uint256,(uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Quotes the send operation for the given OFT and SendParam\"},\"redeemAndSend(uint256,(uint32,bytes32,uint256,uint256,bytes,bytes,bytes),address)\":{\"notice\":\"Redeems vault shares and sends the resulting assets to the user\"}},\"notice\":\"This contract extends VaultComposerSync but disables all redemption functionality\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/VaultComposerSyncDepositOnly.sol\":\"VaultComposerSyncDepositOnly\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@layerzerolabs/=node_modules/@layerzerolabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/\",\":forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/\",\":solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/\"]},\"sources\":{\"contracts/VaultComposerSync.sol\":{\"keccak256\":\"0xd59613f4d167f95d255f883167a89adc10807c1c47733f935a2815b52d407d5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://819bc15c533c5472850058b0a24400f8d0d5d1b2bf6de5b783d23aaddbb36949\",\"dweb:/ipfs/Qmd7FHqiUnxtKfHmdav3Yf2reh2GR2d14ypYBwcywDxJ25\"]},\"contracts/VaultComposerSyncDepositOnly.sol\":{\"keccak256\":\"0xf45296e0ee7d0b005f6e6931d0d281cd02e1e8d61ffa5637da8268fa2303451b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://490ab57870fe11ddf23f9a761e08d2f2ce3832d9466d78873a1c576eba2f54f3\",\"dweb:/ipfs/QmRnhgeYWP4j5ThKEApeo7DxkBC9ARKSuZBZExJb3pBgL8\"]},\"contracts/interfaces/IVaultComposerSync.sol\":{\"keccak256\":\"0xa4e9096b11d2c17170149f0461b8a82b70fd920bf3d1183b077026ee1ab6c9d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e546665f950330766cf5cf455001a272b1fac98c57296694ffebc32ea41f56ca\",\"dweb:/ipfs/QmSiQEk3Ly5jezLqHnKzqDLKwGmHNTrR1RLRxK161Jrc59\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol\":{\"keccak256\":\"0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf\",\"dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083\",\"dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b\",\"dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927\",\"dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d\",\"dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk\"]},\"node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6\",\"dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0\",\"dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2\",\"dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppComposer.sol\":{\"keccak256\":\"0xe5014c411acb2b59dd74ae74a1bab02cf32d94a41a548a5ab553d64aeeb55dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29dfb7bc121002fc7e7931c34eb17af0ae0f0127dcc3199511c83a58a917160d\",\"dweb:/ipfs/QmPdq1wcRRBdUP169LHCLoLuPRunN9eR71TQN42FjGpowx\"]},\"node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd\",\"dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv\"]},\"node_modules/@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":{\"keccak256\":\"0xc60c7b4374b3d89f33b8de982f463c92374a8548800c816fe776f0ec76351fb0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e2ae9efc2a93373e822b148b3a3b50e3562c8c317f2e71d73cf4a11dede9d15\",\"dweb:/ipfs/QmahCbqvqEcWLJpqE6EbHHTuSbnGWyo35ZBVqoyKv18BSF\"]},\"node_modules/@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":{\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7beda2d895ae9e15269dd261a492ce0a29b498e5bebf088ed6f2ae6a5185719e\",\"dweb:/ipfs/QmScog2tW1YVyEPLVcUVqGGc85ub46sA28nUKNzFEZcFdK\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x666c704c58d4cf404eecd6e4a898a87e25b00b45416678de914e160582c3ff17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6def3cc823ae3f155da28a241a8ff91538222053ed9d78f415758a9133e211a1\",\"dweb:/ipfs/QmSriniszojh4UP4WQqxCJhq2XsbCAULcB4qRij4EYw9Gi\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol\":{\"keccak256\":\"0x51aabf26e9682335ecf33b708cbcdf26e42bdc2f0a2e6fc09d6640219a0e00f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9423a1603d9145e142d50aa0f9a31199731733535501a7d3918d36b1deed78f2\",\"dweb:/ipfs/QmQAArNnrZVfKrbY3vGer2G6775HozDmGrsovtz5NFqGrP\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}", + "metadata": { + "compiler": { "version": "0.8.22+commit.4fc1097e" }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { "internalType": "address", "name": "_vault", "type": "address" }, + { + "internalType": "address", + "name": "_assetOFT", + "type": "address" + }, + { + "internalType": "address", + "name": "_shareOFT", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "assetERC20", + "type": "address" + }, + { + "internalType": "address", + "name": "vaultAsset", + "type": "address" + } + ], + "type": "error", + "name": "AssetTokenNotVaultAsset" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { "internalType": "uint256", "name": "assets", "type": "uint256" }, + { "internalType": "uint256", "name": "max", "type": "uint256" } + ], + "type": "error", + "name": "ERC4626ExceededMaxDeposit" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "uint256", "name": "shares", "type": "uint256" }, + { "internalType": "uint256", "name": "max", "type": "uint256" } + ], + "type": "error", + "name": "ERC4626ExceededMaxRedeem" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expectedMsgValue", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "actualMsgValue", + "type": "uint256" + } + ], + "type": "error", + "name": "InsufficientMsgValue" + }, + { "inputs": [], "type": "error", "name": "NoMsgValueExpected" }, + { + "inputs": [ + { "internalType": "address", "name": "caller", "type": "address" } + ], + "type": "error", + "name": "OnlyEndpoint" + }, + { + "inputs": [ + { "internalType": "address", "name": "caller", "type": "address" } + ], + "type": "error", + "name": "OnlySelf" + }, + { + "inputs": [ + { "internalType": "address", "name": "caller", "type": "address" } + ], + "type": "error", + "name": "OnlyValidComposeCaller" + }, + { "inputs": [], "type": "error", "name": "RedemptionDisabled" }, + { + "inputs": [], + "type": "error", + "name": "ReentrancyGuardReentrantCall" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" } + ], + "type": "error", + "name": "SafeERC20FailedOperation" + }, + { + "inputs": [ + { "internalType": "address", "name": "shareOFT", "type": "address" } + ], + "type": "error", + "name": "ShareOFTNotAdapter" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "shareERC20", + "type": "address" + }, + { "internalType": "address", "name": "vault", "type": "address" } + ], + "type": "error", + "name": "ShareTokenNotVault" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountLD", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minAmountLD", + "type": "uint256" + } + ], + "type": "error", + "name": "SlippageExceeded" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "sender", + "type": "bytes32", + "indexed": false + }, + { + "internalType": "bytes32", + "name": "recipient", + "type": "bytes32", + "indexed": false + }, + { + "internalType": "uint32", + "name": "dstEid", + "type": "uint32", + "indexed": false + }, + { + "internalType": "uint256", + "name": "assetAmt", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "shareAmt", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Deposited", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "sender", + "type": "bytes32", + "indexed": false + }, + { + "internalType": "bytes32", + "name": "recipient", + "type": "bytes32", + "indexed": false + }, + { + "internalType": "uint32", + "name": "dstEid", + "type": "uint32", + "indexed": false + }, + { + "internalType": "uint256", + "name": "shareAmt", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "assetAmt", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Redeemed", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "guid", + "type": "bytes32", + "indexed": true + } + ], + "type": "event", + "name": "Refunded", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "guid", + "type": "bytes32", + "indexed": true + } + ], + "type": "event", + "name": "Sent", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "ASSET_ERC20", + "outputs": [ + { "internalType": "address", "name": "", "type": "address" } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "ASSET_OFT", + "outputs": [ + { "internalType": "address", "name": "", "type": "address" } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "ENDPOINT", + "outputs": [ + { "internalType": "address", "name": "", "type": "address" } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "SHARE_ERC20", + "outputs": [ + { "internalType": "address", "name": "", "type": "address" } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "SHARE_OFT", + "outputs": [ + { "internalType": "address", "name": "", "type": "address" } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "VAULT", + "outputs": [ + { + "internalType": "contract IERC4626", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "VAULT_EID", + "outputs": [ + { "internalType": "uint32", "name": "", "type": "uint32" } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_assetAmount", + "type": "uint256" + }, + { + "internalType": "struct SendParam", + "name": "_sendParam", + "type": "tuple", + "components": [ + { + "internalType": "uint32", + "name": "dstEid", + "type": "uint32" + }, + { "internalType": "bytes32", "name": "to", "type": "bytes32" }, + { + "internalType": "uint256", + "name": "amountLD", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minAmountLD", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "extraOptions", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "composeMsg", + "type": "bytes" + }, + { "internalType": "bytes", "name": "oftCmd", "type": "bytes" } + ] + }, + { + "internalType": "address", + "name": "_refundAddress", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "depositAndSend" + }, + { + "inputs": [ + { "internalType": "address", "name": "_oftIn", "type": "address" }, + { + "internalType": "bytes32", + "name": "_composeFrom", + "type": "bytes32" + }, + { "internalType": "bytes", "name": "_composeMsg", "type": "bytes" }, + { "internalType": "uint256", "name": "_amount", "type": "uint256" } + ], + "stateMutability": "payable", + "type": "function", + "name": "handleCompose" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_composeSender", + "type": "address" + }, + { "internalType": "bytes32", "name": "_guid", "type": "bytes32" }, + { "internalType": "bytes", "name": "_message", "type": "bytes" }, + { "internalType": "address", "name": "", "type": "address" }, + { "internalType": "bytes", "name": "", "type": "bytes" } + ], + "stateMutability": "payable", + "type": "function", + "name": "lzCompose" + }, + { + "inputs": [ + { "internalType": "address", "name": "_from", "type": "address" }, + { + "internalType": "address", + "name": "_targetOFT", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_vaultInAmount", + "type": "uint256" + }, + { + "internalType": "struct SendParam", + "name": "_sendParam", + "type": "tuple", + "components": [ + { + "internalType": "uint32", + "name": "dstEid", + "type": "uint32" + }, + { "internalType": "bytes32", "name": "to", "type": "bytes32" }, + { + "internalType": "uint256", + "name": "amountLD", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minAmountLD", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "extraOptions", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "composeMsg", + "type": "bytes" + }, + { "internalType": "bytes", "name": "oftCmd", "type": "bytes" } + ] + } + ], + "stateMutability": "view", + "type": "function", + "name": "quoteSend", + "outputs": [ + { + "internalType": "struct MessagingFee", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "nativeFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lzTokenFee", + "type": "uint256" + } + ] + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_shareAmount", + "type": "uint256" + }, + { + "internalType": "struct SendParam", + "name": "_sendParam", + "type": "tuple", + "components": [ + { + "internalType": "uint32", + "name": "dstEid", + "type": "uint32" + }, + { "internalType": "bytes32", "name": "to", "type": "bytes32" }, + { + "internalType": "uint256", + "name": "amountLD", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minAmountLD", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "extraOptions", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "composeMsg", + "type": "bytes" + }, + { "internalType": "bytes", "name": "oftCmd", "type": "bytes" } + ] + }, + { + "internalType": "address", + "name": "_refundAddress", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "redeemAndSend" + }, + { "inputs": [], "stateMutability": "payable", "type": "receive" } + ], + "devdoc": { + "kind": "dev", + "methods": { + "constructor": { + "params": { + "_assetOFT": "The address of the asset OFT (Omnichain Fungible Token) contract", + "_shareOFT": "The address of the share OFT contract (must be an adapter)", + "_vault": "The address of the ERC4626 vault contract" + } + }, + "depositAndSend(uint256,(uint32,bytes32,uint256,uint256,bytes,bytes,bytes),address)": { + "params": { + "_assetAmount": "The number of ERC20 tokens to deposit and send", + "_refundAddress": "Address to receive excess `msg.value`", + "_sendParam": "Parameters on how to send the shares to the recipient" + } + }, + "handleCompose(address,bytes32,bytes,uint256)": { + "details": "This function can only be called by the contract itself (self-call restriction) Decodes the compose message to extract SendParam and minimum message value Routes to either deposit or redeem flow based on the input OFT token type", + "params": { + "_amount": "The amount of tokens received in the lzReceive associated with this lzTx", + "_composeFrom": "The bytes32 identifier of the compose sender", + "_composeMsg": "The encoded message containing SendParam and minMsgValue", + "_oftIn": "The OFT token whose funds have been received in the lzReceive associated with this lzTx" + } + }, + "lzCompose(address,bytes32,bytes,address,bytes)": { + "details": "This composer is designed to handle refunds to an EOA address and not a contractAny revert in handleCompose() causes a refund back to the src EXCEPT for InsufficientMsgValue", + "params": { + "_composeSender": "The OFT contract address used for refunds, must be either ASSET_OFT or SHARE_OFT", + "_guid": "LayerZero's unique tx id (created on the source tx)", + "_message": "Decomposable bytes object into [composeHeader][composeMessage]" + } + }, + "quoteSend(address,address,uint256,(uint32,bytes32,uint256,uint256,bytes,bytes,bytes))": { + "details": "Revert on slippage will be thrown by the OFT and not _assertSlippageThis function can be overridden to implement custom quoting logic", + "params": { + "_from": "The \"sender address\" used for the quote", + "_sendParam": "The parameters for the send operation", + "_targetOFT": "The OFT contract address to quote", + "_vaultInAmount": "The amount of tokens to send to the vault" + }, + "returns": { + "_0": "MessagingFee The estimated fee for the send operation" + } + }, + "redeemAndSend(uint256,(uint32,bytes32,uint256,uint256,bytes,bytes,bytes),address)": { + "params": { + "_refundAddress": "Address to receive excess payment of the LZ fees", + "_sendParam": "Parameter that defines how to send the assets", + "_shareAmount": "The number of vault shares to redeem" + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "constructor": { + "notice": "Initializes the VaultComposerSyncDepositOnly contract" + }, + "depositAndSend(uint256,(uint32,bytes32,uint256,uint256,bytes,bytes,bytes),address)": { + "notice": "Deposits ERC20 assets from the caller into the vault and sends them to the recipient" + }, + "handleCompose(address,bytes32,bytes,uint256)": { + "notice": "Handles the compose operation for OFT (Omnichain Fungible Token) transactions" + }, + "lzCompose(address,bytes32,bytes,address,bytes)": { + "notice": "Handles LayerZero compose operations for vault transactions with automatic refund functionality" + }, + "quoteSend(address,address,uint256,(uint32,bytes32,uint256,uint256,bytes,bytes,bytes))": { + "notice": "Quotes the send operation for the given OFT and SendParam" + }, + "redeemAndSend(uint256,(uint32,bytes32,uint256,uint256,bytes,bytes,bytes),address)": { + "notice": "Redeems vault shares and sends the resulting assets to the user" + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + "@layerzerolabs/=node_modules/@layerzerolabs/", + "@openzeppelin/=node_modules/@openzeppelin/", + "ds-test/=node_modules/@layerzerolabs/toolbox-foundry/lib/ds-test/", + "forge-std/=node_modules/@layerzerolabs/toolbox-foundry/lib/forge-std/", + "solidity-bytes-utils/contracts/=node_modules/@layerzerolabs/toolbox-foundry/lib/solidity-bytes-utils/" + ], + "optimizer": { "enabled": true, "runs": 20000 }, + "metadata": { "bytecodeHash": "ipfs" }, + "compilationTarget": { + "contracts/VaultComposerSyncDepositOnly.sol": "VaultComposerSyncDepositOnly" + }, + "evmVersion": "shanghai", + "libraries": {} + }, + "sources": { + "contracts/VaultComposerSync.sol": { + "keccak256": "0xd59613f4d167f95d255f883167a89adc10807c1c47733f935a2815b52d407d5c", + "urls": [ + "bzz-raw://819bc15c533c5472850058b0a24400f8d0d5d1b2bf6de5b783d23aaddbb36949", + "dweb:/ipfs/Qmd7FHqiUnxtKfHmdav3Yf2reh2GR2d14ypYBwcywDxJ25" + ], + "license": "MIT" + }, + "contracts/VaultComposerSyncDepositOnly.sol": { + "keccak256": "0xf45296e0ee7d0b005f6e6931d0d281cd02e1e8d61ffa5637da8268fa2303451b", + "urls": [ + "bzz-raw://490ab57870fe11ddf23f9a761e08d2f2ce3832d9466d78873a1c576eba2f54f3", + "dweb:/ipfs/QmRnhgeYWP4j5ThKEApeo7DxkBC9ARKSuZBZExJb3pBgL8" + ], + "license": "UNLICENSED" + }, + "contracts/interfaces/IVaultComposerSync.sol": { + "keccak256": "0xa4e9096b11d2c17170149f0461b8a82b70fd920bf3d1183b077026ee1ab6c9d4", + "urls": [ + "bzz-raw://e546665f950330766cf5cf455001a272b1fac98c57296694ffebc32ea41f56ca", + "dweb:/ipfs/QmSiQEk3Ly5jezLqHnKzqDLKwGmHNTrR1RLRxK161Jrc59" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol": { + "keccak256": "0xfaca7205d4211ee9208a7e59171e2301731f3d2a20c49b4a839821871f5fdd49", + "urls": [ + "bzz-raw://f254bc60ac26687b5320a43a556e30777b0745abf7cd64d5f4720d9b1d1f7fdf", + "dweb:/ipfs/QmRSJEZVgxaC3L2DdE6s8P5qkYfM3V5JMeseeFJJqGR4xz" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol": { + "keccak256": "0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3", + "urls": [ + "bzz-raw://bacc29fd3866af71e59cb0bdc1cf82c882a4a7f4e2652fd413c9f12649762083", + "dweb:/ipfs/QmZh2toLnrQDWaNYhS5K4NoW7Vxd2GdZx9KA77vKEDLAqs" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol": { + "keccak256": "0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc", + "urls": [ + "bzz-raw://d8ff6a8a89297fa127f86b54e0db3eba1d6a6eeb4f6398d3c84d569665ac8f1b", + "dweb:/ipfs/QmVSwhw6xFDrLRAX4RXaCM47yBaBtac4wf36DYEq6KCTvT" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol": { + "keccak256": "0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972", + "urls": [ + "bzz-raw://7e1b245d58221d16d8b5e0f01ef3e289a24a7df1ace3b94239e4d5b954ad5927", + "dweb:/ipfs/Qmappsgp7PCY9rSSNE9Cdn4BTRX591WfCSEgq2HxhA3z6S" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol": { + "keccak256": "0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901", + "urls": [ + "bzz-raw://b18b23a1643fc6636c4ad9d9023e2e6ca2d3c2a4a046482d4655bff09950598d", + "dweb:/ipfs/Qma6G5SqiovwrMPfgqTrRngK1HWW373Wkf9c6YP2NhXpPk" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol": { + "keccak256": "0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e", + "urls": [ + "bzz-raw://5173fc9143bea314b159ca5a9adb5626659ef763bc598e27de5fa46efe3291a6", + "dweb:/ipfs/QmSLFeMFPmVeGxT4sxRPW28ictjAS22M8rLeYRu9TXkA6D" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol": { + "keccak256": "0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc", + "urls": [ + "bzz-raw://606515dd9193551bd2c94ac8c304f3776fafcc70e544ebf441f334658b2fd5f0", + "dweb:/ipfs/QmZ88ey7DdZqV5taAoebabvszX5kdPMSrQCAmTteVdDtcH" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol": { + "keccak256": "0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20", + "urls": [ + "bzz-raw://d42b471418efadcc3577ef3fa9f8f504e8bed7db90c3b0c862038d8b29529eb2", + "dweb:/ipfs/QmZETDQiJN4U92fmLKo8T9ZbdDf7BNBUUvo9H7M7GqAyFU" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppComposer.sol": { + "keccak256": "0xe5014c411acb2b59dd74ae74a1bab02cf32d94a41a548a5ab553d64aeeb55dae", + "urls": [ + "bzz-raw://29dfb7bc121002fc7e7931c34eb17af0ae0f0127dcc3199511c83a58a917160d", + "dweb:/ipfs/QmPdq1wcRRBdUP169LHCLoLuPRunN9eR71TQN42FjGpowx" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol": { + "keccak256": "0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58", + "urls": [ + "bzz-raw://4a1deb2a6a3eb1fb83936c9578469142bff470295f403d7d07d955a76be3adbd", + "dweb:/ipfs/QmS9bjSfBaE4YhQ1PCQ1TknbEPbNfRXzBK9E7SaPGyiZEv" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol": { + "keccak256": "0xc60c7b4374b3d89f33b8de982f463c92374a8548800c816fe776f0ec76351fb0", + "urls": [ + "bzz-raw://9e2ae9efc2a93373e822b148b3a3b50e3562c8c317f2e71d73cf4a11dede9d15", + "dweb:/ipfs/QmahCbqvqEcWLJpqE6EbHHTuSbnGWyo35ZBVqoyKv18BSF" + ], + "license": "MIT" + }, + "node_modules/@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol": { + "keccak256": "0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5", + "urls": [ + "bzz-raw://7beda2d895ae9e15269dd261a492ce0a29b498e5bebf088ed6f2ae6a5185719e", + "dweb:/ipfs/QmScog2tW1YVyEPLVcUVqGGc85ub46sA28nUKNzFEZcFdK" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/access/Ownable.sol": { + "keccak256": "0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb", + "urls": [ + "bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6", + "dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol": { + "keccak256": "0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7", + "urls": [ + "bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b", + "dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC165.sol": { + "keccak256": "0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724", + "urls": [ + "bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a", + "dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol": { + "keccak256": "0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c", + "urls": [ + "bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba", + "dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC4626.sol": { + "keccak256": "0x666c704c58d4cf404eecd6e4a898a87e25b00b45416678de914e160582c3ff17", + "urls": [ + "bzz-raw://6def3cc823ae3f155da28a241a8ff91538222053ed9d78f415758a9133e211a1", + "dweb:/ipfs/QmSriniszojh4UP4WQqxCJhq2XsbCAULcB4qRij4EYw9Gi" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "keccak256": "0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b", + "urls": [ + "bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b", + "dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "keccak256": "0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31", + "urls": [ + "bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09", + "dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "keccak256": "0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7", + "urls": [ + "bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db", + "dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC4626.sol": { + "keccak256": "0x51aabf26e9682335ecf33b708cbcdf26e42bdc2f0a2e6fc09d6640219a0e00f6", + "urls": [ + "bzz-raw://9423a1603d9145e142d50aa0f9a31199731733535501a7d3918d36b1deed78f2", + "dweb:/ipfs/QmQAArNnrZVfKrbY3vGer2G6775HozDmGrsovtz5NFqGrP" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "keccak256": "0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330", + "urls": [ + "bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf", + "dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "keccak256": "0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310", + "urls": [ + "bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862", + "dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/Address.sol": { + "keccak256": "0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5", + "urls": [ + "bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23", + "dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/Context.sol": { + "keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2", + "urls": [ + "bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12", + "dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/Errors.sol": { + "keccak256": "0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123", + "urls": [ + "bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf", + "dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/Panic.sol": { + "keccak256": "0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a", + "urls": [ + "bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a", + "dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol": { + "keccak256": "0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3", + "urls": [ + "bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a", + "dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "keccak256": "0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8", + "urls": [ + "bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621", + "dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/math/Math.sol": { + "keccak256": "0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea", + "urls": [ + "bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d", + "dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1" + ], + "license": "MIT" + }, + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": { + "keccak256": "0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54", + "urls": [ + "bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8", + "dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "id": 1 +} diff --git a/packages/ovault-evm/contracts/VaultComposerSyncDepositOnly.sol b/packages/ovault-evm/contracts/VaultComposerSyncDepositOnly.sol new file mode 100644 index 000000000..ebba76ff8 --- /dev/null +++ b/packages/ovault-evm/contracts/VaultComposerSyncDepositOnly.sol @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.22; + +import { VaultComposerSync } from "./VaultComposerSync.sol"; + +/** + * @title VaultComposerSyncDepositOnly + * @author LayerZero Labs (@ravinagill15) + * @notice Cross-chain vault composer enabling omnichain vault operations via LayerZero. + * @notice This composer only supports Deposit actions. Redemption is disabled and will revert. + * + * @dev IMPORTANT: This contract intentionally disables redemption functionality by overriding _redeem() + * to always revert. This causes unreachable code warnings in the parent VaultComposerSync + * contract's redemption paths, which is expected and correct behavior. + */ +contract VaultComposerSyncDepositOnly is VaultComposerSync { + error RedemptionDisabled(); + + /** + * @notice Initializes the VaultComposerSyncDepositOnly contract with vault and OFT token addresses. + * @param _vault The address of the ERC4626 vault contract + * @param _assetOFT The address of the asset OFT (Omnichain Fungible Token) contract + * @param _shareOFT The address of the share OFT contract (must be an adapter) + * + * Requirements: + * - Share token must be the vault itself + * - Asset token should match the vault's underlying asset (overridable behavior) + * - Share OFT must be an adapter (approvalRequired() returns true) + */ + constructor( + address _vault, + address _assetOFT, + address _shareOFT + ) VaultComposerSync(_vault, _assetOFT, _shareOFT) {} + + /** + * @notice Redemptions are disabled for this vault. + * @dev Users should interact with the vault directly for redemption. + * When called via redeemAndSend, this will revert atomically, preventing the redemption. + * When called via lzCompose during cross-chain operations, the revert will trigger + * a refund back to the original source chain. + */ + function _redeem( + bytes32 /*_redeemer*/, + uint256 /*_shareAmount*/ + ) internal pure override returns (uint256 /*assetAmount*/) { + /// @dev Disable all redemptions + revert RedemptionDisabled(); + } +}