Public/Update-DotNetSdk.ps1
|
function Update-DotNetSdk { <# .SYNOPSIS Finds and installs updates for SDKs installed by the official .NET SDK Windows installer. .DESCRIPTION Uses the Windows installer bundle registrations to discover standalone .NET SDK installations, then uses Microsoft's official release metadata to find SDK updates for each registered architecture. By default, the command presents a keyboard-driven checklist with every update selected. Use Up/Down to move, Space to toggle, A/N to select all or none, Enter to accept, or Escape to cancel. Patch scope stays within each installed SDK feature band (for example, 8.0.4xx). FeatureBand scope, the default, updates each installed release channel to its latest feature band. Major scope updates the selected installed SDKs to the newest eligible .NET SDK release. An installed preview or release-candidate SDK can update to a newer official preview, release candidate, or stable release. Stable SDKs update only to stable releases unless IncludePreview is specified. Supplying VersionBand or UpdateAll disables selection and confirmation prompts. Installers still request UAC elevation when the shell is not already elevated. Installer UI is disabled by default. .PARAMETER UpdateScope Limits updates to Patch, FeatureBand, or Major. The default is FeatureBand. .PARAMETER VersionBand Runs non-interactively and considers only installed SDKs matching one or more selectors: a major version (8), release channel (8.0), SDK feature band (8.0.4xx), or exact installed SDK version (8.0.424). .PARAMETER UpdateAll Runs non-interactively and installs every update found within UpdateScope. .PARAMETER IncludePreview Allows a stable SDK to update to a newer official preview or release candidate. This is not required when the installed SDK is already a prerelease. .PARAMETER InteractiveInstaller Shows the installer's full UI. Without this switch, installers run with /install /quiet /norestart. .EXAMPLE Update-DotNetSdk Interactively selects updates, staying within each installed release channel. .EXAMPLE Update-DotNetSdk -UpdateAll Installs every available feature-band update without selection prompts. .EXAMPLE Update-DotNetSdk -VersionBand 8.0.4xx, 9.0 -UpdateScope Patch Installs patch updates for matching installed SDK feature bands. .EXAMPLE Update-DotNetSdk -UpdateAll -UpdateScope Major -IncludePreview Allows stable SDKs to update to the newest official preview or stable SDK. .NOTES Only releases in Microsoft's official releases index are considered; daily builds are not supported. Visual Studio-owned SDKs and SDKs installed from archives or local repositories are not managed. #> [CmdletBinding( DefaultParameterSetName = 'Interactive', SupportsShouldProcess = $true, ConfirmImpact = 'Medium' )] param( [Alias('Scope')] [ValidateSet('Patch', 'FeatureBand', 'Major')] [string] $UpdateScope = 'FeatureBand', [Parameter(Mandatory = $true, ParameterSetName = 'VersionBands')] [Alias('VersionBands')] [ValidateNotNullOrEmpty()] [string[]] $VersionBand, [Parameter(Mandatory = $true, ParameterSetName = 'All')] [switch] $UpdateAll, [Alias('AllowPreview')] [switch] $IncludePreview, [switch] $InteractiveInstaller ) $originalSecurityProtocol = [Net.ServicePointManager]::SecurityProtocol try { [Net.ServicePointManager]::SecurityProtocol = $originalSecurityProtocol -bor [Net.SecurityProtocolType]::Tls12 $runningOnWindows = $env:OS -eq 'Windows_NT' if (-not $runningOnWindows) { throw 'This command updates SDKs installed by the official Windows EXE installer and can only run on Windows.' } if ($PSVersionTable.PSVersion -lt [version] '5.1') { throw 'PowerShell 5.1 or later is required.' } $installedSdks = @(Get-DotNetSdkBundleInventory) if ($installedSdks.Count -eq 0) { Write-Host 'No standalone .NET SDK installer registrations were found.' return } if ($PSCmdlet.ParameterSetName -eq 'VersionBands') { $normalizedVersionBands = @() foreach ($selectorValue in $VersionBand) { foreach ($selectorPart in $selectorValue.Split(',')) { if (-not [string]::IsNullOrWhiteSpace($selectorPart)) { $normalizedVersionBands += $selectorPart.Trim() } } } if ($normalizedVersionBands.Count -eq 0) { throw '-VersionBand must contain at least one version-band selector.' } Assert-VersionBandSelectors -Selectors $normalizedVersionBands $installedSdks = @(Select-InstallationsByVersionBand ` -Installations $installedSdks -Selectors $normalizedVersionBands) if ($installedSdks.Count -eq 0) { Write-Host "No installed .NET SDKs matched -VersionBand: $($normalizedVersionBands -join ', ')." return } } $releaseIndex = @(Get-ReleaseIndex) $candidates = @(Get-UpdateCandidates -InstalledSdks $installedSdks ` -ReleaseIndex $releaseIndex -Scope $UpdateScope -AllowPreview ([bool] $IncludePreview)) if ($candidates.Count -eq 0) { Write-Host "No eligible .NET SDK updates were found within $UpdateScope scope." return } $candidates = @(Sort-UpdateCandidates -Candidates $candidates) Show-AvailableUpdates -Candidates $candidates if ($PSCmdlet.ParameterSetName -eq 'Interactive') { $candidates = @(Select-UpdateCandidates -Candidates $candidates) if ($candidates.Count -eq 0) { Write-Host 'No SDK updates were selected.' return } if (-not (Confirm-SelectedUpdates -Count $candidates.Count)) { Write-Host 'Update cancelled.' return } } $targetVersions = @() foreach ($candidate in $candidates) { $targetVersions += "$($candidate.TargetVersion) ($($candidate.Rid))" } $targetDescription = $targetVersions -join ', ' if (-not $PSCmdlet.ShouldProcess( ".NET SDK version(s) $targetDescription", 'Download and install official SDK updates' )) { return } Invoke-DotNetInstallerPlan -Candidates $candidates ` -ShowInstallerUi ([bool] $InteractiveInstaller) } finally { [Net.ServicePointManager]::SecurityProtocol = $originalSecurityProtocol } } # SIG # Begin signature block # MII9JwYJKoZIhvcNAQcCoII9GDCCPRQCAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDpI7fyaSkXkUI6 # EA2Dv3q/xnlUtZIz2/pkoOaHWP7UkaCCIewwggXMMIIDtKADAgECAhBUmNLR1FsZ # lUgTecgRwIeZMA0GCSqGSIb3DQEBDAUAMHcxCzAJBgNVBAYTAlVTMR4wHAYDVQQK # ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jvc29mdCBJZGVu # dGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAy # MDAeFw0yMDA0MTYxODM2MTZaFw00NTA0MTYxODQ0NDBaMHcxCzAJBgNVBAYTAlVT # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jv # c29mdCBJZGVudGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRo # b3JpdHkgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALORKgeD # Bmf9np3gx8C3pOZCBH8Ppttf+9Va10Wg+3cL8IDzpm1aTXlT2KCGhFdFIMeiVPvH # or+Kx24186IVxC9O40qFlkkN/76Z2BT2vCcH7kKbK/ULkgbk/WkTZaiRcvKYhOuD # PQ7k13ESSCHLDe32R0m3m/nJxxe2hE//uKya13NnSYXjhr03QNAlhtTetcJtYmrV # qXi8LW9J+eVsFBT9FMfTZRY33stuvF4pjf1imxUs1gXmuYkyM6Nix9fWUmcIxC70 # ViueC4fM7Ke0pqrrBc0ZV6U6CwQnHJFnni1iLS8evtrAIMsEGcoz+4m+mOJyoHI1 # vnnhnINv5G0Xb5DzPQCGdTiO0OBJmrvb0/gwytVXiGhNctO/bX9x2P29Da6SZEi3 # W295JrXNm5UhhNHvDzI9e1eM80UHTHzgXhgONXaLbZ7LNnSrBfjgc10yVpRnlyUK # xjU9lJfnwUSLgP3B+PR0GeUw9gb7IVc+BhyLaxWGJ0l7gpPKWeh1R+g/OPTHU3mg # trTiXFHvvV84wRPmeAyVWi7FQFkozA8kwOy6CXcjmTimthzax7ogttc32H83rwjj # O3HbbnMbfZlysOSGM1l0tRYAe1BtxoYT2v3EOYI9JACaYNq6lMAFUSw0rFCZE4e7 # swWAsk0wAly4JoNdtGNz764jlU9gKL431VulAgMBAAGjVDBSMA4GA1UdDwEB/wQE # AwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIftJqhSobyhmYBAcnz1AQ # T2ioojAQBgkrBgEEAYI3FQEEAwIBADANBgkqhkiG9w0BAQwFAAOCAgEAr2rd5hnn # LZRDGU7L6VCVZKUDkQKL4jaAOxWiUsIWGbZqWl10QzD0m/9gdAmxIR6QFm3FJI9c # Zohj9E/MffISTEAQiwGf2qnIrvKVG8+dBetJPnSgaFvlVixlHIJ+U9pW2UYXeZJF # xBA2CFIpF8svpvJ+1Gkkih6PsHMNzBxKq7Kq7aeRYwFkIqgyuH4yKLNncy2RtNwx # AQv3Rwqm8ddK7VZgxCwIo3tAsLx0J1KH1r6I3TeKiW5niB31yV2g/rarOoDXGpc8 # FzYiQR6sTdWD5jw4vU8w6VSp07YEwzJ2YbuwGMUrGLPAgNW3lbBeUU0i/OxYqujY # lLSlLu2S3ucYfCFX3VVj979tzR/SpncocMfiWzpbCNJbTsgAlrPhgzavhgplXHT2 # 6ux6anSg8Evu75SjrFDyh+3XOjCDyft9V77l4/hByuVkrrOj7FjshZrM77nq81YY # uVxzmq/FdxeDWds3GhhyVKVB0rYjdaNDmuV3fJZ5t0GNv+zcgKCf0Xd1WF81E+Al # GmcLfc4l+gcK5GEh2NQc5QfGNpn0ltDGFf5Ozdeui53bFv0ExpK91IjmqaOqu/dk # ODtfzAzQNb50GQOmxapMomE2gj4d8yu8l13bS3g7LfU772Aj6PXsCyM2la+YZr9T # 03u4aUoqlmZpxJTG9F9urJh4iIAGXKKy7aIwggajMIIEi6ADAgECAhMzAAXqputR # 09VeyKgIAAAABeqmMA0GCSqGSIb3DQEBDAUAMFoxCzAJBgNVBAYTAlVTMR4wHAYD # VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJ # RCBWZXJpZmllZCBDUyBFT0MgQ0EgMDMwHhcNMjYwOTExMDc1MTUyWhcNMjYwOTE0 # MDc1MTUyWjBnMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjERMA8G # A1UEBxMISXNzYXF1YWgxFzAVBgNVBAoTDkRhbWlhbiBFZHdhcmRzMRcwFQYDVQQD # Ew5EYW1pYW4gRWR3YXJkczCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGB # ALeWYSi+ijB+0AAxCKCLGfewFg3rfmQQu86KqkhU9JldpGt2t0UYmaNS7OgfEOsf # s9vc6Uf5OPNBQaaHsB9wDikmV7Fi4LtgdZlnJ/5S7CKFZSyxG0jCbSOfkYyFXhxp # hR65f1g/5g+TX1vXAJDh2na6ZTpjgNx1AlpUvNjqY76ISdW46Bc7gdkY5AW0pgt7 # 6WsTJODKSA/5dWOcjTnygaqA+TsadMSDIybP5k0MIc2l9CJz3xQMEaMioPpP441u # Dn1sevP9nntDB7yvN20aIzWCeseXbjaojN3SJtu9GQ5BMRuvmiIAJbFA43/2kCpJ # TtIqErI/5shFjowbQ1saOGoL0Qgs0cojzr4sZjj7AZ4/7NKJ5Bt81W8NT/M44fep # 8cdDhAsVIIa03LEOQf5a1RsV3iuO8PU1oM19wl8qFa8shJHHjwQo9nB6y9eBZufB # zY0TrzxttQU2csiqwc6Z7GEFbMs1iEWU4G9T7Rzmnt/fBTCRRpalrnN9O9+pj2v5 # 3QIDAQABo4IB0zCCAc8wDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwOgYD # VR0lBDMwMQYKKwYBBAGCN2EBAAYIKwYBBQUHAwMGGSsGAQQBgjdh8PiHLKGwwBPl # htEVg5ShoiEwHQYDVR0OBBYEFIvUho9MMDRBmqIyY+0vyblyNHrEMB8GA1UdIwQY # MBaAFGtepTTDBcViSiFajqtzYGLUrGOFMGcGA1UdHwRgMF4wXKBaoFiGVmh0dHA6 # Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMElEJTIw # VmVyaWZpZWQlMjBDUyUyMEVPQyUyMENBJTIwMDMuY3JsMHQGCCsGAQUFBwEBBGgw # ZjBkBggrBgEFBQcwAoZYaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9j # ZXJ0cy9NaWNyb3NvZnQlMjBJRCUyMFZlcmlmaWVkJTIwQ1MlMjBFT0MlMjBDQSUy # MDAzLmNydDBUBgNVHSAETTBLMEkGBFUdIAAwQTA/BggrBgEFBQcCARYzaHR0cDov # L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMA0G # CSqGSIb3DQEBDAUAA4ICAQBZp2EM9/KFEj3OHOKf3Wfr9O6QnqzleZCA3kQHhbe/ # 6JkSyqrbJjU3W9CibqFAOpUplhIS2JF7Lv4Zqpl/BT83XTru5CVhoe5BqtP7Rjci # 2OSm4pB2nKNIN7okWThz1AxRQJoyZA4iVykzFF8QNmZGo5d4nWWaU2amdk0h+W7a # 3kU+XRD8fPMLrXFJL1Kr9qwIDq/6jh5vR2xFWCKNdzPwupD4gdvpGbF7CV/GWW3B # u/kQmy2TDIv7/0gctNEg9NnG8XrYVYxBdPmwnqTAEdIf5fnx2e5KKyrvqXHA8hj/ # 7/i6cJMDFvPCsIAQHT/XWISyTWr6+zkSriXBClAs4Cx+EawmzETk+N9Ew1HCMLC7 # x9ICMa5P4XZ3kKDSZdNielDL9qdnvIbHL3eAb9UvmGVhilvAcUjBTRD4V4Rp2gYz # u/x/+f/gxtGy5g/cP7+ILfs/7G6Dl+8xL3NtxaLPdIjnDCKx+SbLNXV8FSKZ82C2 # qPT8zD2DQvQMcD5YFf8pbKNFukl6i5uhHY2KDD/cs6EFrYknkRMGpc7zKH+bvEBh # ZS3dkpfnoOwDRgZboxBiYTyfylXo1s+LBiwyDF/Uwq2PJTrAWsxJSh7RgVx3IVN0 # BHA2FxVMOoD6CwUUhugyklQI6/NnSI646O82mT1F6kzaNlxJzj8YsenuToDc3PVQ # JTCCBqMwggSLoAMCAQICEzMABeqm61HT1V7IqAgAAAAF6qYwDQYJKoZIhvcNAQEM # BQAwWjELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv # bjErMCkGA1UEAxMiTWljcm9zb2Z0IElEIFZlcmlmaWVkIENTIEVPQyBDQSAwMzAe # Fw0yNjA5MTEwNzUxNTJaFw0yNjA5MTQwNzUxNTJaMGcxCzAJBgNVBAYTAlVTMRMw # EQYDVQQIEwpXYXNoaW5ndG9uMREwDwYDVQQHEwhJc3NhcXVhaDEXMBUGA1UEChMO # RGFtaWFuIEVkd2FyZHMxFzAVBgNVBAMTDkRhbWlhbiBFZHdhcmRzMIIBojANBgkq # hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAt5ZhKL6KMH7QADEIoIsZ97AWDet+ZBC7 # zoqqSFT0mV2ka3a3RRiZo1Ls6B8Q6x+z29zpR/k480FBpoewH3AOKSZXsWLgu2B1 # mWcn/lLsIoVlLLEbSMJtI5+RjIVeHGmFHrl/WD/mD5NfW9cAkOHadrplOmOA3HUC # WlS82OpjvohJ1bjoFzuB2RjkBbSmC3vpaxMk4MpID/l1Y5yNOfKBqoD5Oxp0xIMj # Js/mTQwhzaX0InPfFAwRoyKg+k/jjW4OfWx68/2ee0MHvK83bRojNYJ6x5duNqiM # 3dIm270ZDkExG6+aIgAlsUDjf/aQKklO0ioSsj/myEWOjBtDWxo4agvRCCzRyiPO # vixmOPsBnj/s0onkG3zVbw1P8zjh96nxx0OECxUghrTcsQ5B/lrVGxXeK47w9TWg # zX3CXyoVryyEkcePBCj2cHrL14Fm58HNjROvPG21BTZyyKrBzpnsYQVsyzWIRZTg # b1PtHOae398FMJFGlqWuc30736mPa/ndAgMBAAGjggHTMIIBzzAMBgNVHRMBAf8E # AjAAMA4GA1UdDwEB/wQEAwIHgDA6BgNVHSUEMzAxBgorBgEEAYI3YQEABggrBgEF # BQcDAwYZKwYBBAGCN2Hw+IcsobDAE+WG0RWDlKGiITAdBgNVHQ4EFgQUi9SGj0ww # NEGaojJj7S/JuXI0esQwHwYDVR0jBBgwFoAUa16lNMMFxWJKIVqOq3NgYtSsY4Uw # ZwYDVR0fBGAwXjBcoFqgWIZWaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9w # cy9jcmwvTWljcm9zb2Z0JTIwSUQlMjBWZXJpZmllZCUyMENTJTIwRU9DJTIwQ0El # MjAwMy5jcmwwdAYIKwYBBQUHAQEEaDBmMGQGCCsGAQUFBzAChlhodHRwOi8vd3d3 # Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMElEJTIwVmVy # aWZpZWQlMjBDUyUyMEVPQyUyMENBJTIwMDMuY3J0MFQGA1UdIARNMEswSQYEVR0g # ADBBMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3Bz # L0RvY3MvUmVwb3NpdG9yeS5odG0wDQYJKoZIhvcNAQEMBQADggIBAFmnYQz38oUS # Pc4c4p/dZ+v07pCerOV5kIDeRAeFt7/omRLKqtsmNTdb0KJuoUA6lSmWEhLYkXsu # /hmqmX8FPzddOu7kJWGh7kGq0/tGNyLY5KbikHaco0g3uiRZOHPUDFFAmjJkDiJX # KTMUXxA2Zkajl3idZZpTZqZ2TSH5btreRT5dEPx88wutcUkvUqv2rAgOr/qOHm9H # bEVYIo13M/C6kPiB2+kZsXsJX8ZZbcG7+RCbLZMMi/v/SBy00SD02cbxethVjEF0 # +bCepMAR0h/l+fHZ7korKu+pccDyGP/v+LpwkwMW88KwgBAdP9dYhLJNavr7ORKu # JcEKUCzgLH4RrCbMROT430TDUcIwsLvH0gIxrk/hdneQoNJl02J6UMv2p2e8hscv # d4Bv1S+YZWGKW8BxSMFNEPhXhGnaBjO7/H/5/+DG0bLmD9w/v4gt+z/sboOX7zEv # c23Fos90iOcMIrH5Jss1dXwVIpnzYLao9PzMPYNC9AxwPlgV/ylso0W6SXqLm6Ed # jYoMP9yzoQWtiSeREwalzvMof5u8QGFlLd2Sl+eg7ANGBlujEGJhPJ/KVejWz4sG # LDIMX9TCrY8lOsBazElKHtGBXHchU3QEcDYXFUw6gPoLBRSG6DKSVAjr82dIjrjo # 7zaZPUXqTNo2XEnOPxix6e5OgNzc9VAlMIIHKDCCBRCgAwIBAgITMwAAABUFPm4Z # jpMp2QAAAAAAFTANBgkqhkiG9w0BAQwFADBjMQswCQYDVQQGEwJVUzEeMBwGA1UE # ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTQwMgYDVQQDEytNaWNyb3NvZnQgSUQg # VmVyaWZpZWQgQ29kZSBTaWduaW5nIFBDQSAyMDIxMB4XDTI2MDMyNjE4MTEyOFoX # DTMxMDMyNjE4MTEyOFowWjELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29m # dCBDb3Jwb3JhdGlvbjErMCkGA1UEAxMiTWljcm9zb2Z0IElEIFZlcmlmaWVkIENT # IEVPQyBDQSAwMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOD0yz0C # qi8Ocx4+8w574rJuEJ3z6WiTNg5GVLeQFVex55xvIbAFyx6eWblsu0wY+OIgUvMF # AX6CGVVX9Tb2rkZx14QQEIdNMaEvaSgistzhSuWIxFxu/2Y4y1H+Xv/ECa/QXHgE # kefV0e3ft++sGpeYqMp8Z/kOnI7/6GdXtMSt4y1LX2I75uNn/0eemDc8KTR7thJt # FMWTH3sVnBFakLizc16lF9FdCH9YwCPsmaxh5VmiGLhMXnJbYkyslmrAdzLMlli0 # PYeWejlkQmR2JlwRrEc6hubA7TpnUn1zbemz08YiEZqrWwosQDP0OhzmsuRhYa14 # OuxwqECnaQhz+hiUf0iPoGQ6qqBYg0SQS0Lxk0bUxqT6HejrlqPSJAqZ3Fbshloc # 7ly7KgyL4q1h9d4giDexUhtLYQvyRS2wMZ0So2oCr+KypOLWNeot7qIqnWeLVI92 # 89b0bTcJOxgXrxv/K4hBHBt2gEJd6Yw0kJLR2isJFjhvZYADLieDtIA1wSCsGBl/ # nfn5B8tTmEbOsqMilsxptq5ZvkUpZQqQyw9xcWRdFY7iego+bgpaUXKmo6lsn8o4 # 1VF4iXEdBF6AA4HMiFEHuCv0gNDWxzYyA6BD7FUZbiirgcPSZ8CLCLIuyRmuRpDs # mhqdiME1xH1FLbpjEBVtwG0uK0VPMIgSDll1AgMBAAGjggHcMIIB2DAOBgNVHQ8B # Af8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFGtepTTDBcViSiFa # jqtzYGLUrGOFMFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIBFjNodHRw # Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0w # GQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwEgYDVR0TAQH/BAgwBgEB/wIBADAf # BgNVHSMEGDAWgBTZQSmwDw9jbO9p1/XNKZ6kSGow5jBwBgNVHR8EaTBnMGWgY6Bh # hl9odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQl # MjBJRCUyMFZlcmlmaWVkJTIwQ29kZSUyMFNpZ25pbmclMjBQQ0ElMjAyMDIxLmNy # bDB9BggrBgEFBQcBAQRxMG8wbQYIKwYBBQUHMAKGYWh0dHA6Ly93d3cubWljcm9z # b2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwSUQlMjBWZXJpZmllZCUy # MENvZGUlMjBTaWduaW5nJTIwUENBJTIwMjAyMS5jcnQwDQYJKoZIhvcNAQEMBQAD # ggIBAF1uIjzPBctfyCUkSH/xDbZQwJSFYE7jpn0U+HA5HeZ2WpFUuRg6if8xzNTC # uMOHHdf31I8fk9J+WQahO+c71lYczlgVVik7s1i4H6Z9VIYAZnCIY4BJaTSLYHu+ # f2cSUkmaiJfG6B8flh0GytSBO3QAU1eTOapOCT5LUfFvW7/QcKoQdVk+TYD/p4ld # hu2lEzkVzPTSOKxSX0FFmBJ5s4NXzlsHM696rILd/Q+ccLFEk2ExvzE/+wH9Ujul # /auF5JXvOpRK/y+f98gxuVd5pUiWmqirxI/0EkyMT8KhVcnGeRlBEzUVruQ33LO2 # 9F46HFKA+ClnH9eX+OTDIQVUlMF8GnexOB8hz+maq/Z6G1qQvYASPvwSY49CiHEl # PfDJf4/vwYDbm0ukC/OPdEwwd3zPXxm65WL7rQwDMak4BIfUvw2Wvd9lFmdA76nL # J7YMK9iYdoh91SBgmqfuejHEZW/z35FoROHW2AIO/A2kUJIbu+XkDhqSj7Z/HjT2 # v1NaNcLs6J/UhDlknMHhF/wa8GIdiO8yYemV52nUUZEt1JEVWkLf84qlljpq8ipm # nv7yk/9ZA/3TcN2Cu8BPpbjE84HFc9ri0aSw3dK6olqIVgdI3J4G5+fyKx66Nbgh # sFJscPgE+psXepn7ucb13938bb8vHiQf1wKYF+axl1KQea6QMIIHnjCCBYagAwIB # AgITMwAAAAeHozSje6WOHAAAAAAABzANBgkqhkiG9w0BAQwFADB3MQswCQYDVQQG # EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMUgwRgYDVQQDEz9N # aWNyb3NvZnQgSWRlbnRpdHkgVmVyaWZpY2F0aW9uIFJvb3QgQ2VydGlmaWNhdGUg # QXV0aG9yaXR5IDIwMjAwHhcNMjEwNDAxMjAwNTIwWhcNMzYwNDAxMjAxNTIwWjBj # MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTQw # MgYDVQQDEytNaWNyb3NvZnQgSUQgVmVyaWZpZWQgQ29kZSBTaWduaW5nIFBDQSAy # MDIxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsvDArxmIKOLdVHpM # SWxpCFUJtFL/ekr4weslKPdnF3cpTeuV8veqtmKVgok2rO0D05BpyvUDCg1wdsoE # tuxACEGcgHfjPF/nZsOkg7c0mV8hpMT/GvB4uhDvWXMIeQPsDgCzUGzTvoi76YDp # xDOxhgf8JuXWJzBDoLrmtThX01CE1TCCvH2sZD/+Hz3RDwl2MsvDSdX5rJDYVuR3 # bjaj2QfzZFmwfccTKqMAHlrz4B7ac8g9zyxlTpkTuJGtFnLBGasoOnn5NyYlf0xF # 9/bjVRo4Gzg2Yc7KR7yhTVNiuTGH5h4eB9ajm1OCShIyhrKqgOkc4smz6obxO+Hx # KeJ9bYmPf6KLXVNLz8UaeARo0BatvJ82sLr2gqlFBdj1sYfqOf00Qm/3B4XGFPDK # /H04kteZEZsBRc3VT2d/iVd7OTLpSH9yCORV3oIZQB/Qr4nD4YT/lWkhVtw2v2s0 # TnRJubL/hFMIQa86rcaGMhNsJrhysLNNMeBhiMezU1s5zpusf54qlYu2v5sZ5zL0 # KvBDLHtL8F9gn6jOy3v7Jm0bbBHjrW5yQW7S36ALAt03QDpwW1JG1Hxu/FUXJbBO # 2AwwVG4Fre+ZQ5Od8ouwt59FpBxVOBGfN4vN2m3fZx1gqn52GvaiBz6ozorgIEjn # +PhUXILhAV5Q/ZgCJ0u2+ldFGjcCAwEAAaOCAjUwggIxMA4GA1UdDwEB/wQEAwIB # hjAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQU2UEpsA8PY2zvadf1zSmepEhq # MOYwVAYDVR0gBE0wSzBJBgRVHSAAMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cu # bWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTAZBgkrBgEE # AYI3FAIEDB4KAFMAdQBiAEMAQTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaA # FMh+0mqFKhvKGZgEByfPUBBPaKiiMIGEBgNVHR8EfTB7MHmgd6B1hnNodHRwOi8v # d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQlMjBJZGVudGl0 # eSUyMFZlcmlmaWNhdGlvbiUyMFJvb3QlMjBDZXJ0aWZpY2F0ZSUyMEF1dGhvcml0 # eSUyMDIwMjAuY3JsMIHDBggrBgEFBQcBAQSBtjCBszCBgQYIKwYBBQUHMAKGdWh0 # dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIw # SWRlbnRpdHklMjBWZXJpZmljYXRpb24lMjBSb290JTIwQ2VydGlmaWNhdGUlMjBB # dXRob3JpdHklMjAyMDIwLmNydDAtBggrBgEFBQcwAYYhaHR0cDovL29uZW9jc3Au # bWljcm9zb2Z0LmNvbS9vY3NwMA0GCSqGSIb3DQEBDAUAA4ICAQB/JSqe/tSr6t1m # CttXI0y6XmyQ41uGWzl9xw+WYhvOL47BV09Dgfnm/tU4ieeZ7NAR5bguorTCNr58 # HOcA1tcsHQqt0wJsdClsu8bpQD9e/al+lUgTUJEV80Xhco7xdgRrehbyhUf4pkeA # hBEjABvIUpD2LKPho5Z4DPCT5/0TlK02nlPwUbv9URREhVYCtsDM+31OFU3fDV8B # mQXv5hT2RurVsJHZgP4y26dJDVF+3pcbtvh7R6NEDuYHYihfmE2HdQRq5jRvLE1E # b59PYwISFCX2DaLZ+zpU4bX0I16ntKq4poGOFaaKtjIA1vRElItaOKcwtc04CBrX # SfyL2Op6mvNIxTk4OaswIkTXbFL81ZKGD+24uMCwo/pLNhn7VHLfnxlMVzHQVL+b # Ha9KhTyzwdG/L6uderJQn0cGpLQMStUuNDArxW2wF16QGZ1NtBWgKA8Kqv48M8Hf # FqNifN6+zt6J0GwzvU8g0rYGgTZR8zDEIJfeZxwWDHpSxB5FJ1VVU1LIAtB7o9PX # bjXzGifaIMYTzU4YKt4vMNwwBmetQDHhdAtTPplOXrnI9SI6HeTtjDD3iUN/7ygb # ahmYOHk7VB7fwT4ze+ErCbMh6gHV1UuXPiLciloNxH6K4aMfZN1oLVk6YFeIJEok # uPgNPa6EnTiOL60cPqfny+Fq8UiuZzGCGpEwghqNAgEBMHEwWjELMAkGA1UEBhMC # VVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjErMCkGA1UEAxMiTWlj # cm9zb2Z0IElEIFZlcmlmaWVkIENTIEVPQyBDQSAwMwITMwAF6qbrUdPVXsioCAAA # AAXqpjANBglghkgBZQMEAgEFAKBeMBAGCisGAQQBgjcCAQwxAjAAMBkGCSqGSIb3 # DQEJAzEMBgorBgEEAYI3AgEEMC8GCSqGSIb3DQEJBDEiBCBrJRcGd97AFxqNfNOt # hLDG75ogHS6eJFtQ64ExkHxFHzANBgkqhkiG9w0BAQEFAASCAYCkJJoXGlp+EKYy # aSHSmCHd/ZTHLAtVBFjlJXrQh6ADiAr+ES+zbVBRkMkcIla9U0Na1F0jBwHkaGEZ # wHabW3elGMRWLROjc0NPY63Hp3BOfxiAIzdUfa07TI1X5yDdULLdcn0KR3AP3P18 # +SiSNz7NeKul16x3MOl7mTn9FZS9zRz49MRuEN+tfb8wJN4Eq1jOIyGr6pKimK9Q # SB/aCUNw0jzJVvv4bahUXqVZIkPRtj4E5sWgS5VVLq+cNTPemFppwqKKOZ7pWmf1 # nMsSAOVkqMzUyUyW+HbviQlaSgNtG6Z2q2lLENPOaWr6e45ZrAUdblGWv2pvTHn5 # XOO1p5Gf7KmnJlu8YxK/GGSig4xne7JYP6yO+3XzAJisJDBLcUp6RJFKZhQ7O+eO # BbCuAQNt471Zn0h3xbnddTZ9Z7g/oHc/iCtrnZRBgDUED3qM3f5T5c5Mf9ydo6Mr # XSsifBGst+CfOCri6Pw+PBGuhfn8wUhjfj+9Unsid+ezdC8syM6hghgRMIIYDQYK # KwYBBAGCNwMDATGCF/0wghf5BgkqhkiG9w0BBwKgghfqMIIX5gIBAzEPMA0GCWCG # SAFlAwQCAQUAMIIBYgYLKoZIhvcNAQkQAQSgggFRBIIBTTCCAUkCAQEGCisGAQQB # hFkKAwEwMTANBglghkgBZQMEAgEFAAQg+lqny81pS3WMIhJ3BGYlxppoY+T7j4xl # Cm2ZcX+wnCQCBmqkED1t0BgTMjAyNjA5MTMwNTMzNTguMDg5WjAEgAIB9KCB4aSB # 3jCB2zELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT # B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UE # CxMcTWljcm9zb2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UECxMeblNoaWVs # ZCBUU1MgRVNOOjdBMDAtMDVFMC1EOTQ3MTUwMwYDVQQDEyxNaWNyb3NvZnQgUHVi # bGljIFJTQSBUaW1lIFN0YW1waW5nIEF1dGhvcml0eaCCDyEwggeCMIIFaqADAgEC # AhMzAAAABeXPD/9mLsmHAAAAAAAFMA0GCSqGSIb3DQEBDAUAMHcxCzAJBgNVBAYT # AlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01p # Y3Jvc29mdCBJZGVudGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBB # dXRob3JpdHkgMjAyMDAeFw0yMDExMTkyMDMyMzFaFw0zNTExMTkyMDQyMzFaMGEx # CzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAw # BgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIw # MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnnznUmP94MWfBX1jtQYi # oxwe1+eXM9ETBb1lRkd3kcFdcG9/sqtDlwxKoVIcaqDb+omFio5DHC4RBcbyQHjX # CwMk/l3TOYtgoBjxnG/eViS4sOx8y4gSq8Zg49REAf5huXhIkQRKe3Qxs8Sgp02K # HAznEa/Ssah8nWo5hJM1xznkRsFPu6rfDHeZeG1Wa1wISvlkpOQooTULFm809Z0Z # YlQ8Lp7i5F9YciFlyAKwn6yjN/kR4fkquUWfGmMopNq/B8U/pdoZkZZQbxNlqJOi # BGgCWpx69uKqKhTPVi3gVErnc/qi+dR8A2MiAz0kN0nh7SqINGbmw5OIRC0EsZ31 # WF3Uxp3GgZwetEKxLms73KG/Z+MkeuaVDQQheangOEMGJ4pQZH55ngI0Tdy1bi69 # INBV5Kn2HVJo9XxRYR/JPGAaM6xGl57Ei95HUw9NV/uC3yFjrhc087qLJQawSC3x # zY/EXzsT4I7sDbxOmM2rl4uKK6eEpurRduOQ2hTkmG1hSuWYBunFGNv21Kt4N20A # KmbeuSnGnsBCd2cjRKG79+TX+sTehawOoxfeOO/jR7wo3liwkGdzPJYHgnJ54Uxb # ckF914AqHOiEV7xTnD1a69w/UTxwjEugpIPMIIE67SFZ2PMo27xjlLAHWW3l1CEA # FjLNHd3EQ79PUr8FUXetXr0CAwEAAaOCAhswggIXMA4GA1UdDwEB/wQEAwIBhjAQ # BgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQUa2koOjUvSGNAz3vYr0npPtk92yEw # VAYDVR0gBE0wSzBJBgRVHSAAMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWlj # cm9zb2Z0LmNvbS9wa2lvcHMvRG9jcy9SZXBvc2l0b3J5Lmh0bTATBgNVHSUEDDAK # BggrBgEFBQcDCDAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAPBgNVHRMBAf8E # BTADAQH/MB8GA1UdIwQYMBaAFMh+0mqFKhvKGZgEByfPUBBPaKiiMIGEBgNVHR8E # fTB7MHmgd6B1hnNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9N # aWNyb3NvZnQlMjBJZGVudGl0eSUyMFZlcmlmaWNhdGlvbiUyMFJvb3QlMjBDZXJ0 # aWZpY2F0ZSUyMEF1dGhvcml0eSUyMDIwMjAuY3JsMIGUBggrBgEFBQcBAQSBhzCB # hDCBgQYIKwYBBQUHMAKGdWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMv # Y2VydHMvTWljcm9zb2Z0JTIwSWRlbnRpdHklMjBWZXJpZmljYXRpb24lMjBSb290 # JTIwQ2VydGlmaWNhdGUlMjBBdXRob3JpdHklMjAyMDIwLmNydDANBgkqhkiG9w0B # AQwFAAOCAgEAX4h2x35ttVoVdedMeGj6TuHYRJklFaW4sTQ5r+k77iB79cSLNe+G # zRjv4pVjJviceW6AF6ycWoEYR0LYhaa0ozJLU5Yi+LCmcrdovkl53DNt4EXs87KD # ogYb9eGEndSpZ5ZM74LNvVzY0/nPISHz0Xva71QjD4h+8z2XMOZzY7YQ0Psw+ety # NZ1CesufU211rLslLKsO8F2aBs2cIo1k+aHOhrw9xw6JCWONNboZ497mwYW5EfN0 # W3zL5s3ad4Xtm7yFM7Ujrhc0aqy3xL7D5FR2J7x9cLWMq7eb0oYioXhqV2tgFqbK # HeDick+P8tHYIFovIP7YG4ZkJWag1H91KlELGWi3SLv10o4KGag42pswjybTi4to # QcC/irAodDW8HNtX+cbz0sMptFJK+KObAnDFHEsukxD+7jFfEV9Hh/+CSxKRsmnu # iovCWIOb+H7DRon9TlxydiFhvu88o0w35JkNbJxTk4MhF/KgaXn0GxdH8elEa2Im # q45gaa8D+mTm8LWVydt4ytxYP/bqjN49D9NZ81coE6aQWm88TwIf4R4YZbOpMKN0 # CyejaPNN41LGXHeCUMYmBx3PkP8ADHD1J2Cr/6tjuOOCztfp+o9Nc+ZoIAkpUcA/ # X2gSMkgHAPUvIdtoSAHEUKiBhI6JQivRepyvWcl+JYbYbBh7pmgAXVswggeXMIIF # f6ADAgECAhMzAAAAWGXN6z+h1/zSAAAAAABYMA0GCSqGSIb3DQEBDAUAMGExCzAJ # BgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNV # BAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwMB4X # DTI1MTAyMzIwNDY1NVoXDTI2MTAyMjIwNDY1NVowgdsxCzAJBgNVBAYTAlVTMRMw # EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN # aWNyb3NvZnQgQ29ycG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNh # IE9wZXJhdGlvbnMxJzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjo3QTAwLTA1RTAt # RDk0NzE1MDMGA1UEAxMsTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZSBTdGFtcGlu # ZyBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCdeDSk # dpDs9UCWWf4dlmskVwugpt6SFbXIv5A0FSAUVSyNkgpqqo3iggmwkzemzSsk1I7u # d0I1G5kNfZaC6vcCTvt5euWgFepmY7plVd4M1EIuV1bgDT81+PMntdeR0SGOvzWC # FcSlHvML7Bto036w9LHMsBkF6JsMU/tfCznBfRm0iw3Vrb5erlu9aneREzK3CyRO # O6dGB4tkv+0GnbfslV1E8UBD2NhEqkKpQGj+/XGMEtEJXc9qUqOcZ9vcw3hTuNXK # qJ8UdKFydbkIRFGgGZRrqzKAPMVKvx7eD3dM80sVSK9QTQaYt9tflx4PUa3UVxnr # H8ktUBPOTn4FYdszHAkhWRU9OpJIyNDopMp1yerekfRzgAUmn+CW9ymrRT1/NkiM # kYa92mKyGVGXvtFC1SFKPEe8KfcsL/GpBDA4dJAOwaHo1fYPRF+xLIS1MAHIBp77 # bDUcHJMNNyaVM0sS5At4KPWA0F0haPRY5jIO2OND/yJNZjp7LW9v2oeWMiPkeAid # 1Pk/0xiTZWDZ7uEpRk0E1sD+GyAGy6hn4hfz1a+MQ31psX3VLg4lW6KeYqws78wt # ueXuKS4PR03qgDRh7DINCdyzXawz0c627vZAD9NmV5+9byv3G0xcBihCVwaOyTxb # hRztx+pWpsg+N2hzxnEHMtxdxXI/inlzIvC+QwIDAQABo4IByzCCAccwHQYDVR0O # BBYEFHKNTcV6vhXFcn6GM9xEmfGdEgmwMB8GA1UdIwQYMBaAFGtpKDo1L0hjQM97 # 2K9J6T7ZPdshMGwGA1UdHwRlMGMwYaBfoF2GW2h0dHA6Ly93d3cubWljcm9zb2Z0 # LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUyMFB1YmxpYyUyMFJTQSUyMFRpbWVz # dGFtcGluZyUyMENBJTIwMjAyMC5jcmwweQYIKwYBBQUHAQEEbTBrMGkGCCsGAQUF # BzAChl1odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jv # c29mdCUyMFB1YmxpYyUyMFJTQSUyMFRpbWVzdGFtcGluZyUyMENBJTIwMjAyMC5j # cnQwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAOBgNVHQ8B # Af8EBAMCB4AwZgYDVR0gBF8wXTBRBgwrBgEEAYI3TIN9AQEwQTA/BggrBgEFBQcC # ARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRv # cnkuaHRtMAgGBmeBDAEEAjANBgkqhkiG9w0BAQwFAAOCAgEAe+vEiJUXWIdxe/Gs # lMIPx461s9Rsr3H4vPvSJh6GH4bRSg4xwx/ThAPq1A9N5nkeEYRORyfStoMnk2l9 # tEG4oQffWvFtkr3ujXYpEM0nc27h49pQikf9NxbPw8tU4IQLLBLFsSAQbbSTLJ0Z # zjpzn3W1fOl+QkNySOhivKlp6t15AtFAf0tqhNhl90DMyj4PLQ7UPMUmQXlieyYA # zyW32vU21d0WN1sUwJtXl1q7riZXbazXzoDxSaL6Xbf35R7RxslAjKRaEiWGFaHF # CCiSyofPuSnYYVkAB7JJOYg5A5bJc4DwkDxMhInKfckM6BK2/nzc/dXRBIAtPolc # MJbboVXbTxUYkzOS/RLbaI5Nkn+hqZOmTxHMPyhZPyl9t7Wr+T9vE+JdhFvOmz3p # rlg6SjufRV2jrUM4mEv+aGTTVjfjyCrq+Eb9VNx0YeHWsKTA4zTkHfkBlmr0C0+l # 9HMmKesfPMZHH6vp8Pdxxgw8wxf83B3aKvOumHXvZ9BxJ/V8zC/AiGZ8fgZYkn6Z # /UcDq5egA5UHJySC5e+WPyA+LtPYRLpFTz5Cyx+pM1MkqOwGF5Ypa/ZbgRJV6fYv # uULPuLv0WED7SSnTJcmdjB3NZLSi9Mg1Qsg2bNXIxxJSbla5V/xhnfdwC53Y6mvo # 3X5G4tkNq8O+OJ6GUjl0f4YTLnoxggdDMIIHPwIBATB4MGExCzAJBgNVBAYTAlVT # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jv # c29mdCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwAhMzAAAAWGXN6z+h # 1/zSAAAAAABYMA0GCWCGSAFlAwQCAQUAoIIEnDARBgsqhkiG9w0BCRACDzECBQAw # GgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yNjA5 # MTMwNTMzNThaMC8GCSqGSIb3DQEJBDEiBCChmCC00OdeVc3YMxdsm/ElziZSYmp/ # eLZIcsDOtfNnKzCBuQYLKoZIhvcNAQkQAi8xgakwgaYwgaMwgaAEIMUiVLuyB9D7 # ACjVxZtbP5Y3r1UF2znyFutqf3X1ouhxMHwwZaRjMGExCzAJBgNVBAYTAlVTMR4w # HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29m # dCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwAhMzAAAAWGXN6z+h1/zS # AAAAAABYMIIDXgYLKoZIhvcNAQkQAhIxggNNMIIDSaGCA0UwggNBMIICKQIBATCC # AQmhgeGkgd4wgdsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw # DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x # JTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlvbnMxJzAlBgNVBAsT # Hm5TaGllbGQgVFNTIEVTTjo3QTAwLTA1RTAtRDk0NzE1MDMGA1UEAxMsTWljcm9z # b2Z0IFB1YmxpYyBSU0EgVGltZSBTdGFtcGluZyBBdXRob3JpdHmiIwoBATAHBgUr # DgMCGgMVAJ1keRvbp6twXY7ra8J1lR9RK8RcoGcwZaRjMGExCzAJBgNVBAYTAlVT # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jv # c29mdCBQdWJsaWMgUlNBIFRpbWVzdGFtcGluZyBDQSAyMDIwMA0GCSqGSIb3DQEB # CwUAAgUA7lCJATAiGA8yMDI2MDkxMzAyMjkyMVoYDzIwMjYwOTE0MDIyOTIxWjB0 # MDoGCisGAQQBhFkKBAExLDAqMAoCBQDuUIkBAgEAMAcCAQACAgOcMAcCAQACAg0p # MAoCBQDuUdqBAgEAMDYGCisGAQQBhFkKBAIxKDAmMAwGCisGAQQBhFkKAwKgCjAI # AgEAAgMHoSChCjAIAgEAAgMBhqAwDQYJKoZIhvcNAQELBQADggEBABlAp6S9aYyn # PIH5IfkcatIPT5rxspe6DaPO7KYwLYEI4DBUFqNDmlRhK4kXYbYqPRx3IIIXgrY4 # uJIcA98wGZBeYB9j4F6rotfFk5lXTAtf2Grp4TBXX1C6xDD6AU3fyfsjqvfL9NB0 # 3peT0VHN2Mn3BvOTeODw5V9FRUGc3aJqrIGX3GcXV7LMXm1uY+hJzerHc1hQL545 # i7TjNnSTUd8cAawUlhS4EXepLB9/zn1VUFqpkppAZEaOOc4OBDQ+FHLakfERMacP # 2w3c9pwEkB84Vw3xPtuwPsh0CTFEPW+6J7HtpU+nfD7CxWBwvFNkaAkfVVHUGTLi # WXfItTQsAkswDQYJKoZIhvcNAQEBBQAEggIAekUO+YhSlDGirYRvyN50TmpLaq0v # aTEE0jZSqu9/kI2rJ7QZnobxZvYaP1PBzEbqeD8NvzAFPD3Fv626qUAVkbgDz2Aa # Y0gDDI6SULfusLR14h2AcjeNkeo0RDDBtGvf8iheEdxC08V6eM3yWd2VsFoFV54X # jzsABtzqsAsV/3N4Dvc1RqF2a5ItL81JjYiRfffVIsnX4InqmHoHTt9F9/hImbEY # cG7zyLkJhZIotps+GaPLotyg1eVYAkBqGMVJri4+pLLJjp3Jg7pkDV8OX1Yy13iC # TKq3utNRtHcaPhG216XptpvFFjLbfVdqDoCrrasyswX1xUnTiwOrTYQrYoDX+2Qo # XAiTMlcJNzKSfbZAVBsMhduXejeGRfRr1VW/jvMhZ4MZL64oB+DdgFhnLOPOSlDK # qSRCJeG9a/nfM1EqEnAQKIajU2Y8jBlkiCaa1KaNOi/hCwBDxEiNNkm8SAeWJMZ+ # p4Qd3uJQZtoyo4FM2kf8A1vchbtQ7EOSuXJw5tQigVRtPKxmzaY4P6G8IbmBdZOX # df06vvTUO4bXJkfBhblRstDua6zhAPE8YGv/sPpY2NOwNEIwmjhIFHKwF/ZBcdn5 # 6oq8bOPy4pWEN/2qLjGuQ4f9cPuNDbrcqAFYg5OLGJwnIf/cyKq3M7/jkMUvNo/z # hRelBC2vDhx9mNA= # SIG # End signature block |