Get-AaddsResourceForestTrusts.ps1
<#PSScriptInfo
.VERSION 2.0.0 .GUID 509a0f72-3b0f-425a-a9e1-3f5d56cb48d3 .AUTHOR aaddsfb@microsoft.com .COMPANYNAME Microsoft Corporation .COPYRIGHT (c) Microsoft Corporation .TAGS Azure-AD-Domain-Services ResourceForest .LICENSEURI .PROJECTURI .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES 07/19/2020 - Initial release 01/09/2024 - Rebrand to Microsoft Entra Domain Services 06/24/2025 - Updating Entra Domain Services resource API to use the latest version. #> <# .SYNOPSIS Shows forest trusts from Microsoft Entra Domain Services resource forest. .DESCRIPTION Shows forest trusts from Microsoft Entra Domain Services resource forest. .PARAMETER ManagedDomainFqdn [MANADATORY] The fqdn of the managed domain (aadds.corp.contoso.com). .PARAMETER Credential [OPTIONAL] The credentials used to authenticate to Azure. #> [CmdletBinding()] Param ( [Parameter( Mandatory=$true)] [string] $ManagedDomainFqdn, [Parameter( Mandatory=$false)] [pscredential] $Credentials ) Process { $azProfile = $null Write-Host ([string]::Empty) Write-Host ([string]::Empty) Write-Host "Authenticating to Azure... " -NoNewline # # Collect credentials from the user for authentication if($null -ne $creds) { $creds = Get-Credential -ErrorAction SilentlyContinue $azProfile = Connect-AzAccount -Credential $creds -ErrorAction SilentlyContinue } else { $azProfile = Connect-AzAccount -ErrorAction SilentlyContinue } if($null -eq $azProfile) { # Authentication failed Write-Host -ForegroundColor Red "[Failed!]" Write-Host -ForegroundColor Red "ERROR: Could not authenticate to Azure. Check your credentials and try again." Return } else { Write-Host -ForegroundColor Green "[Success!]" } Write-Host "INFO: Authenticated to Azure as $($azProfile.Account.Id)..." Write-Host "Getting Microsoft Entra Domain Services instance..." -NoNewline $aadds = Get-AzResource -Name $ManagedDomainFqdn -ApiVersion "2022-12-01" -ExpandProperties -ErrorAction SilentlyContinue if($null -eq $aadds) { Write-Host -ForegroundColor Red "[Failed!]" Write-Host -ForegroundColor Red "ERROR: Could not find an Microsoft Entra Domain Services resource with the name $ManagedDomainFqdn." Return } #region Prerequisites checking... Write-Host ([string]::Empty) Write-Host "Checking prerequisites..." $pass = $true Write-Host "Validating resource type..." -NoNewline if($aadds.ResourceType -ne "Microsoft.AAD/domainServices") { $pass = $false Write-Host -ForegroundColor Red "[Failed!]" Write-Host -ForegroundColor Red "ERROR: The resource is not an Microsoft Entra Domain Services resource (Status:$($aadds.ResourceType)." } else {Write-Host -ForegroundColor Green "[Pass!]"} Write-Host "Validating service status..." -NoNewline if($null -ne $aadds.Properties.ReplicaSets) { $replicaSetCount = $aadds.Properties.ReplicaSets.Count } else { $replicaSetCount = 0 } $serviceStatus = $null if($replicaSetCount -eq 1) { $serviceStatus = $aadds.Properties.ReplicaSets[0].serviceStatus } elseif($replicaSetCount -gt 1) { $syncOwner = $aadds.Properties.SyncOwner $primaryReplicaSet = $aadds.Properties.ReplicaSets | Where-Object { $_.ReplicaSetId -eq $syncOwner } $serviceStatus = $primaryReplicaSet.serviceStatus } else { $serviceStatus = $null } if($serviceStatus -ne "Running") { $pass = $false Write-Host -ForegroundColor Red "[Failed!]" Write-Host -ForegroundColor Red "ERROR: The managed domain $($aadds.Name) must be running (Status:$($aadds.properties.serviceStatus))." } else { Write-Host -ForegroundColor Green "[Pass!]" } Write-Host "Validating domain configuration..." -NoNewline if($aadds.properties.domainConfigurationType -ne "ResourceTrusting") { $pass = $false Write-Host -ForegroundColor red "[Failed!]" Write-Host -ForegroundColor Red "ERROR: The managed domain $($aadds.Name) is not a resource forest (Status:$($aadds.properties.domainConfigurationType))." } else { Write-Host -ForegroundColor Green "[Pass!]"} Write-Host ([string]::Empty) #Get the list of current trusts. $tempTrustSettingsValue = $aadds.Properties.resourceForestSettings.settings if(0 -gt $tempTrustSettingsValue.Count) { Write-Host "INFO: The managed domain $($aadds.Name) does not have any trust relationships." Return } if($pass -eq $false) { Write-Host ([string]::Empty) Write-Host -ForegroundColor Red "ERROR: One or more prerequisites checks failed." Return } #endregion foreach($tempTrustValue in $tempTrustSettingsValue) { Write-Host -ForegroundColor Yellow "Trust Settings" Write-Host "FriendlyName: " $tempTrustValue.FriendlyName Write-Host "TrustedDomainFqdn: " $tempTrustValue.trustedDomainFqdn Write-Host "DNS IP Addresses: " $tempTrustValue.remoteDNSIPs Write-Host ([string]::Empty) } } # SIG # Begin signature block # MIIsBwYJKoZIhvcNAQcCoIIr+DCCK/QCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCTqyGbKMUB2wyR # l7V8qh+GHruZyJ0bdru4dtS/dUoAf6CCEXgwggiIMIIHcKADAgECAhM2AAACBIY2 # eKH0vgR+AAIAAAIEMA0GCSqGSIb3DQEBCwUAMEExEzARBgoJkiaJk/IsZAEZFgNH # QkwxEzARBgoJkiaJk/IsZAEZFgNBTUUxFTATBgNVBAMTDEFNRSBDUyBDQSAwMTAe # Fw0yNDExMDgxMjQ2MTVaFw0yNTExMDgxMjQ2MTVaMC8xLTArBgNVBAMTJE1pY3Jv # c29mdCBBenVyZSBEZXBlbmRlbmN5IENvZGUgU2lnbjCCASIwDQYJKoZIhvcNAQEB # BQADggEPADCCAQoCggEBAPMzJ8+5iuzPEvyWyqvQ8Lg6jR9oaO3Jf5qlRjxeD41Y # bkqKFvk5zW3XfUzy9FaA4vhKYGTav3Afc6srskrKqEz64RPgkApueunqiytGXfNl # Q7uP7iJJmBBXAcw23PR7cc6xrPvG+h5LDPHf9VT+iBsGyndA4SYH5oq8KVHF5H3j # HfxNsgz3+YG5tJ6jH+/NptEg/NSoa3Xh78fBV1qX0PVlBGBFXt97ayY6NBwmWNYv # UY7uLm3XzTNp7YG0WskxTD+vOij0XIc7rAe3EFpdrnWABFEiyaU591tWx48Iln/+ # TFC4K7alwjymJUcz5ia9YNoQVi3t+TbppVyHedzc6tMCAwEAAaOCBYkwggWFMCkG # CSsGAQQBgjcVCgQcMBowDAYKKwYBBAGCN1sDATAKBggrBgEFBQcDAzA8BgkrBgEE # AYI3FQcELzAtBiUrBgEEAYI3FQiGkOMNhNW0eITxiz6Fm90Wzp0SgWDigi2HkK4D # AgFkAgEQMIICdgYIKwYBBQUHAQEEggJoMIICZDBiBggrBgEFBQcwAoZWaHR0cDov # L2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NlcnRzL0JZMlBLSUNTQ0EwMS5B # TUUuR0JMX0FNRSUyMENTJTIwQ0ElMjAwMSgyKS5jcnQwUgYIKwYBBQUHMAKGRmh0 # dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0JZMlBLSUNTQ0EwMS5BTUUuR0JMX0FNRSUy # MENTJTIwQ0ElMjAwMSgyKS5jcnQwUgYIKwYBBQUHMAKGRmh0dHA6Ly9jcmwyLmFt # ZS5nYmwvYWlhL0JZMlBLSUNTQ0EwMS5BTUUuR0JMX0FNRSUyMENTJTIwQ0ElMjAw # MSgyKS5jcnQwUgYIKwYBBQUHMAKGRmh0dHA6Ly9jcmwzLmFtZS5nYmwvYWlhL0JZ # MlBLSUNTQ0EwMS5BTUUuR0JMX0FNRSUyMENTJTIwQ0ElMjAwMSgyKS5jcnQwUgYI # KwYBBQUHMAKGRmh0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0JZMlBLSUNTQ0EwMS5B # TUUuR0JMX0FNRSUyMENTJTIwQ0ElMjAwMSgyKS5jcnQwga0GCCsGAQUFBzAChoGg # bGRhcDovLy9DTj1BTUUlMjBDUyUyMENBJTIwMDEsQ049QUlBLENOPVB1YmxpYyUy # MEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2VzLENOPUNvbmZpZ3VyYXRpb24sREM9 # QU1FLERDPUdCTD9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlm # aWNhdGlvbkF1dGhvcml0eTAdBgNVHQ4EFgQUw39+RvM9ICQzKxoTRcu71FIzSBIw # DgYDVR0PAQH/BAQDAgeAMEUGA1UdEQQ+MDykOjA4MR4wHAYDVQQLExVNaWNyb3Nv # ZnQgQ29ycG9yYXRpb24xFjAUBgNVBAUTDTIzNjE2OSs1MDMxNTMwggHmBgNVHR8E # ggHdMIIB2TCCAdWgggHRoIIBzYY/aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3Br # aWluZnJhL0NSTC9BTUUlMjBDUyUyMENBJTIwMDEoMikuY3JshjFodHRwOi8vY3Js # MS5hbWUuZ2JsL2NybC9BTUUlMjBDUyUyMENBJTIwMDEoMikuY3JshjFodHRwOi8v # Y3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBDUyUyMENBJTIwMDEoMikuY3JshjFodHRw # Oi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBDUyUyMENBJTIwMDEoMikuY3JshjFo # dHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBDUyUyMENBJTIwMDEoMikuY3Js # hoG9bGRhcDovLy9DTj1BTUUlMjBDUyUyMENBJTIwMDEoMiksQ049QlkyUEtJQ1ND # QTAxLENOPUNEUCxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNl # cyxDTj1Db25maWd1cmF0aW9uLERDPUFNRSxEQz1HQkw/Y2VydGlmaWNhdGVSZXZv # Y2F0aW9uTGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50 # MB8GA1UdIwQYMBaAFJZRhOBrb3v+2Aarw/KF5imuavnUMB8GA1UdJQQYMBYGCisG # AQQBgjdbAwEGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4IBAQAqhvUBfHIboRQv # hZH+qh+g3/ifKd7J5mNS8Xa2FmDB3Nn+aqtVfjg0K3cXYOGQQPTTcBNJGFbrjRy2 # aqwhTqW/w7u1sCFmxMeN/fzHiiIxfCDFcjd2Q4c8N8BuZoZXgr5DONka2VJKTXLh # g049b9vgWSNVEP8LT2sFfkZ6fuJ7WVWffWSDjWJmvKMjPl4y2boWRQtyN8War2h+ # oFEBEZDMaFZRqu/sDwFpJlarhEJs+qIZsTpKPJnHoCdrgX/MWmJpVqnzSpqajIfz # CGY6ZQfnDPld6t+A6MLgGX/eGAlXmzLqcUzehzmrZGEEPSn3jrENGOis7Ql9/KtM # 5d6oErXlMIII6DCCBtCgAwIBAgITHwAAAFHqj/accwyoOwAAAAAAUTANBgkqhkiG # 9w0BAQsFADA8MRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYD # QU1FMRAwDgYDVQQDEwdhbWVyb290MB4XDTIxMDUyMTE4NDQxNFoXDTI2MDUyMTE4 # NTQxNFowQTETMBEGCgmSJomT8ixkARkWA0dCTDETMBEGCgmSJomT8ixkARkWA0FN # RTEVMBMGA1UEAxMMQU1FIENTIENBIDAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A # MIIBCgKCAQEAyZpSCX0Bno1W1yqXMhT6BUlJZWpa4p3xFeiTHO4vm2Q6C/azR5xw # xnyYHrkSGDtS2P9X+KDE64V20mmEQkubxnPNeOVnE2RvdPGxgwlq+BhS3ONdVsQP # j79q7XgHM9HhzB9+qk0PC9KN1zm9p/seyiRS6JF1dbOqRf1pUl7FAVxmgiCFgV8h # HIb/rDPXig7FDi3S0yEx2CUDVpIq8jEhG8anUFE1WYxM+ni0S5KHwwKPKV4qyGDo # DO+9AmDoma3Chyu5WDlW5cdtqXTWsGPE3umtnX6AmlldUFLms4OVR4guKf+n5LIB # CC6bTiocfXPomqYjYTKx7AGMfaVLaaXmhQIDAQABo4IE3DCCBNgwEgYJKwYBBAGC # NxUBBAUCAwIAAjAjBgkrBgEEAYI3FQIEFgQUEmgkQiFHy9RrvjHPIKTACyN/P0cw # HQYDVR0OBBYEFJZRhOBrb3v+2Aarw/KF5imuavnUMIIBBAYDVR0lBIH8MIH5Bgcr # BgEFAgMFBggrBgEFBQcDAQYIKwYBBQUHAwIGCisGAQQBgjcUAgEGCSsGAQQBgjcV # BgYKKwYBBAGCNwoDDAYJKwYBBAGCNxUGBggrBgEFBQcDCQYIKwYBBQUIAgIGCisG # AQQBgjdAAQEGCysGAQQBgjcKAwQBBgorBgEEAYI3CgMEBgkrBgEEAYI3FQUGCisG # AQQBgjcUAgIGCisGAQQBgjcUAgMGCCsGAQUFBwMDBgorBgEEAYI3WwEBBgorBgEE # AYI3WwIBBgorBgEEAYI3WwMBBgorBgEEAYI3WwUBBgorBgEEAYI3WwQBBgorBgEE # AYI3WwQCMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAS # BgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFCleUV5krjS566ycDaeMdQHR # CQsoMIIBaAYDVR0fBIIBXzCCAVswggFXoIIBU6CCAU+GMWh0dHA6Ly9jcmwubWlj # cm9zb2Z0LmNvbS9wa2lpbmZyYS9jcmwvYW1lcm9vdC5jcmyGI2h0dHA6Ly9jcmwy # LmFtZS5nYmwvY3JsL2FtZXJvb3QuY3JshiNodHRwOi8vY3JsMy5hbWUuZ2JsL2Ny # bC9hbWVyb290LmNybIYjaHR0cDovL2NybDEuYW1lLmdibC9jcmwvYW1lcm9vdC5j # cmyGgapsZGFwOi8vL0NOPWFtZXJvb3QsQ049QU1FUm9vdCxDTj1DRFAsQ049UHVi # bGljJTIwS2V5JTIwU2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlv # bixEQz1BTUUsREM9R0JMP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q/YmFzZT9v # YmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Qb2ludDCCAasGCCsGAQUFBwEBBIIB # nTCCAZkwRwYIKwYBBQUHMAKGO2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2lp # bmZyYS9jZXJ0cy9BTUVSb290X2FtZXJvb3QuY3J0MDcGCCsGAQUFBzAChitodHRw # Oi8vY3JsMi5hbWUuZ2JsL2FpYS9BTUVSb290X2FtZXJvb3QuY3J0MDcGCCsGAQUF # BzAChitodHRwOi8vY3JsMy5hbWUuZ2JsL2FpYS9BTUVSb290X2FtZXJvb3QuY3J0 # MDcGCCsGAQUFBzAChitodHRwOi8vY3JsMS5hbWUuZ2JsL2FpYS9BTUVSb290X2Ft # ZXJvb3QuY3J0MIGiBggrBgEFBQcwAoaBlWxkYXA6Ly8vQ049YW1lcm9vdCxDTj1B # SUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049U2VydmljZXMsQ049Q29u # ZmlndXJhdGlvbixEQz1BTUUsREM9R0JMP2NBQ2VydGlmaWNhdGU/YmFzZT9vYmpl # Y3RDbGFzcz1jZXJ0aWZpY2F0aW9uQXV0aG9yaXR5MA0GCSqGSIb3DQEBCwUAA4IC # AQBQECO3Tw/o317Rrd7yadqcswPx1LvIYymkaTN6KcmuRt6HKa0Xe73Ux2/AQ30T # fgA9GBJngweRykKBusRzyOU17iIubJvy3gA21dwtqtB0DsoEv1U/ptVu2v++doTC # J/i+GbssVXkgaX8H+6EOGEmT4evp4GbwR4HwWlc+Dvf8HH8PdUA2Z04CvcwIfckS # ipbNm84jxJ8XjmTFTWscldL9edj2NsY6iGnyJFIyur2PS7VRYyV3p1VAJp91gj1j # RQtWEyCB8P5g9nE3z8u0ANaU/hjwEQCrdGyravWgnf2JtG+bT26YAokbc8m+32zU # tXRO+NK3tAjhOu2FdsG3qNrF4sc7y37R/C+7Pcb/cFfhttqsirepZii4xStcjMOD # YuXzGm3IJs0b0owHG6oKd7ZOGvHpmmh9K8/DLriD/sq8bURD10qi/wuW8zM7IpLg # 1vcR9dIK2mc0pj44pc6UX0XbttP/VEJgu3lT2eI9VjWtaKjx38xE9woSMyekPRtz # TwgfuysF9DkJisr+yA4po/FPxpbBw9c/hBf32DH/GFxteS2pmjgKIbMP8sDukmEq # 3lVvuWNJsybrZwQvQpvaM49fv+JKpLK5YWYEfwksYRR9wU8Hh/ID9hRCEkbUoQ2W # 7mMpsp2Nbp/kcn4ivfolUy3Q9Yf0scsQ6WTLYpm+AoCUJTGCGeUwghnhAgEBMFgw # QTETMBEGCgmSJomT8ixkARkWA0dCTDETMBEGCgmSJomT8ixkARkWA0FNRTEVMBMG # A1UEAxMMQU1FIENTIENBIDAxAhM2AAACBIY2eKH0vgR+AAIAAAIEMA0GCWCGSAFl # AwQCAQUAoIGuMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcC # AQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJBDEiBCC7JZrujmvd/7mhIf+0 # hLh4ZGyfoK19aw/ROPLp/xZe5TBCBgorBgEEAYI3AgEMMTQwMqAUgBIATQBpAGMA # cgBvAHMAbwBmAHShGoAYaHR0cDovL3d3dy5taWNyb3NvZnQuY29tMA0GCSqGSIb3 # DQEBAQUABIIBALTNoVVSsXBBUfKkKlVeZDcL3D+kBxMj04P82x+vdS38wTRlw4T6 # XhOGH+jetTBTpMo8AE4MFFN7SEgQIelFuTd1qajDI2qtMxEG1C4dvNgxSYt3+esw # O4v6sxkVgm63A57IROR2NsPG1lBm5Ov+DcerDaXamFEdW9RgqiOEbkLPgrFkJnWt # aL4zn9tG0qk+Morz38kXt0orFsMoa7+bk8e5zzq9XOoy52mDyaCt7Q5ZL0n3BfTX # 9V0/VXj0HiFFlve5HaDrDQorTV7fBFEWZ1ZaBE1E0lOuWm7e8noTOfwBZp5QIwmr # YQzAGcsVntcB5HSsvDXXMXUNcBP5MVcJbcChghetMIIXqQYKKwYBBAGCNwMDATGC # F5kwgheVBgkqhkiG9w0BBwKggheGMIIXggIBAzEPMA0GCWCGSAFlAwQCAQUAMIIB # WgYLKoZIhvcNAQkQAQSgggFJBIIBRTCCAUECAQEGCisGAQQBhFkKAwEwMTANBglg # hkgBZQMEAgEFAAQgAKiUWt1UY7OpG3M7FL4WJoYXZM5JFJBIO4o5ALVat6ECBmhZ # j+qlTRgTMjAyNTA2MjUxNzI5MTYuMjIxWjAEgAIB9KCB2aSB1jCB0zELMAkGA1UE # BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0 # IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMScwJQYDVQQLEx5uU2hpZWxkIFRT # UyBFU046NjUxQS0wNUUwLUQ5NDcxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0 # YW1wIFNlcnZpY2WgghH7MIIHKDCCBRCgAwIBAgITMwAAAfWZCZS88cZQjAABAAAB # 9TANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu # Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv # cmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDAe # Fw0yNDA3MjUxODMxMDFaFw0yNTEwMjIxODMxMDFaMIHTMQswCQYDVQQGEwJVUzET # MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMV # TWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFu # ZCBPcGVyYXRpb25zIExpbWl0ZWQxJzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjo2 # NTFBLTA1RTAtRDk0NzElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy # dmljZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMzvdHBUE1nf1j/O # CE+yTCFtX0C+tbHX4JoZX09J72BG9pL5DRdO92cI73rklqLd/Oy4xNEwohvd3uiN # B8yBUAZ28Rj/1jwVIqxau1hOUQLLoTX2FC/jyG/YyatwsFsSAn8Obf6U8iDh4yr6 # NZUDk1mcqYq/6bGcBBO8trlgD22SUxaynp+Ue98dh28cuHltQ3Jl48ptsBVr9dLA # R+NGoyX3vjpMHE3aGK2NypKTf0UEo3snCtG4Y6NAhmCGGvmTAGqNEjUf0dSdWOrC # 5IgiTt2kK20tUs+5fv6iYMvH8hGTDQ+TLOwtLBGjr6AR4lkqUzOL3NMQywpnOjxr # 9NwrVrtiosqqy/AQAdRGMjkoSNyE+/WqwyA6y/nXvdRX45kmwWOY/h70tJd3V5Iz # 9x6J/G++JVsIpBdK8xKxdJ95IVQLrMe0ptaBhvtOoc/VwMt1qLvk+knuqGuSw4kI # D031kf4/RTZPCbtOqEn04enNN1dLpZWtCMMvh81JflpmMRS1ND4ml7JoLnTcFap+ # dc6/gYt1zyfOcFrsuhhk+5wQ5lzc0zZMyvfAwUI0zmm0F1GfPOGG/QxTXIoJnlU2 # JMlF2eobHHfDcquOQNw925Pp157KICtWe82Y+l2xn7e8YDmL73lOqdPn67YWxezF # 7/ouanA/R3xZjquFWB3r1XrGG+j9AgMBAAGjggFJMIIBRTAdBgNVHQ4EFgQUVeB8 # W/VKNKBw8CWSXttosXtgdQEwHwYDVR0jBBgwFoAUn6cVXQBeYl2D9OXSZacbUzUZ # 6XIwXwYDVR0fBFgwVjBUoFKgUIZOaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3Br # aW9wcy9jcmwvTWljcm9zb2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIwMTAoMSku # Y3JsMGwGCCsGAQUFBwEBBGAwXjBcBggrBgEFBQcwAoZQaHR0cDovL3d3dy5taWNy # b3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIw # UENBJTIwMjAxMCgxKS5jcnQwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggr # BgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4AwDQYJKoZIhvcNAQELBQADggIBAHMMZlT2 # gPcR337qJtEzkqdobKbn9RtHB1vylxwLoZ6VvP0r5auY/WiiP/PxunxiEDK9M5aW # rvI8vNyOM3JRnSY5eUtNksQ5VCmsLVr4H+4nWtOj4I3kDNXl+C7reG2z309BRKe+ # xu+oYcrF8UyTR7+cvn8E4VHoonJYoWcKnGTKWuOpvqFeooE1OiNBJ53qLTKhbNEN # 8x4FVa+Fl45xtgXJ5IqeNnncoP/Yl3M6kwaxJL089FJZbaRRmkJy86vjaPFRIKtF # Bu1tRC2RoZpsRZhwAcE0+rDyRVevA3y6AtIgfUG2/VWfJr201eSbSEgZJU7lQJRJ # M14vSyIzZsfpJ3QXyj/HcRv8W0V6bUA0A2grEuqIC5MC4B+s0rPrpfVpsyNBfMyJ # m4Z2YVM4iB4XhaOB/maKIz2HIEyuv925Emzmm5kBX/eQfAenuVql20ubPTnTHVJV # tYEyNa+bvlgMB9ihu3cZ3qE23/42Jd01LT+wB6cnJNnNJ7p/0NAsnKWvUFB/w8tN # ZOrUKJjVxo4r4NvwRnIGSdB8PAuilXpRCd9cS6BNtZvfjRIEigkaBRNS5Jmt9Usi # Gsp23WBG/LDpWcpzHZvMj5XQ8LheeLyYhAK463AzV3ugaG2VIk1kir79QyWnUdUl # AjvzndtRoFPoWarvnSoIygGHXkyL4vUdq7S2MIIHcTCCBVmgAwIBAgITMwAAABXF # 52ueAptJmQAAAAAAFTANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzAR # BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p # Y3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2Vy # dGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMjEwOTMwMTgyMjI1WhcNMzAwOTMw # MTgzMjI1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G # A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYw # JAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCCAiIwDQYJKoZI # hvcNAQEBBQADggIPADCCAgoCggIBAOThpkzntHIhC3miy9ckeb0O1YLT/e6cBwfS # qWxOdcjKNVf2AX9sSuDivbk+F2Az/1xPx2b3lVNxWuJ+Slr+uDZnhUYjDLWNE893 # MsAQGOhgfWpSg0S3po5GawcU88V29YZQ3MFEyHFcUTE3oAo4bo3t1w/YJlN8OWEC # esSq/XJprx2rrPY2vjUmZNqYO7oaezOtgFt+jBAcnVL+tuhiJdxqD89d9P6OU8/W # 7IVWTe/dvI2k45GPsjksUZzpcGkNyjYtcI4xyDUoveO0hyTD4MmPfrVUj9z6BVWY # bWg7mka97aSueik3rMvrg0XnRm7KMtXAhjBcTyziYrLNueKNiOSWrAFKu75xqRdb # Z2De+JKRHh09/SDPc31BmkZ1zcRfNN0Sidb9pSB9fvzZnkXftnIv231fgLrbqn42 # 7DZM9ituqBJR6L8FA6PRc6ZNN3SUHDSCD/AQ8rdHGO2n6Jl8P0zbr17C89XYcz1D # TsEzOUyOArxCaC4Q6oRRRuLRvWoYWmEBc8pnol7XKHYC4jMYctenIPDC+hIK12Nv # DMk2ZItboKaDIV1fMHSRlJTYuVD5C4lh8zYGNRiER9vcG9H9stQcxWv2XFJRXRLb # JbqvUAV6bMURHXLvjflSxIUXk8A8FdsaN8cIFRg/eKtFtvUeh17aj54WcmnGrnu3 # tz5q4i6tAgMBAAGjggHdMIIB2TASBgkrBgEEAYI3FQEEBQIDAQABMCMGCSsGAQQB # gjcVAgQWBBQqp1L+ZMSavoKRPEY1Kc8Q/y8E7jAdBgNVHQ4EFgQUn6cVXQBeYl2D # 9OXSZacbUzUZ6XIwXAYDVR0gBFUwUzBRBgwrBgEEAYI3TIN9AQEwQTA/BggrBgEF # BQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9z # aXRvcnkuaHRtMBMGA1UdJQQMMAoGCCsGAQUFBwMIMBkGCSsGAQQBgjcUAgQMHgoA # UwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQY # MBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6 # Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1 # dF8yMDEwLTA2LTIzLmNybDBaBggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAKGPmh0 # dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0XzIw # MTAtMDYtMjMuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQCdVX38Kq3hLB9nATEkW+Ge # ckv8qW/qXBS2Pk5HZHixBpOXPTEztTnXwnE2P9pkbHzQdTltuw8x5MKP+2zRoZQY # Iu7pZmc6U03dmLq2HnjYNi6cqYJWAAOwBb6J6Gngugnue99qb74py27YP0h1AdkY # 3m2CDPVtI1TkeFN1JFe53Z/zjj3G82jfZfakVqr3lbYoVSfQJL1AoL8ZthISEV09 # J+BAljis9/kpicO8F7BUhUKz/AyeixmJ5/ALaoHCgRlCGVJ1ijbCHcNhcy4sa3tu # PywJeBTpkbKpW99Jo3QMvOyRgNI95ko+ZjtPu4b6MhrZlvSP9pEB9s7GdP32THJv # EKt1MMU0sHrYUP4KWN1APMdUbZ1jdEgssU5HLcEUBHG/ZPkkvnNtyo4JvbMBV0lU # ZNlz138eW0QBjloZkWsNn6Qo3GcZKCS6OEuabvshVGtqRRFHqfG3rsjoiV5PndLQ # THa1V1QJsWkBRH58oWFsc/4Ku+xBZj1p/cvBQUl+fpO+y/g75LcVv7TOPqUxUYS8 # vwLBgqJ7Fx0ViY1w/ue10CgaiQuPNtq6TPmb/wrpNPgkNWcr4A245oyZ1uEi6vAn # Qj0llOZ0dFtq0Z4+7X6gMTN9vMvpe784cETRkPHIqzqKOghif9lwY1NNje6CbaUF # EMFxBmoQtB1VM1izoXBm8qGCA1YwggI+AgEBMIIBAaGB2aSB1jCB0zELMAkGA1UE # BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0 # IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMScwJQYDVQQLEx5uU2hpZWxkIFRT # UyBFU046NjUxQS0wNUUwLUQ5NDcxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0 # YW1wIFNlcnZpY2WiIwoBATAHBgUrDgMCGgMVACbACruPDW0eWEYN1kgUAso83ZL2 # oIGDMIGApH4wfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAO # BgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEm # MCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwDQYJKoZIhvcN # AQELBQACBQDsBgiIMCIYDzIwMjUwNjI1MDUzMjU2WhgPMjAyNTA2MjYwNTMyNTZa # MHQwOgYKKwYBBAGEWQoEATEsMCowCgIFAOwGCIgCAQAwBwIBAAICKfQwBwIBAAIC # E3UwCgIFAOwHWggCAQAwNgYKKwYBBAGEWQoEAjEoMCYwDAYKKwYBBAGEWQoDAqAK # MAgCAQACAwehIKEKMAgCAQACAwGGoDANBgkqhkiG9w0BAQsFAAOCAQEAZTUxaHtr # Xov6XvFaXpS9HGgj6VHP6GOiRTeoDqwGmSSiHVbdQIpC3zlZgeY4IITHV8yvLQ5n # cMey7lcPUdjOska+xc4M2BE/0UGd3BPG7x9Gdj/stg6ln35/QtbWtaAQ8BmbRjpH # /z1c6en1SWkQI6QHYUfrmRJCkT6BFDK/aH9+jnhSE+K7Fb1atM3n7sBiDnUwEcyH # /hVyK9PABhHmEIQz+4T8plnsQUoYIPvcW9g9P4u/Q1xX6ygM1HjOENHB1qS0BtI3 # 5NDaUAQ759fFD2pgFOwFejnF5jRECKg5rlR6/xPSA6VBx7f67QxLQ2cYRhdhEVog # oU2P3W35sYxyXTGCBA0wggQJAgEBMIGTMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQI # EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv # ZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBD # QSAyMDEwAhMzAAAB9ZkJlLzxxlCMAAEAAAH1MA0GCWCGSAFlAwQCAQUAoIIBSjAa # BgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIEIIb/bjeN # vXxutC+tiJA478xX1KkMpZ2OnkS3ekY7QritMIH6BgsqhkiG9w0BCRACLzGB6jCB # 5zCB5DCBvQQgwdby0hcIdPSEruJHRL+P7YPXkdWJPMOce4+Rk4amjzUwgZgwgYCk # fjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH # UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQD # Ex1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAAAfWZCZS88cZQjAAB # AAAB9TAiBCCyIj+dJy/EHlesb6kM81cheGfWBGg5cvdD6xmEsLnT7DANBgkqhkiG # 9w0BAQsFAASCAgApjA1rsmYbP0uheGal2rGy9DmWRB6fbsNN3XwHbx6EgByuVIFZ # g2QVHte3PCiBlmj3xLADeLXH1XKj79YAiCHb/iXjfJ9zdnU7aAt/pMVGTrJv+CuN # zpXzb64YnBSJG1kGfrgJFqYqphkLEz/Yqis0n7CC5uYpZIQhbuhe2YTZWYuYYjRk # 0Kn1gK0ihGvIQDd6fWVh/wCpQAFfH9AMr0V1hsZmSb/sXA6FYQUBb2x4Sa9zHlZ5 # FGqmK54T1GArFqX1JI7Y+nqQ9lOp6N+U5eRUFmD0Di5KIiFpoN4P9jQswpILrgql # cDJnnT3x8UQ/oeISbFrDBIlL33S4jYQRTrzQm6Vf4a7GM2RqfzUYTcVbKbrPWK6o # W5lI/Q8tT9T5fX7xwBnXA2Pb25VToJrwBvRAu0XC4UqiQDy4UbaGF2kGZewbbvP0 # sQOuShitMl+8y1ivxsgpxvpIUu+Tg1r1/4OxmT8iDSlflzAdt/0ZRPkBKhdwM3rU # MyM27w9Hh39nN7q7mjxmIeSVQUpTd/zYGp0WpF1EVmSkipGqt7+gE6CY6gxm1M2T # 00gJ9Gz/uMVlP5Axln7iosjlkqrRoMhWXnoUD5tbHMh1tjMwJExHfj/2DFJGaVKo # hSMy0oTbp0zeEtJ3+X/FdKpBaLD9GqVFoEv3MNzDHS6apGVKdYOnIfSfuw== # SIG # End signature block |