0 txs
0 calls
constructor
constructor()
functions
documentOwners
viewfunction documentOwners(bytes32) view returns (address)
documents
viewfunction documents(bytes32, address) view returns (bytes32 hash, string uri, address owner, uint256 timestamp, bool isActive, bool isTemplate, bytes32 templateHash, uint256 requiredSignatures, bool isSequential, uint8 status, uint256 expirationTime)
getDocumentInfo
viewfunction getDocumentInfo(bytes32 hash) view returns (bytes32 docHash, string uri, address owner, uint256 timestamp, bool isActive, bool isTemplate, bytes32 templateHash, uint256 requiredSignatures, bool isSequential, uint8 status, uint256 expirationTime)
getDocumentsByOwner
viewfunction getDocumentsByOwner(address owner) view returns (bytes32[])
getDocumentSigners
viewfunction getDocumentSigners(bytes32 hash) view returns (address[])
getPendingSignatures
viewfunction getPendingSignatures(address signer) view returns (bytes32[])
getSignerDetails
viewfunction getSignerDetails(bytes32 hash, address signerAddress) view returns (address account, bool hasSigned, uint256 signedAt, bool isRequired, uint256 signatureOrder)
getSignerDetailsByOwner
viewfunction getSignerDetailsByOwner(bytes32 hash, address owner, address signerAddress) view returns (address account, bool hasSigned, uint256 signedAt, bool isRequired, uint256 signatureOrder)
ownerDocuments
viewfunction ownerDocuments(address, uint256) view returns (bytes32)
pendingSignatures
viewfunction pendingSignatures(address, uint256) view returns (bytes32)
addSigner
nonpayablefunction addSigner(bytes32 documentHash, address signerAddress, uint256 signatureOrder, bool isRequired)
deactivateDocument
nonpayablefunction deactivateDocument(bytes32 hash)
reactivateDocument
nonpayablefunction reactivateDocument(bytes32 hash)
registerDocument
nonpayablefunction registerDocument(bytes32 hash, string uri, bool isTemplate, bytes32 templateHash) returns (bytes32)
registerInstanceAndSign
nonpayablefunction registerInstanceAndSign(bytes32 templateHash, string uri) returns (bytes32 instanceHash)
rejectDocument
nonpayablefunction rejectDocument(bytes32 documentHash)
setDocumentExpiration
nonpayablefunction setDocumentExpiration(bytes32 documentHash, uint256 expirationTime)
sign
nonpayablefunction sign(bytes32 documentHash, address owner)
updateDocumentURI
nonpayablefunction updateDocumentURI(bytes32 hash, string newUri)
events
DocumentDeactivated
event DocumentDeactivated(bytes32 indexed hash)
DocumentReactivated
event DocumentReactivated(bytes32 indexed hash)
DocumentRegistered
event DocumentRegistered(bytes32 indexed hash, string uri, address indexed owner, bool isTemplate, bytes32 templateHash)
DocumentRegistryCreated
event DocumentRegistryCreated(address indexed registry)
DocumentRejected
event DocumentRejected(bytes32 indexed documentHash, address indexed signer, uint256 timestamp)
DocumentSigned
event DocumentSigned(bytes32 indexed documentHash, address indexed signer, uint256 timestamp)
DocumentStatusChanged
event DocumentStatusChanged(bytes32 indexed hash, uint8 previousStatus, uint8 newStatus)
DocumentURIUpdated
event DocumentURIUpdated(bytes32 indexed hash, string oldUri, string newUri)
SignerAdded
event SignerAdded(bytes32 indexed documentHash, address indexed signer, uint256 signatureOrder, bool isRequired)
errors
No errors.
creation bytecode
0x60808060405234603a57307f77bcb585463bb2db6ecc12c21ff5968eba0676efef045f6652e5223fee168fb75f80a2612997908161003f8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063090b0a3014611be357806317097fe1146111705780631b3596d9146110955780632afc08291461106f57806331d19f6514611026578063335039d614610ed157806352e332d414610e9f5780637ac564fa14610e475780637ddfc7d414610dd55780637f0d2a3314610cef5780638890d40714610c7157806394b5d62e14610a64578063b12cd802146109c8578063b55555af14610892578063bbdc994c146107a8578063c579cc8014610568578063daac8840146104cc578063e5baf101146103fe5763e8cd0ebd146100ea575f80fd5b346103fa5760803660031901126103fa5760043560243567ffffffffffffffff81116103fa5761011e903690600401611d71565b9190604435908115158092036103fa5760643561013c841515611f77565b6101478515156125be565b5f848152602081815260408083203384529091529020600301546103a7575f848152602081815260408083203384529091529020848155916001830167ffffffffffffffff87116103935761019c8154611e61565b601f811161034e575b50916020969186935f601f85116001146102d257600a5f5160206129425f395f51905f52969761028e9493875f9485916102c7575b508860011b9085198a60031b1c19161790555b6002810180546001600160a01b0319163390811790915542600383015560048201805461ffff1990811660088e811b61ff0016919091176001908117909355600585018a90558401869055600984018054909116905592909101929092555f9182528a5260409020610260908790612536565b5f86815260038a5260409020546001600160a01b0316156102a6575b60405193606085526060850191612600565b948783015260408201528033940390a3604051908152f35b5f86815260038a526040902080546001600160a01b0319163317905561027c565b90508501355f6101da565b9590601f198516815f528a5f20905f5b8181106103345750925f92600a925f5160206129425f395f51905f52999a8961028e98971061031b575b5050600188811b0190556101ed565b851960f88b60031b161c19908701351690555f8061030c565b898601358355988c01988b98506001909201918c016102e2565b815f5260205f20601f890160051c81019160208a10610389575b601f0160051c01905b81811061037e57506101a5565b5f8155600101610371565b9091508190610368565b634e487b7160e01b5f52604160045260245ffd5b60405162461bcd60e51b815260206004820152602560248201527f446f63756d656e7420616c72656164792072656769737465726564206279207360448201526432b73232b960d91b6064820152608490fd5b5f80fd5b346103fa5760403660031901126103fa57600760043561041c611dd3565b610427821515611f77565b815f525f60205260405f2060018060a01b0333165f526020526104656104608260405f209461045b60038701541515611fbb565b612880565b612572565b6001600160a01b039081165f9081529190920160209081526040918290208054600182015460028301546003909301548551968316875260ff60a093841c8116151595880195909552948601529116151560608401526080830191909152819081015b0390f35b346103fa5760403660031901126103fa576004356104eb811515611f77565b5f9081526020818152604080832033845290915290206003810154610511901515611fbb565b600281015461052a906001600160a01b03163314612007565b60ff600982015460081c166004811015610554576105489015612053565b600a6024359101555f80f35b634e487b7160e01b5f52602160045260245ffd5b346103fa5761057636611d9f565b90610582831515611f77565b61058d8215156125be565b5f838152602081815260408083203384529091529020600381015415610761575b6002810154600191906105cb906001600160a01b03163314612007565b6105db60ff60048301541661200e565b01916105e683611ed7565b9267ffffffffffffffff8211610393576106008154611e61565b601f811161071c575b505f601f831160011461068f57928261067f927f4583aefa794cfa219d7f14fc4cbc3b1e7921ca40bec284e87f4986199c52f3ed9694610671965f91610684575b508260011b905f198460031b1c19161790555b604051948594604086526040860190611cd2565b918483036020860152612600565b0390a2005b90508301358961064a565b601f19831690825f5260205f20915f5b818110610704575092610671959285927f4583aefa794cfa219d7f14fc4cbc3b1e7921ca40bec284e87f4986199c52f3ed989661067f96106106eb575b5050600182811b01905561065d565b8401355f19600385901b60f8161c1916905588806106dc565b9192602060018192868a01358155019401920161069f565b815f5260205f20601f840160051c81019160208510610757575b601f0160051c01905b81811061074c5750610609565b5f815560010161073f565b9091508190610736565b505f838152600360205260409020546001600160a01b0316610784811515611fbb565b5f848152602081815260408083206001600160a01b039094168352929052206105ae565b346103fa5760603660031901126103fa576004356107c4611dd3565b604435916001600160a01b03831683036103fa576107e3811515611f77565b5f525f60205260405f209060018060a01b03165f52602052600760405f2061081060038201541515611fbb565b019060018060a01b0381165f528160205261083960405f2060018060a01b039054161515612572565b6001600160a01b039081165f90815260209283526040908190208054600182015460028301546003909301548451958316865260ff60a093841c8116151597870197909752938501529316151560608301526080820152f35b346103fa5760203660031901126103fa576004356108b1811515611f77565b5f81815260208181526040808320338452909152902060038101541561096b576002810154600491906108ee906001600160a01b03163314612007565b01805460ff8116156109265760ff191690557fa4af2e42edd850cac3b007262a20182363ab0088b7418163cb38cc8a4ed8d6105f80a2005b60405162461bcd60e51b815260206004820152601c60248201527f446f63756d656e7420616c7265616479206465616374697661746564000000006044820152606490fd5b505f9081526003602052604090205461098e906001600160a01b03161515611fbb565b60405162461bcd60e51b81526020600482015260126024820152712737ba103237b1bab6b2b73a1037bbb732b960711b6044820152606490fd5b346103fa5760403660031901126103fa576109e1611dd3565b6004355f525f60205260405f209060018060a01b03165f5260205260405f208054906104c8610a1260018301611ed7565b9260018060a01b036002840154169260038101549460048201546005830154600884015491600a600986015495015495604051998a9960ff808960081c1698169660ff808660081c169516938c611d03565b346103fa5760803660031901126103fa57600435610a80611dd3565b60643591906044358315158085036103fa57610a9d841515611f77565b6001600160a01b03831694610ab386151561246d565b845f525f60205260405f2060018060a01b0333165f5260205260405f2090610ae060038301541515611fbb565b6002820154610af9906001600160a01b03163314612007565b610b0960ff60048401541661200e565b600982019460ff865460081c1690600482101561055457610b2d610b499215612053565b610b40610b3a828a612880565b156124b2565b600684016124f5565b604051610b5581611e99565b8781525f6020808301828152604080850184815260608601898152608087018b81528e875260078a01909552919094209451855492516001600160a81b03199093166001600160a01b03919091161791151560a01b60ff60a01b16919091178455600392610bdd91905b516001860155511515600285019060ff801983541691151516179055565b51910155610c36575b505f5160206129225f395f51905f529282610c25575b50845f526002602052610c128460405f20612536565b60408051928352602083019190915290a3005b805460ff1916600117905585610bfc565b60080192835460018101809111610c5d575f5160206129225f395f51905f52945592610be6565b634e487b7160e01b5f52601160045260245ffd5b346103fa5760203660031901126103fa576001600160a01b03610c92611de9565b165f52600260205260405f206040519081602082549182815201915f5260205f20905f5b818110610cd9576104c885610ccd81870382611eb5565b60405191829182611e28565b8254845260209093019260019283019201610cb6565b346103fa5760203660031901126103fa57600435610d0e811515611f77565b5f525f60205260405f2060018060a01b0333165f52602052600660405f20610d3b60038201541515611fbb565b01604051806020835491828152019081935f5260205f20905f5b818110610db65750505081610d6b910382611eb5565b604051918291602083019060208452518091526040830191905f5b818110610d94575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610d86565b82546001600160a01b0316845260209093019260019283019201610d55565b346103fa5760203660031901126103fa576001600160a01b03610df6611de9565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b818110610e31576104c885610ccd81870382611eb5565b8254845260209093019260019283019201610e1a565b346103fa5760403660031901126103fa57610e60611de9565b6001600160a01b03165f908152600260205260409020805460243591908210156103fa57602091610e9091611dff565b90549060031b1c604051908152f35b346103fa5760203660031901126103fa576004355f526003602052602060018060a01b0360405f205416604051908152f35b346103fa5760203660031901126103fa57600435610ef0811515611f77565b5f8181526020818152604080832033845290915290206003810154610f16901515611fbb565b600981019060ff825460081c16600481101561055457610f369015612053565b610f403384612880565b15610fe157335f908152600791909101602052604090206002015460ff16610f9d575b50610f6e3382612663565b604051904282527f726883d9f766d2ae33480d39e3e15d92e5a977f37836734064a03babe587646660203393a3005b61020061ff0019825416179055807fbe4428b019e1c015536d061f2bd73b8be375833486921a70f9f33fbb56e11db7604080515f815260026020820152a281610f63565b60405162461bcd60e51b815260206004820152601860248201527f4e6f7420617574686f72697a656420746f2072656a65637400000000000000006044820152606490fd5b346103fa5760403660031901126103fa5761103f611de9565b6001600160a01b03165f908152600160205260409020805460243591908210156103fa57602091610e9091611dff565b346103fa5760403660031901126103fa5761109361108b611dd3565b6004356120dc565b005b346103fa5760203660031901126103fa576004356110b4811515611f77565b5f81815260208181526040808320338452909152902060038101541561096b576002810154600491906110f1906001600160a01b03163314612007565b01805460ff811661112b5760ff191660011790557f131b7482ec56388fa6b12712740697328124dcdf041d6480722e3a223b2982fe5f80a2005b60405162461bcd60e51b815260206004820152601a60248201527f446f63756d656e7420697320616c7265616479206163746976650000000000006044820152606490fd5b346103fa5761117e36611d9f565b919060405160208101908382523360601b6040820152426054820152605481526111a9607482611eb5565b51902092825f52600360205260018060a01b0360405f205416928315611ba9575f818152602081815260408083206001600160a01b038816845290915290206003015415611b65575f818152602081815260408083206001600160a01b038816845290915290206004015460ff1615611b27575f818152602081815260408083206001600160a01b038816845290915290206004015460081c60ff1615611ae2578415159261125784611f77565b6112628315156125be565b5f868152602081815260408083206001600160a01b0389168452909152902060030154611a9157855f525f60205260405f2060018060a01b0386165f5260205260405f2090868255600182019367ffffffffffffffff811161039357869388936112cc8754611e61565b601f8111611a36575b505f601f84116001146119b9575f915f5160206129425f395f51905f5296979885600a9385916119ae575b508660011b9085198860031b1c19161790555b6002810160018060a01b038a166bffffffffffffffffffffffff60a01b82541617905542600382015560048101600161ffff198254161790558360058201558260088201556009810160ff19815416815561ff001981541690550155855f5260016020526113848560405f20612536565b5f858152600360205260409020546001600160a01b031615611983575b6113b8604051938493606085526060850191612600565b905f602084015260408301520390a36113d081611f77565b6113db33151561246d565b5f838152600360205260409020546001600160a01b03166113fd811515611fbb565b835f525f60205260405f209060018060a01b03165f5260205260405f2061142960038201541515611fbb565b61143960ff60048301541661200e565b600981019060ff825460081c169060048210156105545761145c60089215612620565b611469610b3a3388612880565b61147633600683016124f5565b60405161148281611e99565b338082525f60208084018281526040808601848152600160608801818152608089019182529686526007890190945293209451855491516001600160a81b03199092166001600160a01b03919091161790151560a01b60ff60a01b1617845560039290916114f09190610bbf565b519101550180549060018201809211610c5d5755600160ff19825416179055335f5260026020526115248360405f20612536565b6040516001815260016020820152835f5160206129225f395f51905f5260403393a361154f81611f77565b611559600161246d565b5f838152600360205260409020546001600160a01b031661157b811515611fbb565b835f525f60205260405f209060018060a01b03165f5260205260405f20916115a860038401541515611fbb565b6115b860ff60048501541661200e565b600983019260ff845460081c16906004821015610554576115db60089215612620565b6115e8610b3a8488612880565b6115f583600683016124f5565b60405161160181611e99565b8381525f602080830182815260408085018481526001606087019081526002608088019081526001600160a01b03808c16885260078a019096529290952095518654935160ff60a01b90151560a01b1694166001600160a81b03199093169290921792909217845560039261167591610bbf565b519101550192835460018101809111610c5d576116d19455600160ff19825416179055805f5260026020526116ad8460405f20612536565b835f5160206129225f395f51905f52604080516002815260016020820152a3611f77565b5f818152600360205260409020546001600160a01b03166116f3811515611fbb565b815f525f60205260405f209060018060a01b03165f5260205260405f209061172060038301541515611fbb565b60ff6004830154161561194857600982015460ff8160081c1660048110156105545761174c9015612620565b6117563383612880565b156119145760ff600784019160018060a01b0333165f52826020526117848260405f205460a01c161561209f565b166117fb575b335f818152602092835260409020805460ff60a01b1916600160a01b17815542600191909101559092506117be9082612663565b604051428152817fcb4765881b79e3f3e656357a384db0c5ebdbdad01ab9fbc82ea10f38b7730dbc843393a36117f381612728565b604051908152f35b335f9081526020829052604090206003015480156118e05760065f94018054945b85811061182b5750505061178a565b6118358183611dff565b9054600391821b1c6001600160a01b03165f81815260208790526040902090910154801515908590826118d6575b5050611873575b5060010161181c565b6001600160a01b03165f9081526020859052604090205460a01c60ff161561189b578661186a565b60405162461bcd60e51b815260206004820152601360248201527250726576207369676e65722070656e64696e6760681b6044820152606490fd5b1090508489611863565b60405162461bcd60e51b815260206004820152600c60248201526b27379039b4b39037b93232b960a11b6044820152606490fd5b60405162461bcd60e51b815260206004820152600c60248201526b2737ba10309039b4b3b732b960a11b6044820152606490fd5b60405162461bcd60e51b8152602060048201526013602482015272446f63756d656e74206e6f742061637469766560681b6044820152606490fd5b5f85815260036020526040902080546001600160a01b0319166001600160a01b0388161790556113a1565b90508701358e611300565b96601f198416815f5260205f20905f5b818110611a185750915f93915f5160206129425f395f51905f5298999a87600a95106119ff575b5050600186811b019055611313565b851960f88960031b161c19908901351690558d806119f0565b878b0135835560209a8b019a8d9a508e9950600190930192016119c9565b91939550919350855f5260205f20601f850160051c81019160208610611a87575b918a959391601f8b9896940160051c01905b818110611a7657506112d5565b5f81558a97508b9650600101611a69565b9091508190611a57565b60405162461bcd60e51b8152602060048201526024808201527f446f63756d656e7420616c72656164792072656769737465726564206279206f6044820152633bb732b960e11b6064820152608490fd5b60405162461bcd60e51b815260206004820152601a60248201527f646f63756d656e74206973206e6f7420612074656d706c6174650000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601660248201527574656d706c617465206973206e6f742061637469766560501b6044820152606490fd5b606460405162461bcd60e51b815260206004820152602060248201527f74656d706c617465206e6f742072656769737465726564206279206f776e65726044820152fd5b60405162461bcd60e51b81526020600482015260126024820152711d195b5c1b185d19481b9bdd08199bdd5b9960721b6044820152606490fd5b346103fa5760203660031901126103fa57600435611c02811515611f77565b5f818152602081815260408083203384529091529020600381015490919015611c8c575b508054906104c860018060a01b03600283015416916003810154936004820154906005830154600884015490600985015493611c696001600a8801549701611ed7565b93604051998a9960ff808960081c1698169660ff808660081c169516938c611d03565b5f818152600360205260409020546001600160a01b03169150611cb0821515611fbb565b5f525f60205260405f209060018060a01b03165f5260205260405f2081611c26565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060048210156105545752565b9793611d2d611d6d98949d9c9b97936101409b97938b5261016060208c01526101608b0190611cd2565b6001600160a01b03909d1660408a0152606089015215156080880152151560a087015260c086015260e08501521515610100840152610120830190611cf6565b0152565b9181601f840112156103fa5782359167ffffffffffffffff83116103fa57602083818601950101116103fa57565b9060406003198301126103fa57600435916024359067ffffffffffffffff82116103fa57611dcf91600401611d71565b9091565b602435906001600160a01b03821682036103fa57565b600435906001600160a01b03821682036103fa57565b8054821015611e14575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b60206040818301928281528451809452019201905f5b818110611e4b5750505090565b8251845260209384019390920191600101611e3e565b90600182811c92168015611e8f575b6020831014611e7b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611e70565b60a0810190811067ffffffffffffffff82111761039357604052565b90601f8019910116810190811067ffffffffffffffff82111761039357604052565b9060405191825f825492611eea84611e61565b8084529360018116908115611f555750600114611f11575b50611f0f92500383611eb5565b565b90505f9291925260205f20905f915b818310611f39575050906020611f0f928201015f611f02565b6020919350806001915483858901015201910190918492611f20565b905060209250611f0f94915060ff191682840152151560051b8201015f611f02565b15611f7e57565b60405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840c8dec6eadacadce840d0c2e6d605b1b6044820152606490fd5b15611fc257565b60405162461bcd60e51b815260206004820152601760248201527f446f63756d656e7420646f6573206e6f742065786973740000000000000000006044820152606490fd5b1561098e57565b1561201557565b60405162461bcd60e51b8152602060048201526016602482015275446f63756d656e74206973206e6f742061637469766560501b6044820152606490fd5b1561205a57565b60405162461bcd60e51b815260206004820152601d60248201527f446f63756d656e74206e6f7420696e2070656e64696e672073746174650000006044820152606490fd5b156120a657565b60405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481cda59db995960921b6044820152606490fd5b91906120e9831515611f77565b6001600160a01b0381161561243057825f525f60205260405f209060018060a01b03165f5260205260405f20916003830154156123dc5761213060ff60048501541661200e565b6009830160ff815460081c1660048110156105545761214f9015612053565b335f9081526007850160208190526040909120549091906001600160a01b03161561239e57600a8501548015159081612394575b5061235057335f9081526020839052604090205460ff91906121aa9060a01c83161561209f565b541661221d575b335f8181526020929092526040909120805460ff60a01b1916600160a01b1781554260019190910155919250611f0f916121eb9082612663565b604051428152817fcb4765881b79e3f3e656357a384db0c5ebdbdad01ab9fbc82ea10f38b7730dbc60203393a3612728565b335f90815260208290526040902060030154801561230b5760065f95018054955b86811061224d575050506121b1565b6122578183611dff565b9054600391821b1c6001600160a01b03165f8181526020879052604090209091015480151590859082612301575b5050612295575b5060010161223e565b6001600160a01b03165f9081526020859052604090205460a01c60ff16156122bd575f61228c565b606460405162461bcd60e51b815260206004820152602060248201527f50726576696f7573207369676e657273206d757374207369676e2066697273746044820152fd5b109050845f612285565b60405162461bcd60e51b815260206004820152601b60248201527f4e6f207369676e6174757265206f726465722061737369676e656400000000006044820152606490fd5b919293505061030061ff00198254161790557fbe4428b019e1c015536d061f2bd73b8be375833486921a70f9f33fbb56e11db7604080515f815260036020820152a2565b905042115f612183565b60405162461bcd60e51b81526020600482015260166024820152752737ba1030baba3437b934bd32b2103a379039b4b3b760511b6044820152606490fd5b60405162461bcd60e51b815260206004820152602660248201527f446f63756d656e7420646f6573206e6f7420657869737420666f7220746869736044820152651037bbb732b960d11b6064820152608490fd5b60405162461bcd60e51b8152602060048201526015602482015274496e76616c6964206f776e6572206164647265737360581b6044820152606490fd5b1561247457565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c6964207369676e6572206164647265737360501b6044820152606490fd5b156124b957565b60405162461bcd60e51b815260206004820152601460248201527314da59db995c88185b1c9958591e48185919195960621b6044820152606490fd5b8054600160401b8110156103935761251291600182018155611dff565b81546001600160a01b0393841660039290921b91821b9390911b1916919091179055565b805490600160401b821015610393578161255891600161256e94018155611dff565b819391549060031b91821b915f19901b19161790565b9055565b1561257957565b60405162461bcd60e51b815260206004820152601e60248201527f4e6f742061207369676e657220666f72207468697320646f63756d656e7400006044820152606490fd5b156125c557565b60405162461bcd60e51b81526020600482015260136024820152725552492063616e6e6f7420626520656d70747960681b6044820152606490fd5b908060209392818452848401375f828201840152601f01601f1916010190565b1561262757565b60405162461bcd60e51b8152602060048201526014602482015273446f63756d656e74206e6f742070656e64696e6760601b6044820152606490fd5b6001600160a01b039091165f908152600260205260408120905b81548082101561272257836126928385611dff565b90549060031b1c146126a7575060010161267d565b919250905f198101908111610c5d578082106126fb575b5050805480156126e7575f1901906126d68282611dff565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b61255861270b6127199285611dff565b90549060031b1c9284611dff565b90555f806126be565b50505050565b5f818152600360205260409020546001600160a01b0316801561284657815f525f60205260405f209060018060a01b03165f5260205260405f205f5f600683019081549160078501915b8381106127df57505050506008820154111561278c575050565b600901805461ff0019811661010017909155604080517fbe4428b019e1c015536d061f2bd73b8be375833486921a70f9f33fbb56e11db7926127d590829060081c60ff16611cf6565b60016020820152a2565b6127e98183611dff565b905460039190911b1c6001600160a01b03165f908152602084905260409020600281015460ff169081612837575b50612825575b600101612772565b935f198114610c5d576001019361281d565b60ff91505460a01c165f612817565b60405162461bcd60e51b8152602060048201526012602482015271111bd8dd5b595b9d081b9bdd08199bdd5b9960721b6044820152606490fd5b5f818152600360205260409020546001600160a01b031690811561291a575f525f60205260405f209060018060a01b03165f5260205260405f20906003820154156129145760065f92018054925b8381106128dd57505050505f90565b6128e78183611dff565b905460039190911b1c6001600160a01b039081169084161461290b576001016128ce565b50505050600190565b50505f90565b5050505f9056feda7631bf9c7440810e55f2b752d640e98e396001e0bac8f1cfa2efb6dfd1edf5cef4456345d7e4cac54dd44faf651aa0d785f350a24bc377a8faaa0801a06870a26469706673582212209ee7af5f8b24a643a39cc7e54e51f53a8cb846b65f5d94dd4130e6a2be00021664736f6c634300081c0033