0 txs
281 calls
constructor
constructor(address yieldPassFactory_, uint64 expiryTime_, address aethirCheckerNodeLicense_, address aethirCheckerClaimAndWithdraw_)
functions
aethirCheckerClaimAndWithdraw
viewfunction aethirCheckerClaimAndWithdraw() view returns (address)
aethirCheckerNodeLicense
viewfunction aethirCheckerNodeLicense() view returns (address)
claimableYield
viewfunction claimableYield() view returns (uint256)
cliffSeconds
viewfunction cliffSeconds() view returns (uint48)
cumulativeYield
viewfunction cumulativeYield() view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
DOMAIN_VERSION
viewfunction DOMAIN_VERSION() view returns (string)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
IMPLEMENTATION_VERSION
viewfunction IMPLEMENTATION_VERSION() view returns (string)
name
viewfunction name() view returns (string)
orderIds
viewfunction orderIds(uint256 offset, uint256 count) view returns (uint256[])
PAUSE_ADMIN_ROLE
viewfunction PAUSE_ADMIN_ROLE() view returns (bytes32)
paused
viewfunction paused() view returns (bool)
signer
viewfunction signer() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
token
viewfunction token() view returns (address)
VALIDATED_NODES_TYPEHASH
viewfunction VALIDATED_NODES_TYPEHASH() view returns (bytes32)
yieldPassFactory
viewfunction yieldPassFactory() view returns (address)
claim
nonpayablefunction claim(address recipient, uint256 amount)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
harvest
nonpayablefunction harvest(bytes harvestData) returns (uint256)
initialize
nonpayablefunction initialize(uint48 cliffSeconds_, address signer_, bool isLicenseTransferUnlocked_)
onERC721Received
nonpayablefunction onERC721Received(address, address, uint256, bytes) returns (bytes4)
pause
nonpayablefunction pause()
redeem
nonpayablefunction redeem(address recipient, uint256[] tokenIds, bytes32 redemptionHash)
redelegate
nonpayablefunction redelegate(uint256[] tokenIds, address[] burnerWallets, uint64[] subscriptionExpiries)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setLicenseOriginalOwners
nonpayablefunction setLicenseOriginalOwners(uint256[] tokenIds, address[] owners)
setLicenseTransferUnlocked
nonpayablefunction setLicenseTransferUnlocked(bool isLicenseTransferUnlocked_)
setup
nonpayablefunction setup(address account, uint256[] tokenIds, bytes setupData) returns (address[])
unpause
nonpayablefunction unpause()
updateCliffSeconds
nonpayablefunction updateCliffSeconds(uint48 cliffSeconds_)
updateSigner
nonpayablefunction updateSigner(address signer_)
withdraw
nonpayablefunction withdraw(uint256[] tokenIds, bytes32 redemptionHash) returns (address)
events
CliffSecondsUpdated
event CliffSecondsUpdated(uint48 cliffSeconds)
EIP712DomainChanged
event EIP712DomainChanged()
LicenseTransferUnlocked
event LicenseTransferUnlocked(bool isLicenseTransferUnlocked)
Paused
event Paused(address account)
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)
SignerUpdated
event SignerUpdated(address signer)
Unpaused
event Unpaused(address account)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
HarvestCompleted
error HarvestCompleted()
HarvestNotCompleted
error HarvestNotCompleted()
InvalidCliff
error InvalidCliff()
InvalidExpiry
error InvalidExpiry()
InvalidLength
error InvalidLength()
InvalidRecipient
error InvalidRecipient()
InvalidShortString
error InvalidShortString()
InvalidSignature
error InvalidSignature()
InvalidTimestamp
error InvalidTimestamp()
InvalidTokenId
error InvalidTokenId()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StringTooLong
error StringTooLong(string str)
creation bytecode
0x61020080604052346102c157608081613493803803809161002082856102d8565b8339810103126102c1576100338161030f565b6020820151906001600160401b03821682036102c15782602092610067606061006060406004980161030f565b930161030f565b926040516100766040826102d8565b60148152858101907f416574686972205969656c6420416461707465720000000000000000000000008252604051916100b06040846102d8565b6003835287830191620312e360ec1b83526100ca81610323565b610120526100d7846104be565b61014052519020918260e05251902080610100524660a05260405190878201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261013f60c0826102d8565b5190206080523060c0526003805461ffff191661010017905561016052610180526101a0526001600160a01b03166101c08190526040516369bb04a160e11b815292839182905afa9081156102cd575f9161028f575b506001600160a01b03166101e052604051612e9c90816105f7823960805181612ad0015260a05181612b8d015260c05181612a9a015260e05181612b1f01526101005181612b45015261012051816108e401526101405181610910015261016051818181610235015281816104f6015281816105a101528181610d44015281816114e701526117f5015261018051818181610f5c015281816118c20152611ea601526101a0518181816102a6015281816110c101528181611466015261164b01526101c051818181610c1501528181611f98015261223e01526101e0518181816101c8015281816106220152818161079301526121e30152f35b90506020813d6020116102c5575b816102aa602093836102d8565b810103126102c1576102bb9061030f565b5f610195565b5f80fd5b3d915061029d565b6040513d5f823e3d90fd5b601f909101601f19168101906001600160401b038211908210176102fb57604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036102c157565b908151602081105f1461039d575090601f81511161035d57602081519101516020821061034e571790565b5f198260200360031b1b161790565b604460209160405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b6001600160401b0381116102fb57600154600181811c911680156104b4575b60208210146104a057601f811161046d575b50602092601f821160011461040c57928192935f92610401575b50508160011b915f199060031b1c19161760015560ff90565b015190505f806103e8565b601f1982169360015f52805f20915f5b868110610455575083600195961061043d575b505050811b0160015560ff90565b01515f1960f88460031b161c191690555f808061042f565b9192602060018192868501518155019401920161041c565b60015f52601f60205f20910160051c810190601f830160051c015b81811061049557506103ce565b5f8155600101610488565b634e487b7160e01b5f52602260045260245ffd5b90607f16906103bc565b908151602081105f146104e9575090601f81511161035d57602081519101516020821061034e571790565b6001600160401b0381116102fb57600254600181811c911680156105ec575b60208210146104a057601f81116105b9575b50602092601f821160011461055857928192935f9261054d575b50508160011b915f199060031b1c19161760025560ff90565b015190505f80610534565b601f1982169360025f52805f20915f5b8681106105a15750836001959610610589575b505050811b0160025560ff90565b01515f1960f88460031b161c191690555f808061057b565b91926020600181928685015181550194019201610568565b60025f52601f60205f20910160051c810190601f830160051c015b8181106105e1575061051a565b5f81556001016105d4565b90607f169061050856fe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611ba95750806302f3965e14611ab757806306fdde03146118b05780630d9f8738146117b657806312296506146115bf578063150b7a021461156a578063238ac93314611540578063248a9ca3146115165780632e15e461146114d25780632f2ff15d1461149557806331990da71461145157806336568abe1461140d5780633c33c5e214610ce45780633f4ba83a14610c7e578063425ad76214610c445780634e25e32614610c005780635231090f14610b315780635c975abb14610b0f57806361b5aced14610ad55780636dec2ec914610a5f578063754b377c14610a1a5780638341ee72146109f25780638456cb591461099957806384b0196e146108cc57806391d148541461088457806398813dea14610822578063a217fddf14610808578063a263a9eb14610768578063a7ecd37e146106e0578063aad3ec9614610582578063acb8cc4914610539578063ce5c7f61146104ba578063d195f4d1146103f3578063d547741f146103af578063e5daab9c14610392578063f3855f7b146101fb5763fc0c546a146101b3575f80fd5b346101f7575f3660031901126101f7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b346101f75760403660031901126101f7576004356001600160401b0381116101f75761022b903690600401611c7f565b60243590610263337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611dd3565b61026b612395565b5f828152600760205260409020546001600160a01b0316918215610383575f90815260076020526040812080546001600160a01b03191690557f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169391905b8181106102e457602084604051908152f35b6102ef818385611e15565b355f52600960205260405f206001600160601b0360a01b8154169055610316818385611e15565b3590853b156101f7576040516323b872dd60e01b81523060048201526001600160a01b038616602482015260448101929092525f82606481838a5af191821561037857600192610368575b50016102d2565b5f61037291611cca565b86610361565b6040513d5f823e3d90fd5b634e46966960e11b5f5260045ffd5b346101f7575f3660031901126101f7576020600454604051908152f35b346101f75760403660031901126101f7576103f16004356103ce611c69565b906103ec6103e7825f525f602052600160405f20015490565b61246e565b6126a9565b005b346101f75760403660031901126101f7576004356001600160401b0381116101f757610423903690600401611c7f565b906024356001600160401b0381116101f757610443903690600401611c7f565b919061044d6123b0565b8284036104ab575f5b84811061045f57005b806104756104706001938786611e15565b611e25565b610480828887611e15565b355f52600960205260405f2090838060a01b03166001600160601b0360a01b82541617905501610456565b63251f56a160e21b5f5260045ffd5b346101f75760203660031901126101f7576004356001600160401b0381116101f7576105316104ef6020923690600401611d4c565b90610524337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611dd3565b61052c612395565b611e4d565b604051908152f35b346101f7575f3660031901126101f75761057e60405161055a604082611cca565b60038152620312e360ec1b6020820152604051918291602083526020830190611c2f565b0390f35b346101f75760403660031901126101f75761059b611c53565b6105cf337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611dd3565b6105d7612395565b60ff600a5416156106d15761067e5f8060405193602085019063a9059cbb60e01b825260018060a01b0316602486015260243560448601526044855261061e606486611cca565b93517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169482865af13d156106c9573d9061066082611ceb565b9161066e6040519384611cca565b82523d5f602084013e5b83612e08565b80519081151591826106a5575b505061069357005b635274afe760e01b5f5260045260245ffd5b81925090602091810103126101f757602001518015908115036101f757828061068b565b606090610678565b63e225e71560e01b5f5260045ffd5b346101f75760203660031901126101f7577f5553331329228fbd4123164423717a4a7539f6dfa1c3279a923b98fd681a6c73602061071c611c53565b6107246123b0565b6003805468010000000000000000600160e01b031916604083811b68010000000000000000600160e01b031691909117909155516001600160a01b039091168152a1005b346101f7575f3660031901126101f7576040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610378575f906107d5575b602090604051908152f35b506020813d602011610800575b816107ef60209383611cca565b810103126101f757602090516107ca565b3d91506107e2565b346101f7575f3660031901126101f75760206040515f8152f35b346101f75760203660031901126101f7576004358015158091036101f75760207feac0f9ea759d963915e4b149e5a0de15f4c7b5e84181b0a59cd0e7887840a4b19161086c6123b0565b60ff196008541660ff821617600855604051908152a1005b346101f75760403660031901126101f75761089d611c69565b6004355f525f60205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b346101f7575f3660031901126101f75761096b6109087f00000000000000000000000000000000000000000000000000000000000000006128a1565b61057e6109347f00000000000000000000000000000000000000000000000000000000000000006129c7565b61097960405191610946602084611cca565b5f83525f368137604051958695600f60f81b875260e0602088015260e0870190611c2f565b908582036040870152611c2f565b904660608501523060808501525f60a085015283820360c0850152611bfc565b346101f7575f3660031901126101f7576109b16123ff565b6109b9612395565b600160ff1960035416176003557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346101f7575f3660031901126101f757602065ffffffffffff60035460101c16604051908152f35b346101f7575f3660031901126101f75761057e604051610a3b604082611cca565b6003815262312e3360e81b6020820152604051918291602083526020830190611c2f565b346101f75760203660031901126101f7577fa65f05a30b210a5a3eb8eaacfe95766727931805413ba0b24d9d5a2673ddcc1f6020610a9b611d79565b610aa36123b0565b60035467ffffffffffff00008260101b169067ffffffffffff000019161760035565ffffffffffff60405191168152a1005b346101f7575f3660031901126101f75760206040517f714124ca6c117ea9e465a36ce1af6af7649663d2f4e491bef2f585f61568c4f78152f35b346101f7575f3660031901126101f757602060ff600354166040519015158152f35b346101f75760603660031901126101f757610b4a611d79565b610b52611c69565b604435918215158093036101f7576003549160ff8360081c16610bc55761010067ffffffffffff000091600160401b600160e01b039060401b169360ff63ffffffff60e01b0116179160101b16171760035560ff801960085416911617600855610bbb336124a6565b506103f133612555565b60405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b346101f7575f3660031901126101f7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101f7575f3660031901126101f75760206040517f5abc35f3ddf4502abf40df80a9ee922191cea883919dcc4c1fdc7afe4464f2228152f35b346101f7575f3660031901126101f757610c966123ff565b60035460ff811615610cd55760ff19166003557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b346101f75760603660031901126101f757610cfd611c53565b6024356001600160401b0381116101f757610d1c903690600401611c7f565b6044356001600160401b0381116101f757610d3b903690600401611d4c565b909390610d72337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611dd3565b610d7a612395565b8401936020818603126101f7578035906001600160401b0382116101f757016040818603126101f75760405194604086018681106001600160401b038211176113f95760405281356001600160401b0381116101f757820160a0818303126101f75760405190610de982611caf565b80356001600160401b0381116101f757810183601f820112156101f757803590610e1282611d9b565b91610e206040519384611cca565b80835260208084019160051b830101918683116101f757602001905b8282106113e957505050825260208101356001600160401b0381116101f757810183601f820112156101f7578035610e7381611d9b565b91610e816040519384611cca565b81835260208084019260051b820101908682116101f757602001915b8183106113c957505050602083015260408101356001600160401b0381116101f757810183601f820112156101f757803590610ed882611d9b565b91610ee66040519384611cca565b80835260208084019160051b830101918683116101f757602001905b8282106113b157505050610f2f916080916040850152610f2460608201611e39565b606085015201611e39565b6080820152865260208201356001600160401b0381116101f757610f539201611d06565b602085019081527f0000000000000000000000000000000000000000000000000000000000000000945183815151148015906113a2575b8015611393575b6104ab5760208101916060919082805f604085016001600160401b038c165b8a83106112b75750505060608401946001600160401b03865116428111908115611272575b50611263576110979561108e956001600160401b03608081876020604299519101209660208151910120956020815191012094511692015116916040519360208501957f714124ca6c117ea9e465a36ce1af6af7649663d2f4e491bef2f585f61568c4f7875260408601526060850152608084015260a083015260c082015260c0815261106360e082611cca565b51902061106e612a97565b906040519161190160f01b83526002830152602282015220905190612bb3565b90929192612bed565b60035460401c6001600160a01b0390811691160361125457519390916001600160a01b03808416927f000000000000000000000000000000000000000000000000000000000000000090911691905f5b82811061113c57876040518091602082016020835281518091526020604084019201905f5b81811061111a575050500390f35b82516001600160a01b031684528594506020938401939092019160010161110c565b611147818489611e15565b35843b156101f757604051632142170760e11b81526001600160a01b038816600482015230602482015260448101919091525f8160648183895af1801561037857611244575b50611199818489611e15565b35906001600160a01b036111ad828b611dbf565b511691853b156101f7576040516370182b2f60e11b815260048101919091526001600160a01b039290921660248301526001600160401b03831660448301525f8260648183895af191821561037857600192611234575b5061121081858a611e15565b355f52600960205260405f20866001600160601b0360a01b825416179055016110e7565b5f61123e91611cca565b89611204565b5f61124e91611cca565b8861118d565b638baa579f60e01b5f5260045ffd5b63b7d0949760e01b5f5260045ffd5b90506001600160401b03608087015116016001600160401b0381116112a3576001600160401b03429116108c610fd5565b634e487b7160e01b5f52601160045260245ffd5b90919692938b6112d4898d6112cd828c51611dbf565b5193611e15565b350361138457816001600160401b036112ee8a8651611dbf565b5116106113765761136d61135961132b60019361130c8c8c51611dbf565b519060405191602083015260208252611326604083611cca565b612729565b968b61133e8c868060a01b039251611dbf565b51169060405191602083015260208252611326604083611cca565b946001600160401b0361133e8b8751611dbf565b97019190610fb0565b62d36c8560e81b5f5260045ffd5b6307ed98ed60e31b5f5260045ffd5b50836020820151511415610f91565b50836040820151511415610f8a565b602080916113be84611e39565b815201910190610f02565b82356001600160a01b03811681036101f757815260209283019201610e9d565b8135815260209182019101610e3c565b634e487b7160e01b5f52604160045260245ffd5b346101f75760403660031901126101f757611426611c69565b336001600160a01b03821603611442576103f1906004356126a9565b63334bd91960e11b5f5260045ffd5b346101f7575f3660031901126101f7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101f75760403660031901126101f7576103f16004356114b4611c69565b906114cd6103e7825f525f602052600160405f20015490565b612621565b346101f7575f3660031901126101f7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101f75760203660031901126101f75760206105316004355f525f602052600160405f20015490565b346101f7575f3660031901126101f7576003546040805191901c6001600160a01b03168152602090f35b346101f75760803660031901126101f757611583611c53565b5061158c611c69565b506064356001600160401b0381116101f7576115ac903690600401611d06565b50604051630a85bd0160e11b8152602090f35b346101f75760603660031901126101f7576004356001600160401b0381116101f7576115ef903690600401611c7f565b6024356001600160401b0381116101f75761160e903690600401611c7f565b6044356001600160401b0381116101f75761162d903690600401611c7f565b9390946116386123b0565b8282148015906117ac575b6104ab5791937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692905f5b83811061168057005b61168b818585611e15565b6040516331a9108f60e11b815290356004820152602081602481895afa908115610378575f9161176b575b50306001600160a01b0390911603611384576116d3818585611e15565b35906116e3610470828a8a611e15565b916116ef82858c611e15565b35926001600160401b03841684036101f757873b156101f7576040516370182b2f60e11b815260048101929092526001600160a01b031660248201526001600160401b039290921660448301525f82606481838a5af19182156103785760019261175b575b5001611677565b5f61176591611cca565b89611754565b90506020813d82116117a4575b8161178560209383611cca565b810103126101f757516001600160a01b03811681036101f757896116b6565b3d9150611778565b5084821415611643565b346101f75760603660031901126101f7576117cf611c53565b6024356001600160401b0381116101f7576117ee903690600401611c7f565b90611823337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611dd3565b61182b612395565b60ff6008541615611862575b6044355f90815260076020526040902080546001600160a01b0319166001600160a01b038516179055005b906001600160a01b038316905f5b81811061187e575050611837565b611889818386611e15565b355f908152600960205260409020546001600160a01b031683900361038357600101611870565b346101f7575f3660031901126101f7577f00000000000000000000000000000000000000000000000000000000000000006001600160401b03165f8172184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b811015611a94575b806d04ee2d6d415b85acef8100000000600a921015611a79575b662386f26fc10000811015611a65575b6305f5e100811015611a54575b612710811015611a45575b6064811015611a37575b1015611a2f575b6001810191600a602161198961197386611ceb565b956119816040519788611cca565b808752611ceb565b602086019490601f19013686378501015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353049081156119c857600a9061199a565b61057e83611a1b603f876040519384917f416574686972205969656c642041646170746572202d204578706972793a200060208401525180918484015e81015f838201520301601f198101835282611cca565b604051918291602083526020830190611c2f565b60010161195e565b606460029104920191611957565b6127106004910492019161194d565b6305f5e10060089104920191611942565b662386f26fc1000060109104920191611935565b6d04ee2d6d415b85acef810000000060209104920191611925565b506040905072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b820461190b565b346101f75760403660031901126101f757600435602435611ada82600554611d8e565b80821015611ba15750905b611b1b611af183611d9b565b92611aff6040519485611cca565b808452601f19611b0e82611d9b565b0136602086013782611db2565b9080600554905b838110611b3f576040516020808252819061057e90820188611bfc565b81811015611b8d5760055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db081015460019190611b86611b808684611d8e565b88611dbf565b5201611b22565b634e487b7160e01b5f52603260045260245ffd5b905090611ae5565b346101f75760203660031901126101f7576004359063ffffffff60e01b82168092036101f757602091637965db0b60e01b8114908115611beb575b5015158152f35b6301ffc9a760e01b14905083611be4565b90602080835192838152019201905f5b818110611c195750505090565b8251845260209384019390920191600101611c0c565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036101f757565b602435906001600160a01b03821682036101f757565b9181601f840112156101f7578235916001600160401b0383116101f7576020808501948460051b0101116101f757565b60a081019081106001600160401b038211176113f957604052565b90601f801991011681019081106001600160401b038211176113f957604052565b6001600160401b0381116113f957601f01601f191660200190565b81601f820112156101f757803590611d1d82611ceb565b92611d2b6040519485611cca565b828452602083830101116101f757815f926020809301838601378301015290565b9181601f840112156101f7578235916001600160401b0383116101f757602083818601950101116101f757565b6004359065ffffffffffff821682036101f757565b919082039182116112a357565b6001600160401b0381116113f95760051b60200190565b919082018092116112a357565b8051821015611b8d5760209160051b010190565b15611dda57565b60405162461bcd60e51b81526020600482015260136024820152722ab730baba3437b934bd32b21031b0b63632b960691b6044820152606490fd5b9190811015611b8d5760051b0190565b356001600160a01b03811681036101f75790565b35906001600160401b03821682036101f757565b5f91801561238e578101906040818303126101f75780359182151583036101f75760208201356001600160401b0381116101f757611e8b9201611d06565b90156120a857600a5460ff8116612099576001600160401b037f0000000000000000000000000000000000000000000000000000000000000000164211612089575b50805181019060208183031261205f576020810151906001600160401b03821161208557019060a08282031261205f5760405191611f0a83611caf565b60208101518352611f1d60408201612769565b60208401908152611f3060608301612769565b91604085019283526080810151936060860194855260a0820151906001600160401b03821161208157611f6a92602091820192010161277c565b916080850192835265ffffffffffff82511665ffffffffffff60035460101c16036120725760018060a01b037f0000000000000000000000000000000000000000000000000000000000000000169065ffffffffffff8087519451169151169285519451833b1561206e57889493929161201886926040519889978896879563725f8e5560e01b8752600487015260248601526044850152606484015260a0608484015260a4830190612834565b03925af180156120635790849161204a575b50509061203d6120469251600454611db2565b60045551612d36565b5090565b8161205491611cca565b61205f57825f61202a565b8280fd5b6040513d86823e3d90fd5b8880fd5b630a15cca960e21b8652600486fd5b8780fd5b8380fd5b60ff1916600117600a555f611ecd565b6310a4f10b60e21b8352600483fd5b918251830160208101936020818303126101f7576020810151906001600160401b0382116101f7570190606090829003126101f75760405190606082018281106001600160401b038211176113f95760405260208101516001600160401b0381116101f75760209082010185601f820112156101f75780519061212a82611d9b565b916121386040519384611cca565b80835260208084019160051b830101918883116101f757602001905b82821061237e57505050825261216c60408201612769565b94602083019586526060820151916001600160401b0383116101f757612195920160200161277c565b90604081019182525f5b815180518210156121c757906121c06121ba82600194611dbf565b51612c61565b500161219f565b50506040516370a0823160e01b815230600482015292949193917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691602085602481865afa948515610378575f9561234a575b50519051945165ffffffffffff909516946001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156101f7576122935f80946122aa6040519a8b9687958694633f541ad960e11b8652606060048701526064860190611bfc565b916024850152600319848303016044850152612834565b03925af193841561037857602494612334575b50602090604051948580926370a0823160e01b82523060048301525afa90811561232857906122f4575b6122f19250611d8e565b90565b506020823d602011612320575b8161230e60209383611cca565b810103126101f7576122f191516122e7565b3d9150612301565b604051903d90823e3d90fd5b6123419192505f90611cca565b5f9060206122bd565b9094506020813d602011612376575b8161236660209383611cca565b810103126101f75751935f612223565b3d9150612359565b8151815260209182019101612154565b5050505f90565b60ff600354166123a157565b63d93c066560e01b5f5260045ffd5b335f9081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff16156123e857565b63e2517d3f60e01b5f52336004525f60245260445ffd5b335f9081527f823c16c800330898e46cb35812b4ecf2725b30b9a93528f659f328570246ad5f602052604090205460ff161561243757565b63e2517d3f60e01b5f52336004527f5abc35f3ddf4502abf40df80a9ee922191cea883919dcc4c1fdc7afe4464f22260245260445ffd5b5f8181526020818152604080832033845290915290205460ff16156124905750565b63e2517d3f60e01b5f523360045260245260445ffd5b6001600160a01b0381165f9081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff16612550576001600160a01b03165f8181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb560205260408120805460ff191660011790553391907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b505f90565b6001600160a01b0381165f9081527f823c16c800330898e46cb35812b4ecf2725b30b9a93528f659f328570246ad5f602052604090205460ff16612550576001600160a01b03165f8181527f823c16c800330898e46cb35812b4ecf2725b30b9a93528f659f328570246ad5f60205260408120805460ff191660011790553391907f5abc35f3ddf4502abf40df80a9ee922191cea883919dcc4c1fdc7afe4464f222907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b5f818152602081815260408083206001600160a01b038616845290915290205460ff166126a3575f818152602081815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50505f90565b5f818152602081815260408083206001600160a01b038616845290915290205460ff16156126a3575f818152602081815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b612767906020808095946040519684889551918291018487015e8401908282015f8152815193849201905e01015f815203601f198101845283611cca565b565b519065ffffffffffff821682036101f757565b9080601f830112156101f75781519161279483611d9b565b926127a26040519485611cca565b80845260208085019160051b830101918383116101f75760208101915b8383106127ce57505050505090565b82516001600160401b0381116101f757820185603f820112156101f7576020810151916127fa83611ceb565b6128076040519182611cca565b83815260408385010188106101f7575f602085819660408397018386015e830101528152019201916127bf565b9080602083519182815201916020808360051b8301019401925f915b83831061285f57505050505090565b909192939460208061287d600193601f198682030187528951611c2f565b97019301930191939290612850565b8054821015611b8d575f5260205f2001905f90565b60ff81146128e75760ff811690601f82116128d857604051916128c5604084611cca565b6020808452838101919036833783525290565b632cd44ac360e21b5f5260045ffd5b506040515f6001548060011c91600182169182156129bd575b6020841083146129a957838552849290811561298a575060011461292b575b6122f192500382611cca565b5060015f90815290917fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b81831061296e5750509060206122f19282010161291f565b6020919350806001915483858801015201910190918392612956565b602092506122f194915060ff191682840152151560051b82010161291f565b634e487b7160e01b5f52602260045260245ffd5b92607f1692612900565b60ff81146129eb5760ff811690601f82116128d857604051916128c5604084611cca565b506040515f6002548060011c9160018216918215612a8d575b6020841083146129a957838552849290811561298a5750600114612a2e576122f192500382611cca565b5060025f90815290917f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b818310612a715750509060206122f19282010161291f565b6020919350806001915483858801015201910190918392612a59565b92607f1692612a04565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612b8a575b15612af2577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152612b8460c082611cca565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612ac9565b8151919060418303612be357612bdc9250602082015190606060408401519301515f1a90612d86565b9192909190565b50505f9160029190565b6004811015612c4d5780612bff575050565b60018103612c165763f645eedf60e01b5f5260045ffd5b60028103612c31575063fce698f760e01b5f5260045260245ffd5b600314612c3b5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f8181526006602052604090205480156126a3575f1981018181116112a3576005545f198101919082116112a357818103612ce8575b5050506005548015612cd4575f1901612cb181600561288c565b8154905f199060031b1b191690556005555f5260066020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b612d20612cf9612d0a93600561288c565b90549060031b1c928392600561288c565b819391549060031b91821b915f19901b19161790565b90555f52600660205260405f20555f8080612c97565b805f52600660205260405f2054155f1461255057600554600160401b8110156113f957612d6f612d0a826001859401600555600561288c565b9055600554905f52600660205260405f2055600190565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612dfd579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610378575f516001600160a01b03811615612df357905f905f90565b505f906001905f90565b5050505f9160039190565b90612e2c5750805115612e1d57805190602001fd5b630a12f52160e11b5f5260045ffd5b81511580612e5d575b612e3d575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15612e3556fea2646970667358221220359955a6e30999200bb43acacc117b50c3986003968281dd3e475da58e9f36e664736f6c634300081a003300000000000000000000000024147f47b916bcf7e0a8810f859ba3bf703d436d0000000000000000000000000000000000000000000000000000000067d9ece0000000000000000000000000c227e25544edd261a9066932c71a25f4504972f1000000000000000000000000ef90d0b328dc5896d10c54eca93f1ab764f64367