0 txs
0 calls
constructor
No constructor.
functions
_getPagedIds
purefunction _getPagedIds(uint256[] idsArray, uint256 offset, uint16 pageSize) pure returns (uint256[])
allowedCollections
viewfunction allowedCollections(uint256) view returns (address)
authorizedAddresses
viewfunction authorizedAddresses(uint256) view returns (address)
availableFees
viewfunction availableFees(address) view returns (uint256)
availablePool
viewfunction availablePool(address) view returns (uint256)
canCreateGames
viewfunction canCreateGames() view returns (bool)
FEE_PERCENT
viewfunction FEE_PERCENT() view returns (uint256)
games
viewfunction games(uint256) view returns (uint256 gameId, uint256 playerATokenId, uint256 playerBTokenId, uint256 stake, bytes32 playerAHash, address playerAContract, uint32 createdTime, address playerBContract, uint32 acceptedTime, address stakeToken, uint32 completedTime, bool isPublic, uint8 status, uint8 outcome)
getAllGames
viewfunction getAllGames(uint256 offset, uint16 pageSize) view returns (tuple[])
getAllowedCollections
viewfunction getAllowedCollections() view returns (address[])
getGame
viewfunction getGame(uint256 gameId) view returns (tuple)
getGames
viewfunction getGames(uint256[] gameIds) view returns (tuple[])
getMyGames
viewfunction getMyGames(address contractAddr, uint256 tokenId, uint256 offset, uint16 pageSize) view returns (tuple[])
getMyPendingGames
viewfunction getMyPendingGames(address contractAddr, uint256 tokenId) view returns (tuple[])
getPlayerStats
viewfunction getPlayerStats(address contractAddr, uint256 tokenId) view returns (tuple)
getPublicGames
viewfunction getPublicGames(uint256 offset, uint16 pageSize) view returns (tuple[] list, uint256 total)
luckyDrawContract
viewfunction luckyDrawContract() view returns (address)
MIN_STAKE_WEI
viewfunction MIN_STAKE_WEI() view returns (uint256)
nextGameId
viewfunction nextGameId() view returns (uint256)
owner
viewfunction owner() view returns (address)
POOL_PERCENT
viewfunction POOL_PERCENT() view returns (uint256)
publicGamesList
viewfunction publicGamesList(uint256) view returns (uint256)
REVEAL_TIMEOUT
viewfunction REVEAL_TIMEOUT() view returns (uint256)
ROUNDS_PER_GAME
viewfunction ROUNDS_PER_GAME() view returns (uint256)
stakeTokenContract
viewfunction stakeTokenContract() view returns (address)
acceptAndPlay
nonpayablefunction acceptAndPlay(tuple acceptDetails) returns (tuple)
adminCancel
nonpayablefunction adminCancel(uint256 gameId)
cancelGame
nonpayablefunction cancelGame(uint256 gameId)
initialize
nonpayablefunction initialize(address _stakeToken, address[] allowedCollections_)
newGame
nonpayablefunction newGame(tuple gameDetails) returns (tuple)
renounceOwnership
nonpayablefunction renounceOwnership()
reveal
nonpayablefunction reveal(tuple revealDetails) returns (tuple)
revealBulk
nonpayablefunction revealBulk(tuple[] revealDetails)
setAllowedCollections
nonpayablefunction setAllowedCollections(address[] allowedCollections_)
setAuthorizedAddresses
nonpayablefunction setAuthorizedAddresses(address[] authorizedAddresses_)
setCanCreateGames
nonpayablefunction setCanCreateGames(bool canCreateGames_)
setLuckyDrawContract
nonpayablefunction setLuckyDrawContract(address luckyDrawContract_)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawByDefault
nonpayablefunction withdrawByDefault(uint256 gameId) returns (tuple)
withdrawFees
nonpayablefunction withdrawFees(address to, uint256 amount)
withdrawPool
nonpayablefunction withdrawPool(address to, uint256 amount)
events
GameAccepted
event GameAccepted(uint256 indexed gameId)
GameCancelled
event GameCancelled(uint256 indexed gameId)
GameCompleted
event GameCompleted(uint256 indexed gameId, uint8 indexed outcome)
GameCreated
event GameCreated(uint256 indexed gameId, bytes32 indexed playerAHash)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x608060405234801561001057600080fd5b5061582980620000216000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c80636ffec29311610146578063ae5ab471116100c3578063df3c66de11610087578063df3c66de146105ea578063e752b793146105fd578063e96f81aa14610610578063e9e730a414610630578063eaf98d2314610643578063f2fde38b1461064c57600080fd5b8063ae5ab47114610588578063b135bbb01461059b578063b8892539146105a4578063cec9777c146105b7578063d6e99e82146105ca57600080fd5b8063958746311161010a578063958746311461051c578063a1d480941461052f578063a2f77bcc1461054f578063a38d6b0d14610562578063ad3b1b471461057557600080fd5b80636ffec293146104d3578063715018a6146104e65780637c4304ff146104ee5780638da5cb5b14610501578063946d92041461050957600080fd5b80633a51f383116101d457806350928ba41161019857806350928ba4146104495780635132faca1461046d57806365833f681461048057806369958ab9146104a05780636cc5f3ad146104b357600080fd5b80633a51f383146103de5780633b356bbb146103f35780633d6ae3a7146104015780634b13ab701461040b5780634ca38d4a1461041e57600080fd5b806322257d2f1161021b57806322257d2f1461036e578063277135361461038e5780632a628e83146103a157806330d52053146103b457806339c73133146103bd57600080fd5b80630bb79aa714610258578063117a5b9014610273578063151ee1221461032657806319a3c0091461033b57806319d1dc7e1461035b575b600080fd5b610260600581565b6040519081526020015b60405180910390f35b61030c610281366004614800565b600160208190526000918252604090912080549181015460028201546003830154600484015460058501546006860154600787015460099097015495969495939492936001600160a01b038084169463ffffffff600160a01b9586900481169585841695819004821694938316939204169060ff80821691610100810482169162010000909104168e565b60405161026a9e9d9c9b9a9998979695949392919061485c565b610339610334366004614a1f565b61065f565b005b61034e610349366004614b99565b61067e565b60405161026a9190614d41565b610339610369366004614d54565b610f57565b61026061037c366004614e04565b60066020526000908152604090205481565b61033961039c366004614a1f565b610f98565b6103396103af366004614800565b610fb3565b6102606101f481565b6103d06103cb366004614e38565b61126b565b60405161026a929190614f4a565b6103e66112e3565b60405161026a9190614f6c565b610260662386f26fc1000081565b6102606203f48081565b610260610419366004614800565b611345565b61043161042c366004614800565b611366565b6040516001600160a01b03909116815260200161026a565b60095461045d90600160a01b900460ff1681565b604051901515815260200161026a565b600854610431906001600160a01b031681565b61049361048e366004614fb9565b611390565b60405161026a9190614fe5565b6103396104ae366004614800565b61161d565b6104c66104c1366004615053565b611856565b60405161026a9190615087565b6103396104e13660046150f7565b611996565b6103396119bc565b6103396104fc366004614fb9565b6119d0565b610431611ba1565b610339610517366004615114565b611bcf565b61043161052a366004614800565b611d30565b61026061053d366004614e04565b60056020526000908152604090205481565b61034e61055d366004614800565b611d40565b600b54610431906001600160a01b031681565b610339610583366004614fb9565b611f41565b610493610596366004615163565b612050565b61026060005481565b61034e6105b2366004614800565b6120d7565b6103396105c5366004614e04565b6124ae565b6105dd6105d8366004614fb9565b6124d8565b60405161026a91906151db565b61034e6105f836600461524f565b6128b2565b61034e61060b3660046152da565b612df6565b61062361061e366004615383565b61341d565b60405161026a91906153d9565b61049361063e366004614e38565b61352a565b61026061019081565b61033961065a366004614e04565b61360a565b610667613648565b805161067a90600a9060208401906146e5565b5050565b61068661474a565b8151600081815260016020526040812060050154600160a01b900463ffffffff1690036106ce5760405162461bcd60e51b81526004016106c5906153ec565b60405180910390fd5b82516001600082815260016020526040902060090154610100900460ff1660038111156106fd576106fd614819565b146107425760405162461bcd60e51b815260206004820152601560248201527411d85b59481b9bdd081858d8d95c1d1959081e595d605a1b60448201526064016106c5565b8351604080860151602080880151925160009360029361076493909201615419565b60408051601f198184030181529082905261077e91615469565b602060405180830381855afa15801561079b573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906107be9190615485565b60008381526001602052604090206004015490915081146108115760405162461bcd60e51b815260206004820152600d60248201526c090c2e6d040dad2e6dac2e8c6d609b1b60448201526064016106c5565b6000808760400151516005146108635760405162461bcd60e51b8152602060048201526017602482015276496e76616c6964206e756d626572206f66206d6f76657360481b60448201526064016106c5565b600084815260026020526040812054905b6005811015610a825760008a6040015182815181106108955761089561549e565b602002602001015160038111156108ae576108ae614819565b036108f35760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081b5bdd99481cdd5c1c1b1a5959605a1b60448201526064016106c5565b61092e826000838d6040015185815181106109105761091061549e565b6020026020010151600381111561092957610929614819565b61367a565b915060008a6040015182815181106109485761094861549e565b60200260200101519050600061096084600185613720565b60ff16600381111561097457610974614819565b905080600381111561098857610988614819565b82600381111561099a5761099a614819565b036109a6575050610a70565b60018260038111156109ba576109ba614819565b1480156109d8575060038160038111156109d6576109d6614819565b145b80610a10575060028260038111156109f2576109f2614819565b148015610a1057506001816003811115610a0e57610a0e614819565b145b80610a4857506003826003811115610a2a57610a2a614819565b148015610a4857506002816003811115610a4657610a46614819565b145b15610a5f5785610a57816154ca565b965050610a6d565b84610a69816154ca565b9550505b50505b80610a7a816154ca565b915050610874565b506000858152600260205260409020819055818303610ac0576000858152600160205260409020600901805462ff0000191662030000179055610b06565b818311610ace576002610ad1565b60015b6000868152600160205260409020600901805462ff0000191662010000836004811115610b0057610b00614819565b02179055505b600085815260016020526040902060078101805463ffffffff60a01b1916600160a01b4263ffffffff1602179055600901805461ff001981166102001790915560ff1615610bae576000858152600160208190526040909120600581015490820154610b7d926001600160a01b0390921691613759565b60008581526001602081905260409091206006810154600290910154610bae926001600160a01b0390921691613759565b600160008681526001602052604090206009015462010000900460ff166004811115610bdc57610bdc614819565b03610c3a576000858152600160208190526040909120600581015491810154600390910154610c35926001600160a01b03169190610c1b9060026154e3565b60008981526001602052604090206009015460ff166137ce565b610d1f565b600260008681526001602052604090206009015462010000900460ff166004811115610c6857610c68614819565b03610ca75760008581526001602052604090206006810154600280830154600390930154610c35936001600160a01b039093169291610c1b91906154e3565b60008581526001602081905260409091206005810154918101546003820154600990920154610ce3936001600160a01b0316929060ff166137ce565b6000858152600160205260409020600681015460028201546003830154600990930154610d1f936001600160a01b03909316929060ff166137ce565b60008581526001602052604090206009015462010000900460ff166004811115610d4b57610d4b614819565b60405186907f260525a806e0714f16de6fea0094e17a171fae8df7fbf6b271e695a7c709fd6290600090a3600085815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b82821015610ec757600084815260209020604080518082019091529083018054829060ff166003811115610e6f57610e6f614819565b6003811115610e8057610e80614819565b81528154602090910190610100900460ff166003811115610ea357610ea3614819565b6003811115610eb457610eb4614819565b8152505081526020019060010190610e39565b50505090825250600982015460ff80821615156020840152604090920191610100909104166003811115610efd57610efd614819565b6003811115610f0e57610f0e614819565b81526020016009820160029054906101000a900460ff166004811115610f3657610f36614819565b6004811115610f4757610f47614819565b9052509998505050505050505050565b60005b815181101561067a57610f85828281518110610f7857610f7861549e565b602002602001015161067e565b5080610f90816154ca565b915050610f5a565b610fa0613648565b805161067a9060079060208401906146e5565b6000818152600160205260408120600501548291600160a01b90910463ffffffff169003610ff35760405162461bcd60e51b81526004016106c5906153ec565b610ffb613648565b6002600083815260016020526040902060090154610100900460ff16600381111561102857611028614819565b106110755760405162461bcd60e51b815260206004820152601a60248201527f47616d6520636f6d706c657465206f722063616e63656c6c656400000000000060448201526064016106c5565b600954600083815260016020819052604090912060058101549101546001600160a01b039283169263a9059cbb926110af929116906138da565b6000858152600160205260409081902060030154905160e084901b6001600160e01b03191681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561110d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113191906154fa565b506001600083815260016020526040902060090154610100900460ff16600381111561115f5761115f614819565b0361122257600954600083815260016020526040902060068101546002909101546001600160a01b039283169263a9059cbb9261119e929116906138da565b6000858152600160205260409081902060030154905160e084901b6001600160e01b03191681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156111fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122091906154fa565b505b600082815260016020526040808220600901805461ff0019166103001790555183917f681705fdbd93dba3b679fd712577e9a86d57c5551c520f8c74857deb57f9623f91a25050565b60045460609060009081036112b75760408051600080825260208201909252906112ab565b6112986147c4565b8152602001906001900390816112905790505b506000915091506112dc565b6112d36112ce6112c76004613950565b868661341d565b613a0d565b60045490925090505b9250929050565b6060600780548060200260200160405190810160405280929190818152602001828054801561133b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161131d575b5050505050905090565b6004818154811061135557600080fd5b600091825260209091200154905081565b6007818154811061137657600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038216600090815260036020908152604080832084845282528083208054825181850281018501909352808352606094938301828280156113f757602002820191906000526020600020905b8154815260200190600101908083116113e3575b5050505050905060008080600090505b83518110156114c5578381815181106114225761142261549e565b602002602001015191506000600381111561143f5761143f614819565b600083815260016020526040902060090154610100900460ff16600381111561146a5761146a614819565b14806114a057506001600083815260016020526040902060090154610100900460ff16600381111561149e5761149e614819565b145b156114b357826114af816154ca565b9350505b806114bd816154ca565b915050611407565b506000826001600160401b038111156114e0576114e0614905565b604051908082528060200260200182016040528015611509578160200160208202803683370190505b5090506000805b85518110156116055785818151811061152b5761152b61549e565b602002602001015193506000600381111561154857611548614819565b600085815260016020526040902060090154610100900460ff16600381111561157357611573614819565b14806115a957506001600085815260016020526040902060090154610100900460ff1660038111156115a7576115a7614819565b145b156115f3578581815181106115c0576115c061549e565b60200260200101518383815181106115da576115da61549e565b6020908102919091010152816115ef816154ca565b9250505b806115fd816154ca565b915050611510565b5061160f82613a0d565b955050505050505b92915050565b6000818152600160205260408120600501548291600160a01b90910463ffffffff16900361165d5760405162461bcd60e51b81526004016106c5906153ec565b8160008082815260016020526040902060090154610100900460ff16600381111561168a5761168a614819565b146116d25760405162461bcd60e51b815260206004820152601860248201527711d85b59481a185cc8185b1c9958591e481cdd185c9d195960421b60448201526064016106c5565b600083815260016020819052604090912060058101549101543391611702916001600160a01b03909116906138da565b6001600160a01b0316146117585760405162461bcd60e51b815260206004820152601a60248201527f596f7520617265206e6f74207468652067616d65206f776e657200000000000060448201526064016106c5565b6009546001600160a01b031663a9059cbb336000868152600160205260409081902060030154905160e084901b6001600160e01b03191681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156117c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ec91906154fa565b50600083815260016020526040902060098101805461ff001916610300179055600601546001600160a01b03166118265761182683613e37565b60405183907f681705fdbd93dba3b679fd712577e9a86d57c5551c520f8c74857deb57f9623f90600090a2505050565b6060600082516001600160401b0381111561187357611873614905565b6040519080825280602002602001820160405280156118ac57816020015b61189961474a565b8152602001906001900390816118915790505b50905060005b835181101561198f576118dd8482815181106118d0576118d061549e565b6020026020010151611d40565b8282815181106118ef576118ef61549e565b602002602001018190525081818151811061190c5761190c61549e565b602002602001015160c0015163ffffffff1660000361197d5761194784828151811061193a5761193a61549e565b6020026020010151613eef565b6040516020016119579190615517565b60408051601f198184030181529082905262461bcd60e51b82526106c591600401615560565b80611987816154ca565b9150506118b2565b5092915050565b61199e613648565b60098054911515600160a01b0260ff60a01b19909216919091179055565b6119c4613648565b6119ce6000613f81565b565b611a3a600a805480602002602001604051908101604052809291908181526020018280548015611a2957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a0b575b5050505050611a353390565b613ff2565b80611a54575033611a49611ba1565b6001600160a01b0316145b611a915760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b60448201526064016106c5565b6008546001600160a01b0316600090815260066020526040902054811115611af65760405162461bcd60e51b8152602060048201526018602482015277416d6f756e74206578636565647320617661696c61626c6560401b60448201526064016106c5565b60095460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6d91906154fa565b506008546001600160a01b031660009081526006602052604081208054839290611b98908490615573565b90915550505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611c145750825b90506000826001600160401b03166001148015611c305750303b155b905081158015611c3e575080155b15611c5c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611c8657845460ff60401b1916600160401b1785555b600880546001600160a01b0389166001600160a01b031991821681179092556009805490911690911790558551611cc49060079060208901906146e5565b506009805460ff60a01b1916600160a01b179055611ce133614057565b8315611d2757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b600a818154811061137657600080fd5b611d4861474a565b600082815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e0890152839004811661010088015260078401549182166101208801529190041661014085015260088101805483518186028101860190945280845291936101608601939290879084015b82821015611e9757600084815260209020604080518082019091529083018054829060ff166003811115611e3f57611e3f614819565b6003811115611e5057611e50614819565b81528154602090910190610100900460ff166003811115611e7357611e73614819565b6003811115611e8457611e84614819565b8152505081526020019060010190611e09565b50505090825250600982015460ff80821615156020840152604090920191610100909104166003811115611ecd57611ecd614819565b6003811115611ede57611ede614819565b81526020016009820160029054906101000a900460ff166004811115611f0657611f06614819565b6004811115611f1757611f17614819565b905250600084815260026020526040902054909150611f3590614068565b61016082015292915050565b611f49613648565b6008546001600160a01b0316600090815260056020526040902054811115611fae5760405162461bcd60e51b8152602060048201526018602482015277416d6f756e74206578636565647320617661696c61626c6560401b60448201526064016106c5565b60095460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015612001573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202591906154fa565b506008546001600160a01b031660009081526005602052604081208054839290611b98908490615573565b6001600160a01b038416600090815260036020908152604080832086845282529182902080548351818402810184019094528084526060936120ce936112ce939192908301828280156120c257602002820191906000526020600020905b8154815260200190600101908083116120ae575b5050505050858561341d565b95945050505050565b6120df61474a565b6000828152600160205260408120600501548391600160a01b90910463ffffffff16900361211f5760405162461bcd60e51b81526004016106c5906153ec565b826001600082815260016020526040902060090154610100900460ff16600381111561214d5761214d614819565b146121925760405162461bcd60e51b815260206004820152601560248201527411d85b59481b9bdd081858d8d95c1d1959081e595d605a1b60448201526064016106c5565b6000848152600160205260409020600601546121bf906203f48090600160a01b900463ffffffff16615586565b421161220d5760405162461bcd60e51b815260206004820152601a60248201527f52657665616c2074696d656f7574206e6f74206578706972656400000000000060448201526064016106c5565b60008481526001602052604090206006810154600280830154600390930154612261936001600160a01b03909316929161224791906154e3565b60008881526001602052604090206009015460ff166137ce565b600084815260016020819052604090912060098101805462ffff0019166204020017905560068101546002909101546122a5926001600160a01b0390921691613759565b600460405185907f260525a806e0714f16de6fea0094e17a171fae8df7fbf6b271e695a7c709fd6290600090a3600084815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b8282101561242357600084815260209020604080518082019091529083018054829060ff1660038111156123cb576123cb614819565b60038111156123dc576123dc614819565b81528154602090910190610100900460ff1660038111156123ff576123ff614819565b600381111561241057612410614819565b8152505081526020019060010190612395565b50505090825250600982015460ff8082161515602084015260409092019161010090910416600381111561245957612459614819565b600381111561246a5761246a614819565b81526020016009820160029054906101000a900460ff16600481111561249257612492614819565b60048111156124a3576124a3614819565b905250949350505050565b6124b6613648565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6125276040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081525090565b600b5460405163097dbef760e31b81526001600160a01b03858116600483015260248201859052909116906000908290634bedf7b890604401600060405180830381865afa15801561257d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125a59190810190615599565b60408051610120810182526001600160a01b0388166000908152600360209081528382208983528152838220548352808301829052828401829052606083018290526080830182905260a08301829052845160c084015284015160e0830152918301516101008201529192505b6001600160a01b03871660009081526003602090815260408083208984529091529020548110156128a8576001600160a01b038716600090815260036020908152604080832089845290915281208054839081106126725761267261549e565b60009182526020909120015490506002600082815260016020526040902060090154610100900460ff1660038111156126ad576126ad614819565b146126b85750612896565b60008181526001602052604081206003810154600990910154829182916126e2919060ff1661415e565b91945092509050600360008581526001602052604090206009015462010000900460ff16600481111561271757612717614819565b03612752576060860180519061272c826154ca565b9052506127398183615586565b8660a00181815161274a919061566f565b905250612873565b600084815260016020819052604090912001548a1480801561279f5750600160008681526001602052604090206009015462010000900460ff16600481111561279d5761279d614819565b145b806127df5750801580156127df5750600160008681526001602052604090206009015462010000900460ff1660048111156127dc576127dc614819565b14155b1561283757602087018051906127f4826154ca565b9052506000858152600160205260409020600301546128148560026154e3565b61281e9190615573565b8760a00181815161282f919061568f565b905250612871565b60408701805190612847826154ca565b90525060008581526001602052604090206003015460a08801805161286d90839061566f565b9052505b505b61287d8183615586565b8660800181815161288e9190615586565b905250505050505b806128a0816154ca565b915050612612565b5095945050505050565b6128ba61474a565b600954600160a01b900460ff166129135760405162461bcd60e51b815260206004820152601760248201527f47616d65206372656174696f6e2069732070617573656400000000000000000060448201526064016106c5565b815161291e906141c1565b6129785760405162461bcd60e51b815260206004820152602560248201527f43726561746f72204e465420636f6c6c656374696f6e206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016106c5565b600061298c836000015184602001516138da565b905061299781614225565b60408301516001600160a01b031615612a33576129b783604001516141c1565b612a115760405162461bcd60e51b815260206004820152602560248201527f496e7669746564204e465420636f6c6c656374696f6e206973206e6f7420616c6044820152641b1bddd95960da1b60648201526084016106c5565b6000612a25846040015185606001516138da565b9050612a318282614274565b505b662386f26fc100008360a001511015612a865760405162461bcd60e51b8152602060048201526015602482015274135a5b9a5b5d5b481cdd185ad9481b9bdd081b595d605a1b60448201526064016106c5565b612a938360a001516142cd565b600080548082526001602081815260409384902083815587516005820180546001600160a01b0319166001600160a01b03928316179055918801519201919091559185015190911615612b225760408481015160008381526001602052919091206006810180546001600160a01b0319166001600160a01b039093169290921790915560608501516002909101555b6080840151600082815260016020526040812060048101929092556008546007830180546001600160a01b0319166001600160a01b0390921691909117905560a086015160038301556005909101805463ffffffff4216600160a01b0263ffffffff60a01b1990911617905580549080612b9b836154ca565b909155505083516001600160a01b0390811660009081526003602090815260408083208289015184528252808320805460018101825590845291909220018390558501511615612c26576040808501516001600160a01b0316600090815260036020908152828220606088015183528152918120805460018101825590825291902001819055612c75565b60008181526001602081905260408220600901805460ff1916821790556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018190555b608084015160405182907fe0eb15f8324648c97893a63e725995febbf40c5ed00da9249b0b1ea5173796f790600090a3600081815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b8282101561242357600084815260209020604080518082019091529083018054829060ff166003811115612d9e57612d9e614819565b6003811115612daf57612daf614819565b81528154602090910190610100900460ff166003811115612dd257612dd2614819565b6003811115612de357612de3614819565b8152505081526020019060010190612d68565b612dfe61474a565b8151600081815260016020526040812060050154600160a01b900463ffffffff169003612e3d5760405162461bcd60e51b81526004016106c5906153ec565b825160008082815260016020526040902060090154610100900460ff166003811115612e6b57612e6b614819565b14612eb35760405162461bcd60e51b815260206004820152601860248201527711d85b59481a185cc8185b1c9958591e481cdd185c9d195960421b60448201526064016106c5565b8351600081815260016020819052604082206005810154910154612ee0916001600160a01b0316906138da565b90506000612ef6876020015188604001516138da565b9050612f0181614225565b612f0b8282614274565b6000838152600160205260409020600601546001600160a01b031615612fd057602080880151600085815260019092526040909120600601546001600160a01b039081169116148015612f735750604080880151600085815260016020529190912060020154145b612fcb5760405162461bcd60e51b815260206004820152602360248201527f596f7572206e6f742074686520696e766974656520666f72207468697320676160448201526236b29760e91b60648201526084016106c5565b6130ac565b612fdd87602001516141c1565b6130385760405162461bcd60e51b815260206004820152602660248201527f537570706c696564204e465420636f6c6c656374696f6e206973206e6f7420616044820152651b1b1bddd95960d21b60648201526084016106c5565b602087810180516000868152600180855260408083206006810180546001600160a01b0319166001600160a01b03968716179055818e01805160029092019190915594519093168252600385528282209351825292845290812080549283018155815291909120018390556130ac83613e37565b6000838152600160205260409020600301546130c7906142cd565b8660600151516005146131165760405162461bcd60e51b8152602060048201526017602482015276496e76616c6964206e756d626572206f66206d6f76657360481b60448201526064016106c5565b6000805b60058110156131ca5760008960600151828151811061313b5761313b61549e565b6020026020010151600381111561315457613154614819565b036131995760405162461bcd60e51b8152602060048201526015602482015274125b9d985b1a59081b5bdd99481cdd5c1c1b1a5959605a1b60448201526064016106c5565b6131b6826001838c6060015185815181106109105761091061549e565b9150806131c2816154ca565b91505061311a565b506000848152600260209081526040808320849055600190915280822060068101805463ffffffff60a01b1916600160a01b4263ffffffff1602179055600901805461ff0019166101001790555185917f5f8e2556f053753c316c48a4cc3bb582c792a32d588cac9e7cf1f7c9be538bdb91a2600084815260016020818152604080842081516101e081018352815481529381015484840152600281015484830152600381015460608501526004810154608085015260058101546001600160a01b0380821660a087015263ffffffff600160a01b92839004811660c0880152600684015480831660e08901528390048116610100880152600784015491821661012088015291900416610140850152600881018054835181860281018601909452808452949591946101608701949192909184015b8282101561338e57600084815260209020604080518082019091529083018054829060ff16600381111561333657613336614819565b600381111561334757613347614819565b81528154602090910190610100900460ff16600381111561336a5761336a614819565b600381111561337b5761337b614819565b8152505081526020019060010190613300565b50505090825250600982015460ff808216151560208401526040909201916101009091041660038111156133c4576133c4614819565b60038111156133d5576133d5614819565b81526020016009820160029054906101000a900460ff1660048111156133fd576133fd614819565b600481111561340e5761340e614819565b90525098975050505050505050565b6060835160000361342f575082613523565b60008385511161344057600061345a565b61345a8361ffff168587516134559190615573565b614426565b90506000816001600160401b0381111561347657613476614905565b60405190808252806020026020018201604052801561349f578160200160208202803683370190505b5080519091501561351f5760008587516134b99190615573565b905060005b8381101561351c57816134d0816156b7565b9250508782815181106134e5576134e561549e565b60200260200101518382815181106134ff576134ff61549e565b602090810291909101015280613514816154ca565b9150506134be565b50505b9150505b9392505050565b60606000836000541161353e576000613554565b6135548361ffff16856000546134559190615573565b90506000816001600160401b0381111561357057613570614905565b604051908082528060200260200182016040528015613599578160200160208202803683370190505b50805190915015613601576000856000546135b49190615573565b905060005b838110156135fe57816135cb816156b7565b925050818382815181106135e1576135e161549e565b6020908102919091010152806135f6816154ca565b9150506135b9565b50505b6120ce81613a0d565b613612613648565b6001600160a01b03811661363c57604051631e4fbdf760e01b8152600060048201526024016106c5565b61364581613f81565b50565b33613651611ba1565b6001600160a01b0316146119ce5760405163118cdaa760e01b81523360048201526024016106c5565b6000600482106136bb5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206d6f766560a01b60448201526064016106c5565b83156136c85760806136cb565b60005b60ff166136d98460026154e3565b6136e39190615586565b6003901b198516905083156136f95760806136fc565b60005b60ff1661370a8460026154e3565b6137149190615586565b9190911b179392505050565b6000821561372f576080613732565b60005b60ff166137408360026154e3565b61374a9190615586565b84901c60031690509392505050565b600b54604051635618f6ff60e01b81526001600160a01b0385811660048301526024820185905260448201849052909116908190635618f6ff90606401600060405180830381600087803b1580156137b057600080fd5b505af11580156137c4573d6000803e3d6000fd5b5050505050505050565b60006137da85856138da565b905060008060006137eb868661415e565b6008546001600160a01b031660009081526005602052604081208054949750929550909350839261381d908490615586565b90915550508415613858576008546001600160a01b031660009081526006602052604081208054849290613852908490615586565b90915550505b60095460405163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529091169063a9059cbb906044016020604051808303816000875af11580156138ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138cf91906154fa565b505050505050505050565b6040516331a9108f60e11b81526004810182905260009083906001600160a01b03821690636352211e90602401602060405180830381865afa158015613924573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061394891906156ce565b949350505050565b80546060906000906001600160401b0381111561396f5761396f614905565b604051908082528060200260200182016040528015613998578160200160208202803683370190505b50905060005b83548110156139f3578381815481106139b9576139b961549e565b90600052602060002001548282815181106139d6576139d661549e565b6020908102919091010152806139eb816154ca565b91505061399e565b5061161781600060018451613a089190615573565b61443c565b6060600082516001600160401b03811115613a2a57613a2a614905565b604051908082528060200260200182016040528015613a6357816020015b613a506147c4565b815260200190600190039081613a485790505b5090508051600003613a755792915050565b613a7d61474a565b60005b8451811015613e2e576000858281518110613a9d57613a9d61549e565b60209081029190910181015160008181526001808452604080832081516101e081018352815481529281015483870152600281015483830152600381015460608401526004810154608084015260058101546001600160a01b0380821660a086015263ffffffff600160a01b92839004811660c0870152600684015480831660e0880152839004811661010087015260078401549182166101208701529190041661014084015260088101805483518189028101890190945280845295975092959094610160870194929392909184015b82821015613bfc57600084815260209020604080518082019091529083018054829060ff166003811115613ba457613ba4614819565b6003811115613bb557613bb5614819565b81528154602090910190610100900460ff166003811115613bd857613bd8614819565b6003811115613be957613be9614819565b8152505081526020019060010190613b6e565b50505090825250600982015460ff80821615156020840152604090920191610100909104166003811115613c3257613c32614819565b6003811115613c4357613c43614819565b81526020016009820160029054906101000a900460ff166004811115613c6b57613c6b614819565b6004811115613c7c57613c7c614819565b905250600082815260026020526040902054909350613c9a90614068565b61016084015260408051606081018252848152600083815260016020818152918490206005810154910154935163c87b56dd60e01b815260048101949094529192908301916001600160a01b03169063c87b56dd90602401600060405180830381865afa158015613d0f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d3791908101906156eb565b81526000838152600160209081526040909120600601549101906001600160a01b0316613d735760405180602001604052806000815250613dfa565b600083815260016020526040908190206006810154600290910154915163c87b56dd60e01b815260048101929092526001600160a01b03169063c87b56dd90602401600060405180830381865afa158015613dd2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613dfa91908101906156eb565b815250848381518110613e0f57613e0f61549e565b6020026020010181905250508080613e26906154ca565b915050613a80565b50909392505050565b60005b60045481101561067a5760048181548110613e5757613e5761549e565b90600052602060002001548203613edd5760048054613e7890600190615573565b81548110613e8857613e8861549e565b906000526020600020015460048281548110613ea657613ea661549e565b6000918252602090912001556004805480613ec357613ec3615758565b600190038181906000526020600020016000905590555050565b80613ee7816154ca565b915050613e3a565b60606000613efc836145bc565b60010190506000816001600160401b03811115613f1b57613f1b614905565b6040519080825280601f01601f191660200182016040528015613f45576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084613f4f57509392505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000805b835181101561404d57826001600160a01b031684828151811061401b5761401b61549e565b60200260200101516001600160a01b03160361403b576001915050611617565b80614045816154ca565b915050613ff6565b5060009392505050565b61405f614694565b613645816146dd565b60408051600580825260c0820190925260609160009190816020015b604080518082019091526000808252602082015281526020019060019003908161408457905050905060005b600581101561198f5760405180604001604052806140d086600085613720565b60ff1660038111156140e4576140e4614819565b60038111156140f5576140f5614819565b815260200161410686600185613720565b60ff16600381111561411a5761411a614819565b600381111561412b5761412b614819565b8152508282815181106141405761414061549e565b60200260200101819052508080614156906154ca565b9150506140b0565b60008080612710614171610190876154e3565b61417b9190615784565b9050836141895760006141a2565b6127106141986101f4876154e3565b6141a29190615784565b91506141ae8282615586565b6141b89086615573565b92509250925092565b6000805b60075481101561421c57600781815481106141e2576141e261549e565b6000918252602090912001546001600160a01b039081169084160361420a5750600192915050565b80614214816154ca565b9150506141c5565b50600092915050565b6001600160a01b03811633146136455760405162461bcd60e51b8152602060048201526014602482015273165bdd481b5d5cdd081bdddb881d1a194813919560621b60448201526064016106c5565b806001600160a01b0316826001600160a01b03160361067a5760405162461bcd60e51b815260206004820152601560248201527421b0b73737ba10383630bc9037bbb7103a37b5b2b760591b60448201526064016106c5565b60095481906001600160a01b031663dd62ed3e336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa15801561432b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061434f9190615485565b101561439d5760405162461bcd60e51b815260206004820181905260248201527f4552432d323020616c6c6f77616e636520697320696e73756666696369656e7460448201526064016106c5565b6009546001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018490526064016020604051808303816000875af1158015614402573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067a91906154fa565b60008183106144355781613523565b5090919050565b818180820361444c575050505050565b600085600261445b878761566f565b6144659190615798565b61446f908761568f565b8151811061447f5761447f61549e565b602002602001015190505b81831361458e575b808684815181106144a5576144a561549e565b602002602001015110156144c557826144bd816157c6565b935050614492565b8582815181106144d7576144d761549e565b60200260200101518110156144f857816144f0816157de565b9250506144c5565b818313614589578582815181106145115761451161549e565b602002602001015186848151811061452b5761452b61549e565b60200260200101518785815181106145455761454561549e565b6020026020010188858151811061455e5761455e61549e565b60209081029190910101919091525282614577816157c6565b9350508180614585906157de565b9250505b61448a565b818512156145a1576145a186868461443c565b838312156145b4576145b486848661443c565b505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106145fb5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614627576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061464557662386f26fc10000830492506010015b6305f5e100831061465d576305f5e100830492506008015b612710831061467157612710830492506004015b60648310614683576064830492506002015b600a83106116175760010192915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166119ce57604051631afcd79f60e31b815260040160405180910390fd5b613612614694565b82805482825590600052602060002090810192821561473a579160200282015b8281111561473a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614705565b506147469291506147eb565b5090565b604080516101e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e082018390526101008201839052610120820183905261014082018390526101608201526101808101829052906101a082019081526020016000905290565b60405180606001604052806147d761474a565b815260200160608152602001606081525090565b5b8082111561474657600081556001016147ec565b60006020828403121561481257600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6004811061364557613645614819565b6148488161482f565b9052565b6005811061484857614848614819565b8e8152602081018e9052604081018d9052606081018c9052608081018b90526001600160a01b038a811660a083015263ffffffff8a1660c0830152881660e08201526101c0810163ffffffff88166101008301526001600160a01b03871661012083015263ffffffff86166101408301528415156101608301526148e461018083018561483f565b6148f26101a083018461484c565b9f9e505050505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561493d5761493d614905565b60405290565b604051601f8201601f191681016001600160401b038111828210171561496b5761496b614905565b604052919050565b60006001600160401b0382111561498c5761498c614905565b5060051b60200190565b6001600160a01b038116811461364557600080fd5b600082601f8301126149bc57600080fd5b813560206149d16149cc83614973565b614943565b82815260059290921b840181019181810190868411156149f057600080fd5b8286015b84811015614a14578035614a0781614996565b83529183019183016149f4565b509695505050505050565b600060208284031215614a3157600080fd5b81356001600160401b03811115614a4757600080fd5b613948848285016149ab565b60006001600160401b03821115614a6c57614a6c614905565b50601f01601f191660200190565b600082601f830112614a8b57600080fd5b81356020614a9b6149cc83614973565b82815260059290921b84018101918181019086841115614aba57600080fd5b8286015b84811015614a1457803560048110614ad65760008081fd5b8352918301918301614abe565b600060608284031215614af557600080fd5b614afd61491b565b9050813581526020808301356001600160401b0380821115614b1e57600080fd5b818501915085601f830112614b3257600080fd5b8135614b406149cc82614a53565b8181528785838601011115614b5457600080fd5b81858501868301376000858383010152808587015250506040850135925080831115614b7f57600080fd5b5050614b8d84828501614a7a565b60408301525092915050565b600060208284031215614bab57600080fd5b81356001600160401b03811115614bc157600080fd5b61394884828501614ae3565b600081518084526020808501945080840160005b83811015614c1a5781518051614bf68161482f565b8852830151614c048161482f565b8784015260409096019590820190600101614be1565b509495945050505050565b60006101e0825184526020830151602085015260408301516040850152606083015160608501526080830151608085015260a0830151614c7060a08601826001600160a01b03169052565b5060c0830151614c8860c086018263ffffffff169052565b5060e0830151614ca360e08601826001600160a01b03169052565b506101008381015163ffffffff90811691860191909152610120808501516001600160a01b031690860152610140808501519091169085015261016080840151818601839052614cf583870182614bcd565b9250505061018080840151614d0d8287018215159052565b50506101a080840151614d228287018261483f565b50506101c080840151614d378287018261484c565b5090949350505050565b6020815260006135236020830184614c25565b60006020808385031215614d6757600080fd5b82356001600160401b0380821115614d7e57600080fd5b818501915085601f830112614d9257600080fd5b8135614da06149cc82614973565b81815260059190911b83018401908481019088831115614dbf57600080fd5b8585015b83811015614df757803585811115614ddb5760008081fd5b614de98b89838a0101614ae3565b845250918601918601614dc3565b5098975050505050505050565b600060208284031215614e1657600080fd5b813561352381614996565b803561ffff81168114614e3357600080fd5b919050565b60008060408385031215614e4b57600080fd5b82359150614e5b60208401614e21565b90509250929050565b60005b83811015614e7f578181015183820152602001614e67565b50506000910152565b60008151808452614ea0816020860160208601614e64565b601f01601f19169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b85811015614f3d578284038952815160608151818752614ef482880182614c25565b9150508682015186820388880152614f0c8282614e88565b91505060408083015192508682038188015250614f298183614e88565b9a87019a9550505090840190600101614ed2565b5091979650505050505050565b604081526000614f5d6040830185614eb4565b90508260208301529392505050565b6020808252825182820181905260009190848201906040850190845b81811015614fad5783516001600160a01b031683529284019291840191600101614f88565b50909695505050505050565b60008060408385031215614fcc57600080fd5b8235614fd781614996565b946020939093013593505050565b6020815260006135236020830184614eb4565b600082601f83011261500957600080fd5b813560206150196149cc83614973565b82815260059290921b8401810191818101908684111561503857600080fd5b8286015b84811015614a14578035835291830191830161503c565b60006020828403121561506557600080fd5b81356001600160401b0381111561507b57600080fd5b61394884828501614ff8565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156150dc57603f198886030184526150ca858351614c25565b945092850192908501906001016150ae565b5092979650505050505050565b801515811461364557600080fd5b60006020828403121561510957600080fd5b8135613523816150e9565b6000806040838503121561512757600080fd5b823561513281614996565b915060208301356001600160401b0381111561514d57600080fd5b615159858286016149ab565b9150509250929050565b6000806000806080858703121561517957600080fd5b843561518481614996565b935060208501359250604085013591506151a060608601614e21565b905092959194509250565b600081518084526020808501945080840160005b83811015614c1a578151875295820195908201906001016151bf565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a082015160c082015260c082015160e0820152600060e08301516101008181850152808501519150506101208081850152506139486101408401826151ab565b600060c0828403121561526157600080fd5b60405160c081018181106001600160401b038211171561528357615283614905565b604052823561529181614996565b81526020838101359082015260408301356152ab81614996565b80604083015250606083013560608201526080830135608082015260a083013560a08201528091505092915050565b6000602082840312156152ec57600080fd5b81356001600160401b038082111561530357600080fd5b908301906080828603121561531757600080fd5b60405160808101818110838211171561533257615332614905565b60405282358152602083013561534781614996565b60208201526040838101359082015260608301358281111561536857600080fd5b61537487828601614a7a565b60608301525095945050505050565b60008060006060848603121561539857600080fd5b83356001600160401b038111156153ae57600080fd5b6153ba86828701614ff8565b935050602084013591506153d060408501614e21565b90509250925092565b60208152600061352360208301846151ab565b60208082526013908201527211d85b5948191bd95cc81b9bdd08195e1a5cdd606a1b604082015260600190565b825160009082906020808701845b8381101561544c57815161543a8161482f565b85529382019390820190600101615427565b50508551915061545f8284838901614e64565b5001949350505050565b6000825161547b818460208701614e64565b9190910192915050565b60006020828403121561549757600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016154dc576154dc6154b4565b5060010190565b8082028115828204841417611617576116176154b4565b60006020828403121561550c57600080fd5b8151613523816150e9565b67023b0b6b29024a2160c51b81526000825161553a816008850160208701614e64565b6e08191bd95cc81b9bdd08195e1a5cdd608a1b6008939091019283015250601701919050565b6020815260006135236020830184614e88565b81810381811115611617576116176154b4565b80820180821115611617576116176154b4565b600060208083850312156155ac57600080fd5b82516001600160401b03808211156155c357600080fd5b90840190606082870312156155d757600080fd5b6155df61491b565b8251815283830151848201526040830151828111156155fd57600080fd5b80840193505086601f84011261561257600080fd5b825191506156226149cc83614973565b82815260059290921b8301840191848101908884111561564157600080fd5b938501935b8385101561565f57845182529385019390850190615646565b6040830152509695505050505050565b818103600083128015838313168383128216171561198f5761198f6154b4565b80820182811260008312801582168215821617156156af576156af6154b4565b505092915050565b6000816156c6576156c66154b4565b506000190190565b6000602082840312156156e057600080fd5b815161352381614996565b6000602082840312156156fd57600080fd5b81516001600160401b0381111561571357600080fd5b8201601f8101841361572457600080fd5b80516157326149cc82614a53565b81815285602083850101111561574757600080fd5b6120ce826020830160208601614e64565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6000826157935761579361576e565b500490565b6000826157a7576157a761576e565b600160ff1b8214600019841416156157c1576157c16154b4565b500590565b60006001600160ff1b0182016154dc576154dc6154b4565b6000600160ff1b82016156c6576156c66154b456fea2646970667358221220d6c82c7db7356a10417326902e417dc9202bdb849493d76ee0380f5f1a09debc64736f6c63430008140033