// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: filters.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021, 8981
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace FilterListManager {

  /// <summary>Holder for reflection information generated from filters.proto</summary>
  public static partial class FiltersReflection {

    #region Descriptor
    /// <summary>File descriptor for filters.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static FiltersReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "Cg1maWx0ZXJzLnByb3RvEhNmaWx0ZXJfbGlzdF9tYW5hZ2VyIigKCUZpbHRl",
            "clRhZxIKCgJpZBgBIAEoBRIPCgdrZXl3b3JkGAIgASgJIj8KC0ZpbHRlckdy",
            "b3VwEgoKAmlkGAEgASgFEgwKBG5hbWUYAiABKAkSFgoOZGlzcGxheV9udW1i",
            "ZXIYAyABKAUiYAoPRmlsdGVyTGlzdFJ1bGVzEhEKCWZpbHRlcl9pZBgBIAEo",
            "BRINCgVydWxlcxgCIAMoCRIWCg5kaXNhYmxlZF9ydWxlcxgDIAMoCRITCgty",
            "dWxlc19jb3VudBgEIAEoBSJjChJGaWx0ZXJMaXN0UnVsZXNSYXcSEQoJZmls",
            "dGVyX2lkGAEgASgFEg0KBXJ1bGVzGAIgASgJEhYKDmRpc2FibGVkX3J1bGVz",
            "GAMgASgJEhMKC3J1bGVzX2NvdW50GAQgASgFIjMKEERpc2FibGVkUnVsZXNS",
            "YXcSEQoJZmlsdGVyX2lkGAEgASgFEgwKBHRleHQYAiABKAkitgEKEkZpbHRl",
            "ckxpc3RNZXRhZGF0YRINCgV0aXRsZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgC",
            "IAEoCRIUCgx0aW1lX3VwZGF0ZWQYAyABKAkSDwoHdmVyc2lvbhgEIAEoCRIQ",
            "Cghob21lcGFnZRgFIAEoCRIPCgdsaWNlbnNlGAYgASgJEhAKCGNoZWNrc3Vt",
            "GAcgASgJEgsKA3VybBgIIAEoCRITCgtydWxlc19jb3VudBgJIAEoBSJsChpG",
            "aWx0ZXJMaXN0TWV0YWRhdGFXaXRoQm9keRI5CghtZXRhZGF0YRgBIAEoCzIn",
            "LmZpbHRlcl9saXN0X21hbmFnZXIuRmlsdGVyTGlzdE1ldGFkYXRhEhMKC2Zp",
            "bHRlcl9ib2R5GAIgASgJIrsDChRTdG9yZWRGaWx0ZXJNZXRhZGF0YRIKCgJp",
            "ZBgBIAEoBRIQCghncm91cF9pZBgCIAEoBRIUCgx0aW1lX3VwZGF0ZWQYAyAB",
            "KAMSGgoSbGFzdF9kb3dubG9hZF90aW1lGAQgASgDEg0KBXRpdGxlGAUgASgJ",
            "EhMKC2Rlc2NyaXB0aW9uGAYgASgJEg8KB3ZlcnNpb24YByABKAkSFgoOZGlz",
            "cGxheV9udW1iZXIYCCABKAUSFAoMZG93bmxvYWRfdXJsGAkgASgJEhgKEHN1",
            "YnNjcmlwdGlvbl91cmwYCiABKAkSLAoEdGFncxgLIAMoCzIeLmZpbHRlcl9s",
            "aXN0X21hbmFnZXIuRmlsdGVyVGFnEg8KB2V4cGlyZXMYDCABKAUSEgoKaXNf",
            "dHJ1c3RlZBgNIAEoCBIRCglpc19jdXN0b20YDiABKAgSEgoKaXNfZW5hYmxl",
            "ZBgPIAEoCBIUCgxpc19pbnN0YWxsZWQYECABKAgSEAoIaG9tZXBhZ2UYESAB",
            "KAkSDwoHbGljZW5zZRgSIAEoCRIQCghjaGVja3N1bRgTIAEoCRIRCglsYW5n",
            "dWFnZXMYFCADKAki+QMKDkZ1bGxGaWx0ZXJMaXN0EgoKAmlkGAEgASgFEhAK",
            "CGdyb3VwX2lkGAIgASgFEhQKDHRpbWVfdXBkYXRlZBgDIAEoAxIaChJsYXN0",
            "X2Rvd25sb2FkX3RpbWUYBCABKAMSDQoFdGl0bGUYBSABKAkSEwoLZGVzY3Jp",
            "cHRpb24YBiABKAkSDwoHdmVyc2lvbhgHIAEoCRIWCg5kaXNwbGF5X251bWJl",
            "chgIIAEoBRIUCgxkb3dubG9hZF91cmwYCSABKAkSGAoQc3Vic2NyaXB0aW9u",
            "X3VybBgKIAEoCRIsCgR0YWdzGAsgAygLMh4uZmlsdGVyX2xpc3RfbWFuYWdl",
            "ci5GaWx0ZXJUYWcSDwoHZXhwaXJlcxgMIAEoBRISCgppc190cnVzdGVkGA0g",
            "ASgIEhEKCWlzX2N1c3RvbRgOIAEoCBISCgppc19lbmFibGVkGA8gASgIEhQK",
            "DGlzX2luc3RhbGxlZBgQIAEoCBIQCghob21lcGFnZRgRIAEoCRIPCgdsaWNl",
            "bnNlGBIgASgJEhAKCGNoZWNrc3VtGBMgASgJEhEKCWxhbmd1YWdlcxgUIAMo",
            "CRI4CgVydWxlcxgVIAEoCzIkLmZpbHRlcl9saXN0X21hbmFnZXIuRmlsdGVy",
            "TGlzdFJ1bGVzSACIAQFCCAoGX3J1bGVzIjwKElJ1bGVzQ291bnRCeUZpbHRl",
            "chIRCglmaWx0ZXJfaWQYASABKAUSEwoLcnVsZXNfY291bnQYAiABKAVCKgoY",
            "Y29tLmFkZ3VhcmQuZmxtLnByb3RvYnVmQgxGaWx0ZXJzUHJvdG9QAWIGcHJv",
            "dG8z"));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::FilterListManager.FilterTag), global::FilterListManager.FilterTag.Parser, new[]{ "Id", "Keyword" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::FilterListManager.FilterGroup), global::FilterListManager.FilterGroup.Parser, new[]{ "Id", "Name", "DisplayNumber" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::FilterListManager.FilterListRules), global::FilterListManager.FilterListRules.Parser, new[]{ "FilterId", "Rules", "DisabledRules", "RulesCount" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::FilterListManager.FilterListRulesRaw), global::FilterListManager.FilterListRulesRaw.Parser, new[]{ "FilterId", "Rules", "DisabledRules", "RulesCount" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::FilterListManager.DisabledRulesRaw), global::FilterListManager.DisabledRulesRaw.Parser, new[]{ "FilterId", "Text" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::FilterListManager.FilterListMetadata), global::FilterListManager.FilterListMetadata.Parser, new[]{ "Title", "Description", "TimeUpdated", "Version", "Homepage", "License", "Checksum", "Url", "RulesCount" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::FilterListManager.FilterListMetadataWithBody), global::FilterListManager.FilterListMetadataWithBody.Parser, new[]{ "Metadata", "FilterBody" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::FilterListManager.StoredFilterMetadata), global::FilterListManager.StoredFilterMetadata.Parser, new[]{ "Id", "GroupId", "TimeUpdated", "LastDownloadTime", "Title", "Description", "Version", "DisplayNumber", "DownloadUrl", "SubscriptionUrl", "Tags", "Expires", "IsTrusted", "IsCustom", "IsEnabled", "IsInstalled", "Homepage", "License", "Checksum", "Languages" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::FilterListManager.FullFilterList), global::FilterListManager.FullFilterList.Parser, new[]{ "Id", "GroupId", "TimeUpdated", "LastDownloadTime", "Title", "Description", "Version", "DisplayNumber", "DownloadUrl", "SubscriptionUrl", "Tags", "Expires", "IsTrusted", "IsCustom", "IsEnabled", "IsInstalled", "Homepage", "License", "Checksum", "Languages", "Rules" }, new[]{ "Rules" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::FilterListManager.RulesCountByFilter), global::FilterListManager.RulesCountByFilter.Parser, new[]{ "FilterId", "RulesCount" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class FilterTag : pb::IMessage<FilterTag>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<FilterTag> _parser = new pb::MessageParser<FilterTag>(() => new FilterTag());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<FilterTag> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::FilterListManager.FiltersReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterTag() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterTag(FilterTag other) : this() {
      id_ = other.id_;
      keyword_ = other.keyword_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterTag Clone() {
      return new FilterTag(this);
    }

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private int id_;
    /// <summary>
    /// Filter tag id.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { return id_; }
      set {
        id_ = value;
      }
    }

    /// <summary>Field number for the "keyword" field.</summary>
    public const int KeywordFieldNumber = 2;
    private string keyword_ = "";
    /// <summary>
    /// Filter keyword (purpose, lang, platform, etc.)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Keyword {
      get { return keyword_; }
      set {
        keyword_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as FilterTag);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(FilterTag other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Keyword != other.Keyword) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Id != 0) hash ^= Id.GetHashCode();
      if (Keyword.Length != 0) hash ^= Keyword.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Id != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (Keyword.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Keyword);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Id != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (Keyword.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Keyword);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Id != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (Keyword.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Keyword);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(FilterTag other) {
      if (other == null) {
        return;
      }
      if (other.Id != 0) {
        Id = other.Id;
      }
      if (other.Keyword.Length != 0) {
        Keyword = other.Keyword;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Keyword = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Keyword = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class FilterGroup : pb::IMessage<FilterGroup>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<FilterGroup> _parser = new pb::MessageParser<FilterGroup>(() => new FilterGroup());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<FilterGroup> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::FilterListManager.FiltersReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterGroup() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterGroup(FilterGroup other) : this() {
      id_ = other.id_;
      name_ = other.name_;
      displayNumber_ = other.displayNumber_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterGroup Clone() {
      return new FilterGroup(this);
    }

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private int id_;
    /// <summary>
    /// Group id
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { return id_; }
      set {
        id_ = value;
      }
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 2;
    private string name_ = "";
    /// <summary>
    /// Group name
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "display_number" field.</summary>
    public const int DisplayNumberFieldNumber = 3;
    private int displayNumber_;
    /// <summary>
    /// Display number for ordering
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int DisplayNumber {
      get { return displayNumber_; }
      set {
        displayNumber_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as FilterGroup);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(FilterGroup other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (Name != other.Name) return false;
      if (DisplayNumber != other.DisplayNumber) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Id != 0) hash ^= Id.GetHashCode();
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (DisplayNumber != 0) hash ^= DisplayNumber.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Id != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (DisplayNumber != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(DisplayNumber);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Id != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (Name.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Name);
      }
      if (DisplayNumber != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(DisplayNumber);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Id != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (DisplayNumber != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DisplayNumber);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(FilterGroup other) {
      if (other == null) {
        return;
      }
      if (other.Id != 0) {
        Id = other.Id;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.DisplayNumber != 0) {
        DisplayNumber = other.DisplayNumber;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 24: {
            DisplayNumber = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 18: {
            Name = input.ReadString();
            break;
          }
          case 24: {
            DisplayNumber = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class FilterListRules : pb::IMessage<FilterListRules>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<FilterListRules> _parser = new pb::MessageParser<FilterListRules>(() => new FilterListRules());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<FilterListRules> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::FilterListManager.FiltersReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterListRules() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterListRules(FilterListRules other) : this() {
      filterId_ = other.filterId_;
      rules_ = other.rules_.Clone();
      disabledRules_ = other.disabledRules_.Clone();
      rulesCount_ = other.rulesCount_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterListRules Clone() {
      return new FilterListRules(this);
    }

    /// <summary>Field number for the "filter_id" field.</summary>
    public const int FilterIdFieldNumber = 1;
    private int filterId_;
    /// <summary>
    /// Associated filter id.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int FilterId {
      get { return filterId_; }
      set {
        filterId_ = value;
      }
    }

    /// <summary>Field number for the "rules" field.</summary>
    public const int RulesFieldNumber = 2;
    private static readonly pb::FieldCodec<string> _repeated_rules_codec
        = pb::FieldCodec.ForString(18);
    private readonly pbc::RepeatedField<string> rules_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// List of all rules in the filter list.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> Rules {
      get { return rules_; }
    }

    /// <summary>Field number for the "disabled_rules" field.</summary>
    public const int DisabledRulesFieldNumber = 3;
    private static readonly pb::FieldCodec<string> _repeated_disabledRules_codec
        = pb::FieldCodec.ForString(26);
    private readonly pbc::RepeatedField<string> disabledRules_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// List of only disabled rules.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> DisabledRules {
      get { return disabledRules_; }
    }

    /// <summary>Field number for the "rules_count" field.</summary>
    public const int RulesCountFieldNumber = 4;
    private int rulesCount_;
    /// <summary>
    ///&#x2F; Rules count in this filter list. Simply a number of non-empty lines
    ///&#x2F; and does not start with a comment marker.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int RulesCount {
      get { return rulesCount_; }
      set {
        rulesCount_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as FilterListRules);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(FilterListRules other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (FilterId != other.FilterId) return false;
      if(!rules_.Equals(other.rules_)) return false;
      if(!disabledRules_.Equals(other.disabledRules_)) return false;
      if (RulesCount != other.RulesCount) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (FilterId != 0) hash ^= FilterId.GetHashCode();
      hash ^= rules_.GetHashCode();
      hash ^= disabledRules_.GetHashCode();
      if (RulesCount != 0) hash ^= RulesCount.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (FilterId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(FilterId);
      }
      rules_.WriteTo(output, _repeated_rules_codec);
      disabledRules_.WriteTo(output, _repeated_disabledRules_codec);
      if (RulesCount != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(RulesCount);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (FilterId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(FilterId);
      }
      rules_.WriteTo(ref output, _repeated_rules_codec);
      disabledRules_.WriteTo(ref output, _repeated_disabledRules_codec);
      if (RulesCount != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(RulesCount);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (FilterId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FilterId);
      }
      size += rules_.CalculateSize(_repeated_rules_codec);
      size += disabledRules_.CalculateSize(_repeated_disabledRules_codec);
      if (RulesCount != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RulesCount);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(FilterListRules other) {
      if (other == null) {
        return;
      }
      if (other.FilterId != 0) {
        FilterId = other.FilterId;
      }
      rules_.Add(other.rules_);
      disabledRules_.Add(other.disabledRules_);
      if (other.RulesCount != 0) {
        RulesCount = other.RulesCount;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            FilterId = input.ReadInt32();
            break;
          }
          case 18: {
            rules_.AddEntriesFrom(input, _repeated_rules_codec);
            break;
          }
          case 26: {
            disabledRules_.AddEntriesFrom(input, _repeated_disabledRules_codec);
            break;
          }
          case 32: {
            RulesCount = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            FilterId = input.ReadInt32();
            break;
          }
          case 18: {
            rules_.AddEntriesFrom(ref input, _repeated_rules_codec);
            break;
          }
          case 26: {
            disabledRules_.AddEntriesFrom(ref input, _repeated_disabledRules_codec);
            break;
          }
          case 32: {
            RulesCount = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class FilterListRulesRaw : pb::IMessage<FilterListRulesRaw>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<FilterListRulesRaw> _parser = new pb::MessageParser<FilterListRulesRaw>(() => new FilterListRulesRaw());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<FilterListRulesRaw> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::FilterListManager.FiltersReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterListRulesRaw() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterListRulesRaw(FilterListRulesRaw other) : this() {
      filterId_ = other.filterId_;
      rules_ = other.rules_;
      disabledRules_ = other.disabledRules_;
      rulesCount_ = other.rulesCount_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterListRulesRaw Clone() {
      return new FilterListRulesRaw(this);
    }

    /// <summary>Field number for the "filter_id" field.</summary>
    public const int FilterIdFieldNumber = 1;
    private int filterId_;
    /// <summary>
    /// Associated filter id.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int FilterId {
      get { return filterId_; }
      set {
        filterId_ = value;
      }
    }

    /// <summary>Field number for the "rules" field.</summary>
    public const int RulesFieldNumber = 2;
    private string rules_ = "";
    /// <summary>
    /// List of all rules in the filter list as string.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Rules {
      get { return rules_; }
      set {
        rules_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "disabled_rules" field.</summary>
    public const int DisabledRulesFieldNumber = 3;
    private string disabledRules_ = "";
    /// <summary>
    /// List of only disabled rules as string.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string DisabledRules {
      get { return disabledRules_; }
      set {
        disabledRules_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "rules_count" field.</summary>
    public const int RulesCountFieldNumber = 4;
    private int rulesCount_;
    /// <summary>
    ///&#x2F; Rules count in this filter list. Simply a number of non-empty lines
    ///&#x2F; and does not start with a comment marker.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int RulesCount {
      get { return rulesCount_; }
      set {
        rulesCount_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as FilterListRulesRaw);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(FilterListRulesRaw other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (FilterId != other.FilterId) return false;
      if (Rules != other.Rules) return false;
      if (DisabledRules != other.DisabledRules) return false;
      if (RulesCount != other.RulesCount) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (FilterId != 0) hash ^= FilterId.GetHashCode();
      if (Rules.Length != 0) hash ^= Rules.GetHashCode();
      if (DisabledRules.Length != 0) hash ^= DisabledRules.GetHashCode();
      if (RulesCount != 0) hash ^= RulesCount.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (FilterId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(FilterId);
      }
      if (Rules.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Rules);
      }
      if (DisabledRules.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(DisabledRules);
      }
      if (RulesCount != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(RulesCount);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (FilterId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(FilterId);
      }
      if (Rules.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Rules);
      }
      if (DisabledRules.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(DisabledRules);
      }
      if (RulesCount != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(RulesCount);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (FilterId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FilterId);
      }
      if (Rules.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Rules);
      }
      if (DisabledRules.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DisabledRules);
      }
      if (RulesCount != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RulesCount);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(FilterListRulesRaw other) {
      if (other == null) {
        return;
      }
      if (other.FilterId != 0) {
        FilterId = other.FilterId;
      }
      if (other.Rules.Length != 0) {
        Rules = other.Rules;
      }
      if (other.DisabledRules.Length != 0) {
        DisabledRules = other.DisabledRules;
      }
      if (other.RulesCount != 0) {
        RulesCount = other.RulesCount;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            FilterId = input.ReadInt32();
            break;
          }
          case 18: {
            Rules = input.ReadString();
            break;
          }
          case 26: {
            DisabledRules = input.ReadString();
            break;
          }
          case 32: {
            RulesCount = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            FilterId = input.ReadInt32();
            break;
          }
          case 18: {
            Rules = input.ReadString();
            break;
          }
          case 26: {
            DisabledRules = input.ReadString();
            break;
          }
          case 32: {
            RulesCount = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class DisabledRulesRaw : pb::IMessage<DisabledRulesRaw>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<DisabledRulesRaw> _parser = new pb::MessageParser<DisabledRulesRaw>(() => new DisabledRulesRaw());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<DisabledRulesRaw> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::FilterListManager.FiltersReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DisabledRulesRaw() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DisabledRulesRaw(DisabledRulesRaw other) : this() {
      filterId_ = other.filterId_;
      text_ = other.text_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DisabledRulesRaw Clone() {
      return new DisabledRulesRaw(this);
    }

    /// <summary>Field number for the "filter_id" field.</summary>
    public const int FilterIdFieldNumber = 1;
    private int filterId_;
    /// <summary>
    /// Associated filter id.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int FilterId {
      get { return filterId_; }
      set {
        filterId_ = value;
      }
    }

    /// <summary>Field number for the "text" field.</summary>
    public const int TextFieldNumber = 2;
    private string text_ = "";
    /// <summary>
    /// List of only disabled rules as string.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Text {
      get { return text_; }
      set {
        text_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as DisabledRulesRaw);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(DisabledRulesRaw other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (FilterId != other.FilterId) return false;
      if (Text != other.Text) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (FilterId != 0) hash ^= FilterId.GetHashCode();
      if (Text.Length != 0) hash ^= Text.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (FilterId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(FilterId);
      }
      if (Text.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Text);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (FilterId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(FilterId);
      }
      if (Text.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Text);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (FilterId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FilterId);
      }
      if (Text.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Text);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(DisabledRulesRaw other) {
      if (other == null) {
        return;
      }
      if (other.FilterId != 0) {
        FilterId = other.FilterId;
      }
      if (other.Text.Length != 0) {
        Text = other.Text;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            FilterId = input.ReadInt32();
            break;
          }
          case 18: {
            Text = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            FilterId = input.ReadInt32();
            break;
          }
          case 18: {
            Text = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class FilterListMetadata : pb::IMessage<FilterListMetadata>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<FilterListMetadata> _parser = new pb::MessageParser<FilterListMetadata>(() => new FilterListMetadata());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<FilterListMetadata> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::FilterListManager.FiltersReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterListMetadata() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterListMetadata(FilterListMetadata other) : this() {
      title_ = other.title_;
      description_ = other.description_;
      timeUpdated_ = other.timeUpdated_;
      version_ = other.version_;
      homepage_ = other.homepage_;
      license_ = other.license_;
      checksum_ = other.checksum_;
      url_ = other.url_;
      rulesCount_ = other.rulesCount_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterListMetadata Clone() {
      return new FilterListMetadata(this);
    }

    /// <summary>Field number for the "title" field.</summary>
    public const int TitleFieldNumber = 1;
    private string title_ = "";
    /// <summary>
    /// Title from the `! Title:` metadata field.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Title {
      get { return title_; }
      set {
        title_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "description" field.</summary>
    public const int DescriptionFieldNumber = 2;
    private string description_ = "";
    /// <summary>
    /// Description from the `! Description:` metadata field.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Description {
      get { return description_; }
      set {
        description_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "time_updated" field.</summary>
    public const int TimeUpdatedFieldNumber = 3;
    private string timeUpdated_ = "";
    /// <summary>
    /// Time updated from the `! TimeUpdated:` metadata field.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string TimeUpdated {
      get { return timeUpdated_; }
      set {
        timeUpdated_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "version" field.</summary>
    public const int VersionFieldNumber = 4;
    private string version_ = "";
    /// <summary>
    /// Version from the `! Version:` metadata field.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Version {
      get { return version_; }
      set {
        version_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "homepage" field.</summary>
    public const int HomepageFieldNumber = 5;
    private string homepage_ = "";
    /// <summary>
    /// Homepage from the `! Homepage:` metadata field.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Homepage {
      get { return homepage_; }
      set {
        homepage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "license" field.</summary>
    public const int LicenseFieldNumber = 6;
    private string license_ = "";
    /// <summary>
    /// License from the `! License:` metadata field.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string License {
      get { return license_; }
      set {
        license_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "checksum" field.</summary>
    public const int ChecksumFieldNumber = 7;
    private string checksum_ = "";
    /// <summary>
    /// Checksum from the `! Checksum:` metadata field.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Checksum {
      get { return checksum_; }
      set {
        checksum_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "url" field.</summary>
    public const int UrlFieldNumber = 8;
    private string url_ = "";
    /// <summary>
    /// URL or local path where the filter content was downloaded from.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Url {
      get { return url_; }
      set {
        url_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "rules_count" field.</summary>
    public const int RulesCountFieldNumber = 9;
    private int rulesCount_;
    /// <summary>
    /// Rules count in this filter list.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int RulesCount {
      get { return rulesCount_; }
      set {
        rulesCount_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as FilterListMetadata);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(FilterListMetadata other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Title != other.Title) return false;
      if (Description != other.Description) return false;
      if (TimeUpdated != other.TimeUpdated) return false;
      if (Version != other.Version) return false;
      if (Homepage != other.Homepage) return false;
      if (License != other.License) return false;
      if (Checksum != other.Checksum) return false;
      if (Url != other.Url) return false;
      if (RulesCount != other.RulesCount) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Title.Length != 0) hash ^= Title.GetHashCode();
      if (Description.Length != 0) hash ^= Description.GetHashCode();
      if (TimeUpdated.Length != 0) hash ^= TimeUpdated.GetHashCode();
      if (Version.Length != 0) hash ^= Version.GetHashCode();
      if (Homepage.Length != 0) hash ^= Homepage.GetHashCode();
      if (License.Length != 0) hash ^= License.GetHashCode();
      if (Checksum.Length != 0) hash ^= Checksum.GetHashCode();
      if (Url.Length != 0) hash ^= Url.GetHashCode();
      if (RulesCount != 0) hash ^= RulesCount.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Title.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Title);
      }
      if (Description.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Description);
      }
      if (TimeUpdated.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(TimeUpdated);
      }
      if (Version.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Version);
      }
      if (Homepage.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Homepage);
      }
      if (License.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(License);
      }
      if (Checksum.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Checksum);
      }
      if (Url.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(Url);
      }
      if (RulesCount != 0) {
        output.WriteRawTag(72);
        output.WriteInt32(RulesCount);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Title.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Title);
      }
      if (Description.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Description);
      }
      if (TimeUpdated.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(TimeUpdated);
      }
      if (Version.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Version);
      }
      if (Homepage.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Homepage);
      }
      if (License.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(License);
      }
      if (Checksum.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Checksum);
      }
      if (Url.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(Url);
      }
      if (RulesCount != 0) {
        output.WriteRawTag(72);
        output.WriteInt32(RulesCount);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Title.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Title);
      }
      if (Description.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Description);
      }
      if (TimeUpdated.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TimeUpdated);
      }
      if (Version.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Version);
      }
      if (Homepage.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Homepage);
      }
      if (License.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(License);
      }
      if (Checksum.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Checksum);
      }
      if (Url.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Url);
      }
      if (RulesCount != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RulesCount);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(FilterListMetadata other) {
      if (other == null) {
        return;
      }
      if (other.Title.Length != 0) {
        Title = other.Title;
      }
      if (other.Description.Length != 0) {
        Description = other.Description;
      }
      if (other.TimeUpdated.Length != 0) {
        TimeUpdated = other.TimeUpdated;
      }
      if (other.Version.Length != 0) {
        Version = other.Version;
      }
      if (other.Homepage.Length != 0) {
        Homepage = other.Homepage;
      }
      if (other.License.Length != 0) {
        License = other.License;
      }
      if (other.Checksum.Length != 0) {
        Checksum = other.Checksum;
      }
      if (other.Url.Length != 0) {
        Url = other.Url;
      }
      if (other.RulesCount != 0) {
        RulesCount = other.RulesCount;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Title = input.ReadString();
            break;
          }
          case 18: {
            Description = input.ReadString();
            break;
          }
          case 26: {
            TimeUpdated = input.ReadString();
            break;
          }
          case 34: {
            Version = input.ReadString();
            break;
          }
          case 42: {
            Homepage = input.ReadString();
            break;
          }
          case 50: {
            License = input.ReadString();
            break;
          }
          case 58: {
            Checksum = input.ReadString();
            break;
          }
          case 66: {
            Url = input.ReadString();
            break;
          }
          case 72: {
            RulesCount = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Title = input.ReadString();
            break;
          }
          case 18: {
            Description = input.ReadString();
            break;
          }
          case 26: {
            TimeUpdated = input.ReadString();
            break;
          }
          case 34: {
            Version = input.ReadString();
            break;
          }
          case 42: {
            Homepage = input.ReadString();
            break;
          }
          case 50: {
            License = input.ReadString();
            break;
          }
          case 58: {
            Checksum = input.ReadString();
            break;
          }
          case 66: {
            Url = input.ReadString();
            break;
          }
          case 72: {
            RulesCount = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class FilterListMetadataWithBody : pb::IMessage<FilterListMetadataWithBody>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<FilterListMetadataWithBody> _parser = new pb::MessageParser<FilterListMetadataWithBody>(() => new FilterListMetadataWithBody());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<FilterListMetadataWithBody> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::FilterListManager.FiltersReflection.Descriptor.MessageTypes[6]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterListMetadataWithBody() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterListMetadataWithBody(FilterListMetadataWithBody other) : this() {
      metadata_ = other.metadata_ != null ? other.metadata_.Clone() : null;
      filterBody_ = other.filterBody_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FilterListMetadataWithBody Clone() {
      return new FilterListMetadataWithBody(this);
    }

    /// <summary>Field number for the "metadata" field.</summary>
    public const int MetadataFieldNumber = 1;
    private global::FilterListManager.FilterListMetadata metadata_;
    /// <summary>
    /// Metadata for a remote filter list.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::FilterListManager.FilterListMetadata Metadata {
      get { return metadata_; }
      set {
        metadata_ = value;
      }
    }

    /// <summary>Field number for the "filter_body" field.</summary>
    public const int FilterBodyFieldNumber = 2;
    private string filterBody_ = "";
    /// <summary>
    /// Filter body.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string FilterBody {
      get { return filterBody_; }
      set {
        filterBody_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as FilterListMetadataWithBody);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(FilterListMetadataWithBody other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Metadata, other.Metadata)) return false;
      if (FilterBody != other.FilterBody) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (metadata_ != null) hash ^= Metadata.GetHashCode();
      if (FilterBody.Length != 0) hash ^= FilterBody.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (metadata_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Metadata);
      }
      if (FilterBody.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(FilterBody);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (metadata_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Metadata);
      }
      if (FilterBody.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(FilterBody);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (metadata_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Metadata);
      }
      if (FilterBody.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(FilterBody);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(FilterListMetadataWithBody other) {
      if (other == null) {
        return;
      }
      if (other.metadata_ != null) {
        if (metadata_ == null) {
          Metadata = new global::FilterListManager.FilterListMetadata();
        }
        Metadata.MergeFrom(other.Metadata);
      }
      if (other.FilterBody.Length != 0) {
        FilterBody = other.FilterBody;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (metadata_ == null) {
              Metadata = new global::FilterListManager.FilterListMetadata();
            }
            input.ReadMessage(Metadata);
            break;
          }
          case 18: {
            FilterBody = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (metadata_ == null) {
              Metadata = new global::FilterListManager.FilterListMetadata();
            }
            input.ReadMessage(Metadata);
            break;
          }
          case 18: {
            FilterBody = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class StoredFilterMetadata : pb::IMessage<StoredFilterMetadata>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<StoredFilterMetadata> _parser = new pb::MessageParser<StoredFilterMetadata>(() => new StoredFilterMetadata());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<StoredFilterMetadata> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::FilterListManager.FiltersReflection.Descriptor.MessageTypes[7]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StoredFilterMetadata() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StoredFilterMetadata(StoredFilterMetadata other) : this() {
      id_ = other.id_;
      groupId_ = other.groupId_;
      timeUpdated_ = other.timeUpdated_;
      lastDownloadTime_ = other.lastDownloadTime_;
      title_ = other.title_;
      description_ = other.description_;
      version_ = other.version_;
      displayNumber_ = other.displayNumber_;
      downloadUrl_ = other.downloadUrl_;
      subscriptionUrl_ = other.subscriptionUrl_;
      tags_ = other.tags_.Clone();
      expires_ = other.expires_;
      isTrusted_ = other.isTrusted_;
      isCustom_ = other.isCustom_;
      isEnabled_ = other.isEnabled_;
      isInstalled_ = other.isInstalled_;
      homepage_ = other.homepage_;
      license_ = other.license_;
      checksum_ = other.checksum_;
      languages_ = other.languages_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StoredFilterMetadata Clone() {
      return new StoredFilterMetadata(this);
    }

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private int id_;
    /// <summary>
    /// Filter list unique ID
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { return id_; }
      set {
        id_ = value;
      }
    }

    /// <summary>Field number for the "group_id" field.</summary>
    public const int GroupIdFieldNumber = 2;
    private int groupId_;
    /// <summary>
    /// Group ID this filter list belongs to
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int GroupId {
      get { return groupId_; }
      set {
        groupId_ = value;
      }
    }

    /// <summary>Field number for the "time_updated" field.</summary>
    public const int TimeUpdatedFieldNumber = 3;
    private long timeUpdated_;
    /// <summary>
    /// Timestamp (seconds from epoch) when this filter was updated on the server
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long TimeUpdated {
      get { return timeUpdated_; }
      set {
        timeUpdated_ = value;
      }
    }

    /// <summary>Field number for the "last_download_time" field.</summary>
    public const int LastDownloadTimeFieldNumber = 4;
    private long lastDownloadTime_;
    /// <summary>
    /// Timestamp (seconds from epoch) when this filter list's content was last downloaded
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long LastDownloadTime {
      get { return lastDownloadTime_; }
      set {
        lastDownloadTime_ = value;
      }
    }

    /// <summary>Field number for the "title" field.</summary>
    public const int TitleFieldNumber = 5;
    private string title_ = "";
    /// <summary>
    /// Title either from the list metadata or parsed from the content
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Title {
      get { return title_; }
      set {
        title_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "description" field.</summary>
    public const int DescriptionFieldNumber = 6;
    private string description_ = "";
    /// <summary>
    /// Description either from the list metadata or parsed from the content
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Description {
      get { return description_; }
      set {
        description_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "version" field.</summary>
    public const int VersionFieldNumber = 7;
    private string version_ = "";
    /// <summary>
    /// Version either from the list metadata or parsed from the content
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Version {
      get { return version_; }
      set {
        version_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "display_number" field.</summary>
    public const int DisplayNumberFieldNumber = 8;
    private int displayNumber_;
    /// <summary>
    /// Filter list display number
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int DisplayNumber {
      get { return displayNumber_; }
      set {
        displayNumber_ = value;
      }
    }

    /// <summary>Field number for the "download_url" field.</summary>
    public const int DownloadUrlFieldNumber = 9;
    private string downloadUrl_ = "";
    /// <summary>
    /// Filter list download URL
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string DownloadUrl {
      get { return downloadUrl_; }
      set {
        downloadUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "subscription_url" field.</summary>
    public const int SubscriptionUrlFieldNumber = 10;
    private string subscriptionUrl_ = "";
    /// <summary>
    /// Filter list subscription source URL
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SubscriptionUrl {
      get { return subscriptionUrl_; }
      set {
        subscriptionUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "tags" field.</summary>
    public const int TagsFieldNumber = 11;
    private static readonly pb::FieldCodec<global::FilterListManager.FilterTag> _repeated_tags_codec
        = pb::FieldCodec.ForMessage(90, global::FilterListManager.FilterTag.Parser);
    private readonly pbc::RepeatedField<global::FilterListManager.FilterTag> tags_ = new pbc::RepeatedField<global::FilterListManager.FilterTag>();
    /// <summary>
    /// An array of tags of this filter list
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::FilterListManager.FilterTag> Tags {
      get { return tags_; }
    }

    /// <summary>Field number for the "expires" field.</summary>
    public const int ExpiresFieldNumber = 12;
    private int expires_;
    /// <summary>
    /// Number of seconds until the filter list is considered outdated
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Expires {
      get { return expires_; }
      set {
        expires_ = value;
      }
    }

    /// <summary>Field number for the "is_trusted" field.</summary>
    public const int IsTrustedFieldNumber = 13;
    private bool isTrusted_;
    /// <summary>
    /// Indicates if the filter list is trusted or not
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsTrusted {
      get { return isTrusted_; }
      set {
        isTrusted_ = value;
      }
    }

    /// <summary>Field number for the "is_custom" field.</summary>
    public const int IsCustomFieldNumber = 14;
    private bool isCustom_;
    /// <summary>
    /// Indicates if the filter list is custom or comes from the registry
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsCustom {
      get { return isCustom_; }
      set {
        isCustom_ = value;
      }
    }

    /// <summary>Field number for the "is_enabled" field.</summary>
    public const int IsEnabledFieldNumber = 15;
    private bool isEnabled_;
    /// <summary>
    /// Indicates whether the filter list is enabled
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsEnabled {
      get { return isEnabled_; }
      set {
        isEnabled_ = value;
      }
    }

    /// <summary>Field number for the "is_installed" field.</summary>
    public const int IsInstalledFieldNumber = 16;
    private bool isInstalled_;
    /// <summary>
    /// Indicates if the filter list is installed
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsInstalled {
      get { return isInstalled_; }
      set {
        isInstalled_ = value;
      }
    }

    /// <summary>Field number for the "homepage" field.</summary>
    public const int HomepageFieldNumber = 17;
    private string homepage_ = "";
    /// <summary>
    /// List homepage URL
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Homepage {
      get { return homepage_; }
      set {
        homepage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "license" field.</summary>
    public const int LicenseFieldNumber = 18;
    private string license_ = "";
    /// <summary>
    /// List license URL
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string License {
      get { return license_; }
      set {
        license_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "checksum" field.</summary>
    public const int ChecksumFieldNumber = 19;
    private string checksum_ = "";
    /// <summary>
    /// Filter checksum
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Checksum {
      get { return checksum_; }
      set {
        checksum_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "languages" field.</summary>
    public const int LanguagesFieldNumber = 20;
    private static readonly pb::FieldCodec<string> _repeated_languages_codec
        = pb::FieldCodec.ForString(162);
    private readonly pbc::RepeatedField<string> languages_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// List of languages the filter supports
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> Languages {
      get { return languages_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as StoredFilterMetadata);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(StoredFilterMetadata other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (GroupId != other.GroupId) return false;
      if (TimeUpdated != other.TimeUpdated) return false;
      if (LastDownloadTime != other.LastDownloadTime) return false;
      if (Title != other.Title) return false;
      if (Description != other.Description) return false;
      if (Version != other.Version) return false;
      if (DisplayNumber != other.DisplayNumber) return false;
      if (DownloadUrl != other.DownloadUrl) return false;
      if (SubscriptionUrl != other.SubscriptionUrl) return false;
      if(!tags_.Equals(other.tags_)) return false;
      if (Expires != other.Expires) return false;
      if (IsTrusted != other.IsTrusted) return false;
      if (IsCustom != other.IsCustom) return false;
      if (IsEnabled != other.IsEnabled) return false;
      if (IsInstalled != other.IsInstalled) return false;
      if (Homepage != other.Homepage) return false;
      if (License != other.License) return false;
      if (Checksum != other.Checksum) return false;
      if(!languages_.Equals(other.languages_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Id != 0) hash ^= Id.GetHashCode();
      if (GroupId != 0) hash ^= GroupId.GetHashCode();
      if (TimeUpdated != 0L) hash ^= TimeUpdated.GetHashCode();
      if (LastDownloadTime != 0L) hash ^= LastDownloadTime.GetHashCode();
      if (Title.Length != 0) hash ^= Title.GetHashCode();
      if (Description.Length != 0) hash ^= Description.GetHashCode();
      if (Version.Length != 0) hash ^= Version.GetHashCode();
      if (DisplayNumber != 0) hash ^= DisplayNumber.GetHashCode();
      if (DownloadUrl.Length != 0) hash ^= DownloadUrl.GetHashCode();
      if (SubscriptionUrl.Length != 0) hash ^= SubscriptionUrl.GetHashCode();
      hash ^= tags_.GetHashCode();
      if (Expires != 0) hash ^= Expires.GetHashCode();
      if (IsTrusted != false) hash ^= IsTrusted.GetHashCode();
      if (IsCustom != false) hash ^= IsCustom.GetHashCode();
      if (IsEnabled != false) hash ^= IsEnabled.GetHashCode();
      if (IsInstalled != false) hash ^= IsInstalled.GetHashCode();
      if (Homepage.Length != 0) hash ^= Homepage.GetHashCode();
      if (License.Length != 0) hash ^= License.GetHashCode();
      if (Checksum.Length != 0) hash ^= Checksum.GetHashCode();
      hash ^= languages_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Id != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (GroupId != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(GroupId);
      }
      if (TimeUpdated != 0L) {
        output.WriteRawTag(24);
        output.WriteInt64(TimeUpdated);
      }
      if (LastDownloadTime != 0L) {
        output.WriteRawTag(32);
        output.WriteInt64(LastDownloadTime);
      }
      if (Title.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Title);
      }
      if (Description.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(Description);
      }
      if (Version.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Version);
      }
      if (DisplayNumber != 0) {
        output.WriteRawTag(64);
        output.WriteInt32(DisplayNumber);
      }
      if (DownloadUrl.Length != 0) {
        output.WriteRawTag(74);
        output.WriteString(DownloadUrl);
      }
      if (SubscriptionUrl.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(SubscriptionUrl);
      }
      tags_.WriteTo(output, _repeated_tags_codec);
      if (Expires != 0) {
        output.WriteRawTag(96);
        output.WriteInt32(Expires);
      }
      if (IsTrusted != false) {
        output.WriteRawTag(104);
        output.WriteBool(IsTrusted);
      }
      if (IsCustom != false) {
        output.WriteRawTag(112);
        output.WriteBool(IsCustom);
      }
      if (IsEnabled != false) {
        output.WriteRawTag(120);
        output.WriteBool(IsEnabled);
      }
      if (IsInstalled != false) {
        output.WriteRawTag(128, 1);
        output.WriteBool(IsInstalled);
      }
      if (Homepage.Length != 0) {
        output.WriteRawTag(138, 1);
        output.WriteString(Homepage);
      }
      if (License.Length != 0) {
        output.WriteRawTag(146, 1);
        output.WriteString(License);
      }
      if (Checksum.Length != 0) {
        output.WriteRawTag(154, 1);
        output.WriteString(Checksum);
      }
      languages_.WriteTo(output, _repeated_languages_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Id != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (GroupId != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(GroupId);
      }
      if (TimeUpdated != 0L) {
        output.WriteRawTag(24);
        output.WriteInt64(TimeUpdated);
      }
      if (LastDownloadTime != 0L) {
        output.WriteRawTag(32);
        output.WriteInt64(LastDownloadTime);
      }
      if (Title.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Title);
      }
      if (Description.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(Description);
      }
      if (Version.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Version);
      }
      if (DisplayNumber != 0) {
        output.WriteRawTag(64);
        output.WriteInt32(DisplayNumber);
      }
      if (DownloadUrl.Length != 0) {
        output.WriteRawTag(74);
        output.WriteString(DownloadUrl);
      }
      if (SubscriptionUrl.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(SubscriptionUrl);
      }
      tags_.WriteTo(ref output, _repeated_tags_codec);
      if (Expires != 0) {
        output.WriteRawTag(96);
        output.WriteInt32(Expires);
      }
      if (IsTrusted != false) {
        output.WriteRawTag(104);
        output.WriteBool(IsTrusted);
      }
      if (IsCustom != false) {
        output.WriteRawTag(112);
        output.WriteBool(IsCustom);
      }
      if (IsEnabled != false) {
        output.WriteRawTag(120);
        output.WriteBool(IsEnabled);
      }
      if (IsInstalled != false) {
        output.WriteRawTag(128, 1);
        output.WriteBool(IsInstalled);
      }
      if (Homepage.Length != 0) {
        output.WriteRawTag(138, 1);
        output.WriteString(Homepage);
      }
      if (License.Length != 0) {
        output.WriteRawTag(146, 1);
        output.WriteString(License);
      }
      if (Checksum.Length != 0) {
        output.WriteRawTag(154, 1);
        output.WriteString(Checksum);
      }
      languages_.WriteTo(ref output, _repeated_languages_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Id != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (GroupId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(GroupId);
      }
      if (TimeUpdated != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(TimeUpdated);
      }
      if (LastDownloadTime != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(LastDownloadTime);
      }
      if (Title.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Title);
      }
      if (Description.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Description);
      }
      if (Version.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Version);
      }
      if (DisplayNumber != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DisplayNumber);
      }
      if (DownloadUrl.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DownloadUrl);
      }
      if (SubscriptionUrl.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SubscriptionUrl);
      }
      size += tags_.CalculateSize(_repeated_tags_codec);
      if (Expires != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Expires);
      }
      if (IsTrusted != false) {
        size += 1 + 1;
      }
      if (IsCustom != false) {
        size += 1 + 1;
      }
      if (IsEnabled != false) {
        size += 1 + 1;
      }
      if (IsInstalled != false) {
        size += 2 + 1;
      }
      if (Homepage.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(Homepage);
      }
      if (License.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(License);
      }
      if (Checksum.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(Checksum);
      }
      size += languages_.CalculateSize(_repeated_languages_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(StoredFilterMetadata other) {
      if (other == null) {
        return;
      }
      if (other.Id != 0) {
        Id = other.Id;
      }
      if (other.GroupId != 0) {
        GroupId = other.GroupId;
      }
      if (other.TimeUpdated != 0L) {
        TimeUpdated = other.TimeUpdated;
      }
      if (other.LastDownloadTime != 0L) {
        LastDownloadTime = other.LastDownloadTime;
      }
      if (other.Title.Length != 0) {
        Title = other.Title;
      }
      if (other.Description.Length != 0) {
        Description = other.Description;
      }
      if (other.Version.Length != 0) {
        Version = other.Version;
      }
      if (other.DisplayNumber != 0) {
        DisplayNumber = other.DisplayNumber;
      }
      if (other.DownloadUrl.Length != 0) {
        DownloadUrl = other.DownloadUrl;
      }
      if (other.SubscriptionUrl.Length != 0) {
        SubscriptionUrl = other.SubscriptionUrl;
      }
      tags_.Add(other.tags_);
      if (other.Expires != 0) {
        Expires = other.Expires;
      }
      if (other.IsTrusted != false) {
        IsTrusted = other.IsTrusted;
      }
      if (other.IsCustom != false) {
        IsCustom = other.IsCustom;
      }
      if (other.IsEnabled != false) {
        IsEnabled = other.IsEnabled;
      }
      if (other.IsInstalled != false) {
        IsInstalled = other.IsInstalled;
      }
      if (other.Homepage.Length != 0) {
        Homepage = other.Homepage;
      }
      if (other.License.Length != 0) {
        License = other.License;
      }
      if (other.Checksum.Length != 0) {
        Checksum = other.Checksum;
      }
      languages_.Add(other.languages_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            GroupId = input.ReadInt32();
            break;
          }
          case 24: {
            TimeUpdated = input.ReadInt64();
            break;
          }
          case 32: {
            LastDownloadTime = input.ReadInt64();
            break;
          }
          case 42: {
            Title = input.ReadString();
            break;
          }
          case 50: {
            Description = input.ReadString();
            break;
          }
          case 58: {
            Version = input.ReadString();
            break;
          }
          case 64: {
            DisplayNumber = input.ReadInt32();
            break;
          }
          case 74: {
            DownloadUrl = input.ReadString();
            break;
          }
          case 82: {
            SubscriptionUrl = input.ReadString();
            break;
          }
          case 90: {
            tags_.AddEntriesFrom(input, _repeated_tags_codec);
            break;
          }
          case 96: {
            Expires = input.ReadInt32();
            break;
          }
          case 104: {
            IsTrusted = input.ReadBool();
            break;
          }
          case 112: {
            IsCustom = input.ReadBool();
            break;
          }
          case 120: {
            IsEnabled = input.ReadBool();
            break;
          }
          case 128: {
            IsInstalled = input.ReadBool();
            break;
          }
          case 138: {
            Homepage = input.ReadString();
            break;
          }
          case 146: {
            License = input.ReadString();
            break;
          }
          case 154: {
            Checksum = input.ReadString();
            break;
          }
          case 162: {
            languages_.AddEntriesFrom(input, _repeated_languages_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            GroupId = input.ReadInt32();
            break;
          }
          case 24: {
            TimeUpdated = input.ReadInt64();
            break;
          }
          case 32: {
            LastDownloadTime = input.ReadInt64();
            break;
          }
          case 42: {
            Title = input.ReadString();
            break;
          }
          case 50: {
            Description = input.ReadString();
            break;
          }
          case 58: {
            Version = input.ReadString();
            break;
          }
          case 64: {
            DisplayNumber = input.ReadInt32();
            break;
          }
          case 74: {
            DownloadUrl = input.ReadString();
            break;
          }
          case 82: {
            SubscriptionUrl = input.ReadString();
            break;
          }
          case 90: {
            tags_.AddEntriesFrom(ref input, _repeated_tags_codec);
            break;
          }
          case 96: {
            Expires = input.ReadInt32();
            break;
          }
          case 104: {
            IsTrusted = input.ReadBool();
            break;
          }
          case 112: {
            IsCustom = input.ReadBool();
            break;
          }
          case 120: {
            IsEnabled = input.ReadBool();
            break;
          }
          case 128: {
            IsInstalled = input.ReadBool();
            break;
          }
          case 138: {
            Homepage = input.ReadString();
            break;
          }
          case 146: {
            License = input.ReadString();
            break;
          }
          case 154: {
            Checksum = input.ReadString();
            break;
          }
          case 162: {
            languages_.AddEntriesFrom(ref input, _repeated_languages_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class FullFilterList : pb::IMessage<FullFilterList>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<FullFilterList> _parser = new pb::MessageParser<FullFilterList>(() => new FullFilterList());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<FullFilterList> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::FilterListManager.FiltersReflection.Descriptor.MessageTypes[8]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FullFilterList() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FullFilterList(FullFilterList other) : this() {
      id_ = other.id_;
      groupId_ = other.groupId_;
      timeUpdated_ = other.timeUpdated_;
      lastDownloadTime_ = other.lastDownloadTime_;
      title_ = other.title_;
      description_ = other.description_;
      version_ = other.version_;
      displayNumber_ = other.displayNumber_;
      downloadUrl_ = other.downloadUrl_;
      subscriptionUrl_ = other.subscriptionUrl_;
      tags_ = other.tags_.Clone();
      expires_ = other.expires_;
      isTrusted_ = other.isTrusted_;
      isCustom_ = other.isCustom_;
      isEnabled_ = other.isEnabled_;
      isInstalled_ = other.isInstalled_;
      homepage_ = other.homepage_;
      license_ = other.license_;
      checksum_ = other.checksum_;
      languages_ = other.languages_.Clone();
      rules_ = other.rules_ != null ? other.rules_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FullFilterList Clone() {
      return new FullFilterList(this);
    }

    /// <summary>Field number for the "id" field.</summary>
    public const int IdFieldNumber = 1;
    private int id_;
    /// <summary>
    /// Filter list unique ID
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Id {
      get { return id_; }
      set {
        id_ = value;
      }
    }

    /// <summary>Field number for the "group_id" field.</summary>
    public const int GroupIdFieldNumber = 2;
    private int groupId_;
    /// <summary>
    /// Group ID this filter list belongs to
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int GroupId {
      get { return groupId_; }
      set {
        groupId_ = value;
      }
    }

    /// <summary>Field number for the "time_updated" field.</summary>
    public const int TimeUpdatedFieldNumber = 3;
    private long timeUpdated_;
    /// <summary>
    /// Timestamp (seconds from epoch) when this filter was updated on the server
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long TimeUpdated {
      get { return timeUpdated_; }
      set {
        timeUpdated_ = value;
      }
    }

    /// <summary>Field number for the "last_download_time" field.</summary>
    public const int LastDownloadTimeFieldNumber = 4;
    private long lastDownloadTime_;
    /// <summary>
    /// Timestamp (seconds from epoch) when this filter list's content was last downloaded
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long LastDownloadTime {
      get { return lastDownloadTime_; }
      set {
        lastDownloadTime_ = value;
      }
    }

    /// <summary>Field number for the "title" field.</summary>
    public const int TitleFieldNumber = 5;
    private string title_ = "";
    /// <summary>
    /// Title either from the list metadata or parsed from the content
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Title {
      get { return title_; }
      set {
        title_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "description" field.</summary>
    public const int DescriptionFieldNumber = 6;
    private string description_ = "";
    /// <summary>
    /// Description either from the list metadata or parsed from the content
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Description {
      get { return description_; }
      set {
        description_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "version" field.</summary>
    public const int VersionFieldNumber = 7;
    private string version_ = "";
    /// <summary>
    /// Version either from the list metadata or parsed from the content
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Version {
      get { return version_; }
      set {
        version_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "display_number" field.</summary>
    public const int DisplayNumberFieldNumber = 8;
    private int displayNumber_;
    /// <summary>
    /// Filter list display number
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int DisplayNumber {
      get { return displayNumber_; }
      set {
        displayNumber_ = value;
      }
    }

    /// <summary>Field number for the "download_url" field.</summary>
    public const int DownloadUrlFieldNumber = 9;
    private string downloadUrl_ = "";
    /// <summary>
    /// Filter list download URL
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string DownloadUrl {
      get { return downloadUrl_; }
      set {
        downloadUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "subscription_url" field.</summary>
    public const int SubscriptionUrlFieldNumber = 10;
    private string subscriptionUrl_ = "";
    /// <summary>
    /// Filter list subscription source URL
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SubscriptionUrl {
      get { return subscriptionUrl_; }
      set {
        subscriptionUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "tags" field.</summary>
    public const int TagsFieldNumber = 11;
    private static readonly pb::FieldCodec<global::FilterListManager.FilterTag> _repeated_tags_codec
        = pb::FieldCodec.ForMessage(90, global::FilterListManager.FilterTag.Parser);
    private readonly pbc::RepeatedField<global::FilterListManager.FilterTag> tags_ = new pbc::RepeatedField<global::FilterListManager.FilterTag>();
    /// <summary>
    /// An array of tags of this filter list
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::FilterListManager.FilterTag> Tags {
      get { return tags_; }
    }

    /// <summary>Field number for the "expires" field.</summary>
    public const int ExpiresFieldNumber = 12;
    private int expires_;
    /// <summary>
    /// Number of seconds until the filter list is considered outdated
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Expires {
      get { return expires_; }
      set {
        expires_ = value;
      }
    }

    /// <summary>Field number for the "is_trusted" field.</summary>
    public const int IsTrustedFieldNumber = 13;
    private bool isTrusted_;
    /// <summary>
    /// Indicates if the filter list is trusted or not
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsTrusted {
      get { return isTrusted_; }
      set {
        isTrusted_ = value;
      }
    }

    /// <summary>Field number for the "is_custom" field.</summary>
    public const int IsCustomFieldNumber = 14;
    private bool isCustom_;
    /// <summary>
    /// Indicates if the filter list is custom or comes from the registry
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsCustom {
      get { return isCustom_; }
      set {
        isCustom_ = value;
      }
    }

    /// <summary>Field number for the "is_enabled" field.</summary>
    public const int IsEnabledFieldNumber = 15;
    private bool isEnabled_;
    /// <summary>
    /// Indicates whether the filter list is enabled
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsEnabled {
      get { return isEnabled_; }
      set {
        isEnabled_ = value;
      }
    }

    /// <summary>Field number for the "is_installed" field.</summary>
    public const int IsInstalledFieldNumber = 16;
    private bool isInstalled_;
    /// <summary>
    /// Indicates if the filter list is installed
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsInstalled {
      get { return isInstalled_; }
      set {
        isInstalled_ = value;
      }
    }

    /// <summary>Field number for the "homepage" field.</summary>
    public const int HomepageFieldNumber = 17;
    private string homepage_ = "";
    /// <summary>
    /// List homepage URL
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Homepage {
      get { return homepage_; }
      set {
        homepage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "license" field.</summary>
    public const int LicenseFieldNumber = 18;
    private string license_ = "";
    /// <summary>
    /// List license URL
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string License {
      get { return license_; }
      set {
        license_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "checksum" field.</summary>
    public const int ChecksumFieldNumber = 19;
    private string checksum_ = "";
    /// <summary>
    /// Filter checksum
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Checksum {
      get { return checksum_; }
      set {
        checksum_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "languages" field.</summary>
    public const int LanguagesFieldNumber = 20;
    private static readonly pb::FieldCodec<string> _repeated_languages_codec
        = pb::FieldCodec.ForString(162);
    private readonly pbc::RepeatedField<string> languages_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// List of languages the filter supports
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> Languages {
      get { return languages_; }
    }

    /// <summary>Field number for the "rules" field.</summary>
    public const int RulesFieldNumber = 21;
    private global::FilterListManager.FilterListRules rules_;
    /// <summary>
    /// Optional container for rules
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::FilterListManager.FilterListRules Rules {
      get { return rules_; }
      set {
        rules_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as FullFilterList);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(FullFilterList other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Id != other.Id) return false;
      if (GroupId != other.GroupId) return false;
      if (TimeUpdated != other.TimeUpdated) return false;
      if (LastDownloadTime != other.LastDownloadTime) return false;
      if (Title != other.Title) return false;
      if (Description != other.Description) return false;
      if (Version != other.Version) return false;
      if (DisplayNumber != other.DisplayNumber) return false;
      if (DownloadUrl != other.DownloadUrl) return false;
      if (SubscriptionUrl != other.SubscriptionUrl) return false;
      if(!tags_.Equals(other.tags_)) return false;
      if (Expires != other.Expires) return false;
      if (IsTrusted != other.IsTrusted) return false;
      if (IsCustom != other.IsCustom) return false;
      if (IsEnabled != other.IsEnabled) return false;
      if (IsInstalled != other.IsInstalled) return false;
      if (Homepage != other.Homepage) return false;
      if (License != other.License) return false;
      if (Checksum != other.Checksum) return false;
      if(!languages_.Equals(other.languages_)) return false;
      if (!object.Equals(Rules, other.Rules)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Id != 0) hash ^= Id.GetHashCode();
      if (GroupId != 0) hash ^= GroupId.GetHashCode();
      if (TimeUpdated != 0L) hash ^= TimeUpdated.GetHashCode();
      if (LastDownloadTime != 0L) hash ^= LastDownloadTime.GetHashCode();
      if (Title.Length != 0) hash ^= Title.GetHashCode();
      if (Description.Length != 0) hash ^= Description.GetHashCode();
      if (Version.Length != 0) hash ^= Version.GetHashCode();
      if (DisplayNumber != 0) hash ^= DisplayNumber.GetHashCode();
      if (DownloadUrl.Length != 0) hash ^= DownloadUrl.GetHashCode();
      if (SubscriptionUrl.Length != 0) hash ^= SubscriptionUrl.GetHashCode();
      hash ^= tags_.GetHashCode();
      if (Expires != 0) hash ^= Expires.GetHashCode();
      if (IsTrusted != false) hash ^= IsTrusted.GetHashCode();
      if (IsCustom != false) hash ^= IsCustom.GetHashCode();
      if (IsEnabled != false) hash ^= IsEnabled.GetHashCode();
      if (IsInstalled != false) hash ^= IsInstalled.GetHashCode();
      if (Homepage.Length != 0) hash ^= Homepage.GetHashCode();
      if (License.Length != 0) hash ^= License.GetHashCode();
      if (Checksum.Length != 0) hash ^= Checksum.GetHashCode();
      hash ^= languages_.GetHashCode();
      if (rules_ != null) hash ^= Rules.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Id != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (GroupId != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(GroupId);
      }
      if (TimeUpdated != 0L) {
        output.WriteRawTag(24);
        output.WriteInt64(TimeUpdated);
      }
      if (LastDownloadTime != 0L) {
        output.WriteRawTag(32);
        output.WriteInt64(LastDownloadTime);
      }
      if (Title.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Title);
      }
      if (Description.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(Description);
      }
      if (Version.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Version);
      }
      if (DisplayNumber != 0) {
        output.WriteRawTag(64);
        output.WriteInt32(DisplayNumber);
      }
      if (DownloadUrl.Length != 0) {
        output.WriteRawTag(74);
        output.WriteString(DownloadUrl);
      }
      if (SubscriptionUrl.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(SubscriptionUrl);
      }
      tags_.WriteTo(output, _repeated_tags_codec);
      if (Expires != 0) {
        output.WriteRawTag(96);
        output.WriteInt32(Expires);
      }
      if (IsTrusted != false) {
        output.WriteRawTag(104);
        output.WriteBool(IsTrusted);
      }
      if (IsCustom != false) {
        output.WriteRawTag(112);
        output.WriteBool(IsCustom);
      }
      if (IsEnabled != false) {
        output.WriteRawTag(120);
        output.WriteBool(IsEnabled);
      }
      if (IsInstalled != false) {
        output.WriteRawTag(128, 1);
        output.WriteBool(IsInstalled);
      }
      if (Homepage.Length != 0) {
        output.WriteRawTag(138, 1);
        output.WriteString(Homepage);
      }
      if (License.Length != 0) {
        output.WriteRawTag(146, 1);
        output.WriteString(License);
      }
      if (Checksum.Length != 0) {
        output.WriteRawTag(154, 1);
        output.WriteString(Checksum);
      }
      languages_.WriteTo(output, _repeated_languages_codec);
      if (rules_ != null) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(Rules);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Id != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(Id);
      }
      if (GroupId != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(GroupId);
      }
      if (TimeUpdated != 0L) {
        output.WriteRawTag(24);
        output.WriteInt64(TimeUpdated);
      }
      if (LastDownloadTime != 0L) {
        output.WriteRawTag(32);
        output.WriteInt64(LastDownloadTime);
      }
      if (Title.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Title);
      }
      if (Description.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(Description);
      }
      if (Version.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Version);
      }
      if (DisplayNumber != 0) {
        output.WriteRawTag(64);
        output.WriteInt32(DisplayNumber);
      }
      if (DownloadUrl.Length != 0) {
        output.WriteRawTag(74);
        output.WriteString(DownloadUrl);
      }
      if (SubscriptionUrl.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(SubscriptionUrl);
      }
      tags_.WriteTo(ref output, _repeated_tags_codec);
      if (Expires != 0) {
        output.WriteRawTag(96);
        output.WriteInt32(Expires);
      }
      if (IsTrusted != false) {
        output.WriteRawTag(104);
        output.WriteBool(IsTrusted);
      }
      if (IsCustom != false) {
        output.WriteRawTag(112);
        output.WriteBool(IsCustom);
      }
      if (IsEnabled != false) {
        output.WriteRawTag(120);
        output.WriteBool(IsEnabled);
      }
      if (IsInstalled != false) {
        output.WriteRawTag(128, 1);
        output.WriteBool(IsInstalled);
      }
      if (Homepage.Length != 0) {
        output.WriteRawTag(138, 1);
        output.WriteString(Homepage);
      }
      if (License.Length != 0) {
        output.WriteRawTag(146, 1);
        output.WriteString(License);
      }
      if (Checksum.Length != 0) {
        output.WriteRawTag(154, 1);
        output.WriteString(Checksum);
      }
      languages_.WriteTo(ref output, _repeated_languages_codec);
      if (rules_ != null) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(Rules);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Id != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id);
      }
      if (GroupId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(GroupId);
      }
      if (TimeUpdated != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(TimeUpdated);
      }
      if (LastDownloadTime != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(LastDownloadTime);
      }
      if (Title.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Title);
      }
      if (Description.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Description);
      }
      if (Version.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Version);
      }
      if (DisplayNumber != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DisplayNumber);
      }
      if (DownloadUrl.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DownloadUrl);
      }
      if (SubscriptionUrl.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SubscriptionUrl);
      }
      size += tags_.CalculateSize(_repeated_tags_codec);
      if (Expires != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Expires);
      }
      if (IsTrusted != false) {
        size += 1 + 1;
      }
      if (IsCustom != false) {
        size += 1 + 1;
      }
      if (IsEnabled != false) {
        size += 1 + 1;
      }
      if (IsInstalled != false) {
        size += 2 + 1;
      }
      if (Homepage.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(Homepage);
      }
      if (License.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(License);
      }
      if (Checksum.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(Checksum);
      }
      size += languages_.CalculateSize(_repeated_languages_codec);
      if (rules_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Rules);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(FullFilterList other) {
      if (other == null) {
        return;
      }
      if (other.Id != 0) {
        Id = other.Id;
      }
      if (other.GroupId != 0) {
        GroupId = other.GroupId;
      }
      if (other.TimeUpdated != 0L) {
        TimeUpdated = other.TimeUpdated;
      }
      if (other.LastDownloadTime != 0L) {
        LastDownloadTime = other.LastDownloadTime;
      }
      if (other.Title.Length != 0) {
        Title = other.Title;
      }
      if (other.Description.Length != 0) {
        Description = other.Description;
      }
      if (other.Version.Length != 0) {
        Version = other.Version;
      }
      if (other.DisplayNumber != 0) {
        DisplayNumber = other.DisplayNumber;
      }
      if (other.DownloadUrl.Length != 0) {
        DownloadUrl = other.DownloadUrl;
      }
      if (other.SubscriptionUrl.Length != 0) {
        SubscriptionUrl = other.SubscriptionUrl;
      }
      tags_.Add(other.tags_);
      if (other.Expires != 0) {
        Expires = other.Expires;
      }
      if (other.IsTrusted != false) {
        IsTrusted = other.IsTrusted;
      }
      if (other.IsCustom != false) {
        IsCustom = other.IsCustom;
      }
      if (other.IsEnabled != false) {
        IsEnabled = other.IsEnabled;
      }
      if (other.IsInstalled != false) {
        IsInstalled = other.IsInstalled;
      }
      if (other.Homepage.Length != 0) {
        Homepage = other.Homepage;
      }
      if (other.License.Length != 0) {
        License = other.License;
      }
      if (other.Checksum.Length != 0) {
        Checksum = other.Checksum;
      }
      languages_.Add(other.languages_);
      if (other.rules_ != null) {
        if (rules_ == null) {
          Rules = new global::FilterListManager.FilterListRules();
        }
        Rules.MergeFrom(other.Rules);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            GroupId = input.ReadInt32();
            break;
          }
          case 24: {
            TimeUpdated = input.ReadInt64();
            break;
          }
          case 32: {
            LastDownloadTime = input.ReadInt64();
            break;
          }
          case 42: {
            Title = input.ReadString();
            break;
          }
          case 50: {
            Description = input.ReadString();
            break;
          }
          case 58: {
            Version = input.ReadString();
            break;
          }
          case 64: {
            DisplayNumber = input.ReadInt32();
            break;
          }
          case 74: {
            DownloadUrl = input.ReadString();
            break;
          }
          case 82: {
            SubscriptionUrl = input.ReadString();
            break;
          }
          case 90: {
            tags_.AddEntriesFrom(input, _repeated_tags_codec);
            break;
          }
          case 96: {
            Expires = input.ReadInt32();
            break;
          }
          case 104: {
            IsTrusted = input.ReadBool();
            break;
          }
          case 112: {
            IsCustom = input.ReadBool();
            break;
          }
          case 120: {
            IsEnabled = input.ReadBool();
            break;
          }
          case 128: {
            IsInstalled = input.ReadBool();
            break;
          }
          case 138: {
            Homepage = input.ReadString();
            break;
          }
          case 146: {
            License = input.ReadString();
            break;
          }
          case 154: {
            Checksum = input.ReadString();
            break;
          }
          case 162: {
            languages_.AddEntriesFrom(input, _repeated_languages_codec);
            break;
          }
          case 170: {
            if (rules_ == null) {
              Rules = new global::FilterListManager.FilterListRules();
            }
            input.ReadMessage(Rules);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Id = input.ReadInt32();
            break;
          }
          case 16: {
            GroupId = input.ReadInt32();
            break;
          }
          case 24: {
            TimeUpdated = input.ReadInt64();
            break;
          }
          case 32: {
            LastDownloadTime = input.ReadInt64();
            break;
          }
          case 42: {
            Title = input.ReadString();
            break;
          }
          case 50: {
            Description = input.ReadString();
            break;
          }
          case 58: {
            Version = input.ReadString();
            break;
          }
          case 64: {
            DisplayNumber = input.ReadInt32();
            break;
          }
          case 74: {
            DownloadUrl = input.ReadString();
            break;
          }
          case 82: {
            SubscriptionUrl = input.ReadString();
            break;
          }
          case 90: {
            tags_.AddEntriesFrom(ref input, _repeated_tags_codec);
            break;
          }
          case 96: {
            Expires = input.ReadInt32();
            break;
          }
          case 104: {
            IsTrusted = input.ReadBool();
            break;
          }
          case 112: {
            IsCustom = input.ReadBool();
            break;
          }
          case 120: {
            IsEnabled = input.ReadBool();
            break;
          }
          case 128: {
            IsInstalled = input.ReadBool();
            break;
          }
          case 138: {
            Homepage = input.ReadString();
            break;
          }
          case 146: {
            License = input.ReadString();
            break;
          }
          case 154: {
            Checksum = input.ReadString();
            break;
          }
          case 162: {
            languages_.AddEntriesFrom(ref input, _repeated_languages_codec);
            break;
          }
          case 170: {
            if (rules_ == null) {
              Rules = new global::FilterListManager.FilterListRules();
            }
            input.ReadMessage(Rules);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class RulesCountByFilter : pb::IMessage<RulesCountByFilter>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<RulesCountByFilter> _parser = new pb::MessageParser<RulesCountByFilter>(() => new RulesCountByFilter());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<RulesCountByFilter> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::FilterListManager.FiltersReflection.Descriptor.MessageTypes[9]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RulesCountByFilter() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RulesCountByFilter(RulesCountByFilter other) : this() {
      filterId_ = other.filterId_;
      rulesCount_ = other.rulesCount_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RulesCountByFilter Clone() {
      return new RulesCountByFilter(this);
    }

    /// <summary>Field number for the "filter_id" field.</summary>
    public const int FilterIdFieldNumber = 1;
    private int filterId_;
    /// <summary>
    /// Associated filter id.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int FilterId {
      get { return filterId_; }
      set {
        filterId_ = value;
      }
    }

    /// <summary>Field number for the "rules_count" field.</summary>
    public const int RulesCountFieldNumber = 2;
    private int rulesCount_;
    /// <summary>
    /// Rules count in this filter list. Simply a number of non-empty lines
    /// and does not start with a comment marker.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int RulesCount {
      get { return rulesCount_; }
      set {
        rulesCount_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as RulesCountByFilter);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(RulesCountByFilter other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (FilterId != other.FilterId) return false;
      if (RulesCount != other.RulesCount) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (FilterId != 0) hash ^= FilterId.GetHashCode();
      if (RulesCount != 0) hash ^= RulesCount.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (FilterId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(FilterId);
      }
      if (RulesCount != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(RulesCount);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (FilterId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(FilterId);
      }
      if (RulesCount != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(RulesCount);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (FilterId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FilterId);
      }
      if (RulesCount != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RulesCount);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(RulesCountByFilter other) {
      if (other == null) {
        return;
      }
      if (other.FilterId != 0) {
        FilterId = other.FilterId;
      }
      if (other.RulesCount != 0) {
        RulesCount = other.RulesCount;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            FilterId = input.ReadInt32();
            break;
          }
          case 16: {
            RulesCount = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            FilterId = input.ReadInt32();
            break;
          }
          case 16: {
            RulesCount = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
