Remove-GSheetSheetRowColumnV2.ps1
<#
Stashing this work, could never really get it to work because google removed lines and re-indexed too fast. Also if the endIndex of one array was the same as the startIndex of another google's api would ignore it. #> #region Remove-GSheetSheetRowColumn function Remove-GSheetSheetRowColumn { <# .Synopsis Remove row(s) or column(s) .DESCRIPTION Remove row(s) or column(s) .PARAMETER accessToken access token used for authentication. Get from Get-GOAuthTokenUser or Get-GOAuthTokenService .PARAMETER indexes Array of Arrays containing Index of row or column to start deleting .PARAMETER startIndex Index of row or column to start deleting .PARAMETER endIndex Index of row or column to stop deleting .PARAMETER dimension Remove Rows or Columns .PARAMETER sheetName Name of sheet in spreadSheet .PARAMETER spreadSheetID ID for the target Spreadsheet. This is returned when a new sheet is created or use Get-GSheetSpreadSheetID .EXAMPLE Remove-GSheetSheetRowColumn -accessToken $accessToken -sheetName "Sheet1" -spreadSheetID $spreadSheetID -dimension ROWS -startIndex 5 -endIndex 10 #> [CmdletBinding()] Param ( [Parameter(Mandatory)] [string]$accessToken, [Parameter(Mandatory,ParameterSetName='Single')] [int]$startIndex, [Parameter(Mandatory,ParameterSetName='Single')] [int]$endIndex, [Parameter(Mandatory,ParameterSetName='Multiple')] [array]$indexes, [Parameter(Mandatory)] [ValidateSet("COLUMNS", "ROWS")] [string]$dimension, [Parameter(Mandatory)] [string]$sheetName, [Parameter(Mandatory)] [string]$spreadSheetID ) Begin { $sheetID = Get-GSheetSheetID -accessToken $accessToken -spreadSheetID $spreadSheetID -sheetName $sheetName } Process { [System.Collections.ArrayList]$requestArray = @() if ($indexes) { foreach ($index in $indexes) { if ($index[0] -eq $index[1]){$index[1]++} [void]$requestArray.add(@{"deleteDimension" = @{"range" = @{"sheetId" = $sheetID; "dimension" = $dimension; "startIndex" = $index[0]; "endIndex" = $index[1]}}}) } } else { if ($startIndex -eq $endIndex){$endIndex++} [void]$requestArray.add(@{"deleteDimension" = @{"range" = @{"sheetId" = $sheetID; "dimension" = $dimension; "startIndex" = $startIndex; "endIndex" = $endIndex}}}) } $json = @{requests=$requestArray} | ConvertTo-Json -Depth 20 $suffix = "$spreadSheetID" + ":batchUpdate" $uri = "https://sheets.googleapis.com/v4/spreadsheets/$suffix" write-verbose -Message $json Invoke-RestMethod -Method Post -Uri $uri -Body $json -ContentType "application/json" -Headers @{"Authorization"="Bearer $accessToken"} } End{} } #endregion # SIG # Begin signature block # MIIlNQYJKoZIhvcNAQcCoIIlJjCCJSICAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUPjxqtPiQDa7Et7Q5ImNCtUop # Fvmggh8eMIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0B # AQwFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVy # MRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEh # MB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAw # MFoXDTI4MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcg # SmVyc2V5MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJU # UlVTVCBOZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRp # b24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJl # FzYOw9sIs9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezco # EStH2jnGvDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+j # BvGIGGqQIjy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWm # p2bIcmfbIWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2u # TIq3XJq0tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnH # a4xgk97Exwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWax # KXwyhGNVicQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjN # hLixP6Q5D9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81 # VXQJSdhJWBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10 # Yy+xUGUJ5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrW # X1Uu6lzGKAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB8jCB7zAfBgNVHSME # GDAWgBSgEQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUU3m/WqorSs9UgOHY # m8Cd8rIDZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0g # BAowCDAGBgRVHSAAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2Rv # Y2EuY29tL0FBQUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgw # JjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3 # DQEBDAUAA4IBAQAYh1HcdCE9nIrgJ7cz0C7M7PDmy14R3iJvm3WOnnL+5Nb+qh+c # li3vA0p+rvSNb3I8QzvAP+u431yqqcau8vzY7qN7Q/aGNnwU4M309z/+3ri0ivCR # lv79Q2R+/czSAaF9ffgZGclCKxO/WIu6pKJmBHaIkU4MiRTOok3JMrO66BQavHHx # W/BBC5gACiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w5 # 2z97GA1FzZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEU # xOipakyAvGp4z7h/jnZymQyd/teRCBaho1+VMIIFrDCCBJSgAwIBAgIQck1eIBPV # wpFAVfN8VIlUcTANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzELMAkGA1UE # CBMCTUkxEjAQBgNVBAcTCUFubiBBcmJvcjESMBAGA1UEChMJSW50ZXJuZXQyMREw # DwYDVQQLEwhJbkNvbW1vbjElMCMGA1UEAxMcSW5Db21tb24gUlNBIENvZGUgU2ln # bmluZyBDQTAeFw0xNzEyMTQwMDAwMDBaFw0yMDEyMTMyMzU5NTlaMIHLMQswCQYD # VQQGEwJVUzEOMAwGA1UEEQwFNTU0NTUxEjAQBgNVBAgMCU1pbm5lc290YTEUMBIG # A1UEBwwLTWlubmVhcG9saXMxGDAWBgNVBAkMDzEwMCBVbmlvbiBTdCBTRTEgMB4G # A1UECgwXVW5pdmVyc2l0eSBvZiBNaW5uZXNvdGExJDAiBgNVBAsMG0NvbXB1dGVy # IGFuZCBEZXZpY2UgU3VwcG9ydDEgMB4GA1UEAwwXVW5pdmVyc2l0eSBvZiBNaW5u # ZXNvdGEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCTqQsT2761a/Q # lSQglKfmlZ9rT2DpyoUu5wJeiY2P01iPy34l8+dreALose/c5ABQMc6gLkf7w3d5 # rupUZgiLA9EfNc4aob+1VqJTmzmEbe8GF9FfxbX/aDj+GmB5dTOvFif/ZzlI4YbL # QxTVknJRIUR2yNccRXsdcriqYUZX1EnG2ItkfWpSV0KCXFyPvPDRCdR0bqgDGnBM # J5WnTnv9ZduchHxrSA+x77L+d7Dn4IFQZMC+vDorYGslBWx0ghWf+r4FtxnGH0+l # 5l9O2yLqWCS/LRtRa2XmxKl3vn6G/DhKXccBpZm2hY3ss+ZsNttVE7YCu/h2iHgK # Gh3jAnnFAgMBAAGjggHYMIIB1DAfBgNVHSMEGDAWgBSuNSMX//8GPZxQ4IwkZTMe # cBCIojAdBgNVHQ4EFgQUXgsSESVVS9Pyfm3E4lI0BzOihIAwDgYDVR0PAQH/BAQD # AgeAMAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwMwEQYJYIZIAYb4 # QgEBBAQDAgQQMGYGA1UdIARfMF0wWwYMKwYBBAGuIwEEAwIBMEswSQYIKwYBBQUH # AgEWPWh0dHBzOi8vd3d3LmluY29tbW9uLm9yZy9jZXJ0L3JlcG9zaXRvcnkvY3Bz # X2NvZGVfc2lnbmluZy5wZGYwSQYDVR0fBEIwQDA+oDygOoY4aHR0cDovL2NybC5p # bmNvbW1vbi1yc2Eub3JnL0luQ29tbW9uUlNBQ29kZVNpZ25pbmdDQS5jcmwwfgYI # KwYBBQUHAQEEcjBwMEQGCCsGAQUFBzAChjhodHRwOi8vY3J0LmluY29tbW9uLXJz # YS5vcmcvSW5Db21tb25SU0FDb2RlU2lnbmluZ0NBLmNydDAoBggrBgEFBQcwAYYc # aHR0cDovL29jc3AuaW5jb21tb24tcnNhLm9yZzAZBgNVHREEEjAQgQ5vaXRtcHRA # dW1uLmVkdTANBgkqhkiG9w0BAQsFAAOCAQEAQ1GV6wwqYFpnSDryW21gQy1o+LP4 # No2k6VcGzWAfrpqCEHVo/qKJElwVVqwYtRUWdx0bXFvDnTctOsFRzk8QIxUNUXso # oJ8cDU54VX285bK91WBt7eloPLWyPgIAM7YPSCfFwaJmgWERmIGRO9KyPhLcZdkS # +gUcnEkvDaS90ufPLSAf9v9v/JuXADV8pfDiWhxSkMzqpPAztKIqCRDlbv/bzQRi # 7wEjpzyumImaozW1ktymzC5q8HTRPnZj5lmbPe0wxWAUef2kUWW1ivezdsR6Tsjq # lTy6chJuLJDPGqEhQpoGLyHLwuChjlScaNfmMewi8g3Oaz4lfki3LTawvTCCBesw # ggPToAMCAQICEGXh4uPV3lBFhfMmJIAF4tQwDQYJKoZIhvcNAQENBQAwgYgxCzAJ # BgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtKZXJzZXkg # Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYDVQQDEyVV # U0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE0MDkxOTAw # MDAwMFoXDTI0MDkxODIzNTk1OVowfDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk1J # MRIwEAYDVQQHEwlBbm4gQXJib3IxEjAQBgNVBAoTCUludGVybmV0MjERMA8GA1UE # CxMISW5Db21tb24xJTAjBgNVBAMTHEluQ29tbW9uIFJTQSBDb2RlIFNpZ25pbmcg # Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDAoC+LHnq7anWs+D7c # o7o5Isrzo3bkv30wJ+a605gyViNcBoaXDYDo7aKBNesL9l5+qT5oc/2d1Gd5zqrq # aLcZ2xx2OlmHXV6Zx6GyuKmEcwzMq4dGHGrH7zklvqfd2iw1cDYdIi4gO93jHA4/ # NJ/lff5VgFsGfIJXhFXzOPvyDDapuV6yxYFHI30SgaDAASg+A/k4l6OtAvICaP3V # Aav11VFNUNMXIkblcxjgOuQ3d1HInn1Sik+A3Ca5wEzK/FH6EAkRelcqc8TgISps # wlS9HD6D+FupLPH623jP2YmabaP/Dac/fkxWI9YJvuGlHYsHxb/j31iq76SvgssF # +AoJAgMBAAGjggFaMIIBVjAfBgNVHSMEGDAWgBRTeb9aqitKz1SA4dibwJ3ysgNm # yzAdBgNVHQ4EFgQUrjUjF///Bj2cUOCMJGUzHnAQiKIwDgYDVR0PAQH/BAQDAgGG # MBIGA1UdEwEB/wQIMAYBAf8CAQAwEwYDVR0lBAwwCgYIKwYBBQUHAwMwEQYDVR0g # BAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRy # dXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2 # BggrBgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0 # LmNvbS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0 # cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQ0FAAOCAgEARiy2f2pO # JWa9nGqmqtCevQ+uTjX88DgnwcedBMmCNNuG4RP3wZaNMEQT0jXtefdXXJOmEldt # q3mXwSZk38lcy8M2om2TI6HbqjACa+q4wIXWkqJBbK4MOWXFH0wQKnrEXjCcfUxy # zhZ4s6tA/L4LmRYTmCD/srpz0bVU3AuSX+mj05E+WPEop4WE+D35OLcnMcjFbst3 # KWN99xxaK40VHnX8EkcBkipQPDcuyt1hbOCDjHTq2Ay84R/SchN6WkVPGpW8y0mG # c59lul1dlDmjVOynF9MRU5ACynTkdQ0JfKHOeVUuvQlo2Qzt52CTn3OZ1NtIZ0yr # xm267pXKuK86UxI9aZrLkyO/BPO42itvAG/QMv7tzJkGns1hmi74OgZ3WUVk3SNT # kixAqCbf7TSmecnrtyt0XB/P/xurcyFOIo5YRvTgVPc5lWn6PO9oKEdYtDyBsI5G # AKVpmrUfdqojsl5GRYQQSnpO/hYBWyv+LsuhdTvaA5vwIDM8WrAjgTFx2vGnQjg5 # dsQIeUOpTixMierCUzCh+bF47i73jX3qoiolCX7xLKSXTpWS2oy7HzgjDdlAsfTw # nwton5YNTJxzg6NjrUjsUbEIORtJB/eeld5EWbQgGfwaJb5NEOTonZckUtYS1Vma # FugWUEuhSWodQIq7RA6FT/4AQ6qdj3yPbNEwggbsMIIE1KADAgECAhAwD2+s3WaY # dHypRjaneC25MA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UE # CBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoTFVRo # ZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0 # aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xOTA1MDIwMDAwMDBaFw0zODAxMTgyMzU5 # NTlaMH0xCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIx # EDAOBgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDElMCMG # A1UEAxMcU2VjdGlnbyBSU0EgVGltZSBTdGFtcGluZyBDQTCCAiIwDQYJKoZIhvcN # AQEBBQADggIPADCCAgoCggIBAMgbAa/ZLH6ImX0BmD8gkL2cgCFUk7nPoD5T77Na # wHbWGgSlzkeDtevEzEk0y/NFZbn5p2QWJgn71TJSeS7JY8ITm7aGPwEFkmZvIavV # cRB5h/RGKs3EWsnb111JTXJWD9zJ41OYOioe/M5YSdO/8zm7uaQjQqzQFcN/nqJc # 1zjxFrJw06PE37PFcqwuCnf8DZRSt/wflXMkPQEovA8NT7ORAY5unSd1VdEXOzQh # e5cBlK9/gM/REQpXhMl/VuC9RpyCvpSdv7QgsGB+uE31DT/b0OqFjIpWcdEtlEzI # jDzTFKKcvSb/01Mgx2Bpm1gKVPQF5/0xrPnIhRfHuCkZpCkvRuPd25Ffnz82Pg4w # ZytGtzWvlr7aTGDMqLufDRTUGMQwmHSCIc9iVrUhcxIe/arKCFiHd6QV6xlV/9A5 # VC0m7kUaOm/N14Tw1/AoxU9kgwLU++Le8bwCKPRt2ieKBtKWh97oaw7wW33pdmmT # IBxKlyx3GSuTlZicl57rjsF4VsZEJd8GEpoGLZ8DXv2DolNnyrH6jaFkyYiSWcuo # RsDJ8qb/fVfbEnb6ikEk1Bv8cqUUotStQxykSYtBORQDHin6G6UirqXDTYLQjdpr # t9v3GEBXc/Bxo/tKfUU2wfeNgvq5yQ1TgH36tjlYMu9vGFCJ10+dM70atZ2h3pVB # eqeDAgMBAAGjggFaMIIBVjAfBgNVHSMEGDAWgBRTeb9aqitKz1SA4dibwJ3ysgNm # yzAdBgNVHQ4EFgQUGqH4YRkgD8NBd0UojtE1XwYSBFUwDgYDVR0PAQH/BAQDAgGG # MBIGA1UdEwEB/wQIMAYBAf8CAQAwEwYDVR0lBAwwCgYIKwYBBQUHAwgwEQYDVR0g # BAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRy # dXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2 # BggrBgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0 # LmNvbS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0 # cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAbVSBpTNd # FuG1U4GRdd8DejILLSWEEbKw2yp9KgX1vDsn9FqguUlZkClsYcu1UNviffmfAO9A # w63T4uRW+VhBz/FC5RB9/7B0H4/GXAn5M17qoBwmWFzztBEP1dXD4rzVWHi/SHbh # RGdtj7BDEA+N5Pk4Yr8TAcWFo0zFzLJTMJWk1vSWVgi4zVx/AZa+clJqO0I3fBZ4 # OZOTlJux3LJtQW1nzclvkD1/RXLBGyPWwlWEZuSzxWYG9vPWS16toytCiiGS/qhv # WiVwYoFzY16gu9jc10rTPa+DBjgSHSSHLeT8AtY+dwS8BDa153fLnC6NIxi5o8JH # HfBd1qFzVwVomqfJN2Udvuq82EKDQwWli6YJ/9GhlKZOqj0J9QVst9JkWtgqIsJL # nfE5XkzeSD2bNJaaCV+O/fexUpHOP4n2HKG1qXUfcb9bQ11lPVCBbqvw0NP8srMf # tpmWJvQ8eYtcZMzN7iea5aDADHKHwW5NWtMe6vBE5jJvHOsXTpTDeGUgOw9Bqh/p # oUGd/rG4oGUqNODeqPk85sEwu8CgYyz8XBYAqNDEf+oRnR4GxqZtMl20OAkrSQeq # /eww2vGnL8+3/frQo4TZJ577AWZ3uVYQ4SBuxq6x+ba6yDVdM3aO8XwgDCp3rrWi # Aoa6Ke60WgCxjKvj+QrJVF3UuWp0nr1IrpgwggcGMIIE7qADAgECAhA9GjVyMBWC # YzDQE3F+gkEIMA0GCSqGSIb3DQEBDAUAMH0xCzAJBgNVBAYTAkdCMRswGQYDVQQI # ExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoT # D1NlY3RpZ28gTGltaXRlZDElMCMGA1UEAxMcU2VjdGlnbyBSU0EgVGltZSBTdGFt # cGluZyBDQTAeFw0xOTA1MDIwMDAwMDBaFw0zMDA4MDEyMzU5NTlaMIGEMQswCQYD # VQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdT # YWxmb3JkMRgwFgYDVQQKDA9TZWN0aWdvIExpbWl0ZWQxLDAqBgNVBAMMI1NlY3Rp # Z28gUlNBIFRpbWUgU3RhbXBpbmcgU2lnbmVyICMxMIICIjANBgkqhkiG9w0BAQEF # AAOCAg8AMIICCgKCAgEAy1FQ/1b+/HhjcAGTWp4Y9DtT9gevIWz1og99HXAthHRI # i5yKlQU9WYT5kYB5USzZirfBC5q6CorNZk8DiwG7MMqrvdvATxJe/ArM4kWwATiK # u03n1BxUmO05WM9bwi9FmDEK+TU4uDEubbQeOXLhuCq+n4yMGqVGrgsrTJn+LEv8 # KLkiOmYX0KpWiiHA85YktNCFJmu68G9kmHmmrb1c2FNrKwrWcoqFRuMNGAbaxntB # VjabFT7xahGg92b1GNCAVWOHaGbrDnlVglyj7Um4cYaekzewa6PqYmyjrpbouf2L # q8b2WVsAPFcgGC1wA6ec75LreaHHXex8tI9L3+td/KMg3ZI45WpROmuFnEygmAhp # WwbnKhnQlZOLO2uKBQkp2Nba2+Ny+lxKL3sVVoYyv38FCZ0tKs9Q4eZhINvHBoBc # ThRGvq5XcaKqbDCTHH53ywbpV82R9dUzchzh2spu6/MP7Hlbuyee6B7+L/K7f+nl # 0GfruA18pCtZA4uV7SIozfosO8cWEa/j1rFQZ2nFjvV50K3/h8z4f6r5ou1h+MiN # adqx9FGR62dX0WQR62TLA71JVTpFQxgsJWzRLwwtb/VBNSSg8mNZFl/ZpOksTtu7 # MRLGbfhbbgPcyxWPG41y7NsPFZDWEk7u4gAxJZM1b2pbpRJjQAGKuWmIOoi4DxkC # AwEAAaOCAXgwggF0MB8GA1UdIwQYMBaAFBqh+GEZIA/DQXdFKI7RNV8GEgRVMB0G # A1UdDgQWBBRvTYYH2DInniwp0tATA4CB3QWDKTAOBgNVHQ8BAf8EBAMCBsAwDAYD # VR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDBABgNVHSAEOTA3MDUG # DCsGAQQBsjEBAgEDCDAlMCMGCCsGAQUFBwIBFhdodHRwczovL3NlY3RpZ28uY29t # L0NQUzBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vY3JsLnNlY3RpZ28uY29tL1Nl # Y3RpZ29SU0FUaW1lU3RhbXBpbmdDQS5jcmwwdAYIKwYBBQUHAQEEaDBmMD8GCCsG # AQUFBzAChjNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29SU0FUaW1lU3Rh # bXBpbmdDQS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29t # MA0GCSqGSIb3DQEBDAUAA4ICAQDAaO2z2NRQm+/TdcsPO/ck03o3RY0s7xb7Uaks # H7UltYqfXQvCGyB0jWYPNsuq9jYND36PS0p0Q2WsDSr2Cu1rbcUJOO0AG/jl3KYK # QAVH74TKCbxDZoO/n+3bjj3RQWSxcAItA1dbGG8cLMsesgDougkvW4EENbmpY22O # CMUY0eEhrPkSChTAEtt+JZ2sHRDAWqWD0h8aZlX8myri7DdXjuXfljD4wJMLQxj5 # Am+pUa+4VwrzHAdpOY83nG3Xka6lLknpSt6z0Iy/OZANwIHO8CoHOgymLVHScvNT # xvm97+8MaUl3nyxWxOmhCD0HrsUe1oQix7x9QxtYOGJO0QUlhMVC+B8v9tv6q4xU # 7EWKbBJNMFpS5aQXCSLm72/1X4ZD36EtvUpGkqCBlixhl39Ab9g/jDVaq9HGoDuF # ZlSA7x8a9fGbsKEnfbLnC8/2LZxYE5SphvxFUqIobX90D1KRSXrpEvipO7CS/X2R # FOlbbUiU8siW7gU4s8XsMD/hByAEsdiLvP2zPm/yAlMG9KDtyZpyo5dfAPvLY9Do # zXT9dcnUNkW6exJZcu3n8npQAHj4Q5pG2N+/VNRescfRvBuD9CvnC+hHyFOezBqs # 9vqKdVNsIIWp1bhquiSOiisIkZ83BBz2b6LdNKqR/8YVLh5CGgkpT/TGzeKRotNA # DI544zGCBYEwggV9AgEBMIGQMHwxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNSTES # MBAGA1UEBxMJQW5uIEFyYm9yMRIwEAYDVQQKEwlJbnRlcm5ldDIxETAPBgNVBAsT # CEluQ29tbW9uMSUwIwYDVQQDExxJbkNvbW1vbiBSU0EgQ29kZSBTaWduaW5nIENB # AhByTV4gE9XCkUBV83xUiVRxMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEMMQow # CKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcC # AQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBQvZvTxjpd9YVcJgbNk # KSq2AsiffDANBgkqhkiG9w0BAQEFAASCAQC3p4ciuwtt3usuVXSxi/J+J3FEa38S # qioyqOLA2tG2V2OiAde3K7lf1ZeHqGDfDf9cHEnrZzMt2iXQ+jfMbh+gjyU/uivo # C5yHmg4CRF4FXtMySJIFocXxfQpONCVVJImvZJrdBHFf02/lU59GVhn8bOQilAGl # EdTj54RmjZBARKJE+mPRGCyqOopp1eRoo9BKyzDYhYUFBbVXMGCdn9IJEKTycHtb # QW6OomM7BHMu/CorPAMCyEEBvsGYnH5xnVxUAshe1QKsFIU/AMp2VA5DoRSQCRFr # sGeNSxxgEZIpVUv95qeDfrhTPvf30oyM6rEQpt3BGLOrtHLFS2h9PKCEoYIDSzCC # A0cGCSqGSIb3DQEJBjGCAzgwggM0AgEBMIGRMH0xCzAJBgNVBAYTAkdCMRswGQYD # VQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGDAWBgNV # BAoTD1NlY3RpZ28gTGltaXRlZDElMCMGA1UEAxMcU2VjdGlnbyBSU0EgVGltZSBT # dGFtcGluZyBDQQIQPRo1cjAVgmMw0BNxfoJBCDANBglghkgBZQMEAgIFAKB5MBgG # CSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIwMDczMTE2 # MjAyOVowPwYJKoZIhvcNAQkEMTIEMHRO/QZq0zGJxH6Pg+iKrOhgU2jG74ArGD2o # 41Ac3CXL3enBQnbYU8jEqEoKgMRafDANBgkqhkiG9w0BAQEFAASCAgCx/Wtq6L2k # CiI2Dm+Gl4D5WZcJGNEtB8UE2clMrJ1tXvptxJn1X78pSSpg9AZzEDjGRggv9zOv # /m9tOzoUxFkKnoLHaQyaOV1nZ7ott5/cqYx+vFWa9pZJN4XFwPA34TVF3v2DpoVA # 8OY6HoJ+po54X6K3Ckwchb6u/vtVRCEfrmVcdANZRx33kpaVPoMXvN+ZPnzP2FQI # GmUguM0ykZoeACKi/Me3u5772Cxxpki59vFaTQjVqKhLpl3bU+DLR1ISUX6zsJ6H # /ZMT+Z2aBaSmFIp4X+L235fMMHmRVM+rCiADuTImnlbyJxaX7uzpYIduFh7jxaB1 # x6Mhs3Gy0FXzdyRpk8l3CEsGGdxPDITGLuTMRGdnaklH+kb274tBaiL5Lm4xyq+0 # fRs1Ee/J0lRgkDVPg65MzI7XK5HaB7g6HY6NP5kDG+MaqdVCjyWSa+WKAWAdUc52 # 7eKRQy0/mOCnp2igDmbmflOTvpfPyfpvsZtTuqOJPIjiCAqFqrDeZz0fXZAvfqYV # J5j2w2Bbv0KXmLZK8POfjR7nllfNQ5UrZWeI69VGTkElAJ6AICRN0tLtf2d4z51g # fIqlu04zVvWITmklWMSX/Kzu+7VFjuHcfkHmdYpMbhLtA/5ukO5WQTGgkxbNbT2O # TYOlXu17aP5s9lWt3TALsI/nGpB4xLMuYw== # SIG # End signature block |