// Token: 0x060072B9 RID: 29369 RVA: 0x0017BC24 File Offset: 0x00179E24
        internal override IThrottlingPolicy InternalLookup()
        {
            ExchangeConfigurationUnit cu = null;
            ADOperationResult         adoperationResult = ADNotificationAdapter.TryRunADOperation(delegate()
            {
                PartitionId partitionIdByAcceptedDomainName = ADAccountPartitionLocator.GetPartitionIdByAcceptedDomainName(this.principal.DelegatedOrganization);
                if (partitionIdByAcceptedDomainName != null)
                {
                    ADSessionSettings sessionSettings = ADSessionSettings.FromAllTenantsPartitionId(partitionIdByAcceptedDomainName);
                    ITenantConfigurationSession tenantConfigurationSession           = DirectorySessionFactory.Default.CreateTenantConfigurationSession(ConsistencyMode.PartiallyConsistent, sessionSettings, 86, "InternalLookup", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\throttling\\DelegatedPrincipalBudgetKey.cs");
                    tenantConfigurationSession.SessionSettings.IsSharedConfigChecked = true;
                    cu = tenantConfigurationSession.GetExchangeConfigurationUnitByNameOrAcceptedDomain(this.principal.DelegatedOrganization);
                }
                if (cu == null)
                {
                    throw new CannotResolveTenantNameException(DirectoryStrings.CannotResolveTenantNameByAcceptedDomain(this.principal.DelegatedOrganization));
                }
            });

            if (!adoperationResult.Succeeded)
            {
                ExTraceGlobals.ClientThrottlingTracer.TraceError <string, string, Exception>((long)this.GetHashCode(), "[DelegatedPrincipalBudgetKey.Lookup] Failed to find Delegated Organization: '{0}' for user '{1}', using global throttling policy.  Exception: '{2}'", this.principal.DelegatedOrganization, this.principal.UserId, adoperationResult.Exception);
                return(ThrottlingPolicyCache.Singleton.GetGlobalThrottlingPolicy());
            }
            OrganizationId orgId = cu.OrganizationId;

            if (cu.SupportedSharedConfigurations.Count > 0)
            {
                SharedConfiguration sharedConfig = null;
                adoperationResult = ADNotificationAdapter.TryRunADOperation(delegate()
                {
                    sharedConfig = SharedConfiguration.GetSharedConfiguration(cu.OrganizationId);
                });
                if (!adoperationResult.Succeeded)
                {
                    ExTraceGlobals.ClientThrottlingTracer.TraceError <OrganizationId, Exception>((long)this.GetHashCode(), "[DelegatedPrincipalBudgetKey.Lookup] Failed to get Shared Configuration Organization: '{0}', using global throttling policy.  Exception: '{1}'", cu.OrganizationId, adoperationResult.Exception);
                    return(ThrottlingPolicyCache.Singleton.GetGlobalThrottlingPolicy());
                }
                if (sharedConfig != null)
                {
                    orgId = sharedConfig.SharedConfigId;
                }
            }
            return(base.ADRetryLookup(delegate
            {
                ADSessionSettings sessionSettings = ADSessionSettings.FromAllTenantsOrRootOrgAutoDetect(orgId);
                IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(true, ConsistencyMode.IgnoreInvalid, sessionSettings, 149, "InternalLookup", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\throttling\\DelegatedPrincipalBudgetKey.cs");
                tenantOrTopologyConfigurationSession.SessionSettings.IsSharedConfigChecked = true;
                ThrottlingPolicy organizationThrottlingPolicy = tenantOrTopologyConfigurationSession.GetOrganizationThrottlingPolicy(orgId, false);
                if (organizationThrottlingPolicy == null)
                {
                    ExTraceGlobals.ClientThrottlingTracer.TraceError <string, string>((long)this.GetHashCode(), "[DelegatedPrincipalBudgetKey.Lookup] Failed to find Default Throttling Policy for '{0}\\{1}', using global throttling policy", this.principal.DelegatedOrganization, this.principal.UserId);
                    return ThrottlingPolicyCache.Singleton.GetGlobalThrottlingPolicy();
                }
                return organizationThrottlingPolicy.GetEffectiveThrottlingPolicy(true);
            }));
        }
        // Token: 0x06001180 RID: 4480 RVA: 0x00054558 File Offset: 0x00052758
        internal static OrganizationId FindOneSharedConfigurationId(SharedConfigurationInfo sci, PartitionId partitionId)
        {
            ExchangeConfigurationUnit exchangeConfigurationUnit = SharedConfiguration.FindOneSharedConfiguration(sci, partitionId);

            if (exchangeConfigurationUnit == null)
            {
                return(null);
            }
            return(exchangeConfigurationUnit.OrganizationId);
        }
        // Token: 0x06001174 RID: 4468 RVA: 0x000540EC File Offset: 0x000522EC
        public static IList <RetentionPolicy> GetDefaultRetentionPolicy(IConfigurationSession scopedSession, ADRawEntry user, SortBy sortBy, int resultSize)
        {
            bool isArbitrationMailbox = false;

            if (user[OrgPersonPresentationObjectSchema.RecipientTypeDetails] != null && (RecipientTypeDetails)user[OrgPersonPresentationObjectSchema.RecipientTypeDetails] == RecipientTypeDetails.ArbitrationMailbox)
            {
                isArbitrationMailbox = true;
            }
            return(SharedConfiguration.GetDefaultRetentionPolicy(scopedSession, isArbitrationMailbox, sortBy, resultSize));
        }
        private static CachableThrottlingPolicyItem ResolveOrganizationThrottlingPolicy(object obj, OrganizationId organizationId)
        {
            SharedConfiguration sharedConfiguration = SharedConfiguration.GetSharedConfiguration(organizationId);

            if (sharedConfiguration != null)
            {
                organizationId = sharedConfiguration.SharedConfigId;
            }
            ThrottlingPolicy throttlingPolicy = ThrottlingPolicyCache.ReadThrottlingPolicyFromAD(ThrottlingPolicyCache.GetSession(organizationId), organizationId, (IConfigurationSession session1, object id) => session1.GetOrganizationThrottlingPolicy((OrganizationId)id));

            return(new CachableThrottlingPolicyItem((throttlingPolicy == null) ? ThrottlingPolicyCache.Singleton.GetGlobalThrottlingPolicy() : throttlingPolicy.GetEffectiveThrottlingPolicy(true)));
        }
        // Token: 0x0600116E RID: 4462 RVA: 0x00053E5C File Offset: 0x0005205C
        public static SharedConfiguration GetSharedConfiguration(OrganizationId orgId)
        {
            ExchangeConfigurationUnit[] array = SharedConfiguration.LoadSharedConfigurationsSorted(orgId);
            if (array == null)
            {
                return(null);
            }
            ExchangeConfigurationUnit exchangeConfigurationUnit = null;

            if (array.Length == 1)
            {
                exchangeConfigurationUnit = array[0];
            }
            else if (array.Length > 1)
            {
                ExchangeConfigurationUnit exchangeConfigurationUnit2 = null;
                int i = 0;
                while (i < array.Length)
                {
                    exchangeConfigurationUnit = array[i];
                    int num = ServerVersion.Compare(exchangeConfigurationUnit.SharedConfigurationInfo.CurrentVersion, ServerVersion.InstalledVersion);
                    if (num == 0)
                    {
                        break;
                    }
                    if (num > 0)
                    {
                        if (exchangeConfigurationUnit.SharedConfigurationInfo.CurrentVersion.Major > ServerVersion.InstalledVersion.Major && exchangeConfigurationUnit2 != null)
                        {
                            exchangeConfigurationUnit = exchangeConfigurationUnit2;
                            break;
                        }
                        break;
                    }
                    else
                    {
                        exchangeConfigurationUnit2 = array[i];
                        i++;
                    }
                }
            }
            if (exchangeConfigurationUnit != null)
            {
                return(new SharedConfiguration(orgId, exchangeConfigurationUnit));
            }
            return(null);
        }
 // Token: 0x06001176 RID: 4470 RVA: 0x00054170 File Offset: 0x00052370
 public static bool ExecutingUserHasRetentionPolicy(ADRawEntry executingUser, OrganizationId orgId)
 {
     if (executingUser[ADUserSchema.RetentionPolicy] != null)
     {
         return(true);
     }
     if (executingUser[ADObjectSchema.OrganizationId] != null && !OrganizationId.ForestWideOrgId.Equals(executingUser[ADObjectSchema.OrganizationId]))
     {
         IConfigurationSession   scopedSession          = SharedConfiguration.CreateScopedToSharedConfigADSession(orgId);
         IList <RetentionPolicy> defaultRetentionPolicy = SharedConfiguration.GetDefaultRetentionPolicy(scopedSession, executingUser, null, 1);
         if (defaultRetentionPolicy != null && defaultRetentionPolicy.Count > 0)
         {
             return(true);
         }
     }
     return(false);
 }
        // Token: 0x06001182 RID: 4482 RVA: 0x0005459C File Offset: 0x0005279C
        internal static OrganizationId FindMostRecentSharedConfigurationInPartition(OrganizationId sourceOrganizationId, PartitionId targetAccountPartitionId, out Exception ex)
        {
            ex = null;
            OrganizationId organizationId = null;

            ExchangeConfigurationUnit[] array = SharedConfiguration.LoadSharedConfigurationsSorted(sourceOrganizationId);
            if (array != null && array.Length > 0)
            {
                int num = array.Length;
                SharedConfigurationInfo sharedConfigurationInfo = array[num - 1].SharedConfigurationInfo;
                organizationId = SharedConfiguration.FindOneSharedConfigurationId(sharedConfigurationInfo, targetAccountPartitionId);
                if (organizationId == null)
                {
                    ex = new InvalidOperationException(DirectoryStrings.ErrorTargetPartitionSctMissing(sourceOrganizationId.ConfigurationUnit.DistinguishedName, targetAccountPartitionId.ForestFQDN, sharedConfigurationInfo.ToString()));
                }
            }
            return(organizationId);
        }
        // Token: 0x06001173 RID: 4467 RVA: 0x00054090 File Offset: 0x00052290
        public static IConfigurationSession CreateScopedToSharedConfigADSession(OrganizationId orgId)
        {
            ADSessionSettings adsessionSettings = null;

            if (SharedConfiguration.IsDehydratedConfiguration(orgId) || SharedConfiguration.IsSharedConfiguration(orgId))
            {
                SharedConfiguration sharedConfiguration = SharedConfiguration.GetSharedConfiguration(orgId);
                if (sharedConfiguration != null)
                {
                    adsessionSettings = sharedConfiguration.GetSharedConfigurationSessionSettings();
                }
            }
            if (adsessionSettings == null)
            {
                adsessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), orgId, null, false);
            }
            return(DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(ConsistencyMode.IgnoreInvalid, adsessionSettings, 366, "CreateScopedToSharedConfigADSession", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\SharedConfiguration.cs"));
        }
        // Token: 0x06001181 RID: 4481 RVA: 0x00054578 File Offset: 0x00052778
        internal static bool DoesSctExistForVersion(ServerVersion version, string programId, string offerId, PartitionId partitionId)
        {
            SharedConfigurationInfo sci = new SharedConfigurationInfo(version, programId, offerId);

            return(SharedConfiguration.FindOneSharedConfigurationId(sci, partitionId) != null);
        }
 // Token: 0x06001172 RID: 4466 RVA: 0x0005407B File Offset: 0x0005227B
 public static bool IsDehydratedConfiguration(IConfigurationSession adConfigSession)
 {
     return(SharedConfiguration.IsDehydratedConfiguration(adConfigSession.SessionSettings.CurrentOrganizationId));
 }