{"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":"0x60a0346100f057601f61100d38819003918201601f19168301916001600160401b038311848410176100f4578084926020946040528339810103126100f057516001600160a01b03811681036100f05760805261005b33610108565b507f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd95f81815260208190527f18b789f689298f9861c64acec43fb83a444fe0a0d93f282ad4f66651300c99a5805490829055604051927fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff8380a4610e5b9081610192823960805181818160cc01526105250152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0381165f9081525f516020610fed5f395f51905f52602052604090205460ff1661018c576001600160a01b03165f8181525f516020610fed5f395f51905f5260205260408120805460ff191660011790553391907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b505f9056fe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a7146107e557508063248a9ca3146107b35780632f2ff15d1461077657806336568abe1461070c578063704e2b2d146106d257806386d1a69f146103bc57806391d1485414610366578063a217fddf1461034c578063d547741f1461030a578063f4753b38146101a6578063f74bc9d6146100f45763fc0c546a146100a0575f80fd5b346100f0575f6003193601126100f057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5f80fd5b346100f05760606003193601126100f05761010d6108d9565b335f9081527f18b789f689298f9861c64acec43fb83a444fe0a0d93f282ad4f66651300c99a4602052604090205460ff1615610156576101549060443590602435906109ed565b005b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd960245260445ffd5b346100f05760206003193601126100f05773ffffffffffffffffffffffffffffffffffffffff6101d46108d9565b165f52600160205260405f2080549067ffffffffffffffff82116102dd576040519161020660208260051b0184610918565b8083526020830180925f5260205f205f915b838310610290578486604051918291602083019060208452518091526040830191905f5b81811061024a575050500390f35b91935091602060606001926040875173ffffffffffffffffffffffffffffffffffffffff815116835284810151858401520151604082015201940191019184939261023c565b600360206001926040516102a3816108fc565b73ffffffffffffffffffffffffffffffffffffffff8654168152848601548382015260028601546040820152815201920192019190610218565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346100f05760406003193601126100f0576101546004356103296108b6565b90610347610342825f525f602052600160405f20015490565b610c25565b610d5d565b346100f0575f6003193601126100f05760206040515f8152f35b346100f05760406003193601126100f05761037f6108b6565b6004355f525f60205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346100f0575f6003193601126100f057335f52600160205260405f20805467ffffffffffffffff81116102dd57604051916103fd60208360051b0184610918565b81835260208301905f5260205f205f915b838310610685575f85815b81518110156104ce5742602061042f8385610959565b5101511115610441575b600101610419565b9161045d60019160406104548686610959565b5101519061099a565b92602061046a8285610959565b51015160406104798386610959565b51015160405191825260208201527fc35bc0b152cc4084b62942d2235605f7e5db6fc6217bc7ef532ba71acf7a58ce60403392a2335f52816020525f60026104c483604084206109d4565b5001559050610439565b82801561060157604051907fa9059cbb00000000000000000000000000000000000000000000000000000000825233600483015260248201526020816044815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19081156105f6575f916105bb575b501561055d57005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f546f6b656e207472616e7366657220756e7375636365737366756c00000000006044820152fd5b90506020813d6020116105ee575b816105d660209383610918565b810103126100f0575180151581036100f05781610555565b3d91506105c9565b6040513d5f823e3d90fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f56657374696e675661756c743a2043616e6e6f742072656c656173652030207460448201527f6f6b656e730000000000000000000000000000000000000000000000000000006064820152fd5b60036020600192604051610698816108fc565b73ffffffffffffffffffffffffffffffffffffffff865416815284860154838201526002860154604082015281520192019201919061040e565b346100f0575f6003193601126100f05760206040517f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd98152f35b346100f05760406003193601126100f0576107256108b6565b3373ffffffffffffffffffffffffffffffffffffffff82160361074e5761015490600435610d5d565b7f6697b232000000000000000000000000000000000000000000000000000000005f5260045ffd5b346100f05760406003193601126100f0576101546004356107956108b6565b906107ae610342825f525f602052600160405f20015490565b610c8b565b346100f05760206003193601126100f05760206107dd6004355f525f602052600160405f20015490565b604051908152f35b346100f05760206003193601126100f057600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036100f057817f79e3001b0000000000000000000000000000000000000000000000000000000060209314908115610859575b5015158152f35b7f7965db0b0000000000000000000000000000000000000000000000000000000081149150811561088c575b5083610852565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610885565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100f057565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100f057565b6060810190811067ffffffffffffffff8211176102dd57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102dd57604052565b805182101561096d5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b919082018092116109a757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805482101561096d575f52600360205f20910201905f90565b73ffffffffffffffffffffffffffffffffffffffff1690815f52600160205260405f2092835467ffffffffffffffff81116102dd5760405194610a3660208360051b0187610918565b81865260208601905f5260205f205f915b838310610bd857505050505f5b8451811015610ad4576020610a698287610959565b5101518314610a7a57600101610a54565b839450906002610ab8604094937f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac965f526001602052855f206109d4565b5001610ac582825461099a565b905582519182526020820152a2565b5090919250825f52600160205260405f209160405191610af3836108fc565b848352602083019282845260408101948286528054680100000000000000008110156102dd57610b28916001820181556109d4565b919091610bac577f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac9560409573ffffffffffffffffffffffffffffffffffffffff60029351167fffffffffffffffffffffffff00000000000000000000000000000000000000008554161784555160018401555191015582519182526020820152a2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b60036020600192604051610beb816108fc565b73ffffffffffffffffffffffffffffffffffffffff8654168152848601548382015260028601546040820152815201920192019190610a47565b805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f20541615610c5c5750565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f205416155f14610d5757805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905573ffffffffffffffffffffffffffffffffffffffff339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f2054165f14610d5757805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905573ffffffffffffffffffffffffffffffffffffffff339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a460019056fea2646970667358221220205398a90fc56122b3fc6b4b20f9a212830dca9ab041454261fa6389eed73d6064736f6c634300081b0033ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5","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;;;;;;;3901:22:29;218:104:2;;;;;;;;;5886:52:29;-1:-1:-1;;5886: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;6179:316:29;-1:-1:-1;;;;;218:104:2;;2232:4:29;218:104:2;;;-1:-1:-1;;;;;;;;;;;218:104:2;;;;;;;;;;-1:-1:-1;;;;;218:104:2;2232:4:29;218:104:2;;;-1:-1:-1;;;;;;;;;;;218:104:2;;;;;;;-1:-1:-1;;218:104:2;;;;;735:10:42;;218:104:2;6370:40:29;2232:4;;6370:40;6347:4;6424:11;:::o;6272:217::-;6466:12;2232:4;6466:12;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a7146107e557508063248a9ca3146107b35780632f2ff15d1461077657806336568abe1461070c578063704e2b2d146106d257806386d1a69f146103bc57806391d1485414610366578063a217fddf1461034c578063d547741f1461030a578063f4753b38146101a6578063f74bc9d6146100f45763fc0c546a146100a0575f80fd5b346100f0575f6003193601126100f057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5f80fd5b346100f05760606003193601126100f05761010d6108d9565b335f9081527f18b789f689298f9861c64acec43fb83a444fe0a0d93f282ad4f66651300c99a4602052604090205460ff1615610156576101549060443590602435906109ed565b005b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd960245260445ffd5b346100f05760206003193601126100f05773ffffffffffffffffffffffffffffffffffffffff6101d46108d9565b165f52600160205260405f2080549067ffffffffffffffff82116102dd576040519161020660208260051b0184610918565b8083526020830180925f5260205f205f915b838310610290578486604051918291602083019060208452518091526040830191905f5b81811061024a575050500390f35b91935091602060606001926040875173ffffffffffffffffffffffffffffffffffffffff815116835284810151858401520151604082015201940191019184939261023c565b600360206001926040516102a3816108fc565b73ffffffffffffffffffffffffffffffffffffffff8654168152848601548382015260028601546040820152815201920192019190610218565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346100f05760406003193601126100f0576101546004356103296108b6565b90610347610342825f525f602052600160405f20015490565b610c25565b610d5d565b346100f0575f6003193601126100f05760206040515f8152f35b346100f05760406003193601126100f05761037f6108b6565b6004355f525f60205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346100f0575f6003193601126100f057335f52600160205260405f20805467ffffffffffffffff81116102dd57604051916103fd60208360051b0184610918565b81835260208301905f5260205f205f915b838310610685575f85815b81518110156104ce5742602061042f8385610959565b5101511115610441575b600101610419565b9161045d60019160406104548686610959565b5101519061099a565b92602061046a8285610959565b51015160406104798386610959565b51015160405191825260208201527fc35bc0b152cc4084b62942d2235605f7e5db6fc6217bc7ef532ba71acf7a58ce60403392a2335f52816020525f60026104c483604084206109d4565b5001559050610439565b82801561060157604051907fa9059cbb00000000000000000000000000000000000000000000000000000000825233600483015260248201526020816044815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19081156105f6575f916105bb575b501561055d57005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f546f6b656e207472616e7366657220756e7375636365737366756c00000000006044820152fd5b90506020813d6020116105ee575b816105d660209383610918565b810103126100f0575180151581036100f05781610555565b3d91506105c9565b6040513d5f823e3d90fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f56657374696e675661756c743a2043616e6e6f742072656c656173652030207460448201527f6f6b656e730000000000000000000000000000000000000000000000000000006064820152fd5b60036020600192604051610698816108fc565b73ffffffffffffffffffffffffffffffffffffffff865416815284860154838201526002860154604082015281520192019201919061040e565b346100f0575f6003193601126100f05760206040517f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd98152f35b346100f05760406003193601126100f0576107256108b6565b3373ffffffffffffffffffffffffffffffffffffffff82160361074e5761015490600435610d5d565b7f6697b232000000000000000000000000000000000000000000000000000000005f5260045ffd5b346100f05760406003193601126100f0576101546004356107956108b6565b906107ae610342825f525f602052600160405f20015490565b610c8b565b346100f05760206003193601126100f05760206107dd6004355f525f602052600160405f20015490565b604051908152f35b346100f05760206003193601126100f057600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036100f057817f79e3001b0000000000000000000000000000000000000000000000000000000060209314908115610859575b5015158152f35b7f7965db0b0000000000000000000000000000000000000000000000000000000081149150811561088c575b5083610852565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610885565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100f057565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100f057565b6060810190811067ffffffffffffffff8211176102dd57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102dd57604052565b805182101561096d5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b919082018092116109a757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805482101561096d575f52600360205f20910201905f90565b73ffffffffffffffffffffffffffffffffffffffff1690815f52600160205260405f2092835467ffffffffffffffff81116102dd5760405194610a3660208360051b0187610918565b81865260208601905f5260205f205f915b838310610bd857505050505f5b8451811015610ad4576020610a698287610959565b5101518314610a7a57600101610a54565b839450906002610ab8604094937f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac965f526001602052855f206109d4565b5001610ac582825461099a565b905582519182526020820152a2565b5090919250825f52600160205260405f209160405191610af3836108fc565b848352602083019282845260408101948286528054680100000000000000008110156102dd57610b28916001820181556109d4565b919091610bac577f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac9560409573ffffffffffffffffffffffffffffffffffffffff60029351167fffffffffffffffffffffffff00000000000000000000000000000000000000008554161784555160018401555191015582519182526020820152a2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b60036020600192604051610beb816108fc565b73ffffffffffffffffffffffffffffffffffffffff8654168152848601548382015260028601546040820152815201920192019190610a47565b805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f20541615610c5c5750565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f205416155f14610d5757805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905573ffffffffffffffffffffffffffffffffffffffff339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f2054165f14610d5757805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905573ffffffffffffffffffffffffffffffffffffffff339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a460019056fea2646970667358221220205398a90fc56122b3fc6b4b20f9a212830dca9ab041454261fa6389eed73d6064736f6c634300081b0033","sourceMap":"218:104:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;218:104:2;;;;;;;;;2250:6:9;218:104:2;;;;;;;;;;;;;-1:-1:-1;;218:104:2;;;;;;;:::i;:::-;735:10:42;218:104:2;;;;;;;;;;;;;3519:23:29;3515:108;;2490:1;218:104:2;;;;;;2490:1:29;;:::i;:::-;218:104:2;3515:108:29;3565:47;218:104:2;3565:47:29;735:10:42;218:104:2;;522:34:9;218:104:2;;;;3565:47:29;218:104:2;;;;;-1:-1:-1;;218:104:2;;;;;;;;:::i;:::-;;;;2507:8:9;218:104:2;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2507:8:9;218:104:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2507:8:9;218:104:2;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;218:104:2;;;;;4747:26:29;218:104:2;;;;:::i;:::-;4717:18:29;2475:4;4717:18;;3901:6;218:104:2;3901:6:29;218:104:2;;3901:22:29;218:104:2;3901:6:29;218:104:2;3901:22:29;218:104:2;3810:120:29;;4717:18;2475:4;:::i;:::-;4747:26;:::i;218:104:2:-;;;;;-1:-1:-1;;218:104:2;;;;;;;;;;;;;;;;;-1:-1:-1;;218:104:2;;;;;;;:::i;:::-;;;;;;;;;;;;2954: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;;;;3225:47:9;218:104:2;3225:47:9;;735:10:42;218:104:2;3225:47:9;;218:104:2;;;;;;2250:6:9;3225:47;2250:6;218:104:2;;2250:6:9;218:104:2;3225:47:9;;;;;;;218:104:2;3225:47:9;;;2750:371;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;218:104:2;;;5421:34:29;5417:102;;5529:37;218:104:2;;;5529:37:29;:::i;5417:102::-;5478:30;218:104:2;5478:30:29;218:104:2;;5478:30:29;218:104:2;;;;;-1:-1:-1;;218:104:2;;;;;4330:25:29;218:104:2;;;;:::i;:::-;4300:18:29;2475:4;4300:18;;3901:6;218:104:2;3901:6:29;218:104:2;;3901:22:29;218:104:2;3901:6:29;218:104:2;3901:22:29;218:104:2;3810:120:29;;2475:4;4330:25;:::i;218:104:2:-;;;;;-1:-1:-1;;218:104:2;;;;;;;;;3901:6:29;218:104:2;3901:6:29;218:104:2;;3901:22:29;218:104:2;3901:6:29;218:104:2;3901:22:29;218:104:2;3810:120:29;;218:104:2;;;;;;;;;;;;-1:-1:-1;;218:104:2;;;;;;;;;;;;;;;;966:46:9;981:31;218:104:2;966:46:9;;:86;;;;;218:104:2;;;;;;;966:86:9;2688:32:29;2673:47;;;-1:-1:-1;2673:87:29;;;;966:86:9;;;;;2673:87:29;877:25:46;862:40;;;2673:87:29;;;218:104:2;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::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;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3199:103:29;218:104:2;2954:6:29;218:104:2;2954:6:29;218:104:2;;;2954:6:29;218:104:2;;735:10:42;218:104:2;-1:-1:-1;218:104:2;;;;;-1:-1:-1;218:104:2;;;3519:23:29;3515:108;;3199:103;:::o;3515:108::-;3565:47;2954:6;3565:47;735:10:42;3565:47:29;218:104:2;;;;2954:6:29;3565:47;6179:316;218:104:2;;;;;;;;;;;;-1:-1:-1;218:104:2;;;;;-1:-1:-1;218:104:2;;;6276:23:29;6272:217;218:104:2;;;;;;;;;;;;;;;-1:-1:-1;218:104:2;;;;-1:-1:-1;218:104:2;6347:4:29;218:104:2;;;;;;;;735:10:42;218:104:2;;6370:40:29;;218:104:2;6370:40:29;;6347:4;6424:11;:::o;6272:217::-;6466:12;;218:104:2;6466:12:29;:::o;6732:317::-;218:104:2;;;;;;;;;;;;-1:-1:-1;218:104:2;;;;;-1:-1:-1;218:104:2;;;6826:217:29;218:104:2;;;;;;;;;;;;;;;-1:-1:-1;218:104:2;;;;-1:-1:-1;218:104:2;;;;;;;;735:10:42;218:104:2;;6924:40:29;;218:104:2;6924:40:29;;218:104:2;6978:11:29;:::o","linkReferences":{},"immutableReferences":{"1017":[{"start":204,"length":32},{"start":1317,"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.27+commit.40a35a09\"},\"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\":10000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":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\":\"0xc1bebdee8943bd5e9ef1e0f2e63296aa1dd4171a66b9e74d0286220e891e1458\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://928cf2f0042c606f3dcb21bd8a272573f462a215cd65285d2d6b407f31e9bd67\",\"dweb:/ipfs/QmWGxjckno6sfjHPX5naPnsfsyisgy4PJDf46eLw9umfpx\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x4d9a2b261b56a1e4a37bb038151dec98b952fed16de2bdfdda27e38e2b12b530\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f724110f7aeb6151af800ab8c12e6060b29bda9e013f0ccb331eb754d6a7cbf0\",\"dweb:/ipfs/QmUcjzCZpxtUPdEThtAzE1f9LvuJiUGZxTdH9N6bHrb5Cf\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"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\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"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/","eth-gas-reporter/=node_modules/eth-gas-reporter/","forge-std/=lib/forge-std/src/","hardhat/=node_modules/hardhat/"],"optimizer":{"enabled":true,"runs":10000},"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":"0xc1bebdee8943bd5e9ef1e0f2e63296aa1dd4171a66b9e74d0286220e891e1458","urls":["bzz-raw://928cf2f0042c606f3dcb21bd8a272573f462a215cd65285d2d6b407f31e9bd67","dweb:/ipfs/QmWGxjckno6sfjHPX5naPnsfsyisgy4PJDf46eLw9umfpx"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0x4d9a2b261b56a1e4a37bb038151dec98b952fed16de2bdfdda27e38e2b12b530","urls":["bzz-raw://f724110f7aeb6151af800ab8c12e6060b29bda9e013f0ccb331eb754d6a7cbf0","dweb:/ipfs/QmUcjzCZpxtUPdEThtAzE1f9LvuJiUGZxTdH9N6bHrb5Cf"],"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/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa","urls":["bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287","dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"}},"version":1},"id":2}