public void DownloadAsync(StockScreenerDownloadSettings settings, object userArgs)
 {
     base.DownloadAsync(settings, userArgs);
 }
        protected override StockScreenerResult ConvertResult(YahooManaged.Base.ConnectionInfo connInfo, System.IO.Stream stream, YahooManaged.Base.SettingsBase settings)
        {
            StockScreenerDownloadSettings set     = (StockScreenerDownloadSettings)settings;
            List <StockScreenerData>      results = new List <StockScreenerData>();
            string result = MyHelper.StreamToString(stream, set.TextEncoding);

            List <string> lines = new List <string>(result.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries));

            if (lines.Count > 0)
            {
                System.Globalization.CultureInfo convCulture = new System.Globalization.CultureInfo("en-US");

                List <QuoteProperty>         quoteProps    = new List <QuoteProperty>();
                List <StockScreenerProperty> screenerProps = new List <StockScreenerProperty>();
                foreach (StockCriteriaDefinition crit in set.Criterias)
                {
                    foreach (QuoteProperty qp in crit.ProvidedQuoteProperties)
                    {
                        if (!quoteProps.Contains(qp))
                        {
                            quoteProps.Add(qp);
                        }
                    }
                    foreach (StockScreenerProperty sp in crit.ProvidedScreenerProperties)
                    {
                        if (!screenerProps.Contains(sp))
                        {
                            screenerProps.Add(sp);
                        }
                    }
                }

                string[] propertySymbols = new string[-1 + 1];
                string[] propertyNames   = new string[-1 + 1];
                int      startIndex      = 0;

                if (!set.Comparing)
                {
                    startIndex      = 2;
                    propertySymbols = lines[0].Split('|');
                    propertyNames   = lines[1].Split('|');
                }
                else
                {
                    startIndex = 0;
                    List <string> lstSymbols = new List <string>();
                    lstSymbols.Add("");
                    lstSymbols.Add("");
                    lstSymbols.Add("b");
                    lstSymbols.Add("");
                    lstSymbols.Add("c");
                    lstSymbols.Add("8o");
                    lstSymbols.Add("9c");
                    lstSymbols.Add("9t");
                    foreach (StockCriteriaDefinition crt in set.Criterias)
                    {
                        if (crt.ProvidedQuoteProperties.Length > 5 | crt.ProvidedScreenerProperties.Length > 3)
                        {
                            lstSymbols.Add(crt.CriteriaTag);
                        }
                    }
                    propertySymbols = lstSymbols.ToArray();

                    List <string> lstNames = new List <string>();
                    lstNames.Add("Ticker");
                    lstNames.Add("Company Name");
                    lstNames.Add("Last Trade");
                    lstNames.Add("Trade Time");
                    lstNames.Add("Mkt Cap");
                    lstNames.Add("Return On Equity");
                    lstNames.Add("Return On Assets");
                    lstNames.Add("Forward PE");
                    foreach (StockCriteriaDefinition crt in set.Criterias)
                    {
                        if (crt.ProvidedQuoteProperties.Length > 5 | crt.ProvidedScreenerProperties.Length > 3)
                        {
                            switch (crt.CriteriaTag)
                            {
                            case "f":
                            case "g":
                                if (crt is PriceGainerLosersCriteria)
                                {
                                    PriceGainerLosersCriteria mngCrt = (PriceGainerLosersCriteria)crt;
                                    if (mngCrt.ValueRelativeTo == StockTradingAbsoluteTimePoint.TodaysOpen)
                                    {
                                        lstNames.Add("(open)");
                                    }
                                    else
                                    {
                                        lstNames.Add("(close)");
                                    }
                                }
                                break;

                            case "h":
                            case "i":
                                if (crt is PriceMomentumCriteria)
                                {
                                    PriceMomentumCriteria mngCrt = (PriceMomentumCriteria)crt;
                                    lstNames.Add("(" + mngCrt.RelativeTimeSpanInMinutes.ToString().Replace("_", "") + "m)");
                                }
                                break;

                            default:
                                lstNames.Add("");
                                break;
                            }
                        }
                    }
                    propertyNames = lstNames.ToArray();
                }

                for (int i = startIndex; i <= lines.Count - 1; i++)
                {
                    string[] values = lines[i].Split('|');


                    if (propertySymbols.Length >= 4 & values.Length == propertySymbols.Length & values.Length == propertyNames.Length)
                    {
                        string id   = values[0];
                        string name = values[1];
                        double lastTradePriceOnly = 0;
                        double.TryParse(values[2], System.Globalization.NumberStyles.Any, convCulture, out lastTradePriceOnly);
                        DateTime tradeTime = new DateTime();
                        DateTime.TryParse(values[3], convCulture, System.Globalization.DateTimeStyles.None, out tradeTime);
                        tradeTime = tradeTime.AddHours(tradeTime.Hour).AddMinutes(tradeTime.Minute);

                        StockScreenerData res = new StockScreenerData(id, name, lastTradePriceOnly, tradeTime, quoteProps.ToArray(), screenerProps.ToArray());

                        if (values.Length >= 5)
                        {
                            for (int p = 4; p <= values.Length - 1; p++)
                            {
                                if (values[p] != string.Empty & values[p] != "N/A")
                                {
                                    double dblValue = 0;

                                    if (double.TryParse(values[p], System.Globalization.NumberStyles.Any, convCulture, out dblValue) || FinanceHelper.GetMillionValue(values[p]) != 0)
                                    {
                                        switch (propertySymbols[p])
                                        {
                                        case "c":
                                            res[QuoteProperty.MarketCapitalization] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        //case "c":
                                        //res.AdditionalValues[(int)StockScreenerProperty.RevenueEstimate_ThisYear] = dblValue;
                                        //break;
                                        case "8o":
                                            res.AdditionalValues[(int)StockScreenerProperty.ReturnOnEquity] = dblValue;
                                            break;

                                        case "9c":
                                            res.AdditionalValues[(int)StockScreenerProperty.ReturnOnAssets] = dblValue;
                                            break;

                                        case "9t":
                                            res.AdditionalValues[(int)StockScreenerProperty.ForwardPriceToEarningsRatio] = dblValue;
                                            break;

                                        case "9o":
                                            res.AdditionalValues[(int)StockScreenerProperty.NumberOfEmployees] = dblValue;
                                            break;

                                        case "f":
                                            double absoluteChange        = dblValue;
                                            double absolutePreviousValue = res.LastTradePriceOnly - absoluteChange;
                                            double changeInPercent       = absoluteChange / absolutePreviousValue;

                                            res[QuoteProperty.ChangeInPercent] = changeInPercent * 100;
                                            res[QuoteProperty.Change]          = absoluteChange;

                                            if (propertyNames[p].EndsWith("(open)"))
                                            {
                                                res[QuoteProperty.Open] = absolutePreviousValue;
                                            }
                                            else
                                            {
                                                res[QuoteProperty.PreviousClose] = absolutePreviousValue;
                                            }

                                            break;

                                        case "g":
                                            changeInPercent       = dblValue;
                                            absolutePreviousValue = (res.LastTradePriceOnly / (100 + changeInPercent)) * 100;
                                            absoluteChange        = res.LastTradePriceOnly - absolutePreviousValue;

                                            res[QuoteProperty.ChangeInPercent] = changeInPercent;
                                            res[QuoteProperty.Change]          = absoluteChange;

                                            if (propertyNames[p].EndsWith("(open)"))
                                            {
                                                res[QuoteProperty.Open] = absolutePreviousValue;
                                            }
                                            else
                                            {
                                                res[QuoteProperty.PreviousClose] = absolutePreviousValue;
                                            }

                                            break;

                                        case "h":
                                            if (set.Criterias != null)
                                            {
                                                PriceMomentumCriteria context = null;

                                                foreach (StockCriteriaDefinition crit in set.Criterias)
                                                {
                                                    if (crit != null && crit is PriceMomentumCriteria && ((PriceMomentumCriteria)crit).PercentValues == false)
                                                    {
                                                        context = (PriceMomentumCriteria)crit;
                                                        break;     // TODO: might not be correct. Was : Exit For
                                                    }
                                                }
                                                if (context != null)
                                                {
                                                    if (propertyNames[p].EndsWith("(" + context.RelativeTimeSpanInMinutes.ToString().Replace("_", "") + "m)"))
                                                    {
                                                        TemporaryPriceChangeInfo info = new TemporaryPriceChangeInfo();
                                                        info.ChangeRelativeTimePoint = context.TimeSpanRelativeTo;
                                                        info.ChangeTimeSpan          = context.RelativeTimeSpanInMinutes;
                                                        info.Change                = dblValue * Convert.ToInt32((context.GainOrLoss == StockPriceChangeDirection.Gain ? 1 : -1));
                                                        info.ChangeInPercent       = info.Change / (res.LastTradePriceOnly - info.Change);
                                                        res.TemporaryLimitedChange = info;
                                                    }
                                                }
                                            }

                                            break;

                                        case "i":
                                            if (set.Criterias != null)
                                            {
                                                PriceMomentumCriteria context = null;
                                                foreach (StockCriteriaDefinition crit in set.Criterias)
                                                {
                                                    if (crit != null && crit is PriceMomentumCriteria && ((PriceMomentumCriteria)crit).PercentValues == true)
                                                    {
                                                        context = (PriceMomentumCriteria)crit;
                                                        break;     // TODO: might not be correct. Was : Exit For
                                                    }
                                                }
                                                if (context != null)
                                                {
                                                    if (propertyNames[p].EndsWith("(" + context.RelativeTimeSpanInMinutes.ToString().Replace("_", "") + "m)"))
                                                    {
                                                        TemporaryPriceChangeInfo info = new TemporaryPriceChangeInfo();
                                                        info.ChangeRelativeTimePoint = context.TimeSpanRelativeTo;
                                                        info.ChangeTimeSpan          = context.RelativeTimeSpanInMinutes;
                                                        info.ChangeInPercent         = dblValue * Convert.ToInt32((context.GainOrLoss == StockPriceChangeDirection.Gain ? 1 : -1));
                                                        info.Change = res.LastTradePriceOnly - ((res.LastTradePriceOnly / (100 + info.ChangeInPercent)) * 100);
                                                        res.TemporaryLimitedChange = info;
                                                    }
                                                }
                                            }

                                            break;

                                        case "j":
                                            if (set.Criterias != null)
                                            {
                                                ExtremePriceCriteria context = null;
                                                foreach (StockCriteriaDefinition crit in set.Criterias)
                                                {
                                                    if (crit != null && crit is ExtremePriceCriteria && ((ExtremePriceCriteria)crit).PercentValues == false)
                                                    {
                                                        context = (ExtremePriceCriteria)crit;
                                                        break;     // TODO: might not be correct. Was : Exit For
                                                    }
                                                }
                                                if (context != null)
                                                {
                                                    absoluteChange        = dblValue * Convert.ToInt32((context.LessGreater == LessGreater.Greater ? 1 : -1));
                                                    absolutePreviousValue = res.LastTradePriceOnly - absoluteChange;
                                                    changeInPercent       = absoluteChange / absolutePreviousValue;
                                                    switch (context.ExtremeParameter)
                                                    {
                                                    case StockExtremeParameter.TodaysHigh:
                                                        res[QuoteProperty.DaysHigh] = absolutePreviousValue;
                                                        break;

                                                    case StockExtremeParameter.TodaysLow:
                                                        res[QuoteProperty.DaysLow] = absolutePreviousValue;
                                                        break;

                                                    case StockExtremeParameter.YearsHigh:
                                                        res[QuoteProperty.YearHigh] = absolutePreviousValue;
                                                        res[QuoteProperty.ChangeInPercentFromYearHigh] = changeInPercent;
                                                        res[QuoteProperty.ChangeFromYearHigh]          = absoluteChange;
                                                        break;

                                                    case StockExtremeParameter.YearsLow:
                                                        res[QuoteProperty.YearLow] = absolutePreviousValue;
                                                        res[QuoteProperty.PercentChangeFromYearLow] = changeInPercent;
                                                        res[QuoteProperty.ChangeFromYearLow]        = absoluteChange;
                                                        break;
                                                    }
                                                }
                                            }

                                            break;

                                        case "k":
                                            if (set.Criterias != null)
                                            {
                                                ExtremePriceCriteria context = null;
                                                foreach (StockCriteriaDefinition crit in set.Criterias)
                                                {
                                                    if (crit != null && crit is ExtremePriceCriteria && ((ExtremePriceCriteria)crit).PercentValues == true)
                                                    {
                                                        context = (ExtremePriceCriteria)crit;
                                                        break;     // TODO: might not be correct. Was : Exit For
                                                    }
                                                }
                                                if (context != null)
                                                {
                                                    changeInPercent       = dblValue * Convert.ToInt32((context.LessGreater == LessGreater.Greater ? 1 : -1));
                                                    absolutePreviousValue = (res.LastTradePriceOnly / (100 + changeInPercent)) * 100;
                                                    absoluteChange        = res.LastTradePriceOnly - absolutePreviousValue;
                                                    switch (context.ExtremeParameter)
                                                    {
                                                    case StockExtremeParameter.TodaysHigh:
                                                        res[QuoteProperty.DaysHigh] = absolutePreviousValue;
                                                        break;

                                                    case StockExtremeParameter.TodaysLow:
                                                        res[QuoteProperty.DaysLow] = absolutePreviousValue;
                                                        break;

                                                    case StockExtremeParameter.YearsHigh:
                                                        res[QuoteProperty.YearHigh] = absolutePreviousValue;
                                                        res[QuoteProperty.ChangeInPercentFromYearHigh] = changeInPercent;
                                                        res[QuoteProperty.ChangeFromYearHigh]          = absoluteChange;
                                                        break;

                                                    case StockExtremeParameter.YearsLow:
                                                        res[QuoteProperty.YearLow] = absolutePreviousValue;
                                                        res[QuoteProperty.PercentChangeFromYearLow] = changeInPercent;
                                                        res[QuoteProperty.ChangeFromYearLow]        = absoluteChange;
                                                        break;
                                                    }
                                                }
                                            }

                                            break;

                                        case "l":
                                            if (set.Criterias != null)
                                            {
                                                GapVsPreviousClose context = null;
                                                foreach (StockCriteriaDefinition crit in set.Criterias)
                                                {
                                                    if (crit != null && crit is GapVsPreviousClose && ((GapVsPreviousClose)crit).PercentValues == false)
                                                    {
                                                        context = (GapVsPreviousClose)crit;
                                                        break;     // TODO: might not be correct. Was : Exit For
                                                    }
                                                }
                                                if (context != null)
                                                {
                                                    res.AdditionalValues[(int)StockScreenerProperty.Gap] = dblValue;
                                                }
                                            }

                                            break;

                                        case "m":
                                            if (set.Criterias != null)
                                            {
                                                GapVsPreviousClose context = null;
                                                foreach (StockCriteriaDefinition crit in set.Criterias)
                                                {
                                                    if (crit != null && crit is GapVsPreviousClose && ((GapVsPreviousClose)crit).PercentValues == true)
                                                    {
                                                        context = (GapVsPreviousClose)crit;
                                                        break;     // TODO: might not be correct. Was : Exit For
                                                    }
                                                }
                                                if (context != null)
                                                {
                                                    res.AdditionalValues[(int)StockScreenerProperty.GapInPercent] = dblValue;
                                                }
                                            }

                                            break;

                                        case "o":
                                            if (set.Criterias != null)
                                            {
                                                PriceToMovingAverageRatioCriteria context = null;
                                                foreach (StockCriteriaDefinition crit in set.Criterias)
                                                {
                                                    if (crit != null && crit is PriceToMovingAverageRatioCriteria)
                                                    {
                                                        context = (PriceToMovingAverageRatioCriteria)crit;
                                                        break;     // TODO: might not be correct. Was : Exit For
                                                    }
                                                }
                                                if (context != null)
                                                {
                                                    changeInPercent = dblValue;
                                                    double maValue = (dblValue / (100 + changeInPercent)) * 100;
                                                    absoluteChange = res.LastTradePriceOnly - maValue;

                                                    if (context.MovingAverage == MovingAverageType.FiftyDays)
                                                    {
                                                        res[QuoteProperty.FiftydayMovingAverage]                  = maValue;
                                                        res[QuoteProperty.ChangeFromFiftydayMovingAverage]        = absoluteChange;
                                                        res[QuoteProperty.PercentChangeFromFiftydayMovingAverage] = changeInPercent;
                                                    }
                                                    else
                                                    {
                                                        res[QuoteProperty.TwoHundreddayMovingAverage]                  = maValue;
                                                        res[QuoteProperty.ChangeFromTwoHundreddayMovingAverage]        = absoluteChange;
                                                        res[QuoteProperty.PercentChangeFromTwoHundreddayMovingAverage] = changeInPercent;
                                                    }
                                                }
                                            }

                                            break;

                                        case "7":
                                            res.AdditionalValues[(int)StockScreenerProperty.Beta] = dblValue;
                                            break;

                                        case "v":
                                            res[QuoteProperty.PriceSales] = dblValue;
                                            break;

                                        case "e":
                                            res.AdditionalValues[(int)StockScreenerProperty.PriceEarningsRatio] = dblValue;
                                            break;

                                        case "u":
                                            res[QuoteProperty.PEGRatio] = dblValue;
                                            break;

                                        case "9p":
                                            res.AdditionalValues[(int)StockScreenerProperty.EntityValue] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        case "9q":
                                            res.AdditionalValues[(int)StockScreenerProperty.EntityValueToRevenueRatio] = dblValue;
                                            break;

                                        case "9r":
                                            res.AdditionalValues[(int)StockScreenerProperty.EntityValueToOperatingCashFlowRatio] = dblValue;
                                            break;

                                        case "9s":
                                            res.AdditionalValues[(int)StockScreenerProperty.EntityValueToFreeCashFlowRatio] = dblValue;
                                            break;

                                        case "x":
                                            res[QuoteProperty.EPSEstimateNextQuarter] = dblValue;
                                            break;

                                        case "y":
                                            res[QuoteProperty.EPSEstimateCurrentYear] = dblValue;
                                            break;

                                        case "z":
                                            res[QuoteProperty.EPSEstimateNextYear] = dblValue;
                                            break;

                                        case "8e":
                                            res.AdditionalValues[(int)StockScreenerProperty.EPS_NYCE] = dblValue;
                                            break;

                                        case "9v":
                                            res.AdditionalValues[(int)StockScreenerProperty.SalesGrowthEstimate_ThisQuarter] = dblValue;
                                            break;

                                        case "8h":
                                            res.AdditionalValues[(int)StockScreenerProperty.EarningsGrowthEstimate_ThisYear] = dblValue;
                                            break;

                                        case "9b":
                                            res.AdditionalValues[(int)StockScreenerProperty.EarningsGrowthEstimate_NextYear] = dblValue;
                                            break;

                                        case "9u":
                                            res.AdditionalValues[(int)StockScreenerProperty.EarningsGrowthEstimate_Next5Years] = dblValue;
                                            break;

                                        case "1":
                                            res.AdditionalValues[(int)StockScreenerProperty.SharesOutstanding] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        case "2":
                                            res[QuoteProperty.SharesFloat] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        case "3":
                                            res[QuoteProperty.ShortRatio] = dblValue;
                                            break;

                                        case "8g":
                                            res.AdditionalValues[(int)StockScreenerProperty.SharesShortPriorMonth] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        case "8m":
                                            res.AdditionalValues[(int)StockScreenerProperty.SharesShort] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        case "9d":
                                            res.AdditionalValues[(int)StockScreenerProperty.HeldByInsiders] = dblValue;
                                            break;

                                        case "9n":
                                            res.AdditionalValues[(int)StockScreenerProperty.HeldByInstitutions] = dblValue;
                                            break;

                                        case "4":
                                            res[QuoteProperty.TrailingAnnualDividendYield] = dblValue;
                                            break;

                                        case "5":
                                            res[QuoteProperty.TrailingAnnualDividendYieldInPercent] = dblValue;
                                            break;

                                        case "8a":
                                            res.AdditionalValues[(int)StockScreenerProperty.OperatingMargin] = dblValue;
                                            break;

                                        case "8r":
                                            res.AdditionalValues[(int)StockScreenerProperty.ProfitMargin_ttm] = dblValue;
                                            break;

                                        case "9f":
                                            res.AdditionalValues[(int)StockScreenerProperty.EBITDAMargin_ttm] = dblValue;
                                            break;

                                        case "9k":
                                            res.AdditionalValues[(int)StockScreenerProperty.GrossMargin_ttm] = dblValue;
                                            break;

                                        case "8f":
                                            res[QuoteProperty.PriceBook] = dblValue;
                                            break;

                                        //case "8f":
                                        //res.AdditionalValues[(int)StockScreenerProperty.CashPerShare] = dblValue;
                                        //break;
                                        case "8l":
                                            res.AdditionalValues[(int)StockScreenerProperty.TotalCash] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        case "6":
                                            res[QuoteProperty.BookValuePerShare] = dblValue;
                                            break;

                                        case "9e":
                                            res.AdditionalValues[(int)StockScreenerProperty.TotalDebt] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        case "9g":
                                            res.AdditionalValues[(int)StockScreenerProperty.TotalDebtToEquityRatio] = dblValue;
                                            break;

                                        case "9h":
                                            res.AdditionalValues[(int)StockScreenerProperty.CurrentRatio] = dblValue;
                                            break;

                                        case "9i":
                                            res.AdditionalValues[(int)StockScreenerProperty.LongTermDebtToEquityRatio] = dblValue;
                                            break;

                                        case "9l":
                                            res.AdditionalValues[(int)StockScreenerProperty.QuickRatio] = dblValue;
                                            break;

                                        case "w":
                                            res[QuoteProperty.DilutedEPS] = dblValue;
                                            break;

                                        case "8i":
                                            res.AdditionalValues[(int)StockScreenerProperty.EPS_mrq] = dblValue;
                                            break;

                                        case "0":
                                            res.AdditionalValues[(int)StockScreenerProperty.Sales_ttm] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        case "t":
                                            res[QuoteProperty.EBITDA] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        case "8n":
                                            res.AdditionalValues[(int)StockScreenerProperty.GrossProfit] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        case "8p":
                                            res.AdditionalValues[(int)StockScreenerProperty.NetIncome] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        case "9j":
                                            res.AdditionalValues[(int)StockScreenerProperty.OperatingIncome] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        case "8v":
                                            res.AdditionalValues[(int)StockScreenerProperty.EarningsGrowth_Past5Years] = dblValue;
                                            break;

                                        case "9a":
                                            res.AdditionalValues[(int)StockScreenerProperty.RevenueEstimate_ThisQuarter] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        case "8q":
                                            res.AdditionalValues[(int)StockScreenerProperty.RevenueEstimate_NextQuarter] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        case "8s":
                                            res.AdditionalValues[(int)StockScreenerProperty.SalesGrowthEstimate_NextQuarter] = dblValue;
                                            break;

                                        case "8t":
                                            res.AdditionalValues[(int)StockScreenerProperty.SalesGrowthEstimate_ThisYear] = dblValue;
                                            break;

                                        case "8k":
                                            res.AdditionalValues[(int)StockScreenerProperty.SalesGrowthEstimate_NextYear] = dblValue;
                                            break;

                                        case "8y":
                                            res.AdditionalValues[(int)StockScreenerProperty.FreeCashFlow] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));
                                            break;

                                        case "8z":
                                            res.AdditionalValues[(int)StockScreenerProperty.OperatingCashFlow] = Convert.ToInt64(FinanceHelper.GetMillionValue(values[p]) * (Math.Pow(10, 6)));

                                            break;
                                        }
                                    }
                                }
                            }
                        }

                        results.Add(res);
                    }
                }
            }
            return(new StockScreenerResult(results.ToArray()));
        }
 public StockScreenerDownload()
 {
     this.Settings = new StockScreenerDownloadSettings();
 }