```\nfunction numberDrawn(bytes32 _requestId, uint256 _randomness)\n    external\n    whenNotPaused\n    requireAccount(_rngContract)\n    nonReentrant\n{\n    DrawData storage current = draws[_drawsToDate];\n    require(\n        current.randomNumberRequestId == _requestId,\n        "DCBW721: Request ID mismatch"\n    );\n\n    current.winningEdition = uint64(uint256(_randomness % _maxTokenId).add(1));\n\n    if (_exists(current.winningEdition)) {\n        current.winner = ownerOf(current.winningEdition);\n        current.prizePoolWon = current.isGrandPrize == uint96(1)\n            ? uint96(_grandPrizePool)\n            : uint96(_reserves);\n        _payout(current);\n    }\n\n    emit DrawFinished(current.winner, current.winningEdition);\n\n    /// @notice update state\n    _drawsToDate++;\n    _state = DrawState.Closed;\n\n    /// @notice update draw record\n    current.state = _state;\n}\n```\n