0 txs
3 calls
constructor
No constructor.
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getToken
viewfunction getToken(uint256 tokenId) view returns (tuple tokenView)
getTokenLevelsByUser
viewfunction getTokenLevelsByUser(address user) view returns (uint256[] levels)
getUserSelectedToken
viewfunction getUserSelectedToken(address user) view returns (tuple token)
getUserSelectedTokenId
viewfunction getUserSelectedTokenId(address user) view returns (uint256 tokenId, uint8 level)
getUserTokens
viewfunction getUserTokens(address user) view returns (tuple[] tokens)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
MAX_LEVEL
viewfunction MAX_LEVEL() view returns (uint256)
name
viewfunction name() view returns (string)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
TOKEN_MINTER_ROLE
viewfunction TOKEN_MINTER_ROLE() view returns (bytes32)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
transferHookAddresses
viewfunction transferHookAddresses(uint256) view returns (address)
approve
nonpayablefunction approve(address to, uint256 tokenId)
burn
nonpayablefunction burn(uint256 _tokenId)
deleteTransferHookAddresses
nonpayablefunction deleteTransferHookAddresses(address delHookAddress) returns (bool)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(string baseURI, string name_, string symbol_)
mint
nonpayablefunction mint(address to, uint8 level)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
selectToken
nonpayablefunction selectToken(uint256 newTokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string newBaseUri)
setTransferHookAddresses
nonpayablefunction setTransferHookAddresses(address newHookAddress)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
DeleteTransferHookAddresses
event DeleteTransferHookAddresses(address delHookAddress)
HookError
event HookError(address receiver, bytes returndata)
Initialize
event Initialize(string baseURI, string name, string symbol)
Initialized
event Initialized(uint8 version)
NewTransferHookAddress
event NewTransferHookAddress(address newHookAddress)
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)
TokenMint
event TokenMint(address indexed to, uint256 tokenId, (uint8 level, uint32 createTimestamp) token, string uri)
TokenReselected
event TokenReselected(uint256 oldTokenId, uint256 newTokenId, address indexed owner)
TokenSelected
event TokenSelected(uint256 tokenId, address indexed owner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50613390806100206000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c8063519dc8d211610130578063a217fddf116100b8578063c87b56dd1161007c578063c87b56dd146104e6578063d547741f146104f9578063e4b50cb81461050c578063e985e9c51461051f578063f6b9ac881461055b57600080fd5b8063a217fddf1461049d578063a22cb465146104a5578063a49062d4146104b8578063a6487c53146104c0578063b88d4fde146104d357600080fd5b80636352211e116100ff5780636352211e14610449578063691562a01461045c57806370a082311461046f57806391d148541461048257806395d89b411461049557600080fd5b8063519dc8d2146103e3578063544b05dc1461040357806354a615991461041657806355f804b31461043657600080fd5b80632f745c59116101b357806342966c681161018257806342966c681461036357806342cd53de146103765780634b342699146103965780634f6ccce7146103a9578063512b336d146103bc57600080fd5b80632f745c591461031757806336568abe1461032a5780633d540b6a1461033d57806342842e0e1461035057600080fd5b806318160ddd116101fa57806318160ddd146102a957806320bac308146102bb57806323b872dd146102ce578063248a9ca3146102e15780632f2ff15d1461030457600080fd5b806301ffc9a71461022c57806306fdde0314610254578063081812fc14610269578063095ea7b314610294575b600080fd5b61023f61023a366004612879565b6105b3565b60405190151581526020015b60405180910390f35b61025c6105de565b60405161024b91906128ee565b61027c610277366004612901565b610670565b6040516001600160a01b03909116815260200161024b565b6102a76102a2366004612936565b610697565b005b6099545b60405190815260200161024b565b61027c6102c9366004612901565b6107b1565b6102a76102dc366004612960565b6107dc565b6102ad6102ef366004612901565b600090815260c9602052604090206001015490565b6102a761031236600461299c565b61080d565b6102ad610325366004612936565b610832565b6102a761033836600461299c565b6108c8565b6102a761034b366004612901565b610946565b6102a761035e366004612960565b610a3a565b6102a7610371366004612901565b610a55565b6103896103843660046129c8565b610b17565b60405161024b91906129e3565b61023f6103a43660046129c8565b610bd4565b6102ad6103b7366004612901565b610d38565b6102ad7f262c70cb68844873654dc54487b634cb00850c1e13c785cd0d96a2b89b82947281565b6103f66103f13660046129c8565b610dcb565b60405161024b9190612a8b565b6102a76104113660046129c8565b610e86565b6104296104243660046129c8565b610f17565b60405161024b9190612aed565b6102a7610444366004612b00565b610f42565b61027c610457366004612901565b610f61565b6102a761046a366004612b72565b610fc1565b6102ad61047d3660046129c8565b611127565b61023f61049036600461299c565b6111ad565b61025c6111d8565b6102ad600081565b6102a76104b3366004612baf565b6111e7565b6102ad600581565b6102a76104ce366004612c8c565b6111f2565b6102a76104e1366004612d14565b611373565b61025c6104f4366004612901565b6113a5565b6102a761050736600461299c565b61140c565b61042961051a366004612901565b611431565b61023f61052d366004612d90565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61059c6105693660046129c8565b6001600160a01b0316600090815261012f602090815260408083205480845261012e90925290912054909160ff90911690565b6040805192835260ff90911660208301520161024b565b60006001600160e01b0319821663780e9d6360e01b14806105d857506105d8826114fa565b92915050565b6060606580546105ed90612dba565b80601f016020809104026020016040519081016040528092919081815260200182805461061990612dba565b80156106665780601f1061063b57610100808354040283529160200191610666565b820191906000526020600020905b81548152906001019060200180831161064957829003601f168201915b5050505050905090565b600061067b8261151f565b506000908152606960205260409020546001600160a01b031690565b60006106a282610f61565b9050806001600160a01b0316836001600160a01b0316036107145760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806107305750610730813361052d565b6107a25760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161070b565b6107ac838361157e565b505050565b61012d81815481106107c257600080fd5b6000918252602090912001546001600160a01b0316905081565b6107e633826115ec565b6108025760405162461bcd60e51b815260040161070b90612dee565b6107ac83838361166b565b600082815260c9602052604090206001015461082881611812565b6107ac838361181c565b600061083d83611127565b821061089f5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b606482015260840161070b565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b6001600160a01b03811633146109385760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161070b565b61094282826118a2565b5050565b3361095082610f61565b6001600160a01b0316146109925760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b604482015260640161070b565b333b1580156109a057503233145b6109e35760405162461bcd60e51b815260206004820152601460248201527310dbdb9d1c9858dd081b9bdd08185b1b1bddd95960621b604482015260640161070b565b33600081815261012f6020908152604091829020805490859055825181815291820185905292917f6d88250fcb7468b786cfc2733cf6ef24d6b7a1990ebcbf643895a9604cac478b91015b60405180910390a25050565b6107ac83838360405180602001604052806000815250611373565b6000818152606760205260409020546001600160a01b0316610ab95760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20646f6573206e6f7420657869737400000000604482015260640161070b565b33610ac382610f61565b6001600160a01b031614610b0b5760405162461bcd60e51b815260206004820152600f60248201526e2737ba103a37b5b2b71037bbb732b960891b604482015260640161070b565b610b1481611909565b50565b60606000610b2483611127565b90508067ffffffffffffffff811115610b3f57610b3f612be0565b604051908082528060200260200182016040528015610b68578160200160208202803683370190505b50915060005b81811015610bcd5761012e6000610b858684610832565b8152602081019190915260400160002054835160ff90911690849083908110610bb057610bb0612e3c565b602090810291909101015280610bc581612e68565b915050610b6e565b5050919050565b600080610be081611812565b60005b61012d54811015610d2c5761012d8181548110610c0257610c02612e3c565b6000918252602090912001546001600160a01b0390811690851603610d1a5761012d8054610c3290600190612e81565b81548110610c4257610c42612e3c565b60009182526020909120015461012d80546001600160a01b039092169183908110610c6f57610c6f612e3c565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061012d805480610caf57610caf612e98565b6000828152602090819020600019908301810180546001600160a01b03191690559091019091556040516001600160a01b03861681527f98a87b36d13bc391810663b360a9005245b7f9ff89cb130b0efd7b8723ffcdb5910160405180910390a16001925050610d32565b80610d2481612e68565b915050610be3565b50600091505b50919050565b6000610d4360995490565b8210610da65760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161070b565b60998281548110610db957610db9612e3c565b90600052602060002001549050919050565b60606001600160a01b038216610de057919050565b610de982611127565b67ffffffffffffffff811115610e0157610e01612be0565b604051908082528060200260200182016040528015610e3a57816020015b610e2761282f565b815260200190600190039081610e1f5790505b50905060005b8151811015610d3257610e5661051a8483610832565b828281518110610e6857610e68612e3c565b60200260200101819052508080610e7e90612e68565b915050610e40565b6000610e9181611812565b61012d80546001810182556000919091527f193a3ae4da5049eb74cee39e4cf5827f7ce7b1d1d1775ef1c6311eb60558e6d50180546001600160a01b0319166001600160a01b0384169081179091556040519081527feef5bb8028e1a36d76299e07934ba37a5be504807e9878a59b9c0d8d5ef2cea09060200160405180910390a15050565b610f1f61282f565b6001600160a01b038216600090815261012f60205260409020546105d890611431565b6000610f4d81611812565b610130610f5b838583612efc565b50505050565b6000818152606760205260408120546001600160a01b0316806105d85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161070b565b7f262c70cb68844873654dc54487b634cb00850c1e13c785cd0d96a2b89b829472610feb81611812565b6001600160a01b0383166110415760405162461bcd60e51b815260206004820152601760248201527f416464726573732063616e206e6f74206265207a65726f000000000000000000604482015260640161070b565b60058260ff16111561108a5760405162461bcd60e51b815260206004820152601260248201527113585e081b195d995b08195e18d95959195960721b604482015260640161070b565b60008260ff16116110d25760405162461bcd60e51b81526020600482015260126024820152714c6576656c2063616e74206265207a65726f60701b604482015260640161070b565b600161013160008282546110e69190612fbd565b909155505061013154600081815261012e60205260409020805463ffffffff42166101000264ffffffffff1990911660ff861617179055610f5b848261192f565b60006001600160a01b0382166111915760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161070b565b506001600160a01b031660009081526068602052604090205490565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060606680546105ed90612dba565b61094233838361198f565b600054610100900460ff16158080156112125750600054600160ff909116105b8061122c5750303b15801561122c575060005460ff166001145b61128f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161070b565b6000805460ff1916600117905580156112b2576000805461ff0019166101001790555b6112bc8383611a5d565b6112c4611a8e565b6112cc611ab7565b6112d4611a8e565b6112df600033611ae6565b6101306112ec8582612fd5565b507f1c11763733de294cb4a7a391a62d6b5b0dabf6eee95dce664b45ddaa32de662d84848460405161132093929190613095565b60405180910390a18015610f5b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b61137d33836115ec565b6113995760405162461bcd60e51b815260040161070b90612dee565b610f5b84848484611af0565b60606113b08261151f565b60006113ba611b23565b905060008151116113da5760405180602001604052806000815250611405565b806113e484611b33565b6040516020016113f59291906130d8565b6040516020818303038152906040525b9392505050565b600082815260c9602052604090206001015461142781611812565b6107ac83836118a2565b61143961282f565b6000828152606760205260409020546001600160a01b031661145a57919050565b600082815261012e602090815260409182902082518084018452905460ff808216835263ffffffff61010090920482168385019081528787528351909116938601939093529151909116918301919091526114b483610f61565b6001600160a01b031660608301526114cb836113a5565b60808301525060608101516001600160a01b0316600090815261012f602052604090205490911460a082015290565b60006001600160e01b03198216637965db0b60e01b14806105d857506105d882611c34565b6000818152606760205260409020546001600160a01b0316610b145760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161070b565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906115b382610f61565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806115f883610f61565b9050806001600160a01b0316846001600160a01b0316148061163f57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806116635750836001600160a01b031661165884610670565b6001600160a01b0316145b949350505050565b826001600160a01b031661167e82610f61565b6001600160a01b0316146116e25760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161070b565b6001600160a01b0382166117445760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161070b565b61174f838383611c59565b61175a60008261157e565b6001600160a01b0383166000908152606860205260408120805460019290611783908490612e81565b90915550506001600160a01b03821660009081526068602052604081208054600192906117b1908490612fbd565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610b148133611da4565b61182682826111ad565b61094257600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561185e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6118ac82826111ad565b1561094257600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b61191281611e08565b600090815261012e60205260409020805464ffffffffff19169055565b6119398282611eaf565b600081815261012e602052604090206001600160a01b038316907fd06a75cfae91496a293a407f7051a0b401ffed9260b1e8bd49c94871b714f8fc908390611980826113a5565b604051610a2e93929190613107565b816001600160a01b0316836001600160a01b0316036119f05760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161070b565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600054610100900460ff16611a845760405162461bcd60e51b815260040161070b90613144565b6109428282611ec9565b600054610100900460ff16611ab55760405162461bcd60e51b815260040161070b90613144565b565b600054610100900460ff16611ade5760405162461bcd60e51b815260040161070b90613144565b611ab5611f09565b610942828261181c565b611afb84848461166b565b611b0784848484611f37565b610f5b5760405162461bcd60e51b815260040161070b9061318f565b606061013080546105ed90612dba565b606081600003611b5a5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611b845780611b6e81612e68565b9150611b7d9050600a836131f7565b9150611b5e565b60008167ffffffffffffffff811115611b9f57611b9f612be0565b6040519080825280601f01601f191660200182016040528015611bc9576020820181803683370190505b5090505b841561166357611bde600183612e81565b9150611beb600a8661320b565b611bf6906030612fbd565b60f81b818381518110611c0b57611c0b612e3c565b60200101906001600160f81b031916908160001a905350611c2d600a866131f7565b9450611bcd565b60006001600160e01b0319821663780e9d6360e01b14806105d857506105d882612038565b6001600160a01b03831615801590611c7957506001600160a01b0383163b155b8015611c9d57506001600160a01b038316600090815261012f602052604090205481145b15611cab57611cab83612088565b6001600160a01b03821615801590611cda57506001600160a01b038216600090815261012f6020526040902054155b8015611cee57506001600160a01b0382163b155b15611d4a576001600160a01b038216600081815261012f602052604090819020839055517f8a20d97e95ddf10dd8163a4688f407ee2d842907434837e27fbb27c0bef4590290611d419084815260200190565b60405180910390a25b816001600160a01b0316836001600160a01b031614158015611d7457506001600160a01b03831615155b15611d9957600081815261012e6020526040902054611d99908490839060ff16612179565b6107ac8383836122ca565b611dae82826111ad565b61094257611dc6816001600160a01b03166014612382565b611dd1836020612382565b604051602001611de292919061321f565b60408051601f198184030181529082905262461bcd60e51b825261070b916004016128ee565b6000611e1382610f61565b9050611e2181600084611c59565b611e2c60008361157e565b6001600160a01b0381166000908152606860205260408120805460019290611e55908490612e81565b909155505060008281526067602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b61094282826040518060200160405280600081525061251e565b600054610100900460ff16611ef05760405162461bcd60e51b815260040161070b90613144565b6065611efc8382612fd5565b5060666107ac8282612fd5565b600054610100900460ff16611f305760405162461bcd60e51b815260040161070b90613144565b600160fb55565b60006001600160a01b0384163b1561202d57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611f7b903390899088908890600401613294565b6020604051808303816000875af1925050508015611fb6575060408051601f3d908101601f19168201909252611fb3918101906132c7565b60015b612013573d808015611fe4576040519150601f19603f3d011682016040523d82523d6000602084013e611fe9565b606091505b50805160000361200b5760405162461bcd60e51b815260040161070b9061318f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611663565b506001949350505050565b60006001600160e01b031982166380ac58cd60e01b148061206957506001600160e01b03198216635b5e139f60e01b145b806105d857506301ffc9a760e01b6001600160e01b03198316146105d8565b6001600160a01b038116600090815261012f602052604081205490806120ad84611127565b905060018111156121145760005b8181101561210e5760006120cf8683610832565b90508481146120fb576001600160a01b038616600090815261012f60205260409020819055925061210e565b508061210681612e68565b9150506120bb565b5061212f565b6001600160a01b038416600090815261012f60205260408120555b60408051848152602081018490526001600160a01b038616917f6d88250fcb7468b786cfc2733cf6ef24d6b7a1990ebcbf643895a9604cac478b910160405180910390a250505050565b60005b61012d54811015610f5b5760008061012d838154811061219e5761219e612e3c565b6000918252602090912001546040516001600160a01b03888116602483015260448201889052606482018790529091169060840160408051601f198184030181529181526020820180516001600160e01b03166333b1ce0960e21b1790525161220791906132e4565b6000604051808303816000865af19150503d8060008114612244576040519150601f19603f3d011682016040523d82523d6000602084013e612249565b606091505b5091509150816122b5577f8be66c809197992a61b6d1607705126e85ef4803d844d0f98f4e359563613fd761012d848154811061228857612288612e3c565b6000918252602090912001546040516122ac916001600160a01b0316908490613300565b60405180910390a15b505080806122c290612e68565b91505061217c565b6001600160a01b0383166123255761232081609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b612348565b816001600160a01b0316836001600160a01b031614612348576123488382612551565b6001600160a01b03821661235f576107ac816125ee565b826001600160a01b0316826001600160a01b0316146107ac576107ac828261269d565b60606000612391836002613324565b61239c906002612fbd565b67ffffffffffffffff8111156123b4576123b4612be0565b6040519080825280601f01601f1916602001820160405280156123de576020820181803683370190505b509050600360fc1b816000815181106123f9576123f9612e3c565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061242857612428612e3c565b60200101906001600160f81b031916908160001a905350600061244c846002613324565b612457906001612fbd565b90505b60018111156124cf576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061248b5761248b612e3c565b1a60f81b8282815181106124a1576124a1612e3c565b60200101906001600160f81b031916908160001a90535060049490941c936124c881613343565b905061245a565b5083156114055760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161070b565b61252883836126e1565b6125356000848484611f37565b6107ac5760405162461bcd60e51b815260040161070b9061318f565b6000600161255e84611127565b6125689190612e81565b6000838152609860205260409020549091508082146125bb576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b60995460009061260090600190612e81565b6000838152609a60205260408120546099805493945090928490811061262857612628612e3c565b90600052602060002001549050806099838154811061264957612649612e3c565b6000918252602080832090910192909255828152609a9091526040808220849055858252812055609980548061268157612681612e98565b6001900381819060005260206000200160009055905550505050565b60006126a883611127565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b6001600160a01b0382166127375760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161070b565b6000818152606760205260409020546001600160a01b03161561279c5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161070b565b6127a860008383611c59565b6001600160a01b03821660009081526068602052604081208054600192906127d1908490612fbd565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6040805160c0810182526000808252602082018190529181018290526060808201839052608082015260a081019190915290565b6001600160e01b031981168114610b1457600080fd5b60006020828403121561288b57600080fd5b813561140581612863565b60005b838110156128b1578181015183820152602001612899565b83811115610f5b5750506000910152565b600081518084526128da816020860160208601612896565b601f01601f19169290920160200192915050565b60208152600061140560208301846128c2565b60006020828403121561291357600080fd5b5035919050565b80356001600160a01b038116811461293157600080fd5b919050565b6000806040838503121561294957600080fd5b6129528361291a565b946020939093013593505050565b60008060006060848603121561297557600080fd5b61297e8461291a565b925061298c6020850161291a565b9150604084013590509250925092565b600080604083850312156129af57600080fd5b823591506129bf6020840161291a565b90509250929050565b6000602082840312156129da57600080fd5b6114058261291a565b6020808252825182820181905260009190848201906040850190845b81811015612a1b578351835292840192918401916001016129ff565b50909695505050505050565b8051825260ff602082015116602083015263ffffffff604082015116604083015260018060a01b0360608201511660608301526000608082015160c06080850152612a7560c08501826128c2565b60a0938401511515949093019390935250919050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612ae057603f19888603018452612ace858351612a27565b94509285019290850190600101612ab2565b5092979650505050505050565b6020815260006114056020830184612a27565b60008060208385031215612b1357600080fd5b823567ffffffffffffffff80821115612b2b57600080fd5b818501915085601f830112612b3f57600080fd5b813581811115612b4e57600080fd5b866020828501011115612b6057600080fd5b60209290920196919550909350505050565b60008060408385031215612b8557600080fd5b612b8e8361291a565b9150602083013560ff81168114612ba457600080fd5b809150509250929050565b60008060408385031215612bc257600080fd5b612bcb8361291a565b915060208301358015158114612ba457600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115612c1157612c11612be0565b604051601f8501601f19908116603f01168101908282118183101715612c3957612c39612be0565b81604052809350858152868686011115612c5257600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612c7d57600080fd5b61140583833560208501612bf6565b600080600060608486031215612ca157600080fd5b833567ffffffffffffffff80821115612cb957600080fd5b612cc587838801612c6c565b94506020860135915080821115612cdb57600080fd5b612ce787838801612c6c565b93506040860135915080821115612cfd57600080fd5b50612d0a86828701612c6c565b9150509250925092565b60008060008060808587031215612d2a57600080fd5b612d338561291a565b9350612d416020860161291a565b925060408501359150606085013567ffffffffffffffff811115612d6457600080fd5b8501601f81018713612d7557600080fd5b612d8487823560208401612bf6565b91505092959194509250565b60008060408385031215612da357600080fd5b612dac8361291a565b91506129bf6020840161291a565b600181811c90821680612dce57607f821691505b602082108103610d3257634e487b7160e01b600052602260045260246000fd5b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612e7a57612e7a612e52565b5060010190565b600082821015612e9357612e93612e52565b500390565b634e487b7160e01b600052603160045260246000fd5b601f8211156107ac57600081815260208120601f850160051c81016020861015612ed55750805b601f850160051c820191505b81811015612ef457828155600101612ee1565b505050505050565b67ffffffffffffffff831115612f1457612f14612be0565b612f2883612f228354612dba565b83612eae565b6000601f841160018114612f5c5760008515612f445750838201355b600019600387901b1c1916600186901b178355612fb6565b600083815260209020601f19861690835b82811015612f8d5786850135825560209485019460019092019101612f6d565b5086821015612faa5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60008219821115612fd057612fd0612e52565b500190565b815167ffffffffffffffff811115612fef57612fef612be0565b61300381612ffd8454612dba565b84612eae565b602080601f83116001811461303857600084156130205750858301515b600019600386901b1c1916600185901b178555612ef4565b600085815260208120601f198616915b8281101561306757888601518255948401946001909101908401613048565b50858210156130855787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6060815260006130a860608301866128c2565b82810360208401526130ba81866128c2565b905082810360408401526130ce81856128c2565b9695505050505050565b600083516130ea818460208801612896565b8351908301906130fe818360208801612896565b01949350505050565b8381526000835460ff8116602084015263ffffffff8160081c166040840152506080606083015261313b60808301846128c2565b95945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082613206576132066131e1565b500490565b60008261321a5761321a6131e1565b500690565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613257816017850160208801612896565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613288816028840160208801612896565b01602801949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906130ce908301846128c2565b6000602082840312156132d957600080fd5b815161140581612863565b600082516132f6818460208701612896565b9190910192915050565b6001600160a01b0383168152604060208201819052600090611663908301846128c2565b600081600019048311821515161561333e5761333e612e52565b500290565b60008161335257613352612e52565b50600019019056fea2646970667358221220554ed7dc0faab6358d63fb06eea96c9d73d9d4939e9cf21b4a13499321cecc2564736f6c634300080f0033