private List <Fork> GetForkIbt(Bet one, Bet two, IBTBet ibtOne, IBTBet ibtTwo, bool inverse = true)
        {
            var rezult = new List <Fork>();

            float coeff1 = ibtOne.Tmin;
            float coeff2 = ibtTwo.Tmax;

            if (CheckFork(coeff1, coeff2))
            {
                var fork = CreateFork(one, two, coeff1, coeff2, ibtOne.ToMystring(BetNumber._Tmin), ibtTwo.ToMystring(BetNumber._Tmax), ibtOne.GetData(BetNumber._Tmin), ibtTwo.GetData(BetNumber._Tmax), ForkType.IT);
                fork.Teams = ibtOne.TeamName;
                rezult.Add(fork);
            }

            if (inverse)
            {
                coeff1 = ibtTwo.Tmin;
                coeff2 = ibtOne.Tmax;
                if (CheckFork(coeff1, coeff2))
                {
                    var fork = CreateFork(two, one, coeff1, coeff2, ibtTwo.ToMystring(BetNumber._Tmin), ibtOne.ToMystring(BetNumber._Tmax), ibtTwo.GetData(BetNumber._Tmin), ibtOne.GetData(BetNumber._Tmax), ForkType.IT);
                    fork.Teams = ibtOne.TeamName;
                    rezult.Add(fork);
                }
            }

            return(rezult);
        }
        public List <Bet> Parse()
        {
            Bets.Clear();
            _req.CharacterSet = Encoding.UTF8;
            _req.UserAgent    = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36";

            //_req.Proxy=ProxyClient.Parse(ProxyType.Http,"127.0.0.1:8888");



            Stopwatch sw = new Stopwatch();

            sw.Start();

            if (_fonbetClient == null)
            {
                _fonbetClient = new FonbetClient(_url);
                _fonbetClient.Start();
            }


            var line = _fonbetClient.GetLine();



            List <Bet> rez      = new List <Bet>();
            var        lastTime = (DateTime.Now - line.LastUpdate).TotalMilliseconds;

            if (lastTime > MainConfigurate.Configurate.FonbetMaxTime)
            {
                Logger.AddLog($"Последний раз обновляли линию {lastTime} мс назад. Это долго", Logger.LogTarget.Fonbet, Logger.LogLevel.Warn);
            }
            else
            {
                foreach (KeyValuePair <int, Event> @event in line.Events)
                {
                    var ev = @event.Value;

                    if (ev.IsBlock)
                    {
                        continue;
                    }
                    if (ev.Level != 1)
                    {
                        continue;
                    }

                    string team1     = ev.Team1;
                    string team2     = ev.Team2;
                    string sportName = line.Sports[ev.SportId].Name;

                    /*
                     *
                     * 974,1809,1812,1815       \   Итб1
                     * 976,1810,1813,1816       /   Итм1
                     *
                     * 978,1854,1873,1880       \   Итб2
                     * 980,1871,1874,1881       /   Итм2
                     *
                     * */


                    Bet bet = new Bet
                    {
                        URL       = "live/?locale=ru#" + ev.Id,
                        Bookmaker = BookmakerType.Fonbet,
                        Team1     = team1,
                        Team2     = team2
                    };

                    if (ev.Team1Id == -1)
                    {
                        continue;
                    }
                    if (ev.Team2Id == -1)
                    {
                        continue;
                    }
                    bet.Team1Id = ev.Team1Id;
                    bet.Team2Id = ev.Team2Id;


                    IBTBet ibt1 = new IBTBet();
                    IBTBet ibt2 = new IBTBet();
                    ibt1.TeamName = bet.Team1;
                    ibt2.TeamName = bet.Team2;

                    bet.SportType = SportTypeHelper.Parse(sportName);

                    bet.Groupe = sportName.Split('.')[0].Trim();
                    bet.Name   = team1 + " - " + team2;
                    bet.Site   = "F";

                    bet = SetEvents(bet, ev);
                    if (bet == null)
                    {
                        continue;
                    }


                    if (ev.Factors.ContainsKey(974))
                    {
                        if (!ev.Factors[974].IsBlocked)
                        {
                            ibt1.Tmax  = ev.Factors[974].V;
                            ibt1.Tmaxo = ev.Factors[974].E + "f974,974," + ev.Id;
                        }
                    }
                    if (ev.Factors.ContainsKey(976))
                    {
                        if (!ev.Factors[976].IsBlocked)
                        {
                            ibt1.Tmin  = ev.Factors[976].V;
                            ibt1.Tmino = ev.Factors[976].E + "f976,976," + ev.Id;
                            ibt1.Coeff = SetValue(ev.Factors[976].Pt);
                        }
                    }

                    if (ev.Factors.ContainsKey(978))
                    {
                        if (!ev.Factors[978].IsBlocked)
                        {
                            ibt2.Tmax  = ev.Factors[978].V;
                            ibt2.Tmaxo = ev.Factors[978].E + "f978,978," + ev.Id;
                            ibt2.Coeff = SetValue(ev.Factors[978].Pt);
                        }
                    }
                    if (ev.Factors.ContainsKey(980))
                    {
                        if (!ev.Factors[980].IsBlocked)
                        {
                            ibt2.Tmin  = ev.Factors[980].V;
                            ibt2.Tmino = ev.Factors[980].E + "f980,980," + ev.Id;
                        }
                    }


                    if (ibt1.Isvalid())
                    {
                        bet.IBTList.Add(ibt1);
                    }
                    if (ibt2.Isvalid())
                    {
                        bet.IBTList.Add(ibt2);
                    }

                    //Достаем список доп. таймов к матчу
                    List <Event> times = line.GetAdditionTime(ev.Id);
                    foreach (Event time in times)
                    {
                        Bet betmini = bet.ShortCopy();
                        betmini = SetEvents(betmini, time, false);
                        if (betmini == null)
                        {
                            continue;
                        }

                        if (betmini.Games.Count != 0)
                        {
                            bet.Games.AddRange(betmini.Games);
                            betmini.Games.Clear();
                        }

                        Regex  reg      = new Regex("(.-)");
                        Match  match    = reg.Match(time.Name);
                        string partData = match.Value.Split('-').First();
                        if (time.Name.Contains("пол"))
                        {
                            partData = "1" + partData;
                        }

                        SportTimePart part = SportTimePartHelper.Parse(partData);
                        if (part == SportTimePart.Nan)
                        {
                            continue;
                        }
                        bet.Parts.Add(part, betmini);
                    }

                    rez.Add(bet);
                }
            }


            sw.Stop();
            if (sw.ElapsedMilliseconds < 1000)
            {
                Thread.Sleep(1000 - (int)sw.ElapsedMilliseconds);
            }
            Logger.AddLog($"Fonbet parse: {sw.Elapsed} мс. ставок: {rez.Count}; всего ставок: {line.Events.Count}", Logger.LogTarget.Fonbet);
            return(rez);
        }
        private static void ParseBet(Bet bet, IElement tableHeader, IElement tableMainDesc)
        {
            for (int i = 2; i < tableHeader.ChildElementCount; i++)
            {
                if (tableMainDesc.TextContent.Contains("Прием ставок приостановлен"))
                {
                    break;
                }
                var headerString = tableHeader.ChildNodes[i].TextContent;
                if (headerString == "Фора")
                {
                    if (tableMainDesc.Children[i].ChildElementCount == 1)
                    {
                        bet._F1_Cof = TryFloatParse(tableMainDesc.Children[i].Children.FirstOrDefault()?.TextContent);
                        bet._F1     = TryFloatParse(tableMainDesc.Children[i + 1].Children.FirstOrDefault()?.TextContent);
                        bet._F1o    = tableMainDesc.Children[i + 1].Children.FirstOrDefault()?.Id;
                        if (bet._F1o == null)
                        {
                            bet._F1 = 0;
                        }
                    }
                    else if (tableMainDesc.Children[i].ChildElementCount == 2)
                    {
                        bet._F1_Cof = TryFloatParse(tableMainDesc.Children[i].Children.FirstOrDefault()?.TextContent);
                        bet._F1     = TryFloatParse(tableMainDesc.Children[i + 1].Children.FirstOrDefault()?.TextContent);
                        bet._F1o    = tableMainDesc.Children[i + 1].Children[0].Children[0].Children.FirstOrDefault()?.Id;
                        if (bet._F1o == null)
                        {
                            bet._F1 = 0;
                        }

                        bet._F2_Cof = TryFloatParse(tableMainDesc.Children[i].Children[1].TextContent);
                        bet._F2     = TryFloatParse(tableMainDesc.Children[i + 1].Children[1].TextContent);
                        bet._F2o    = tableMainDesc.Children[i + 1].Children[1].Children[0].Children.FirstOrDefault()?.Id;
                        if (bet._F2o == null)
                        {
                            bet._F2 = 0;
                        }
                    }
                    i++;
                }
                else if (headerString == "Т")
                {
                    bet._Total_Cof = TryFloatParse(tableMainDesc.Children[i].Children.FirstOrDefault()?.TextContent);
                    bet._Tmax      = TryFloatParse(tableMainDesc.Children[i + 1].Children.FirstOrDefault()?.TextContent);
                    if (bet._Tmax != 0)
                    {
                        bet._Tmaxo = tableMainDesc.Children[i + 1].Children[0].Children[0].Children.FirstOrDefault()?.Id;
                    }
                    if (bet._Tmaxo == null)
                    {
                        bet._Tmax = 0;
                    }


                    bet._Tmin = TryFloatParse(tableMainDesc.Children[i + 2].Children.FirstOrDefault()?.TextContent);
                    if (bet._Tmin != 0)
                    {
                        bet._Tmino = tableMainDesc.Children[i + 2].Children[0].Children[0].Children.FirstOrDefault()?.Id;
                    }
                    if (bet._Tmino == null)
                    {
                        bet._Tmin = 0;
                    }

                    i = i + 2;
                }
                else if (headerString == "П1")
                {
                    bet._1 = TryFloatParse(tableMainDesc.Children[i].Children.FirstOrDefault()?.TextContent);
                    if (bet._1 != 0)
                    {
                        bet._1o = tableMainDesc.Children[i].Children[0].Children[0].Children.FirstOrDefault()?.Id;
                    }
                    if (bet._1o == null)
                    {
                        bet._1 = 0;
                    }
                }
                else if (headerString == "X")
                {
                    bet._X = TryFloatParse(tableMainDesc.Children[i].Children.FirstOrDefault()?.TextContent);
                    if (bet._X != 0)
                    {
                        bet._Xo = tableMainDesc.Children[i].Children[0].Children[0].Children.FirstOrDefault()?.Id;
                    }
                    if (bet._Xo == null)
                    {
                        bet._X = 0;
                    }
                }
                else if (headerString == "П2")
                {
                    bet._2 = TryFloatParse(tableMainDesc.Children[i].Children.FirstOrDefault()?.TextContent);
                    if (bet._2 != 0)
                    {
                        bet._2o = tableMainDesc.Children[i].Children[0].Children[0].Children.FirstOrDefault()?.Id;
                    }
                    if (bet._2o == null)
                    {
                        bet._2 = 0;
                    }
                }

                else if (headerString == "1X")
                {
                    bet._1X = TryFloatParse(tableMainDesc.Children[i].Children.FirstOrDefault()?.TextContent);
                    if (bet._1X != 0)
                    {
                        bet._1Xo = tableMainDesc.Children[i].Children[0].Children[0].Children.FirstOrDefault()?.Id;
                    }
                    if (bet._1Xo == null)
                    {
                        bet._1X = 0;
                    }
                }

                else if (headerString == "12")
                {
                    bet._12 = TryFloatParse(tableMainDesc.Children[i].Children.FirstOrDefault()?.TextContent);
                    if (bet._12 != 0)
                    {
                        bet._12o = tableMainDesc.Children[i].Children[0].Children[0].Children.FirstOrDefault()?.Id;
                    }
                    if (bet._12o == null)
                    {
                        bet._12 = 0;
                    }
                }

                else if (headerString == "X2")
                {
                    bet._X2 = TryFloatParse(tableMainDesc.Children[i].Children.FirstOrDefault()?.TextContent);
                    if (bet._X2 != 0)
                    {
                        bet._X2o = tableMainDesc.Children[i].Children[0].Children[0].Children.FirstOrDefault()?.Id;
                    }
                    if (bet._X2o == null)
                    {
                        bet._X2 = 0;
                    }
                }
                else if (headerString == "iТ")
                {
                    IBTBet ibet = new IBTBet();
                    ibet.TeamName = bet.Team1;

                    ibet.Coeff = TryFloatParse(tableMainDesc.Children[i].Children.FirstOrDefault()?.TextContent);
                    ibet.Tmax  = TryFloatParse(tableMainDesc.Children[i + 1].Children.FirstOrDefault()?.TextContent);
                    if (ibet.Tmax != 0)
                    {
                        ibet.Tmaxo = tableMainDesc.Children[i + 1].Children[0].Children[0].Children.FirstOrDefault()?.Id;
                    }

                    ibet.Tmin = TryFloatParse(tableMainDesc.Children[i + 2].Children.FirstOrDefault()?.TextContent);
                    if (ibet.Tmin != 0)
                    {
                        ibet.Tmino = tableMainDesc.Children[i + 2].Children[0].Children[0].Children.FirstOrDefault()?.Id;
                    }
                    if (ibet.Isvalid())
                    {
                        bet.IBTList.Add(ibet);
                    }

                    if (tableMainDesc.Children[i].Children.Length >= 2)
                    {
                        IBTBet ibet2 = new IBTBet();

                        ibet2.TeamName = bet.Team2;
                        ibet2.Coeff    = TryFloatParse(tableMainDesc.Children[i].Children[1]?.TextContent);
                        ibet2.Tmax     = TryFloatParse(tableMainDesc.Children[i + 1].Children[1].TextContent);
                        if (ibet2.Tmax != 0)
                        {
                            ibet2.Tmaxo = tableMainDesc.Children[i + 1].Children[1].Children[0].Children[0].Id;
                        }

                        ibet2.Tmin = TryFloatParse(tableMainDesc.Children[i + 2].Children[1]?.TextContent);
                        if (ibet2.Tmin != 0)
                        {
                            ibet2.Tmino = tableMainDesc.Children[i + 2].Children[1].Children[0].Children[0].Id;
                        }
                        if (ibet2.Isvalid())
                        {
                            bet.IBTList.Add(ibet2);
                        }
                    }
                }
            }
        }