422 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
			
		
		
	
	
			422 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			PowerShell
		
	
	
	
	
	
# =====================================================================
 | 
						|
# Copyright 2017 - 2020 Chocolatey Software, Inc, and the
 | 
						|
# original authors/contributors from ChocolateyGallery
 | 
						|
# Copyright 2011 - 2017 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.
 | 
						|
# =====================================================================
 | 
						|
 | 
						|
# For organizational deployments of Chocolatey, please see https://chocolatey.org/docs/how-to-setup-offline-installation
 | 
						|
 | 
						|
# 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 instead of 7zip (requires additional download), please set $env:chocolateyUseWindowsCompression = 'true'
 | 
						|
# To bypass the use of any proxy, please set $env:chocolateyIgnoreProxy = 'true'
 | 
						|
 | 
						|
#specifically use the API to get the latest version (below)
 | 
						|
$url = ''
 | 
						|
 | 
						|
$chocolateyVersion = $env:chocolateyVersion
 | 
						|
if (![string]::IsNullOrEmpty($chocolateyVersion)){
 | 
						|
  Write-Output "Downloading specific version of Chocolatey: $chocolateyVersion"
 | 
						|
  $url = "https://chocolatey.org/api/v2/package/chocolatey/$chocolateyVersion"
 | 
						|
}
 | 
						|
 | 
						|
$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)) {[void][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 {
 | 
						|
  $poshMajorVerion = $PSVersionTable.PSVersion.Major
 | 
						|
 | 
						|
  if ($poshMajorVerion -lt 4) {
 | 
						|
    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
 | 
						|
 | 
						|
# Attempt to set highest encryption available for SecurityProtocol.
 | 
						|
# PowerShell will not set this by default (until maybe .NET 4.6.x). This
 | 
						|
# will typically produce a message for PowerShell v2 (just an info
 | 
						|
# message though)
 | 
						|
try {
 | 
						|
  # Set TLS 1.2 (3072) as that is the minimum required by Chocolatey.org.
 | 
						|
  # Use integers because the enumeration value for TLS 1.2 won't exist
 | 
						|
  # in .NET 4.0, even though they are addressable if .NET 4.5+ is
 | 
						|
  # installed (.NET 4.5 is an in-place upgrade).
 | 
						|
  [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
 | 
						|
} catch {
 | 
						|
  Write-Output 'Unable to set PowerShell to use TLS 1.2. This is required for contacting Chocolatey as of 03 FEB 2020. https://chocolatey.org/blog/remove-support-for-old-tls-versions. If you see underlying connection closed or trust errors, you may need to do one or more of the following: (1) upgrade to .NET Framework 4.5+ and PowerShell v3+, (2) Call [System.Net.ServicePointManager]::SecurityProtocol = 3072; in PowerShell prior to attempting installation, (3) specify internal Chocolatey package location (set $env:chocolateyDownloadUrl prior to install or host the package internally), (4) use the Download + PowerShell method of install. See https://chocolatey.org/docs/installation for all install options.'
 | 
						|
}
 | 
						|
 | 
						|
function Get-Downloader {
 | 
						|
param (
 | 
						|
  [string]$url
 | 
						|
 )
 | 
						|
 | 
						|
  $downloader = new-object System.Net.WebClient
 | 
						|
 | 
						|
  $defaultCreds = [System.Net.CredentialCache]::DefaultCredentials
 | 
						|
  if ($defaultCreds -ne $null) {
 | 
						|
    $downloader.Credentials = $defaultCreds
 | 
						|
  }
 | 
						|
 | 
						|
  $ignoreProxy = $env:chocolateyIgnoreProxy
 | 
						|
  if ($ignoreProxy -ne $null -and $ignoreProxy -eq 'true') {
 | 
						|
    Write-Debug "Explicitly bypassing proxy due to user environment variable"
 | 
						|
    $downloader.Proxy = [System.Net.GlobalProxySelection]::GetEmptyWebProxy()
 | 
						|
  } else {
 | 
						|
    # check if a proxy is required
 | 
						|
    $explicitProxy = $env:chocolateyProxyLocation
 | 
						|
    $explicitProxyUser = $env:chocolateyProxyUser
 | 
						|
    $explicitProxyPassword = $env:chocolateyProxyPassword
 | 
						|
    if ($explicitProxy -ne $null -and $explicitProxy -ne '') {
 | 
						|
      # explicit proxy
 | 
						|
      $proxy = New-Object System.Net.WebProxy($explicitProxy, $true)
 | 
						|
      if ($explicitProxyPassword -ne $null -and $explicitProxyPassword -ne '') {
 | 
						|
        $passwd = ConvertTo-SecureString $explicitProxyPassword -AsPlainText -Force
 | 
						|
        $proxy.Credentials = New-Object System.Management.Automation.PSCredential ($explicitProxyUser, $passwd)
 | 
						|
      }
 | 
						|
 | 
						|
      Write-Debug "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-Debug "Using system proxy server '$proxyaddress'."
 | 
						|
      $proxy = New-Object System.Net.WebProxy($proxyaddress)
 | 
						|
      $proxy.Credentials = $creds
 | 
						|
      $downloader.Proxy = $proxy
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  return $downloader
 | 
						|
}
 | 
						|
 | 
						|
function Download-String {
 | 
						|
param (
 | 
						|
  [string]$url
 | 
						|
 )
 | 
						|
  $downloader = Get-Downloader $url
 | 
						|
 | 
						|
  return $downloader.DownloadString($url)
 | 
						|
}
 | 
						|
 | 
						|
function Download-File {
 | 
						|
param (
 | 
						|
  [string]$url,
 | 
						|
  [string]$file
 | 
						|
 )
 | 
						|
  #Write-Output "Downloading $url to $file"
 | 
						|
  $downloader = Get-Downloader $url
 | 
						|
 | 
						|
  $downloader.DownloadFile($url, $file)
 | 
						|
}
 | 
						|
 | 
						|
if ($url -eq $null -or $url -eq '') {
 | 
						|
  Write-Output "Getting latest version of the Chocolatey package for download."
 | 
						|
  $url = 'https://chocolatey.org/api/v2/Packages()?$filter=((Id%20eq%20%27chocolatey%27)%20and%20(not%20IsPrerelease))%20and%20IsLatestVersion'
 | 
						|
  [xml]$result = Download-String $url
 | 
						|
  $url = $result.feed.entry.content.src
 | 
						|
}
 | 
						|
 | 
						|
# Download the Chocolatey package
 | 
						|
Write-Output "Getting Chocolatey from $url."
 | 
						|
Download-File $url $file
 | 
						|
 | 
						|
# Determine unzipping method
 | 
						|
# 7zip is the most compatible so use it by default
 | 
						|
$7zaExe = Join-Path $tempDir '7za.exe'
 | 
						|
$unzipMethod = '7zip'
 | 
						|
$useWindowsCompression = $env:chocolateyUseWindowsCompression
 | 
						|
if ($useWindowsCompression -ne $null -and $useWindowsCompression -eq 'true') {
 | 
						|
  Write-Output 'Using built-in compression to unzip'
 | 
						|
  $unzipMethod = 'builtin'
 | 
						|
} elseif (-Not (Test-Path ($7zaExe))) {
 | 
						|
  Write-Output "Downloading 7-Zip commandline tool prior to extraction."
 | 
						|
  # download 7zip
 | 
						|
  Download-File 'https://chocolatey.org/7za.exe' "$7zaExe"
 | 
						|
}
 | 
						|
 | 
						|
# unzip the package
 | 
						|
Write-Output "Extracting $file to $tempDir..."
 | 
						|
if ($unzipMethod -eq '7zip') {
 | 
						|
  $params = "x -o`"$tempDir`" -bd -y `"$file`""
 | 
						|
  # use more robust Process as compared to Start-Process -Wait (which doesn't
 | 
						|
  # wait for the process to finish in PowerShell v3)
 | 
						|
  $process = New-Object System.Diagnostics.Process
 | 
						|
  $process.StartInfo = New-Object System.Diagnostics.ProcessStartInfo($7zaExe, $params)
 | 
						|
  $process.StartInfo.RedirectStandardOutput = $true
 | 
						|
  $process.StartInfo.UseShellExecute = $false
 | 
						|
  $process.StartInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Hidden
 | 
						|
  $process.Start() | Out-Null
 | 
						|
  $process.BeginOutputReadLine()
 | 
						|
  $process.WaitForExit()
 | 
						|
  $exitCode = $process.ExitCode
 | 
						|
  $process.Dispose()
 | 
						|
 | 
						|
  $errorMessage = "Unable to unzip package using 7zip. Perhaps try setting `$env:chocolateyUseWindowsCompression = 'true' and call install again. Error:"
 | 
						|
  switch ($exitCode) {
 | 
						|
    0 { break }
 | 
						|
    1 { throw "$errorMessage Some files could not be extracted" }
 | 
						|
    2 { throw "$errorMessage 7-Zip encountered a fatal error while extracting the files" }
 | 
						|
    7 { throw "$errorMessage 7-Zip command line error" }
 | 
						|
    8 { throw "$errorMessage 7-Zip out of memory" }
 | 
						|
    255 { throw "$errorMessage Extraction cancelled by the user" }
 | 
						|
    default { throw "$errorMessage 7-Zip signalled an unknown error (code $exitCode)" }
 | 
						|
  }
 | 
						|
} else {
 | 
						|
  if ($PSVersionTable.PSVersion.Major -lt 5) {
 | 
						|
    try {
 | 
						|
      $shellApplication = new-object -com shell.application
 | 
						|
      $zipPackage = $shellApplication.NameSpace($file)
 | 
						|
      $destinationFolder = $shellApplication.NameSpace($tempDir)
 | 
						|
      $destinationFolder.CopyHere($zipPackage.Items(),0x10)
 | 
						|
    } catch {
 | 
						|
      throw "Unable to unzip package using built-in compression. Set `$env:chocolateyUseWindowsCompression = 'false' and call install again to use 7zip to unzip. Error: `n $_"
 | 
						|
    }
 | 
						|
  } else {
 | 
						|
    Expand-Archive -Path "$file" -DestinationPath "$tempDir" -Force
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
# 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 = "$env:ALLUSERSPROFILE\Chocolatey"
 | 
						|
}
 | 
						|
 | 
						|
if (!(Test-Path ($chocoPath))) {
 | 
						|
  $chocoPath = "$env:SYSTEMDRIVE\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
 | 
						|
# MIIcpwYJKoZIhvcNAQcCoIIcmDCCHJQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
 | 
						|
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
 | 
						|
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDNxwdauklvXMYd
 | 
						|
# R6F324woy4ZDT1pBVoUMp0tAZ0LTVKCCF7EwggUwMIIEGKADAgECAhAECRgbX9W7
 | 
						|
# ZnVTQ7VvlVAIMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
 | 
						|
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
 | 
						|
# BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBa
 | 
						|
# Fw0yODEwMjIxMjAwMDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
 | 
						|
# dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lD
 | 
						|
# ZXJ0IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3
 | 
						|
# DQEBAQUAA4IBDwAwggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/l
 | 
						|
# qJ3bMtdx6nadBS63j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fT
 | 
						|
# eyOU5JEjlpB3gvmhhCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqH
 | 
						|
# CN8M9eJNYBi+qsSyrnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+
 | 
						|
# bMt+dDk2DZDv5LVOpKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLo
 | 
						|
# LFH3c7y9hbFig3NBggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIB
 | 
						|
# yTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAK
 | 
						|
# BggrBgEFBQcDAzB5BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
 | 
						|
# Y3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGln
 | 
						|
# aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHow
 | 
						|
# eDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
 | 
						|
# ZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Rp
 | 
						|
# Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwA
 | 
						|
# AgQwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAK
 | 
						|
# BghghkgBhv1sAzAdBgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0j
 | 
						|
# BBgwFoAUReuir/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7s
 | 
						|
# DVoks/Mi0RXILHwlKXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGS
 | 
						|
# dQ9RtG6ljlriXiSBThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6
 | 
						|
# r7VRwo0kriTGxycqoSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo
 | 
						|
# +MUSaJ/PQMtARKUT8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qz
 | 
						|
# sIzV6Q3d9gEgzpkxYz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHq
 | 
						|
# aGxEMrJmoecYpJpkUe8wggU6MIIEIqADAgECAhAH+0XZ9wtVKQNgl7T04UNwMA0G
 | 
						|
# CSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
 | 
						|
# bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0
 | 
						|
# IFNIQTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwHhcNMTgwMzMwMDAwMDAw
 | 
						|
# WhcNMjEwNDE0MTIwMDAwWjB3MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGS2Fuc2Fz
 | 
						|
# MQ8wDQYDVQQHEwZUb3Bla2ExIjAgBgNVBAoTGUNob2NvbGF0ZXkgU29mdHdhcmUs
 | 
						|
# IEluYy4xIjAgBgNVBAMTGUNob2NvbGF0ZXkgU29mdHdhcmUsIEluYy4wggEiMA0G
 | 
						|
# CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4irdLWVJryfKSgPPCyMN+nBmxtZIm
 | 
						|
# mTBhJMaYVJ6gtfvHcFakH7IC8TcjcEIrkK7wB/2vEJkEqiOTgbVQPZLnfX8ZAxhd
 | 
						|
# UiJmwQHEiSwLzoo2B35ROQ9qdOsn1bYIEzDpaqm/XwYH925LLpxhr9oCkBNf5dZs
 | 
						|
# e5bc/s1J5sQ9HRYwpb3MimmNHGpNP/YhjXX/kNFCZIv3mUadFHi+talYIN5dp6ai
 | 
						|
# /k+qgZeL5klPdmjyIgf3JiDywCf7j5nSbm3sWarYjM5vLe/oD+eK70fez30a17Cy
 | 
						|
# 97Jtqmdz6WUV1BcbMWeb9b8x369UJq5vt7vGwVFDOeGjwffuVHLRvWLnAgMBAAGj
 | 
						|
# ggHFMIIBwTAfBgNVHSMEGDAWgBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAdBgNVHQ4E
 | 
						|
# FgQUqRlYCMLOvsDUS4mx9UA1avD3fvgwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQM
 | 
						|
# MAoGCCsGAQUFBwMDMHcGA1UdHwRwMG4wNaAzoDGGL2h0dHA6Ly9jcmwzLmRpZ2lj
 | 
						|
# ZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMDWgM6Axhi9odHRwOi8vY3Js
 | 
						|
# NC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcxLmNybDBMBgNVHSAERTBD
 | 
						|
# MDcGCWCGSAGG/WwDATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2Vy
 | 
						|
# dC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUHAQEEeDB2MCQGCCsGAQUFBzAB
 | 
						|
# hhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYIKwYBBQUHMAKGQmh0dHA6Ly9j
 | 
						|
# YWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJBc3N1cmVkSURDb2RlU2ln
 | 
						|
# bmluZ0NBLmNydDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+ddcs
 | 
						|
# z/NB/+V+AIlUNOVTlGDNCtn1AfvwoRZg9XMmx0/S0EKayfVFTk/x96WMQgxL+/5x
 | 
						|
# B8Uhw6anlhbPC6bjBcIxRj/IUgR7yJ/NAykyM1x+pWvkPZV3slwe0GDPwhaqGUTU
 | 
						|
# aG8njO4EvA682a1o7wqQFR1MIltjtuPB2gp311LLxP1k5dpUMgaA0lAfnbRr+5dc
 | 
						|
# QOFWslkho1eBf0xlzSrhRGPy0e/IYWpl+/sEwXhD88QUkN7dSXY0fMlyGQfn6H4f
 | 
						|
# ozBQvCk37eoE0uAtkUrWAlJxO/4Esi83ko4hokwQJHaN64/7NdNaKlG3shC9+2QM
 | 
						|
# kY3j3BU+Ym2GZgtBMIIGajCCBVKgAwIBAgIQAwGaAjr/WLFr1tXq5hfwZjANBgkq
 | 
						|
# hkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
 | 
						|
# MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBB
 | 
						|
# c3N1cmVkIElEIENBLTEwHhcNMTQxMDIyMDAwMDAwWhcNMjQxMDIyMDAwMDAwWjBH
 | 
						|
# MQswCQYDVQQGEwJVUzERMA8GA1UEChMIRGlnaUNlcnQxJTAjBgNVBAMTHERpZ2lD
 | 
						|
# ZXJ0IFRpbWVzdGFtcCBSZXNwb25kZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
 | 
						|
# ggEKAoIBAQCjZF38fLPggjXg4PbGKuZJdTvMbuBTqZ8fZFnmfGt/a4ydVfiS457V
 | 
						|
# WmNbAklQ2YPOb2bu3cuF6V+l+dSHdIhEOxnJ5fWRn8YUOawk6qhLLJGJzF4o9GS2
 | 
						|
# ULf1ErNzlgpno75hn67z/RJ4dQ6mWxT9RSOOhkRVfRiGBYxVh3lIRvfKDo2n3k5f
 | 
						|
# 4qi2LVkCYYhhchhoubh87ubnNC8xd4EwH7s2AY3vJ+P3mvBMMWSN4+v6GYeofs/s
 | 
						|
# jAw2W3rBerh4x8kGLkYQyI3oBGDbvHN0+k7Y/qpA8bLOcEaD6dpAoVk62RUJV5lW
 | 
						|
# MJPzyWHM0AjMa+xiQpGsAsDvpPCJEY93AgMBAAGjggM1MIIDMTAOBgNVHQ8BAf8E
 | 
						|
# BAMCB4AwDAYDVR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDCCAb8G
 | 
						|
# A1UdIASCAbYwggGyMIIBoQYJYIZIAYb9bAcBMIIBkjAoBggrBgEFBQcCARYcaHR0
 | 
						|
# cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
 | 
						|
# QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
 | 
						|
# YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
 | 
						|
# YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
 | 
						|
# UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
 | 
						|
# QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
 | 
						|
# YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
 | 
						|
# YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
 | 
						|
# LjALBglghkgBhv1sAxUwHwYDVR0jBBgwFoAUFQASKxOYspkH7R7for5XDStnAs0w
 | 
						|
# HQYDVR0OBBYEFGFaTSS2STKdSip5GoNL9B6Jwcp9MH0GA1UdHwR2MHQwOKA2oDSG
 | 
						|
# Mmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEu
 | 
						|
# Y3JsMDigNqA0hjJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
 | 
						|
# cmVkSURDQS0xLmNybDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6
 | 
						|
# Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMu
 | 
						|
# ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEQ0EtMS5jcnQwDQYJKoZIhvcN
 | 
						|
# AQEFBQADggEBAJ0lfhszTbImgVybhs4jIA+Ah+WI//+x1GosMe06FxlxF82pG7xa
 | 
						|
# FjkAneNshORaQPveBgGMN/qbsZ0kfv4gpFetW7easGAm6mlXIV00Lx9xsIOUGQVr
 | 
						|
# NZAQoHuXx/Y/5+IRQaa9YtnwJz04HShvOlIJ8OxwYtNiS7Dgc6aSwNOOMdgv420X
 | 
						|
# Ewbu5AO2FKvzj0OncZ0h3RTKFV2SQdr5D4HRmXQNJsQOfxu19aDxxncGKBXp2JPl
 | 
						|
# VRbwuwqrHNtcSCdmyKOLChzlldquxC5ZoGHd2vNtomHpigtt7BIYvfdVVEADkitr
 | 
						|
# wlHCCkivsNRu4PQUCjob4489yq9qjXvc2EQwggbNMIIFtaADAgECAhAG/fkDlgOt
 | 
						|
# 6gAK6z8nu7obMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
 | 
						|
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
 | 
						|
# BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBa
 | 
						|
# Fw0yMTExMTAwMDAwMDBaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
 | 
						|
# dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
 | 
						|
# ZXJ0IEFzc3VyZWQgSUQgQ0EtMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
 | 
						|
# ggEBAOiCLZn5ysJClaWAc0Bw0p5WVFypxNJBBo/JM/xNRZFcgZ/tLJz4FlnfnrUk
 | 
						|
# FcKYubR3SdyJxArar8tea+2tsHEx6886QAxGTZPsi3o2CAOrDDT+GEmC/sfHMUiA
 | 
						|
# fB6iD5IOUMnGh+s2P9gww/+m9/uizW9zI/6sVgWQ8DIhFonGcIj5BZd9o8dD3QLo
 | 
						|
# Oz3tsUGj7T++25VIxO4es/K8DCuZ0MZdEkKB4YNugnM/JksUkK5ZZgrEjb7Szgau
 | 
						|
# rYRvSISbT0C58Uzyr5j79s5AXVz2qPEvr+yJIvJrGGWxwXOt1/HYzx4KdFxCuGh+
 | 
						|
# t9V3CidWfA9ipD8yFGCV/QcEogkCAwEAAaOCA3owggN2MA4GA1UdDwEB/wQEAwIB
 | 
						|
# hjA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEF
 | 
						|
# BQcDBAYIKwYBBQUHAwgwggHSBgNVHSAEggHJMIIBxTCCAbQGCmCGSAGG/WwAAQQw
 | 
						|
# ggGkMDoGCCsGAQUFBwIBFi5odHRwOi8vd3d3LmRpZ2ljZXJ0LmNvbS9zc2wtY3Bz
 | 
						|
# LXJlcG9zaXRvcnkuaHRtMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUA
 | 
						|
# cwBlACAAbwBmACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMA
 | 
						|
# bwBuAHMAdABpAHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYA
 | 
						|
# IAB0AGgAZQAgAEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQA
 | 
						|
# IAB0AGgAZQAgAFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUA
 | 
						|
# bQBlAG4AdAAgAHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkA
 | 
						|
# dAB5ACAAYQBuAGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAA
 | 
						|
# aABlAHIAZQBpAG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMAsGCWCGSAGG
 | 
						|
# /WwDFTASBgNVHRMBAf8ECDAGAQH/AgEAMHkGCCsGAQUFBwEBBG0wazAkBggrBgEF
 | 
						|
# BQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRw
 | 
						|
# Oi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
 | 
						|
# Y3J0MIGBBgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
 | 
						|
# RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsNC5k
 | 
						|
# aWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsMB0GA1UdDgQW
 | 
						|
# BBQVABIrE5iymQftHt+ivlcNK2cCzTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
 | 
						|
# pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEARlA+ybcoJKc4HbZbKa9Sz1LpMUer
 | 
						|
# Vlx71Q0LQbPv7HUfdDjyslxhopyVw1Dkgrkj0bo6hnKtOHisdV0XFzRyR4WUVtHr
 | 
						|
# uzaEd8wkpfMEGVWp5+Pnq2LN+4stkMLA0rWUvV5PsQXSDj0aqRRbpoYxYqioM+Sb
 | 
						|
# OafE9c4deHaUJXPkKqvPnHZL7V/CSxbkS3BMAIke/MV5vEwSV/5f4R68Al2o/vsH
 | 
						|
# OE8Nxl2RuQ9nRc3Wg+3nkg2NsWmMT/tZ4CMP0qquAHzunEIOz5HXJ7cW7g/DvXwK
 | 
						|
# oO4sCFWFIrjrGBpN/CohrUkxg0eVd3HcsRtLSxwQnHcUwZ1PL1qVCCkQJjGCBEww
 | 
						|
# ggRIAgEBMIGGMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMx
 | 
						|
# GTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNI
 | 
						|
# QTIgQXNzdXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAf7Rdn3C1UpA2CXtPThQ3Aw
 | 
						|
# DQYJYIZIAWUDBAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkq
 | 
						|
# hkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGC
 | 
						|
# NwIBFTAvBgkqhkiG9w0BCQQxIgQgVOMYjIaBHu7LkOhlbFNa1FFBBUFQu8BKOfZZ
 | 
						|
# AK2CtCUwDQYJKoZIhvcNAQEBBQAEggEAccxIsQDitasvwWmCy+JQLBU4qNfShPld
 | 
						|
# fVFg7Dte5/KpHMEd6rgw0ECoN1H8nabSf3dVMPDWGTdXzYVc+zB5Nmhlwy/9CGAs
 | 
						|
# XmIICX16xcwYb18miih52j/m5JXT4NhTIl/+e5mF4nyoJUJeBJwIUSDuV3rHyOpE
 | 
						|
# 90BGZXJPX2ItGbp1J//bMDECzkxRtSRDxNCQ8QlS0YBc2h+ftQFmlmb86N8XCqdB
 | 
						|
# 32paBD1OmhH7tVB9eXQRQ9rtNLbVUB790d/IGYkHU7zlVMwxpI7wYNqgdcV9bv5z
 | 
						|
# O9GaG8QaQXxxtIB/hH5m5wWvcberqJb2qr5Ke6U1mPV1T6G6TGdctKGCAg8wggIL
 | 
						|
# BgkqhkiG9w0BCQYxggH8MIIB+AIBATB2MGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
 | 
						|
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNV
 | 
						|
# BAMTGERpZ2lDZXJ0IEFzc3VyZWQgSUQgQ0EtMQIQAwGaAjr/WLFr1tXq5hfwZjAJ
 | 
						|
# BgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0B
 | 
						|
# CQUxDxcNMjAwNDE2MDA1MDU0WjAjBgkqhkiG9w0BCQQxFgQUSnVQXFG9NidxPlpR
 | 
						|
# Zbf9t65cx2kwDQYJKoZIhvcNAQEBBQAEggEAlpX/WR+PI6eEsARfNpjEQAdcOOG6
 | 
						|
# Kp1TyXOaikIUh0BI7IjCiGRr7LbXQdkZIMcl3UD8TN+GQ59RsHSsYaAQJozUW9uo
 | 
						|
# pj3NaQJaKwHB15zHzcD1TMi18zCCPlebPmUTDsbICWBWangCST0zqU849+3tlx7E
 | 
						|
# LLjYjs/ybeS7aQffy1Dv87ElCYWsVuoQ0n9U/7hqJ3pv88SM52xmg9IlexfOanCz
 | 
						|
# tTAM+ke9OcXuPhoZJuDL3c8gaWxELpkokMoqX0UCgCgY4RTmJ44mC9GcYKSnpMQZ
 | 
						|
# qFot8MXA8t5cdxN2EL8j0ASufyE0oucys4cs+yiN65GWds7YbjYC/ihG6A==
 | 
						|
# SIG # End signature block
 |