2 txs
3 calls
constructor
constructor(uint256 _minDelay, address[] _proposers, address[] _executors)
functions
CANCELLER_ROLE
viewfunction CANCELLER_ROLE() view returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
EXECUTOR_ROLE
viewfunction EXECUTOR_ROLE() view returns (bytes32)
getMinDelay
viewfunction getMinDelay() view returns (uint256)
getOperationState
viewfunction getOperationState(bytes32 id) view returns (uint8)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getTimestamp
viewfunction getTimestamp(bytes32 id) view returns (uint256)
hashOperation
purefunction hashOperation(address target, uint256 value, bytes data, bytes32 predecessor, bytes32 salt) pure returns (bytes32)
hashOperationBatch
purefunction hashOperationBatch(address[] targets, uint256[] values, bytes[] payloads, bytes32 predecessor, bytes32 salt) pure returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isOperation
viewfunction isOperation(bytes32 id) view returns (bool)
isOperationDone
viewfunction isOperationDone(bytes32 id) view returns (bool)
isOperationPending
viewfunction isOperationPending(bytes32 id) view returns (bool)
isOperationReady
viewfunction isOperationReady(bytes32 id) view returns (bool)
PROPOSER_ROLE
viewfunction PROPOSER_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
cancel
nonpayablefunction cancel(bytes32 id)
execute
payablefunction execute(address target, uint256 value, bytes payload, bytes32 predecessor, bytes32 salt) payable
executeBatch
payablefunction executeBatch(address[] targets, uint256[] values, bytes[] payloads, bytes32 predecessor, bytes32 salt) payable
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)
onERC721Received
nonpayablefunction onERC721Received(address, address, uint256, bytes) returns (bytes4)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
schedule
nonpayablefunction schedule(address target, uint256 value, bytes data, bytes32 predecessor, bytes32 salt, uint256 delay)
scheduleBatch
nonpayablefunction scheduleBatch(address[] targets, uint256[] values, bytes[] payloads, bytes32 predecessor, bytes32 salt, uint256 delay)
updateDelay
nonpayablefunction updateDelay(uint256 newDelay)
events
CallExecuted
event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data)
CallSalt
event CallSalt(bytes32 indexed id, bytes32 salt)
CallScheduled
event CallScheduled(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay)
Cancelled
event Cancelled(bytes32 indexed id)
MinDelayChange
event MinDelayChange(uint256 oldDuration, uint256 newDuration)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
FailedInnerCall
error FailedInnerCall()
TimelockInsufficientDelay
error TimelockInsufficientDelay(uint256 delay, uint256 minDelay)
TimelockInvalidOperationLength
error TimelockInvalidOperationLength(uint256 targets, uint256 payloads, uint256 values)
TimelockUnauthorizedCaller
error TimelockUnauthorizedCaller(address caller)
TimelockUnexecutedPredecessor
error TimelockUnexecutedPredecessor(bytes32 predecessorId)
TimelockUnexpectedOperationState
error TimelockUnexpectedOperationState(bytes32 operationId, bytes32 expectedStates)
creation bytecode
0x608060405234801561001057600080fd5b5060405161230838038061230883398101604081905261002f9161030a565b8282823361003e600030610188565b506001600160a01b0381161561005b57610059600082610188565b505b60005b83518110156100f0576100b07fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc185838151811061009d5761009d610377565b602002602001015161018860201b60201c565b506100e77ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78385838151811061009d5761009d610377565b5060010161005e565b5060005b825181101561013c576101337fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6384838151811061009d5761009d610377565b506001016100f4565b5060028490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a15050505050505061038d565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1661022a576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556101e23390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161022e565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b038116811461026157600080fd5b919050565b600082601f83011261027757600080fd5b815160206001600160401b038083111561029357610293610234565b8260051b604051601f19603f830116810181811084821117156102b8576102b8610234565b60405293845260208187018101949081019250878511156102d857600080fd5b6020870191505b848210156102ff576102f08261024a565b835291830191908301906102df565b979650505050505050565b60008060006060848603121561031f57600080fd5b835160208501519093506001600160401b038082111561033e57600080fd5b61034a87838801610266565b9350604086015191508082111561036057600080fd5b5061036d86828701610266565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b611f6c8061039c6000396000f3fe6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f146105e5578063e38335e514610605578063f23a6e6114610618578063f27a0c921461065d57600080fd5b8063bc197c8114610553578063c4d252f514610598578063d45c4435146105b857600080fd5b806391d14854116100c657806391d1485414610499578063a217fddf146104ea578063b08e51c0146104ff578063b1c5f4271461053357600080fd5b80638065657f146104255780638f2a0bb0146104455780638f61f4f51461046557600080fd5b80632ab0f5291161015957806336568abe1161013357806336568abe14610398578063584b153e146103b857806364d62353146103d85780637958004c146103f857600080fd5b80632ab0f529146103385780632f2ff15d1461035857806331d507501461037857600080fd5b8063134008d311610195578063134008d31461026057806313bc9f2014610273578063150b7a0214610293578063248a9ca31461030857600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e2366004611555565b610672565b005b3480156101f557600080fd5b506102096102043660046115ca565b610748565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b6101e761026e36600461160c565b610759565b34801561027f57600080fd5b5061020961028e366004611678565b610851565b34801561029f57600080fd5b506102d76102ae36600461179d565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610215565b34801561031457600080fd5b50610252610323366004611678565b60009081526020819052604090206001015490565b34801561034457600080fd5b50610209610353366004611678565b610877565b34801561036457600080fd5b506101e7610373366004611805565b610880565b34801561038457600080fd5b50610209610393366004611678565b6108ab565b3480156103a457600080fd5b506101e76103b3366004611805565b6108d0565b3480156103c457600080fd5b506102096103d3366004611678565b61092e565b3480156103e457600080fd5b506101e76103f3366004611678565b610974565b34801561040457600080fd5b50610418610413366004611678565b610a0d565b6040516102159190611860565b34801561043157600080fd5b5061025261044036600461160c565b610a58565b34801561045157600080fd5b506101e76104603660046118e6565b610a97565b34801561047157600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b3480156104a557600080fd5b506102096104b4366004611805565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156104f657600080fd5b50610252600081565b34801561050b57600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b34801561053f57600080fd5b5061025261054e366004611998565b610c3b565b34801561055f57600080fd5b506102d761056e366004611ac1565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b3480156105a457600080fd5b506101e76105b3366004611678565b610c80565b3480156105c457600080fd5b506102526105d3366004611678565b60009081526001602052604090205490565b3480156105f157600080fd5b506101e7610600366004611805565b610d44565b6101e7610613366004611998565b610d69565b34801561062457600080fd5b506102d7610633366004611b6b565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b34801561066957600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161069c81610f49565b60006106ac898989898989610a58565b90506106b88184610f56565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106f496959493929190611c19565b60405180910390a3831561073d57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d03878560405161073491815260200190565b60405180910390a25b505050505050505050565b60006107538261101c565b92915050565b600080527fdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d70696020527f5ba6852781629bcdcd4bdaa6de76d786f1c64b16acdac474e55bebc0ea157951547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff166107d6576107d68133611072565b60006107e6888888888888610a58565b90506107f281856110fc565b6107fe88888888611163565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516108369493929190611c64565b60405180910390a3610847816111e8565b5050505050505050565b600060025b61085f83610a0d565b600381111561087057610870611831565b1492915050565b60006003610856565b60008281526020819052604090206001015461089b81610f49565b6108a58383611214565b50505050565b6000806108b783610a0d565b60038111156108c8576108c8611831565b141592915050565b73ffffffffffffffffffffffffffffffffffffffff8116331461091f576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109298282611310565b505050565b60008061093a83610a0d565b9050600181600381111561095057610950611831565b148061096d5750600281600381111561096b5761096b611831565b145b9392505050565b333081146109cb576040517fe2850c5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b60025460408051918252602082018490527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150600255565b60008181526001602052604081205480600003610a2d5750600092915050565b60018103610a3e5750600392915050565b42811115610a4f5750600192915050565b50600292915050565b6000868686868686604051602001610a7596959493929190611c19565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610ac181610f49565b8887141580610ad05750888514155b15610b18576040517fffb03211000000000000000000000000000000000000000000000000000000008152600481018a905260248101869052604481018890526064016109c2565b6000610b2a8b8b8b8b8b8b8b8b610c3b565b9050610b368184610f56565b60005b8a811015610bec5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610b7657610b76611ca4565b9050602002016020810190610b8b9190611cd3565b8d8d86818110610b9d57610b9d611ca4565b905060200201358c8c87818110610bb657610bb6611ca4565b9050602002810190610bc89190611cee565b8c8b604051610bdc96959493929190611c19565b60405180910390a3600101610b39565b508315610c2e57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610c2591815260200190565b60405180910390a25b5050505050505050505050565b60008888888888888888604051602001610c5c989796959493929190611e25565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610caa81610f49565b610cb38261092e565b610d085781610cc260026113cb565b610ccc60016113cb565b6040517f5ead8eb500000000000000000000000000000000000000000000000000000000815260048101939093521760248201526044016109c2565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610d5f81610f49565b6108a58383611310565b600080527fdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d70696020527f5ba6852781629bcdcd4bdaa6de76d786f1c64b16acdac474e55bebc0ea157951547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff16610de657610de68133611072565b8786141580610df55750878414155b15610e3d576040517fffb032110000000000000000000000000000000000000000000000000000000081526004810189905260248101859052604481018790526064016109c2565b6000610e4f8a8a8a8a8a8a8a8a610c3b565b9050610e5b81856110fc565b60005b89811015610f335760008b8b83818110610e7a57610e7a611ca4565b9050602002016020810190610e8f9190611cd3565b905060008a8a84818110610ea557610ea5611ca4565b9050602002013590503660008a8a86818110610ec357610ec3611ca4565b9050602002810190610ed59190611cee565b91509150610ee584848484611163565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610f1c9493929190611c64565b60405180910390a350505050806001019050610e5e565b50610f3d816111e8565b50505050505050505050565b610f538133611072565b50565b610f5f826108ab565b15610faa5781610f6f60006113cb565b6040517f5ead8eb5000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016109c2565b6000610fb560025490565b905080821015610ffb576040517f5433660900000000000000000000000000000000000000000000000000000000815260048101839052602481018290526044016109c2565b6110058242611eec565b600093845260016020526040909320929092555050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e00000000000000000000000000000000000000000000000000000000014806107535750610753826113ee565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166110f8576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044016109c2565b5050565b61110582610851565b6111145781610f6f60026113cb565b8015801590611129575061112781610877565b155b156110f8576040517f90a9a618000000000000000000000000000000000000000000000000000000008152600481018290526024016109c2565b6000808573ffffffffffffffffffffffffffffffffffffffff1685858560405161118e929190611f26565b60006040518083038185875af1925050503d80600081146111cb576040519150601f19603f3d011682016040523d82523d6000602084013e6111d0565b606091505b50915091506111df8282611485565b50505050505050565b6111f181610851565b6112005780610f6f60026113cb565b600090815260016020819052604090912055565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff166113085760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a63390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610753565b506000610753565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16156113085760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610753565b60008160038111156113df576113df611831565b600160ff919091161b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061075357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610753565b60608261149a57611495826114a1565b610753565b5080610753565b8051156114b15780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461150757600080fd5b919050565b60008083601f84011261151e57600080fd5b50813567ffffffffffffffff81111561153657600080fd5b60208301915083602082850101111561154e57600080fd5b9250929050565b600080600080600080600060c0888a03121561157057600080fd5b611579886114e3565b965060208801359550604088013567ffffffffffffffff81111561159c57600080fd5b6115a88a828b0161150c565b989b979a50986060810135976080820135975060a09091013595509350505050565b6000602082840312156115dc57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461096d57600080fd5b60008060008060008060a0878903121561162557600080fd5b61162e876114e3565b955060208701359450604087013567ffffffffffffffff81111561165157600080fd5b61165d89828a0161150c565b979a9699509760608101359660809091013595509350505050565b60006020828403121561168a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561170757611707611691565b604052919050565b600082601f83011261172057600080fd5b813567ffffffffffffffff81111561173a5761173a611691565b61176b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016116c0565b81815284602083860101111561178057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156117b357600080fd5b6117bc856114e3565b93506117ca602086016114e3565b925060408501359150606085013567ffffffffffffffff8111156117ed57600080fd5b6117f98782880161170f565b91505092959194509250565b6000806040838503121561181857600080fd5b82359150611828602084016114e3565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016004831061189b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008083601f8401126118b357600080fd5b50813567ffffffffffffffff8111156118cb57600080fd5b6020830191508360208260051b850101111561154e57600080fd5b600080600080600080600080600060c08a8c03121561190457600080fd5b893567ffffffffffffffff8082111561191c57600080fd5b6119288d838e016118a1565b909b50995060208c013591508082111561194157600080fd5b61194d8d838e016118a1565b909950975060408c013591508082111561196657600080fd5b506119738c828d016118a1565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b0312156119b457600080fd5b883567ffffffffffffffff808211156119cc57600080fd5b6119d88c838d016118a1565b909a50985060208b01359150808211156119f157600080fd5b6119fd8c838d016118a1565b909850965060408b0135915080821115611a1657600080fd5b50611a238b828c016118a1565b999c989b509699959896976060870135966080013595509350505050565b600082601f830112611a5257600080fd5b8135602067ffffffffffffffff821115611a6e57611a6e611691565b8160051b611a7d8282016116c0565b9283528481018201928281019087851115611a9757600080fd5b83870192505b84831015611ab657823582529183019190830190611a9d565b979650505050505050565b600080600080600060a08688031215611ad957600080fd5b611ae2866114e3565b9450611af0602087016114e3565b9350604086013567ffffffffffffffff80821115611b0d57600080fd5b611b1989838a01611a41565b94506060880135915080821115611b2f57600080fd5b611b3b89838a01611a41565b93506080880135915080821115611b5157600080fd5b50611b5e8882890161170f565b9150509295509295909350565b600080600080600060a08688031215611b8357600080fd5b611b8c866114e3565b9450611b9a602087016114e3565b93506040860135925060608601359150608086013567ffffffffffffffff811115611bc457600080fd5b611b5e8882890161170f565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015260a060408201526000611c4f60a083018688611bd0565b60608301949094525060800152949350505050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000611c9a606083018486611bd0565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611ce557600080fd5b61096d826114e3565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611d2357600080fd5b83018035915067ffffffffffffffff821115611d3e57600080fd5b60200191503681900382131561154e57600080fd5b6000838385526020808601955060208560051b8301018460005b87811015611e18577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe085840301895281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112611dce57600080fd5b8701848101903567ffffffffffffffff811115611dea57600080fd5b803603821315611df957600080fd5b611e04858284611bd0565b9a86019a9450505090830190600101611d6d565b5090979650505050505050565b60a0808252810188905260008960c08301825b8b811015611e735773ffffffffffffffffffffffffffffffffffffffff611e5e846114e3565b16825260209283019290910190600101611e38565b5083810360208501528881527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff891115611eac57600080fd5b8860051b9150818a60208301370182810360209081016040850152611ed49082018789611d53565b60608401959095525050608001529695505050505050565b80820180821115610753577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818382376000910190815291905056fea2646970667358221220443606bab6cecad9613637a47f4789a38a2888d9edc91ea3135622a48002dd7d64736f6c634300081900330000000000000000000000000000000000000000000000000000000000015180000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000d6889f307be1b83bb355d5da7d4478fb0d2af5470000000000000000000000000000000000000000000000000000000000000001000000000000000000000000d6889f307be1b83bb355d5da7d4478fb0d2af547