1 tx
2 calls
constructor
constructor(address nftInventory_, address lineManager_, address feeReceiver_, address nftReceiver_, address verificator_, uint256 expireTime_)
functions
CONTRACT_IDENTIFIER
viewfunction CONTRACT_IDENTIFIER() view returns (bytes32)
currencies
viewfunction currencies(uint8) view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
encodeRecipe
purefunction encodeRecipe(tuple recipe_) pure returns (bytes)
erc1155Addresses
viewfunction erc1155Addresses(uint8) view returns (address)
erc721Contracts
viewfunction erc721Contracts(uint8) view returns (address)
generateResultOfUsers
viewfunction generateResultOfUsers(address, uint256) view returns (uint256 tokenId, uint256 unlockedAt, uint256 lineNumber, uint8 ercType, uint8 contractType, uint240 quantity)
generateTimeOfUsers
viewfunction generateTimeOfUsers(address) view returns (uint256)
getAllItemsNotClaimedByUser
viewfunction getAllItemsNotClaimedByUser(address userAddress_) view returns (tuple[])
getGenerateResultsOfUser
viewfunction getGenerateResultsOfUser(address userAddress_, uint256[] generateIds_) view returns (tuple[])
getLatestResultOfLines
viewfunction getLatestResultOfLines(address userAddress_) view returns (tuple[])
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
latestGenerateIdOfLineByUsers
viewfunction latestGenerateIdOfLineByUsers(address, uint256) view returns (uint256)
markedGenerateIdOfUsers
viewfunction markedGenerateIdOfUsers(address) view returns (uint256)
OPERATOR
viewfunction OPERATOR() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
addLine
nonpayablefunction addLine(uint256 lineNumber_, tuple priceInfo_, tuple signature_)
addOperator
nonpayablefunction addOperator(address operator)
claimAll
nonpayablefunction claimAll()
claimMulti
nonpayablefunction claimMulti(uint256[] generateIds)
claimOne
nonpayablefunction claimOne(uint256 lineNumber_)
generateErc1155
nonpayablefunction generateErc1155(uint256 lineNumber_, tuple recipe_, tuple signature_)
generateErc721
nonpayablefunction generateErc721(uint256 lineNumber_, tuple recipe_, tuple signature_)
generateNow
nonpayablefunction generateNow(uint256 lineNumber_, tuple priceInfo_, tuple signature_)
generateUgcEffect
nonpayablefunction generateUgcEffect(uint256 lineNumber_, tuple recipe_, tuple signature_)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)
onERC721Received
nonpayablefunction onERC721Received(address, address, uint256, bytes) returns (bytes4)
removeOperator
nonpayablefunction removeOperator(address operator)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setCurrencies
nonpayablefunction setCurrencies(uint8[] types_, address[] addrs_)
setErc1155Addresses
nonpayablefunction setErc1155Addresses(uint8[] types_, address[] addrs_)
setErc721Contracts
nonpayablefunction setErc721Contracts(uint8[] types_, address[] addrs_)
setFeeReceiverAddress
nonpayablefunction setFeeReceiverAddress(address addr_)
setLineManager
nonpayablefunction setLineManager(address addr_)
setMarkedGenerateIdOfUsers
nonpayablefunction setMarkedGenerateIdOfUsers(address[] userAddresses_, uint256[] markedGenerateIds_)
setNftInventory
nonpayablefunction setNftInventory(address addr_)
setNftReceiverAddress
nonpayablefunction setNftReceiverAddress(address addr_)
setSignatureExpireTime
nonpayablefunction setSignatureExpireTime(uint256 time_)
setVerifierAddress
nonpayablefunction setVerifierAddress(address addr_)
events
LineAdded
event LineAdded(uint256 lineNumber, address indexed userAddress, uint256 price, uint8 currencyType, uint256 timestamp)
LineSpeeded
event LineSpeeded(uint256 lineNumber, uint256 generateId, address indexed userAddress, uint256 price, uint8 currencyType, uint256 timestamp)
NftClaimed
event NftClaimed(uint256[] generateIds, address indexed userAddress, uint256 timestamp)
NftGenerated
event NftGenerated(uint256 tokenId, uint256 indexed recipeId, (uint256 tokenId, uint8 ercType, uint8 contractType, uint240 quantity)[] elements, (uint256 generateId, uint256 lockedAt, uint256 unlockedAt, uint256 lineNumber, address userAddress) lock)
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)
errors
No errors.
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162004f5e38038062004f5e8339810160408190526200003491620001a4565b60018055600280546001600160a01b03199081166001600160a01b038581169190911790925560038390557f1aedddb5170261705c678cdad98ad97772395dbc86509b87a40a2b84e8d3be18608052600b80548216888416179055600c80548216898416179055600d80548216878416179055600e8054909116918516919091179055620000cb6000620000c53390565b620000d7565b5050505050506200021c565b620000e38282620000e7565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e3576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001433390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b80516001600160a01b03811681146200019f57600080fd5b919050565b60008060008060008060c08789031215620001be57600080fd5b620001c98762000187565b9550620001d96020880162000187565b9450620001e96040880162000187565b9350620001f96060880162000187565b9250620002096080880162000187565b915060a087015190509295509295509295565b608051614d036200025b600039600081816105690152818161089001528181610d4401528181611034015281816112dc0152611c150152614d036000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c80636e34e08611610151578063b0524e79116100c3578063d547741f11610087578063d547741f1461069b578063e3302afb146106ae578063e4717f6a146106c1578063ebc52d37146106d4578063ef8284a5146106e7578063f23a6e61146106fa57600080fd5b8063b0524e7914610619578063bc197c811461062c578063c8502dc91461063f578063cc0e153b1461066a578063d1058e591461069357600080fd5b806398374c731161011557806398374c731461059e578063983d2737146105b15780639870d7fe146105d85780639c4e3148146105eb578063a217fddf146105fe578063ac8a584a1461060657600080fd5b80636e34e086146104e75780637d3e4ed0146105285780638f2c5cdc146105515780638f49bb6b1461056457806391d148541461058b57600080fd5b80632f2ff15d116101ea57806354938998116101ae57806354938998146104185780635be214261461042b5780635cec62611461043e57806360f15ded14610451578063662331261461046457806366f099db1461047757600080fd5b80632f2ff15d146103ac57806336568abe146103bf5780633bc4d07b146103d257806349d65692146103e55780634d5b2d2d1461040557600080fd5b8063140edef311610231578063140edef3146102ff578063150b7a021461031f57806317e95526146103565780631910c21614610369578063248a9ca31461038957600080fd5b806301ffc9a71461026e57806304839f1f1461029657806305e52a72146102ab578063074842a6146102be57806312f0a89c146102d1575b600080fd5b61028161027c366004613d43565b610719565b60405190151581526020015b60405180910390f35b6102a96102a4366004613d89565b61072a565b005b6102a96102b9366004613d89565b610756565b6102a96102cc366004613dce565b610782565b6102f16102df366004613d89565b600a6020526000908152604090205481565b60405190815260200161028d565b61031261030d366004613e3a565b610a09565b60405161028d9190613ec6565b61033d61032d366004613f8e565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161028d565b6102a9610364366004613d89565b610a8e565b61037c610377366004613d89565b610ab9565b60405161028d919061402d565b6102f16103973660046140bb565b60009081526020819052604090206001015490565b6102a96103ba3660046140d4565b610c90565b6102a96103cd3660046140d4565b610cb5565b6102a96103e0366004614100565b610d33565b6102f16103f3366004613d89565b60086020526000908152604090205481565b6102a9610413366004614100565b611023565b6102a9610426366004613dce565b6111d7565b6102a961043936600461419c565b611494565b6102a961044c366004613d89565b611552565b61037c61045f366004613d89565b61157e565b6102a96104723660046140bb565b611765565b6104d5610485366004614207565b600960209081526000928352604080842090915290825290208054600182015460028301546003909301549192909160ff808216916101008104909116906201000090046001600160f01b031686565b60405161028d96959493929190614231565b6105106104f5366004614289565b6006602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b610510610536366004614289565b6005602052600090815260409020546001600160a01b031681565b6102a961055f3660046140bb565b61198a565b6102f17f000000000000000000000000000000000000000000000000000000000000000081565b6102816105993660046140d4565b61199d565b6102a96105ac36600461419c565b6119c6565b6102f17f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c81565b6102a96105e6366004613d89565b611a7c565b6102a96105f9366004613d89565b611ab0565b6102f1600081565b6102a9610614366004613d89565b611adc565b6102a9610627366004613dce565b611b10565b61033d61063a366004614318565b611e51565b6102f161064d366004614207565b600760209081526000928352604080842090915290825290205481565b610510610678366004614289565b6004602052600090815260409020546001600160a01b031681565b6102a9611e63565b6102a96106a93660046140d4565b612074565b6102a96106bc36600461419c565b612099565b6102a96106cf3660046143c1565b61212a565b61037c6106e2366004614402565b61239e565b6102a96106f536600461419c565b61250a565b61033d610708366004614454565b63f23a6e6160e01b95945050505050565b6000610724826125c0565b92915050565b61073460006125e5565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b61076060006125e5565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b61078a6125ef565b82600033600b546040516316ab5e5b60e11b81526001600160a01b03808416600483015292935060009290911690632d56bcb690602401602060405180830381865afa1580156107de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080291906144b8565b90508083111561082d5760405162461bcd60e51b8152600401610824906144d1565b60405180910390fd5b6001600160a01b038216600081815260076020908152604080832087845282528083205493835260098252808320848452909152902060010154428111156108875760405162461bcd60e51b8152600401610824906144fe565b853560208701357f000000000000000000000000000000000000000000000000000000000000000081146108cd5760405162461bcd60e51b815260040161082490614535565b42600354836108dc9190614598565b10156108fa5760405162461bcd60e51b8152600401610824906145ab565b3361090789828d8d612648565b6109235760405162461bcd60e51b8152600401610824906145fa565b600061093560808c0160608d01614634565b600181111561094657610946613ff5565b1461098b5760405162461bcd60e51b81526020600482015260156024820152744d757374206265204552433732312072656369706560581b6044820152606401610824565b61099b60c08b0160a08c01614666565b6001600160f01b03166001146109e85760405162461bcd60e51b81526020600482015260126024820152715175616e74697479206d757374206265203160701b6044820152606401610824565b6109f3818c8c6126b5565b5050505050505050610a0460018055565b505050565b60606000610a22610a1d60c0850185614681565b6127fe565b905082356040840135610a3b60a0860160808701614289565b610a4b6080870160608801614634565b6020870135610a6060c0890160a08a01614666565b86604051602001610a7797969594939291906146ef565b604051602081830303815290604052915050919050565b610a9860006125e5565b600280546001600160a01b0319166001600160a01b03831617905550565b50565b600b546040516375fe5f9b60e01b81526001600160a01b0383811660048301526060926000929116906375fe5f9b90602401602060405180830381865afa158015610b08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2c91906144b8565b90506000816001600160401b03811115610b4857610b48613ed9565b604051908082528060200260200182016040528015610b8157816020015b610b6e613cfc565b815260200190600190039081610b665790505b50905060005b82811015610c88576001600160a01b0385166000818152600760209081526040808320858452825280832054938352600982528083208484528252808320815160c0810183528154815260018083015494820194909452600282015492810192909252600381015491929091606084019160ff90911690811115610c0d57610c0d613ff5565b6001811115610c1e57610c1e613ff5565b815260039190910154610100810460ff1660208301526201000090046001600160f01b0316604091820152810184905284519091508190859085908110610c6757610c67614750565b60200260200101819052505050600181610c819190614598565b9050610b87565b509392505050565b600082815260208190526040902060010154610cab816125e5565b610a048383612887565b6001600160a01b0381163314610d255760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610824565b610d2f828261290b565b5050565b610d3b6125ef565b803560208201357f00000000000000000000000000000000000000000000000000000000000000008114610d815760405162461bcd60e51b815260040161082490614535565b4260035483610d909190614598565b1015610dae5760405162461bcd60e51b8152600401610824906145ab565b33610dbb84828888612970565b610dd75760405162461bcd60e51b8152600401610824906145fa565b610def610dea6040870160208801614289565b612a14565b8435610e325760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420756e697420707269636560701b6044820152606401610824565b600b546040516375fe5f9b60e01b81526001600160a01b038381166004830152909116906375fe5f9b90602401602060405180830381865afa158015610e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea091906144b8565b8610610ebe5760405162461bcd60e51b8152600401610824906144d1565b6001600160a01b03811660008181526007602090815260408083208a84528252808320549383526009825280832084845290915290206001015442808211610f485760405162461bcd60e51b815260206004820152601e60248201527f54686973206c696e652068617320616c726561647920756e6c6f636b656400006044820152606401610824565b6000610f5683838b35612a7c565b6001600160a01b038087166000908152600960209081526040808320898452825291829020600101869055600d54939450610fa59385938a93911691610fa0918f01908f01614289565b612ad6565b846001600160a01b03167f94fb207911ec4052570feb04c9aff140f8df6388ed5c326b396d0cd020ebe6858b86848d6020016020810190610fe69190614289565b6040805194855260208501939093529183015260ff1660608201526080810185905260a00160405180910390a250505050505050610a0460018055565b61102b6125ef565b803560208201357f000000000000000000000000000000000000000000000000000000000000000081146110715760405162461bcd60e51b815260040161082490614535565b42600354836110809190614598565b101561109e5760405162461bcd60e51b8152600401610824906145ab565b336110ab84828888612b0a565b6110c75760405162461bcd60e51b8152600401610824906145fa565b6110da610dea6040870160208801614289565b600d546110ff9086359083906001600160a01b0316610fa060408a0160208b01614289565b600b546040516362cc8aff60e01b81526001600160a01b03838116600483015260248201899052909116906362cc8aff90604401600060405180830381600087803b15801561114d57600080fd5b505af1158015611161573d6000803e3d6000fd5b5050506001600160a01b03821690507f645ce66aa3ac46558a09527ff8012ce2ca65e252e6a241c600cbe03aaaff23828787356111a460408a0160208b01614289565b60408051938452602084019290925260ff169082015242606082015260800160405180910390a2505050610a0460018055565b6111df6125ef565b82600033600b546040516316ab5e5b60e11b81526001600160a01b03808416600483015292935060009290911690632d56bcb690602401602060405180830381865afa158015611233573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125791906144b8565b9050808311156112795760405162461bcd60e51b8152600401610824906144d1565b6001600160a01b038216600081815260076020908152604080832087845282528083205493835260098252808320848452909152902060010154428111156112d35760405162461bcd60e51b8152600401610824906144fe565b853560208701357f000000000000000000000000000000000000000000000000000000000000000081146113195760405162461bcd60e51b815260040161082490614535565b42600354836113289190614598565b10156113465760405162461bcd60e51b8152600401610824906145ab565b3361135389828d8d612b80565b61136f5760405162461bcd60e51b8152600401610824906145fa565b600061137e60c08c018c614681565b9050116113c45760405162461bcd60e51b8152602060048201526014602482015273456d70747920656c656d656e747320617272617960601b6044820152606401610824565b60006113d660808c0160608d01614634565b60018111156113e7576113e7613ff5565b1461142c5760405162461bcd60e51b81526020600482015260156024820152744d757374206265204552433732312072656369706560581b6044820152606401610824565b61143c60c08b0160a08c01614666565b6001600160f01b03166001146114895760405162461bcd60e51b81526020600482015260126024820152715175616e74697479206d757374206265203160701b6044820152606401610824565b6109f3818c8c612bb1565b61149e60006125e5565b8281146114aa57600080fd5b60005b8381101561154b576115398585838181106114ca576114ca614750565b90506020020160208101906114df9190614289565b8484848181106114f1576114f1614750565b90506020020160208101906115069190613d89565b60ff91909116600090815260046020526040902080546001600160a01b0319166001600160a01b03909216919091179055565b611544600182614598565b90506114ad565b5050505050565b61155c60006125e5565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116600090815260086020908152604080832054600a909252822054606092906115b1906001614598565b90506000815b838111611607576001600160a01b0386166000908152600960209081526040808320848452909152902054156115f5576115f2600183614598565b91505b611600600182614598565b90506115b7565b506000816001600160401b0381111561162257611622613ed9565b60405190808252806020026020018201604052801561165b57816020015b611648613cfc565b8152602001906001900390816116405790505b5090506000835b858111611759576001600160a01b03881660009081526009602090815260408083208484528252808320815160c0810183528154815260018083015494820194909452600282015492810192909252600381015491929091606084019160ff909116908111156116d4576116d4613ff5565b60018111156116e5576116e5613ff5565b815260039190910154610100810460ff1660208301526201000090046001600160f01b0316604090910152805190915015611746578084848151811061172d5761172d614750565b6020908102919091010152611743600184614598565b92505b50611752600182614598565b9050611662565b50909695505050505050565b336000818152600760209081526040808320858452825280832054848452600983528184208185528352818420825160c0810184528154815260018083015495820195909552600282015493810193909352600381015442959294929392606084019160ff16908111156117db576117db613ff5565b60018111156117ec576117ec613ff5565b815260039190910154610100810460ff1660208301526201000090046001600160f01b0316604090910152805190915060000361186b5760405162461bcd60e51b815260206004820152601c60248201527f446f6e2774206861766520616e797468696e6720746f20636c61696d000000006044820152606401610824565b82816020015111156118ba5760405162461bcd60e51b815260206004820152601860248201527711d95b995c985d1a5bdb881b9bdd0818dbdb5c1b195d195960421b6044820152606401610824565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106118f0576118f0614750565b6020908102919091018101919091526001600160a01b038616600090815260098252604080822086835290925290812081815560018101829055600281018290556003015561193f8583612c8f565b846001600160a01b03167f5699f47610b673314477cc35146313d8b472a910241dd54e96ad1cf885bce058828660405161197a929190614766565b60405180910390a2505050505050565b61199460006125e5565b610ab681600355565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6119d060006125e5565b8281146119dc57600080fd5b60005b8381101561154b578282828181106119f9576119f9614750565b9050602002016020810190611a0e9190613d89565b60056000878785818110611a2457611a24614750565b9050602002016020810190611a399190614289565b60ff168152602081019190915260400160002080546001600160a01b0319166001600160a01b0392909216919091179055611a75600182614598565b90506119df565b611a8660006125e5565b610ab67f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c82612887565b611aba60006125e5565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b611ae660006125e5565b610ab67f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c8261290b565b611b186125ef565b82600033600b546040516316ab5e5b60e11b81526001600160a01b03808416600483015292935060009290911690632d56bcb690602401602060405180830381865afa158015611b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9091906144b8565b905080831115611bb25760405162461bcd60e51b8152600401610824906144d1565b6001600160a01b03821660008181526007602090815260408083208784528252808320549383526009825280832084845290915290206001015442811115611c0c5760405162461bcd60e51b8152600401610824906144fe565b853560208701357f00000000000000000000000000000000000000000000000000000000000000008114611c525760405162461bcd60e51b815260040161082490614535565b4260035483611c619190614598565b1015611c7f5760405162461bcd60e51b8152600401610824906145ab565b33611c8c89828d8d612b80565b611ca85760405162461bcd60e51b8152600401610824906145fa565b6000611cb760c08c018c614681565b905011611cfd5760405162461bcd60e51b8152602060048201526014602482015273456d70747920656c656d656e747320617272617960601b6044820152606401610824565b6001611d0f60808c0160608d01614634565b6001811115611d2057611d20613ff5565b14611d665760405162461bcd60e51b81526020600482015260166024820152754d75737420626520455243313135352072656369706560501b6044820152606401610824565b6000600681611d7b60a08e0160808f01614289565b60ff1681526020810191909152604001600020546001600160a01b031603611dde5760405162461bcd60e51b8152602060048201526016602482015275496e76616c696420455243313135352072656369706560501b6044820152606401610824565b6000611df060c08c0160a08d01614666565b6001600160f01b031611611e465760405162461bcd60e51b815260206004820152601f60248201527f5175616e74697479206d7573742062652067726561746572207468616e2030006044820152606401610824565b6109f3818c8c612e1a565b63bc197c8160e01b5b95945050505050565b33600081815260086020908152604080832054600a909252822054909190611e8c906001614598565b9050426000611e9b83856147ae565b611ea6906001614598565b6001600160401b03811115611ebd57611ebd613ed9565b604051908082528060200260200182016040528015611ee6578160200160208202803683370190505b5090506000835b85811161202d576001600160a01b03871660009081526009602090815260408083208484528252808320815160c0810183528154815260018083015494820194909452600282015492810192909252600381015491929091606084019160ff90911690811115611f5f57611f5f613ff5565b6001811115611f7057611f70613ff5565b815260039190910154610100810460ff1660208301526201000090046001600160f01b0316604090910152805190915015801590611fb2575084816020015111155b156120245781848481518110611fca57611fca614750565b6020908102919091010152611fe0600184614598565b6001600160a01b0389166000908152600960209081526040808320868452909152812081815560018101829055600281018290556003015592506120248882612c8f565b50600101611eed565b50612039868587612ec6565b856001600160a01b03167f5699f47610b673314477cc35146313d8b472a910241dd54e96ad1cf885bce058838560405161197a929190614766565b60008281526020819052604090206001015461208f816125e5565b610a04838361290b565b6120a360006125e5565b8281146120af57600080fd5b60005b8381101561154b578282828181106120cc576120cc614750565b90506020020135600a60008787858181106120e9576120e9614750565b90506020020160208101906120fe9190613d89565b6001600160a01b03168152602081019190915260400160002055612123600182614598565b90506120b2565b8061216b5760405162461bcd60e51b8152602060048201526011602482015270456d70747920636c61696d20617272617960781b6044820152606401610824565b334260005b83811015612352576001600160a01b0383166000908152600960205260408120818787858181106121a3576121a3614750565b9050602002013581526020019081526020016000206040518060c00160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16600181111561220557612205613ff5565b600181111561221657612216613ff5565b815260039190910154610100810460ff1660208301526201000090046001600160f01b031660409091015280519091506000036122955760405162461bcd60e51b815260206004820152601c60248201527f446f6e2774206861766520616e797468696e6720746f20636c61696d000000006044820152606401610824565b82816020015111156122e45760405162461bcd60e51b815260206004820152601860248201527711d95b995c985d1a5bdb881b9bdd0818dbdb5c1b195d195960421b6044820152606401610824565b6001600160a01b03841660009081526009602052604081209087878581811061230f5761230f614750565b6020908102929092013583525081019190915260400160009081208181556001810182905560028101829055600301556123498482612c8f565b50600101612170565b50816001600160a01b03167f5699f47610b673314477cc35146313d8b472a910241dd54e96ad1cf885bce058858584604051612390939291906147c1565b60405180910390a250505050565b60606000826001600160401b038111156123ba576123ba613ed9565b6040519080825280602002602001820160405280156123f357816020015b6123e0613cfc565b8152602001906001900390816123d85790505b50905060005b83811015612501576001600160a01b03861660009081526009602052604081208187878581811061242c5761242c614750565b9050602002013581526020019081526020016000206040518060c00160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16600181111561248e5761248e613ff5565b600181111561249f5761249f613ff5565b815260039190910154610100810460ff1660208301526201000090046001600160f01b0316604090910152835190915081908490849081106124e3576124e3614750565b6020908102919091010152506124fa600182614598565b90506123f9565b50949350505050565b61251460006125e5565b82811461252057600080fd5b60005b8381101561154b5782828281811061253d5761253d614750565b90506020020160208101906125529190613d89565b6006600087878581811061256857612568614750565b905060200201602081019061257d9190614289565b60ff168152602081019190915260400160002080546001600160a01b0319166001600160a01b03929092169190911790556125b9600182614598565b9050612523565b60006001600160e01b03198216630271189760e51b1480610724575061072482612f2f565b610ab68133612f64565b6002600154036126415760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610824565b6002600155565b60008061265483610a09565b9050600086602001358287878a600001356040516020016126799594939291906147ff565b6040516020818303038152906040528051906020012090506126aa818880604001906126a5919061484b565b612fbd565b979650505050505050565b60006005816126ca60a0850160808601614289565b60ff1681526020810191909152604001600020546001600160a01b031690508061272e5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964204552433732312072656369706560581b6044820152606401610824565b8135600061273f8686848488613029565b90506127578661275260c0870187614681565b613227565b604051632142170760e11b81526001600160a01b038416906342842e0e9061278790899030908790600401614891565b600060405180830381600087803b1580156127a157600080fd5b505af11580156127b5573d6000803e3d6000fd5b5050505060408401357f7cf41dd7ad39bf7387491ca1de9661135bb0ba73b6cd99ee89b0194aadcd8264836127ed60c0880188614681565b8560405161197a94939291906148b5565b60608060005b83811015610c8857600085858381811061282057612820614750565b905060800201803603810190612836919061497c565b90508281600001518260200151836040015184606001516040516020016128619594939291906149f1565b6040516020818303038152906040529250506001816128809190614598565b9050612804565b612891828261199d565b610d2f576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556128c73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612915828261199d565b15610d2f576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008085602001358484600001358560200160208101906129919190614289565b60408051602081019590955284019290925260608084019190915260f89190911b6001600160f81b031916608083015286901b6001600160601b03191660818201528635609582015260b5015b604051602081830303815290604052805190602001209050612a0a818780604001906126a5919061484b565b9695505050505050565b60ff81166000908152600460205260409020546001600160a01b0316610ab65760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e743a496e76616c69642063757272656e637920747970650000006044820152606401610824565b600080612a8984866147ae565b90506000612a98603c83614a59565b600003612ab157612aaa603c83614a6d565b9050612aca565b612abc603c83614a6d565b612ac7906001614598565b90505b60006126aa8583614a81565b60ff81166000908152600460205260409020546001600160a01b0316612afe84308784613491565b61154b8585858461363f565b600080856020013585858560000135866020016020810190612b2c9190614289565b6040516129de9594939291908c359060200195865260609490941b6001600160601b03191660208601526034850192909252605484015260f81b6001600160f81b0319166074830152607582015260950190565b600080612b8c83610a09565b9050600086602001358686848a60000135604051602001612679959493929190614a98565b6000600581612bc660a0850160808601614289565b60ff1681526020810191909152604001600020546001600160a01b0316905080612c2a5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964204552433732312072656369706560581b6044820152606401610824565b6000612c378284356136a7565b90506000612c49868684600088613029565b9050612c5c8661275260c0870187614681565b6040516340c10f1960e01b8152306004820152602481018390526001600160a01b038416906340c10f1990604401612787565b600081606001516001811115612ca757612ca7613ff5565b03612d2c57608081015160ff16600090815260056020526040908190205482519151632142170760e11b81526001600160a01b03909116916342842e0e91612cf6913091879190600401614891565b600060405180830381600087803b158015612d1057600080fd5b505af1158015612d24573d6000803e3d6000fd5b505050505050565b60808101805160ff90811660009081526006602052604081205492516001600160a01b03909316929091169003612dd757815160a0830151604051637921219560e11b81526001600160a01b0384169263f242432a92612da0923092899290916001600160f01b0390911690600401614ae5565b600060405180830381600087803b158015612dba57600080fd5b505af1158015612dce573d6000803e3d6000fd5b50505050505050565b815160a0830151604051637921219560e11b81526001600160a01b0384169263f242432a92612da0923092899290916001600160f01b0390911690600401614ae5565b80356000612e2c858584600187613029565b9050612e3f8561275260c0860186614681565b612e72612e5260a0850160808601614289565b83612e6360c0870160a08801614666565b6001600160f01b031630613763565b60408301357f7cf41dd7ad39bf7387491ca1de9661135bb0ba73b6cd99ee89b0194aadcd826483612ea660c0870187614681565b85604051612eb794939291906148b5565b60405180910390a25050505050565b815b818111612f29576001600160a01b038416600090815260096020908152604080832084845290915290205415612f2157612f036001826147ae565b6001600160a01b0385166000908152600a6020526040902055612f29565b600101612ec8565b50505050565b60006001600160e01b03198216637965db0b60e01b148061072457506301ffc9a760e01b6001600160e01b0319831614610724565b612f6e828261199d565b610d2f57612f7b8161386b565b612f8683602061387d565b604051602001612f97929190614b28565b60408051601f198184030181529082905262461bcd60e51b825261082491600401613ec6565b600254604080516020601f85018190048102820181019092528381526000926001600160a01b031691613017919086908690819084018382808284376000920191909152506130119250899150613a1f9050565b90613a52565b6001600160a01b031614949350505050565b6130646040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b6001600160a01b038616600090815260086020526040812080546001929061308d908490614598565b90915550506001600160a01b038616600090815260086020908152604082205491906130bc9085013542614598565b90506040518060c001604052808781526020018281526020018881526020018660018111156130ed576130ed613ff5565b815260200161310260a0870160808801614289565b60ff16815260200161311a60c0870160a08801614666565b6001600160f01b031690526001600160a01b03891660009081526009602090815260408083208684528252918290208351815590830151600180830191909155918301516002820155606083015160038201805492939192909160ff1990911690838181111561318c5761318c613ff5565b02179055506080828101516003909201805460a0948501516001600160f01b0316620100000261ffff60ff95861661010002169490911693909317929092179091556001600160a01b038a1660008181526007602090815260408083208d8452825291829020879055815194850182529584524295840195909552938201929092526060810188905290810191909152905095945050505050565b8060005b8181101561154b57600084848381811061324757613247614750565b90506080020180360381019061325d919061497c565b905060008160200151600181111561327757613277613ff5565b036132ff5760408082015160ff166000908152600560205281902054600e5483519251632142170760e11b81526001600160a01b03928316936342842e0e936132c8938c9391169190600401614891565b600060405180830381600087803b1580156132e257600080fd5b505af11580156132f6573d6000803e3d6000fd5b50505050613488565b600081606001516001600160f01b03161161335c5760405162461bcd60e51b815260206004820181905260248201527f4572633131353520656c656d656e74207175616e7469747920696e76616c69646044820152606401610824565b6040808201805160ff908116600090815260066020529283205491516001600160a01b03909216929116900361340b57600e5482516060840151604051637921219560e11b81526001600160a01b038581169463f242432a946133d4948e94939092169290916001600160f01b031690600401614ae5565b600060405180830381600087803b1580156133ee57600080fd5b505af1158015613402573d6000803e3d6000fd5b50505050613486565b600e5482516060840151604051637921219560e11b81526001600160a01b038581169463f242432a94613453948e94939092169290916001600160f01b031690600401614ae5565b600060405180830381600087803b15801561346d57600080fd5b505af1158015613481573d6000803e3d6000fd5b505050505b505b5060010161322b565b6040516370a0823160e01b81526001600160a01b0385811660048301528391908316906370a08231906024016020604051808303816000875af11580156134dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350091906144b8565b10156135635760405162461bcd60e51b815260206004820152602c60248201527f45786368616e67652063757272656e63792062616c616e6365206f662075736560448201526b7220697320746f6f206c6f7760a01b6064820152608401610824565b604051636eb1769f60e11b81526001600160a01b038581166004830152848116602483015283919083169063dd62ed3e906044016020604051808303816000875af11580156135b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135da91906144b8565b1015612f295760405162461bcd60e51b815260206004820152602e60248201527f45786368616e67652063757272656e637920616c6c6f77616e6365206f66207560448201526d73657220697320746f6f206c6f7760901b6064820152608401610824565b6040516323b872dd60e01b81526001600160a01b038216906323b872dd9061366f90869086908990600401614891565b600060405180830381600087803b15801561368957600080fd5b505af115801561369d573d6000803e3d6000fd5b5050505050505050565b600c5460405163670dd5ad60e11b81526001600160a01b0384811660048301526024820184905260016044830152600092839291169063ce1bab5a906064016020604051808303816000875af1158015613705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137299190614b9d565b6001600160801b03169050600061373f82613a6e565b905060008261374f83600a614caa565b6137599087614a81565b612a0a9190614598565b60ff84166000818152600660205260408120546001600160a01b03169190036137fb5760405163b8b31cc360e01b815260048101859052602481018490526001600160a01b0383811660448301526000606483015282169063b8b31cc390608401600060405180830381600087803b1580156137de57600080fd5b505af11580156137f2573d6000803e3d6000fd5b5050505061154b565b604051631a5a942d60e21b81526001600160a01b038381166004830152602482018690526044820185905282169063696a50b490606401600060405180830381600087803b15801561384c57600080fd5b505af1158015613860573d6000803e3d6000fd5b505050505050505050565b60606107246001600160a01b03831660145b6060600061388c836002614a81565b613897906002614598565b6001600160401b038111156138ae576138ae613ed9565b6040519080825280601f01601f1916602001820160405280156138d8576020820181803683370190505b509050600360fc1b816000815181106138f3576138f3614750565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061392257613922614750565b60200101906001600160f81b031916908160001a9053506000613946846002614a81565b613951906001614598565b90505b60018111156139c9576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061398557613985614750565b1a60f81b82828151811061399b5761399b614750565b60200101906001600160f81b031916908160001a90535060049490941c936139c281614cb6565b9050613954565b508315613a185760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610824565b9392505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b6000806000613a618585613aa9565b91509150610c8881613aee565b600081600003613a8057506001919050565b8160005b8115613a1857613a95600182614598565b9050613aa2600a83614a6d565b9150613a84565b6000808251604103613adf5760208301516040840151606085015160001a613ad387828585613c38565b94509450505050613ae7565b506000905060025b9250929050565b6000816004811115613b0257613b02613ff5565b03613b0a5750565b6001816004811115613b1e57613b1e613ff5565b03613b6b5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610824565b6002816004811115613b7f57613b7f613ff5565b03613bcc5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610824565b6003816004811115613be057613be0613ff5565b03610ab65760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610824565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613c6f5750600090506003613cf3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613cc3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613cec57600060019250925050613cf3565b9150600090505b94509492505050565b6040518060c0016040528060008152602001600081526020016000815260200160006001811115613d2f57613d2f613ff5565b815260006020820181905260409091015290565b600060208284031215613d5557600080fd5b81356001600160e01b031981168114613a1857600080fd5b80356001600160a01b0381168114613d8457600080fd5b919050565b600060208284031215613d9b57600080fd5b613a1882613d6d565b600060e08284031215613db657600080fd5b50919050565b600060608284031215613db657600080fd5b600080600060608486031215613de357600080fd5b8335925060208401356001600160401b0380821115613e0157600080fd5b613e0d87838801613da4565b93506040860135915080821115613e2357600080fd5b50613e3086828701613dbc565b9150509250925092565b600060208284031215613e4c57600080fd5b81356001600160401b03811115613e6257600080fd5b613e6e84828501613da4565b949350505050565b60005b83811015613e91578181015183820152602001613e79565b50506000910152565b60008151808452613eb2816020860160208601613e76565b601f01601f19169290920160200192915050565b602081526000613a186020830184613e9a565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f1757613f17613ed9565b604052919050565b600082601f830112613f3057600080fd5b81356001600160401b03811115613f4957613f49613ed9565b613f5c601f8201601f1916602001613eef565b818152846020838601011115613f7157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215613fa457600080fd5b613fad85613d6d565b9350613fbb60208601613d6d565b92506040850135915060608501356001600160401b03811115613fdd57600080fd5b613fe987828801613f1f565b91505092959194509250565b634e487b7160e01b600052602160045260246000fd5b6002811061402957634e487b7160e01b600052602160045260246000fd5b9052565b602080825282518282018190526000919060409081850190868401855b828110156140ae578151805185528681015187860152858101518686015260608082015161407a8288018261400b565b505060808181015160ff169086015260a0908101516001600160f01b03169085015260c0909301929085019060010161404a565b5091979650505050505050565b6000602082840312156140cd57600080fd5b5035919050565b600080604083850312156140e757600080fd5b823591506140f760208401613d6d565b90509250929050565b6000806000838503608081121561411657600080fd5b843593506040601f198201121561412c57600080fd5b5060208401915060608401356001600160401b0381111561414c57600080fd5b613e3086828701613dbc565b60008083601f84011261416a57600080fd5b5081356001600160401b0381111561418157600080fd5b6020830191508360208260051b8501011115613ae757600080fd5b600080600080604085870312156141b257600080fd5b84356001600160401b03808211156141c957600080fd5b6141d588838901614158565b909650945060208701359150808211156141ee57600080fd5b506141fb87828801614158565b95989497509550505050565b6000806040838503121561421a57600080fd5b61422383613d6d565b946020939093013593505050565b868152602081018690526040810185905260c08101614253606083018661400b565b60ff9390931660808201526001600160f01b039190911660a090910152949350505050565b803560ff81168114613d8457600080fd5b60006020828403121561429b57600080fd5b613a1882614278565b600082601f8301126142b557600080fd5b813560206001600160401b038211156142d0576142d0613ed9565b8160051b6142df828201613eef565b92835284810182019282810190878511156142f957600080fd5b83870192505b848310156126aa578235825291830191908301906142ff565b600080600080600060a0868803121561433057600080fd5b61433986613d6d565b945061434760208701613d6d565b935060408601356001600160401b038082111561436357600080fd5b61436f89838a016142a4565b9450606088013591508082111561438557600080fd5b61439189838a016142a4565b935060808801359150808211156143a757600080fd5b506143b488828901613f1f565b9150509295509295909350565b600080602083850312156143d457600080fd5b82356001600160401b038111156143ea57600080fd5b6143f685828601614158565b90969095509350505050565b60008060006040848603121561441757600080fd5b61442084613d6d565b925060208401356001600160401b0381111561443b57600080fd5b61444786828701614158565b9497909650939450505050565b600080600080600060a0868803121561446c57600080fd5b61447586613d6d565b945061448360208701613d6d565b9350604086013592506060860135915060808601356001600160401b038111156144ac57600080fd5b6143b488828901613f1f565b6000602082840312156144ca57600080fd5b5051919050565b60208082526013908201527224b73b30b634b2103634b73290373ab6b132b960691b604082015260600190565b6020808252601c908201527f54686973206c696e652068617320616c7265616479206c6f636b656400000000604082015260600190565b6020808252602d908201527f5369676e617475726556657269666965723a496e76616c696420636f6e74726160408201526c31ba1034b232b73a34b334b2b960991b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561072457610724614582565b6020808252602f908201527f5369676e617475726556657269666965723a5369676e6174757265206861732060408201526e185b1c9958591e48195e1c1a5c9959608a1b606082015260800190565b602080825260119082015270496e76616c6964207369676e617475726560781b604082015260600190565b803560028110613d8457600080fd5b60006020828403121561464657600080fd5b613a1882614625565b80356001600160f01b0381168114613d8457600080fd5b60006020828403121561467857600080fd5b613a188261464f565b6000808335601e1984360301811261469857600080fd5b8301803591506001600160401b038211156146b257600080fd5b6020019150600781901b3603821315613ae757600080fd5b600281106146e857634e487b7160e01b600052602160045260246000fd5b60f81b9052565b87815286602082015260ff60f81b8660f81b16604082015261471460418201866146ca565b83604282015261ffff198360101b1660628201526000825161473d816080850160208701613e76565b9190910160800198975050505050505050565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b8281101561479f57815184529284019290840190600101614783565b50505092019290925292915050565b8181038181111561072457610724614582565b6040808252810183905260006001600160fb1b038411156147e157600080fd5b8360051b808660608501376020830193909352500160600192915050565b85815260008551614817816020850160208a01613e76565b60609590951b6001600160601b03191660209290950191820194909452603481019290925260548201526074019392505050565b6000808335601e1984360301811261486257600080fd5b8301803591506001600160401b0382111561487c57600080fd5b602001915036819003821315613ae757600080fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b84815260e0602080830182905290820184905260009085906101008401835b8781101561493857833582526148eb838501614625565b6148f78484018261400b565b50604060ff614907828701614278565b169083015260606001600160f01b0361492186830161464f565b1690830152608093840193909101906001016148d4565b509250611e5a9150506040830184805182526020808201519083015260408082015190830152606080820151908301526080908101516001600160a01b0316910152565b60006080828403121561498e57600080fd5b604051608081018181106001600160401b03821117156149b0576149b0613ed9565b604052823581526149c360208401614625565b60208201526149d460408401614278565b60408201526149e56060840161464f565b60608201529392505050565b60008651614a03818460208b01613e76565b8201868152614a1560208201876146ca565b60f89490941b6001600160f81b0319166021850152505060101b61ffff191660228201526040019392505050565b634e487b7160e01b600052601260045260246000fd5b600082614a6857614a68614a43565b500690565b600082614a7c57614a7c614a43565b500490565b808202811582820484141761072457610724614582565b8581526bffffffffffffffffffffffff198560601b16602082015283603482015260008351614ace816054850160208801613e76565b605492019182019290925260740195945050505050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260029082015261060f60f31b60c082015260e00190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614b60816017850160208801613e76565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614b91816028840160208801613e76565b01602801949350505050565b600060208284031215614baf57600080fd5b81516001600160801b0381168114613a1857600080fd5b600181815b80851115614c01578160001904821115614be757614be7614582565b80851615614bf457918102915b93841c9390800290614bcb565b509250929050565b600082614c1857506001610724565b81614c2557506000610724565b8160018114614c3b5760028114614c4557614c61565b6001915050610724565b60ff841115614c5657614c56614582565b50506001821b610724565b5060208310610133831016604e8410600b8410161715614c84575081810a610724565b614c8e8383614bc6565b8060001904821115614ca257614ca2614582565b029392505050565b6000613a188383614c09565b600081614cc557614cc5614582565b50600019019056fea264697066735822122060ce67c70a6808985da1ea7ed2070e25b199d48f05ca5fa97ae2f353cc2f626a64736f6c63430008110033000000000000000000000000263a9c0eb5d3f9b6c08b9c7e9e149c6b8ec60c2e000000000000000000000000f3b7a3ab5ae2fa59a303a81a0c03e07b90d93a05000000000000000000000000e1e65a4cc9a8a79fc82cb536d742d35d00a039340000000000000000000000002d8c160588d21154f689a357dd180109f3363f3600000000000000000000000062d0e5e193854a4943dec1a48ffc3d6744ab5f54000000000000000000000000000000000000000000000000000000000000012c