;; agate-stack-11
(define-map scores principal uint)
(define-data-var top-score uint u0)
(define-data-var top-player (optional principal) none)
(define-data-var max-allowed uint u69742)
(define-public (submit-score (points uint))
(begin
(asserts! (<= points (var-get max-allowed)) (err u1))
(map-set scores tx-sender points)
(if (> points (var-get top-score))
(begin
(var-set top-score points)
(var-set top-player (some tx-sender))
(ok true))
(ok true))))
(define-read-only (get-score (who principal))
(ok (default-to u0 (map-get? scores who))))
(define-read-only (get-top)
(ok { score: (var-get top-score), player: (var-get top-player) }))