code: func (otp *HOTP) Scan(code string, window int) bool {
  	var valid bool
  	codeBytes := []byte(code)
  	counter := otp.Counter()
  
  	for i := 0; i < window; i++ {
  		genCode := []byte(otp.OTP())
  		if subtle.ConstantTimeCompare(codeBytes, genCode) == 1 {
  			valid = true
  			break
  		}
  	}
  	if !valid {
  		otp.setCounter(counter)
  	}
  	return valid
  }
docs: // Scan takes a code input (i.e. from the user), and scans ahead
  // within a certain window of counter values. This can be used in the
  // case where the server's counter and the user's counter have fallen
  // out of sync.