0 txs
113 calls
constructor
constructor()
functions
aerodromeRouter
viewfunction aerodromeRouter() view returns (address)
getAllUserAccessibleManagers
viewfunction getAllUserAccessibleManagers(address user) view returns (address[])
getAllUserManagedManagers
viewfunction getAllUserManagedManagers(address user) view returns (address[])
getAllUserOwnedManagers
viewfunction getAllUserOwnedManagers(address user) view returns (address[])
getUserManager
viewfunction getUserManager(address user) view returns (address)
isManagerContract
viewfunction isManagerContract(address managerContract) view returns (bool)
lpManagerImplementation
viewfunction lpManagerImplementation() view returns (address)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
userManagedManagers
viewfunction userManagedManagers(address, uint256) view returns (address)
userManagers
viewfunction userManagers(address) view returns (address)
userOwnedManagers
viewfunction userOwnedManagers(address, uint256) view returns (address)
createManager
nonpayablefunction createManager() returns (address)
initialize
nonpayablefunction initialize(address _aerodromeRouter)
registerManager
nonpayablefunction registerManager(address user, address managerContract)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unregisterManager
nonpayablefunction unregisterManager(address user, address managerContract)
updateManagerImplementation
nonpayablefunction updateManagerImplementation(address _newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
ImplementationUpdated
event ImplementationUpdated(address indexed newImplementation)
Initialized
event Initialized(uint64 version)
ManagerCreated
event ManagerCreated(address indexed user, address manager)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Upgraded
event Upgraded(address indexed implementation)
UserBecameManager
event UserBecameManager(address indexed user, address manager)
UserRemovedAsManager
event UserRemovedAsManager(address indexed user, address manager)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AlreadyHasManager
error AlreadyHasManager()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidAddress
error InvalidAddress()
InvalidImplementation
error InvalidImplementation()
InvalidInitialization
error InvalidInitialization()
InvalidManager
error InvalidManager()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a080604052346100cc57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166100bd57506001600160401b036002600160401b031982821601610078575b604051614ae090816100d28239608051818181610aea0152610bc50152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610059565b63f92ee8a960e01b8152600490fd5b600080fdfe60806040818152600491823610156200001757600080fd5b600090813560e01c9081631071bb38146200104e575080633b3e1f461462000fcc578063498e78b11462000dab5780634f1ef2861462000b3e57806352d1902d1462000ad4578063715018a61462000a765780638da5cb5b1462000a3d578063995dc76e14620009dc578063a9088b59146200097c578063ad3cb1cc146200090d578063bce99d9914620008e2578063bd583bff14620007bf578063c4d66de8146200060f578063c7f8fb9814620005d0578063db87f4fa146200054a578063e18e3a681462000520578063e650e1cd1462000389578063f2fde38b1462000354578063f31f676d14620002b8578063f33e690d146200027f5763fda9c2b2146200012157600080fd5b346200027c57806003193601126200027c57338152600260209081528282205490936001600160a01b039182166200026e578254845163485cc95560e01b8782015233602482015290831660448083019190915281526080810191906001600160401b03808411828510176200025b578387528460015416906102d380840194608086019287841090841117620002485750620014238639528560a0830152620001d260c0607f1993018262001142565b03019083f080156200023e57916200020e91849316938491338152600287528181208360018060a01b03198254161790556003875220620011cb565b80518281527f9794be21cc98149ec91986dd1a11aeca888fcd5eb920c7ac0efe970022701cdf843392a251908152f35b83513d84823e3d90fd5b634e487b7160e01b895260419052602488fd5b634e487b7160e01b865260418352602486fd5b8351631068045560e01b8152fd5b80fd5b509034620002b4576020366003190112620002b457602090620002ab620002a56200108a565b620012aa565b90519015158152f35b5080fd5b5091903462000350576020806003193601126200034c576001600160a01b0393909284620002e56200108a565b1682526020528181209382519081946020875493848152019684526020842093915b83831062000332576200032e878762000323828c0383620010bd565b519182918262001184565b0390f35b845481168852968101966001948501949092019162000307565b8380fd5b8280fd5b50346200027c5760203660031901126200027c5762000386620003766200108a565b620003806200134e565b62001245565b80f35b509034620002b4576020908160031936011262000350576001600160a01b039081620003b46200108a565b169485855260038452818520958251808887829a54938481520190895287892092895b898282106200050757505050620003f192500388620010bd565b855283528084208151808286829454938481520190885286882092885b88828210620004ee575050506200042892500382620010bd565b620004378651825190620011f4565b93620004438562001218565b946200045284519687620010bd565b80865262000463601f199162001218565b01903690860137845b86518110156200049c578084620004866001938a62001230565b511662000494828862001230565b52016200046c565b5090939492945b8151811015620004df578083620004bd6001938562001230565b5116620004d7620004d0838851620011f4565b8962001230565b5201620004a3565b8451806200032e888262001184565b855489168452600195860195879550930192016200040e565b85548a1684526001958601958d955093019201620003d7565b509034620002b45781600319360112620002b457905490516001600160a01b039091168152602090f35b509034620002b457602090602060031936011262000350576001600160a01b039283620005766200108a565b16815260036020528181209382519081946020875493848152019684526020842093915b838310620005b6576200032e878762000323828c0383620010bd565b84548116885296810196600194850194909201916200059a565b509034620002b4576020366003190112620002b4576020916001600160a01b0390829082620005fe6200108a565b168152600285522054169051908152f35b5091346200035057602036600319011262000350576200062e6200108a565b60008051602062004a4b8339815191528054909281851c60ff161592916001600160401b03919082811680159081620007b6575b6001149081620007ab575b159081620007a1575b5062000792576001600160401b0319811660011786558462000776575b506200069e62001389565b620006a862001389565b620006b33362001245565b620006bd62001389565b86546001600160a01b03199081166001600160a01b03948516178855865190939290916132f580840192909190831184841017620007635750908291620016f68339039087f080156200075957169060015416176001556200071d578280f35b805460ff60401b1916905551600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a138808280f35b85513d88823e3d90fd5b634e487b7160e01b8a5260419052602489fd5b6001600160481b0319166001600160401b011785553862000693565b50855163f92ee8a960e01b8152fd5b9050153862000676565b303b1591506200066d565b86915062000662565b50346200027c57816003193601126200027c57620007dc6200108a565b91620007e7620010a6565b936001600160a01b03938416918215620008d557848616918215620008c7576200081187620012aa565b15620008b9578495855b8587528260205283872080548210156200089a57826200083d83889362001113565b90549060031b1c161462000854576001016200081b565b5050602093955060008051602062004a8b833981519152949660015b620008905762000888918789528552828820620011cb565b51908152a280f35b505051908152a280f35b50505060008051602062004a8b83398151915294966020949662000870565b9051631a7387bd60e11b8152fd5b905163e6c4247b60e01b8152fd5b5163e6c4247b60e01b8152fd5b509034620002b45781600319360112620002b45760015490516001600160a01b039091168152602090f35b509034620002b45781600319360112620002b457805191828201906001600160401b038211848310176200096957506200032e9350815260058252640352e302e360dc1b60208301525191829160208352602083019062001142565b634e487b7160e01b815260418552602490fd5b509034620002b45780600319360112620002b4576200099a6200108a565b6001600160a01b0390811683526003602052818320805460243594908510156200027c5750602093620009cd9162001113565b90549060031b1c169051908152f35b50346200027c57816003193601126200027c57620009f96200108a565b6001600160a01b03908116825260209390935281812080546024359492908510156200027c575060209362000a2e9162001113565b92905490519260031b1c168152f35b509034620002b45781600319360112620002b457600080516020620049eb8339815191525490516001600160a01b039091168152602090f35b50346200027c57806003193601126200027c5762000a936200134e565b600080516020620049eb83398151915280546001600160a01b0319811690915581906001600160a01b031660008051602062004a2b8339815191528280a380f35b50346200027c57806003193601126200027c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300362000b31576020905160008051602062004a0b8339815191528152f35b5163703e46dd60e11b8152fd5b50919080600319360112620003505762000b576200108a565b60249390919084356001600160401b038111620002b45736602382011215620002b4578085013562000b8981620010f7565b9462000b9885519687620010bd565b81865260209182870193368a838301011162000da7578186928b8693018737880101526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811630811490811562000d89575b5062000d795762000c026200134e565b81169585516352d1902d60e01b815283818a818b5afa86918162000d40575b5062000c3e575050505050505191634c9c8ce360e01b8352820152fd5b9088888894938c60008051602062004a0b8339815191529182810362000d2b5750853b1562000d17575080546001600160a01b031916821790558451889392917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8580a282511562000cf857505062000ce99582915190845af4913d1562000ced573d62000cda62000cd082620010f7565b92519283620010bd565b81528581943d92013e620013ba565b5080f35b5060609250620013ba565b95509550505050503462000d0b57505080f35b63b398979f60e01b8152fd5b8651634c9c8ce360e01b8152808501849052fd5b8751632a87526960e21b815280860191909152fd5b9091508481813d831162000d71575b62000d5b8183620010bd565b8101031262000d6d5751903862000c21565b8680fd5b503d62000d4f565b855163703e46dd60e11b81528890fd5b90508160008051602062004a0b833981519152541614153862000bf2565b8580fd5b509134620003505781600319360112620003505762000dc96200108a565b9162000dd4620010a6565b9062014a334614158062000fbe575b62000f9f575b84936001600160a01b039081169281169190855b84885285602052828820805482101562000f92578262000e1f83879362001113565b90549060031b1c161462000e365760010162000dfd565b5090919293945060015b62000e64575b858460008051602062004a6b8339815191526020868651908152a280f35b83865284602052818620865b81548082101562000f715783908662000e8a848662001113565b939054600394851b1c161462000ea557505060010162000e70565b916000989195969798949394199283810190811162000f5e579062000ee38562000ed462000f01948962001113565b9054908a1b1c16918762001113565b90919060018060a01b038084549260031b9316831b921b1916179055565b835490811562000f4b575091602095939160008051602062004a6b833981519152979593019262000f33848462001113565b81939154921b1b19169055555b909184935062000e46565b634e487b7160e01b8a5260319052602489fd5b634e487b7160e01b8b526011835260248bfd5b5050505060008051602062004a6b8339815191529293509060209162000f40565b5050909192939462000e40565b62000faa82620012aa565b62000de95751631a7387bd60e11b81529050fd5b5062aa37dc46141562000de3565b50913462000350576020366003190112620003505762000feb6200108a565b62000ff56200134e565b6001600160a01b031691821562001041575050600180546001600160a01b031916821790557f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca038280a280f35b5163340aafcd60e11b8152fd5b905082346200035057602036600319011262000350576020926001600160a01b039190826200107c6200108a565b168152600285522054168152f35b600435906001600160a01b0382168203620010a157565b600080fd5b602435906001600160a01b0382168203620010a157565b601f909101601f19168101906001600160401b03821190821017620010e157604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111620010e157601f01601f191660200190565b80548210156200112c5760005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b919082519283825260005b8481106200116f575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016200114d565b602090602060408183019282815285518094520193019160005b828110620011ad575050505090565b83516001600160a01b0316855293810193928101926001016200119e565b80549190600160401b831015620010e1578262000ee3916001620011f29501815562001113565b565b919082018092116200120257565b634e487b7160e01b600052601160045260246000fd5b6001600160401b038111620010e15760051b60200190565b80518210156200112c5760209160051b010190565b6001600160a01b039081169081156200129157600080516020620049eb83398151915280546001600160a01b0319811684179091551660008051602062004a2b833981519152600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b6001600160a01b0381811691821562001346573b156200133f5760206004926040519384809263c45a015560e01b82525afa60009281620012f9575b50620012f3575050600090565b16301490565b6020939193813d60201162001336575b816200131860209383620010bd565b81010312620002b457519082821682036200027c57509138620012e6565b3d915062001309565b5050600090565b505050600090565b600080516020620049eb833981519152546001600160a01b031633036200137157565b60405163118cdaa760e01b8152336004820152602490fd5b60ff60008051602062004a4b8339815191525460401c1615620013a857565b604051631afcd79f60e31b8152600490fd5b90620013e35750805115620013d157805190602001fd5b60405163d6bda27560e01b8152600490fd5b8151158062001418575b620013f6575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15620013ed56fe60806040526102d38038038061001481610194565b92833981019060408183031261018f5780516001600160a01b03811680820361018f5760208381015190936001600160401b03821161018f570184601f8201121561018f5780519061006d610068836101cf565b610194565b9582875285838301011161018f57849060005b83811061017b57505060009186010152813b15610163577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b03191682179055604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28351156101455750600080848461012c96519101845af4903d1561013c573d61011c610068826101cf565b908152600081943d92013e6101ea565b505b6040516085908161024e8239f35b606092506101ea565b9250505034610154575061012e565b63b398979f60e01b8152600490fd5b60249060405190634c9c8ce360e01b82526004820152fd5b818101830151888201840152869201610080565b600080fd5b6040519190601f01601f191682016001600160401b038111838210176101b957604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116101b957601f01601f191660200190565b9061021157508051156101ff57805190602001fd5b60405163d6bda27560e01b8152600490fd5b81511580610244575b610222575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561021a56fe60806040527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54600090819081906001600160a01b0316368280378136915af43d82803e15604b573d90f35b3d90fdfea2646970667358221220f991ed74f304b9c17dd923ab00865abe454cbe0ec85e46e1a34398424cf29dc164736f6c6343000816003360a080604052346100cd57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166100be57506001600160401b036002600160401b031982821601610079575b6040516132229081620000d38239608051818181610eb2015261114c0152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610059565b63f92ee8a960e01b8152600490fd5b600080fdfe6080604081815260048036101561002c575b505050361561002457610022612a43565b005b610022612a43565b600092833560e01c908163067e3945146119b857508063117d37e6146119925780631aa81aca1461193a578063232f4965146118d85780632d06177a146117f2578063308e401e146117b957806336d4a20a146116365780633aecd0e3146115a65780634612bd4f14611579578063461d7cbc146115275780634782f77914611479578063485cc955146113135780634f1ef286146110d05780634f8632ba146110a757806352cdd49614610f0457806352d1902d14610e9d57806358ad387414610e435780635e35359e14610d8257806366168bd714610c9e578063715018a614610c45578063760450d714610c165780637707887214610bf05780638da5cb5b14610bba5780638fcdc75214610b945780639872d4fe14610912578063a7506189146108cf578063ac18de43146107f7578063ad3cb1cc146107ba578063b394927c14610751578063bca9f6851461071a578063c01498ac146104d5578063c45a0155146104ad578063c45acd2314610484578063cb1b0e3414610437578063d5250681146103df578063d61ffdd11461033c578063e18e3a681461030f578063ef5cfb8c14610292578063f2fde38b14610262578063f3ae2415146102375763fdff9b4d0361001157346102335760203660031901126102335760209260ff918391906001600160a01b03610222611a51565b168252855220541690519015158152f35b8280fd5b50346102335760203660031901126102335760209260ff918391906001600160a01b03610222611a51565b833461028f57602036600319011261028f5761028c61027f611a51565b610287612c3d565b6129e1565b80f35b80fd5b5034610233576020366003190112610233576102ac611a51565b928260018060a01b0360008051602061314d833981519152541633141591826102f9575b50506102eb57506102e2602092612629565b90519015158152f35b90516305d1403760e01b8152fd5b60ff9250338152836020522054161582386102d0565b50503461033857816003193601126103385760025490516001600160a01b039091168152602090f35b5080fd5b50913461028f5760e036600319011261028f57610357611a51565b90610360611a67565b610368611a7d565b918460018060a01b0360008051602061314d833981519152541633141591826103c9575b50506103b9576103ad93945060c4359260a435926084359260643592612326565b82519182526020820152f35b505050516305d1403760e01b8152fd5b60ff92503381528760205220541615843861038c565b5034610233576020366003190112610233576103f9611a51565b610401612c3d565b6001600160a01b031691821561042a575050600280546001600160a01b03191691909117905580f35b5163466d7fef60e01b8152fd5b505034610338578060031936011261033857602090610454611a51565b61047a61045f611a67565b6002546003546001600160a01b039491908516908516612b0c565b1615159051908152f35b50503461033857816003193601126103385760035490516001600160a01b039091168152602090f35b505034610338578160031936011261033857905490516001600160a01b039091168152602090f35b50346102335781600319360112610233576104ee611a51565b60008051602061314d833981519152546001600160a01b039460243591861633141580610705575b6106f5578583169283156106e55782156106d55761053390613069565b9586169384156106c75761054687612e2b565b156106b95785516370a0823160e01b81523082820152602097908881602481895afa9081156106af579085918591610679575b501061066a57878461059e928951938492839263095ea7b360e01b8452878401611c47565b038186895af1801561066057610633575b50843b1561033857855163b6b55f2560e01b8152908101839052818160248183895af180156106295790879291610611575b50507e8bfa58790ca176ab7c8a54d2fa2a44b1b1c883248e56849845d29a6e944aa4918551908152a35160018152f35b81925061061d90611a8c565b61028f578086916105e1565b86513d84823e3d90fd5b61065290883d8a11610659575b61064a8183611aeb565b810190611c2f565b50386105af565b503d610640565b87513d85823e3d90fd5b508551631e9acf1760e31b8152fd5b8092508a8092503d83116106a8575b6106928183611aeb565b810103126106a35784905138610579565b600080fd5b503d610688565b88513d86823e3d90fd5b855163324aced760e01b8152fd5b85516301dbb3ff60e61b8152fd5b8551631f2a200560e01b81528590fd5b8551630705e8cf60e21b81528590fd5b84516305d1403760e01b81528490fd5b503381528360205260ff858220541615610516565b5050346103385760203660031901126103385760209061074061073b611a51565b613069565b90516001600160a01b039091168152f35b505034610338576060366003190112610338576107b69061079a610773611a51565b61077b611a67565b610783611a7d565b6003543093919291906001600160a01b0316612e95565b9251918252602082015260408101919091529081906060820190565b0390f35b50503461033857816003193601126103385780516107b6916107db82611ab5565b60058252640352e302e360dc1b60208301525191829182611b5d565b5082903461033857602036600319011261033857610813611a51565b9061081c612c3d565b6001600160a01b038281168085526020839052858520549093919060ff16156108bf5784958486528360205280862060ff19815416905551937fef69f7d97228658c92417be1b16b19058315de71fecb435d07b7d23728b6bd318680a2845416803b156108bb578385816108a08296829663498e78b160e01b84523091840161211d565b03925af16108ab5750f35b6108b490611a8c565b61028f5780f35b8480fd5b855163607e454560e11b81528390fd5b5050346103385780600319360112610338576020906108ec611a51565b61047a6108f7611a67565b6002546003546001600160a01b039491908516908516612a71565b509190346103385760c0366003190112610338576001600160a01b039280359190604435858116908190036106a357606435918683168093036106a357608435968715158098036106a3578060008051602061314d833981519152541633141580610b7f575b610b705780600254168015610b60579086929186519063095ea7b360e01b825281806109aa60209b8c94888401611c47565b03818c895af18015610b5657918992918392610b39575b506002541660e48b895194859384926313dcfc5960e01b8452898985015260243560248501528a60448501528b606485015260848401523060a484015260a43560c48401525af1978815610b2e578098610a84575b5050865160011015610a6f5750606086977f9dbb2ce3151d495d487bd63afd1c74999ef4fc70f035600241741f63b0263ab992866107b6989901519087519283528983015286820152a351928284938452830190611b29565b603290634e487b7160e01b6000525260246000fd5b909197503d8082843e610a978184611aeb565b820190878383031261028f5782516001600160401b0393848211610233570182601f82011215610338578051938411610b19578360051b91885194610ade8b850187611aeb565b8552898086019383010193841161028f575088809101915b838310610b095750505050953880610a16565b8251815291810191899101610af6565b60418a634e487b7160e01b6000525260246000fd5b8651903d90823e3d90fd5b610b4f908a3d8c116106595761064a8183611aeb565b50386109c1565b87513d8b823e3d90fd5b855163179ce99f60e01b81528390fd5b5083516305d1403760e01b8152fd5b503387528160205260ff858820541615610978565b505034610338576020366003190112610338576020906102e2610bb5611a51565b612e2b565b50503461033857816003193601126103385760008051602061314d8339815191525490516001600160a01b039091168152602090f35b50503461033857602036600319011261033857602090610740610c11611a51565b6122a7565b505034610338578160031936011261033857602090517316613524e02ad97edfef371bc883f2f5d6c480a58152f35b833461028f578060031936011261028f57610c5e612c3d565b60008051602061314d83398151915280546001600160a01b031981169091556000906001600160a01b031660008051602061318d8339815191528280a380f35b509034610233578060031936011261023357610cb8611a51565b90602435918215610d725781516323b872dd60e01b81523381860152306024820152604481018490526001600160a01b0391909116939060208160648189895af1908115610d68578691610d49575b5015610d3b5750519081527fcbc4a4091b012bb1329c38bbbb15455f5cac5aa3673da0a7f38cd61a4f49551760203392a380f35b90516312171d8360e31b8152fd5b610d62915060203d6020116106595761064a8183611aeb565b38610d07565b83513d88823e3d90fd5b8151631f2a200560e01b81528490fd5b503461023357606036600319011261023357610d9c611a51565b610da4611a67565b60008051602061314d833981519152546001600160a01b0390811633141580610e2e575b6106f5579184939186602094610df4975180988196829563a9059cbb60e01b8452604435918401611c47565b0393165af1908115610e255750610e09575080f35b610e219060203d6020116106595761064a8183611aeb565b5080f35b513d84823e3d90fd5b503386528360205260ff858720541615610dc8565b82843461028f578160031936011261028f5750610e5e611a51565b610e66611a67565b610e8e60018060a01b03918260025416938360035416610e8883838389612a71565b95612b0c565b81845193168352166020820152f35b50913461028f578060031936011261028f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610ef7576020905160008051602061316d8339815191528152f35b5163703e46dd60e11b8152fd5b50913461028f578160031936011261028f57610f1e611a51565b60008051602061314d833981519152546001600160a01b03946024359391861633141580611092575b61108457839580841693841561107457610f6090613069565b169384156110655715611001575b8515610ff357833b15610338578451632e1a7d4d60e01b8152908101869052818160248183885af18015610fe957610fd5575b50507f61131ffd80a30d321524ddfde6ceb003ce05f619e5ff737ffce9b8594fd13837602080958551908152a35160018152f35b610fdf8291611a8c565b61028f5780610fa1565b85513d84823e3d90fd5b8451631f2a200560e01b8152fd5b84516370a0823160e01b81523081830152909550602081602481875afa908115610fe9578291611033575b5094610f6e565b90506020813d60201161105d575b8161104e60209383611aeb565b810103126106a357513861102c565b3d9150611041565b5084516301dbb3ff60e61b8152fd5b8651630705e8cf60e21b81528390fd5b84516305d1403760e01b8152fd5b503382528060205260ff858320541615610f47565b50503461033857816003193601126103385760015490516001600160a01b039091168152602090f35b509080600319360112610233576110e5611a51565b60249390919084356001600160401b0381116103385736602382011215610338578085013561111381611b0e565b9461112085519687611aeb565b81865260209182870193368a838301011161130f578186928b8693018737880101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081163081149081156112f3575b506112e357611185612c3d565b81169585516352d1902d60e01b815283818a818b5afa8691816112b0575b506111bf575050505050505191634c9c8ce360e01b8352820152fd5b9088888894938c60008051602061316d8339815191529182810361129b5750853b15611287575080546001600160a01b031916821790558451889392917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8580a2825115611269575050610e219582915190845af4913d1561125f573d61125161124882611b0e565b92519283611aeb565b81528581943d92013e6130e9565b50606092506130e9565b95509550505050503461127b57505080f35b63b398979f60e01b8152fd5b8651634c9c8ce360e01b8152808501849052fd5b8751632a87526960e21b815280860191909152fd5b9091508481813d83116112dc575b6112c88183611aeb565b810103126112d8575190386111a3565b8680fd5b503d6112be565b855163703e46dd60e11b81528890fd5b90508160008051602061316d8339815191525416141538611178565b8580fd5b503461023357816003193601126102335761132c611a51565b90611335611a67565b6000805160206131cd83398151915292835460ff81871c16159360018060401b03821680159081611471575b6001149081611467575b15908161145e575b5061145057506001600160401b03198116600117855583611435575b506113986130ba565b6113a06130ba565b6113a9816129e1565b6113b16130ba565b85546001600160a01b0319908116331787556001805482166001600160a01b0393841617905591169081611426575b50506113ea578280f35b805460ff60401b1916905551600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a138808280f35b600254161760025538806113e0565b6001600160481b0319166001600160401b011784553861138f565b865163f92ee8a960e01b8152fd5b90501538611373565b303b15915061136b565b869150611361565b50346102335781600319360112610233576001600160a01b0390803582811691908290036108bb576024359260008051602061314d833981519152541633141580611512575b611504574783116114f657508380809381938282156114ed575bf1156114e3575080f35b51903d90823e3d90fd5b506108fc6114d9565b8351631e9acf1760e31b8152fd5b83516305d1403760e01b8152fd5b503385528060205260ff8486205416156114bf565b50503461033857606036600319011261033857602090611545611a51565b611571611550611a67565b611558611a7d565b9060018060a01b03938460025416856003541690612b7b565b915191168152f35b5050346103385760203660031901126103385760209061159f61159a611a51565b61225f565b9051908152f35b50919034610338576020928360031936011261023357836001600160a01b036115cd611a51565b169160248451809481936370a0823160e01b835230908301525afa92831561162b57926115fc575b5051908152f35b9091508281813d8311611624575b6116148183611aeb565b810103126106a3575190386115f5565b503d61160a565b8251903d90823e3d90fd5b50913461028f57606036600319011261028f57611651611a51565b611659611a67565b611661611a7d565b60008051602061314d833981519152546001600160a01b039391908416331415806117a4575b6117945783600354168015611784576116b8936020938851958694859384936379bc57d560e01b85528d850161223d565b03915afa90811561177a57839161174b575b5016801561173c578282918582518094819363d294f09360e01b83525af1908115611732578291611703575b5082519182526020820152f35b90506117259150823d841161172b575b61171d8183611aeb565b810190611ba6565b836116f6565b503d611713565b83513d84823e3d90fd5b5050516301dbb3ff60e61b8152fd5b61176d915060203d602011611773575b6117658183611aeb565b810190612137565b386116ca565b503d61175b565b84513d85823e3d90fd5b86516329f7dfeb60e21b81528890fd5b85516305d1403760e01b81528790fd5b503385528660205260ff868620541615611687565b82843461028f57602036600319011261028f57506117dd6117d8611a51565b612156565b82519182526001600160a01b03166020820152f35b50346102335760203660031901126102335761180c611a51565b90611815612c3d565b6001600160a01b038281169384156118c9578486528260205260ff81872054166118ba57908593929185855282602052808520600160ff1982541617905551947f3b4a40cccf2058c593542587329dd385be4f0b588db5471fbd9598e56dd7093a8580a283541690813b156118b65783856118a1819593829463bd583bff60e01b84523091840161211d565b03925af16118ad575080f35b61028c90611a8c565b8380fd5b51630917033d60e31b81529050fd5b51630705e8cf60e21b81529050fd5b82843461028f57606036600319011261028f57506119226118f7611a51565b6118ff611a67565b611907611a7d565b6002546003549193916001600160a01b039081169116612c8a565b82516001600160701b03928316815291166020820152f35b503461023357602036600319011261023357611954611a51565b61195c612c3d565b6001600160a01b0316918215611985575050600380546001600160a01b03191691909117905580f35b51637a44db9560e01b8152fd5b5050346103385760203660031901126103385760209061159f6119b3611a51565b61209f565b9390503461028f5761010036600319011261028f576119d5611a51565b916119de611a67565b946119e7611a7d565b928560018060a01b0360008051602061314d83398151915254163314159182611a3b575b5050611a2f576107b68561079a60e43560c43560a4356084356064358a8e8d611d0f565b6305d1403760e01b8152fd5b60ff925033815284602052205416158538611a0b565b600435906001600160a01b03821682036106a357565b602435906001600160a01b03821682036106a357565b6044359081151582036106a357565b6001600160401b038111611a9f57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b03821117611a9f57604052565b602081019081106001600160401b03821117611a9f57604052565b601f909101601f19168101906001600160401b03821190821017611a9f57604052565b6001600160401b038111611a9f57601f01601f191660200190565b90815180825260208080930193019160005b828110611b49575050505090565b835185529381019392810192600101611b3b565b6020808252825181830181905290939260005b828110611b9257505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611b70565b91908260409103126106a3576020825192015190565b6001600160a01b039182168152918116602083015291151560408201529116606082015260800190565b81810292918115918404141715611bf957565b634e487b7160e01b600052601160045260246000fd5b8115611c19570490565b634e487b7160e01b600052601260045260246000fd5b908160209103126106a3575180151581036106a35790565b6001600160a01b039091168152602081019190915260400190565b90949392606092608083019615158352602083015260408201520152565b60009060033d11611c8d57565b905060046000803e60005160e01c90565b600060443d10611cfb57604051600319913d83016004833e81516001600160401b03918282113d602484011117611cfe57818401948551938411611d06573d85010160208487010111611cfe5750611cfb92910160200190611aeb565b90565b949350505050565b50949350505050565b93979590949692919660018060a01b036002541690811561208d576003546001600160a01b0316801561207b576001600160a01b03611d518b8a8a8588612b7b565b161561206957604080516323000df760e21b81529182908190611d7a908e8d8d60048601611bbc565b0381865afa9081600091600093612046575b50611ffc575b50506040519160208380611db58863095ea7b360e01b9586845260048401611c47565b038160006001600160a01b038c165af1908115611fd3578b93602092611fdf575b50600254604051918252909384918291611dfc916001600160a01b031660048401611c47565b038160006001600160a01b038c165af1908115611fd357606095610124948b94600094611fb4575b5060018060a01b0360025416926040519d8e988997635a47ddc360e01b895260018060a01b038d1660048a01528d60018060a01b031660248a0152151560448901526064880152608487015260a486015260c48501523060e48501526101048401525af1936000928584978597611f6d575b50611f1d57611ea3611c80565b6308c379a014611eea575b60405162461bcd60e51b8152602060048201526014602482015273105919081b1a5c5d5a591a5d1e4819985a5b195960621b6044820152606490fd5b611ef2611c9e565b80611efd5750611eae565b60405162461bcd60e51b8152908190611f199060048301611b5d565b0390fd5b6040516001600160a01b0391821693909116917f316bf8459750d7b31f9335b761a7a2460a2072993ea64d6f11bf0c450c552c7591908190611f659089908b90899085611c62565b0390a3929190565b9491975095506060843d606011611fac575b81611f8c60609383611aeb565b8101031261028f5750825195604060208501519401519693969538611e96565b3d9150611f7f565b611fcc9060203d6020116106595761064a8183611aeb565b5038611e24565b6040513d6000823e3d90fd5b611ff590833d85116106595761064a8183611aeb565b5038611dd6565b929a9150925061200b93612bdf565b81978198605081029080820460501490151715611bf9576064900491605081029080820460501490151715611bf95760649004913880611d92565b909250612062915060403d60401161172b5761171d8183611aeb565b9138611d8c565b6040516301dbb3ff60e61b8152600490fd5b6040516329f7dfeb60e21b8152600490fd5b60405163179ce99f60e01b8152600490fd5b6001600160a01b03906120b190613069565b168015612117576020602491604051928380926370a0823160e01b82523060048301525afa908115611fd3576000916120e8575090565b90506020813d60201161210f575b8161210360209383611aeb565b810103126106a3575190565b3d91506120f6565b50600090565b6001600160a01b0391821681529116602082015260400190565b908160209103126106a357516001600160a01b03811681036106a35790565b61215f90613069565b6001600160a01b0381169190821590811561222c575b50612224576040516246613160e11b8152306004820152602092908381602481855afa908115611fd35784906000926121f6575b5060405163f7c618c160e01b81529192829060049082905afa938415611fd3576000946121d7575b50509190565b6121ee929450803d10611773576117658183611aeb565b9138806121d1565b809250813d831161221d575b61220c8183611aeb565b810103126106a357518360046121a9565b503d612202565b600091508190565b6122369150612e2b565b1538612175565b6001600160a01b03918216815291166020820152901515604082015260600190565b6001600160a01b039061227190613069565b168015612117576020602491604051928380926246613160e11b82523060048301525afa908115611fd3576000916120e8575090565b6001600160a01b03906122b990613069565b1680156121175760206004916040519283809263f7c618c160e01b82525afa908115611fd3576000916122ea575090565b611cfb915060203d602011611773576117658183611aeb565b8051156123105760200190565b634e487b7160e01b600052603260045260246000fd5b60025490976001600160a01b03918216979496909591949391881561208d578560035416801561207b57606489106125b45761236684868d8a948e612b7b565b16998a156120695760409a8b519a6370a0823160e01b8c523060048d015260209b8c81602481865afa9081156125a95760009161257c575b508b8110612574575b508a1561255f578b8b8e969594936123d6936000895180968195829463095ea7b360e01b845260048401611c47565b03925af1928315612554578b988a958e60009461010497612536575b505086600254169288519c8d98899763037b79b160e21b8952169b8c6004890152169b8c60248801528a151560448801526064870152608486015260a48501523060c485015260e48401525af19586600095600098612511575b506124d057888861245b611c80565b6308c379a0146124a2575b606491519062461bcd60e51b82526004820152601760248201527614995b5bdd99481b1a5c5d5a591a5d1e4819985a5b1959604a1b6044820152fd5b6124aa611c9e565b806124b55750612466565b825162461bcd60e51b8152908190611f199060048301611b5d565b7ff1c6b4a8d9333d8b05efe1f29dc513e4228b99f31cee9d12247683adbd2004b09395975061250a908786989a9694965194859485611c62565b0390a39190565b90975061252c919550893d8b1161172b5761171d8183611aeb565b949094963861244c565b8161254c92903d106106595761064a8183611aeb565b508e386123f2565b85513d6000823e3d90fd5b50505050505050505092505050600090600090565b9a50386123a7565b90508c81813d83116125a2575b6125938183611aeb565b810103126106a357513861239e565b503d612589565b8e513d6000823e3d90fd5b5050505050505092505050600090600090565b90815180825260208080930193019160005b8281106125e7575050505090565b83516001600160a01b0316855293810193928101926001016125d9565b909161261b611cfb936040845260408401906125c7565b916020818403910152611b29565b6001600160a01b0390600090808316156129cf5761264690613069565b908282169182156120695761265a90612e2b565b156129bd5760408051936246613160e11b855260049030828701526020958681602481895afa908115612977578591612990575b501561298157825163f7c618c160e01b815286818481895afa90811561297757859161295a575b50168251956370a0823160e01b9182885230848901528188602481845afa978815612950578698612921575b5085928551986126f08a611ab5565b6001998a81528436818301378961270682612303565b527316613524e02ad97edfef371bc883f2f5d6c480a5803b1561291d5761274c918a9187838b8d519687958694859363f9f031df60e01b855284015260248301906125c7565b03925af1908161290a575b50612902575b84156128a8575b865191825230868301528382602481865afa91821561289e57889261286f575b508082116127ea5750505050156127dc575090816127d66000805160206131ad8339815191529351916127b683611ad0565b8383528051936127c585611ad0565b845260003681375192839283612604565b0390a290565b905163e016b9c560e01b8152fd5b90809450969296959491950392831161285c575050816127d6916000805160206131ad833981519152959493519361282185611ab5565b88855285368187013782519561283687611ab5565b898752368188013761284785612303565b5261285185612303565b525192839283612604565b634e487b7160e01b825260119052602490fd5b9091508381813d8311612897575b6128878183611aeb565b810103126106a357519038612784565b503d61287d565b87513d8a823e3d90fd5b8651631e8c5c8960e11b8152848188818c8e5af18991816128e3575b506128d0575b50612764565b6128db575b386128ca565b8994506128d5565b6128fb919250863d88116106595761064a8183611aeb565b90386128c4565b89945061275d565b61291690999199611a8c565b9738612757565b8980fd5b9097508181813d8311612949575b6129398183611aeb565b8101031261130f575196386126e1565b503d61292f565b85513d88823e3d90fd5b6129719150873d8911611773576117658183611aeb565b386126b5565b84513d87823e3d90fd5b50905163afb0be3360e01b8152fd5b90508681813d83116129b6575b6129a78183611aeb565b810103126108bb57513861268e565b503d61299d565b60405163324aced760e01b8152600490fd5b604051630705e8cf60e21b8152600490fd5b6001600160a01b03908116908115612a2a5760008051602061314d83398151915280546001600160a01b0319811684179091551660008051602061318d833981519152600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b6040513481527f6c703791f399558807424f489ccd811c72b4ff0b74af547264fad7c646776df060203392a2565b6001600160a01b039081169290919083158015612b02575b612af85760405163874029d960e01b81529083166004820152938216602485015260016044850152166064830152602090829060849082905afa60009181612ad7575b50611cfb5750600090565b612af191925060203d602011611773576117658183611aeb565b9038612acc565b5050505050600090565b5082821615612a89565b6001600160a01b039081169290919083158015612b71575b612af85760405163874029d960e01b81529083166004820152938216602485015260006044850152166064830152602090829060849082905afa60009181612ad75750611cfb5750600090565b5082821615612b24565b909391926001600160a01b03918216918215908115612bd4575b50612af857602093612bbd6040519687958694859463874029d960e01b865260048601611bbc565b03915afa60009181612ad75750611cfb5750600090565b905085161538612b95565b9193929093801580612c35575b6121d157612c0381612bfe8486611be6565b611c0f565b85811115612c2d575090612bfe612c1a9286611be6565b90808211612c2757509190565b90509190565b945050509190565b508115612bec565b60008051602061314d833981519152546001600160a01b03163303612c5e57565b60405163118cdaa760e01b8152336004820152602490fd5b51906001600160701b03821682036106a357565b6001600160a01b03959493919086168015612e1c5790612cc69291604051808095819463874029d960e01b83526020998a978a60048601611bbc565b03915afa60009181612dfd575b50612ce5575050509050600090600090565b8416938415612df057604051630240bc6b60e21b815290606082600481895afa92836000938495612d94575b50612d255750505050509050600090600090565b90600491839580869960405195868092630dfe168160e01b82525afa938491600095612d75575b5050612d5b5750505050509190565b8116911603612d6a5750509190565b9350905038806121d1565b612d8c929550803d10611773576117658183611aeb565b923880612d4c565b939094506060843d606011612de8575b81612db160609383611aeb565b8101031261028f57612dc284612c76565b906040612dd0888701612c76565b95015163ffffffff81160361028f5750929338612d11565b3d9150612da4565b5050509050600090600090565b612e15919250843d8611611773576117658183611aeb565b9038612cd3565b50505050509050600090600090565b6001600160a01b031680156121175760405190631703e5f960e01b825260048201526020816024817316613524e02ad97edfef371bc883f2f5d6c480a55afa908115611fd357600091612e7c575090565b611cfb915060203d6020116106595761064a8183611aeb565b93946001600160a01b0394909390851680156130575790612ed1929160405180809581946379bc57d560e01b835260209889976004850161223d565b03915afa8015611fd357849160009161303a575b5016801561302a57600091600095600095604051916370a0823160e01b835216908160048201528281602481875afa60009181612ffb575b50612ff3575b506040516326ad4fc560e11b8152600481018290528281602481875afa60009181612fc4575b50612fbc575b50819060246040518095819363a1ac4d1360e01b835260048301525afa918291600093612f8c575b5050612f84575b50929190565b925038612f7e565b9080929350813d8311612fb5575b612fa48183611aeb565b810103126106a35751903880612f77565b503d612f9a565b965081612f4f565b9091508381813d8311612fec575b612fdc8183611aeb565b810103126106a357519038612f49565b503d612fd2565b935038612f23565b9091508381813d8311613023575b6130138183611aeb565b810103126106a357519038612f1d565b503d613009565b5050915050600090600090600090565b6130519150833d8511611773576117658183611aeb565b38612ee5565b50505050915050600090600090600090565b6001600160a01b03168015612117576040519063b9a09fd560e01b825260048201526020816024817316613524e02ad97edfef371bc883f2f5d6c480a55afa908115611fd3576000916122ea575090565b60ff6000805160206131cd8339815191525460401c16156130d757565b604051631afcd79f60e31b8152600490fd5b9061311057508051156130fe57805190602001fd5b60405163d6bda27560e01b8152600490fd5b81511580613143575b613121575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561311956fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0c53cb8bc1a7200a84d0b66a538905a245c4915aace7f1ce5dc4a0ba107ebc15cf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122002544b2b4af61d0f5c71e158ade2358f73b1f39a51e036b5132c540407a595d364736f6c634300081600339016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004eded25de91df1aa08a4f9f092af9db2b2dcca271a4cf3c25ea14408938b3788fb2456407f694967c4ca02b5b73dabd141c9a971707d4d0cb500832ccfd35e52a26469706673582212204aeb95911bae3e8a92393dcf9a56e4c753b09e1d7318c0fc718b1af379c12bb964736f6c63430008160033