0 txs
7 calls
constructor
constructor()
functions
getPermissions
viewfunction getPermissions(address user) view returns (tuple[] permissions)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
addPermission
nonpayablefunction addPermission(address user, address target, bytes4 selector, tuple[] parameters)
executeActions
nonpayablefunction executeActions(tuple[] actions)
initialize
nonpayablefunction initialize(address owner)
removePermission
nonpayablefunction removePermission(address user, address target, bytes4 selector)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
ActionExecuted
event ActionExecuted(address indexed user, (address target, bytes data, uint256 value) indexed action)
AuthorizedTargetAdded
event AuthorizedTargetAdded(address indexed user, address indexed target, bytes4 indexed selector, (uint256 index, bytes32 value)[] parameters)
AuthorizedTargetRemoved
event AuthorizedTargetRemoved(address indexed user, address indexed target, bytes4 indexed selector)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
NotAuthorized
error NotAuthorized()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1681525034801562000043575f80fd5b50620000546200005a60201b60201c565b620001c4565b5f6200006b6200015e60201b60201c565b9050805f0160089054906101000a900460ff1615620000b6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16146200015b5767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff604051620001529190620001a9565b60405180910390a15b50565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f67ffffffffffffffff82169050919050565b620001a38162000185565b82525050565b5f602082019050620001be5f83018462000198565b92915050565b608051612cbe620001eb5f395f8181610d7c01528181610dd10152610f8b0152612cbe5ff3fe60806040526004361061009b575f3560e01c80638da5cb5b116100635780638da5cb5b1461015f578063ad3cb1cc14610189578063b4662f14146101b3578063c31108b8146101db578063c4d66de814610203578063f2fde38b1461022b5761009b565b8063160a79251461009f5780633e5c1be2146100db5780634f1ef2861461010357806352d1902d1461011f578063715018a614610149575b5f80fd5b3480156100aa575f80fd5b506100c560048036038101906100c09190611d11565b610253565b6040516100d29190611f92565b60405180910390f35b3480156100e6575f80fd5b5061010160048036038101906100fc919061203d565b610444565b005b61011d600480360381019061011891906121f9565b6106fb565b005b34801561012a575f80fd5b5061013361071a565b6040516101409190612262565b60405180910390f35b348015610154575f80fd5b5061015d61074b565b005b34801561016a575f80fd5b5061017361075e565b604051610180919061228a565b60405180910390f35b348015610194575f80fd5b5061019d610793565b6040516101aa919061231d565b60405180910390f35b3480156101be575f80fd5b506101d960048036038101906101d49190612392565b6107cc565b005b3480156101e6575f80fd5b5061020160048036038101906101fc91906123dd565b6108f9565b005b34801561020e575f80fd5b5061022960048036038101906102249190611d11565b610ad6565b005b348015610236575f80fd5b50610251600480360381019061024c9190611d11565b610c57565b005b60605f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f6102a0825f01610cdb565b9050805167ffffffffffffffff8111156102bd576102bc6120d5565b5b6040519080825280602002602001820160405280156102f657816020015b6102e3611c0d565b8152602001906001900390816102db5790505b5092505f5b815181101561043c575f8061032984848151811061031c5761031b61242d565b5b6020026020010151610cfa565b9150915060405180606001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001866002015f8787815181106103915761039061242d565b5b602002602001015181526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610408578382905f5260205f2090600202016040518060400160405290815f8201548152602001600182015481525050815260200190600101906103c5565b505050508152508684815181106104225761042161242d565b5b6020026020010181905250505080806001019150506102fb565b505050919050565b61044c61075e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156104b357503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156104ea576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054f906124a4565b60405180910390fd5b5f6105638585610d18565b90506105b5815f808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01610d6590919063ffffffff16565b505f5b8383905081101561066b575f808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8381526020019081526020015f208484838181106106245761062361242d565b5b905060400201908060018154018082558091505060019003905f5260205f2090600202015f90919091909150818161065c919061264e565b505080806001019150506105b8565b50837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f783ae0056bd2b095a44d172974b1eaf3844086cbe1537fd75835d4a4a779035186866040516106eb92919061278e565b60405180910390a4505050505050565b610703610d7a565b61070c82610e60565b6107168282610e6b565b5050565b5f610723610f89565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b905090565b610753611010565b61075c5f611097565b565b5f80610768611168565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b5f5b828290508110156108f457610807338484848181106107f0576107ef61242d565b5b905060200281019061080291906127bc565b61118f565b61083d576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61086a8383838181106108535761085261242d565b5b905060200281019061086591906127bc565b611354565b82828281811061087d5761087c61242d565b5b905060200281019061088f91906127bc565b60405161089c919061295b565b60405180910390203373ffffffffffffffffffffffffffffffffffffffff167fabb50f6cdf425dfa6ca5a28efa5c464c4392321817429d5de71b3af565d0ea8660405160405180910390a380806001019150506107ce565b505050565b61090161075e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561096857503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561099f576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109aa8383610d18565b90506109fc815f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f016113e990919063ffffffff16565b505f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015f8281526020019081526020015f205f610a569190611c61565b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f9d7e2c9397d2be878c4c1f062b33039933fbcca1661c2f8a696b6fbdd79b757c60405160405180910390a450505050565b5f610adf6113fe565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff16148015610b275750825b90505f60018367ffffffffffffffff16148015610b5a57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610b68575080155b15610b9f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610bec576001855f0160086101000a81548160ff0219169083151502179055505b610bf586611425565b8315610c4f575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610c4691906129bd565b60405180910390a15b505050505050565b610c5f611010565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ccf575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610cc6919061228a565b60405180910390fd5b610cd881611097565b50565b60605f610ce9835f01611439565b905060608190508092505050919050565b5f806020835f1c901c915063ffffffff835f1c1660e01b9050915091565b5f60e0827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19165f1c901c60208473ffffffffffffffffffffffffffffffffffffffff16901b175f1b905092915050565b5f610d72835f0183611492565b905092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480610e2757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e0e6114f9565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610e5e576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b610e68611010565b50565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610ed357506040513d601f19601f82011682018060405250810190610ed091906129ea565b60015b610f1457816040517f4c9c8ce3000000000000000000000000000000000000000000000000000000008152600401610f0b919061228a565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b8114610f7a57806040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600401610f719190612262565b60405180910390fd5b610f84838361154c565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161461100e576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6110186115be565b73ffffffffffffffffffffffffffffffffffffffff1661103661075e565b73ffffffffffffffffffffffffffffffffffffffff1614611095576110596115be565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161108c919061228a565b60405180910390fd5b565b5f6110a0611168565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f805f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f61122a8480602001906111e39190612a15565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506115c5565b90505f61124b855f0160208101906112429190611d11565b5f60e01b610d18565b905061126281845f016115f490919063ffffffff16565b15611273576001935050505061134e565b5f61128f865f0160208101906112899190611d11565b84610d18565b90506112a681855f016115f490919063ffffffff16565b6112b6575f94505050505061134e565b611347846002015f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b8282101561132e578382905f5260205f2090600202016040518060400160405290815f8201548152602001600182015481525050815260200190600101906112eb565b505050508780602001906113429190612a15565b611609565b9450505050505b92915050565b6113e58180602001906113679190612a15565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050508260400135835f0160208101906113c09190611d11565b73ffffffffffffffffffffffffffffffffffffffff166116e79092919063ffffffff16565b5050565b5f6113f6835f01836117b0565b905092915050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b61142d6118ac565b611436816118ec565b50565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561148657602002820191905f5260205f20905b815481526020019060010190808311611472575b50505050509050919050565b5f61149d8383611970565b6114ef57825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f2081905550600190506114f3565b5f90505b92915050565b5f6115257f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b611990565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61155582611999565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25f815111156115b1576115ab8282611a62565b506115ba565b6115b9611ae2565b5b5050565b5f33905090565b5f7fffffffff000000000000000000000000000000000000000000000000000000006020830151169050919050565b5f611601835f0183611970565b905092915050565b5f805b84518110156116da575f602086838151811061162b5761162a61242d565b5b60200260200101515f01516116409190612aa4565b600461164c9190612ae5565b90508484905060208261165f9190612ae5565b111561166f575f925050506116e0565b5f858583906020856116819190612ae5565b9261168e93929190612b20565b906116999190612b70565b90508683815181106116ae576116ad61242d565b5b60200260200101516020015181146116cb575f93505050506116e0565b5050808060010191505061160c565b50600190505b9392505050565b60608147101561172e57306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401611725919061228a565b60405180910390fd5b5f808573ffffffffffffffffffffffffffffffffffffffff1684866040516117569190612c12565b5f6040518083038185875af1925050503d805f8114611790576040519150601f19603f3d011682016040523d82523d5f602084013e611795565b606091505b50915091506117a5868383611b1e565b925050509392505050565b5f80836001015f8481526020019081526020015f205490505f81146118a1575f6001826117dd9190612c28565b90505f6001865f01805490506117f39190612c28565b9050808214611859575f865f0182815481106118125761181161242d565b5b905f5260205f200154905080875f0184815481106118335761183261242d565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f0180548061186c5761186b612c5b565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506118a6565b5f9150505b92915050565b6118b4611bab565b6118ea576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6118f46118ac565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611964575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161195b919061228a565b60405180910390fd5b61196d81611097565b50565b5f80836001015f8481526020019081526020015f20541415905092915050565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b036119f457806040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016119eb919061228a565b60405180910390fd5b80611a207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b611990565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f808473ffffffffffffffffffffffffffffffffffffffff1684604051611a8b9190612c12565b5f60405180830381855af49150503d805f8114611ac3576040519150601f19603f3d011682016040523d82523d5f602084013e611ac8565b606091505b5091509150611ad8858383611b1e565b9250505092915050565b5f341115611b1c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b606082611b3357611b2e82611bc9565b611ba3565b5f8251148015611b5957505f8473ffffffffffffffffffffffffffffffffffffffff163b145b15611b9b57836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401611b92919061228a565b60405180910390fd5b819050611ba4565b5b9392505050565b5f611bb46113fe565b5f0160089054906101000a900460ff16905090565b5f81511115611bdb5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001606081525090565b5080545f8255600202905f5260205f2090810190611c7f9190611c82565b50565b5b80821115611ca2575f8082015f9055600182015f905550600201611c83565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ce082611cb7565b9050919050565b611cf081611cd6565b8114611cfa575f80fd5b50565b5f81359050611d0b81611ce7565b92915050565b5f60208284031215611d2657611d25611caf565b5b5f611d3384828501611cfd565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611d6e81611cd6565b82525050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611da881611d74565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b611de981611dd7565b82525050565b5f819050919050565b611e0181611def565b82525050565b604082015f820151611e1b5f850182611de0565b506020820151611e2e6020850182611df8565b50505050565b5f611e3f8383611e07565b60408301905092915050565b5f602082019050919050565b5f611e6182611dae565b611e6b8185611db8565b9350611e7683611dc8565b805f5b83811015611ea6578151611e8d8882611e34565b9750611e9883611e4b565b925050600181019050611e79565b5085935050505092915050565b5f606083015f830151611ec85f860182611d65565b506020830151611edb6020860182611d9f565b5060408301518482036040860152611ef38282611e57565b9150508091505092915050565b5f611f0b8383611eb3565b905092915050565b5f602082019050919050565b5f611f2982611d3c565b611f338185611d46565b935083602082028501611f4585611d56565b805f5b85811015611f805784840389528151611f618582611f00565b9450611f6c83611f13565b925060208a01995050600181019050611f48565b50829750879550505050505092915050565b5f6020820190508181035f830152611faa8184611f1f565b905092915050565b611fbb81611d74565b8114611fc5575f80fd5b50565b5f81359050611fd681611fb2565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611ffd57611ffc611fdc565b5b8235905067ffffffffffffffff81111561201a57612019611fe0565b5b60208301915083604082028301111561203657612035611fe4565b5b9250929050565b5f805f805f6080868803121561205657612055611caf565b5b5f61206388828901611cfd565b955050602061207488828901611cfd565b945050604061208588828901611fc8565b935050606086013567ffffffffffffffff8111156120a6576120a5611cb3565b5b6120b288828901611fe8565b92509250509295509295909350565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61210b826120c5565b810181811067ffffffffffffffff8211171561212a576121296120d5565b5b80604052505050565b5f61213c611ca6565b90506121488282612102565b919050565b5f67ffffffffffffffff821115612167576121666120d5565b5b612170826120c5565b9050602081019050919050565b828183375f83830152505050565b5f61219d6121988461214d565b612133565b9050828152602081018484840111156121b9576121b86120c1565b5b6121c484828561217d565b509392505050565b5f82601f8301126121e0576121df611fdc565b5b81356121f084826020860161218b565b91505092915050565b5f806040838503121561220f5761220e611caf565b5b5f61221c85828601611cfd565b925050602083013567ffffffffffffffff81111561223d5761223c611cb3565b5b612249858286016121cc565b9150509250929050565b61225c81611def565b82525050565b5f6020820190506122755f830184612253565b92915050565b61228481611cd6565b82525050565b5f60208201905061229d5f83018461227b565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156122da5780820151818401526020810190506122bf565b5f8484015250505050565b5f6122ef826122a3565b6122f981856122ad565b93506123098185602086016122bd565b612312816120c5565b840191505092915050565b5f6020820190508181035f83015261233581846122e5565b905092915050565b5f8083601f84011261235257612351611fdc565b5b8235905067ffffffffffffffff81111561236f5761236e611fe0565b5b60208301915083602082028301111561238b5761238a611fe4565b5b9250929050565b5f80602083850312156123a8576123a7611caf565b5b5f83013567ffffffffffffffff8111156123c5576123c4611cb3565b5b6123d18582860161233d565b92509250509250929050565b5f805f606084860312156123f4576123f3611caf565b5b5f61240186828701611cfd565b935050602061241286828701611cfd565b925050604061242386828701611fc8565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f5461726765742063616e6e6f74206265203000000000000000000000000000005f82015250565b5f61248e6012836122ad565b91506124998261245a565b602082019050919050565b5f6020820190508181035f8301526124bb81612482565b9050919050565b6124cb81611dd7565b81146124d5575f80fd5b50565b5f81356124e4816124c2565b80915050919050565b5f815f1b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612523846124ed565b9350801983169250808416831791505092915050565b5f819050919050565b5f61255c61255761255284611dd7565b612539565b611dd7565b9050919050565b5f819050919050565b61257582612542565b61258861258182612563565b83546124f8565b8255505050565b61259881611def565b81146125a2575f80fd5b50565b5f81356125b18161258f565b80915050919050565b5f6125c482611def565b9050919050565b5f815f1c9050919050565b5f6125e0826125cb565b9050919050565b6125f0826125ba565b6126036125fc826125d6565b83546124f8565b8255505050565b5f81015f83018061261a816124d8565b9050612626818461256c565b50505060018101602083018061263b816125a5565b905061264781846125e7565b5050505050565b612658828261260a565b5050565b5f82825260208201905092915050565b5f819050919050565b5f81359050612683816124c2565b92915050565b5f6126976020840184612675565b905092915050565b5f813590506126ad8161258f565b92915050565b5f6126c1602084018461269f565b905092915050565b604082016126d95f830183612689565b6126e55f850182611de0565b506126f360208301836126b3565b6127006020850182611df8565b50505050565b5f61271183836126c9565b60408301905092915050565b5f82905092915050565b5f604082019050919050565b5f61273e838561265c565b93506127498261266c565b805f5b858110156127815761275e828461271d565b6127688882612706565b975061277383612727565b92505060018101905061274c565b5085925050509392505050565b5f6020820190508181035f8301526127a7818486612733565b90509392505050565b5f80fd5b5f80fd5b5f80fd5b5f823560016060038336030381126127d7576127d66127b0565b5b80830191505092915050565b5f6127f16020840184611cfd565b905092915050565b61280281611cd6565b82525050565b5f61281383836127f9565b60208301905092915050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261284757612846612827565b5b83810192508235915060208301925067ffffffffffffffff82111561286f5761286e61281f565b5b60018202360383131561288557612884612823565b5b509250929050565b5f81905092915050565b5f6128a2838561288d565b93506128af83858461217d565b6128b8836120c5565b840190509392505050565b5f6128cf848484612897565b90509392505050565b6128e181611dd7565b82525050565b5f6128f283836128d8565b60208301905092915050565b5f80830161290e5f8401846127e3565b6129188582612808565b945050612928602084018461282b565b6129338682846128c3565b955050506129446040840184612689565b61294e85826128e7565b9450508391505092915050565b5f61296682846128fe565b915081905092915050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f6129a76129a261299d84612971565b612539565b61297a565b9050919050565b6129b78161298d565b82525050565b5f6020820190506129d05f8301846129ae565b92915050565b5f815190506129e48161258f565b92915050565b5f602082840312156129ff576129fe611caf565b5b5f612a0c848285016129d6565b91505092915050565b5f8083356001602003843603038112612a3157612a306127b0565b5b80840192508235915067ffffffffffffffff821115612a5357612a526127b4565b5b602083019250600182023603831315612a6f57612a6e6127b8565b5b509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612aae82611dd7565b9150612ab983611dd7565b9250828202612ac781611dd7565b91508282048414831517612ade57612add612a77565b5b5092915050565b5f612aef82611dd7565b9150612afa83611dd7565b9250828201905080821115612b1257612b11612a77565b5b92915050565b5f80fd5b5f80fd5b5f8085851115612b3357612b32612b18565b5b83861115612b4457612b43612b1c565b5b6001850283019150848603905094509492505050565b5f82905092915050565b5f82821b905092915050565b5f612b7b8383612b5a565b82612b868135611def565b92506020821015612bc657612bc17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802612b64565b831692505b505092915050565b5f81519050919050565b5f81905092915050565b5f612bec82612bce565b612bf68185612bd8565b9350612c068185602086016122bd565b80840191505092915050565b5f612c1d8284612be2565b915081905092915050565b5f612c3282611dd7565b9150612c3d83611dd7565b9250828203905081811115612c5557612c54612a77565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220040162e7cab983e249a16ca7892b4d3d30432cfba39ddf0514215505f8b95ff164736f6c63430008180033