From 44979c48809c8b951670b3afc7c7b6c550b3510e Mon Sep 17 00:00:00 2001 From: Thomas Lenz Date: Wed, 3 Jun 2020 15:48:30 +0200 Subject: fix broken jUnit tests --- .../eaaf/core/test/http/HttpClientFactoryTest.java | 185 +++++++++++---------- ..._metadata_junit_keystore_classpath_entityId.xml | 36 +--- 2 files changed, 95 insertions(+), 126 deletions(-) diff --git a/eaaf_core_utils/src/test/java/at/gv/egiz/eaaf/core/test/http/HttpClientFactoryTest.java b/eaaf_core_utils/src/test/java/at/gv/egiz/eaaf/core/test/http/HttpClientFactoryTest.java index c35ef604..510c6e47 100644 --- a/eaaf_core_utils/src/test/java/at/gv/egiz/eaaf/core/test/http/HttpClientFactoryTest.java +++ b/eaaf_core_utils/src/test/java/at/gv/egiz/eaaf/core/test/http/HttpClientFactoryTest.java @@ -9,6 +9,12 @@ import java.security.KeyStoreException; import java.security.Provider; import java.security.cert.X509Certificate; +import at.gv.egiz.eaaf.core.exceptions.EaafException; +import at.gv.egiz.eaaf.core.impl.credential.EaafKeyStoreFactory; +import at.gv.egiz.eaaf.core.impl.data.Pair; +import at.gv.egiz.eaaf.core.impl.http.HttpClientConfiguration; +import at.gv.egiz.eaaf.core.impl.http.IHttpClientFactory; + import org.apache.commons.lang3.RandomStringUtils; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; @@ -25,11 +31,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import at.gv.egiz.eaaf.core.exceptions.EaafException; -import at.gv.egiz.eaaf.core.impl.credential.EaafKeyStoreFactory; -import at.gv.egiz.eaaf.core.impl.data.Pair; -import at.gv.egiz.eaaf.core.impl.http.HttpClientConfiguration; -import at.gv.egiz.eaaf.core.impl.http.IHttpClientFactory; import okhttp3.HttpUrl; import okhttp3.mockwebserver.MockResponse; import okhttp3.mockwebserver.MockWebServer; @@ -44,7 +45,7 @@ public class HttpClientFactoryTest { @Autowired private EaafKeyStoreFactory keyStoreFactory; @Autowired private IHttpClientFactory httpClientFactory; - + private MockWebServer mockWebServer = null; private HttpUrl mockServerUrl; @@ -54,7 +55,7 @@ public class HttpClientFactoryTest { */ @Before public void setup() { - + } /** @@ -87,26 +88,26 @@ public class HttpClientFactoryTest { } @Test - public void defaultHttpClientRetryOneTime() throws EaafException, InterruptedException, - ClientProtocolException, IOException { - CloseableHttpClient client = httpClientFactory.getHttpClient(); + public void defaultHttpClientRetryOneTime() throws EaafException, InterruptedException, + ClientProtocolException, IOException { + final CloseableHttpClient client = httpClientFactory.getHttpClient(); Assert.assertNotNull("No httpClient", client); - + mockWebServer = new MockWebServer(); mockServerUrl = mockWebServer.url("/sp/junit"); mockWebServer.enqueue(new MockResponse() .setSocketPolicy(SocketPolicy.NO_RESPONSE) - .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); + .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); mockWebServer.enqueue(new MockResponse().setResponseCode(200) .setBody("GetData")); //request webservice final HttpUriRequest httpGet1 = new HttpGet(mockServerUrl.url().toString()); - final CloseableHttpResponse httpResp1 = client.execute(httpGet1); + final CloseableHttpResponse httpResp1 = client.execute(httpGet1); Assert.assertEquals("http statusCode", 200, httpResp1.getStatusLine().getStatusCode()); - + } - + @Test public void getCustomClientsDefault() throws EaafException { final HttpClientConfiguration config = new HttpClientConfiguration("jUnit"); @@ -133,7 +134,7 @@ public class HttpClientFactoryTest { } @Test - public void getCustomClientBasicAuth() throws EaafException, ClientProtocolException, + public void getCustomClientBasicAuth() throws EaafException, ClientProtocolException, IOException, InterruptedException { final HttpClientConfiguration config = new HttpClientConfiguration("jUnit"); config.setAuthMode("password"); @@ -181,107 +182,107 @@ public class HttpClientFactoryTest { } @Test - public void httpPostRetryNotAllowed() throws EaafException, InterruptedException, + public void httpPostRetryNotAllowed() throws EaafException, InterruptedException, ClientProtocolException, IOException { - final HttpClientConfiguration config = + final HttpClientConfiguration config = new HttpClientConfiguration("jUnit_retry_" + RandomStringUtils.randomAlphabetic(3)); config.setHttpErrorRetryCount(2); config.setHttpErrorRetryPost(false); - - CloseableHttpClient client = httpClientFactory.getHttpClient(config); + + final CloseableHttpClient client = httpClientFactory.getHttpClient(config); Assert.assertNotNull("No httpClient", client); - - + + mockWebServer = new MockWebServer(); mockServerUrl = mockWebServer.url("/sp/junit"); mockWebServer.enqueue(new MockResponse() .setSocketPolicy(SocketPolicy.NO_RESPONSE) - .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); + .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); mockWebServer.enqueue(new MockResponse().setResponseCode(200) .setBody("GetData")); //request webservice final HttpUriRequest httpGet1 = new HttpPost(mockServerUrl.url().toString()); try { - client.execute(httpGet1); + client.execute(httpGet1); Assert.fail("HTTP POST retry not allowed"); - - } catch (SocketTimeoutException e) { + + } catch (final SocketTimeoutException e) { Assert.assertNotNull("No errorMsg", e.getMessage()); - + } - + } - + @Test - public void httpPostRetryOneTime() throws EaafException, InterruptedException, + public void httpPostRetryOneTime() throws EaafException, InterruptedException, ClientProtocolException, IOException { - final HttpClientConfiguration config = + final HttpClientConfiguration config = new HttpClientConfiguration("jUnit_retry_" + RandomStringUtils.randomAlphabetic(3)); config.setHttpErrorRetryCount(2); config.setHttpErrorRetryPost(true); - - CloseableHttpClient client = httpClientFactory.getHttpClient(config); + + final CloseableHttpClient client = httpClientFactory.getHttpClient(config); Assert.assertNotNull("No httpClient", client); - - + + mockWebServer = new MockWebServer(); mockServerUrl = mockWebServer.url("/sp/junit"); mockWebServer.enqueue(new MockResponse() .setSocketPolicy(SocketPolicy.NO_RESPONSE) - .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); + .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); mockWebServer.enqueue(new MockResponse().setResponseCode(200) .setBody("GetData")); //request webservice final HttpUriRequest httpGet1 = new HttpPost(mockServerUrl.url().toString()); - final CloseableHttpResponse httpResp1 = client.execute(httpGet1); + final CloseableHttpResponse httpResp1 = client.execute(httpGet1); Assert.assertEquals("http statusCode", 200, httpResp1.getStatusLine().getStatusCode()); - + } - + @Test - public void testHttpClientRetryOneTime() throws EaafException, InterruptedException, + public void testHttpClientRetryOneTime() throws EaafException, InterruptedException, ClientProtocolException, IOException { - final HttpClientConfiguration config = + final HttpClientConfiguration config = new HttpClientConfiguration("jUnit_retry_" + RandomStringUtils.randomAlphabetic(3)); config.setHttpErrorRetryCount(2); - - CloseableHttpClient client = httpClientFactory.getHttpClient(config); + + final CloseableHttpClient client = httpClientFactory.getHttpClient(config); Assert.assertNotNull("No httpClient", client); - - + + mockWebServer = new MockWebServer(); mockServerUrl = mockWebServer.url("/sp/junit"); mockWebServer.enqueue(new MockResponse() .setSocketPolicy(SocketPolicy.NO_RESPONSE) - .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); + .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); mockWebServer.enqueue(new MockResponse().setResponseCode(200) .setBody("GetData")); //request webservice final HttpUriRequest httpGet1 = new HttpGet(mockServerUrl.url().toString()); - final CloseableHttpResponse httpResp1 = client.execute(httpGet1); + final CloseableHttpResponse httpResp1 = client.execute(httpGet1); Assert.assertEquals("http statusCode", 200, httpResp1.getStatusLine().getStatusCode()); - + } - + @Test - public void testHttpClientRetryTwoTime() throws EaafException, InterruptedException, + public void testHttpClientRetryTwoTime() throws EaafException, InterruptedException, ClientProtocolException, IOException { - final HttpClientConfiguration config = + final HttpClientConfiguration config = new HttpClientConfiguration("jUnit_retry_" + RandomStringUtils.randomAlphabetic(3)); config.setHttpErrorRetryCount(2); - - CloseableHttpClient client = httpClientFactory.getHttpClient(config); + + final CloseableHttpClient client = httpClientFactory.getHttpClient(config); Assert.assertNotNull("No httpClient", client); - - + + mockWebServer = new MockWebServer(); mockServerUrl = mockWebServer.url("/sp/junit"); mockWebServer.enqueue(new MockResponse() .setSocketPolicy(SocketPolicy.NO_RESPONSE) - .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); + .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); mockWebServer.enqueue(new MockResponse() .setSocketPolicy(SocketPolicy.NO_RESPONSE) .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); @@ -290,26 +291,26 @@ public class HttpClientFactoryTest { //request webservice final HttpUriRequest httpGet1 = new HttpGet(mockServerUrl.url().toString()); - final CloseableHttpResponse httpResp1 = client.execute(httpGet1); + final CloseableHttpResponse httpResp1 = client.execute(httpGet1); Assert.assertEquals("http statusCode", 200, httpResp1.getStatusLine().getStatusCode()); - + } - + @Test - public void testHttpClientRetryMaxReached() throws EaafException, InterruptedException, + public void testHttpClientRetryMaxReached() throws EaafException, InterruptedException, ClientProtocolException, IOException { - final HttpClientConfiguration config = + final HttpClientConfiguration config = new HttpClientConfiguration("jUnit_retry_" + RandomStringUtils.randomAlphabetic(3)); config.setHttpErrorRetryCount(2); - - CloseableHttpClient client = httpClientFactory.getHttpClient(config); + + final CloseableHttpClient client = httpClientFactory.getHttpClient(config); Assert.assertNotNull("No httpClient", client); - + mockWebServer = new MockWebServer(); mockServerUrl = mockWebServer.url("/sp/junit"); mockWebServer.enqueue(new MockResponse() .setSocketPolicy(SocketPolicy.NO_RESPONSE) - .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); + .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); mockWebServer.enqueue(new MockResponse() .setSocketPolicy(SocketPolicy.NO_RESPONSE) .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); @@ -322,45 +323,45 @@ public class HttpClientFactoryTest { //request webservice final HttpUriRequest httpGet1 = new HttpGet(mockServerUrl.url().toString()); try { - client.execute(httpGet1); + client.execute(httpGet1); Assert.fail("Max retry failed"); - - } catch (SocketTimeoutException e) { + + } catch (final SocketTimeoutException e) { Assert.assertNotNull("No errorMsg", e.getMessage()); - - } + + } } - + @Test - public void testHttpClientNoRetry() throws EaafException, InterruptedException, + public void testHttpClientNoRetry() throws EaafException, InterruptedException, ClientProtocolException, IOException { - final HttpClientConfiguration config = + final HttpClientConfiguration config = new HttpClientConfiguration("jUnit_retry_" + RandomStringUtils.randomAlphabetic(3)); config.setHttpErrorRetryCount(0); - - CloseableHttpClient client = httpClientFactory.getHttpClient(config); + + final CloseableHttpClient client = httpClientFactory.getHttpClient(config); Assert.assertNotNull("No httpClient", client); - + mockWebServer = new MockWebServer(); mockServerUrl = mockWebServer.url("/sp/junit"); mockWebServer.enqueue(new MockResponse() .setSocketPolicy(SocketPolicy.NO_RESPONSE) - .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); + .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT)); mockWebServer.enqueue(new MockResponse().setResponseCode(200) .setBody("GetData")); //request webservice final HttpUriRequest httpGet1 = new HttpGet(mockServerUrl.url().toString()); try { - client.execute(httpGet1); + client.execute(httpGet1); Assert.fail("Max retry failed"); - - } catch (SocketTimeoutException e) { + + } catch (final SocketTimeoutException e) { Assert.assertNotNull("No errorMsg", e.getMessage()); - - } + + } } - + @Test public void getCustomClientBasicAuthNoPassword() throws EaafException { final HttpClientConfiguration config = new HttpClientConfiguration("jUnit"); @@ -488,7 +489,7 @@ public class HttpClientFactoryTest { } @Test - public void getCustomClientX509AuthWithWrongAlias() throws EaafException, KeyStoreException, + public void getCustomClientX509AuthWithWrongAlias() throws EaafException, KeyStoreException, ClientProtocolException, IOException { final HttpClientConfiguration config = new HttpClientConfiguration("jUnit"); config.setAuthMode("ssl"); @@ -533,7 +534,7 @@ public class HttpClientFactoryTest { Assert.assertEquals("http statusCode", 200, httpResp2.getStatusLine().getStatusCode()); } - + @Test public void getCustomClientX509AuthWithHsmFacade() throws EaafException, ClientProtocolException, IOException, KeyStoreException { @@ -543,26 +544,26 @@ public class HttpClientFactoryTest { clientConfig.setSslKeyAlias("authhandler-sign"); clientConfig.setDisableTlsHostCertificateValidation(true); - - + + final CloseableHttpClient client = httpClientFactory.getHttpClient(clientConfig); Assert.assertNotNull("httpClient", client); //set-up mock-up web-server with SSL client authentication final Pair sslClientKeyStore = keyStoreFactory.buildNewKeyStore(clientConfig.getKeyStoreConfig()); - X509Certificate clientRootCert = (X509Certificate) sslClientKeyStore.getFirst() + final X509Certificate clientRootCert = (X509Certificate) sslClientKeyStore.getFirst() .getCertificateChain(clientConfig.getSslKeyAlias())[1]; - X509Certificate clientEeCert = (X509Certificate) sslClientKeyStore.getFirst() + final X509Certificate clientEeCert = (X509Certificate) sslClientKeyStore.getFirst() .getCertificateChain(clientConfig.getSslKeyAlias())[0]; - + final String localhost = InetAddress.getByName("localhost").getCanonicalHostName(); final HeldCertificate localhostCertificate = new HeldCertificate.Builder() .addSubjectAlternativeName(localhost) .build(); final HandshakeCertificates serverCertificates = new HandshakeCertificates.Builder() - .addTrustedCertificate(clientRootCert) .addTrustedCertificate(clientEeCert) + .addTrustedCertificate(clientRootCert) .heldCertificate(localhostCertificate) .build(); mockWebServer = new MockWebServer(); @@ -578,5 +579,5 @@ public class HttpClientFactoryTest { Assert.assertEquals("http statusCode", 200, httpResp2.getStatusLine().getStatusCode()); } - + } diff --git a/eaaf_modules/eaaf_module_pvp2_core/src/test/resources/data/pvp_metadata_junit_keystore_classpath_entityId.xml b/eaaf_modules/eaaf_module_pvp2_core/src/test/resources/data/pvp_metadata_junit_keystore_classpath_entityId.xml index 7ccd5484..a420a641 100644 --- a/eaaf_modules/eaaf_module_pvp2_core/src/test/resources/data/pvp_metadata_junit_keystore_classpath_entityId.xml +++ b/eaaf_modules/eaaf_module_pvp2_core/src/test/resources/data/pvp_metadata_junit_keystore_classpath_entityId.xml @@ -67,23 +67,7 @@ ANsmjI2azWiTSFjb7Ou5fnCfbeiJUP0s66m8qS4rYl9L - MIIDFDCCArqgAwIBAgIIFy4Oe7D+zq8wCgYIKoZIzj0EAwIwIzEhMB8GA1UEAwwY -S2V5c3RvcmVCYWNrZWRQa2lTZXJ2aWNlMB4XDTIwMDIxOTE0MDMxNVoXDTIwMDUx -OTEzMDMxNVowMjEdMBsGA1UEAwwUaW50LWF1dGhoYW5kbGVyLXNpZ24xETAPBgNV -BAoMCHNvZnR3YXJlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtE1v -1J54suM3VR17mTO5OKrCBeDP6a2dQswhMmUNO6i1l4eXNbtBvMj7k0mnc4yLLZxQ -P0cosjT1kNkOvSNCQcSI+869EOdU4QDCreGLss9a84ZNf/X3ioq/2PYTLOJSMkDQ -qLMHUVawwPYw+ZyUHaY7G0AwX5Gj1gMadfWVMDPAo5OT9WntpqG1850yO0aUMBaF -GSE9RrWVmL1+d2qHqh/pAwq6DQEtbKCl18t1zQfLZvumnQfF930KB2IkLaq6wRTW -IRdwte20PfVmEloAOdegXqUX59rkq6+5CaXfIsN+4Vkb12n2ArZwI/EFjgRdtGYj -CmuySDorynSHrCO934/LHjZtdJPFbg5/4CTXpI1aInum4uqDuq6xoL+ns4hk8kkD -9H9Pj5MYyjUc51+450ylOwLmGkqNDJBh3ecnH76NIoKviR3KlBaj0bSlnoV5Kl8H -bfnXQD98BH+YLeULrD3XWVjirOWPdfdNKcInpuXrdTZ/GvyGL5T/63mtEWiWysfP -Gw4+9AlWNXpyLviaHfxTpC6T76qYHKHd4eltRLubrgL8gHZrJwHio98kKfVMS3Oy -qHAEWBSWv+LveARn0RF4jlcPIL3gclrU9jxF4k5Btvdax3+if1MWVAZ9ML5263ug -Qr11Pkbko09VqppyM484/o+mJihTWyucKdVONw8CAwEAATAKBggqhkjOPQQDAgNI -ADBFAiBJSZqfI1kmJGy8/tRut7h2YbZWNeUA+gmFX+wJxu9ePwIhALgjht8La4AZ -/r3t33clJW8tGRMiA8cBbxm3Ox0y7DyP + MIIDEzCCArqgAwIBAgIIX/q/dgMGzCYwCgYIKoZIzj0EAwIwIzEhMB8GA1UEAwwYS2V5c3RvcmVCYWNrZWRQa2lTZXJ2aWNlMB4XDTIwMDYwMjA1MjkwMFoXDTIwMDkwMjA1MjkwMFowMjEdMBsGA1UEAwwUaW50LWF1dGhoYW5kbGVyLXNpZ24xETAPBgNVBAoMCHNvZnR3YXJlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAv47+IfV67UBlAFYDtb94z8LfPjmpVaqKLK5nm/FUa3Q6XbtN/QCOM/qO008ylV/ZEa+D8Ys458bfsTZKUcRpFH+hjdnwn1sXQiCvwWZJD73fGH+2PszxSg01fQO0YAHoqd8PHtmtC5hq20i9qO+0Lh0/7ItaJe+MdPslr65ZaSwxYUMKgsAIxwaU14Agvr6QLppr1qjt246Zq/ZEuTNGH3BIui7wMPEm0QZEsUpG0l6UdErFy+Kjxzpjfe8q7v5X/OTYKuS5baB4NJPDBDIhBsgD0+aQfWMGfnH+WjfvZH01W8VyzRMTlCJOAyXBl7cDkMi10xMrsf6j8YAybziNKErDRtMABjlO3O3xUrm/f/Yi9362mQUbR/WWrYoS80jnAtW+VATUd4uasc0MRA2agp9Hc/1bektR50Pw8p3eZS4dKal0Dj5nLVIyW4ahY+WAnRQj1/MblmHLVkM4zZPznzdAn2Pi5bJ/IxhvCtzx4w+/Zifmb0DSWerCzAGsN9TgFAHi/HM0Nt5mCRrf0DI6YOYnXheB9HBVWE12b1kTIYkytcg07WZohRmHLFzBAtafxuZQ3/IV+SXIR9+mIvOSAgkheulrH32lNtfsC/ULWD++JtoJKpabnBjpRErnpX333GwnNyO/s7d4jprMqYWeCFox54NuZicqYKq7KVjlrQUCAwEAATAKBggqhkjOPQQDAgNHADBEAiBQ6esaYUCanPfaKbR+1mZhNQjTrNLi30aqthvWieLDvAIgX1FvQHTBK3GfXjU2QSS2uMG7mWLnQuXA69965bquriU= @@ -165,23 +149,7 @@ ANsmjI2azWiTSFjb7Ou5fnCfbeiJUP0s66m8qS4rYl9L - MIIDFDCCArqgAwIBAgIIFy4Oe7D+zq8wCgYIKoZIzj0EAwIwIzEhMB8GA1UEAwwY -S2V5c3RvcmVCYWNrZWRQa2lTZXJ2aWNlMB4XDTIwMDIxOTE0MDMxNVoXDTIwMDUx -OTEzMDMxNVowMjEdMBsGA1UEAwwUaW50LWF1dGhoYW5kbGVyLXNpZ24xETAPBgNV -BAoMCHNvZnR3YXJlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtE1v -1J54suM3VR17mTO5OKrCBeDP6a2dQswhMmUNO6i1l4eXNbtBvMj7k0mnc4yLLZxQ -P0cosjT1kNkOvSNCQcSI+869EOdU4QDCreGLss9a84ZNf/X3ioq/2PYTLOJSMkDQ -qLMHUVawwPYw+ZyUHaY7G0AwX5Gj1gMadfWVMDPAo5OT9WntpqG1850yO0aUMBaF -GSE9RrWVmL1+d2qHqh/pAwq6DQEtbKCl18t1zQfLZvumnQfF930KB2IkLaq6wRTW -IRdwte20PfVmEloAOdegXqUX59rkq6+5CaXfIsN+4Vkb12n2ArZwI/EFjgRdtGYj -CmuySDorynSHrCO934/LHjZtdJPFbg5/4CTXpI1aInum4uqDuq6xoL+ns4hk8kkD -9H9Pj5MYyjUc51+450ylOwLmGkqNDJBh3ecnH76NIoKviR3KlBaj0bSlnoV5Kl8H -bfnXQD98BH+YLeULrD3XWVjirOWPdfdNKcInpuXrdTZ/GvyGL5T/63mtEWiWysfP -Gw4+9AlWNXpyLviaHfxTpC6T76qYHKHd4eltRLubrgL8gHZrJwHio98kKfVMS3Oy -qHAEWBSWv+LveARn0RF4jlcPIL3gclrU9jxF4k5Btvdax3+if1MWVAZ9ML5263ug -Qr11Pkbko09VqppyM484/o+mJihTWyucKdVONw8CAwEAATAKBggqhkjOPQQDAgNI -ADBFAiBJSZqfI1kmJGy8/tRut7h2YbZWNeUA+gmFX+wJxu9ePwIhALgjht8La4AZ -/r3t33clJW8tGRMiA8cBbxm3Ox0y7DyP + MIIDEzCCArqgAwIBAgIIX/q/dgMGzCYwCgYIKoZIzj0EAwIwIzEhMB8GA1UEAwwYS2V5c3RvcmVCYWNrZWRQa2lTZXJ2aWNlMB4XDTIwMDYwMjA1MjkwMFoXDTIwMDkwMjA1MjkwMFowMjEdMBsGA1UEAwwUaW50LWF1dGhoYW5kbGVyLXNpZ24xETAPBgNVBAoMCHNvZnR3YXJlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAv47+IfV67UBlAFYDtb94z8LfPjmpVaqKLK5nm/FUa3Q6XbtN/QCOM/qO008ylV/ZEa+D8Ys458bfsTZKUcRpFH+hjdnwn1sXQiCvwWZJD73fGH+2PszxSg01fQO0YAHoqd8PHtmtC5hq20i9qO+0Lh0/7ItaJe+MdPslr65ZaSwxYUMKgsAIxwaU14Agvr6QLppr1qjt246Zq/ZEuTNGH3BIui7wMPEm0QZEsUpG0l6UdErFy+Kjxzpjfe8q7v5X/OTYKuS5baB4NJPDBDIhBsgD0+aQfWMGfnH+WjfvZH01W8VyzRMTlCJOAyXBl7cDkMi10xMrsf6j8YAybziNKErDRtMABjlO3O3xUrm/f/Yi9362mQUbR/WWrYoS80jnAtW+VATUd4uasc0MRA2agp9Hc/1bektR50Pw8p3eZS4dKal0Dj5nLVIyW4ahY+WAnRQj1/MblmHLVkM4zZPznzdAn2Pi5bJ/IxhvCtzx4w+/Zifmb0DSWerCzAGsN9TgFAHi/HM0Nt5mCRrf0DI6YOYnXheB9HBVWE12b1kTIYkytcg07WZohRmHLFzBAtafxuZQ3/IV+SXIR9+mIvOSAgkheulrH32lNtfsC/ULWD++JtoJKpabnBjpRErnpX333GwnNyO/s7d4jprMqYWeCFox54NuZicqYKq7KVjlrQUCAwEAATAKBggqhkjOPQQDAgNHADBEAiBQ6esaYUCanPfaKbR+1mZhNQjTrNLi30aqthvWieLDvAIgX1FvQHTBK3GfXjU2QSS2uMG7mWLnQuXA69965bquriU= -- cgit v1.2.3