anchor.diff:  -module(dirbusterl).
   -export([bust/2]).
  --record(state, {waiter, wordlist, config}).
  +-record(state, {waiter, wordlist, config, urls}).
   
   -define(BACKOFF_LIMIT, 16384).
   -define(BACKOFF_INTERVAL, 64).
  
positive.code: -define(getStateConfigList(X), proplists:get_value(X, State#state.config, [])).
  
  bust(URL, UserConfig) ->
  	URLs = ets:new(dirbusterl_urls, [named_table]),
  	{Inputs, Config} = process_inputs_open(process_url_restriction(UserConfig)),
  	Waiter = waiter:start_link(Config),
  	process_url_lists(Inputs, Waiter, filter_burst_config(Config)),
  	WordList = proplists:get_value(wordlist, Inputs),
  	bust(URL, dir, #state{waiter=Waiter, wordlist=WordList, config=Config}),
  	process_inputs_close(Inputs),
  	ets:delete(URLs).
  
  bust(URL, Mode, State) ->
  	spawn_worker(URL, State#state.waiter, ?getStateConfigList(http_cfg)),
  	case Mode of
  		dir ->
  			file:position(State#state.wordlist, bof),
  
negative.code: 			Postfix = binary_to_list(Line, 1, byte_size(Line) - 1),
  			Params = ?getStateConfigList(http_cfg),
  			case BaseURL of
  				url_list -> spawn_worker(Postfix, State, Params);
  				_ ->
  					UserPF = ["" | ?getStateConfigList(postfix)],
  					[spawn_worker(
  					   BaseURL ++ ibrowse_lib:url_encode(Postfix) ++ PF,
  					   State, Params) || PF <- UserPF]
  			end,
  			Check - 1;
  		eof -> ok
  