| Index: abp/filters/parser.py | 
| =================================================================== | 
| --- a/abp/filters/parser.py | 
| +++ b/abp/filters/parser.py | 
| @@ -100,6 +100,7 @@ | 
| COLLAPSE = 'collapse' | 
| SITEKEY = 'sitekey' | 
| DONOTTRACK = 'donottrack' | 
| +    CSP = 'csp' | 
|  | 
|  | 
| def _line_type(name, field_names, format_string): | 
| @@ -145,7 +146,7 @@ | 
| HEADER_REGEXP = re.compile(r'\[(Adblock(?:\s*Plus\s*[\d\.]+?)?)\]', flags=re.I) | 
| HIDING_FILTER_REGEXP = re.compile(r'^([^/*|@"!]*?)#([@?])?#(.+)$') | 
| FILTER_OPTIONS_REGEXP = re.compile( | 
| -    r'\$(~?[\w-]+(?:=[^,\s]+)?(?:,~?[\w-]+(?:=[^,\s]+)?)*)$' | 
| +    r'\$(~?[\w-]+(?:=[^,]+)?(?:,~?[\w-]+(?:=[^,]+)?)*)$' | 
| ) | 
|  | 
|  | 
| @@ -171,10 +172,10 @@ | 
|  | 
|  | 
| def _parse_option(option): | 
| +    if option.startswith('~'): | 
| +        return option[1:], False | 
| if '=' in option: | 
| return option.split('=', 1) | 
| -    if option.startswith('~'): | 
| -        return option[1:], False | 
| return option, True | 
|  | 
|  | 
|  |