4.3k txs
5.9k 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
0x60a06040523480156200001157600080fd5b50604051620051fc380380620051fc8339810160408190526200003491620001a4565b60018055600280546001600160a01b03199081166001600160a01b038581169190911790925560038390557f1aedddb5170261705c678cdad98ad97772395dbc86509b87a40a2b84e8d3be18608052600b80548216888416179055600c80548216898416179055600d80548216878416179055600e8054909116918516919091179055620000cb6000620000c53390565b620000d7565b5050505050506200021c565b620000e38282620000e7565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e3576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001433390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b80516001600160a01b03811681146200019f57600080fd5b919050565b60008060008060008060c08789031215620001be57600080fd5b620001c98762000187565b9550620001d96020880162000187565b9450620001e96040880162000187565b9350620001f96060880162000187565b9250620002096080880162000187565b915060a087015190509295509295509295565b608051614fa16200025b600039600081816105990152818161093601528181610e1d01528181611162015281816114840152611e140152614fa16000f3fe608060405234801561001057600080fd5b50600436106102995760003560e01c80636e34e08611610171578063b0524e79116100d3578063d547741f11610097578063ebc52d3711610071578063ebc52d3714610728578063ef8284a51461073b578063f23a6e611461074e57600080fd5b8063d547741f146106ef578063e3302afb14610702578063e4717f6a1461071557600080fd5b8063b0524e791461066d578063bc197c8114610680578063c8502dc914610693578063cc0e153b146106be578063d1058e59146106e757600080fd5b806398374c73116101355780639c4e31481161010f5780639c4e31481461063f578063a217fddf14610652578063ac8a584a1461065a57600080fd5b806398374c73146105f2578063983d2737146106055780639870d7fe1461062c57600080fd5b80636e34e086146105175780637d3e4ed0146105585780638f2c5cdc146105815780638f49bb6b1461059457806391d14854146105bb57600080fd5b80632f2ff15d1161021a57806354938998116101de57806360f15ded116101b857806360f15ded14610481578063662331261461049457806366f099db146104a757600080fd5b806354938998146104485780635be214261461045b5780635cec62611461046e57600080fd5b80632f2ff15d146103dc57806336568abe146103ef5780633bc4d07b1461040257806349d65692146104155780634d5b2d2d1461043557600080fd5b8063140edef311610261578063140edef31461032f578063150b7a021461034f57806317e95526146103865780631910c21614610399578063248a9ca3146103b957600080fd5b806301ffc9a71461029e57806304839f1f146102c657806305e52a72146102db578063074842a6146102ee57806312f0a89c14610301575b600080fd5b6102b16102ac366004614042565b61076d565b60405190151581526020015b60405180910390f35b6102d96102d4366004614088565b61077e565b005b6102d96102e9366004614088565b6107aa565b6102d96102fc3660046140cd565b6107d6565b61032161030f366004614088565b600a6020526000908152604090205481565b6040519081526020016102bd565b61034261033d36600461413a565b610ad3565b6040516102bd91906141c7565b61036d61035d366004614291565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016102bd565b6102d9610394366004614088565b610b58565b6103ac6103a7366004614088565b610b83565b6040516102bd9190614331565b6103216103c73660046143bf565b60009081526020819052604090206001015490565b6102d96103ea3660046143d8565b610d5b565b6102d96103fd3660046143d8565b610d80565b6102d9610410366004614404565b610e0c565b610321610423366004614088565b60086020526000908152604090205481565b6102d9610443366004614404565b611151565b6102d96104563660046140cd565b611329565b6102d96104693660046144a2565b611660565b6102d961047c366004614088565b61171e565b6103ac61048f366004614088565b61174a565b6102d96104a23660046143bf565b611932565b6105056104b536600461450e565b600960209081526000928352604080842090915290825290208054600182015460028301546003909301549192909160ff808216916101008104909116906201000090046001600160f01b031686565b6040516102bd96959493929190614538565b61054061052536600461458e565b6006602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102bd565b61054061056636600461458e565b6005602052600090815260409020546001600160a01b031681565b6102d961058f3660046143bf565b611b5c565b6103217f000000000000000000000000000000000000000000000000000000000000000081565b6102b16105c93660046143d8565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6102d96106003660046144a2565b611b6f565b6103217f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c81565b6102d961063a366004614088565b611c25565b6102d961064d366004614088565b611c59565b610321600081565b6102d9610668366004614088565b611c85565b6102d961067b3660046140cd565b611cb9565b61036d61068e36600461461e565b612082565b6103216106a136600461450e565b600760209081526000928352604080842090915290825290205481565b6105406106cc36600461458e565b6004602052600090815260409020546001600160a01b031681565b6102d9612094565b6102d96106fd3660046143d8565b6122a6565b6102d96107103660046144a2565b6122cb565b6102d96107233660046146c8565b61235c565b6103ac61073636600461470a565b6125e1565b6102d96107493660046144a2565b61274e565b61036d61075c36600461475d565b63f23a6e6160e01b95945050505050565b600061077882612804565b92915050565b6107886000612829565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6107b46000612829565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6107de612833565b82600033600b546040516316ab5e5b60e11b81526001600160a01b03808416600483015292935060009290911690632d56bcb690602401602060405180830381865afa158015610832573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085691906147c2565b9050808311156108a35760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103634b73290373ab6b132b960691b60448201526064015b60405180910390fd5b6001600160a01b0382166000818152600760209081526040808320878452825280832054938352600982528083208484529091529020600101544281111561092d5760405162461bcd60e51b815260206004820152601c60248201527f54686973206c696e652068617320616c7265616479206c6f636b656400000000604482015260640161089a565b853560208701357f000000000000000000000000000000000000000000000000000000000000000081146109735760405162461bcd60e51b815260040161089a906147db565b4260035483610982919061483e565b10156109a05760405162461bcd60e51b815260040161089a90614851565b336109ad89828d8d61288c565b6109ed5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015260640161089a565b60006109ff60808c0160608d016148bd565b6001811115610a1057610a106142f9565b14610a555760405162461bcd60e51b81526020600482015260156024820152744d757374206265204552433732312072656369706560581b604482015260640161089a565b610a6560c08b0160a08c016148ef565b6001600160f01b0316600114610ab25760405162461bcd60e51b81526020600482015260126024820152715175616e74697479206d757374206265203160701b604482015260640161089a565b610abd818c8c6128f9565b5050505050505050610ace60018055565b505050565b60606000610aec610ae760c085018561490a565b612a49565b905082356040840135610b0560a086016080870161458e565b610b1560808701606088016148bd565b6020870135610b2a60c0890160a08a016148ef565b86604051602001610b419796959493929190614979565b604051602081830303815290604052915050919050565b610b626000612829565b600280546001600160a01b0319166001600160a01b03831617905550565b50565b600b546040516375fe5f9b60e01b81526001600160a01b0383811660048301526060926000929116906375fe5f9b90602401602060405180830381865afa158015610bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf691906147c2565b905060008167ffffffffffffffff811115610c1357610c136141da565b604051908082528060200260200182016040528015610c4c57816020015b610c39613ffb565b815260200190600190039081610c315790505b50905060005b82811015610d53576001600160a01b0385166000818152600760209081526040808320858452825280832054938352600982528083208484528252808320815160c0810183528154815260018083015494820194909452600282015492810192909252600381015491929091606084019160ff90911690811115610cd857610cd86142f9565b6001811115610ce957610ce96142f9565b815260039190910154610100810460ff1660208301526201000090046001600160f01b0316604091820152810184905284519091508190859085908110610d3257610d326149da565b60200260200101819052505050600181610d4c919061483e565b9050610c52565b509392505050565b600082815260208190526040902060010154610d7681612829565b610ace8383612ad2565b6001600160a01b0381163314610dfe5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840161089a565b610e088282612b70565b5050565b610e14612833565b803560208201357f00000000000000000000000000000000000000000000000000000000000000008114610e5a5760405162461bcd60e51b815260040161089a906147db565b4260035483610e69919061483e565b1015610e875760405162461bcd60e51b815260040161089a90614851565b33610e9484828888612bef565b610ed45760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015260640161089a565b610eec610ee7604087016020880161458e565b612c98565b8435610f3a5760405162461bcd60e51b815260206004820152601260248201527f496e76616c696420756e69742070726963650000000000000000000000000000604482015260640161089a565b600b546040516375fe5f9b60e01b81526001600160a01b038381166004830152909116906375fe5f9b90602401602060405180830381865afa158015610f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa891906147c2565b8610610fec5760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103634b73290373ab6b132b960691b604482015260640161089a565b6001600160a01b03811660008181526007602090815260408083208a845282528083205493835260098252808320848452909152902060010154428082116110765760405162461bcd60e51b815260206004820152601e60248201527f54686973206c696e652068617320616c726561647920756e6c6f636b65640000604482015260640161089a565b600061108483838b35612d00565b6001600160a01b038087166000908152600960209081526040808320898452825291829020600101869055600d549394506110d39385938a939116916110ce918f01908f0161458e565b612d5a565b846001600160a01b03167f94fb207911ec4052570feb04c9aff140f8df6388ed5c326b396d0cd020ebe6858b86848d6020016020810190611114919061458e565b6040805194855260208501939093529183015260ff1660608201526080810185905260a00160405180910390a250505050505050610ace60018055565b611159612833565b803560208201357f0000000000000000000000000000000000000000000000000000000000000000811461119f5760405162461bcd60e51b815260040161089a906147db565b42600354836111ae919061483e565b10156111cc5760405162461bcd60e51b815260040161089a90614851565b336111d984828888612d8e565b6112195760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015260640161089a565b61122c610ee7604087016020880161458e565b600d546112519086359083906001600160a01b03166110ce60408a0160208b0161458e565b600b546040516362cc8aff60e01b81526001600160a01b03838116600483015260248201899052909116906362cc8aff90604401600060405180830381600087803b15801561129f57600080fd5b505af11580156112b3573d6000803e3d6000fd5b5050506001600160a01b03821690507f645ce66aa3ac46558a09527ff8012ce2ca65e252e6a241c600cbe03aaaff23828787356112f660408a0160208b0161458e565b60408051938452602084019290925260ff169082015242606082015260800160405180910390a2505050610ace60018055565b611331612833565b82600033600b546040516316ab5e5b60e11b81526001600160a01b03808416600483015292935060009290911690632d56bcb690602401602060405180830381865afa158015611385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a991906147c2565b9050808311156113f15760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103634b73290373ab6b132b960691b604482015260640161089a565b6001600160a01b0382166000818152600760209081526040808320878452825280832054938352600982528083208484529091529020600101544281111561147b5760405162461bcd60e51b815260206004820152601c60248201527f54686973206c696e652068617320616c7265616479206c6f636b656400000000604482015260640161089a565b853560208701357f000000000000000000000000000000000000000000000000000000000000000081146114c15760405162461bcd60e51b815260040161089a906147db565b42600354836114d0919061483e565b10156114ee5760405162461bcd60e51b815260040161089a90614851565b336114fb89828d8d612e09565b61153b5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015260640161089a565b600061154a60c08c018c61490a565b9050116115905760405162461bcd60e51b8152602060048201526014602482015273456d70747920656c656d656e747320617272617960601b604482015260640161089a565b60006115a260808c0160608d016148bd565b60018111156115b3576115b36142f9565b146115f85760405162461bcd60e51b81526020600482015260156024820152744d757374206265204552433732312072656369706560581b604482015260640161089a565b61160860c08b0160a08c016148ef565b6001600160f01b03166001146116555760405162461bcd60e51b81526020600482015260126024820152715175616e74697479206d757374206265203160701b604482015260640161089a565b610abd818c8c612e3a565b61166a6000612829565b82811461167657600080fd5b60005b8381101561171757611705858583818110611696576116966149da565b90506020020160208101906116ab919061458e565b8484848181106116bd576116bd6149da565b90506020020160208101906116d29190614088565b60ff91909116600090815260046020526040902080546001600160a01b0319166001600160a01b03909216919091179055565b61171060018261483e565b9050611679565b5050505050565b6117286000612829565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116600090815260086020908152604080832054600a9092528220546060929061177d90600161483e565b90506000815b8381116117d3576001600160a01b0386166000908152600960209081526040808320848452909152902054156117c1576117be60018361483e565b91505b6117cc60018261483e565b9050611783565b5060008167ffffffffffffffff8111156117ef576117ef6141da565b60405190808252806020026020018201604052801561182857816020015b611815613ffb565b81526020019060019003908161180d5790505b5090506000835b858111611926576001600160a01b03881660009081526009602090815260408083208484528252808320815160c0810183528154815260018083015494820194909452600282015492810192909252600381015491929091606084019160ff909116908111156118a1576118a16142f9565b60018111156118b2576118b26142f9565b815260039190910154610100810460ff1660208301526201000090046001600160f01b031660409091015280519091501561191357808484815181106118fa576118fa6149da565b602090810291909101015261191060018461483e565b92505b5061191f60018261483e565b905061182f565b50909695505050505050565b336000818152600760209081526040808320858452825280832054848452600983528184208185528352818420825160c0810184528154815260018083015495820195909552600282015493810193909352600381015442959294929392606084019160ff16908111156119a8576119a86142f9565b60018111156119b9576119b96142f9565b815260039190910154610100810460ff1660208301526201000090046001600160f01b03166040909101528051909150600003611a385760405162461bcd60e51b815260206004820152601c60248201527f446f6e2774206861766520616e797468696e6720746f20636c61696d00000000604482015260640161089a565b8281602001511115611a8c5760405162461bcd60e51b815260206004820152601860248201527f47656e65726174696f6e206e6f7420636f6d706c657465640000000000000000604482015260640161089a565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611ac257611ac26149da565b6020908102919091018101919091526001600160a01b0386166000908152600982526040808220868352909252908120818155600181018290556002810182905560030155611b118583612f18565b846001600160a01b03167f5699f47610b673314477cc35146313d8b472a910241dd54e96ad1cf885bce0588286604051611b4c9291906149f0565b60405180910390a2505050505050565b611b666000612829565b610b8081600355565b611b796000612829565b828114611b8557600080fd5b60005b8381101561171757828282818110611ba257611ba26149da565b9050602002016020810190611bb79190614088565b60056000878785818110611bcd57611bcd6149da565b9050602002016020810190611be2919061458e565b60ff168152602081019190915260400160002080546001600160a01b0319166001600160a01b0392909216919091179055611c1e60018261483e565b9050611b88565b611c2f6000612829565b610b807f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c82612ad2565b611c636000612829565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b611c8f6000612829565b610b807f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c82612b70565b611cc1612833565b82600033600b546040516316ab5e5b60e11b81526001600160a01b03808416600483015292935060009290911690632d56bcb690602401602060405180830381865afa158015611d15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3991906147c2565b905080831115611d815760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103634b73290373ab6b132b960691b604482015260640161089a565b6001600160a01b03821660008181526007602090815260408083208784528252808320549383526009825280832084845290915290206001015442811115611e0b5760405162461bcd60e51b815260206004820152601c60248201527f54686973206c696e652068617320616c7265616479206c6f636b656400000000604482015260640161089a565b853560208701357f00000000000000000000000000000000000000000000000000000000000000008114611e515760405162461bcd60e51b815260040161089a906147db565b4260035483611e60919061483e565b1015611e7e5760405162461bcd60e51b815260040161089a90614851565b33611e8b89828d8d612e09565b611ecb5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015260640161089a565b6000611eda60c08c018c61490a565b905011611f205760405162461bcd60e51b8152602060048201526014602482015273456d70747920656c656d656e747320617272617960601b604482015260640161089a565b6001611f3260808c0160608d016148bd565b6001811115611f4357611f436142f9565b14611f905760405162461bcd60e51b815260206004820152601660248201527f4d75737420626520455243313135352072656369706500000000000000000000604482015260640161089a565b6000600681611fa560a08e0160808f0161458e565b60ff1681526020810191909152604001600020546001600160a01b03160361200f5760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420455243313135352072656369706500000000000000000000604482015260640161089a565b600061202160c08c0160a08d016148ef565b6001600160f01b0316116120775760405162461bcd60e51b815260206004820152601f60248201527f5175616e74697479206d7573742062652067726561746572207468616e203000604482015260640161089a565b610abd818c8c6130aa565b63bc197c8160e01b5b95945050505050565b33600081815260086020908152604080832054600a9092528220549091906120bd90600161483e565b90504260006120cc8385614a38565b6120d790600161483e565b67ffffffffffffffff8111156120ef576120ef6141da565b604051908082528060200260200182016040528015612118578160200160208202803683370190505b5090506000835b85811161225f576001600160a01b03871660009081526009602090815260408083208484528252808320815160c0810183528154815260018083015494820194909452600282015492810192909252600381015491929091606084019160ff90911690811115612191576121916142f9565b60018111156121a2576121a26142f9565b815260039190910154610100810460ff1660208301526201000090046001600160f01b03166040909101528051909150158015906121e4575084816020015111155b1561225657818484815181106121fc576121fc6149da565b602090810291909101015261221260018461483e565b6001600160a01b0389166000908152600960209081526040808320868452909152812081815560018101829055600281018290556003015592506122568882612f18565b5060010161211f565b5061226b868587613156565b856001600160a01b03167f5699f47610b673314477cc35146313d8b472a910241dd54e96ad1cf885bce0588385604051611b4c9291906149f0565b6000828152602081905260409020600101546122c181612829565b610ace8383612b70565b6122d56000612829565b8281146122e157600080fd5b60005b83811015611717578282828181106122fe576122fe6149da565b90506020020135600a600087878581811061231b5761231b6149da565b90506020020160208101906123309190614088565b6001600160a01b0316815260208101919091526040016000205561235560018261483e565b90506122e4565b806123a95760405162461bcd60e51b815260206004820152601160248201527f456d70747920636c61696d206172726179000000000000000000000000000000604482015260640161089a565b334260005b83811015612595576001600160a01b0383166000908152600960205260408120818787858181106123e1576123e16149da565b9050602002013581526020019081526020016000206040518060c00160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff166001811115612443576124436142f9565b6001811115612454576124546142f9565b815260039190910154610100810460ff1660208301526201000090046001600160f01b031660409091015280519091506000036124d35760405162461bcd60e51b815260206004820152601c60248201527f446f6e2774206861766520616e797468696e6720746f20636c61696d00000000604482015260640161089a565b82816020015111156125275760405162461bcd60e51b815260206004820152601860248201527f47656e65726174696f6e206e6f7420636f6d706c657465640000000000000000604482015260640161089a565b6001600160a01b038416600090815260096020526040812090878785818110612552576125526149da565b60209081029290920135835250810191909152604001600090812081815560018101829055600281018290556003015561258c8482612f18565b506001016123ae565b50816001600160a01b03167f5699f47610b673314477cc35146313d8b472a910241dd54e96ad1cf885bce0588585846040516125d393929190614a4b565b60405180910390a250505050565b606060008267ffffffffffffffff8111156125fe576125fe6141da565b60405190808252806020026020018201604052801561263757816020015b612624613ffb565b81526020019060019003908161261c5790505b50905060005b83811015612745576001600160a01b038616600090815260096020526040812081878785818110612670576126706149da565b9050602002013581526020019081526020016000206040518060c00160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1660018111156126d2576126d26142f9565b60018111156126e3576126e36142f9565b815260039190910154610100810460ff1660208301526201000090046001600160f01b031660409091015283519091508190849084908110612727576127276149da565b60209081029190910101525061273e60018261483e565b905061263d565b50949350505050565b6127586000612829565b82811461276457600080fd5b60005b8381101561171757828282818110612781576127816149da565b90506020020160208101906127969190614088565b600660008787858181106127ac576127ac6149da565b90506020020160208101906127c1919061458e565b60ff168152602081019190915260400160002080546001600160a01b0319166001600160a01b03929092169190911790556127fd60018261483e565b9050612767565b60006001600160e01b03198216630271189760e51b14806107785750610778826131bf565b610b8081336131f4565b6002600154036128855760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161089a565b6002600155565b60008061289883610ad3565b9050600086602001358287878a600001356040516020016128bd959493929190614aa2565b6040516020818303038152906040528051906020012090506128ee818880604001906128e99190614af3565b613267565b979650505050505050565b600060058161290e60a085016080860161458e565b60ff1681526020810191909152604001600020546001600160a01b03169050806129725760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964204552433732312072656369706560581b604482015260640161089a565b8135600061298386868484886132d3565b905061299b8661299660c087018761490a565b6134d1565b604051632142170760e11b81526001600160a01b038781166004830152306024830152604482018490528416906342842e0e906064015b600060405180830381600087803b1580156129ec57600080fd5b505af1158015612a00573d6000803e3d6000fd5b5050505060408401357f7cf41dd7ad39bf7387491ca1de9661135bb0ba73b6cd99ee89b0194aadcd826483612a3860c088018861490a565b85604051611b4c9493929190614b3a565b60608060005b83811015610d53576000858583818110612a6b57612a6b6149da565b905060800201803603810190612a819190614c04565b9050828160000151826020015183604001518460600151604051602001612aac959493929190614c7a565b604051602081830303815290604052925050600181612acb919061483e565b9050612a4f565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610e08576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055612b2c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1615610e08576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000808560200135848460000135856020016020810190612c10919061458e565b60408051602081019590955284019290925260608084019190915260f89190911b6001600160f81b031916608083015286901b6bffffffffffffffffffffffff191660818201528635609582015260b5015b604051602081830303815290604052805190602001209050612c8e818780604001906128e99190614af3565b9695505050505050565b60ff81166000908152600460205260409020546001600160a01b0316610b805760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e743a496e76616c69642063757272656e63792074797065000000604482015260640161089a565b600080612d0d8486614a38565b90506000612d1c603c83614ce2565b600003612d3557612d2e603c83614cf6565b9050612d4e565b612d40603c83614cf6565b612d4b90600161483e565b90505b60006128ee8583614d0a565b60ff81166000908152600460205260409020546001600160a01b0316612d8284308784613742565b611717858585846138ff565b600080856020013585858560000135866020016020810190612db0919061458e565b604051612c629594939291908c359060200195865260609490941b6bffffffffffffffffffffffff191660208601526034850192909252605484015260f81b6001600160f81b0319166074830152607582015260950190565b600080612e1583610ad3565b9050600086602001358686848a600001356040516020016128bd959493929190614d21565b6000600581612e4f60a085016080860161458e565b60ff1681526020810191909152604001600020546001600160a01b0316905080612eb35760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964204552433732312072656369706560581b604482015260640161089a565b6000612ec082843561396f565b90506000612ed28686846000886132d3565b9050612ee58661299660c087018761490a565b6040516340c10f1960e01b8152306004820152602481018390526001600160a01b038416906340c10f19906044016129d2565b600081606001516001811115612f3057612f306142f9565b03612fbc57608081015160ff16600090815260056020526040908190205482519151632142170760e11b81523060048201526001600160a01b03858116602483015260448201939093529116906342842e0e90606401600060405180830381600087803b158015612fa057600080fd5b505af1158015612fb4573d6000803e3d6000fd5b505050505050565b60808101805160ff90811660009081526006602052604081205492516001600160a01b0390931692909116900361306757815160a0830151604051637921219560e11b81526001600160a01b0384169263f242432a92613030923092899290916001600160f01b0390911690600401614d6e565b600060405180830381600087803b15801561304a57600080fd5b505af115801561305e573d6000803e3d6000fd5b50505050505050565b815160a0830151604051637921219560e11b81526001600160a01b0384169263f242432a92613030923092899290916001600160f01b0390911690600401614d6e565b803560006130bc8585846001876132d3565b90506130cf8561299660c086018661490a565b6131026130e260a085016080860161458e565b836130f360c0870160a088016148ef565b6001600160f01b031630613a34565b60408301357f7cf41dd7ad39bf7387491ca1de9661135bb0ba73b6cd99ee89b0194aadcd82648361313660c087018761490a565b856040516131479493929190614b3a565b60405180910390a25050505050565b815b8181116131b9576001600160a01b0384166000908152600960209081526040808320848452909152902054156131b157613193600182614a38565b6001600160a01b0385166000908152600a60205260409020556131b9565b600101613158565b50505050565b60006001600160e01b03198216637965db0b60e01b148061077857506301ffc9a760e01b6001600160e01b0319831614610778565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610e085761322581613b3c565b613230836020613b4e565b604051602001613241929190614db1565b60408051601f198184030181529082905262461bcd60e51b825261089a916004016141c7565b600254604080516020601f85018190048102820181019092528381526000926001600160a01b0316916132c1919086908690819084018382808284376000920191909152506132bb9250899150613cfe9050565b90613d51565b6001600160a01b031614949350505050565b61330e6040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b6001600160a01b038616600090815260086020526040812080546001929061333790849061483e565b90915550506001600160a01b03861660009081526008602090815260408220549190613366908501354261483e565b90506040518060c00160405280878152602001828152602001888152602001866001811115613397576133976142f9565b81526020016133ac60a087016080880161458e565b60ff1681526020016133c460c0870160a088016148ef565b6001600160f01b031690526001600160a01b03891660009081526009602090815260408083208684528252918290208351815590830151600180830191909155918301516002820155606083015160038201805492939192909160ff19909116908381811115613436576134366142f9565b02179055506080828101516003909201805460a0948501516001600160f01b0316620100000261ffff60ff95861661010002169490911693909317929092179091556001600160a01b038a1660008181526007602090815260408083208d8452825291829020879055815194850182529584524295840195909552938201929092526060810188905290810191909152905095945050505050565b8060005b818110156117175760008484838181106134f1576134f16149da565b9050608002018036038101906135079190614c04565b9050600081602001516001811115613521576135216142f9565b036135b05760408181015160ff166000908152600560205281902054600e5483519251632142170760e11b81526001600160a01b038a811660048301529182166024820152604481019390935216906342842e0e90606401600060405180830381600087803b15801561359357600080fd5b505af11580156135a7573d6000803e3d6000fd5b50505050613739565b600081606001516001600160f01b03161161360d5760405162461bcd60e51b815260206004820181905260248201527f4572633131353520656c656d656e74207175616e7469747920696e76616c6964604482015260640161089a565b6040808201805160ff908116600090815260066020529283205491516001600160a01b0390921692911690036136bc57600e5482516060840151604051637921219560e11b81526001600160a01b038581169463f242432a94613685948e94939092169290916001600160f01b031690600401614d6e565b600060405180830381600087803b15801561369f57600080fd5b505af11580156136b3573d6000803e3d6000fd5b50505050613737565b600e5482516060840151604051637921219560e11b81526001600160a01b038581169463f242432a94613704948e94939092169290916001600160f01b031690600401614d6e565b600060405180830381600087803b15801561371e57600080fd5b505af1158015613732573d6000803e3d6000fd5b505050505b505b506001016134d5565b6040516370a0823160e01b81526001600160a01b0385811660048301528391908316906370a08231906024016020604051808303816000875af115801561378d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137b191906147c2565b10156138145760405162461bcd60e51b815260206004820152602c60248201527f45786368616e67652063757272656e63792062616c616e6365206f662075736560448201526b7220697320746f6f206c6f7760a01b606482015260840161089a565b604051636eb1769f60e11b81526001600160a01b038581166004830152848116602483015283919083169063dd62ed3e906044016020604051808303816000875af1158015613867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061388b91906147c2565b10156131b95760405162461bcd60e51b815260206004820152602e60248201527f45786368616e67652063757272656e637920616c6c6f77616e6365206f66207560448201527f73657220697320746f6f206c6f77000000000000000000000000000000000000606482015260840161089a565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018690528216906323b872dd90606401600060405180830381600087803b15801561395157600080fd5b505af1158015613965573d6000803e3d6000fd5b5050505050505050565b600c5460405163670dd5ad60e11b81526001600160a01b0384811660048301526024820184905260016044830152600092839291169063ce1bab5a906064016020604051808303816000875af11580156139cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f19190614e32565b6fffffffffffffffffffffffffffffffff1690506000613a1082613d6d565b9050600082613a2083600a614f48565b613a2a9087614d0a565b612c8e919061483e565b60ff84166000818152600660205260408120546001600160a01b0316919003613acc5760405163b8b31cc360e01b815260048101859052602481018490526001600160a01b0383811660448301526000606483015282169063b8b31cc390608401600060405180830381600087803b158015613aaf57600080fd5b505af1158015613ac3573d6000803e3d6000fd5b50505050611717565b604051631a5a942d60e21b81526001600160a01b038381166004830152602482018690526044820185905282169063696a50b490606401600060405180830381600087803b158015613b1d57600080fd5b505af1158015613b31573d6000803e3d6000fd5b505050505050505050565b60606107786001600160a01b03831660145b60606000613b5d836002614d0a565b613b6890600261483e565b67ffffffffffffffff811115613b8057613b806141da565b6040519080825280601f01601f191660200182016040528015613baa576020820181803683370190505b509050600360fc1b81600081518110613bc557613bc56149da565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613bf457613bf46149da565b60200101906001600160f81b031916908160001a9053506000613c18846002614d0a565b613c2390600161483e565b90505b6001811115613ca8577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110613c6457613c646149da565b1a60f81b828281518110613c7a57613c7a6149da565b60200101906001600160f81b031916908160001a90535060049490941c93613ca181614f54565b9050613c26565b508315613cf75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161089a565b9392505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b6000806000613d608585613da8565b91509150610d5381613ded565b600081600003613d7f57506001919050565b8160005b8115613cf757613d9460018261483e565b9050613da1600a83614cf6565b9150613d83565b6000808251604103613dde5760208301516040840151606085015160001a613dd287828585613f37565b94509450505050613de6565b506000905060025b9250929050565b6000816004811115613e0157613e016142f9565b03613e095750565b6001816004811115613e1d57613e1d6142f9565b03613e6a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161089a565b6002816004811115613e7e57613e7e6142f9565b03613ecb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161089a565b6003816004811115613edf57613edf6142f9565b03610b805760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161089a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613f6e5750600090506003613ff2565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613fc2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613feb57600060019250925050613ff2565b9150600090505b94509492505050565b6040518060c001604052806000815260200160008152602001600081526020016000600181111561402e5761402e6142f9565b815260006020820181905260409091015290565b60006020828403121561405457600080fd5b81356001600160e01b031981168114613cf757600080fd5b80356001600160a01b038116811461408357600080fd5b919050565b60006020828403121561409a57600080fd5b613cf78261406c565b600060e082840312156140b557600080fd5b50919050565b6000606082840312156140b557600080fd5b6000806000606084860312156140e257600080fd5b83359250602084013567ffffffffffffffff8082111561410157600080fd5b61410d878388016140a3565b9350604086013591508082111561412357600080fd5b50614130868287016140bb565b9150509250925092565b60006020828403121561414c57600080fd5b813567ffffffffffffffff81111561416357600080fd5b61416f848285016140a3565b949350505050565b60005b8381101561419257818101518382015260200161417a565b50506000910152565b600081518084526141b3816020860160208601614177565b601f01601f19169290920160200192915050565b602081526000613cf7602083018461419b565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614219576142196141da565b604052919050565b600082601f83011261423257600080fd5b813567ffffffffffffffff81111561424c5761424c6141da565b61425f601f8201601f19166020016141f0565b81815284602083860101111561427457600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156142a757600080fd5b6142b08561406c565b93506142be6020860161406c565b925060408501359150606085013567ffffffffffffffff8111156142e157600080fd5b6142ed87828801614221565b91505092959194509250565b634e487b7160e01b600052602160045260246000fd5b6002811061432d57634e487b7160e01b600052602160045260246000fd5b9052565b602080825282518282018190526000919060409081850190868401855b828110156143b2578151805185528681015187860152858101518686015260608082015161437e8288018261430f565b505060808181015160ff169086015260a0908101516001600160f01b03169085015260c0909301929085019060010161434e565b5091979650505050505050565b6000602082840312156143d157600080fd5b5035919050565b600080604083850312156143eb57600080fd5b823591506143fb6020840161406c565b90509250929050565b6000806000838503608081121561441a57600080fd5b843593506040601f198201121561443057600080fd5b50602084019150606084013567ffffffffffffffff81111561445157600080fd5b614130868287016140bb565b60008083601f84011261446f57600080fd5b50813567ffffffffffffffff81111561448757600080fd5b6020830191508360208260051b8501011115613de657600080fd5b600080600080604085870312156144b857600080fd5b843567ffffffffffffffff808211156144d057600080fd5b6144dc8883890161445d565b909650945060208701359150808211156144f557600080fd5b506145028782880161445d565b95989497509550505050565b6000806040838503121561452157600080fd5b61452a8361406c565b946020939093013593505050565b868152602081018690526040810185905260c0810161455a606083018661430f565b60ff841660808301526001600160f01b03831660a0830152979650505050505050565b803560ff8116811461408357600080fd5b6000602082840312156145a057600080fd5b613cf78261457d565b600082601f8301126145ba57600080fd5b8135602067ffffffffffffffff8211156145d6576145d66141da565b8160051b6145e58282016141f0565b92835284810182019282810190878511156145ff57600080fd5b83870192505b848310156128ee57823582529183019190830190614605565b600080600080600060a0868803121561463657600080fd5b61463f8661406c565b945061464d6020870161406c565b9350604086013567ffffffffffffffff8082111561466a57600080fd5b61467689838a016145a9565b9450606088013591508082111561468c57600080fd5b61469889838a016145a9565b935060808801359150808211156146ae57600080fd5b506146bb88828901614221565b9150509295509295909350565b600080602083850312156146db57600080fd5b823567ffffffffffffffff8111156146f257600080fd5b6146fe8582860161445d565b90969095509350505050565b60008060006040848603121561471f57600080fd5b6147288461406c565b9250602084013567ffffffffffffffff81111561474457600080fd5b6147508682870161445d565b9497909650939450505050565b600080600080600060a0868803121561477557600080fd5b61477e8661406c565b945061478c6020870161406c565b93506040860135925060608601359150608086013567ffffffffffffffff8111156147b657600080fd5b6146bb88828901614221565b6000602082840312156147d457600080fd5b5051919050565b6020808252602d908201527f5369676e617475726556657269666965723a496e76616c696420636f6e74726160408201526c31ba1034b232b73a34b334b2b960991b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561077857610778614828565b6020808252602f908201527f5369676e617475726556657269666965723a5369676e6174757265206861732060408201527f616c726561647920657870697265640000000000000000000000000000000000606082015260800190565b80356002811061408357600080fd5b6000602082840312156148cf57600080fd5b613cf7826148ae565b80356001600160f01b038116811461408357600080fd5b60006020828403121561490157600080fd5b613cf7826148d8565b6000808335601e1984360301811261492157600080fd5b83018035915067ffffffffffffffff82111561493c57600080fd5b6020019150600781901b3603821315613de657600080fd5b6002811061497257634e487b7160e01b600052602160045260246000fd5b60f81b9052565b87815286602082015260ff60f81b8660f81b16604082015261499e6041820186614954565b83604282015261ffff198360101b166062820152600082516149c7816080850160208701614177565b9190910160800198975050505050505050565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b82811015614a2957815184529284019290840190600101614a0d565b50505092019290925292915050565b8181038181111561077857610778614828565b6040815282604082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841115614a8457600080fd5b8360051b808660608501376020830193909352500160600192915050565b85815260008551614aba816020850160208a01614177565b60609590951b6bffffffffffffffffffffffff191660209290950191820194909452603481019290925260548201526074019392505050565b6000808335601e19843603018112614b0a57600080fd5b83018035915067ffffffffffffffff821115614b2557600080fd5b602001915036819003821315613de657600080fd5b84815260e0602080830182905290820184905260009085906101008401835b87811015614bbd5783358252614b708385016148ae565b614b7c8484018261430f565b50604060ff614b8c82870161457d565b169083015260606001600160f01b03614ba68683016148d8565b169083015260809384019390910190600101614b59565b50925061208b9150506040830184805182526020810151602083015260408101516040830152606081015160608301526001600160a01b0360808201511660808301525050565b600060808284031215614c1657600080fd5b6040516080810181811067ffffffffffffffff82111715614c3957614c396141da565b60405282358152614c4c602084016148ae565b6020820152614c5d6040840161457d565b6040820152614c6e606084016148d8565b60608201529392505050565b60008651614c8c818460208b01614177565b8201868152614c9e6020820187614954565b60f89490941b6001600160f81b0319166021850152505060101b61ffff191660228201526040019392505050565b634e487b7160e01b600052601260045260246000fd5b600082614cf157614cf1614ccc565b500690565b600082614d0557614d05614ccc565b500490565b808202811582820484141761077857610778614828565b8581526bffffffffffffffffffffffff198560601b16602082015283603482015260008351614d57816054850160208801614177565b605492019182019290925260740195945050505050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260029082015261060f60f31b60c082015260e00190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614de9816017850160208801614177565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351614e26816028840160208801614177565b01602801949350505050565b600060208284031215614e4457600080fd5b81516fffffffffffffffffffffffffffffffff81168114613cf757600080fd5b600181815b80851115614e9f578160001904821115614e8557614e85614828565b80851615614e9257918102915b93841c9390800290614e69565b509250929050565b600082614eb657506001610778565b81614ec357506000610778565b8160018114614ed95760028114614ee357614eff565b6001915050610778565b60ff841115614ef457614ef4614828565b50506001821b610778565b5060208310610133831016604e8410600b8410161715614f22575081810a610778565b614f2c8383614e64565b8060001904821115614f4057614f40614828565b029392505050565b6000613cf78383614ea7565b600081614f6357614f63614828565b50600019019056fea26469706673582212201e81cb5dc77fa1bee80e4c695fdd7c8a61930a63ca36e9d16c86124cccb844d064736f6c63430008110033000000000000000000000000263a9c0eb5d3f9b6c08b9c7e9e149c6b8ec60c2e000000000000000000000000f3b7a3ab5ae2fa59a303a81a0c03e07b90d93a050000000000000000000000002744ae359c4ebac49b6696becefdb39f738aaa3e0000000000000000000000005b00f8c66a9128549771a03abcfe3fd124abffdc00000000000000000000000062d0e5e193854a4943dec1a48ffc3d6744ab5f54000000000000000000000000000000000000000000000000000000000000012c