anchor.diff:  parse_max_window_bits(_) -> error.
   
   % A negative WindowBits value indicates that zlib headers are not used.
  -init_permessage_deflate(ClientWindowBits, ServerWindowBits, Opts) ->
  +init_permessage_deflate(InflateWindowBits, DeflateWindowBits, Opts) ->
   	Inflate = zlib:open(),
  -	ok = zlib:inflateInit(Inflate, -ClientWindowBits),
  +	ok = zlib:inflateInit(Inflate, -InflateWindowBits),
   	Deflate = zlib:open(),
   	%% @todo Remove this case .. of for OTP 18+ if PR https://github.com/erlang/otp/pull/633 gets merged.
  -	ServerWindowBits2 = case ServerWindowBits of
  +	DeflateWindowBits2 = case DeflateWindowBits of
   		8 -> 9;
  -		_ -> ServerWindowBits
  +		_ -> DeflateWindowBits
   	end,
   	ok = zlib:deflateInit(Deflate,
   		maps:get(level, Opts, best_compression),
   		deflated,
  -		-ServerWindowBits2,
  +		-DeflateWindowBits2,
   		maps:get(mem_level, Opts, 8),
   		maps:get(strategy, Opts, default)),
   	{Inflate, Deflate}.
  
positive.code: 
  -module(cow_ws).
  
  -export([negotiate_permessage_deflate/3]).
  -export([negotiate_x_webkit_deflate_frame/3]).
  
  -export([parse_header/3]).
  -export([parse_payload/9]).
  -export([make_frame/4]).
  -export([frame/2]).
  
  -type close_code() :: 1000..1003 | 1006..1011 | 3000..4999.
  -export_type([close_code/0]).
  
  -type frag_state() :: undefined | {fin | nofin, text | binary, rsv()}.
  -export_type([frag_state/0]).
  
negative.code: 			end
  	end.
  
  parse_request_permessage_deflate_params([], CB, CTO, SB, STO, RespParams) ->
  	{CB, CTO, SB, STO, RespParams};
  parse_request_permessage_deflate_params([<<"client_max_window_bits">>|Tail], CB, CTO, SB, STO, RespParams) ->
  	parse_request_permessage_deflate_params(Tail, CB, CTO, SB, STO,
  		[<<"; ">>, <<"client_max_window_bits=">>, integer_to_binary(CB)|RespParams]);
  parse_request_permessage_deflate_params([{<<"client_max_window_bits">>, Max}|Tail], _, CTO, SB, STO, RespParams) ->
  	case parse_max_window_bits(Max) of
  		error ->
  			ignore;
  		CB ->
  			parse_request_permessage_deflate_params(Tail, CB, CTO, SB, STO,
  				[<<"; ">>, <<"client_max_window_bits=">>, Max|RespParams])
  	end;
  parse_request_permessage_deflate_params([<<"client_no_context_takeover">>|Tail], CB, _, SB, STO, RespParams) ->
  	parse_request_permessage_deflate_params(Tail, CB, no_takeover, SB, STO, [<<"; ">>, <<"client_no_context_takeover">>|RespParams]);
  parse_request_permessage_deflate_params([{<<"server_max_window_bits">>, Max}|Tail], CB, CTO, _, STO, RespParams) ->
  	case parse_max_window_bits(Max) of
  		error ->
  			ignore;
  		SB ->
  			parse_request_permessage_deflate_params(Tail, CB, CTO, SB, STO,
  				[<<"; ">>, <<"server_max_window_bits=">>, Max|RespParams])
  	end;
  parse_request_permessage_deflate_params([<<"server_no_context_takeover">>|Tail], CB, CTO, SB, _, RespParams) ->
  	parse_request_permessage_deflate_params(Tail, CB, CTO, SB, no_takeover, [<<"; ">>, <<"server_no_context_takeover">>|RespParams]);
  %% Ignore if unknown parameter; ignore if parameter with invalid or missing value.
  parse_request_permessage_deflate_params(_, _, _, _, _, _) ->
  	ignore.
  
  parse_max_window_bits(<<"8">>) -> 8;
  