274 lines
No EOL
14 KiB
PowerShell
274 lines
No EOL
14 KiB
PowerShell
# =====================================================================
|
|
# Copyright 2011 - Present RealDimensions Software, LLC, and the
|
|
# original authors/contributors from ChocolateyGallery
|
|
# at https://github.com/chocolatey/chocolatey.org
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
# =====================================================================
|
|
|
|
# Environment Variables, specified as $env:NAME in PowerShell.exe and %NAME% in cmd.exe.
|
|
# For explicit proxy, please set $env:chocolateyProxyLocation and optionally $env:chocolateyProxyUser and $env:chocolateyProxyPassword
|
|
# For an explicit version of Chocolatey, please set $env:chocolateyVersion = 'versionnumber'
|
|
# To target a different url for chocolatey.nupkg, please set $env:chocolateyDownloadUrl = 'full url to nupkg file'
|
|
# NOTE: $env:chocolateyDownloadUrl does not work with $env:chocolateyVersion.
|
|
# To use built-in compression (no 7zip download), please set $env:chocolateyUseWindowsCompression = 'true'
|
|
|
|
$url = "https://chocolatey.org/api/v2/package/chocolatey/"
|
|
# introduced when there were performance issues - kept around in case we
|
|
# run into them again.
|
|
$url = "https://packages.chocolatey.org/chocolatey.0.9.9.12.nupkg"
|
|
|
|
$chocolateyVersion = $env:chocolateyVersion
|
|
if (![string]::IsNullOrEmpty($chocolateyVersion)){
|
|
Write-Output "Downloading specific version of Chocolatey: $chocolateyVersion"
|
|
$url = "https://chocolatey.org/api/v2/package/chocolatey/$chocolateyVersion"
|
|
# introduced when there were performance issues - kept around in case we
|
|
# run into them again.
|
|
#$url = "https://packages.chocolatey.org/chocolatey.$chocolateyVersion.nupkg"
|
|
}
|
|
|
|
$chocolateyDownloadUrl = $env:chocolateyDownloadUrl
|
|
if (![string]::IsNullOrEmpty($chocolateyDownloadUrl)){
|
|
Write-Output "Downloading Chocolatey from : $chocolateyDownloadUrl"
|
|
$url = "$chocolateyDownloadUrl"
|
|
}
|
|
|
|
if ($env:TEMP -eq $null) {
|
|
$env:TEMP = Join-Path $env:SystemDrive 'temp'
|
|
}
|
|
$chocTempDir = Join-Path $env:TEMP "chocolatey"
|
|
$tempDir = Join-Path $chocTempDir "chocInstall"
|
|
if (![System.IO.Directory]::Exists($tempDir)) {[System.IO.Directory]::CreateDirectory($tempDir)}
|
|
$file = Join-Path $tempDir "chocolatey.zip"
|
|
|
|
# PowerShell v2/3 caches the output stream. Then it throws errors due
|
|
# to the FileStream not being what is expected. Fixes "The OS handle's
|
|
# position is not what FileStream expected. Do not use a handle
|
|
# simultaneously in one FileStream and in Win32 code or another
|
|
# FileStream."
|
|
function Fix-PowerShellOutputRedirectionBug {
|
|
try{
|
|
# http://www.leeholmes.com/blog/2008/07/30/workaround-the-os-handles-position-is-not-what-filestream-expected/ plus comments
|
|
$bindingFlags = [Reflection.BindingFlags] "Instance,NonPublic,GetField"
|
|
$objectRef = $host.GetType().GetField("externalHostRef", $bindingFlags).GetValue($host)
|
|
$bindingFlags = [Reflection.BindingFlags] "Instance,NonPublic,GetProperty"
|
|
$consoleHost = $objectRef.GetType().GetProperty("Value", $bindingFlags).GetValue($objectRef, @())
|
|
[void] $consoleHost.GetType().GetProperty("IsStandardOutputRedirected", $bindingFlags).GetValue($consoleHost, @())
|
|
$bindingFlags = [Reflection.BindingFlags] "Instance,NonPublic,GetField"
|
|
$field = $consoleHost.GetType().GetField("standardOutputWriter", $bindingFlags)
|
|
$field.SetValue($consoleHost, [Console]::Out)
|
|
[void] $consoleHost.GetType().GetProperty("IsStandardErrorRedirected", $bindingFlags).GetValue($consoleHost, @())
|
|
$field2 = $consoleHost.GetType().GetField("standardErrorWriter", $bindingFlags)
|
|
$field2.SetValue($consoleHost, [Console]::Error)
|
|
} catch {
|
|
Write-Output "Unable to apply redirection fix."
|
|
}
|
|
}
|
|
|
|
Fix-PowerShellOutputRedirectionBug
|
|
|
|
function Download-File {
|
|
param (
|
|
[string]$url,
|
|
[string]$file
|
|
)
|
|
Write-Output "Downloading $url to $file"
|
|
$downloader = new-object System.Net.WebClient
|
|
|
|
$defaultCreds = [System.Net.CredentialCache]::DefaultCredentials
|
|
if ($defaultCreds -ne $null) {
|
|
$downloader.Credentials = $defaultCreds
|
|
}
|
|
|
|
# check if a proxy is required
|
|
$explicitProxy = $env:chocolateyProxyLocation
|
|
$explicitProxyUser = $env:chocolateyProxyUser
|
|
$explicitProxyPassword = $env:chocolateyProxyPassword
|
|
if ($explicitProxy -ne $null) {
|
|
# explicit proxy
|
|
$proxy = New-Object System.Net.WebProxy($explicitProxy, $true)
|
|
if ($explicitProxyPassword -ne $null) {
|
|
$passwd = ConvertTo-SecureString $explicitProxyPassword -AsPlainText -Force
|
|
$proxy.Credentials = New-Object System.Management.Automation.PSCredential ($explicitProxyUser, $passwd)
|
|
}
|
|
|
|
Write-Output "Using explicit proxy server '$explicitProxy'."
|
|
$downloader.Proxy = $proxy
|
|
|
|
} elseif (!$downloader.Proxy.IsBypassed($url))
|
|
{
|
|
# system proxy (pass through)
|
|
$creds = $defaultCreds
|
|
if ($creds -eq $null) {
|
|
Write-Debug "Default credentials were null. Attempting backup method"
|
|
$cred = get-credential
|
|
$creds = $cred.GetNetworkCredential();
|
|
}
|
|
$proxyaddress = $downloader.Proxy.GetProxy($url).Authority
|
|
Write-Output "Using system proxy server '$proxyaddress'."
|
|
$proxy = New-Object System.Net.WebProxy($proxyaddress)
|
|
$proxy.Credentials = $creds
|
|
$downloader.Proxy = $proxy
|
|
}
|
|
|
|
$downloader.DownloadFile($url, $file)
|
|
}
|
|
|
|
# Download the Chocolatey package
|
|
Download-File $url $file
|
|
|
|
# Determine unzipping method
|
|
$unzipMethod = '7zip'
|
|
if (![string]::IsNullOrEmpty($env:chocolateyUseWindowsCompression)){
|
|
Write-Output 'Using built in compression to unzip.'
|
|
$unzipMethod = 'builtin'
|
|
}
|
|
|
|
if ($unzipMethod -eq '7zip') {
|
|
# download 7zip
|
|
Write-Output "Download 7Zip commandline tool"
|
|
$7zaExe = Join-Path $tempDir '7za.exe'
|
|
Download-File 'https://chocolatey.org/7za.exe' "$7zaExe"
|
|
|
|
# unzip the package
|
|
Write-Output "Extracting $file to $tempDir..."
|
|
Start-Process "$7zaExe" -ArgumentList "x -o`"$tempDir`" -y `"$file`"" -Wait -NoNewWindow
|
|
} else {
|
|
# unzip the package
|
|
Write-Output "Extracting $file to $tempDir..."
|
|
$shellApplication = new-object -com shell.application
|
|
$zipPackage = $shellApplication.NameSpace($file)
|
|
$destinationFolder = $shellApplication.NameSpace($tempDir)
|
|
$destinationFolder.CopyHere($zipPackage.Items(),0x10)
|
|
}
|
|
|
|
# Call chocolatey install
|
|
Write-Output "Installing chocolatey on this machine"
|
|
$toolsFolder = Join-Path $tempDir "tools"
|
|
$chocInstallPS1 = Join-Path $toolsFolder "chocolateyInstall.ps1"
|
|
|
|
& $chocInstallPS1
|
|
|
|
Write-Output 'Ensuring chocolatey commands are on the path'
|
|
$chocInstallVariableName = "ChocolateyInstall"
|
|
$chocoPath = [Environment]::GetEnvironmentVariable($chocInstallVariableName)
|
|
if ($chocoPath -eq $null -or $chocoPath -eq '') {
|
|
$chocoPath = 'C:\ProgramData\Chocolatey'
|
|
}
|
|
|
|
$chocoExePath = Join-Path $chocoPath 'bin'
|
|
|
|
if ($($env:Path).ToLower().Contains($($chocoExePath).ToLower()) -eq $false) {
|
|
$env:Path = [Environment]::GetEnvironmentVariable('Path',[System.EnvironmentVariableTarget]::Machine);
|
|
}
|
|
|
|
Write-Output 'Ensuring chocolatey.nupkg is in the lib folder'
|
|
$chocoPkgDir = Join-Path $chocoPath 'lib\chocolatey'
|
|
$nupkg = Join-Path $chocoPkgDir 'chocolatey.nupkg'
|
|
if (![System.IO.Directory]::Exists($chocoPkgDir)) { [System.IO.Directory]::CreateDirectory($chocoPkgDir); }
|
|
Copy-Item "$file" "$nupkg" -Force -ErrorAction SilentlyContinue
|
|
|
|
# SIG # Begin signature block
|
|
# MIIRFgYJKoZIhvcNAQcCoIIRBzCCEQMCAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
|
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
|
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCB1u9CoeJumiBN6
|
|
# T5KLVU3S2QMowJinRBbLYjCIOpMpW6CCDjMwggO3MIICn6ADAgECAhAM5+DlF9hG
|
|
# /o/lYPwb8DA5MA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
|
|
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
|
|
# BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
|
|
# Fw0zMTExMTAwMDAwMDBaMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
|
|
# dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNVBAMTG0RpZ2lD
|
|
# ZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
|
# AQoCggEBAK0OFc7kQ4BcsYfzt2D5cRKlrtwmlIiq9M71IDkoWGAM+IDaqRWVMmE8
|
|
# tbEohIqK3J8KDIMXeo+QrIrneVNcMYQq9g+YMjZ2zN7dPKii72r7IfJSYd+fINcf
|
|
# 4rHZ/hhk0hJbX/lYGDW8R82hNvlrf9SwOD7BG8OMM9nYLxj+KA+zp4PWw25EwGE1
|
|
# lhb+WZyLdm3X8aJLDSv/C3LanmDQjpA1xnhVhyChz+VtCshJfDGYM2wi6YfQMlqi
|
|
# uhOCEe05F52ZOnKh5vqk2dUXMXWuhX0irj8BRob2KHnIsdrkVxfEfhwOsLSSplaz
|
|
# vbKX7aqn8LfFqD+VFtD/oZbrCF8Yd08CAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGG
|
|
# MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEXroq/0ksuCMS1Ri6enIZ3zbcgP
|
|
# MB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgPMA0GCSqGSIb3DQEBBQUA
|
|
# A4IBAQCiDrzf4u3w43JzemSUv/dyZtgy5EJ1Yq6H6/LV2d5Ws5/MzhQouQ2XYFwS
|
|
# TFjk0z2DSUVYlzVpGqhH6lbGeasS2GeBhN9/CTyU5rgmLCC9PbMoifdf/yLil4Qf
|
|
# 6WXvh+DfwWdJs13rsgkq6ybteL59PyvztyY1bV+JAbZJW58BBZurPSXBzLZ/wvFv
|
|
# hsb6ZGjrgS2U60K3+owe3WLxvlBnt2y98/Efaww2BxZ/N3ypW2168RJGYIPXJwS+
|
|
# S86XvsNnKmgR34DnDDNmvxMNFG7zfx9jEB76jRslbWyPpbdhAbHSoyahEHGdreLD
|
|
# +cOZUbcrBwjOLuZQsqf6CkUvovDyMIIFMDCCBBigAwIBAgIQBAkYG1/Vu2Z1U0O1
|
|
# b5VQCDANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGln
|
|
# aUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtE
|
|
# aWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMTMxMDIyMTIwMDAwWhcNMjgx
|
|
# MDIyMTIwMDAwWjByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
|
|
# MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBT
|
|
# SEEyIEFzc3VyZWQgSUQgQ29kZSBTaWduaW5nIENBMIIBIjANBgkqhkiG9w0BAQEF
|
|
# AAOCAQ8AMIIBCgKCAQEA+NOzHH8OEa9ndwfTCzFJGc/Q+0WZsTrbRPV/5aid2zLX
|
|
# cep2nQUut4/6kkPApfmJ1DcZ17aq8JyGpdglrA55KDp+6dFn08b7KSfH03sjlOSR
|
|
# I5aQd4L5oYQjZhJUM1B0sSgmuyRpwsJS8hRniolF1C2ho+mILCCVrhxKhwjfDPXi
|
|
# TWAYvqrEsq5wMWYzcT6scKKrzn/pfMuSoeU7MRzP6vIK5Fe7SrXpdOYr/mzLfnQ5
|
|
# Ng2Q7+S1TqSp6moKq4TzrGdOtcT3jNEgJSPrCGQ+UpbB8g8S9MWOD8Gi6CxR93O8
|
|
# vYWxYoNzQYIH5DiLanMg0A9kczyen6Yzqf0Z3yWT0QIDAQABo4IBzTCCAckwEgYD
|
|
# VR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYB
|
|
# BQUHAwMweQYIKwYBBQUHAQEEbTBrMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5k
|
|
# aWdpY2VydC5jb20wQwYIKwYBBQUHMAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0
|
|
# LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgwOqA4
|
|
# oDaGNGh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJv
|
|
# b3RDQS5jcmwwOqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2Vy
|
|
# dEFzc3VyZWRJRFJvb3RDQS5jcmwwTwYDVR0gBEgwRjA4BgpghkgBhv1sAAIEMCow
|
|
# KAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCgYIYIZI
|
|
# AYb9bAMwHQYDVR0OBBYEFFrEuXsqCqOl6nEDwGD5LfZldQ5YMB8GA1UdIwQYMBaA
|
|
# FEXroq/0ksuCMS1Ri6enIZ3zbcgPMA0GCSqGSIb3DQEBCwUAA4IBAQA+7A1aJLPz
|
|
# ItEVyCx8JSl2qB1dHC06GsTvMGHXfgtg/cM9D8Svi/3vKt8gVTew4fbRknUPUbRu
|
|
# pY5a4l4kgU4QpO4/cY5jDhNLrddfRHnzNhQGivecRk5c/5CxGwcOkRX7uq+1UcKN
|
|
# JK4kxscnKqEpKBo6cSgCPC6Ro8AlEeKcFEehemhor5unXCBc2XGxDI+7qPjFEmif
|
|
# z0DLQESlE/DmZAwlCEIysjaKJAL+L3J+HNdJRZboWR3p+nRka7LrZkPas7CM1ekN
|
|
# 3fYBIM6ZMWM9CBoYs4GbT8aTEAb8B4H6i9r5gkn3Ym6hU/oSlBiFLpKR6mhsRDKy
|
|
# ZqHnGKSaZFHvMIIFQDCCBCigAwIBAgIQB3Rm7aJnbzrskhfSMFNxEDANBgkqhkiG
|
|
# 9w0BAQsFADByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkw
|
|
# FwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEy
|
|
# IEFzc3VyZWQgSUQgQ29kZSBTaWduaW5nIENBMB4XDTE2MDMyNDAwMDAwMFoXDTE3
|
|
# MDMyODEyMDAwMFowfTELMAkGA1UEBhMCVVMxDzANBgNVBAgTBkthbnNhczEPMA0G
|
|
# A1UEBxMGVG9wZWthMSUwIwYDVQQKExxSZWFsRGltZW5zaW9ucyBTb2Z0d2FyZSwg
|
|
# TExDMSUwIwYDVQQDExxSZWFsRGltZW5zaW9ucyBTb2Z0d2FyZSwgTExDMIIBIjAN
|
|
# BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAudmEtlilKQbXZA8idxtEJuNr/lvs
|
|
# qq+w3nYlcyHgox6SjZJpsTvPpUvp54hQ46BRjtSRvxt2csFURZTNSyh3jzNXjjes
|
|
# E9B9YL4caTM8rgv0kVvcLzLU5bx543Uy1tOjnvbbxpEJEzPK288EQyGfaHXU/AcR
|
|
# 0jphnpawDfQsCn+tM4sPIyi2Z7gLmcEoJF+Su8LzrPL4qsnZZ7e891sopi/sI7nv
|
|
# OTKWu48oyH51KrLDdas+J3HvnvPQsUw9gG1oxsJ303E4Jo9xFEiUUIA0ZCfjv7Fc
|
|
# 0v1e+sWoy6D7yOGZQLDKXit6bS2Kr4lN2WjVMy0FhY7lqnN34Y21gxRedQIDAQAB
|
|
# o4IBxTCCAcEwHwYDVR0jBBgwFoAUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHQYDVR0O
|
|
# BBYEFE9BoL8b8KzqjI10PMsO0A2oCFSeMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUE
|
|
# DDAKBggrBgEFBQcDAzB3BgNVHR8EcDBuMDWgM6Axhi9odHRwOi8vY3JsMy5kaWdp
|
|
# Y2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDA1oDOgMYYvaHR0cDovL2Ny
|
|
# bDQuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC1jcy1nMS5jcmwwTAYDVR0gBEUw
|
|
# QzA3BglghkgBhv1sAwEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNl
|
|
# cnQuY29tL0NQUzAIBgZngQwBBAEwgYQGCCsGAQUFBwEBBHgwdjAkBggrBgEFBQcw
|
|
# AYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tME4GCCsGAQUFBzAChkJodHRwOi8v
|
|
# Y2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRTSEEyQXNzdXJlZElEQ29kZVNp
|
|
# Z25pbmdDQS5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAQEAA+it
|
|
# pXXw8e4TmcVurJmJIleJcV2OG3sMRr/4IdoY1oC4kP7KK589nxw54v5Dn6oZ/P9y
|
|
# r2HeFd90KjKo5v6rEacI4/TQv0NgRrk4NGsd3v2fWSL3GAeMcfAkWxirHkfZYsYD
|
|
# ACWTAlshswAvxN11/gV9wesvDecwSCkWNTO8bm/izO81vSxjIV93ueiexlBe8yM0
|
|
# O2ZGic38RW1bxM9vyjaDRogpgO2NG4jF6V/e99A24OGfgeElHuJOFjy0v94KAKvJ
|
|
# VTBbaKkob8r65mLY9oBY0Jh9wc0gkkWawBW1mAwoGuexauwOMaxdouu5BqJY83j/
|
|
# v9+cLqDpa4IJ9hLidTGCAjkwggI1AgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYD
|
|
# VQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAv
|
|
# BgNVBAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EC
|
|
# EAd0Zu2iZ2867JIX0jBTcRAwDQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIB
|
|
# DDEKMAigAoAAoQKAADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEE
|
|
# AYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgxgsHvhO1r3cK
|
|
# aMYB5kpkjm9VV51g61KEGCwHFa8BYiYwDQYJKoZIhvcNAQEBBQAEggEATERxOw4a
|
|
# vuweIsLxyPcDSLLbfEain4zC6fiTeNw7yxKtY00g73PX3dCLitNaKv9TClb3w4N1
|
|
# /oIYJ0QoXSiRdsKVXBkqQvTRFLwXe6tYE7Vq55pnHzJuUPlRSdEAS+d1GCHCxJZ0
|
|
# KMZwzvaTZIo7NmhskhQtvGjdDUAfD6OVtr/cJe/vCP+i7TxofsmAvxhFxvHqSj+A
|
|
# nFRAcnozvtdO2p9KOAjMD6cocUaFI4vvC2yzbcucu7PgQ8n+xN/OglCuZgJoTc34
|
|
# KpMU124X9yW5ohjgWqwEeI2pKWmz11AGQ/UkwdCdY+ahFJ2hV8sB2yLMvaZRc408
|
|
# 6DFlNpDti+ZRWA==
|
|
# SIG # End signature block |