Write-Host "Applying patch for log4j mitigations ..."

#set all vars
$path = 'HKLM:\SYSTEM\CurrentControlSet\Services\PCNS1\Parameters'
$parametersKey = 'AppParameters'
$directoryKey = 'AppDirectory'
$service = 'pcns1'
$pcnsJar = "pcns.jar"
$aboutHtml = "about.html"
$filesFolder = ".\files\*"
$libFolder = "lib"
$log4JWildcard = 'log4j*.jar'

try {
    $installDir = (Get-ItemProperty -Path $path -Name $directoryKey -ErrorAction Stop).$directoryKey
} catch {
    Write-Host "Unable to detect Powerchute Network Shutdown installation. Please run this patch on a system with PowerChute Network Shutdown."
    Write-Error $_
    Throw "No PowerChute Network Shutdown detected."
}

#build the path to the PCNS jar
$compPath =  Join-Path -Path $installDir -ChildPath 'comp'

#build the path to the about box
$aboutPath = Join-Path -Path $installDir -ChildPath 'comp\http\html'

#build the path to the log4J jar with wildcard for all versions
$libPath = Join-Path -Path $installDir -ChildPath $libFolder
$log4JFullPath =  Join-Path -Path $libPath -ChildPath $log4JWildcard

#stop the service before updating the jars
Write-Host "Stopping PowerChute service"
Stop-Service -Name $service


Write-Host "Replacing existing log4j libraries with mitigated version"

####################
# JAR updates      #
####################


try {
    #find the log4J jar(s) to remove with the wildcard lookup
    $log4JJarList = Get-ChildItem -Recurse -Path $log4JFullPath -Include @("log4j*2.2.jar", "log4j*2.10.0.jar", "log4j*2.13.3.jar")
    foreach($log4JJar in $log4JJarList) {
        Write-Host "Removing $log4JJar"
        Remove-Item $log4JJar
    }

    Write-Host "Copying log4j libraries to PowerChute installation"
    Copy-Item -Path $filesFolder -Exclude @($pcnsJar) -Destination $libPath

    Write-Host "Patching PowerChute service"
    Copy-Item -Path $filesFolder -Include @($pcnsJar) -Destination $compPath
    Copy-Item -Path $filesFolder -Include @($aboutHtml) -Destination $aboutPath

} catch  {
        Write-Host "An error occurred:"
        Write-Error $_
        Write-Host "Could not apply patch! Please run the patch again when the problem is resolved."
        Throw "Patch not applied"
} 

####################
# registry update  #
####################

$oldValue = (Get-ItemProperty -Path $path -Name $parametersKey).$parametersKey
$newValue = $oldValue.Replace("log4j-core-2.2.jar", "log4j-core-2.17.1.jar").Replace("log4j-api-2.2.jar", "log4j-api-2.17.1.jar")

#update value if new value is not null/empty
if ($newValue) {
    Write-Host "Updating registry to new log4j libraries"
    Set-ItemProperty -Path $path -Name $parametersKey -Value $newValue -Force
}

Write-Host "Log4Shell patch applied to PowerChute, starting PowerChute service"
Start-Service -Name $service
# SIG # Begin signature block
# MIIibQYJKoZIhvcNAQcCoIIiXjCCIloCAQExDTALBglghkgBZQMEAgEweQYKKwYB
# BAGCNwIBBKBrMGkwNAYKKwYBBAGCNwIBHjAmAgMBAAAEEB/MO2BZSwhOtyTSxil+
# 81ECAQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQgmE3NkT50iJNZp7T/
# 8jkIArbc+1MxG3WL3fMef4HQSFGgggqXMIIFMDCCBBigAwIBAgIQBAkYG1/Vu2Z1
# U0O1b5VQCDANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMM
# RGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQD
# ExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMTMxMDIyMTIwMDAwWhcN
# MjgxMDIyMTIwMDAwWjByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQg
# SW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2Vy
# dCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBTaWduaW5nIENBMIIBIjANBgkqhkiG9w0B
# AQEFAAOCAQ8AMIIBCgKCAQEA+NOzHH8OEa9ndwfTCzFJGc/Q+0WZsTrbRPV/5aid
# 2zLXcep2nQUut4/6kkPApfmJ1DcZ17aq8JyGpdglrA55KDp+6dFn08b7KSfH03sj
# lOSRI5aQd4L5oYQjZhJUM1B0sSgmuyRpwsJS8hRniolF1C2ho+mILCCVrhxKhwjf
# DPXiTWAYvqrEsq5wMWYzcT6scKKrzn/pfMuSoeU7MRzP6vIK5Fe7SrXpdOYr/mzL
# fnQ5Ng2Q7+S1TqSp6moKq4TzrGdOtcT3jNEgJSPrCGQ+UpbB8g8S9MWOD8Gi6CxR
# 93O8vYWxYoNzQYIH5DiLanMg0A9kczyen6Yzqf0Z3yWT0QIDAQABo4IBzTCCAckw
# EgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYI
# KwYBBQUHAwMweQYIKwYBBQUHAQEEbTBrMCQGCCsGAQUFBzABhhhodHRwOi8vb2Nz
# cC5kaWdpY2VydC5jb20wQwYIKwYBBQUHMAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2lj
# ZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgw
# OqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ
# RFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdp
# Q2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwTwYDVR0gBEgwRjA4BgpghkgBhv1sAAIE
# MCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCgYI
# YIZIAYb9bAMwHQYDVR0OBBYEFFrEuXsqCqOl6nEDwGD5LfZldQ5YMB8GA1UdIwQY
# MBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgPMA0GCSqGSIb3DQEBCwUAA4IBAQA+7A1a
# JLPzItEVyCx8JSl2qB1dHC06GsTvMGHXfgtg/cM9D8Svi/3vKt8gVTew4fbRknUP
# UbRupY5a4l4kgU4QpO4/cY5jDhNLrddfRHnzNhQGivecRk5c/5CxGwcOkRX7uq+1
# UcKNJK4kxscnKqEpKBo6cSgCPC6Ro8AlEeKcFEehemhor5unXCBc2XGxDI+7qPjF
# Emifz0DLQESlE/DmZAwlCEIysjaKJAL+L3J+HNdJRZboWR3p+nRka7LrZkPas7CM
# 1ekN3fYBIM6ZMWM9CBoYs4GbT8aTEAb8B4H6i9r5gkn3Ym6hU/oSlBiFLpKR6mhs
# RDKyZqHnGKSaZFHvMIIFXzCCBEegAwIBAgIQDwYI/9sLq5wBNI0+ExI3mzANBgkq
# hkiG9w0BAQsFADByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
# MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBT
# SEEyIEFzc3VyZWQgSUQgQ29kZSBTaWduaW5nIENBMB4XDTIwMTIxNTAwMDAwMFoX
# DTIzMTIxOTIzNTk1OVowgZsxCzAJBgNVBAYTAlVTMRYwFAYDVQQIEw1NYXNzYWNo
# dXNldHRzMRAwDgYDVQQHEwdBbmRvdmVyMSUwIwYDVQQKExxTQ0hORUlERVIgRUxF
# Q1RSSUMgVVNBLCBJTkMuMRQwEgYDVQQLEwtNUyBFbmVyZ3kgMjElMCMGA1UEAxMc
# U0NITkVJREVSIEVMRUNUUklDIFVTQSwgSU5DLjCCASIwDQYJKoZIhvcNAQEBBQAD
# ggEPADCCAQoCggEBAJVoM52qTmoKjyGYbX+MmQcQUdlK7p5Mwdd0aPa6EMauwcJm
# vS0VzC3xSIUNZqR1opkyF9P8BFXl/hAt1SahGd419qEwJqarBqfsZbC1l+6k3OUr
# hukaP0koT/RCC+SPomYrha5Ve7yP2JZqdKBkO27j8sEFtCpcCkSUlU1alD4Bf0GL
# Ig1TyJcZiObv+eV9nctC4adVU6ihj19Ih6Udy7ub48EdoGKh3o4A7FTqppxTGOBi
# mgs291Zeele7e4fZPHVvKa8GVbh+NgNHP6o4gc0xAYAkyIobiEbe9rn0OgaPPQ+z
# oq2uOCSvY4fAEJX9Q7y5R7UZh+1LGCLOuh9CweECAwEAAaOCAcUwggHBMB8GA1Ud
# IwQYMBaAFFrEuXsqCqOl6nEDwGD5LfZldQ5YMB0GA1UdDgQWBBQJPbX4R+LB42lr
# rh3e4okAHCS8sjAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMw
# dwYDVR0fBHAwbjA1oDOgMYYvaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL3NoYTIt
# YXNzdXJlZC1jcy1nMS5jcmwwNaAzoDGGL2h0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNv
# bS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMEwGA1UdIARFMEMwNwYJYIZIAYb9bAMB
# MCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCAYG
# Z4EMAQQBMIGEBggrBgEFBQcBAQR4MHYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3Nw
# LmRpZ2ljZXJ0LmNvbTBOBggrBgEFBQcwAoZCaHR0cDovL2NhY2VydHMuZGlnaWNl
# cnQuY29tL0RpZ2lDZXJ0U0hBMkFzc3VyZWRJRENvZGVTaWduaW5nQ0EuY3J0MAwG
# A1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggEBAEVLR8AbjGZQ+Uk30vsd5LcQ
# J+8v06BuT2roxJSMx1z5cOFCJZ2RXz7ahEYYJ2n7Qn92HxC7LcP1Pf1ytv/z9iPb
# 2/h0Ry6l+wIZjKcrORqK95auj+Jau8HZYzsEMF8OPrEITW4McF3m17tAgQABzfM8
# RwqKVdtTDplNO6NGA6PjYA2rgK+5vOKlKmBmFjXwdsPqSX6nsJZIo3QObMYjpjkN
# hNPqA3D2xP30O4Yw5N2x36BqVnkqd6CrfMPEw5R8MIjml9XXLHXq3tGzHHtoMuuo
# JHvS1SAZS9b8lUBpUnXR/PbNAN55+ON9JLQ7UO5a7vLsnL4TYOPa3y67c5f6VvUx
# ghcuMIIXKgIBATCBhjByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQg
# SW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2Vy
# dCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBTaWduaW5nIENBAhAPBgj/2wurnAE0jT4T
# EjebMAsGCWCGSAFlAwQCAaCBxzAQBgorBgEEAYI3AgEMMQIwADAZBgkqhkiG9w0B
# CQMxDAYKKwYBBAGCNwIBBDAcBgkqhkiG9w0BCQUxDxcNMjIwMjIxMTQ0OTQ2WjAc
# BgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTArBgkqhkiG9w0BCTQxHjAcMAsG
# CWCGSAFlAwQCAaENBgkqhkiG9w0BAQsFADAvBgkqhkiG9w0BCQQxIgQgZybX7g+c
# llET5htXvSGAGoXaqSGWow7Mpnn7y73Ky1QwDQYJKoZIhvcNAQELBQAEggEAPSIu
# eDeo+cgG9vY/AMe7+WBeS+n0ARaXkKRG0bYK6pdiu9L8Yb4ZakkbSG7xj1kDyDOH
# WpI3G5qfI03thvvJuttX7A+1pzkAhPr4jtYfX39aL7OtGNLFGJoanbiHa3jFSj28
# IlL740eCJsx4OoQiijVinl3iT6QDqJ5d7/VhKLkfVsHq+dxhkEqtI/VOtn0gGfhh
# bMhgyOSbXKGkld5eZrREvSog3/R+utBBUNCZbElWbeKybtrB8jCsGzD62WtAZqHn
# WEDvKuuUO8eh7dTdQKBmjoqo2F3KfIWEgdXaPR6pnT/RE0cNxvhOzGmmsfoI/hDt
# 6Fn/dtwd3LAsSdWNBKGCFLAwghSsBgorBgEEAYI3AwMBMYIUnDCCFJgGCSqGSIb3
# DQEHAqCCFIkwghSFAgEDMQ8wDQYJYIZIAWUDBAIBBQAwcAYLKoZIhvcNAQkQAQSg
# YQRfMF0CAQEGCmCGSAGG+mwKAwUwMTANBglghkgBZQMEAgEFAAQggp1joqe8rhD/
# mcdFbqmtLHKr1wW43sKggbmvLG1PrqkCCClhbeDGM/xKGA8yMDIyMDIyMTE0NTEw
# OFqggg9VMIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIG
# A1UEChMLRW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNf
# MjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChj
# KSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0
# IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFa
# Fw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UE
# CxQ3d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGlt
# aXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
# ZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
# KDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqj
# IAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3
# Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
# hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU
# 4q941mVTXTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtI
# pGmG4zU/HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJm
# Q3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
# /zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQAD
# ggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4x
# mf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpE
# lesYT6YfzX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrD
# tRnDvV5bu/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBC
# bJPKVt7+bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gI
# FVbPv/ErfF6adulZkMV8gzURZVEwggUTMIID+6ADAgECAgxY2hP/AAAAAFHODfcw
# DQYJKoZIhvcNAQELBQAwgbQxFDASBgNVBAoTC0VudHJ1c3QubmV0MUAwPgYDVQQL
# FDd3d3cuZW50cnVzdC5uZXQvQ1BTXzIwNDggaW5jb3JwLiBieSByZWYuIChsaW1p
# dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk
# MTMwMQYDVQQDEypFbnRydXN0Lm5ldCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAo
# MjA0OCkwHhcNMTUwNzIyMTkwMjU0WhcNMjkwNjIyMTkzMjU0WjCBsjELMAkGA1UE
# BhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cu
# ZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDE1IEVudHJ1
# c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEmMCQGA1UEAxMdRW50
# cnVzdCBUaW1lc3RhbXBpbmcgQ0EgLSBUUzEwggEiMA0GCSqGSIb3DQEBAQUAA4IB
# DwAwggEKAoIBAQDZI+YUpOh8S4VxWPv4geZyi11Gw4gAHzjQiuHWblYw5a/aZFB9
# whM5+71mtNqE+4PQKB/LduhgUGmb885PE+LBPsHfEssyo/heRCIOzDrpjUm5YHTI
# 3lQ9QV5DXyhGqaa3yhArIrxbTVuMF2UShv0sd9XFoIzKwoPgR1d853CuYkUnMRgK
# 1MCkGFVS92DGBEuz3WgybhAfNBG4Enhk8e6p4PfjsSKPNFply4r04UVQdN+Tl6Y0
# 5tBMO583SVKnU06fLmdc7Zb8pb90UYjjqo692bEvX1AwFvRRYCJrmcv/4VQ7uftE
# OKUIOSObaUf6PMTQ56rfRrLs8ooZrCmyOJV1AgMBAAGjggEjMIIBHzASBgNVHRMB
# Af8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjA7BgNVHSAENDAyMDAGBFUdIAAw
# KDAmBggrBgEFBQcCARYaaHR0cDovL3d3dy5lbnRydXN0Lm5ldC9ycGEwMwYIKwYB
# BQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lbnRydXN0Lm5ldDAy
# BgNVHR8EKzApMCegJaAjhiFodHRwOi8vY3JsLmVudHJ1c3QubmV0LzIwNDhjYS5j
# cmwwEwYDVR0lBAwwCgYIKwYBBQUHAwgwHQYDVR0OBBYEFMPCcdJ712gFrjs5mzQl
# DGIDx1doMB8GA1UdIwQYMBaAFFXkgdERgL7YibkIozH5oSQJFrlwMA0GCSqGSIb3
# DQEBCwUAA4IBAQAdJOeadFuqcPyxDjFF1ywAf2Y6K6CaNKqsY22J+Z/fDXf9JCP8
# T5y3b4/z9B+2wf3WHMSMiGbBY426V3fTuBoeyFGtzGA2GodqKOoRZd7MPCyMdLfo
# UEPTzCjoFWwRKp8UlSnJBVe1ZzboPKmD70HBIRbTfvctEUdmdmCCEmmMdlVzD98v
# S13pbCP4B/a1fdZpRZxYfWEu/HhLQ06JkUZELKBTqEWh9hZYu5ET8kvF3wvA564p
# er1Fs+dwMOc0jut69tO10d5rE5lGs4vSTZN1tfFvv9wAKMIlv7zno2U07D8NHZeM
# +qqIIqQYNdsFjnbjEMgpj2PQrqwY2drEn1ESMIIGDDCCBPSgAwIBAgIRAI3OFfOn
# lMWHAAAAAFWSM/QwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlVTMRYwFAYD
# VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0
# L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0g
# Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJjAkBgNVBAMTHUVudHJ1c3QgVGltZXN0
# YW1waW5nIENBIC0gVFMxMB4XDTIwMDcyMjE1MzMyOVoXDTMwMTIyOTE2MjkyM1ow
# dTELMAkGA1UEBhMCQ0ExEDAOBgNVBAgTB09udGFyaW8xDzANBgNVBAcTBk90dGF3
# YTEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjErMCkGA1UEAxMiRW50cnVzdCBUaW1l
# c3RhbXAgQXV0aG9yaXR5IC0gVFNBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
# AgoCggIBAMo+7CRi4ff+39E2qTdm1nkXFJRCAKSGl7gnjOtPqffTruKrMAQIKF+b
# U6aHii3dAlJftbjltlDwnKsSwe4aVniKbkQ/qYqP19tT2cZHyAzcRlcAZwYXGoW3
# QKqvdgfnkF+UktWu1tfNeaHFNStEhF9JHNVzuIGNcpQCaqnPVpKqNpTDUMlWl4hc
# 4X9f/fvfFI49qyQN9nuPavpuHvqVvX2Q+ORCFL9VXgRUkzFD98PnwgURaKxAaccj
# N+xaTCnJ3zWzfklOxnrbzsIllJ43P4jsJE05j3/vFWtUTHHxDSF8WnXQh1OJoFvg
# HfucB8CoobQi0GKkxxd/N07OLTpY4+XwJoZNQgefvqPiGaJrcqVGv8tkWyXIRfTe
# 6Dy2/ZzzoO+DQXw2cJDDUmKwx389e+WWh6VW/w7qSQXftN0Tb0XTm8gjeSowmZ2Z
# 3MzNpS6BU1Ii8tA9ojdSkZFGcNbFSwX/TvTcZAaX/nyQhievnzRVSImrIsB1B4wh
# 2QTTHKfqbaTJUivixAKJMF7nmzHmOWWtca3vZ1vcoyTtDebiqXo6GFXe8EYuNE0a
# TZiADU7RbIV1uAPCANUiSibRjt3ttdQn1jp8Z2mG11Q/l89kvpGrbradGRB5tZcO
# 9NGFyeSux8C0qgfEH8E6V5/NDqZ65RWGsqr0opMsz4z3UfrdjNBJAgMBAAGjggFX
# MIIBUzAOBgNVHQ8BAf8EBAMCB4AwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwQQYD
# VR0gBDowODA2BgpghkgBhvpsCgMFMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly93d3cu
# ZW50cnVzdC5uZXQvcnBhMAkGA1UdEwQCMAAwaAYIKwYBBQUHAQEEXDBaMCMGCCsG
# AQUFBzABhhdodHRwOi8vb2NzcC5lbnRydXN0Lm5ldDAzBggrBgEFBQcwAoYnaHR0
# cDovL2FpYS5lbnRydXN0Lm5ldC90czEtY2hhaW4yNTYuY2VyMDEGA1UdHwQqMCgw
# JqAkoCKGIGh0dHA6Ly9jcmwuZW50cnVzdC5uZXQvdHMxY2EuY3JsMB8GA1UdIwQY
# MBaAFMPCcdJ712gFrjs5mzQlDGIDx1doMB0GA1UdDgQWBBQtVoDvjvdKQxxDobXe
# 2deoqmsmKDANBgkqhkiG9w0BAQsFAAOCAQEAWEvO2P6B11HYx1yNktJOlR6FhkPt
# 4BrmmiFCM13jkb74UHx2jCWpQdSEmejooraZl2iiIL0yqKopfAp2Gp/IVY6r03vU
# 435ZfpJwOQ/t9i/zT/90XPPnMDRAoxGja3KkMhEFfP2Ri0eoVzZSx/q1RYTRsj5C
# 5RZe3QPTqf09cGd62hPghIJnOGBWw62wiOEKN35igQa7IwTvWKAjqNEJYzDN2Rk4
# 9Otad1i+X7/rlC3/LwQwZBCPPllWLjo2Tw48lg+Pyep+f0kyH6Nfbtoin9fZFzlZ
# 3kgXegJLWHH/twwtofBnoxHc98m82R7LbAwVJ3hIFmss8a2XuHVsu5XDjjGCBKIw
# ggSeAgEBMIHIMIGyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5j
# LjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5MDcG
# A1UECxMwKGMpIDIwMTUgRW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVkIHVz
# ZSBvbmx5MSYwJAYDVQQDEx1FbnRydXN0IFRpbWVzdGFtcGluZyBDQSAtIFRTMQIR
# AI3OFfOnlMWHAAAAAFWSM/QwDQYJYIZIAWUDBAIBBQCgggGqMBoGCSqGSIb3DQEJ
# AzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjIwMjIxMTQ1MTA4WjAt
# BgkqhkiG9w0BCTQxIDAeMA0GCWCGSAFlAwQCAQUAoQ0GCSqGSIb3DQEBCwUAMC8G
# CSqGSIb3DQEJBDEiBCCEWHLfGwiHfS1CU+XH7ypyZtRWwFz0kkbh94jmAGS97TCC
# AQwGCyqGSIb3DQEJEAIvMYH8MIH5MIH2MIHzBCCVCib9x8AgGOn3kalcOPJu7z2k
# MmfKsM0VpVWvYxByyTCBzjCBuKSBtTCBsjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT
# DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn
# YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDE1IEVudHJ1c3QsIEluYy4gLSBmb3Ig
# YXV0aG9yaXplZCB1c2Ugb25seTEmMCQGA1UEAxMdRW50cnVzdCBUaW1lc3RhbXBp
# bmcgQ0EgLSBUUzECEQCNzhXzp5TFhwAAAABVkjP0MA0GCSqGSIb3DQEBCwUABIIC
# AAtfpztbVpP12x0bAEcJ4vJyHeVAUg4R8KWFdxt5Mguq7nu7DW6oxRRx+0kgciVv
# YeVjJ3vdFCvKFQeGgeCFqaVSWl8J3JdiEgKQrBakYU+rwZF5atgd1U0YoT1ORRIn
# /nAUXWd1ZcVfsSqg1YLGTlDO377vF+I5J8rsxGLMtRqGOWJiS3tt0WmEInwtTRGl
# /egdhMnhwZ2gxU+jrNYQ9+hljiKfIoRCh0eO9pG5SeBfwpX191j3PlELvfy/eRvG
# CiEzZWSrISDftHWjPFBwxP7rIl+8REJRnqCzzM8PM5jo4YIrennbJimcJrxBUAV8
# uWymySn27NVREKmTs92w8hEfqkCgf2iNVYVHJXYTrMd6PNtYYxbDU6oGODxBOgH5
# HkTtQDzm6pM/9aLF2q5tUDICIANoBfolHuJOKxTdIs8b0CcCbuAcuWUfHWkobbZq
# HitijhIEPpNj0+qmwLwR8pLIVulc9nf2YCZOXkn5nCJR3GPjBLKRIlXzP4OU+jcv
# MFVGMXoI2lKPzYPUNzHoMw7rAZtPb4ns20p4464JE60AphnGUEofdo/7ZNvTe4Lb
# 2V/ov57TX4bjrtAM1XtSqvrsUM5voFVBQ9x/UKURrBGKVfiG4FYXFVuqN/ByMBwd
# JQQcf2DtC0N6OmHckAX3nt4lxIfxz1S7sAenvw2QOtAY
# SIG # End signature block
