| Index: compiled/filter/ElemHideBase.cpp | 
| =================================================================== | 
| --- a/compiled/filter/ElemHideBase.cpp | 
| +++ b/compiled/filter/ElemHideBase.cpp | 
| @@ -82,19 +82,22 @@ | 
| return Type::UNKNOWN; | 
| case u' ': | 
| seenSpaces = true; | 
| break; | 
| } | 
| } | 
| seenSpaces |= scanner.skip(u' '); | 
| + bool emulation = false; | 
| bool exception = scanner.skipOne(u'@'); | 
| if (exception) | 
| seenSpaces |= scanner.skip(u' '); | 
| + else | 
| + emulation = scanner.skipOne(u'?'); | 
| String::value_type next = scanner.next(); | 
| if (next != u'#') | 
| return Type::UNKNOWN; | 
| // Selector part | 
| // Selector shouldn't be empty | 
| @@ -116,17 +119,17 @@ | 
| // We are done validating, now we can normalize whitespace and the domain part | 
| if (seenSpaces) | 
| NormalizeWhitespace(text, data.mDomainsEnd, data.mSelectorStart); | 
| DependentString(text, 0, data.mDomainsEnd).toLower(); | 
| if (exception) | 
| return Type::ELEMHIDEEXCEPTION; | 
| - if (text.find(u"[-abp-properties="_str, data.mSelectorStart) != text.npos) | 
| + if (emulation) | 
| return Type::ELEMHIDEEMULATION; | 
| return Type::ELEMHIDE; | 
| } | 
| OwnedString ElemHideBase::GetSelectorDomain() const | 
| { | 
| /* TODO this is inefficient */ |