Utilities/RMValidationUtility.ps1
using module "..\MCCA.psm1" $ExchangePresent = "Exchange" $SharePointPresent = "SharePoint" $OneDrivePresent = "OneDrive" Function Get-RMPolicyValidation { param ( $LogFile, $Mode ) $ConfigObjectList = @() try { $ConfigObjectList=@() $RecordLabelPolicy =$false $PolicyDisabled = $false $AnyPolicyEnabled = $false $RetentionComplianceRules = $Config["GetRetentionComplianceRule"] $RetentionCompliancePolicies = $Config["GetRetentionCompliancePolicy"] $GetComplianceTag = $Config["GetComplianceTag"] $PartialWorkloadsStatus = @{} $PartialWorkloadsStatus[$ExchangePresent] = $false $PartialWorkloadsStatus[$SharePointPresent] = $false $PartialWorkloadsStatus[$OneDrivePresent] = $false foreach ( $RetentionCompliancePolicy in $RetentionCompliancePolicies) { $PolicyName = $($RetentionCompliancePolicy.Name) $ConfigObject = [MCCACheckConfig]::new() $ConfigObject.Object = "$PolicyName" $PolicyConfigData = $null #Publishing a Record Label if($Mode -eq "Publish") { $RetentionCompliancePolicyRules = $RetentionComplianceRules | Where-Object {($_.Policy -ieq $($RetentionCompliancePolicy.ExchangeObjectId)) -and ($_.Disabled -eq $false) -and($_.PublishComplianceTag -ne "")} foreach( $RetentionCompliancePolicyRule in $RetentionCompliancePolicyRules ) { $PublishComplianceTag = $RetentionCompliancePolicyRule.PublishComplianceTag $PublishComplianceTag = $($PublishComplianceTag.Split(","))[1] $GetRecordLabel= $GetComplianceTag | Where-Object{ ($_.Name -eq $PublishComplianceTag) -and ($_.IsRecordLabel -ne $false)} if($null -ne $GetRecordLabel) { $RecordLabelPolicy =$true if ($null -eq $PolicyConfigData ) { $PolicyConfigData += "<B>Labels : </B>$PublishComplianceTag" } else { $PolicyConfigData += ", $PublishComplianceTag" } } } } #automatically apply record labels elseif($Mode -eq "Auto") { $RetentionCompliancePolicyRules = $RetentionComplianceRules | Where-Object {($_.Policy -ieq $($RetentionCompliancePolicy.ExchangeObjectId)) -and ($_.Disabled -eq $false) -and($_.ApplyComplianceTag -ne "")} foreach( $RetentionCompliancePolicyRule in $RetentionCompliancePolicyRules ) { $ApplyComplianceTag = $RetentionCompliancePolicyRule.ApplyComplianceTag $GetRecordLabel= $GetComplianceTag | Where-Object{ ($_.ExchangeObjectId -eq $ApplyComplianceTag) -and ($_.IsRecordLabel -ne $false)} if($null -ne $GetRecordLabel) { $RecordLabelPolicy =$true if ($null -eq $PolicyConfigData ) { $PolicyConfigData += "<B>Labels : </B>$($GetRecordLabel.Name)" } else { $PolicyConfigData += ", $($GetRecordLabel.Name)" } } } } $ExchangeLocation = $RetentionCompliancePolicy.ExchangeLocation $SharePointLocation = $RetentionCompliancePolicy.SharePointLocation $OneDriveLocation = $RetentionCompliancePolicy.OneDriveLocation $ModernGroupLocation = $RetentionCompliancePolicy.ModernGroupLocation $PublicFolderLocation = $RetentionCompliancePolicy.PublicFolderLocation $SkypeLocation = $RetentionCompliancePolicy.SkypeLocation $WorkloadsStatus= "" if(($RetentionCompliancePolicy.Enabled -eq $true) -and ($null -ne $PolicyConfigData )) { if(($ExchangeLocation -ne "") ) { $WorkloadsStatus+= "Exchange, " $PartialWorkloadsStatus[$ExchangePresent] = $true } if(($SharePointLocation -ne "") ) { $WorkloadsStatus += "SharePoint, " $PartialWorkloadsStatus[$SharePointPresent] = $true } if(($OneDriveLocation -ne "") ) { $WorkloadsStatus+= "OneDrive, " $PartialWorkloadsStatus[$OneDrivePresent] = $true } if(($ModernGroupLocation -ne "") ) { $WorkloadsStatus += "ModernGroup, " } if(($PublicFolderLocation -ne "") ) { $WorkloadsStatus += "ExchangePublicFolders, " } if(($SkypeLocation -ne "") ) { $WorkloadsStatus += "Skype, " } } $workloadpresent ="<B>Workloads: </B>$WorkloadsStatus" $workloadpresent=$workloadpresent.TrimEnd(", ") if ($RetentionCompliancePolicy.Enabled -eq $true ) { if (($null -ne $PolicyConfigData) -and ($RecordLabelPolicy -eq $true) ) { $AnyPolicyEnabled =$true $Workload= $workloadpresent $ConfigObject.ConfigData = "$Workload" $ConfigObject.ConfigItem = "$PolicyConfigData" $ConfigObject.SetResult([MCCAConfigLevel]::Ok, "Pass") $ConfigObjectList += $ConfigObject } } elseif(($null -ne $PolicyConfigData) -and ($RetentionCompliancePolicy.Enabled -ne $true) ) { $PolicyDisabled =$true $ConfigObject.ConfigData = "Policy is not enabled" $ConfigObject.ConfigItem = "$PolicyConfigData" $ConfigObject.SetResult([MCCAConfigLevel]::Informational, "Pass") $ConfigObjectList += $ConfigObject } } if ($RecordLabelPolicy -eq $false) { $ConfigObject = [MCCACheckConfig]::new() $ConfigObject.Object = "<B>No record label policy defined<B>" $ConfigObject.ConfigItem = "" $ConfigObject.ConfigData = "<B>Affected workloads: </B>Exchange, SharePoint, OneDrive" $ConfigObject.SetResult([MCCAConfigLevel]::Ok, "Fail") $ConfigObjectList += $ConfigObject } $PartialLocation="" foreach ($Workload in ($PartialWorkloadsStatus.Keys | Sort-Object -CaseSensitive) ) { if ($PartialWorkloadsStatus[$Workload] -eq $false) { if ( $PartialLocation -eq "") { $PartialLocation += "$($Workload)" }else { $PartialLocation += ", $($Workload)" } } } if(($PartialLocation -ne "") -and (($PolicyDisabled -eq $true) -or ($AnyPolicyEnabled -eq $true))) { $ConfigObject = [MCCACheckConfig]::new() $ConfigObject.Object = "<B>No policy defined for 1 or more workloads<B>" $ConfigObject.ConfigItem = "" $ConfigObject.ConfigData = "<B>Affected workloads: </B>$PartialLocation" $ConfigObject.SetResult([MCCAConfigLevel]::Ok, "Fail") $ConfigObjectList += $ConfigObject } } catch { Write-Host "Error:$(Get-Date) There was an issue while running MCCA. Please try running the tool again after some time." -ForegroundColor:Red $ErrorMessage = $_.ToString() $StackTraceInfo = $_.ScriptStackTrace Write-Log -IsError -ErrorMessage $ErrorMessage -StackTraceInfo $StackTraceInfo -LogFile $LogFile -ErrorAction:SilentlyContinue } return $ConfigObjectList } # SIG # Begin signature block # MIIhnAYJKoZIhvcNAQcCoIIhjTCCIYkCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAoemc6Gi0BcY4F # 9pCwH3JiNoBJa8DsHIcRNsNXmUlfQKCCC4QwggUAMIID6KADAgECAhMzAAAEU+We # zhfpk+4QAAAAAARTMA0GCSqGSIb3DQEBCwUAMHkxCzAJBgNVBAYTAlVTMRMwEQYD # VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy # b3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBUZXN0aW5nIFBD # QSAyMDEwMB4XDTIwMTIxNTE5NDMyN1oXDTIxMTIwMjE5NDMyN1owfDELMAkGA1UE # BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdQ29kZSBTaWdu # IFRlc3QgKERPIE5PVCBUUlVTVCkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK # AoIBAQDIbLqmXHPCGqCpfikwr9Gwu7mmwKaRk2l2c7HiFdxA4N/5QBm3ZfoonyX/ # oaX3WbsvBD3MoCMZJCYGVJeCkW0Iy0ahCtcxjmCmy9T7g0Du1vR29P+TTghXQ4ZP # fVj+XDxo82IsqpD7uxaa/VujruYpxvYfwRZB11kf0SpaRLae1TvONYQZ/eNifGSx # zUridwIkDPogu1vzsehp1O+SMhv3foM6Rz95ajbWOJMxgooE+LoAapjHe8jDciok # 4jPC/5F5HGbf50i6Wj/QLN3VKLQFsSBzBC1RFqUITmcRP4ngQeDvLpvTluC8KFmy # IlZunmBqGx2ynTmebwVysIa+qV/NAgMBAAGjggF8MIIBeDATBgNVHSUEDDAKBggr # BgEFBQcDAzAdBgNVHQ4EFgQUrvqOOBCgPTy+cAoXZUhGw1P2yF4wUAYDVR0RBEkw # R6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNv # MRYwFAYDVQQFEw0yMzAwNzIrNDYzMDE4MB8GA1UdIwQYMBaAFN3WR4sjFC/YOGhC # oz5tw/CQ9yzQMFkGA1UdHwRSMFAwTqBMoEqGSGh0dHA6Ly93d3cubWljcm9zb2Z0 # LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFRlc3RpbmclMjBQQ0ElMjAyMDEw # LmNybDBmBggrBgEFBQcBAQRaMFgwVgYIKwYBBQUHMAKGSmh0dHA6Ly93d3cubWlj # cm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwVGVzdGluZyUyMFBD # QSUyMDIwMTAuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggEBACnT # 9Iwyq9Jk/Ee6QBrLTjw5+p0XjjxX7Oocz1R/iNdfx7iJtSf4VHWcDGXr92BPQLgl # MOdq6PCrIRstWMg1aBQ4eH9Q6VfiWZq3FyaQNpDG4g/+Z6Zo5A6LgbtEnZB5tboP # ZsE4o0wDlIXX5pGCsCTIiVMtJqbCZPn5hLG5V7wMlLae9A4xOW+JyBy8vA/FpE+A # QQoHSJ4LrC22bwpn2+cQRF5SlFRIqZVx+wclji96Nerfosz2ZPLfydHvs8jH65dA # 2WFAMvN8/KxdX7fp98Bzk+vhCPYc4/CKyPdscD7yJvOxveEAzDiLyyWrnbFU9qP7 # aI/JTxrVA5IGS7wIJKwwggZ8MIIEZKADAgECAgphEYRvAAAAAAADMA0GCSqGSIb3 # DQEBCwUAMIGQMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G # A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTow # OAYDVQQDEzFNaWNyb3NvZnQgVGVzdGluZyBSb290IENlcnRpZmljYXRlIEF1dGhv # cml0eSAyMDEwMB4XDTEwMDcwMTIxMjMwMVoXDTI1MDcwMTIxMzMwMVoweTELMAkG # A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx # HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEjMCEGA1UEAxMaTWljcm9z # b2Z0IFRlc3RpbmcgUENBIDIwMTAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK # AoIBAQDBvSHVS2YGAJIwORjKy3NCWbHvmyeo4OhVvSmw+SQfOtHow1mJ7ZG2wegz # Y/ZaZBniLnwMkIAFOL8cproNai/vJ5er3vbvUPOD59fDRTciPxi1wpYRto0Sg1mL # J1EGVnW5YGoTDtUmPy2WqgXMoYc/vk807wxMb8wE1KHmZ80KJzOf46+bb2h8vLQM # czSMWoH5h/tUHMVHbOqfV7RZ/c4ZqXd8h0KftXmUvMt2ktuWl6FfBCQ5/qGV4Z+G # 417ZXFbfQ5CfyRTq0fWgW6vzCATdKK8b4qouE6AK7dKZRCr1mUT7K6RP8bthwh0t # 9SUnAqh475M59F51ge7S4HYMWyPvAgMBAAGjggHsMIIB6DAQBgkrBgEEAYI3FQEE # AwIBADAdBgNVHQ4EFgQU3dZHiyMUL9g4aEKjPm3D8JD3LNAwGQYJKwYBBAGCNxQC # BAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYD # VR0jBBgwFoAUowEEfjCIM+u5MZzK64V2Z/xltNEwWQYDVR0fBFIwUDBOoEygSoZI # aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljVGVz # Um9vQ2VyQXV0XzIwMTAtMDYtMTcuY3JsMF0GCCsGAQUFBwEBBFEwTzBNBggrBgEF # BQcwAoZBaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNUZXNS # b29DZXJBdXRfMjAxMC0wNi0xNy5jcnQwgaAGA1UdIAEB/wSBlTCBkjCBjwYJKwYB # BAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20v # UEtJL2RvY3MvQ1BTL2RlZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQeMiAdAEwAZQBn # AGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0AGEAdABlAG0AZQBuAHQALiAdMA0GCSqG # SIb3DQEBCwUAA4ICAQBAYQU+N90ze1LCSGuA92ADFrbJLol+vdlYHGPT9ZLS9loE # DQjuh7/rmDQ6ZXxQ5MgbKVB5VXsYOZG1QSbzF3+YlWd8TN1y5B21BM3DSPb6r+3b # rl50kW2t1JqACtiLbZnmhmh5hkdJi8HYUfLQ7xKcP0g1CIJP9CyKil7UJv/HnMXK # igTGiBaHjfVtVwG5k8roymrEirpBDcOMVB0OZiTXxYIHDbM4v7LItZYIISdPs6+L # wxwzwdroMdpj42+3dWQBumpRGQAgqJ9i5UiBQtUM+9vLpKIRnujnWfQxbaIuIt2H # RLFpHUYKGOXRlf148o+71dX3YWap88+ocaxkM8rkavgDNkcWSe9Dpoq8a3tS2P9B # pxewDV+iSzF0JRo9UOZeciaSQDZvrkQskxJjtdO725L6E5Fu1Ti+lGl6exRCnhPb # ooxCqHEGLRdiwXkrmLp+huTGAK8zmfEt0d1JFrrDdu5kqoG3OVT2dN4JVFNpOFvC # U/LNiVDCyCIcG0cSRVtDjyNckMhu1PcPtberjr1mcL8RkTzvonoH4pIvQk1k4IOL # pdxslOj2oigApZjqCBJA3mIEZHlnwRuglg4Er74nSmL6953C0r1Vwl7T0vXnQO8i # zb+incAb1r6Y+45N5aVXww+PqHJBRjvhjyBKG+1aDLVM3ixjV9P6OZkOvp4uozGC # FW4wghVqAgEBMIGQMHkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u # MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp # b24xIzAhBgNVBAMTGk1pY3Jvc29mdCBUZXN0aW5nIFBDQSAyMDEwAhMzAAAEU+We # zhfpk+4QAAAAAARTMA0GCWCGSAFlAwQCAQUAoIGwMBkGCSqGSIb3DQEJAzEMBgor # BgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3 # DQEJBDEiBCC0x6FsWpa7mRMse5lJJ6RGd6oFt2eghe0aLCk1MnETPTBEBgorBgEE # AYI3AgEMMTYwNKAUgBIATQBpAGMAcgBvAHMAbwBmAHShHIAaaHR0cHM6Ly93d3cu # bWljcm9zb2Z0LmNvbSAwDQYJKoZIhvcNAQEBBQAEggEANxdjTZPrMxeUbqX8iccL # a+QcYOxwIkDp9m1bqAPtyy5ZO4Cdyx9fEp3eiBqDkL5tdy0x0LRlPpuH5JYLz6zC # Z49qWQLiI3ZcocX6hTmUuKpHb8ZfePuTuvHpjwwj4Df1BdGkobixNMkX0PaBMtfZ # GY98zYnLeb/ky7oie2eOP3nM2Xv/9HZRmVfjESd9yXCe4bXqKcagKg+um/TGI8wA # dEG6kYkT9augo9B+PHjThIIY3g4JBXI/u9755tltAsB4V0G5UQqkG+sbr9nkASDM # n2hTNs94kftLasS33XWMwZmyNTMZbnCzjMy38nF+8BOSMc9pEgJwgFdSHrL/hkgv # mKGCEvswghL3BgorBgEEAYI3AwMBMYIS5zCCEuMGCSqGSIb3DQEHAqCCEtQwghLQ # AgEDMQ8wDQYJYIZIAWUDBAIBBQAwggFZBgsqhkiG9w0BCRABBKCCAUgEggFEMIIB # QAIBAQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUABCDP1x1VVgBP6c7ucgLz # 6KXU6RQdZ/kUvspVCJ0TyXdV3AIGYNSQkQmQGBMyMDIxMDcwOTA2MDk0NS41MDNa # MASAAgH0oIHYpIHVMIHSMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv # bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 # aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0 # ZWQxJjAkBgNVBAsTHVRoYWxlcyBUU1MgRVNOOkQwODItNEJGRC1FRUJBMSUwIwYD # VQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNloIIOSjCCBPkwggPhoAMC # AQICEzMAAAFBr39Sl1zy3EUAAAAAAUEwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE # BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0 # IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcNMjAxMDE1MTcyODI3WhcNMjIwMTEyMTcy # ODI3WjCB0jELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV # BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEtMCsG # A1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9ucyBMaW1pdGVkMSYwJAYD # VQQLEx1UaGFsZXMgVFNTIEVTTjpEMDgyLTRCRkQtRUVCQTElMCMGA1UEAxMcTWlj # cm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZTCCASIwDQYJKoZIhvcNAQEBBQADggEP # ADCCAQoCggEBAPIqy6i9vHWpfjyVJlCTsL2J/7DghM0M2co/eF2xT7UYQ4T42oL7 # yjr9RoDKDrl75KTN7jOROu78jgj8aoUwM6uwJN85BF1wb+yaDPF5tMeVHJwJKVIh # KNHsnEZem52CAdypWVt7s+CXNr9hVdCghpC676nyj/Ff4toVcjfOeDno1qcfMBlG # szOAmFFaMHIBA3O+jmPl2uFtuwwmSZtn/aJeAY0i/m9i/0/J/yxBpJ2lMcEkEzdS # 0ArfrgQwgEnelUEeQiyyVbejAS9FtTZWlsRACcJSHcgZ0tYoS70YNY3PylGXtLER # XQ934Sq4z2nN4aMtNOxb6+hqNFieKa9qyXUCAwEAAaOCARswggEXMB0GA1UdDgQW # BBQtKD8sbi6Q/UVwa/XPDTtBBRLGxDAfBgNVHSMEGDAWgBTVYzpcijGQ80N7fEYb # xTNoWoVtVTBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5j # b20vcGtpL2NybC9wcm9kdWN0cy9NaWNUaW1TdGFQQ0FfMjAxMC0wNy0wMS5jcmww # WgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29m # dC5jb20vcGtpL2NlcnRzL01pY1RpbVN0YVBDQV8yMDEwLTA3LTAxLmNydDAMBgNV # HRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMIMA0GCSqGSIb3DQEBCwUAA4IB # AQBSet8ifdgoagoKXsQ+PKJL4hrguIpDbL5sJQknrdbBabyRMyyQfHExeM+KkE8/ # ALELXHsOpgFZkAmA7vX+XntdcV49S8B2LGRp0rPzn0bpdVSpmOdTkKaryuTvwreH # 7NCG5c6PHsjiycoE5Pe2l1QOFM6vBm5S+y0OV4sAGOOOjDgC5zVxaPyqvbb84qcG # NWHEZ/55TEPm/djoiy5h1TItsAFDkYihb2gH2Fo4UHftqhyzLHaTZbsAW1nuxReQ # AbA6NB0TjFsgoMXS0N76q9wzEh92ViooqxbL1iZnIX2TxkTm8KrM70lzxZjwWfaP # nq/uFKC1fudBlp50JMux1YC5MIIGcTCCBFmgAwIBAgIKYQmBKgAAAAAAAjANBgkq # hkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x # EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv # bjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 # IDIwMTAwHhcNMTAwNzAxMjEzNjU1WhcNMjUwNzAxMjE0NjU1WjB8MQswCQYDVQQG # EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG # A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQg # VGltZS1TdGFtcCBQQ0EgMjAxMDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC # ggEBAKkdDbx3EYo6IOz8E5f1+n9plGt0VBDVpQoAgoX77XxoSyxfxcPlYcJ2tz5m # K1vwFVMnBDEfQRsalR3OCROOfGEwWbEwRA/xYIiEVEMM1024OAizQt2TrNZzMFcm # gqNFDdDq9UeBzb8kYDJYYEbyWEeGMoQedGFnkV+BVLHPk0ySwcSmXdFhE24oxhr5 # hoC732H8RsEnHSRnEnIaIYqvS2SJUGKxXf13Hz3wV3WsvYpCTUBR0Q+cBj5nf/Vm # wAOWRH7v0Ev9buWayrGo8noqCjHw2k4GkbaICDXoeByw6ZnNPOcvRLqn9NxkvaQB # wSAJk3jN/LzAyURdXhacAQVPIk0CAwEAAaOCAeYwggHiMBAGCSsGAQQBgjcVAQQD # AgEAMB0GA1UdDgQWBBTVYzpcijGQ80N7fEYbxTNoWoVtVTAZBgkrBgEEAYI3FAIE # DB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNV # HSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvXzpoYxDBWBgNVHR8ETzBNMEugSaBHhkVo # dHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNSb29D # ZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAC # hj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1 # dF8yMDEwLTA2LTIzLmNydDCBoAYDVR0gAQH/BIGVMIGSMIGPBgkrBgEEAYI3LgMw # gYEwPQYIKwYBBQUHAgEWMWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9QS0kvZG9j # cy9DUFMvZGVmYXVsdC5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8A # UABvAGwAaQBjAHkAXwBTAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQEL # BQADggIBAAfmiFEN4sbgmD+BcQM9naOhIW+z66bM9TG+zwXiqf76V20ZMLPCxWbJ # at/15/B4vceoniXj+bzta1RXCCtRgkQS+7lTjMz0YBKKdsxAQEGb3FwX/1z5Xhc1 # mCRWS3TvQhDIr79/xn/yN31aPxzymXlKkVIArzgPF/UveYFl2am1a+THzvbKegBv # SzBEJCI8z+0DpZaPWSm8tv0E4XCfMkon/VWvL/625Y4zu2JfmttXQOnxzplmkIz/ # amJ/3cVKC5Em4jnsGUpxY517IW3DnKOiPPp/fZZqkHimbdLhnPkd/DjYlPTGpQqW # hqS9nhquBEKDuLWAmyI4ILUl5WTs9/S/fmNZJQ96LjlXdqJxqgaKD4kWumGnEcua # 2A5HmoDF0M2n0O99g/DhO3EJ3110mCIIYdqwUB5vvfHhAN/nMQekkzr3ZUd46Pio # SKv33nJ+YWtvd6mBy6cJrDm77MbL2IK0cs0d9LiFAR6A+xuJKlQ5slvayA1VmXqH # czsI5pgt6o3gMy4SKfXAL1QnIffIrE7aKLixqduWsqdCosnPGUFN4Ib5KpqjEWYw # 07t0MkvfY3v1mYovG8chr1m1rtxEPJdQcdeh0sVV42neV8HR3jDA/czmTfsNv11P # 6Z0eGTgvvM9YBS7vDaBQNdrvCScc1bN+NR4Iuto229Nfj950iEkSoYIC1DCCAj0C # AQEwggEAoYHYpIHVMIHSMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv # bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 # aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0 # ZWQxJjAkBgNVBAsTHVRoYWxlcyBUU1MgRVNOOkQwODItNEJGRC1FRUJBMSUwIwYD # VQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNloiMKAQEwBwYFKw4DAhoD # FQCq5b8ptQqriKEHK853C75A9VqVA6CBgzCBgKR+MHwxCzAJBgNVBAYTAlVTMRMw # EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN # aWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0 # YW1wIFBDQSAyMDEwMA0GCSqGSIb3DQEBBQUAAgUA5JIsPjAiGA8yMDIxMDcwOTEw # MDAzMFoYDzIwMjEwNzEwMTAwMDMwWjB0MDoGCisGAQQBhFkKBAExLDAqMAoCBQDk # kiw+AgEAMAcCAQACAgx5MAcCAQACAhF2MAoCBQDkk32+AgEAMDYGCisGAQQBhFkK # BAIxKDAmMAwGCisGAQQBhFkKAwKgCjAIAgEAAgMHoSChCjAIAgEAAgMBhqAwDQYJ # KoZIhvcNAQEFBQADgYEAA+03K1rgCPMpSwkS66wcMz/9c3NZ6Nnqj5dxAOgebFci # Oij1oWThCVzTKTdWSw0rvoEIMXN9erGjZahsBNDyD2882CfOJzzFEdJdB7NA5xIb # NdaMDCYUl9XvB3FnYY5jYQPvPmggdys9klGRAGjZrPdbMO07TTdoNRD41Q5pgtEx # ggMNMIIDCQIBATCBkzB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv # bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 # aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMAITMwAA # AUGvf1KXXPLcRQAAAAABQTANBglghkgBZQMEAgEFAKCCAUowGgYJKoZIhvcNAQkD # MQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJBDEiBCCzccZVwk4KXAgaW3kEYgdf # X0qLBWEkKCdi1eUFNHyuFTCB+gYLKoZIhvcNAQkQAi8xgeowgecwgeQwgb0EIFE/ # ATyM6nN0nnB0TyygbVtLzjp0/u/IWlqPl3MVXq3eMIGYMIGApH4wfDELMAkGA1UE # BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0 # IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAAFBr39Sl1zy3EUAAAAAAUEwIgQgUMsb # PSe/QA6Mrd7UND+RGW8m+vXe+xDqyMCXsZE+odEwDQYJKoZIhvcNAQELBQAEggEA # LyAj5nB2k1GGuCc+g4lHzGd7avJg/sr5pK4rT4Cv5gccdXvNHS81KT6jp6XN0hvg # pwiOZGGhGzQNL8JDXaTWoQyycKtTvUzV9J1nw6Zi3UQUXVI7e3OmBWDTKtAbyM/2 # NluUQAdzGJeYkQT0myUfyszDTdgcMgxQn9LlfQ7bv23T/IPy25uN+U7Q8d2X5kBA # KkMdPCZyKn7YPmcIdZyjO33FuTWQtBJMfN2gLsEHPjJYHtrJBdL4KGXcn27tNrnf # iyOCwJaa8m6jAlC7FodzyP7+s3C3f2H4+Ld0zPA16oZXtJZdY/5dxNLb1XeujceO # uHycrx6edk8etfX40ZPHAA== # SIG # End signature block |