anchor.diff:  alert_key(ns_confg_log, 0001)  -> config_changed;
   alert_key(_Module, _Code) -> all.
   
  +is_email_server_key("user")    -> true;
  +is_email_server_key("pass")    -> true;
  +is_email_server_key("addr")    -> true;
  +is_email_server_key("port")    -> true;
  +is_email_server_key("encrypt") -> true;
  +is_email_server_key(_)         -> false.
  +
   default_alert_config() ->
       [{email, ""},
        {email_alerts, false},
  
positive.code:              ({[$a, $l, $e, $r, $t, $_ | K], "1"}, C) ->
                    case is_alert_key(K) of
                        true ->
                            lists:keystore(alerts, 1, C,
                                           {alerts,
                                            [list_to_atom(K) |
                                             proplists:get_value(alerts, C)]});
                        false -> C
                    end;
               (_, C) -> C
            end,
  
negative.code: handle_alerts(Req) ->
      reply_json(Req, {struct, [{list, build_alerts(Req:parse_qs())}]}).
  
  % The PostArgs looks like a single flat key-value map, like the json of...
  %
  %   {"email": "joe@rock.com",
  %    "alert_server_up": "1",
  %    "alert_server_joined": "0",
  %    "email_server_port": "587"}
  %
  handle_alerts_settings_post(PostArgs) ->
      AlertConfig = lists:keystore(alerts, 1, get_alert_config(), {alerts, []}),
      AlertConfig2 =
  