anchor.diff:  rand_seed_s() ->
       rand_seed_alg_s(?MODULE).
   
  --dialyzer({no_improper_lists, rand_seed_alg/1}).
   rand_seed_alg(Alg) ->
       rand:seed(rand_seed_alg_s(Alg)).
   
   -define(CRYPTO_CACHE_BITS, 56).
  --dialyzer({no_improper_lists, rand_seed_alg_s/1}).
   rand_seed_alg_s(?MODULE) ->
       {#{ type => ?MODULE,
           bits => 64,
  
positive.code:         uniform_n => fun ?MODULE:rand_plugin_uniform/2},
       no_seed};
  rand_seed_alg_s(crypto_cache) ->
      EnvCacheSize =
          application:get_env(
            crypto, rand_cache_size,
            ?CRYPTO_CACHE_BITS * 16), % Cache 16 * 8 words
      Bytes = (?CRYPTO_CACHE_BITS + 7) div 8,
      CacheSize =
          case ((EnvCacheSize + (Bytes - 1)) div Bytes) * Bytes of
              Sz when is_integer(Sz), Bytes =< Sz ->
  
negative.code: rand_plugin_uniform(Max, State) ->
      {bytes_to_integer(strong_rand_range(Max)) + 1, State}.
  
  rand_cache_plugin_next({CacheBits, CacheSize, <<>>}) ->
      rand_cache_plugin_next(
        {CacheBits, CacheSize, strong_rand_bytes(CacheSize)});
  rand_cache_plugin_next({CacheBits, CacheSize, Cache}) ->
      <<I:CacheBits, NewCache/binary>> = Cache,
      {I, {CacheBits, CacheSize, NewCache}}.
  
  strong_rand_range(Range) when is_integer(Range), Range > 0 ->
      BinRange = int_to_bin(Range),
  