0 txs
27 calls
constructor
constructor()
functions
accountImplementation
viewfunction accountImplementation() view returns (bytes)
accounts
viewfunction accounts(address, uint256) view returns (address accountAddress, string name)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
delegatedAccesses
viewfunction delegatedAccesses(address, address, bytes4) view returns (bool)
delegatedAccessRevokeCooldown
viewfunction delegatedAccessRevokeCooldown() view returns (uint256)
getAccounts
viewfunction getAccounts(address user, uint256 start, uint256 size) view returns (tuple[])
getAccountsLength
viewfunction getAccountsLength(address user) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
indexOfAccount
viewfunction indexOfAccount(address) view returns (uint256)
isValidSignatureEIP1271
viewfunction isValidSignatureEIP1271(address signer, bytes32 hash, bytes signature) view returns (bytes4)
owners
viewfunction owners(address) view returns (address)
paused
viewfunction paused() view returns (bool)
PAUSER_ROLE
viewfunction PAUSER_ROLE() view returns (bytes32)
revokeProposalTimestamp
viewfunction revokeProposalTimestamp(address, address, bytes4) view returns (uint256)
saltCounter
viewfunction saltCounter() view returns (uint256)
SETTER_ROLE
viewfunction SETTER_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symmioAddress
viewfunction symmioAddress() view returns (address)
UNPAUSER_ROLE
viewfunction UNPAUSER_ROLE() view returns (bytes32)
verifySignature
viewfunction verifySignature(address signer, bytes32 hash, bytes signature) view returns (bool)
verifySignatureOfAccount
viewfunction verifySignatureOfAccount(address account, bytes32 hash, bytes signature) view returns (bytes4)
_call
nonpayablefunction _call(address account, bytes[] _callDatas)
addAccount
nonpayablefunction addAccount(string name)
adminCallPartyA
nonpayablefunction adminCallPartyA(address partyA, bytes data)
delegateAccess
nonpayablefunction delegateAccess(address account, address target, bytes4 selector)
delegateAccesses
nonpayablefunction delegateAccesses(address account, address target, bytes4[] selector)
depositForAccount
nonpayablefunction depositForAccount(address collateral, address account, uint256 amount)
editAccountName
nonpayablefunction editAccountName(address accountAddress, string name)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address admin, address symmioAddress_, bytes accountImplementation_)
pause
nonpayablefunction pause()
proposeToRevokeAccesses
nonpayablefunction proposeToRevokeAccesses(address account, address target, bytes4[] selector)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeAccesses
nonpayablefunction revokeAccesses(address account, address target, bytes4[] selector)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setAccountImplementation
nonpayablefunction setAccountImplementation(bytes accountImplementation_)
setDelegateAccessRevokeCooldown
nonpayablefunction setDelegateAccessRevokeCooldown(uint256 cooldown)
setSymmioAddress
nonpayablefunction setSymmioAddress(address addr)
unpause
nonpayablefunction unpause()
events
AddAccount
event AddAccount(address user, address account, string name)
AdminPartyACall
event AdminPartyACall(address partyA, bytes data, bool success, bytes returnData)
AllocateForAccount
event AllocateForAccount(address user, address account, uint256 amount)
Call
event Call(address user, address account, bytes _callData, bool _success, bytes _resultData)
CompleteWithdrawFromAccount
event CompleteWithdrawFromAccount(uint256 id, address account)
DelegateAccess
event DelegateAccess(address account, address target, bytes4 selector, bool state)
DelegateAccesses
event DelegateAccesses(address account, address target, bytes4[] selector, bool state)
DeployContract
event DeployContract(address sender, address contractAddress)
DepositForAccount
event DepositForAccount(address collateral, address user, address account, uint256 amount)
EditAccountName
event EditAccountName(address user, address account, string newName)
Initialized
event Initialized(uint8 version)
Paused
event Paused(address account)
ProposeToRevokeAccesses
event ProposeToRevokeAccesses(address account, address target, bytes4[] selector)
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)
SetAccountImplementation
event SetAccountImplementation(bytes oldAddress, bytes newAddress)
SetDelegateAccessRevokeCooldown
event SetDelegateAccessRevokeCooldown(uint256 oldCooldown, uint256 newCooldown)
SetSymmioAddress
event SetSymmioAddress(address oldAddress, address newAddress)
Unpaused
event Unpaused(address account)
errors
ContractDeploymentFailed
error ContractDeploymentFailed()
CooldownNotReached
error CooldownNotReached(address account, address target, bytes4 selector, uint256 current, uint256 required)
InvalidCallData
error InvalidCallData(bytes callData)
InvalidTarget
error InvalidTarget(address target, address sender, address account)
NotOwnerOfAccount
error NotOwnerOfAccount(address sender, address account, address owner)
PartyACallFailed
error PartyACallFailed(bytes returnData)
RevokeAccessNotProposed
error RevokeAccessNotProposed(address account, address target, bytes4 selector)
UnauthorizedAccess
error UnauthorizedAccess(address account, address sender, bytes4 selector)
creation bytecode
0x60808060405234620000c6576000549060ff8260081c1662000074575060ff8082160362000038575b6040516137389081620000cc8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13862000028565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806301569e3a14610297578063017519981461029257806301ffc9a71461028d578063022914a71461028857806311464fbe14610283578063248a9ca31461027e5780632ad26a04146102795780632f2ff15d1461027457806336568abe1461026f57806338f302631461026a5780633f4ba83a146102655780633ff5a7f31461026057806355e0660f1461025b5780635c975abb146102565780636a29dfbf146102515780637278b28f1461024c578063759efccf1461024757806382a7e533146102425780638456cb591461023d57806387524581146102385780638b5afd2b1461023357806391d148541461022e57806393d198091461022957806395c7d0ec1461022457806395d4609d1461021f5780639b0c03de1461021a578063a04c680914610215578063a2011b3f14610210578063a217fddf1461020b578063a58c99d714610206578063b9c9b3f214610201578063bd367d8e146101fc578063c6058839146101f7578063cf7a1d77146101f2578063d3705dbb146101ed578063d547741f146101e8578063d9c2337c146101e3578063e63ab1e9146101de578063f89cc4dc146101d95763fb1bb9de146101d457600080fd5b612100565b611f9e565b611f75565b611df0565b611db1565b611cc6565b611bb0565b611b5d565b611ab2565b611a6d565b6117cb565b6117af565b611774565b611756565b61171c565b6116b8565b61156d565b6114ba565b611468565b61142e565b6113af565b611127565b610fd7565b610fa8565b610f7f565b610e46565b610e23565b610ca5565b610aef565b610a5b565b610a3d565b6109a9565b6108e0565b610748565b61069d565b6105ca565b610453565b6103fd565b6103b7565b6102cd565b600435906001600160a01b03821682036102b257565b600080fd5b602435906001600160a01b03821682036102b257565b346102b25760203660031901126102b2576102e661029c565b6102ee61213b565b60c954604080516001600160a01b03808416825284811660208301529293917ff78ccdf5924090b2ab6627ac5da4ec5affed73d47c6bc6c8a4620a0d5ed57bc891a16001600160a01b031990921691161760c955005b9181601f840112156102b2578235916001600160401b0383116102b257602083818601950101116102b257565b60606003198201126102b2576004356001600160a01b03811681036102b2579160243591604435906001600160401b0382116102b2576103b391600401610344565b9091565b346102b25760206103de6103d86103cd36610371565b9391929336916106f6565b9161352b565b6040519015158152f35b35906001600160e01b0319821682036102b257565b346102b25760203660031901126102b25760043563ffffffff60e01b81168091036102b257602090637965db0b60e01b8114908115610442575b506040519015158152f35b6301ffc9a760e01b14905038610437565b346102b25760203660031901126102b25760206001600160a01b038061047761029c565b1660005260cf825260406000205416604051908152f35b60009103126102b257565b634e487b7160e01b600052600060045260246000fd5b90600182811c921680156104df575b60208310146104c957565b634e487b7160e01b600052602260045260246000fd5b91607f16916104be565b634e487b7160e01b600052604160045260246000fd5b6001600160401b03811161051257604052565b6104e9565b604081019081106001600160401b0382111761051257604052565b606081019081106001600160401b0382111761051257604052565b90601f801991011681019081106001600160401b0382111761051257604052565b60005b8381106105815750506000910152565b8181015183820152602001610571565b906020916105aa8151809281855285808601910161056e565b601f01601f1916010190565b9060206105c7928181520190610591565b90565b346102b25760008060031936011261069a57604051908060cb546105ed816104af565b808552916001918083169081156106705750600114610627575b610623856106178187038261054d565b604051918291826105b6565b0390f35b925060cb83526000805160206136ec8339815191525b82841061065857505050810160200161061782610623610607565b8054602085870181019190915290930192810161063d565b8695506106239693506020925061061794915060ff191682840152151560051b8201019293610607565b80fd5b346102b25760203660031901126102b25760043560005260976020526020600160406000200154604051908152f35b604051906106d982610517565b565b6001600160401b03811161051257601f01601f191660200190565b929192610702826106db565b91610710604051938461054d565b8294818452818301116102b2578281602093846000960137010152565b9080601f830112156102b2578160206105c7933591016106f6565b346102b25760203660031901126102b2576004356001600160401b0381116102b2576107997f1deb86e124d1a5f3b49977292b48e989b984bcd8944cfb14d63c8880482f2cff91369060040161072d565b6107a1612bf1565b61084760ca546107e96107e460405160208101906c4d756c74694163636f756e745f60981b825284602d820152602d81526107db81610532565b519020926124d0565b60ca55565b60c954604080513060208201526001600160a01b039092168282015281526108369061084290601f199061081e60608261054d565b60405193849161083060208401612d7a565b90612298565b0390810183528261054d565b612df7565b33600090815260cd60205260409020546001600160a01b038216600090815260ce602052604090205533600090815260cd602052604090206108a39061088b6106cc565b6001600160a01b038416815290846020830152612c35565b6001600160a01b038116600090815260cf6020526040902080546001600160a01b031916331790556108db6040519283923384612d51565b0390a1005b346102b25760403660031901126102b2576004356108fc6102b7565b600091808352609760205261091760016040852001546121e5565b8083526097602090815260408085206001600160a01b0385166000908152925290205460ff1615610946578280f35b8083526097602090815260408085206001600160a01b038516600090815292529020805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a438808280f35b346102b25760403660031901126102b2576109c26102b7565b336001600160a01b038216036109e0576109de90600435612427565b005b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b346102b25760003660031901126102b257602060cc54604051908152f35b346102b25760003660031901126102b257610a74612190565b60335460ff811615610ab35760ff19166033557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b346102b25760403660031901126102b257610b0861029c565b6024356001600160401b0381116102b257610b27903690600401610344565b9190610b3161213b565b60405191838284378284810160009485928284809452039082855af193610b5661310b565b9415610bd5577fe0fce05d0d81cf3ab507f19ac5cb94314b9c853e82ad7aeabfefc24baeeb6cae939460a082610bcf93604051968796600180861b031687526080602088015281608088015283870137848101820188905260016040860152601f01601f19168401848103820160608601520190610591565b0390a180f35b6040516318febddb60e21b815280610bf087600483016105b6565b0390fd5b6001600160401b0381116105125760051b60200190565b60606003198201126102b257610c1f61029c565b91610c286102b7565b916044356001600160401b0381116102b257816023820112156102b257806004013591610c5483610bf4565b92610c62604051948561054d565b80845260209260248486019260051b8201019283116102b257602401905b828210610c8e575050505090565b838091610c9a846103e8565b815201910190610c80565b346102b257610cb336610c0b565b9160018060a01b03808216908160005260cf6020528060406000205416338103610df25750831690338214918215610de8575b5050610db9578251805b610d2657506108db7f41e2c91b7cd59c2d41cfac17496b166b244a4921d4a1c926b4a7132b6c66906e9360405193849384612b5f565b610db390610dae610da1610d6786610d508760018060a01b031660005260d0602052604060002090565b9060018060a01b0316600052602052604060002090565b610d8a610d7c610d7686612af1565b8a612b0d565b516001600160e01b03191690565b63ffffffff60e01b16600052602052604060002090565b805460ff19166001179055565b612544565b80610cf0565b6040516302e4310960e31b81526001600160a01b03928316600482015233602482015291166044820152606490fd5b1490503880610ce6565b6040516341f2404360e11b81523360048201526001600160a01b038581166024830152919091166044820152606490fd5b346102b25760003660031901126102b257602060ff603354166040519015158152f35b346102b257610e5436610c0b565b6001600160a01b03838116600081815260cf60205260409020549091908116338103610f4e5750831690338214918215610f44575b5050610f14578051805b610eca5750916108db7f64930ca7235077162dd09f78d211b233f0f505f794151b9ecfaa6680bf00ead69360405193849384612bc8565b610f0e90610eee84610d508760018060a01b031660005260d1602052604060002090565b610f084291610d8a610d7c610f0286612af1565b88612b0d565b55612544565b80610e93565b506040516302e4310960e31b81526001600160a01b03918216600482015233602482015291166044820152606490fd5b1490503880610e89565b6040516341f2404360e11b81523360048201526001600160a01b038781166024830152919091166044820152606490fd5b346102b25760003660031901126102b25760c9546040516001600160a01b039091168152602090f35b346102b2576020610fc4610fbb36610371565b929190916136bf565b6040516001600160e01b03199091168152f35b346102b2576020806003193601126102b2576001600160401b036004358181116102b25761100990369060040161072d565b9161101261213b565b7f4ec7166fdb5f155366ddacdab9af9c74d038015a7570252e40c6c82346308ad7604051604081528061105761104a60408301611287565b8281038684015287610591565b0390a18251918211610512576110778261107260cb546104af565b612837565b80601f83116001146110b2575081926000926110a7575b5050600019600383901b1c191660019190911b1760cb55005b01519050388061108e565b90601f198316936110d360cb6000526000805160206136ec83398151915290565b926000905b86821061110f57505083600195106110f6575b505050811b0160cb55005b015160001960f88460031b161c191690553880806110eb565b806001859682949686015181550195019301906110d8565b346102b25760008060031936011261069a5760008051602061370c8339815191528152609760209081526040808320336000908152925290205460ff16156111ab57611171612bf1565b600160ff1960335416176033557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b610bf060486112386111bc3361259c565b61122a6111c761261c565b6040519485937f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000602086015261120781518092602060378901910161056e565b84017001034b99036b4b9b9b4b733903937b6329607d1b60378201520190612298565b03601f19810183528261054d565b60405162461bcd60e51b8152918291600483016105b6565b634e487b7160e01b600052603260045260246000fd5b80548210156112825760005260206000209060011b0190600090565b611250565b60cb5460009291611297826104af565b808252916001908181169081156112fc57506001146112b557505050565b9192935060cb6000526000805160206136ec833981519152916000925b8484106112e457505060209250010190565b805460208585018101919091529093019281016112d2565b915050602093945060ff929192191683830152151560051b010190565b906000929180549161132a836104af565b91828252600193848116908160001461138c575060011461134c575b50505050565b90919394506000526020928360002092846000945b838610611378575050505001019038808080611346565b805485870183015294019385908201611361565b9294505050602093945060ff191683830152151560051b01019038808080611346565b346102b2576040806003193601126102b2576113c961029c565b60243560018060a01b0380921660005260cd6020528260002080548210156102b2576114196113fd61062393600193611266565b50938454169361141286518094819301611319565b038261054d565b83519384938452806020850152830190610591565b346102b25760203660031901126102b2576001600160a01b0361144f61029c565b1660005260cd6020526020604060002054604051908152f35b346102b25760403660031901126102b257602060ff6114ae6114886102b7565b6004356000526097845260406000209060018060a01b0316600052602052604060002090565b54166040519015158152f35b346102b2576020610fc46114cd36610371565b6001600160a01b03938416600090815260cf875260409020549093919291166136bf565b602080820190808352835180925260409283810182858560051b8401019601946000925b858410611526575050505050505090565b90919293949596858061155c600193603f1986820301885286838d51878060a01b03815116845201519181858201520190610591565b990194019401929594939190611515565b346102b25760603660031901126102b25761158661029c565b60243560443560018060a01b03831660005260cd60205260406000205482810390811161166d5781111561166757506001600160a01b038216600090815260cd602052604090206115d990829054612b00565b905b6115e48261347f565b92815b6115f184846124de565b811015611659576116528161164c6116276115f1946116228760018060a01b031660005260cd602052604060002090565b611266565b5061163b6116358885612b00565b916134ef565b611645828b612b0d565b5288612b0d565b506134e0565b90506115e7565b6040518061062387826114f1565b906115db565b6124ba565b60609060031901126102b2576001600160a01b039060043582811681036102b2579160243590811681036102b257906044356001600160e01b0319811681036102b25790565b346102b25760206117136116fb6116ce36611672565b929160018060a01b031660005260d1855260406000209060018060a01b0316600052602052604060002090565b9063ffffffff60e01b16600052602052604060002090565b54604051908152f35b346102b25760203660031901126102b2576001600160a01b0361173d61029c565b1660005260ce6020526020604060002054604051908152f35b346102b25760003660031901126102b257602060ca54604051908152f35b346102b25760003660031901126102b25760206040517f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda8152f35b346102b25760003660031901126102b257602060405160008152f35b346102b2576117d936610c0b565b919060018060a01b03918281169260009380855260cf602052604091808387205416338103611a3d5750841690338214918215611a33575b5050611a04578451805b61185157507f41e2c91b7cd59c2d41cfac17496b166b244a4921d4a1c926b4a7132b6c66906e9394610bcf915193849384612b96565b61188361187485610d508660018060a01b031660005260d1602052604060002090565b610d8a610d7c610d7685612af1565b54156119b1576118ce6118c46118af86610d508760018060a01b031660005260d1602052604060002090565b610d8a610d7c6118be86612af1565b8b612b0d565b5460cc54906124de565b80421061194957506119439061191f61191561190087610d508860018060a01b031660005260d0602052604060002090565b610d8a610d7c61190f86612af1565b8c612b0d565b805460ff19169055565b85610f0861190087610d508860018060a01b031660005260d1602052604060002090565b8061181b565b849293611965610d7c8961195f610bf096612af1565b90612b0d565b945163daf9b2fd60e01b81526001600160a01b039182166004820152931660248401526001600160e01b03199093166044830152426064830152608482019290925290819060a4820190565b906119c5610d7c8761195f610bf095612af1565b905163370855c360e11b81526001600160a01b0393841660048201529390921660248401526001600160e01b0319909116604483015281906064820190565b516302e4310960e31b81526001600160a01b038381166004830152336024830152919091166044820152606490fd5b1490503880611811565b83516341f2404360e11b81523360048201526001600160a01b038681166024830152919091166044820152606490fd5b346102b257602060ff6114ae6116fb611a8536611672565b929160018060a01b031660005260d0865260406000209060018060a01b0316600052602052604060002090565b346102b25760403660031901126102b257611acb61029c565b60248035916001600160401b03928381116102b257366023820112156102b257806004013592611afa84610bf4565b93611b08604051958661054d565b808552602095828787019260051b850101933685116102b257838101925b858410611b37576109de88886131cc565b83358381116102b2578991611b52839288369187010161072d565b815201930192611b26565b346102b25760203660031901126102b257600435611b7961213b565b7f8521708b96ce9eb83c7246707bd26c25bcb6af4d55d54286074016ec8a7f427b604060cc548151908152836020820152a160cc55005b346102b25760603660031901126102b257611bc961029c565b611bd16102b7565b604435906001600160401b0382116102b257611bf4611c3692369060040161072d565b9060005493611c1a60ff8660081c161580968197611cb8575b8115611c98575b506127bd565b84611c2d600160ff196000541617600055565b611c7f57612992565b611c3c57005b611c4c61ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081016108db565b611c9361010061ff00196000541617600055565b612992565b303b15915081611caa575b5038611c14565b6001915060ff161438611ca3565b600160ff8216109150611c0d565b346102b257611cd436611672565b9160018060a01b03808216908160005260cf6020528060406000205416338103610df2575083163381148015611da8575b611d795792610d506109de95937fc6c2cef2fe1f0545b232744fc2812ca3a23cdb770794c9c7458ea69f6d9be7ff60806116fb95610da198604051918252602082015263ffffffff60e01b8816604082015260016060820152a16001600160a01b0316600090815260d06020526040902090565b6040516302e4310960e31b81526001600160a01b03858116600483015233602483015284166044820152606490fd5b50818114611d05565b346102b25760403660031901126102b2576109de600435611dd06102b7565b90806000526097602052611deb6001604060002001546121e5565b612427565b346102b25760403660031901126102b257611e0961029c565b6001600160401b03906024358281116102b257611e2a90369060040161072d565b611e32612bf1565b60009160018060a01b038116835260209360ce8552611e5f604085205433865260cd875260408620611266565b5090600180920191845191821161051257611e8482611e7e85546104af565b85612886565b86601f8311600114611eea575081809187987f13bbfc66aca7f597c509c7eb717cafee4ae3fc31a77f4bbb22b333e81369276d9893611edf575b501b916000199060031b1c19161790555b610bcf6040519283923384612d51565b870151925038611ebe565b601f92919219821697611f0285600052602060002090565b9188905b8a8210611f5e575050827f13bbfc66aca7f597c509c7eb717cafee4ae3fc31a77f4bbb22b333e81369276d989910611f45575b5050811b019055611ecf565b86015160001960f88460031b161c191690553880611f39565b808684958294958c01518155019401920190611f06565b346102b25760003660031901126102b257602060405160008051602061370c8339815191528152f35b346102b25760603660031901126102b257611fb761029c565b611fbf6102b7565b6044359060018060a01b0392600093808316855260cf60205280604086205416338103610df257508361201491611ff4612bf1565b831661200282303384612e6a565b60c9546001600160a01b031690612f35565b60c9546120379061202b906001600160a01b031681565b6001600160a01b031690565b92833b156120fc5760405163b3db428b60e01b81526001600160a01b03838116600483015284166024820152604481018290529385908590606490829084905af19081156120f7577f197dcfb69ba73f7549ea440d06b471ca20dc099bb2e71d61ad78d3a09a03346894610bcf926120de575b50604080516001600160a01b0394851681523360208201529490931692840192909252606083019190915281906080820190565b806120eb6120f1926104ff565b8061048e565b386120aa565b612e5e565b8480fd5b346102b25760003660031901126102b25760206040517f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a8152f35b3360009081527f0ba47cfd5e746a7a77d10576777b78a793709d8d5c4bbd732c557bc9a64bb31b602052604090205460ff161561217457565b610bf060486112386121853361259c565b61122a6111c761269b565b3360009081527f4f911b9375d0b52c272a370588b5a39d3b1a324938ee95e0e2faf0b3b468c710602052604090205460ff16156121c957565b610bf060486112386121da3361259c565b61122a6111c761272c565b600081815260976020908152604080832033845290915290205460ff161561220a5750565b6122133361259c565b61221b6124eb565b91603061222784612516565b53607861223384612523565b5360415b6001811161225657610bf060486112388561122a886111c78815612551565b90600f811690601082101561128257612293916f181899199a1a9b1b9c1cb0b131b232b360811b901a6122898487612533565b5360041c91612544565b612237565b906122ab6020928281519485920161056e565b0190565b6001600160a01b03811660009081527f793844da0378ca0230b21a4013ef02cf55735b90b39c85241478ff94b5eceb286020526040812060008051602061370c8339815191529060ff905b54161561230657505050565b8082526097602090815260408084206001600160a01b038616600090815292529020805460ff1916600117905533926001600160a01b0316917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4565b6001600160a01b03811660009081527f4f911b9375d0b52c272a370588b5a39d3b1a324938ee95e0e2faf0b3b468c710602052604081207f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a9060ff906122fa565b6001600160a01b03811660009081527f0ba47cfd5e746a7a77d10576777b78a793709d8d5c4bbd732c557bc9a64bb31b602052604081207f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda9060ff906122fa565b600090808252609760205260ff61245384604085209060018060a01b0316600052602052604060002090565b541661245e57505050565b8082526097602090815260408084206001600160a01b038616600090815292529020805460ff1916905533926001600160a01b0316917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4565b634e487b7160e01b600052601160045260246000fd5b906001820180921161166d57565b9190820180921161166d57565b60405190608082018281106001600160401b0382111761051257604052604282526060366020840137565b8051156112825760200190565b8051600110156112825760210190565b908151811015611282570160200190565b801561166d576000190190565b1561255857565b606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b604051906125a982610532565b602a8252604036602084013760306125c083612516565b5360786125cc83612523565b536029905b600182116125e4576105c7915015612551565b600f811690601082101561128257612616916f181899199a1a9b1b9c1cb0b131b232b360811b901a6122898486612533565b906125d1565b60008051602061370c8339815191526126336124eb565b90603061263f83612516565b53607861264b83612523565b536041905b60018211612663576105c7915015612551565b600f811690601082101561128257612695916f181899199a1a9b1b9c1cb0b131b232b360811b901a6122898486612533565b90612650565b7f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda6126c46124eb565b9060306126d083612516565b5360786126dc83612523565b536041905b600182116126f4576105c7915015612551565b600f811690601082101561128257612726916f181899199a1a9b1b9c1cb0b131b232b360811b901a6122898486612533565b906126e1565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a6127556124eb565b90603061276183612516565b53607861276d83612523565b536041905b60018211612785576105c7915015612551565b600f8116906010821015611282576127b7916f181899199a1a9b1b9c1cb0b131b232b360811b901a6122898486612533565b90612772565b156127c457565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b81811061282b575050565b60008155600101612820565b90601f8211612844575050565b6106d99160cb6000526000805160206136ec833981519152906020601f840160051c8301931061287c575b601f0160051c0190612820565b909150819061286f565b9190601f811161289557505050565b6106d9926000526020600020906020601f840160051c8301931061287c57601f0160051c0190612820565b9081516001600160401b038111610512576128e08161107260cb546104af565b602080601f831160011461291c5750819293600092612911575b50508160011b916000199060031b1c19161760cb55565b0151905038806128fa565b90601f1983169461293d60cb6000526000805160206136ec83398151915290565b926000905b87821061297a575050836001959610612961575b505050811b0160cb55565b015160001960f88460031b161c19169055388080612956565b80600185968294968601518155019501930190612942565b90612a106106d99392600060ff815460081c166129ae81612a91565b6129b781612a91565b6129cb60ff19918260335416603355612a91565b8180526097602090815260408084206001600160a01b0386166000908152925290205460ff1615612a35575b5050612a02816122af565b612a0b81612365565b6123c6565b60018060a01b03166bffffffffffffffffffffffff60a01b60c954161760c9556128c0565b8180526097602090815260408084206001600160a01b0386166000818152919093522080549290921660011790915533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a438806129f7565b15612a9857565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b60001981019190821161166d57565b9190820391821161166d57565b80518210156112825760209160051b010190565b90815180825260208080930193019160005b828110612b41575050505090565b83516001600160e01b03191685529381019392810192600101612b33565b6001600160a01b03918216815291166020820152608060408201819052909291600191606091612b9191860190612b21565b930152565b6001600160a01b03918216815291166020820152608060408201819052909291600091606091612b9191860190612b21565b6001600160a01b039182168152911660208201526060604082018190526105c792910190612b21565b60ff60335416612bfd57565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b80546801000000000000000081101561051257612c59906001928382018155611266565b612d4c57825181546001600160a01b0319166001600160a01b0391909116178155810191602080910151908151916001600160401b03831161051257612ca983612ca387546104af565b87612886565b81601f8411600114612ce25750928293918392600094612cd7575b50501b916000199060031b1c1916179055565b015192503880612cc4565b919083601f198116612cf988600052602060002090565b946000905b88838310612d325750505010612d19575b505050811b019055565b015160001960f88460031b161c19169055388080612d0f565b858701518855909601959485019487935090810190612cfe565b610499565b6001600160a01b039182168152911660208201526060604082018190526105c792910190610591565b60cb5460009291612d8a826104af565b91600190818116908115612de45750600114612da557505050565b909192935060cb6000526000805160206136ec833981519152906000915b848310612dd1575050500190565b8181602092548587015201920191612dc3565b60ff191683525050811515909102019150565b6020815191016000f56001600160a01b03811615612e4c57604080513381526001600160a01b03831660208201527f6cbd957809e2aaf4d5e36136d06e71215f53a984b218c6d501e22f91d348d9ce9190a190565b604051634b161dbd60e01b8152600490fd5b6040513d6000823e3d90fd5b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648201929092526106d991612eb682608481015b03601f19810184528361054d565b61301e565b908160209103126102b2575190565b15612ed157565b60405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608490fd5b91909181158015612f83575b6106d993612f51612eb692612eca565b60405163095ea7b360e01b60208201526001600160a01b03909116602482015260448101939093528260648101612ea8565b50604051636eb1769f60e11b81523060048201526001600160a01b038416602482015292602084806044810103816001600160a01b0386165afa9081156120f757612f51612eb6926106d996600091612fe3575b50159250509350612f41565b613004915060203d811161300a575b612ffc818361054d565b810190612ebb565b38612fd7565b503d612ff2565b519081151582036102b257565b60405161307c916001600160a01b031661303782610517565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af161307661310b565b9161313b565b80518281159182156130ec575b50509050156130955750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b83809293500103126102b257816131039101613011565b808238613089565b3d15613136573d9061311c826106db565b9161312a604051938461054d565b82523d6000602084013e565b606090565b9192901561319d575081511561314f575090565b3b156131585790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156131b05750805190602001fd5b60405162461bcd60e51b8152908190610bf090600483016105b6565b6131d4612bf1565b6001600160a01b03818116600090815260cf6020526040902054166001600160a01b03163314159260005b835160ff8216908110156132de57613218869186612b0d565b5190613237575b9061322d613232928561333a565b6132e6565b6131ff565b6004808251106132c457602082015161327b613277613270836116fb33610d508c60018060a01b031660005260d0602052604060002090565b5460ff1690565b1590565b61328657505061321f565b604080516303f2767d60e21b81526001600160a01b0388169381019384523360208501526001600160e01b0319909216908301529081906060010390fd5b610bf060405192839263378e177f60e21b845283016105b6565b505092505050565b60ff1660ff811461166d5760010190565b6001600160a01b0391821681529116602082015260a0604082018190526105c7949261332591830190610591565b92151560608201526080818403910152610591565b60405163316fdd9760e11b8152600092909183838061335c85600483016105b6565b0381836001600160a01b0386165af19384156120f757809381956133c5575b5050907f268e99f0b37c8146a6aea7c6af329e3924d9c92c4386be924c2990926d99b661916133b2858560405194859433866132f7565b0390a1156133bd5750565b602081519101fd5b91945092503d8084833e6133d9818361054d565b81019260408285031261069a576133ef82613011565b916020810151906001600160401b03821161347b570184601f820112156134775780519161341c836106db565b9561342a604051978861054d565b8387526020848401011161069a57507f268e99f0b37c8146a6aea7c6af329e3924d9c92c4386be924c2990926d99b66193929161346d916020808801910161056e565b929390913861337b565b5080fd5b8280fd5b9061348982610bf4565b60406134978151928361054d565b83825281936134a8601f1991610bf4565b0191600091825b8481106134bd575050505050565b60209082516134cb81610517565b858152826060818301528286010152016134af565b600019811461166d5760010190565b906001602060405161350081610517565b6135278195848060a01b0381541683526135206040518096819301611319565b038461054d565b0152565b6135358383613609565b60058195929510156135f3571593846135dd575b508315613557575b50505090565b60009293509082916040516135908161122a6020820194630b135d3f60e11b998a87526024840152604060448401526064830190610591565b51915afa9061359d61310b565b826135cf575b826135b3575b5050388080613551565b9091506020818051810103126102b257602001511438806135a9565b9150602082511015916135a3565b6001600160a01b03838116911614935038613549565b634e487b7160e01b600052602160045260246000fd5b906041815114600014613633576103b3916020820151906060604084015193015160001a9061363d565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116136b35791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156120f75781516001600160a01b038116156136ad579190565b50600190565b50505050600090600390565b916103d8906136cf9436916106f6565b156136df57630b135d3f60e11b90565b6001600160e01b03199056fea7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862aa164736f6c6343000813000a