{"abi":[{"type":"constructor","inputs":[{"name":"token_","type":"address","internalType":"contract IERC20"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"VAULT_CONTROLLER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"addBeneficiary","inputs":[{"name":"beneficiary_","type":"address","internalType":"address"},{"name":"releaseTime_","type":"uint256","internalType":"uint256"},{"name":"tokenAmount_","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"release","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"vestingFor","inputs":[{"name":"beneficiary_","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct IVestingVault.Vesting[]","components":[{"name":"beneficiary","type":"address","internalType":"address"},{"name":"releaseTime","type":"uint256","internalType":"uint256"},{"name":"tokenAmount","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VestingLockedIn","inputs":[{"name":"beneficiary","type":"address","indexed":true,"internalType":"address"},{"name":"releaseTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"VestingReleased","inputs":[{"name":"beneficiary","type":"address","indexed":true,"internalType":"address"},{"name":"releaseTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a0346100f057601f610d1438819003918201601f19168301916001600160401b038311848410176100f4578084926020946040528339810103126100f057516001600160a01b03811681036100f05760805261005b33610108565b507f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd95f81815260208190527f18b789f689298f9861c64acec43fb83a444fe0a0d93f282ad4f66651300c99a5805490829055604051927fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff8380a4610b629081610192823960805181818160b501526104860152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0381165f9081525f516020610cf45f395f51905f52602052604090205460ff1661018c576001600160a01b03165f8181525f516020610cf45f395f51905f5260205260408120805460ff191660011790553391907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b505f9056fe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a7146106cf57508063248a9ca31461069d5780632f2ff15d1461066057806336568abe1461061c578063704e2b2d146105e257806386d1a69f1461034957806391d1485414610301578063a217fddf146102e7578063d547741f146102a5578063f4753b3814610181578063f74bc9d6146100e85763fc0c546a146100a0575f80fd5b346100e4575f3660031901126100e4576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b346100e45760603660031901126100e457610101610752565b335f9081527f18b789f689298f9861c64acec43fb83a444fe0a0d93f282ad4f66651300c99a4602052604090205460ff161561014a57610148906044359060243590610808565b005b63e2517d3f60e01b5f52336004527f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd960245260445ffd5b346100e45760203660031901126100e4576001600160a01b036101a2610752565b165f52600160205260405f2080549067ffffffffffffffff821161029157604051916101d460208260051b0184610784565b8083526020830180925f5260205f205f915b838310610253578486604051918291602083019060208452518091526040830191905f5b818110610218575050500390f35b825180516001600160a01b0316855260208181015181870152604091820151918601919091528695506060909401939092019160010161020a565b6003602060019260405161026681610768565b848060a01b0386541681528486015483820152600286015460408201528152019201920191906101e6565b634e487b7160e01b5f52604160045260245ffd5b346100e45760403660031901126100e4576101486004356102c461073c565b906102e26102dd825f525f602052600160405f20015490565b6109ec565b610aac565b346100e4575f3660031901126100e45760206040515f8152f35b346100e45760403660031901126100e45761031a61073c565b6004355f525f60205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b346100e4575f3660031901126100e457335f52600160205260405f20805467ffffffffffffffff8111610291576040519161038a60208360051b0184610784565b81835260208301905f5260205f205f915b8383106105a4575f85815b815181101561045b574260206103bc83856107a6565b51015111156103ce575b6001016103a6565b916103ea60019160406103e186866107a6565b510151906107ce565b9260206103f782856107a6565b510151604061040683866107a6565b51015160405191825260208201527fc35bc0b152cc4084b62942d2235605f7e5db6fc6217bc7ef532ba71acf7a58ce60403392a2335f52816020525f600261045183604084206107ef565b50015590506103c6565b8280156105515760405163a9059cbb60e01b815233600482015260248101919091526020816044815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610546575f9161050b575b50156104c657005b60405162461bcd60e51b815260206004820152601b60248201527f546f6b656e207472616e7366657220756e7375636365737366756c00000000006044820152606490fd5b90506020813d60201161053e575b8161052660209383610784565b810103126100e4575180151581036100e457816104be565b3d9150610519565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152602560248201527f56657374696e675661756c743a2043616e6e6f742072656c65617365203020746044820152646f6b656e7360d81b6064820152608490fd5b600360206001926040516105b781610768565b848060a01b03865416815284860154838201526002860154604082015281520192019201919061039b565b346100e4575f3660031901126100e45760206040517f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd98152f35b346100e45760403660031901126100e45761063561073c565b336001600160a01b038216036106515761014890600435610aac565b63334bd91960e11b5f5260045ffd5b346100e45760403660031901126100e45761014860043561067f61073c565b906106986102dd825f525f602052600160405f20015490565b610a24565b346100e45760203660031901126100e45760206106c76004355f525f602052600160405f20015490565b604051908152f35b346100e45760203660031901126100e4576004359063ffffffff60e01b82168092036100e4576020916379e3001b60e01b8114908115610711575b5015158152f35b637965db0b60e01b81149150811561072b575b508361070a565b6301ffc9a760e01b14905083610724565b602435906001600160a01b03821682036100e457565b600435906001600160a01b03821682036100e457565b6060810190811067ffffffffffffffff82111761029157604052565b90601f8019910116810190811067ffffffffffffffff82111761029157604052565b80518210156107ba5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b919082018092116107db57565b634e487b7160e01b5f52601160045260245ffd5b80548210156107ba575f52600360205f20910201905f90565b60018060a01b031690815f52600160205260405f2092835467ffffffffffffffff8111610291576040519461084360208360051b0187610784565b81865260208601905f5260205f205f915b8383106109ae57505050505f5b84518110156108e157602061087682876107a6565b510151831461088757600101610861565b8394509060026108c5604094937f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac965f526001602052855f206107ef565b50016108d28282546107ce565b905582519182526020820152a2565b5090919250825f52600160205260405f20916040519161090083610768565b8483526020830192828452604081019482865280546801000000000000000081101561029157610935916001820181556107ef565b91909161099b577f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac9560409560029260018060a01b039051166bffffffffffffffffffffffff60a01b8554161784555160018401555191015582519182526020820152a2565b634e487b7160e01b5f525f60045260245ffd5b600360206001926040516109c181610768565b848060a01b038654168152848601548382015260028601546040820152815201920192019190610854565b5f8181526020818152604080832033845290915290205460ff1615610a0e5750565b63e2517d3f60e01b5f523360045260245260445ffd5b5f818152602081815260408083206001600160a01b038616845290915290205460ff16610aa6575f818152602081815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50505f90565b5f818152602081815260408083206001600160a01b038616845290915290205460ff1615610aa6575f818152602081815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a460019056fea2646970667358221220078288cad6ea5dde8166b3e4b520f7975be8914f700c96f3dc455fb53c704d7a64736f6c634300081e0033ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5","sourceMap":"218:104:2:-:0;;;;;;;;;;;;;-1:-1:-1;;218:104:2;;;;-1:-1:-1;;;;;218:104:2;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;218:104:2;;;;;;689:15:9;;714:42;745:10;714:42;:::i;:::-;-1:-1:-1;522:34:9;-1:-1:-1;218:104:2;;;;;;;3877:22:29;218:104:2;;;;;;;;;5862:52:29;-1:-1:-1;;5862:52:29;218:104:2;;;;;;689:15:9;218:104:2;;;;;;;;;;;;-1:-1:-1;218:104:2;;;;;;-1:-1:-1;218:104:2;;;;;-1:-1:-1;218:104:2;6155:316:29;-1:-1:-1;;;;;218:104:2;;2241:4:29;218:104:2;;;-1:-1:-1;;;;;;;;;;;218:104:2;;;;;;;;;;-1:-1:-1;;;;;218:104:2;2241:4:29;218:104:2;;;-1:-1:-1;;;;;;;;;;;218:104:2;;;;;;;-1:-1:-1;;218:104:2;;;;;735:10:42;;218:104:2;6346:40:29;2241:4;;6346:40;6323:4;6400:11;:::o;6248:217::-;6442:12;2241:4;6442:12;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a7146106cf57508063248a9ca31461069d5780632f2ff15d1461066057806336568abe1461061c578063704e2b2d146105e257806386d1a69f1461034957806391d1485414610301578063a217fddf146102e7578063d547741f146102a5578063f4753b3814610181578063f74bc9d6146100e85763fc0c546a146100a0575f80fd5b346100e4575f3660031901126100e4576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b346100e45760603660031901126100e457610101610752565b335f9081527f18b789f689298f9861c64acec43fb83a444fe0a0d93f282ad4f66651300c99a4602052604090205460ff161561014a57610148906044359060243590610808565b005b63e2517d3f60e01b5f52336004527f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd960245260445ffd5b346100e45760203660031901126100e4576001600160a01b036101a2610752565b165f52600160205260405f2080549067ffffffffffffffff821161029157604051916101d460208260051b0184610784565b8083526020830180925f5260205f205f915b838310610253578486604051918291602083019060208452518091526040830191905f5b818110610218575050500390f35b825180516001600160a01b0316855260208181015181870152604091820151918601919091528695506060909401939092019160010161020a565b6003602060019260405161026681610768565b848060a01b0386541681528486015483820152600286015460408201528152019201920191906101e6565b634e487b7160e01b5f52604160045260245ffd5b346100e45760403660031901126100e4576101486004356102c461073c565b906102e26102dd825f525f602052600160405f20015490565b6109ec565b610aac565b346100e4575f3660031901126100e45760206040515f8152f35b346100e45760403660031901126100e45761031a61073c565b6004355f525f60205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b346100e4575f3660031901126100e457335f52600160205260405f20805467ffffffffffffffff8111610291576040519161038a60208360051b0184610784565b81835260208301905f5260205f205f915b8383106105a4575f85815b815181101561045b574260206103bc83856107a6565b51015111156103ce575b6001016103a6565b916103ea60019160406103e186866107a6565b510151906107ce565b9260206103f782856107a6565b510151604061040683866107a6565b51015160405191825260208201527fc35bc0b152cc4084b62942d2235605f7e5db6fc6217bc7ef532ba71acf7a58ce60403392a2335f52816020525f600261045183604084206107ef565b50015590506103c6565b8280156105515760405163a9059cbb60e01b815233600482015260248101919091526020816044815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610546575f9161050b575b50156104c657005b60405162461bcd60e51b815260206004820152601b60248201527f546f6b656e207472616e7366657220756e7375636365737366756c00000000006044820152606490fd5b90506020813d60201161053e575b8161052660209383610784565b810103126100e4575180151581036100e457816104be565b3d9150610519565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152602560248201527f56657374696e675661756c743a2043616e6e6f742072656c65617365203020746044820152646f6b656e7360d81b6064820152608490fd5b600360206001926040516105b781610768565b848060a01b03865416815284860154838201526002860154604082015281520192019201919061039b565b346100e4575f3660031901126100e45760206040517f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd98152f35b346100e45760403660031901126100e45761063561073c565b336001600160a01b038216036106515761014890600435610aac565b63334bd91960e11b5f5260045ffd5b346100e45760403660031901126100e45761014860043561067f61073c565b906106986102dd825f525f602052600160405f20015490565b610a24565b346100e45760203660031901126100e45760206106c76004355f525f602052600160405f20015490565b604051908152f35b346100e45760203660031901126100e4576004359063ffffffff60e01b82168092036100e4576020916379e3001b60e01b8114908115610711575b5015158152f35b637965db0b60e01b81149150811561072b575b508361070a565b6301ffc9a760e01b14905083610724565b602435906001600160a01b03821682036100e457565b600435906001600160a01b03821682036100e457565b6060810190811067ffffffffffffffff82111761029157604052565b90601f8019910116810190811067ffffffffffffffff82111761029157604052565b80518210156107ba5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b919082018092116107db57565b634e487b7160e01b5f52601160045260245ffd5b80548210156107ba575f52600360205f20910201905f90565b60018060a01b031690815f52600160205260405f2092835467ffffffffffffffff8111610291576040519461084360208360051b0187610784565b81865260208601905f5260205f205f915b8383106109ae57505050505f5b84518110156108e157602061087682876107a6565b510151831461088757600101610861565b8394509060026108c5604094937f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac965f526001602052855f206107ef565b50016108d28282546107ce565b905582519182526020820152a2565b5090919250825f52600160205260405f20916040519161090083610768565b8483526020830192828452604081019482865280546801000000000000000081101561029157610935916001820181556107ef565b91909161099b577f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac9560409560029260018060a01b039051166bffffffffffffffffffffffff60a01b8554161784555160018401555191015582519182526020820152a2565b634e487b7160e01b5f525f60045260245ffd5b600360206001926040516109c181610768565b848060a01b038654168152848601548382015260028601546040820152815201920192019190610854565b5f8181526020818152604080832033845290915290205460ff1615610a0e5750565b63e2517d3f60e01b5f523360045260245260445ffd5b5f818152602081815260408083206001600160a01b038616845290915290205460ff16610aa6575f818152602081815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50505f90565b5f818152602081815260408083206001600160a01b038616845290915290205460ff1615610aa6575f818152602081815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a460019056fea2646970667358221220078288cad6ea5dde8166b3e4b520f7975be8914f700c96f3dc455fb53c704d7a64736f6c634300081e0033","sourceMap":"218:104:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;218:104:2;;;;;;2250:6:9;-1:-1:-1;;;;;218:104:2;;;;;;;;;;;;;;;;-1:-1:-1;;218:104:2;;;;;;:::i;:::-;735:10:42;218:104:2;;;;;;;;;;;;;3495:23:29;3491:108;;2499:1;218:104:2;;;;;;2499:1:29;;:::i;:::-;218:104:2;3491:108:29;3541:47;;;218:104:2;3541:47:29;735:10:42;218:104:2;;522:34:9;218:104:2;;;;3541:47:29;218:104:2;;;;;;-1:-1:-1;;218:104:2;;;;-1:-1:-1;;;;;218:104:2;;:::i;:::-;;;;2507:8:9;218:104:2;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;218:104:2;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;218:104:2;;;;;;;;;2507:8:9;218:104:2;;;;;;2507:8:9;218:104:2;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;218:104:2;;;;4723:26:29;218:104:2;;;;:::i;:::-;4693:18:29;2484:4;4693:18;;3877:6;218:104:2;3877:6:29;218:104:2;;3877:22:29;218:104:2;3877:6:29;218:104:2;3877:22:29;218:104:2;3786:120:29;;4693:18;2484:4;:::i;:::-;4723:26;:::i;218:104:2:-;;;;;;-1:-1:-1;;218:104:2;;;;;;;;;;;;;;;;;-1:-1:-1;;218:104:2;;;;;;:::i;:::-;;;;;;;;;;;2930:29:29;218:104:2;;;;;;-1:-1:-1;218:104:2;;;;;;-1:-1:-1;218:104:2;;;;;;;;;;;;;;;;;-1:-1:-1;;218:104:2;;;;735:10:42;218:104:2;;2681:8:9;218:104:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;2713:27:9;218:104:2;2791:3:9;218:104:2;;2770:19:9;;;;;2841:15;218:104:2;2814:11:9;;;;:::i;:::-;;:23;218:104:2;2814:42:9;;2810:301;;2791:3;2681:8;218:104:2;2755:13:9;;2810:301;2912:11;2894:41;2681:8;2912:11;218:104:2;2912:11:9;;;;:::i;:::-;;:23;218:104:2;2894:41:9;;:::i;:::-;2988:11;218:104:2;2988:11:9;;;;:::i;:::-;;:23;218:104:2;;3013:11:9;;;;:::i;:::-;;:23;218:104:2;;;;;;;;;;2958:79:9;218:104:2;735:10:42;2958:79:9;;735:10:42;218:104:2;;;;;;;3055:25:9;218:104:2;;;;3055:25:9;:::i;:::-;:37;;218:104:2;2810:301:9;;;;2770:19;;3138;;218:104:2;;;;-1:-1:-1;;;3225:47:9;;735:10:42;218:104:2;3225:47:9;;218:104:2;;;;;;;;;;3225:47:9;218:104:2;-1:-1:-1;2250:6:9;-1:-1:-1;;;;;218:104:2;3225:47:9;;;;;;;218:104:2;3225:47:9;;;2750:371;218:104:2;;;;;;;;-1:-1:-1;;;218:104:2;;;;;;;;;;;;;3225:47:9;218:104:2;;;;;;3225:47:9;;;218:104:2;3225:47:9;;218:104:2;3225:47:9;;;;;;218:104:2;3225:47:9;;;:::i;:::-;;;218:104:2;;;;;;;;;;;;3225:47:9;;;;;;-1:-1:-1;3225:47:9;;;218:104:2;;;;;;;;;;;;-1:-1:-1;;;218:104:2;;;;;;;;;;;;;;;;;-1:-1:-1;;;218:104:2;;;;;;;;;;2681:8:9;218:104:2;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;218:104:2;;;;;;;522:34:9;218:104:2;;;;;;;;;-1:-1:-1;;218:104:2;;;;;;:::i;:::-;735:10:42;-1:-1:-1;;;;;218:104:2;;5397:34:29;5393:102;;5505:37;218:104:2;;;5505:37:29;:::i;5393:102::-;5454:30;;;218:104:2;5454:30:29;218:104:2;;5454:30:29;218:104:2;;;;;;-1:-1:-1;;218:104:2;;;;4306:25:29;218:104:2;;;;:::i;:::-;4276:18:29;2484:4;4276:18;;3877:6;218:104:2;3877:6:29;218:104:2;;3877:22:29;218:104:2;3877:6:29;218:104:2;3877:22:29;218:104:2;3786:120:29;;2484:4;4306:25;:::i;218:104:2:-;;;;;;-1:-1:-1;;218:104:2;;;;;;;;3877:6:29;218:104:2;3877:6:29;218:104:2;;3877:22:29;218:104:2;3877:6:29;218:104:2;3877:22:29;218:104:2;3786:120:29;;218:104:2;;;;;;;;;;;;;-1:-1:-1;;218:104:2;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;966:46:9;;;:86;;;;218:104:2;;;;;;;966:86:9;-1:-1:-1;;;2649:47:29;;;-1:-1:-1;2649:87:29;;;;966:86:9;;;;;2649:87:29;-1:-1:-1;;;829:40:46;;-1:-1:-1;2649:87:29;;;218:104:2;;;;-1:-1:-1;;;;;218:104:2;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;218:104:2;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;218:104:2;;;-1:-1:-1;218:104:2;;;;;-1:-1:-1;218:104:2;:::o;1347:755:9:-;218:104:2;;;;;;;;-1:-1:-1;218:104:2;1581:8:9;218:104:2;;;-1:-1:-1;218:104:2;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;218:104:2;;-1:-1:-1;218:104:2;-1:-1:-1;218:104:2;;;;;;;1619:13:9;;;;-1:-1:-1;1655:3:9;218:104:2;;1634:19:9;;;;;218:104:2;1694:11:9;;;;:::i;:::-;;:23;218:104:2;1678:39:9;;1674:235;;1581:8;218:104:2;1619:13:9;;1674:235;218:104:2;;;;;1737:25:9;218:104:2;;;1813:57:9;218:104:2;-1:-1:-1;218:104:2;1581:8:9;218:104:2;;;-1:-1:-1;218:104:2;1737:25:9;:::i;:::-;:37;;:53;218:104:2;;;1737:53:9;:::i;:::-;218:104:2;;;;;;;;;;;1813:57:9;1888:7::o;1634:19::-;;;;;;218:104:2;-1:-1:-1;218:104:2;1581:8:9;218:104:2;;;-1:-1:-1;218:104:2;;;;;;;;:::i;:::-;;;;;1957:49:9;;218:104:2;;;;;1957:49:9;;218:104:2;;;;;;;;;;;;;;1581:8:9;218:104:2;;;;;:::i;:::-;;;;;;2022:57:9;218:104:2;;;;;;;;;;;;;;;;;;;;;;;1581:8:9;218:104:2;;;;;;;;;;;;;;;;2022:57:9;1347:755::o;218:104:2:-;;;;-1:-1:-1;218:104:2;-1:-1:-1;218:104:2;;;-1:-1:-1;218:104:2;;;;1581:8:9;218:104:2;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3175:103:29;2930:6;218:104:2;;;;;;;;;;;735:10:42;218:104:2;;;;;;;;;;3495:23:29;3491:108;;3175:103;:::o;3491:108::-;3541:47;;;2930:6;3541:47;735:10:42;3541:47:29;218:104:2;;;;2930:6:29;3541:47;6155:316;218:104:2;;;;;;;;;;;;-1:-1:-1;;;;;218:104:2;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;218:104:2;;;;;;;;;;;;;;;-1:-1:-1;;218:104:2;;;;;735:10:42;;218:104:2;;6346:40:29;;218:104:2;6346:40:29;6323:4;6400:11;:::o;6248:217::-;6442:12;;218:104:2;6442:12:29;:::o;6708:317::-;218:104:2;;;;;;;;;;;;-1:-1:-1;;;;;218:104:2;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;218:104:2;;;;;;;;;;;;;;;-1:-1:-1;;218:104:2;;;735:10:42;;218:104:2;;6900:40:29;;218:104:2;6900:40:29;218:104:2;6954:11:29;:::o","linkReferences":{},"immutableReferences":{"1017":[{"start":181,"length":32},{"start":1158,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","VAULT_CONTROLLER_ROLE()":"704e2b2d","addBeneficiary(address,uint256,uint256)":"f74bc9d6","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","release()":"86d1a69f","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a","vestingFor(address)":"f4753b38"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"releaseTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"VestingLockedIn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"releaseTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"VestingReleased\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_CONTROLLER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"releaseTime_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount_\",\"type\":\"uint256\"}],\"name\":\"addBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"release\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary_\",\"type\":\"address\"}],\"name\":\"vestingFor\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"releaseTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct IVestingVault.Vesting[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"addBeneficiary(address,uint256,uint256)\":{\"details\":\"function to create a vesting for the beneficiary\",\"params\":{\"beneficiary_\":\"Beneficiary of tokens after they are released\",\"releaseTime_\":\"Timestamp when token release is enabled\",\"tokenAmount_\":\"Amount of tokens to release\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"release()\":{\"details\":\"releases the tokens of the msg sender\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"token()\":{\"returns\":{\"_0\":\"the address of the token being stored.\"}},\"vestingFor(address)\":{\"params\":{\"beneficiary_\":\"the address for which the vesting is returned\"},\"returns\":{\"_0\":\"the vesting for an address\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ExampleVestingVault.sol\":\"ExampleVestingVault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/ExampleVestingVault.sol\":{\"keccak256\":\"0x8e854a57dc72ca04afecbf3a9125885db5073591164394cbaa8668c47679a11b\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://50afe310a0b2430a150fda1f5eaf551e17ab7421750d6f5e187fdb15147b542d\",\"dweb:/ipfs/QmNQsmdzbN1bkJS8ecdgNUYmHJqBYWhKm16WmRbJJpR9Dp\"]},\"contracts/library/IVestingVault.sol\":{\"keccak256\":\"0xf3f074546fdb24b8d2889ffd7947b5134669f1eb47c4baf30abf4663f6d320d7\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://e13d929241510074238c4d3797aeaa9a8f3bea58c9d8beab73c2a39583dcf56e\",\"dweb:/ipfs/QmNX2cSo1uxxuviE5SL8wUgMgC2DBrDEyZa8KVd9DipUAU\"]},\"contracts/library/VestingVault.sol\":{\"keccak256\":\"0x0386c58188ed9a89f544a617e7b628210935857895b07549854a19e140a1b21c\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://c2d8275e0105f4a6c134acb7057706b00c437e3b5e72185479024343346ab1ee\",\"dweb:/ipfs/QmegrKCswosuTqn2uizDBKmrMFboBN9ATcXPVcyLzbUpdR\"]},\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x1a6b4f6b7798ab80929d491b89d5427a9b3338c0fd1acd0ba325f69c6f1646af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7bb7f346c12a14dc622bc105ce3c47202fbc89f4b153a28a63bb68193297330c\",\"dweb:/ipfs/QmagwF8P3bUBXwdo159ueEnY9dLSvEWwK24kk2op58egwG\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address","indexed":true},{"internalType":"uint256","name":"releaseTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"tokenAmount","type":"uint256","indexed":false}],"type":"event","name":"VestingLockedIn","anonymous":false},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address","indexed":true},{"internalType":"uint256","name":"releaseTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"tokenAmount","type":"uint256","indexed":false}],"type":"event","name":"VestingReleased","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_CONTROLLER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"beneficiary_","type":"address"},{"internalType":"uint256","name":"releaseTime_","type":"uint256"},{"internalType":"uint256","name":"tokenAmount_","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addBeneficiary"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"release"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"beneficiary_","type":"address"}],"stateMutability":"view","type":"function","name":"vestingFor","outputs":[{"internalType":"struct IVestingVault.Vesting[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"releaseTime","type":"uint256"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}]}]}],"devdoc":{"kind":"dev","methods":{"addBeneficiary(address,uint256,uint256)":{"details":"function to create a vesting for the beneficiary","params":{"beneficiary_":"Beneficiary of tokens after they are released","releaseTime_":"Timestamp when token release is enabled","tokenAmount_":"Amount of tokens to release"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"release()":{"details":"releases the tokens of the msg sender"},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"token()":{"returns":{"_0":"the address of the token being stored."}},"vestingFor(address)":{"params":{"beneficiary_":"the address for which the vesting is returned"},"returns":{"_0":"the vesting for an address"}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","forge-std/=lib/forge-std/src/","hardhat/=node_modules/hardhat/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/ExampleVestingVault.sol":"ExampleVestingVault"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"contracts/ExampleVestingVault.sol":{"keccak256":"0x8e854a57dc72ca04afecbf3a9125885db5073591164394cbaa8668c47679a11b","urls":["bzz-raw://50afe310a0b2430a150fda1f5eaf551e17ab7421750d6f5e187fdb15147b542d","dweb:/ipfs/QmNQsmdzbN1bkJS8ecdgNUYmHJqBYWhKm16WmRbJJpR9Dp"],"license":"FSL-1.1-MIT"},"contracts/library/IVestingVault.sol":{"keccak256":"0xf3f074546fdb24b8d2889ffd7947b5134669f1eb47c4baf30abf4663f6d320d7","urls":["bzz-raw://e13d929241510074238c4d3797aeaa9a8f3bea58c9d8beab73c2a39583dcf56e","dweb:/ipfs/QmNX2cSo1uxxuviE5SL8wUgMgC2DBrDEyZa8KVd9DipUAU"],"license":"FSL-1.1-MIT"},"contracts/library/VestingVault.sol":{"keccak256":"0x0386c58188ed9a89f544a617e7b628210935857895b07549854a19e140a1b21c","urls":["bzz-raw://c2d8275e0105f4a6c134acb7057706b00c437e3b5e72185479024343346ab1ee","dweb:/ipfs/QmegrKCswosuTqn2uizDBKmrMFboBN9ATcXPVcyLzbUpdR"],"license":"FSL-1.1-MIT"},"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0x1a6b4f6b7798ab80929d491b89d5427a9b3338c0fd1acd0ba325f69c6f1646af","urls":["bzz-raw://7bb7f346c12a14dc622bc105ce3c47202fbc89f4b153a28a63bb68193297330c","dweb:/ipfs/QmagwF8P3bUBXwdo159ueEnY9dLSvEWwK24kk2op58egwG"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c","urls":["bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d","dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"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/introspection/ERC165.sol":{"keccak256":"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e","urls":["bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377","dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"}},"version":1},"id":2}