//- ~LoadEndpointData -//
 internal static void LoadEndpointData(WebDomainData data, EndpointCollection collection)
 {
     List<EndpointElement> elementList = collection.ToList();
     var matchTextList = new List<String>();
     var referenceKeyList = new List<String>();
     if (collection.Count(p => p.Text == "*") > 1)
     {
         throw new ConfigurationErrorsException(ResourceAccessor.GetString("WebDomain_DuplicateCatchAll"));
     }
     foreach (EndpointElement element in elementList)
     {
         if (element.Disabled)
         {
             continue;
         }
         String matchText = element.Text;
         Boolean requireSlash = element.RequireSlash;
         String withoutSlash = EndpointData.GetTextWithoutSlash(matchText);
         SelectorType matchType = element.Selector;
         String originalMatchText = matchText;
         EndpointData newElement = AdjustMatchType(element.Text);
         if (newElement != null)
         {
             matchText = newElement.Text;
             matchType = newElement.Selector;
         }
         matchTextList.Add(matchText);
         if (element.Text == "*")
         {
             data.CatchAllEndpoint = new EndpointData
                                     {
                                         AccessRuleGroup = element.AccessRuleGroup,
                                         OriginalMatchText = originalMatchText,
                                         Text = matchText,
                                         TextWithoutSlash = withoutSlash,
                                         Selector = matchType,
                                         Type = element.Type,
                                         ParameterValue = element.Parameter,
                                         ParameterMap = element.GetParameterMap(),
                                         Source = Info.System
                                     };
         }
         else
         {
             var endpointData = new EndpointData
                                {
                                    AccessRuleGroup = element.AccessRuleGroup,
                                    OriginalMatchText = originalMatchText,
                                    Text = matchText,
                                    TextWithoutSlash = withoutSlash,
                                    Selector = matchType,
                                    Type = element.Type,
                                    RequireSlash = element.RequireSlash,
                                    ParameterValue = element.Parameter,
                                    ParameterMap = element.GetParameterMap(),
                                    Source = Info.System
                                };
             endpointData.SubEndpointDataList = new EndpointDataList();
             foreach (EndpointElement subElement in element.SubEndpoints)
             {
                 String subWithoutSlash = EndpointData.GetTextWithoutSlash(matchText);
                 endpointData.SubEndpointDataList.Add(new EndpointData
                                                      {
                                                          Text = subElement.Text,
                                                          TextWithoutSlash = subWithoutSlash,
                                                          Selector = subElement.Selector,
                                                          Type = subElement.Type,
                                                          ParameterValue = subElement.Parameter,
                                                          ParameterMap = subElement.GetParameterMap(),
                                                          Source = Info.System
                                                      });
             }
             data.EndpointDataList.Add(endpointData);
         }
     }
     EndpointDataList handlerList = data.EndpointDataList.Clone();
     data.EndpointDataList = new EndpointDataList();
     handlerList.Where(p => p.Selector == SelectorType.PathEquals).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p));
     handlerList.Where(p => p.Selector == SelectorType.EndsWith).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p));
     handlerList.Where(p => p.Selector == SelectorType.WebDomainPathStartsWith).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p));
     handlerList.Where(p => p.Selector == SelectorType.WebDomainPathEquals).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p));
     handlerList.Where(p => p.Selector == SelectorType.PathStartsWith).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p));
     handlerList.Where(p => p.Selector == SelectorType.StartsWith).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p));
     handlerList.Where(p => p.Selector == SelectorType.PathContains).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p));
     handlerList.Where(p => p.Selector == SelectorType.Contains).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p));
     //+
     data.EndpointDataList.OriginalCount = data.EndpointDataList.Count;
 }