public/UpdateConnection.ps1
|
<#
.Synopsis Script to update a connection using the GCS Admin UpdateV2 API. .Description This script updates an existing connection by calling the GCS Admin UpdateV2 API (PATCH /v1.0/admin/connections/{connectionId}/v2) and stores the response in a JSON file. The update payload can be supplied either through individual convenience parameters (connection name, description, provider parameters, recrawl/defaults flags) or through a JSON file that contains the complete UpdateConnectionRequest body for advanced updates (schema, ACL settings, content experiences, data source instances, etc.). .Parameter ConnectionId Mandatory parameter specifying the ConnectionId of the connection to be updated. .Parameter RequestBodyFilePath Path to a JSON file containing the complete UpdateConnectionRequest body. When provided, the file content is sent as-is and the individual convenience parameters are ignored. .Parameter ConnectionName Optional friendly name for the connection (maps to the "datasetName" request property). .Parameter Description Optional description for the connection. .Parameter ProviderParameters Optional provider parameters (serialized configuration string) for the connection. .Parameter RecrawlNeeded Optional switch specifying that a recrawl is needed after the update. .Parameter SetDefaults Optional switch specifying that the update should apply the connection defaults. .Parameter OutputFile Optional parameter specifying the output file location for logging and the stored response. If not provided, a default filename based on the command type and timestamp is used. .Parameter TenantId Optional parameter specifying the TenantId of the connection to be updated. .Parameter Torus Optional switch parameter to indicate if Torus is being used. #> function Update-Connection { [CmdletBinding(DefaultParameterSetName = "ByProperties")] param( # Connection Id [Parameter(Mandatory=$true, ParameterSetName="ByProperties")] [Parameter(Mandatory=$true, ParameterSetName="ByFile")] [string] $ConnectionId, # Full request body file path [Parameter(Mandatory=$true, ParameterSetName="ByFile")] [string] $RequestBodyFilePath, # Connection name (datasetName) [Parameter(Mandatory=$false, ParameterSetName="ByProperties")] [string] $ConnectionName, # Description [Parameter(Mandatory=$false, ParameterSetName="ByProperties")] [string] $Description, # Provider parameters [Parameter(Mandatory=$false, ParameterSetName="ByProperties")] [string] $ProviderParameters, # Recrawl needed flag [Parameter(Mandatory=$false, ParameterSetName="ByProperties")] [switch] $RecrawlNeeded, # Set defaults flag [Parameter(Mandatory=$false, ParameterSetName="ByProperties")] [switch] $SetDefaults, # Output File Location for logging and response [Parameter(Mandatory=$false)] [string] $OutputFile, # Tenant Id [Parameter(Mandatory=$false)] [string] $TenantId, # Torus Check [Parameter(Mandatory=$false)] [switch] $Torus ) try{ $UrlPath = "/v1.0/admin/connections/$ConnectionId/v2" if ($PSCmdlet.ParameterSetName -eq "ByFile") { # Validate and read the full request body from the supplied JSON file $fileValidation = ValidateFile -FilePath $RequestBodyFilePath if($fileValidation -eq $false){ Write-Error "Request body file validation failed" throw } $RequestBodyJson = Get-Content -Path $RequestBodyFilePath -Raw -Encoding UTF8 try { $null = $RequestBodyJson | ConvertFrom-Json } catch { Write-Error "The JSON content of the file is not valid." throw } } else { # Build the request body from the supplied convenience parameters $RequestBody = @{} if (-not [string]::IsNullOrEmpty($ConnectionName)) { $RequestBody["datasetName"] = $ConnectionName } if ($PSBoundParameters.ContainsKey("Description")) { $RequestBody["description"] = $Description } if (-not [string]::IsNullOrEmpty($ProviderParameters)) { $RequestBody["providerParameters"] = $ProviderParameters } if ($RecrawlNeeded.IsPresent) { $RequestBody["isCrawlNeeded"] = $true } if ($SetDefaults.IsPresent) { $RequestBody["setDefaults"] = $true } if ($RequestBody.Count -eq 0) { Write-Error "No update fields specified. Provide at least one of -ConnectionName, -Description, -ProviderParameters, -RecrawlNeeded, -SetDefaults, or use -RequestBodyFilePath." throw } $RequestBodyJson = $RequestBody | ConvertTo-Json -Depth 10 } ExecuteWithTranscriptAndStoreResponse -UrlPath $UrlPath -Method "Patch" -CommandType "Update-Connection" -ConnectionId $ConnectionId -RequestBody $RequestBodyJson -OutputFile $OutputFile -OutputFileExtension "json" -shouldRethrow $true } catch{ Write-Error "Error happend while execution UpdateConnection.ps1. Error = $_" throw } } # SIG # Begin signature block # MIIngAYJKoZIhvcNAQcCoIIncTCCJ20CAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDBpfJXol8BqdD2 # xclxjAuCFGkR43tLo0e3mza2530hFqCCDLowggX1MIID3aADAgECAhMzAAACHU0Z # yE7XD1dIAAAAAAIdMA0GCSqGSIb3DQEBCwUAMFcxCzAJBgNVBAYTAlVTMR4wHAYD # VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBD # b2RlIFNpZ25pbmcgUENBIDIwMjQwHhcNMjYwNDE2MTg1OTQzWhcNMjcwNDE1MTg1 # OTQzWjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UE # BxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYD # VQQDExVNaWNyb3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IB # DwAwggEKAoIBAQDQvewXxx9gZZFC6Ys1WBay8BJ8kGA4JQnH5CMafqOASlTpK9H8 # o5ZXTXt0caVQTNMUPt445wXYD+dFtaKWTwDn1I52oUSrC9vJin1Gsqt+zyKJL5Dg # 3eQXbQNR61DmMy20GLTIO3SFed9Rfi/ophgCLGFLDR3r0KvHjwMb/jYWS0celV/4 # Lz27LfAekm8v9E5IXaeiXbAUYZKK090n4CVl3JBtbN+9DtI9SNu/yjvozW52/u7R # X/Ttpa/KDlpuokZ+Zcbvmtd9ur9gFLvZzh41o9MsE/clQtdaFWGvuo6Jua/ntpgk # ey3E5/vBFe+MJPG6phdnuo6r57ZudCudiI1bAgMBAAGjggGbMIIBlzAOBgNVHQ8B # Af8EBAMCB4AwHwYDVR0lBBgwFgYKKwYBBAGCN0wIAQYIKwYBBQUHAwMwHQYDVR0O # BBYEFH6QuMwqcPG0hQlQ6c5jCtTTLrVeMEUGA1UdEQQ+MDykOjA4MR4wHAYDVQQL # ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xFjAUBgNVBAUTDTIzMDAxMis1MDc1NTkw # HwYDVR0jBBgwFoAUf1k/VCHarU/vBeXmo9ctBpQSCDEwYAYDVR0fBFkwVzBVoFOg # UYZPaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jcmwvTWljcm9zb2Z0 # JTIwQ29kZSUyMFNpZ25pbmclMjBQQ0ElMjAyMDI0LmNybDBtBggrBgEFBQcBAQRh # MF8wXQYIKwYBBQUHMAKGUWh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMv # Y2VydHMvTWljcm9zb2Z0JTIwQ29kZSUyMFNpZ25pbmclMjBQQ0ElMjAyMDI0LmNy # dDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBCwUAA4ICAQBKTbYOjzwTG/DXGaz9 # s6+fQeaTtDcFmMY+5UyVFCyj7Pv+5i37qfX8lSL/tBIfYQfWsMuBQlfZurJD6r4H # VJ2CeH+1fgiq8dcHdVKoZ3Sa2qXoX3cq9iS8cVb06B7+5/XJ7I0OxHH9fDsvJ3T3 # w5V/ZtAIFmLrl+P0CtG+92uzRsn0nTbdFjOkLMLWPLAU3THohKRlSEMgFJpPkm5n # 5UAZ35xX6FWCrDLsSKb555bTifwa8mJBwdlof0bmfYidH+dxZ1FdDxvLnNl9zeKs # A4kejaaIqqIPguhwAti5Ql7BlTNoJNwxCvBmqW2MQLnCkYN/VVUsR3V2x/rcTNzo # Bf/Z/SpROvdaA2ZOOd1uioXJt3tdLQ7vHpqpib0KfWr/FWXW10q38VxfCnRQBqzb # SuztR7nEMuzX7Ck+B/XaPDXd1qh72+QYyB0Z2VzWmO9zsnb9Uq/dwu8LGeQqnyu6 # 7SDGACvnXii2fb9+US492VTnXSnFKyqwgzUyFMtZK1/sHYTv6bG4TtQUygQxTN+Z # V+aJIlKO2MqZ7bKrAnOzS9m6NgoTdWOq11bTOZwKlIEV/EhV9SWkDmdpR/hPPT2v # 6TEj4F8PT/zHjRezIU5c/DGlt/VhY/pK0XkJtEyMmmS1BMtjU/rqBZVMIm3dnxQs # /TBByr+Cf8Z1r7aifQVQ+WSqzjCCBr0wggSloAMCAQICEzMAAAA5O7Y3Gb8GHWcA # AAAAADkwDQYJKoZIhvcNAQEMBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpX # YXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg # Q29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRpZmljYXRl # IEF1dGhvcml0eSAyMDExMB4XDTI0MDgwODIwNTQxOFoXDTM2MDMyMjIyMTMwNFow # VzELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEo # MCYGA1UEAxMfTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAyNDCCAiIwDQYJ # KoZIhvcNAQEBBQADggIPADCCAgoCggIBANgBnB7jOMeqlRYHNa265v4IY9fH8TKh # emHfPINe1gpLaV3dhg324WwH06LcHbpnsBukCDNitryo0dtS/EW6I/yEL/bLSY8h # KpbfQuWusBPr9qazYcDxCW/qnjb5JsI1s8bNOg3bVATvQVL4tcf03aTycsz8QeCd # M0l/yHRObJ9QqazM1r6VPEOJ7LL+uEEb73w6QCuhs89a1uv1zerOYMnsneRRwCbp # yW11IcggU0cRKDDq1pjVJzIbIF6+oiXXbReOsgeI8zu1FyQfK0fVkaya8SmVHQ/t # Of23mZ4W9k0Ri22QW9p3UgSC5OUDktKxxcCmGL6tXLfOGSWHIIV4YrTJTT6PNty5 # REojHJuZHArkF9VnHTERWoTjAzfI3kP+5b4alUdhgAZ7ttOu1bVnXfHaqPYl2rPs # 20ji03LOVWsh/radgE17es5hL+t6lV0eVHrVhsssROWJuz2MXMCt7iw7lFPG9LXK # Gjsmonn2gotGdHIuEg5JnJMJVmixd5LRlkmgYRZKzhxSCwyoGIq0PhaA7Y+VPct5 # pCHkijcIIDm0nlkK+0KyepolcqGm0T/GYQRMhHJlGOOmVQop36wUVUYklUy++vDW # eEgEo4s7hxN6mIbf2MSIQ/iIfMZgJxC69oukMUXCrOC3SkE/xIkgpfl22MM1itkZ # 35nNXkMolU1lAgMBAAGjggFOMIIBSjAOBgNVHQ8BAf8EBAMCAYYwEAYJKwYBBAGC # NxUBBAMCAQAwHQYDVR0OBBYEFH9ZP1Qh2q1P7wXl5qPXLQaUEggxMBkGCSsGAQQB # gjcUAgQMHgoAUwB1AGIAQwBBMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU # ci06AjGQQ7kUBU7h6qfHMdEjiTQwWgYDVR0fBFMwUTBPoE2gS4ZJaHR0cDovL2Ny # bC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljUm9vQ2VyQXV0MjAx # MV8yMDExXzAzXzIyLmNybDBeBggrBgEFBQcBAQRSMFAwTgYIKwYBBQUHMAKGQmh0 # dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0MjAx # MV8yMDExXzAzXzIyLmNydDANBgkqhkiG9w0BAQwFAAOCAgEAFJQfOChP7onn6fLI # MKrSlN1WYKwDFgAddymOUO3FrM8d7B/W/iQ6DxXsDn7D5W4wMwYeLystcEqfkjz4 # NURRgazyMu5yRzQh4LqjA4tStTcJh1opExo7nn5PuPBYnbu0+THSuVHTe0VTTPVh # ily/piFrDo3axQ9P4C+Ol5yet+2gTfekICS5xS+cYfSIvgn0JksVBVMYVI5QFu/q # hnLhsEFEUzG8fvv0hjgkO+lkpV9ty6GkN4vdnd7ya6Q6aR9y34aiM1qmxaxBi6OU # nyNl6fkuun/diTFnYDLTppOkr/mg5WSfCiDVMNCxtj4wPKC5OmHm1DQIt/MNokbb # H3UGsFP1QbzsLocuSqLCvH09Io3fDPTmscR9Y75G4qX7RTX8AdBPo0I6OEojf39z # uFZt0qOHm65YWQE69cZM2ueE1MB05dNNgHK9gTE7zKvK/fg8B2qjW88MT/WF5V5u # vZGtqa9FSL2RazArA+rDPuf6JGYz4HpgMZHB4S6szWSKYBv0VisCzfxgeU+dquXW # 9bd0auYlOB58DPcOYKdc3Se94g+xL4pcEhbB54JOgAkwYTu/9dLeH2pDqeJZAABV # DWRQCaXfO5LgyKwKCLYXpigrZYCjUSBcr+Ve8PFWMhVTQl0v4q8J/AUmQN5W4n10 # 1cY2L4A7GTQG1h32HHAvfQESWP0xghocMIIaGAIBATBuMFcxCzAJBgNVBAYTAlVT # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jv # c29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMjQCEzMAAAIdTRnITtcPV0gAAAAAAh0w # DQYJYIZIAWUDBAIBBQCggeYwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYK # KwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIIVJmp9e # KNp+J5l+0lUfvyh8VgrjnEiVzeldPFW6elAWMHoGCisGAQQBgjcCAQwxbDBqoEyA # SgBNAGkAYwByAG8AcwBvAGYAdAAuAEcAcgBhAHAAaAAuAEMAbwBuAG4AZQBjAHQA # bwByAHMALgBDAG0AZABsAGUAdAAuAGQAbABsoRqAGGh0dHA6Ly93d3cubWljcm9z # b2Z0LmNvbTANBgkqhkiG9w0BAQEFAASCAQBQ5GmkhAXW6KAxGoAFuEACNLL4Om7o # XDu9Wz+OHlYwhTqUwK+h84Ond82mzLlQxKmr1NXOWDUYj3CYSQl0n5qOdLLj6lww # dm5KpaeX72NszZUmcqPOY4TJZIDQb8SUnbMSec8kBOOSu8jBhis7T4N4wDXebgVU # pNolqAFwHyMSmzyaBpWlD1MK20XP+XwyOSjco79oQcfXeAeSm6Zmi6EGf6HZPa2j # 8DxVJvJ0VyuZM7ITgCyXvR3bEomi/8gYcNT9L/zfJU/8fSIVR4PKP0RD9hvj40eR # hnVhfo7CfUKDv8XYzygkUHa14jOqVKAG06NPY26JsJpjvMKrOf1m9m1goYIXljCC # F5IGCisGAQQBgjcDAwExgheCMIIXfgYJKoZIhvcNAQcCoIIXbzCCF2sCAQMxDzAN # BglghkgBZQMEAgEFADCCAVEGCyqGSIb3DQEJEAEEoIIBQASCATwwggE4AgEBBgor # BgEEAYRZCgMBMDEwDQYJYIZIAWUDBAIBBQAEIPAFnjsvRJ1qCVv+vnrDgH98axK9 # jzQtnIhY0inH3eZbAgZqMVTWjeIYEjIwMjYwNzIwMTM0NzIzLjQ2WjAEgAIB9KCB # 0aSBzjCByzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV # BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMG # A1UECxMcTWljcm9zb2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UECxMeblNo # aWVsZCBUU1MgRVNOOjg2MDMtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQg # VGltZS1TdGFtcCBTZXJ2aWNloIIR7TCCByAwggUIoAMCAQICEzMAAAIlgMc3xs2q # d0kAAQAAAiUwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgT # Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m # dCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENB # IDIwMTAwHhcNMjYwMjE5MTk0MDAxWhcNMjcwNTE3MTk0MDAxWjCByzELMAkGA1UE # BhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAc # BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWljcm9zb2Z0 # IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1MgRVNOOjg2 # MDMtMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2 # aWNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEApvESD9HiwOOlXAj6 # L75qrCJTeqpJs+SLB1plFNJ3lKqfLhsWnXqPksFgQsEOWpWSPwzXaV38omS2Uel2 # IKUTxc3qSJezgg2+DbRLJCQiGQ5EDDcKx/WMFMru9RhooLCyMXpXh7QN7raFU3h4 # 0tW/FJ8DkUbZJypMq1AK0+maQdq6HSHJnC3L98d8MIGJTrNBRIORLFa2W+yzXP53 # dG1w6fh0zllrovHqE1cCXi8XFT/OvaBfJYuUlPNWmtrRievybHo4s/STFvEiVygU # 9gwlzDlJArBo6Jz2Uan76DEiEGYLWjk8gCZa77MtE2e/F6xqqMoLUIpkJ2zgC+Cj # S0grluU2REBkxyzkCRoIIG94+YCgu+/PkSDyQPp/4Zhyf8eKk/x00z6FXjAnLgSl # q0F0dfv6WGrtxcHtLViMhvi1s5Ea/2TTz7qXANmHIt6p/B0fUcL0KKakjScJ9kYu # mpvAEMn1VcvwQcNLeo6aET48Cr7lI3ws6WnunbjsULUNVwzfTwNspfbA5KP/gF1f # 0jnvHmvEKEHL97NxK5Bvi6eoZ78OjjD4mp+IIDZEbYLQe66NToqKTlFyZ/WORDty # VAFzXLjPZvuTMtVRLrxsrYAB97sZrJU51t2G632s2skgkkp1pIWjmd94YG7lEHx+ # 59jRRAFHP3Bc35gkFIpForJyWMsCAwEAAaOCAUkwggFFMB0GA1UdDgQWBBSxONKq # F07jB19wH2VLtZ/J8dofdzAfBgNVHSMEGDAWgBSfpxVdAF5iXYP05dJlpxtTNRnp # cjBfBgNVHR8EWDBWMFSgUqBQhk5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp # b3BzL2NybC9NaWNyb3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIwMjAxMCgxKS5j # cmwwbAYIKwYBBQUHAQEEYDBeMFwGCCsGAQUFBzAChlBodHRwOi8vd3d3Lm1pY3Jv # c29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMFRpbWUtU3RhbXAlMjBQ # Q0ElMjAyMDEwKDEpLmNydDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQMMAoGCCsG # AQUFBwMIMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAB533NslM # qB2W778lShbl4eR8cRyLyGkfSVqSHyEyZXPyotN47kfr3JM6t7aeXxR+Sy+3iBV0 # SLqHsDLL1nha1rn661uB4ZoQsJKgK3wNQtMZPh2mLNjuPGEsTF/ZYEtZE0yG92LH # 6BXRaSrqz39p3NmHeMC4PhYMJpMZHshNzFClZ2vEmXlaRI50ubnBXJOLKz8CtjkQ # H+9CNtxhsj4aoCCmaYTV4UrHEwELMiKgeRsAzHUVeSyt+zX1OGJsbwmId0xWBPxo # dNUOsib3/R8YhGacFvqFJNIK7h6G4N7ICEea34FKPJd9L1J2g2DHDwApWhTAv0Gx # 2UmlIVl2RtTjnDKdIPb2EDSwxKhV9o5arr81UksLR7ZtSk5XQo0RA/pHQsm3D8Wz # 2pcCYoF3NQbCPQorZ039JY8G/TZGfyVSPPw+tq1184c+Bd7tIlRs8J3BmsUcRxv1 # 7+J066ZDnnqaGGzQWzFkthtaj914+6VX9PuKkcgKidLLY0I6FTiSJlT1kY8+T0dw # 5+mnUFTASQzOoA649a2UxVYArU4o6hmUhs716RpBd72LMhOmQ5mv5BnYlHubGniO # pR+uj4lll4Ksbe7MthM79MiI0lb/njDk9kDFImelgnO4FbQJl6X3iLrPjZoBbzPi # HNV+fHuCPRC+GUgInUqVltBmUyzQtNpq8i4wggdxMIIFWaADAgECAhMzAAAAFcXn # a54Cm0mZAAAAAAAVMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEG # A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj # cm9zb2Z0IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0 # aWZpY2F0ZSBBdXRob3JpdHkgMjAxMDAeFw0yMTA5MzAxODIyMjVaFw0zMDA5MzAx # ODMyMjVaMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYD # VQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAk # BgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMIICIjANBgkqhkiG # 9w0BAQEFAAOCAg8AMIICCgKCAgEA5OGmTOe0ciELeaLL1yR5vQ7VgtP97pwHB9Kp # bE51yMo1V/YBf2xK4OK9uT4XYDP/XE/HZveVU3Fa4n5KWv64NmeFRiMMtY0Tz3cy # wBAY6GB9alKDRLemjkZrBxTzxXb1hlDcwUTIcVxRMTegCjhuje3XD9gmU3w5YQJ6 # xKr9cmmvHaus9ja+NSZk2pg7uhp7M62AW36MEBydUv626GIl3GoPz130/o5Tz9bs # hVZN7928jaTjkY+yOSxRnOlwaQ3KNi1wjjHINSi947SHJMPgyY9+tVSP3PoFVZht # aDuaRr3tpK56KTesy+uDRedGbsoy1cCGMFxPLOJiss254o2I5JasAUq7vnGpF1tn # YN74kpEeHT39IM9zfUGaRnXNxF803RKJ1v2lIH1+/NmeRd+2ci/bfV+Autuqfjbs # Nkz2K26oElHovwUDo9Fzpk03dJQcNIIP8BDyt0cY7afomXw/TNuvXsLz1dhzPUNO # wTM5TI4CvEJoLhDqhFFG4tG9ahhaYQFzymeiXtcodgLiMxhy16cg8ML6EgrXY28M # yTZki1ugpoMhXV8wdJGUlNi5UPkLiWHzNgY1GIRH29wb0f2y1BzFa/ZcUlFdEtsl # uq9QBXpsxREdcu+N+VLEhReTwDwV2xo3xwgVGD94q0W29R6HXtqPnhZyacaue7e3 # PmriLq0CAwEAAaOCAd0wggHZMBIGCSsGAQQBgjcVAQQFAgMBAAEwIwYJKwYBBAGC # NxUCBBYEFCqnUv5kxJq+gpE8RjUpzxD/LwTuMB0GA1UdDgQWBBSfpxVdAF5iXYP0 # 5dJlpxtTNRnpcjBcBgNVHSAEVTBTMFEGDCsGAQQBgjdMg30BATBBMD8GCCsGAQUF # BwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3Np # dG9yeS5odG0wEwYDVR0lBAwwCgYIKwYBBQUHAwgwGQYJKwYBBAGCNxQCBAweCgBT # AHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgw # FoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDov # L2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljUm9vQ2VyQXV0 # XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+aHR0 # cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXRfMjAx # MC0wNi0yMy5jcnQwDQYJKoZIhvcNAQELBQADggIBAJ1VffwqreEsH2cBMSRb4Z5y # S/ypb+pcFLY+TkdkeLEGk5c9MTO1OdfCcTY/2mRsfNB1OW27DzHkwo/7bNGhlBgi # 7ulmZzpTTd2YurYeeNg2LpypglYAA7AFvonoaeC6Ce5732pvvinLbtg/SHUB2Rje # bYIM9W0jVOR4U3UkV7ndn/OOPcbzaN9l9qRWqveVtihVJ9AkvUCgvxm2EhIRXT0n # 4ECWOKz3+SmJw7wXsFSFQrP8DJ6LGYnn8AtqgcKBGUIZUnWKNsIdw2FzLixre24/ # LAl4FOmRsqlb30mjdAy87JGA0j3mSj5mO0+7hvoyGtmW9I/2kQH2zsZ0/fZMcm8Q # q3UwxTSwethQ/gpY3UA8x1RtnWN0SCyxTkctwRQEcb9k+SS+c23Kjgm9swFXSVRk # 2XPXfx5bRAGOWhmRaw2fpCjcZxkoJLo4S5pu+yFUa2pFEUep8beuyOiJXk+d0tBM # drVXVAmxaQFEfnyhYWxz/gq77EFmPWn9y8FBSX5+k77L+DvktxW/tM4+pTFRhLy/ # AsGConsXHRWJjXD+57XQKBqJC4822rpM+Zv/Cuk0+CQ1ZyvgDbjmjJnW4SLq8CdC # PSWU5nR0W2rRnj7tfqAxM328y+l7vzhwRNGQ8cirOoo6CGJ/2XBjU02N7oJtpQUQ # wXEGahC0HVUzWLOhcGbyoYIDUDCCAjgCAQEwgfmhgdGkgc4wgcsxCzAJBgNVBAYT # AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD # VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBB # bWVyaWNhIE9wZXJhdGlvbnMxJzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjo4NjAz # LTA1RTAtRDk0NzElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vydmlj # ZaIjCgEBMAcGBSsOAwIaAxUAU2/myjjwIwgX5Yc8ORFwbklsXg6ggYMwgYCkfjB8 # MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk # bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1N # aWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQsFAAIFAO4I # oZswIhgPMjAyNjA3MjAxMzMxMDdaGA8yMDI2MDcyMTEzMzEwN1owdzA9BgorBgEE # AYRZCgQBMS8wLTAKAgUA7gihmwIBADAKAgEAAgIerQIB/zAHAgEAAgITcjAKAgUA # 7gnzGwIBADA2BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAID # B6EgoQowCAIBAAIDAYagMA0GCSqGSIb3DQEBCwUAA4IBAQBhB0I4kRjPTvO1ktO7 # jOT40sZUEZiSYSkYNRTXj6WX8b4GmaQH579Gdsg4QRF2vwqNsQ4+ihE6V/c8+I+3 # MWAiYUQLO/lTBuv9Ilh5pTlbPCEFf7gGqQMKuAGMslFw4MaF8Hj7dyMlQt4V4a7+ # i0Eseek2fRIPGAmVjrEU1AAV7HMX3NdSYSbThCpDiR0+2Daqrz9m7bijh3ck6eyD # tfbOIUIne/40uUwF+eiNJN2MJ8wz1uPFr6I+xP6ZldWUd07kHAXARFjCFlbbBhRu # 5YtRwL16nG39Zy39rf957jBktsq7E575P9gZdy0jri/zoEEfXCQtS1yOaVhxk86m # cTVXMYIEDTCCBAkCAQEwgZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp # bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw # b3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAC # EzMAAAIlgMc3xs2qd0kAAQAAAiUwDQYJYIZIAWUDBAIBBQCgggFKMBoGCSqGSIb3 # DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQxIgQgjlsn03Fd2wsiML1e # CmwabomfdZB7AdWDX/8+n11NWo4wgfoGCyqGSIb3DQEJEAIvMYHqMIHnMIHkMIG9 # BCBWDe6Iejjd8vdgpgJf5RdAmMK41lkD+nQlMWoz0hyhEDCBmDCBgKR+MHwxCzAJ # BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k # MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jv # c29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAACJYDHN8bNqndJAAEAAAIlMCIE # IGNoyyU2e8dAtYaIr5svt42Z5bB9k4BgN5OQNxd4DOULMA0GCSqGSIb3DQEBCwUA # BIICADVg8q6u4ItazlxDQePil63DMTBrvM7wJ4pZLmmYaSpXyiM0vShvuNBgNhEs # dC/p7UPnr5ninSgFsxTaulmD9+me6kVu1iijCg4Mg2ckJx8w364AJe91s1ewvVA6 # JKKvDRQuMoa/Ooda0Mr0hPih55MfwG7b1h1cVQrOW6aaHk8UscMgUJBWRkNx4MpA # X5GtgKIYvipzV6VVZlizvf7mjtZBCdzmG4TKF/Kh+5upgOBVhgVoYNyz85yV0kec # QGWj7QWYmmJ+KNxjI2jft7K90M0+VP3FKzIrpWtSrSQyNsKwd5q5Ti0nNwGD7u2C # fqUTZH3dxRohINa4sdnySnGCZHlovW+gSrF0p1waZ294ZIqGFjsZglg8QXYU+Wfy # dCdry840kVBJqjv3Z7otXcmPEjFG2uVPckcs8HuOiQqtUwELAs0GSFBT/sbbIsgy # kaPNxKMRAAjMHF+QHRFRNW01PElqFHLIFrVrd6xny72TtiaMkW3ru2kOWpF8rMRZ # hgFJZv4V2BhdtraFzSg34cwOQbneKAA5/Rr/sUR8abnEx8n6tzx+eb8K1YDNEnOI # pVOu4XPiSIkR+QJg2nZNpuAtTjE3D8ObU01biTEsVBYq3WH71ITkuFv3JY15JhJu # gdlFyxASowcyQ7Uy8+Rhq5iPO4I3ZlwjrTgmPlVJQhBVTgVh # SIG # End signature block |