// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.Channel
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe

using System;
using System.Collections;
using System.Collections.Specialized;

namespace Meebey.SmartIrc4net
{
  public class Channel
  {
    private string _Name;
    private string _Key = string.Empty;
    private Hashtable _Users = Hashtable.Synchronized(new Hashtable((IHashCodeProvider) new CaseInsensitiveHashCodeProvider(), (IComparer) new CaseInsensitiveComparer()));
    private Hashtable _Ops = Hashtable.Synchronized(new Hashtable((IHashCodeProvider) new CaseInsensitiveHashCodeProvider(), (IComparer) new CaseInsensitiveComparer()));
    private Hashtable _Voices = Hashtable.Synchronized(new Hashtable((IHashCodeProvider) new CaseInsensitiveHashCodeProvider(), (IComparer) new CaseInsensitiveComparer()));
    private StringCollection _Bans = new StringCollection();
    private string _Topic = string.Empty;
    private int _UserLimit;
    private string _Mode = string.Empty;
    private DateTime _ActiveSyncStart;
    private DateTime _ActiveSyncStop;
    private TimeSpan _ActiveSyncTime;
    private bool _IsSycned;

    internal Channel(string name)
    {
      this._Name = name;
      this._ActiveSyncStart = DateTime.Now;
    }

    public string Name => this._Name;

    public string Key
    {
      get => this._Key;
      set => this._Key = value;
    }

    public Hashtable Users => (Hashtable) this._Users.Clone();

    internal Hashtable UnsafeUsers => this._Users;

    public Hashtable Ops => (Hashtable) this._Ops.Clone();

    internal Hashtable UnsafeOps => this._Ops;

    public Hashtable Voices => (Hashtable) this._Voices.Clone();

    internal Hashtable UnsafeVoices => this._Voices;

    public StringCollection Bans => this._Bans;

    public string Topic
    {
      get => this._Topic;
      set => this._Topic = value;
    }

    public int UserLimit
    {
      get => this._UserLimit;
      set => this._UserLimit = value;
    }

    public string Mode
    {
      get => this._Mode;
      set => this._Mode = value;
    }

    public DateTime ActiveSyncStart => this._ActiveSyncStart;

    public DateTime ActiveSyncStop
    {
      get => this._ActiveSyncStop;
      set
      {
        this._ActiveSyncStop = value;
        this._ActiveSyncTime = this._ActiveSyncStop.Subtract(this._ActiveSyncStart);
      }
    }

    public TimeSpan ActiveSyncTime => this._ActiveSyncTime;

    public bool IsSycned
    {
      get => this._IsSycned;
      set => this._IsSycned = value;
    }
  }
}
