Strapper.psm1
$StrapperSession = [pscustomobject]@{ LogPath = $null ErrorPath = $null WorkingPath = $null ScriptTitle = $null IsLoaded = $true IsElevated = $false LogsToDB = $true LogTable = $null DBPath = "$PSScriptRoot/Strapper.db" Platform = [System.Environment]::OSVersion.Platform } if ($MyInvocation.PSCommandPath) { $scriptObject = Get-Item -Path $MyInvocation.PSCommandPath $StrapperSession.WorkingPath = $($scriptObject.DirectoryName) $StrapperSession.LogPath = Join-Path $StrapperSession.WorkingPath "$($scriptObject.BaseName)-log.txt" $StrapperSession.ErrorPath = Join-Path $StrapperSession.WorkingPath "$($scriptObject.BaseName)-error.txt" $StrapperSession.ScriptTitle = $scriptObject.BaseName $StrapperSession.LogTable = "$($scriptObject.BaseName)_log" } else { $StrapperSession.WorkingPath = (Get-Location).Path $currentDate = (Get-Date).ToString('yyyyMMdd') $StrapperSession.LogPath = Join-Path $StrapperSession.WorkingPath "$currentDate-log.txt" $StrapperSession.ErrorPath = Join-Path $StrapperSession.WorkingPath "$currentDate-error.txt" $StrapperSession.ScriptTitle = $currentDate $StrapperSession.LogTable = "$($currentDate)_log" } if ($StrapperSession.Platform -eq 'Win32NT') { $StrapperSession.IsElevated = ( New-Object ` -TypeName Security.Principal.WindowsPrincipal ` -ArgumentList ([Security.Principal.WindowsIdentity]::GetCurrent()) ).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator) } else { $StrapperSession.IsElevated = $(id -u) -eq 0 } $enums = @(@( "$PSScriptRoot/Enums/StrapperLogLevel.ps1" ) | Get-ChildItem) $classes = @(@( "$PSScriptRoot/Classes/StrapperLog.ps1" ) | Get-ChildItem) $publicFunctions = @( Get-ChildItem -Path "$PSScriptRoot/Public/*.ps1" -Recurse ) $privateFunctions = @( Get-ChildItem -Path "$PSScriptRoot/Private/*.ps1" -Recurse ) foreach ($importTarget in @($enums + $classes + $publicFunctions + $privateFunctions)) { try { . $importTarget.FullName } catch { Write-Error -Message "Failed to import $($importTarget.FullName)" } } if(!(Test-Path -LiteralPath $StrapperSession.DBPath)) { [System.Data.SQLite.SQLiteConnection]::CreateFile($StrapperSession.DBPath) } if($IsLinux -or $IsMacOS) { chmod 776 $StrapperSession.DBPath } else { $dbPathAcl = Get-Acl -Path $StrapperSession.DBPath $worldGroupName = (New-Object System.Security.Principal.SecurityIdentifier('S-1-1-0')).Translate([System.Security.Principal.NTAccount]).Value $fsar = [System.Security.AccessControl.FileSystemAccessRule]::new($worldGroupName, "FullControl", "Allow") $dbPathAcl.SetAccessRule($fsar) Set-Acl -Path $StrapperSession.DBPath -AclObject $dbPathAcl } Export-ModuleMember -Variable StrapperSession # SIG # Begin signature block # MIIlhAYJKoZIhvcNAQcCoIIldTCCJXECAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBbgOdAXCrsVA/o # EQVsvye0zIXqfyya5vry6SbzhwMfmKCCEtEwggXdMIIDxaADAgECAgh7LJvTFoAy # mTANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx # EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8G # A1UEAwwoU1NMLmNvbSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTAe # Fw0xNjAyMTIxNzM5MzlaFw00MTAyMTIxNzM5MzlaMHwxCzAJBgNVBAYTAlVTMQ4w # DAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENv # cnBvcmF0aW9uMTEwLwYDVQQDDChTU0wuY29tIFJvb3QgQ2VydGlmaWNhdGlvbiBB # dXRob3JpdHkgUlNBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA+Q/d # oyt9y9Aq/uxnhabnLhu6d+Hj9a+k7PpKXZHEV0drGHdrdvL9k+Q9D8IWngtmw1aU # nheDhc5W7/IW/QBi9SIJVOhlF05BueBPRpeqG8i4bmJeabFf2yoCfvxsyvNB2O3Q # 6Pw/YUjtsAMUHRAOSxngu07shmX/NvNeZwILnYZVYf16OO3+4hkAt2+hUGJ1dDyg # +sglkrRueiLH+B6h47LdkTGrKx0E/6VKBDfphaQzK/3i1lU0fBmkSmjHsqjTt8qh # k4jrwZe8jPkd2SKEJHTHBD1qqSmTzOu4W+H+XyWqNFjIwSNUnRuYEcM4nH49hmyl # D0CGfAL0XAJPKMuucZ8POsgz/hElNer8usVgPdl8GNWyqdN1eANyIso6wx/vLOUu # qfqeLLZRRv2vA9bqYGjqhRY2a4XpHsCz3cQk3IAqgUFtlD7I4MmBQQCeXr9/xQiY # ohgsQkCz+W84J0tOgPQ9gUfgiHzqHM61dVxRLhwrfxpyKOcAtdF0xtfkn60Hk7ZT # NTX8N+TD9l0WviFz3pIK+KBjaryWkmo++LxlVZve9Q2JJgT8JRqmJWnLwm3KfOJZ # X5es6+8uyLzXG1k8K8zyGciTaydjGc/86Sb4ynGbf5P+NGeETpnr/LN4CTNwumam # du0bc+sapQ3EIhMglFYKTixsTrH9z5wJuqIz7YcCAwEAAaNjMGEwHQYDVR0OBBYE # FN0ECQei9Xp9UlMSkpXuOIAlDaZZMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgw # FoAU3QQJB6L1en1SUxKSle44gCUNplkwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 # DQEBCwUAA4ICAQAgGBGUKfsmnRweHnBh8ZVyk3EkrWiTWI4yrxuzcAP8JSt0hZA9 # eGr0uYullzu1GJG7Hqf5QFuR+VWZrx4R0Fwdp2bjsZQHDDI5puobsHnYHZxwROOK # 3cT5lR+KOEM/AYWlR6c9RrK85SJo93uc2Cw+CiHILTOsv8WBmTF0wXVxxb6x8CNF # 9J1r/BljnaO8BMYYCyW7U4kPs4BQ3kXuRH+rlHhkmNP2KN2H2HBldPsOuRPrpw9h # qTKWzN677WNMGLupQPegVG4giHF1GOp6tDRy4CMnd1y2kOqGJUCr7zMPy5+CvqIg # +/a1LRrmwoWxdA/7yGUCpFIBR91JIsG/2OtrrH7e7GMzFbcjCI/GD41BWt2OxbmP # 5UU/eNu60htAsf5xTT/ggaK6XrTsFeCT3QgffuFVmQsh3pOeCvvmo0m9NjD+53ey # oHWXtS2BiBdlIPfakACfyVLMMso1fPU9D9gr1/UmbMkGNJYW6nBZGjJ5eQu2iH8P # Ukg9v2zYokQu0U63cljTiROV/kSr+NeLG26cvCygW9VqAK9fN+HV+hALmJyG5yaP # zvDsbopXC4DjTrLAoGNhkLpVaDd0araS25+hhiK2ZScO7LafQmDkZ8K12kELxNOL # YRu8+h+RK9dEB166KazZxenvU0ha64DxKFghzbAGVfsnP1OQcKkEHlcnuTCCBnIw # ggRaoAMCAQICCGQzUdPHOJ8IMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNVBAYTAlVT # MQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NM # IENvcnBvcmF0aW9uMTEwLwYDVQQDDChTU0wuY29tIFJvb3QgQ2VydGlmaWNhdGlv # biBBdXRob3JpdHkgUlNBMB4XDTE2MDYyNDIwNDQzMFoXDTMxMDYyNDIwNDQzMFow # eDELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9u # MREwDwYDVQQKDAhTU0wgQ29ycDE0MDIGA1UEAwwrU1NMLmNvbSBDb2RlIFNpZ25p # bmcgSW50ZXJtZWRpYXRlIENBIFJTQSBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIP # ADCCAgoCggIBAJ+DE3OqsMZtIcvbi3qHdNBx3I6Xcprku4g0tN2AA8YvRaR0mr8e # D1Dqnm1485/6USapPZ3RspRXPvs5iRuRK1bvZ8vmC+MOOYzGNfSMPd0l6QGsF0J9 # WBZA3PnVKEQdlWQwYTpk8pfXc0x9eyMCbfN161U9b6otxK++dKxd/mq2/OpceekP # Q5y1UgUP7z6xsY/QSa2m40IZVD/zLw6hy3z+E/kjOdolHLg+AEo6bzIwN2Qex651 # B9hV0hjJDoq8o1zwfAqnhYHCDq+PmVzTYCW8g1ppHCUTzXL165yAm9wsZ8TdyQmY # 1XPrxCGj5TKOPi9SmMZgN2SMsm9KVHIYzCeH+s11omMhTLU9ZP0rpptVryZMYLS5 # XP6rQ72t0BNmUB8L0omm/9eABvHDEQIzM2EX91Yfji87aOcV8XdWSimeA9rCKyZh # MlugVuVJKY02p/XHUqJWAyAvOHiAvfYGrkE0y5RFvZvHiRgfC7r/qa5qQJkT3e9Q # 3wG68gTW0DHfNDheV1vIOB5W1KxIpu3/+bjBO+3CJL5EYKd3zdU9mFm0Q+qqYH3N # wuUv8ev11CDVlzRuXQRrBRHS05KMCSdE7U81MUZ+dBkFYuyJ4+ojcJjk0S/UihMY # RpNl5Vhz00w9J3oiP8P4o1W3+eaHguxFHsVuOnyxTrmraPebY9WRQbypAgMBAAGj # gfswgfgwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTdBAkHovV6fVJTEpKV # 7jiAJQ2mWTAwBggrBgEFBQcBAQQkMCIwIAYIKwYBBQUHMAGGFGh0dHA6Ly9vY3Nw # cy5zc2wuY29tMBEGA1UdIAQKMAgwBgYEVR0gADATBgNVHSUEDDAKBggrBgEFBQcD # AzA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vY3Jscy5zc2wuY29tL3NzbC5jb20t # cnNhLVJvb3RDQS5jcmwwHQYDVR0OBBYEFFTC/hCVAJPNavXnwNfZsku4jwzjMA4G # A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEA9Q8mh3CvmaLK9dbJ8I1m # PTmC04gj2IK/j1SEJ7bTgwfXnieJTYSOVNEg7mBD21dCPMewlfa+zOqjPY5PBsYr # WYZ/63MbyuVAJuA9b8z2vXHGzX0OIEA51gXSr5QIv3/CUbcrtXuDIfBj2uWc4Wku # dR1Oy2Ee9aUz3wKdFdntaZNXukZFLoC8Zb7nEj7eR/+QnBCt9laypNT61vwuvJch # s3aD0pH6BlDRsYAogP7brQ9n7fh93NlwW3q6aLWzSmYXj+fw51fdaf68XuHVjJ8T # u5WaFft5K4XVbT5nR24bB1z7VEUPFhEuEcOwvLVuHDNXlB7+QjRGjjFQTtszV5X6 # OOTmEturWC5Ft9kiyvRaR0ksKOhPjEI8ZGjp5kOsGZGpxxOCX/xxCje3nVB7PF33 # olKCNeS159MKb2v+jfmk19UdS+d9Ygj42desmUnbtYRBFC72LmCXU0ua/vGIenS6 # nnXp4NqnycwsO3tMCnjPlPc2YLaDPIpUy04NaCqUEXUmFOogN8zreRd2VXhxbeJJ # ODM32+RsWccjYua8zi5US/1eAyrI3R5LcUTQdT4xYmWLKabtJOF6HYQ0f6QXfLSs # fT81WMvDvxrdn1RWbUXlU/OIiisxo8o+UNEANOwnCMNnxlzoaL/PLhZluDxm/zuy # lauajZ3MlPDteFB/7GRHo50wggZ2MIIEXqADAgECAhAhw65pJ8430IAeozVxNmcC # MA0GCSqGSIb3DQEBCwUAMHgxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQ # MA4GA1UEBwwHSG91c3RvbjERMA8GA1UECgwIU1NMIENvcnAxNDAyBgNVBAMMK1NT # TC5jb20gQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBDQSBSU0EgUjEwHhcNMjMw # OTA3MTYyNDAzWhcNMjQwOTA2MTYyNDAzWjB/MQswCQYDVQQGEwJVUzEQMA4GA1UE # CAwHRmxvcmlkYTEaMBgGA1UEBwwRQWx0YW1vbnRlIFNwcmluZ3MxIDAeBgNVBAoM # F1Byb3ZhbCBUZWNobm9sb2dpZXMgSW5jMSAwHgYDVQQDDBdQcm92YWwgVGVjaG5v # bG9naWVzIEluYzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKr0IQn+ # /jLR4pu0N3TPJaAu31BLTo5myZZxgEqw8daUfcUC3/K20pDCwTzjIEe3Rb/5xrs5 # NQhnlCrrVslrLU2vWlWIuDzrdahSapAH66AbHc9fwsHUCdpWRKglgDoaaAo4KDYS # yR5BkRqlS4Zc/MbH7+T4hYWrmWGd6DiuQuROdyaTLG6mu+TB7clKMSl0aakOccYl # 23+1RNPN9QIDv3Hv6V6C6mpqPJ/z7wSnHGH/ELiGcexIGDCoWon2H9/su6nbAn/R # FR+4iwjGeIa9a7oDFs5e6Nk0ulR/PjMHVGhxMAm1dV2Fsd2lrP1pGA15k8GWi/h+ # V6u5C1toJtnFzy8E+q45U/6zyo2PQd4HlPzw9auzy9l6X4tMtMEQD55G8TR/+VYx # 7ruJa9VCl477XcOY99oPyaWOYiliU7NbqtYcINHNun6xyDSC3pRidNOMHkovEXmn # 3sAEYOgDLkNo7sljfXdWd/kawVXEOtZ7WqjdKcysZEdE6MrwGRtruufFdQIDAQAB # o4IBczCCAW8wDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBRUwv4QlQCTzWr158DX # 2bJLuI8M4zBYBggrBgEFBQcBAQRMMEowSAYIKwYBBQUHMAKGPGh0dHA6Ly9jZXJ0 # LnNzbC5jb20vU1NMY29tLVN1YkNBLUNvZGVTaWduaW5nLVJTQS00MDk2LVIxLmNl # cjBRBgNVHSAESjBIMAgGBmeBDAEEATA8BgwrBgEEAYKpMAEDAwEwLDAqBggrBgEF # BQcCARYeaHR0cHM6Ly93d3cuc3NsLmNvbS9yZXBvc2l0b3J5MBMGA1UdJQQMMAoG # CCsGAQUFBwMDME0GA1UdHwRGMEQwQqBAoD6GPGh0dHA6Ly9jcmxzLnNzbC5jb20v # U1NMY29tLVN1YkNBLUNvZGVTaWduaW5nLVJTQS00MDk2LVIxLmNybDAdBgNVHQ4E # FgQUUP7qIdXcLTXxzeyjVjLWVrTdt+AwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3 # DQEBCwUAA4ICAQCW0L2RCITI/Hk1s2w0KVkTsMkgJ0GEEh19ZTZ3BcnYfaqNxe3u # OeHCFGxHtB01MU7Ee8zObjiF/vt7wSlb3ln8eDT/VD/lD/ASP5QEAXf2SOXfkoTx # G2N7gJAlqx5alnND71lb/NcLEF6/1ZAn+w4CSKsyfEHn7uMlP1HRew9dcksjXuFr # czUnCh3kJp2qfsH7xN3JskuZyctZNHjNDur8XGEBVM3ddTPJDPyBuoV/VN90N559 # yNUn3G/mG8XPukLZBY7B/IO3AcAexhtotOgHgdodZaiW0lCuGdSAmHfMpZWE689G # vAKNdlWUhLwt8agYN4zw0ObWClDJtwWqjTmv2mW1i4gxDyHZcrPNE70NIhzn536f # zXMZVWc/5KTlxfB0RQPCSv5YQ/f3AsOeJSR7IMoikqE2GeCwhW0tVzENvXPIy1/G # bjgQAiG+PKk93VDtgyZ3GFVuUV058olSqtUhJvbuDBSnrR7pdJMEOC4NRZ2rV1LC # cz6IEzEsbq1hmdLffDm8ZVBwQXcolcf/ExwNMo2RAkI29t+VDrFsVGm+4rdo0cAF # Yn/DwP1Ku1L4sKxdrrMJcpKi9ucd31sVTP5TbBGbiOhss+pMiY9eC2UIReeIKuZd # aKh0JeSPvPFQRO9kFbZZXemsk9zq4UdRzAwQk80IL31WpXqwYB4S+dU0jjGCEgkw # ghIFAgEBMIGMMHgxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UE # BwwHSG91c3RvbjERMA8GA1UECgwIU1NMIENvcnAxNDAyBgNVBAMMK1NTTC5jb20g # Q29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBDQSBSU0EgUjECECHDrmknzjfQgB6j # NXE2ZwIwDQYJYIZIAWUDBAIBBQCgga8wFAYKKwYBBAGCNwIBDDEGMAShAoAAMBkG # CSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEE # AYI3AgEVMC0GCSqGSIb3DQEJNDEgMB4wDQYJYIZIAWUDBAIBBQChDQYJKoZIhvcN # AQELBQAwLwYJKoZIhvcNAQkEMSIEICKrm+doScLNAv7eeKHC7mBTrSLJHNslwML5 # maNNlqOcMA0GCSqGSIb3DQEBCwUABIIBgKNoYSYbwOIiy7Wd+sTH8ma9xMXHD6jq # K1WkBIQSE/ZV6Fwdw9Fk7xQATKZd3wk2nfaDqjPwp3MN1NWJftvQ85viXAztB8sR # j2LswcrKwukE7Q9eyp6kOsie9Y/OIFl2n3fY5wesLY9FjhghZaz+0JZfptERVaRe # xUe7Qm6kfO4JBWLTrwgiK+oUDqOeYWTV2TVRp64IXzSS6eB+kJdr7iD8dalSXFQ5 # DA7pJdX1y0aqXcuMMjQ2c6Kqk4AskccFaEzElJ/jC0AlrSJ/U9VOhZrFXV9d/6Rp # WO1T3uHdsbT5GisPMn2jJHVOC/IbRpxeABUigeXBDs5azYZqCnMHQda1+UR0FzEj # RyRpGISeQnGK0R3v28ZzkwAkZyXkmy/Z4LSYKLcwQU3M/797/Hm8PnDS6HHTeUb+ # aS3hfxGDDyK7yE386kXtxZx+PsAHDFzymz0LEIBLGNt1TaUAn3mMqMmp82T51jrd # w35tjhmUJ1cDOFO00+NbKow91dZfxMCvVqGCDxswgg8XBgorBgEEAYI3AwMBMYIP # BzCCDwMGCSqGSIb3DQEHAqCCDvQwgg7wAgEDMQ0wCwYJYIZIAWUDBAIBMH8GCyqG # SIb3DQEJEAEEoHAEbjBsAgEBBgwrBgEEAYKpMAEDBgEwMTANBglghkgBZQMEAgEF # AAQgy46b0Z1LmcixxRKvFTl2Vsfhna4T7cyJEJ0q8KIqoeQCCH2f6tfLGqdyGA8y # MDIzMTExNTE5MzEyN1owAwIBAQIGAYvUd5DMoIIL/TCCBPkwggLhoAMCAQICEBrW # CKfWNLXN3pfLo8zw0EswDQYJKoZIhvcNAQELBQAwczELMAkGA1UEBhMCVVMxDjAM # BgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMREwDwYDVQQKDAhTU0wgQ29y # cDEvMC0GA1UEAwwmU1NMLmNvbSBUaW1lc3RhbXBpbmcgSXNzdWluZyBSU0EgQ0Eg # UjEwHhcNMjIxMjA5MTgzMDUxWhcNMzIxMjA2MTgzMDUwWjBrMQswCQYDVQQGEwJV # UzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0b24xETAPBgNVBAoMCFNT # TCBDb3JwMScwJQYDVQQDDB5TU0wuY29tIFRpbWVzdGFtcGluZyBVbml0IDIwMjIw # WTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATefPqSJZSy2TTZyF4GhypEr9YCY44K # Qr+4/R2+4QOHyAxCLyYMIolVLQzaqOySeI6nI4j/+L1aB3Jv9HeBPTu4o4IBWjCC # AVYwHwYDVR0jBBgwFoAUDJ0QJY6apxuZh0PPCH7hvYGQ9M8wUQYIKwYBBQUHAQEE # RTBDMEEGCCsGAQUFBzAChjVodHRwOi8vY2VydC5zc2wuY29tL1NTTC5jb20tdGlt # ZVN0YW1waW5nLUktUlNBLVIxLmNlcjBRBgNVHSAESjBIMDwGDCsGAQQBgqkwAQMG # ATAsMCoGCCsGAQUFBwIBFh5odHRwczovL3d3dy5zc2wuY29tL3JlcG9zaXRvcnkw # CAYGZ4EMAQQCMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMEYGA1UdHwQ/MD0wO6A5 # oDeGNWh0dHA6Ly9jcmxzLnNzbC5jb20vU1NMLmNvbS10aW1lU3RhbXBpbmctSS1S # U0EtUjEuY3JsMB0GA1UdDgQWBBQFupPR3+IUrCAqhlkxfyhyDq2sXzAOBgNVHQ8B # Af8EBAMCB4AwDQYJKoZIhvcNAQELBQADggIBAFqotJYQYw1EaMzHk5NlJLaJzxDf # 3njeZNS3iMrOvZPAMnJxzPeIWGqneI6rxGdOwewqS3gYcCPZKEag2WVTjrhBpFtN # 5oCdbnaCQuWcJHvf3H104NBhYsqkCrMwWoo3E2Udaw49PBeZoZFMykPraTG/I3W7 # 6FoP1BuzI9xhSG56DzRn3lIwIg80JgimsRASJEwcw4K2Uk0a1aO3hJ8/RHhZ7EZ2 # bSEQfyym66kUbuGsksxzbgtCSZpk76XLfT+rSOIL5SY+WCIiVd+FrUPfLhFMSzxj # wbVuRA5FLdcL7+p9kuSggpUI+m2fzwropdX6GHpp5EfYdpWGZDdB9R+fbKiLC54g # bzd2ubArEn1QHOwe5K1qXqjYrelatIbNlA5NUS7BJmmcjlLtiGMfqw/fmSfGOvo1 # le1HFnRFj1QJYX9rYku2iTtjGS6jiUAmP6Q2yiunn8nNVtgUYCorD5NsgbmVEqzc # cIIkKImW9IxWHOSFGu41ZswpSGKDABcdq+NcUVTwjg6QlvGi3rQtAVZKaXWzbbZS # iR7hM0CDtcPwXPKdhbtdGkJmvCvBfX357q7+dmkB3XHYLteoxEfClzMRMJ9AKF0q # Sh6hf4PTg9WbLwFNCClWQeM9CXtpi5EWD3wu5DlfIDpInNwUZDPOrVO0DGu9+msd # 72naMPXZTl+cvrv9MIIG/DCCBOSgAwIBAgIQbVIYcIfoI02FYADQgI+TVjANBgkq # hkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNV # BAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwo # U1NMLmNvbSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTAeFw0xOTEx # MTMxODUwMDVaFw0zNDExMTIxODUwMDVaMHMxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI # DAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjERMA8GA1UECgwIU1NMIENvcnAxLzAt # BgNVBAMMJlNTTC5jb20gVGltZXN0YW1waW5nIElzc3VpbmcgUlNBIENBIFIxMIIC # IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArlEQE9L5PCCgIIXeyVAcZMnh # /cXpNP8KfzFI6HJaxV6oYf3xh/dRXPu35tDBwhOwPsJjoqgY/Tg6yQGBqt65t94w # px0rAgTVgEGMqGri6vCI6rEtSZVy9vagzTDHcGfFDc0Eu71mTAyeNCUhjaYTBkyA # Nqp9m6IRrYEXOKdd/eREsqVDmhryd7dBTS9wbipm+mHLTHEFBdrKqKDM3fPYdBOr # o3bwQ6OmcDZ1qMY+2Jn1o0l4N9wORrmPcpuEGTOThFYKPHm8/wfoMocgizTYYeDG # /+MbwkwjFZjWKwb4hoHT2WK8pvGW/OE0Apkrl9CZSy2ulitWjuqpcCEm2/W1RofO # unpCm5Qv10T9tIALtQo73GHIlIDU6xhYPH/ACYEDzgnNfwgnWiUmMISaUnYXijp0 # IBEoDZmGT4RTguiCmjAFF5OVNbY03BQoBb7wK17SuGswFlDjtWN33ZXSAS+i45My # 1AmCTZBV6obAVXDzLgdJ1A1ryyXz4prLYyfJReEuhAsVp5VouzhJVcE57dRrUanm # Pcnb7xi57VPhXnCuw26hw1Hd+ulK3jJEgbc3rwHPWqqGT541TI7xaldaWDo85k4l # R2bQHPNGwHxXuSy3yczyOg57TcqqG6cE3r0KR6jwzfaqjTvN695GsPAPY/h2YksN # gF+XBnUD9JBtL4c34AcCAwEAAaOCAYEwggF9MBIGA1UdEwEB/wQIMAYBAf8CAQAw # HwYDVR0jBBgwFoAU3QQJB6L1en1SUxKSle44gCUNplkwgYMGCCsGAQUFBwEBBHcw # dTBRBggrBgEFBQcwAoZFaHR0cDovL3d3dy5zc2wuY29tL3JlcG9zaXRvcnkvU1NM # Y29tUm9vdENlcnRpZmljYXRpb25BdXRob3JpdHlSU0EuY3J0MCAGCCsGAQUFBzAB # hhRodHRwOi8vb2NzcHMuc3NsLmNvbTA/BgNVHSAEODA2MDQGBFUdIAAwLDAqBggr # BgEFBQcCARYeaHR0cHM6Ly93d3cuc3NsLmNvbS9yZXBvc2l0b3J5MBMGA1UdJQQM # MAoGCCsGAQUFBwMIMDsGA1UdHwQ0MDIwMKAuoCyGKmh0dHA6Ly9jcmxzLnNzbC5j # b20vc3NsLmNvbS1yc2EtUm9vdENBLmNybDAdBgNVHQ4EFgQUDJ0QJY6apxuZh0PP # CH7hvYGQ9M8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQCSGXUN # plpCzxkH2fL8lPrAm/AV6USWWi9xM91Q5RN7mZN3D8T7cm1Xy7qmnItFukgdtiUz # LbQokDJyFTrF1pyLgGw/2hU3FJEywSN8crPsBGo812lyWFgAg0uOwUYw7WJQ1teI # CycX/Fug0KB94xwxhsvJBiRTpQyhu/2Kyu1Bnx7QQBA1XupcmfhbQrK5O3Q/yIi/ # /kN0OkhQEiS0NlyPPYoRboHWC++wogzV6yNjBbKUBrMFxABqR7mkA0x1Kfy3Ud08 # qyLC5Z86C7JFBrMBfyhfPpKVlIiiTQuKz1rTa8ZW12ERoHRHcfEjI1EwwpZXXK5J # 5RcW6h7FZq/cZE9kLRZhvnRKtb+X7CCtLx2h61ozDJmifYvuKhiUg9LLWH0Or9D3 # XU+xKRsRnfOuwHWuhWch8G7kEmnTG9CtD9Dgtq+68KgVHtAWjKk2ui1s1iLYAYxn # Dm13jMZm0KpRM9mLQHBK5Gb4dFgAQwxOFPBslf99hXWgLyYE33vTIi9p0gYqGHv4 # OZh1ElgGsvyKdUUJkAr5hfbDX6pYScJI8v9VNYm1JEyFAV9x4MpskL6kE2Sy8rOq # S9rQnVnIyPWLi8N9K4GZvPit/Oy+8nFL6q5kN2SZbox5d69YYFe+rN1sDD4CpNWw # BBTI/q0V4pkgvhL99IV2XasjHZf4peSrHdL4RjGCAlgwggJUAgEBMIGHMHMxCzAJ # BgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjERMA8G # A1UECgwIU1NMIENvcnAxLzAtBgNVBAMMJlNTTC5jb20gVGltZXN0YW1waW5nIElz # c3VpbmcgUlNBIENBIFIxAhAa1gin1jS1zd6Xy6PM8NBLMAsGCWCGSAFlAwQCAaCC # AWEwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0y # MzExMTUxOTMxMjdaMCgGCSqGSIb3DQEJNDEbMBkwCwYJYIZIAWUDBAIBoQoGCCqG # SM49BAMCMC8GCSqGSIb3DQEJBDEiBCCtY2wm5AXQEDc3NyUtGYTHWFE93yShu9HM # FBvlOTFLWDCByQYLKoZIhvcNAQkQAi8xgbkwgbYwgbMwgbAEII3FxCVC0k8Vz/XI # GW7UWoNo1MrWvcvkIaneI1Cdi9MiMIGLMHekdTBzMQswCQYDVQQGEwJVUzEOMAwG # A1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0b24xETAPBgNVBAoMCFNTTCBDb3Jw # MS8wLQYDVQQDDCZTU0wuY29tIFRpbWVzdGFtcGluZyBJc3N1aW5nIFJTQSBDQSBS # MQIQGtYIp9Y0tc3el8ujzPDQSzAKBggqhkjOPQQDAgRHMEUCIFtW8JNz3uGbPDNJ # +S/W+UQXnTO05QiQNXEpBHXYWvI2AiEA4kCUY7sDbgtuLkAFtQUeBSzb6UHhRgdV # TmH39S325YU= # SIG # End signature block |