405 Method Not Found - Batched Request

After discovering batching http://docs.servicestack.net/auto-batched-requests
We’ve decided to use it to improve the performance of a N+1 problem we have had for some time.

As I understood it form the docs, the only change I needed to make was client-side, and use JsonServiceClient.SendAll(IEnumerable<MyDto> requests) instead of calling JsonServiceClient.Get(MyDto request) multiple times.

Our service looked like this:

        public MyDtoResponse Get(MyDto body)
        {
            ....useful stuff
            return new MyDtoResponse();
        }

where: MyDto looks like this:

 [Authenticate]
    [Route(@"/aresource/{Id}", @"GET")]
    public class MyDto : IReturn<MyDtoResponse>
    {
        public string Id { get; set; }
    }

But calling JsonServiceClient.SendAll() we are getting a 405 - Method Not Allowed The operation 'String[]' does not exist for this service.

Fiddler tells me that the client is calling my API with the POST /api/json/reply/string[] rather then GET /api/json/reply/MyDto[].

The docs only show examples using Any verbs.

Should I be assuming that I also need to change my service operation from ‘Get’ to Any to support batch operations? or do I also need to to support POST verb on the DTO as well?

Please can someone confirm this.
Can we also update the docs to make this clear. Its saying only the client has to change to support batch requests, which is not always true.
(or be honest, is my way of defining operations and DTOs too old school these days?)

Can you provide the client code you’re using that’s causing the issue?

Yes, I noticed that I would get POST /api/json/reply/string[] when using this code like this:

var ids = new[]{"id1", "id2", "id3"};
var request = ids.Select(id => new MyDto{ Id= id});

new JsonServiceClient().SendAll<MyDtoResponse>(requests);

but then if I converted the enumerable to array using ToArray(), I would get: POST /api/json/reply/MyDto[] on the wire

So that solved the first issue, of my service returning 405. However, it is not exactly ideal from a consumers point of view.

Now I am still to find out whether I need the Any() method to replace the get() method, AND/OR I need to support POST in my Dto as well?

Auto Batched requests are always sent as a POST requests so you’d need to use either Any() or Post(), it doesn’t use the custom [Route] so you don’t need to change anything there.

But for GET requests returning the same result I’d expect it would be more efficient to call a single DTO with List<string> Ids so you would only need to perform a single query, instead of a query per Request DTO.

OK cool, so I have changed my operations to be Any now.

Now, I am experiencing another issue:
On the wire my request looks like this:

POST https://tenant1.localhost.dev:4445/api/json/reply/GetUserProfile[] HTTP/1.1
Accept: application/json
User-Agent: ServiceStack .NET Client 4.514
Accept-Encoding: gzip,deflate
Authorization: Bearer AAIAAJxZVCdVtMp96xdbI5J09Q6KNBwh_e5kch6tC_nIB8v8OwbkrkLwpjeg8huH9uFL9v2vHSz3Fx5IHw67EU6hoXMMBZTCDQzYpxM8NxHooXrFJKo1-4ndh20hoxe-hLHCC2SbND8daUIWYJFpytav2TzkS87U5bDfmOcRhV8lg2tPZ8cKKANaCeIV882i4nHNKkYetPEugKFzFxy68CPLXuuVaK7t3_wKNGukxxi2ZJQjeLP-YF0dAg1BW2Df3FGdvJXBmvd9GRZqG1QFBs_EJ80STrU-xoN_1UShu5eGlREGJD0MDbAWhamKCovuu6LohefpWR-SkUQWFi94XoJLLhGmLcp_A4eOSv4gEomAL3ySsAC5X9S-XS60mg4bNV7aZcK3cDJGtqK2gctSbayqBfzjxRrz_pN7244xhrS5W1SsMfAwkd7g_rkPqRDh5RY9Ol82QxTiqTGHniT8dI-K34-5MCaUE64jFhBGC2TvtDgONzExMiwJRAL51C76-WO1AXF8Km3oyMCUdjiPwOTch-iuP4w9uXIFhm4J6MpcH9E8R8JRxq0lI3UnWwzzjAkkOixTd-8Qu11BFCjSwbhl-e99GavgQIcLtK8IR1FQ2zIRi3OVHHP4kYduI5BgxewPH1CapWVdFPDbrHipM4FsdwTI4wKK91Vii4yzlcixCL5_FAMAAAACAABR3AJJ6K0o2jbGpwrttaQDRLXJOES0vPzUS5ZGOZlkN3nFQoREeQajKbJuPyCpIL2z6KriV2dj_ohcjevT4vDaba-Nz4HV_NzbSwI6qzxLFWoMEBD4fu5Fu2N98L4zvS4PRLmfZ3yAB8x9nzdr6OFq5xBCb9DQrCsmJFdY3DHPweVdHdRqUJg0ajEox4HoPOXKKHov-UPszoLN2CswumwRZoSdIQyFAyYGu6GidFzLPwMm1V2GmdZTUqhGA49cGA_veO98Hkmayct1R5kUul_xXi7UrzO-HsM_gldPH9FRqmqlBws45n2aV8duKnp-vX8_yNBFeACGIWH73Pp4s_Cs1gzyVHUsk_ABGBd6TWkEKMSPVGNxsbEEAQjeWOz7MzfIyFKibwxKtR0QgdFMNQBOwGIvRYVAf1osQOUbrOaAngGkewuJHrAmlRcV8dzqdsCdwPe92bKAsxUSO6E7qmemOzOn_3PErUU9r7iHVTEGI-YOe6hfIrU_c1Z95mNpM-dwrHKgrC3nl6F-uiPBIcDGM6H5s58K7OwFzMh4rMaiYxNweYdXRIS5axI8Ck903RMLUr3T2zFnYJA6NLivsbcc7baowNJh-CxVQl4jCcDcIQqrN9N70OhGw1YEHc8GOIQzlFmVE2XZpKVcaXEPV-lmPHPYPx62QNEVitnEGI_HPMfVQkvh8IYnYZ0EqT9DLreDm2rqM5hB4yp3p4_CHahXi2FYxjpgNBHIOZKPGbjh8ayXLNPctmfAdYak6qX4N8Dm1ul3ZBsxTGKa1lX_oALxQqeSLpd01oaGYse7jZCjormlHR29jMR10cvF-U5lgGmU2UxK1ug2viEjcUoTGz9ZfoKXXi4QpJ8N0RY3WOZt4Ss-VlXRWwq3ByaJgSxmdtg6nyAmnsdZwRNR8B6D0U3A_ScsOwNR7Z797ZtIOjacG21cw4ABEWI4-fRO9VePcQCGLADDTZ_jEVAru2CnRLft0_63KLcde0qotiMhOmqpcwwnxksPzk5qcsHasruSp5PlLslL_GgOoVyxpKbP0il6
Content-Type: application/json
Host: tenant1.localhost.dev:4445
Request-Id: |edXrrwgXABA=.1a3cf259_79.
Content-Length: 415
Expect: 100-continue

[{"Id":"49a8cafd-e80d-4920-b085-c956d6c0bdbc"},{"Id":"80206559-6049-4c1d-9b8b-c0a8907ed689"},{"Id":"f662fd83-ea39-4788-b8a7-ef94832389d6"},{"Id":"9bcc5644-b038-4ad6-8250-174c62a1fba5"},{"Id":"ef38295e-df8e-483f-b1b1-658b2b0a7590"},{"Id":"27349eed-13fa-40a4-8f48-f9f621546d9f"},{"Id":"934013c4-2281-4093-90c2-f1367371c085"},{"Id":"799a0272-2009-41e4-8096-9cf5d6fc5321"},{"Id":"ac9c4bf4-eda6-4deb-9705-95f3661798aa"}]

and my response looks to be OK.

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Vary: Accept
Server: Microsoft-IIS/10.0
X-AutoBatch-Completed: 9
X-Powered-By: ServiceStack/4.514 NET45 Win32NT/.NET
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, PATCH, OPTIONS
Access-Control-Allow-Headers: Content-Type
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 02 Nov 2018 02:53:56 GMT
Content-Length: 22384

[{"Contents":"7VhNb9s4EP0rAc+mQYmSSPq0+WiLAm0SbJI9pOhhRA4bobYUUHKyRZH/vkPJsTe10gaL9W4L2BAskxbfmxm+GYr8yq5aDOeh8dUc2ewre+vYjGUGtAXvOGrheGZSwUuhc25NXrjCitKVlk3YEdSfD61tlnVHQx8m7BiC23Sw44DQoTuhr6vOEq4QIuH9dSnErL+mYvhcMxp/Eqo7DO27ymLd9ubEsWf+qArdzY/GT9irP2+r8CUOeQHXP/T50LmAbTv4+2oB1ZzGVnW7DBh+s83iFuovU7rTo++g7d43rvIVRoJUJJonZFAaDZLJTOZTJY02SkbjD++gg3B+03TNAP66CVjDAtsNAT12sQyxk/qgXf2csD8wEIuFrmrqaBq7xLBoz/wFhjuK5dpH54QGKEvuc4M8s15z46np0tIrbTGxqSC404HgdojQtItgjW9XYBP2th0Io1tdWGKM5k1T4+lyUZKRj2zaO53ZRHC65zxzNuVauoSnYFGqQmbgy222RVPS7TbifUPlYd7iJuqPLE5KcE5xLyXNWy5ybtBnPBNepSZV0tsRn7DHGMc/nPfo3wT1w65juCt/djobH0mRloQaA3aOgfK2g0/UkvJRlfHZZMKu6rt1M52wy6YDirJ8GAN9oN4L7Lqq/rRKtC2BH4dqUdUwP25qCmjsXgsikbJ0JkfuS1vwLJOeG/KOpyZToPPcKuO3HbUrQLsBHBU61TRXdbHQbbIqQZohbbhMRST0iipHmXOtnEkSRRlejkTW9kA2Ao3L8Gl1HaiEtapAjbwwBVGJAnmZJ46X2mXGFVkCCNtUJSHBCmmca7vw9nTWSp0LlfKigEgHloPQJH2ZJBaUsKhwm84NYPMV2DhjXHb+5t2+YO0L1i9csChbmxCa+0FM+4l4SVr8F+V6pxV610XyZVJNn0o1W0u1GJVq/5J+dl/vlfpTKnU3C/xzSsrEd5Qk10rKn1fSOYTPezXt1fQvqGn/FvNzimini+eONjT/19Kcmu+kQL5OAfXcW+QPj4zUVKlMGp3HI6Onm98TtHMIMDQfk+qyWuB1VNGMneL9wTXCHGp3cNHRN83NQfw/HlU1FuJZGMOavzmijt8h7r77ndlgsognVBh6LwXt0P8C","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7VhNb9s4EP0rAc+mQYmSSPq0+WiLAm0SbJI9pOhhRA4bobYUUHKyRZH/vkPJsTe10gaL9W4L2BAskxbfmxm+GYr8yq5aDOeh8dUc2ewre+vYjGUGtAXvOGrheGZSwUuhc25NXrjCitKVlk3YEdSfD61tlnVHQx8m7BiC23Sw44DQoTuhr6vOEq4QIuH9dSnErL+mYvhcMxp/Eqo7DO27ymLd9ubEsWf+qArdzY/GT9irP2+r8CUOeQHXP/T50LmAbTv4+2oB1ZzGVnW7DBh+s83iFuovU7rTo++g7d43rvIVRoJUJJonZFAaDZLJTOZTJY02SkbjD++gg3B+03TNAP66CVjDAtsNAT12sQyxk/qgXf2csD8wEIuFrmrqaBq7xLBoz/wFhjuK5dpH54QGKEvuc4M8s15z46np0tIrbTGxqSC404HgdojQtItgjW9XYBP2th0Io1tdWGKM5k1T4+lyUZKRj2zaO53ZRHC65zxzNuVauoSnYFGqQmbgy222RVPS7TbifUPlYd7iJuqPLE5KcE5xLyXNWy5ybtBnPBNepSZV0tsRn7DHGMc/nPfo3wT1w65juCt/djobH0mRloQaA3aOgfK2g0/UkvJRlfHZZMKu6rt1M52wy6YDirJ8GAN9oN4L7Lqq/rRKtC2BH4dqUdUwP25qCmjsXgsikbJ0JkfuS1vwLJOeG/KOpyZToPPcKuO3HbUrQLsBHBU61TRXdbHQbbIqQZohbbhMRST0iipHmXOtnEkSRRlejkTW9kA2Ao3L8Gl1HaiEtapAjbwwBVGJAnmZJ46X2mXGFVkCCNtUJSHBCmmca7vw9nTWSp0LlfKigEgHloPQJH2ZJBaUsKhwm84NYPMV2DhjXHb+5t2+YO0L1i9csChbmxCa+0FM+4l4SVr8F+V6pxV610XyZVJNn0o1W0u1GJVq/5J+dl/vlfpTKnU3C/xzSsrEd5Qk10rKn1fSOYTPezXt1fQvqGn/FvNzimini+eONjT/19Kcmu+kQL5OAfXcW+QPj4zUVKlMGp3HI6Onm98TtHMIMDQfk+qyWuB1VNGMneL9wTXCHGp3cNHRN83NQfw/HlU1FuJZGMOavzmijt8h7r77ndlgsognVBh6LwXt0P8C","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7VhNb9s4EP0rAc+mQYmSSPq0+WiLAm0SbJI9pOhhRA4bobYUUHKyRZH/vkPJsTe10gaL9W4L2BAskxbfmxm+GYr8yq5aDOeh8dUc2ewre+vYjGUGtAXvOGrheGZSwUuhc25NXrjCitKVlk3YEdSfD61tlnVHQx8m7BiC23Sw44DQoTuhr6vOEq4QIuH9dSnErL+mYvhcMxp/Eqo7DO27ymLd9ubEsWf+qArdzY/GT9irP2+r8CUOeQHXP/T50LmAbTv4+2oB1ZzGVnW7DBh+s83iFuovU7rTo++g7d43rvIVRoJUJJonZFAaDZLJTOZTJY02SkbjD++gg3B+03TNAP66CVjDAtsNAT12sQyxk/qgXf2csD8wEIuFrmrqaBq7xLBoz/wFhjuK5dpH54QGKEvuc4M8s15z46np0tIrbTGxqSC404HgdojQtItgjW9XYBP2th0Io1tdWGKM5k1T4+lyUZKRj2zaO53ZRHC65zxzNuVauoSnYFGqQmbgy222RVPS7TbifUPlYd7iJuqPLE5KcE5xLyXNWy5ybtBnPBNepSZV0tsRn7DHGMc/nPfo3wT1w65juCt/djobH0mRloQaA3aOgfK2g0/UkvJRlfHZZMKu6rt1M52wy6YDirJ8GAN9oN4L7Lqq/rRKtC2BH4dqUdUwP25qCmjsXgsikbJ0JkfuS1vwLJOeG/KOpyZToPPcKuO3HbUrQLsBHBU61TRXdbHQbbIqQZohbbhMRST0iipHmXOtnEkSRRlejkTW9kA2Ao3L8Gl1HaiEtapAjbwwBVGJAnmZJ46X2mXGFVkCCNtUJSHBCmmca7vw9nTWSp0LlfKigEgHloPQJH2ZJBaUsKhwm84NYPMV2DhjXHb+5t2+YO0L1i9csChbmxCa+0FM+4l4SVr8F+V6pxV610XyZVJNn0o1W0u1GJVq/5J+dl/vlfpTKnU3C/xzSsrEd5Qk10rKn1fSOYTPezXt1fQvqGn/FvNzimini+eONjT/19Kcmu+kQL5OAfXcW+QPj4zUVKlMGp3HI6Onm98TtHMIMDQfk+qyWuB1VNGMneL9wTXCHGp3cNHRN83NQfw/HlU1FuJZGMOavzmijt8h7r77ndlgsognVBh6LwXt0P8C","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7VhNb9s4EP0rAc+mQYmSSPq0+WiLAm0SbJI9pOhhRA4bobYUUHKyRZH/vkPJsTe10gaL9W4L2BAskxbfmxm+GYr8yq5aDOeh8dUc2ewre+vYjGUGtAXvOGrheGZSwUuhc25NXrjCitKVlk3YEdSfD61tlnVHQx8m7BiC23Sw44DQoTuhr6vOEq4QIuH9dSnErL+mYvhcMxp/Eqo7DO27ymLd9ubEsWf+qArdzY/GT9irP2+r8CUOeQHXP/T50LmAbTv4+2oB1ZzGVnW7DBh+s83iFuovU7rTo++g7d43rvIVRoJUJJonZFAaDZLJTOZTJY02SkbjD++gg3B+03TNAP66CVjDAtsNAT12sQyxk/qgXf2csD8wEIuFrmrqaBq7xLBoz/wFhjuK5dpH54QGKEvuc4M8s15z46np0tIrbTGxqSC404HgdojQtItgjW9XYBP2th0Io1tdWGKM5k1T4+lyUZKRj2zaO53ZRHC65zxzNuVauoSnYFGqQmbgy222RVPS7TbifUPlYd7iJuqPLE5KcE5xLyXNWy5ybtBnPBNepSZV0tsRn7DHGMc/nPfo3wT1w65juCt/djobH0mRloQaA3aOgfK2g0/UkvJRlfHZZMKu6rt1M52wy6YDirJ8GAN9oN4L7Lqq/rRKtC2BH4dqUdUwP25qCmjsXgsikbJ0JkfuS1vwLJOeG/KOpyZToPPcKuO3HbUrQLsBHBU61TRXdbHQbbIqQZohbbhMRST0iipHmXOtnEkSRRlejkTW9kA2Ao3L8Gl1HaiEtapAjbwwBVGJAnmZJ46X2mXGFVkCCNtUJSHBCmmca7vw9nTWSp0LlfKigEgHloPQJH2ZJBaUsKhwm84NYPMV2DhjXHb+5t2+YO0L1i9csChbmxCa+0FM+4l4SVr8F+V6pxV610XyZVJNn0o1W0u1GJVq/5J+dl/vlfpTKnU3C/xzSsrEd5Qk10rKn1fSOYTPezXt1fQvqGn/FvNzimini+eONjT/19Kcmu+kQL5OAfXcW+QPj4zUVKlMGp3HI6Onm98TtHMIMDQfk+qyWuB1VNGMneL9wTXCHGp3cNHRN83NQfw/HlU1FuJZGMOavzmijt8h7r77ndlgsognVBh6LwXt0P8C","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7VhNb9s4EP0rAc+mQYmSSPq0+WiLAm0SbJI9pOhhRA4bobYUUHKyRZH/vkPJsTe10gaL9W4L2BAskxbfmxm+GYr8yq5aDOeh8dUc2ewre+vYjGUGtAXvOGrheGZSwUuhc25NXrjCitKVlk3YEdSfD61tlnVHQx8m7BiC23Sw44DQoTuhr6vOEq4QIuH9dSnErL+mYvhcMxp/Eqo7DO27ymLd9ubEsWf+qArdzY/GT9irP2+r8CUOeQHXP/T50LmAbTv4+2oB1ZzGVnW7DBh+s83iFuovU7rTo++g7d43rvIVRoJUJJonZFAaDZLJTOZTJY02SkbjD++gg3B+03TNAP66CVjDAtsNAT12sQyxk/qgXf2csD8wEIuFrmrqaBq7xLBoz/wFhjuK5dpH54QGKEvuc4M8s15z46np0tIrbTGxqSC404HgdojQtItgjW9XYBP2th0Io1tdWGKM5k1T4+lyUZKRj2zaO53ZRHC65zxzNuVauoSnYFGqQmbgy222RVPS7TbifUPlYd7iJuqPLE5KcE5xLyXNWy5ybtBnPBNepSZV0tsRn7DHGMc/nPfo3wT1w65juCt/djobH0mRloQaA3aOgfK2g0/UkvJRlfHZZMKu6rt1M52wy6YDirJ8GAN9oN4L7Lqq/rRKtC2BH4dqUdUwP25qCmjsXgsikbJ0JkfuS1vwLJOeG/KOpyZToPPcKuO3HbUrQLsBHBU61TRXdbHQbbIqQZohbbhMRST0iipHmXOtnEkSRRlejkTW9kA2Ao3L8Gl1HaiEtapAjbwwBVGJAnmZJ46X2mXGFVkCCNtUJSHBCmmca7vw9nTWSp0LlfKigEgHloPQJH2ZJBaUsKhwm84NYPMV2DhjXHb+5t2+YO0L1i9csChbmxCa+0FM+4l4SVr8F+V6pxV610XyZVJNn0o1W0u1GJVq/5J+dl/vlfpTKnU3C/xzSsrEd5Qk10rKn1fSOYTPezXt1fQvqGn/FvNzimini+eONjT/19Kcmu+kQL5OAfXcW+QPj4zUVKlMGp3HI6Onm98TtHMIMDQfk+qyWuB1VNGMneL9wTXCHGp3cNHRN83NQfw/HlU1FuJZGMOavzmijt8h7r77ndlgsognVBh6LwXt0P8C","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7VhNb9s4EP0rAc+mQYmSSPq0+WiLAm0SbJI9pOhhRA4bobYUUHKyRZH/vkPJsTe10gaL9W4L2BAskxbfmxm+GYr8yq5aDOeh8dUc2ewre+vYjGUGtAXvOGrheGZSwUuhc25NXrjCitKVlk3YEdSfD61tlnVHQx8m7BiC23Sw44DQoTuhr6vOEq4QIuH9dSnErL+mYvhcMxp/Eqo7DO27ymLd9ubEsWf+qArdzY/GT9irP2+r8CUOeQHXP/T50LmAbTv4+2oB1ZzGVnW7DBh+s83iFuovU7rTo++g7d43rvIVRoJUJJonZFAaDZLJTOZTJY02SkbjD++gg3B+03TNAP66CVjDAtsNAT12sQyxk/qgXf2csD8wEIuFrmrqaBq7xLBoz/wFhjuK5dpH54QGKEvuc4M8s15z46np0tIrbTGxqSC404HgdojQtItgjW9XYBP2th0Io1tdWGKM5k1T4+lyUZKRj2zaO53ZRHC65zxzNuVauoSnYFGqQmbgy222RVPS7TbifUPlYd7iJuqPLE5KcE5xLyXNWy5ybtBnPBNepSZV0tsRn7DHGMc/nPfo3wT1w65juCt/djobH0mRloQaA3aOgfK2g0/UkvJRlfHZZMKu6rt1M52wy6YDirJ8GAN9oN4L7Lqq/rRKtC2BH4dqUdUwP25qCmjsXgsikbJ0JkfuS1vwLJOeG/KOpyZToPPcKuO3HbUrQLsBHBU61TRXdbHQbbIqQZohbbhMRST0iipHmXOtnEkSRRlejkTW9kA2Ao3L8Gl1HaiEtapAjbwwBVGJAnmZJ46X2mXGFVkCCNtUJSHBCmmca7vw9nTWSp0LlfKigEgHloPQJH2ZJBaUsKhwm84NYPMV2DhjXHb+5t2+YO0L1i9csChbmxCa+0FM+4l4SVr8F+V6pxV610XyZVJNn0o1W0u1GJVq/5J+dl/vlfpTKnU3C/xzSsrEd5Qk10rKn1fSOYTPezXt1fQvqGn/FvNzimini+eONjT/19Kcmu+kQL5OAfXcW+QPj4zUVKlMGp3HI6Onm98TtHMIMDQfk+qyWuB1VNGMneL9wTXCHGp3cNHRN83NQfw/HlU1FuJZGMOavzmijt8h7r77ndlgsognVBh6LwXt0P8C","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7Vhbb9s2FP4rgZ5Ng1dd/LRcuqFAlwRLsocUfTgkDxuhtmRQSrKiyH/foeQ6S+y0wTBvHWBDkCxS/D6ew+8cXr5kVx3G89iGeo7Z7Ev21mezrLLOmVxrZrkqmQafs1IazkShXS5BBAsmm2RH0Hw6dK69bXpq+jDJjiH6x4LsOCL06E/odtU7wuWcCzZcl5zPhmvKx991Ru1PYn2HsXtXO2y6oTup7Vk4qmN/8732k+zNH8s6fk5NXsH1N20+9D5i1432vllAPae2DuIS4qf2vsEof3LtYgnN5yk9qcE76PpfW1+HGhON5KJkgrolU7eUmIliyk2pqkIkEw7voId4ftP27UjxcxuxgQV2z2no44vbmKqoBrrV30n2O0bictDXbZO6mV1iXHRn4QLjHfl1ba8FL1E7yySKnOmicgyojJVWmEJXWAQoCe50JFiO3pr2CawN3Qpskr3tRsJkXB9vMXn2pm3w9HZhMT56F62xKDizXhKbBceq4JGVwug86FwVRm+yLVpLj2XCe0YVYN7h4wisWEqUXipBYxgCMu0BmC2rggWulPLOKLT5JgsOGNvxD+cD+jOnvt+1D3dlz05H4wMp0pFck8POMVIM9/CR3pT6qsr0rZhkV83d+lVOssu2B/KyetgG+kClF9j3dfNxFXQbAj+O9aJuYH7cNuTQVLwWBFhThTxYlqMxTHOwDPIKmHKGIjoYGZTbNNStAN0j4FahU37zdZ+S3pqQVyUIS4RVkJRFvClYVUiSRS5KsKgL0FtGzA1ALgFtl+HTTDtSSa/LHIVlGArOdFA0fqXjTAZtvJAiL4zapLKEBCuk7VybSXigC2jyEoVkEKxlmhIWK4OuSPWiqFBqz0vYpPMj2HwFtp0xTUF/sW6fsPYJ63+csCha2xjb+1FM+4F4TVj8G+l6pxl610nydVKVT6Wq11LNt0p1WLCfpdXkXqk/oFJ3M8G/pCTNv6EktVaSeVlJ57Q32atpr6Z/QE37VcyPKaKdTp472tD8V1OzrL4RAmYdAsVLq8jvHhyVU62Vqso8HRw93fyeoJtDhPH1a1Bd1gu8TiqaZad4f3CNMIfGH1z0dKexOUj16cCqdZDOxTJs2C9HVPAbpN33sDMbu8zTORXGwUpOO/Q/AQ==","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7Vhbb9s2FP4rgZ5Ng1dd/LRcuqFAlwRLsocUfTgkDxuhtmRQSrKiyH/foeQ6S+y0wTBvHWBDkCxS/D6ew+8cXr5kVx3G89iGeo7Z7Ev21mezrLLOmVxrZrkqmQafs1IazkShXS5BBAsmm2RH0Hw6dK69bXpq+jDJjiH6x4LsOCL06E/odtU7wuWcCzZcl5zPhmvKx991Ru1PYn2HsXtXO2y6oTup7Vk4qmN/8732k+zNH8s6fk5NXsH1N20+9D5i1432vllAPae2DuIS4qf2vsEof3LtYgnN5yk9qcE76PpfW1+HGhON5KJkgrolU7eUmIliyk2pqkIkEw7voId4ftP27UjxcxuxgQV2z2no44vbmKqoBrrV30n2O0bictDXbZO6mV1iXHRn4QLjHfl1ba8FL1E7yySKnOmicgyojJVWmEJXWAQoCe50JFiO3pr2CawN3Qpskr3tRsJkXB9vMXn2pm3w9HZhMT56F62xKDizXhKbBceq4JGVwug86FwVRm+yLVpLj2XCe0YVYN7h4wisWEqUXipBYxgCMu0BmC2rggWulPLOKLT5JgsOGNvxD+cD+jOnvt+1D3dlz05H4wMp0pFck8POMVIM9/CR3pT6qsr0rZhkV83d+lVOssu2B/KyetgG+kClF9j3dfNxFXQbAj+O9aJuYH7cNuTQVLwWBFhThTxYlqMxTHOwDPIKmHKGIjoYGZTbNNStAN0j4FahU37zdZ+S3pqQVyUIS4RVkJRFvClYVUiSRS5KsKgL0FtGzA1ALgFtl+HTTDtSSa/LHIVlGArOdFA0fqXjTAZtvJAiL4zapLKEBCuk7VybSXigC2jyEoVkEKxlmhIWK4OuSPWiqFBqz0vYpPMj2HwFtp0xTUF/sW6fsPYJ63+csCha2xjb+1FM+4F4TVj8G+l6pxl610nydVKVT6Wq11LNt0p1WLCfpdXkXqk/oFJ3M8G/pCTNv6EktVaSeVlJ57Q32atpr6Z/QE37VcyPKaKdTp472tD8V1OzrL4RAmYdAsVLq8jvHhyVU62Vqso8HRw93fyeoJtDhPH1a1Bd1gu8TiqaZad4f3CNMIfGH1z0dKexOUj16cCqdZDOxTJs2C9HVPAbpN33sDMbu8zTORXGwUpOO/Q/AQ==","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7Vhbb9s2FP4rgZ5Ng1dd/LRcuqFAlwRLsocUfTgkDxuhtmRQSrKiyH/foeQ6S+y0wTBvHWBDkCxS/D6ew+8cXr5kVx3G89iGeo7Z7Ev21mezrLLOmVxrZrkqmQafs1IazkShXS5BBAsmm2RH0Hw6dK69bXpq+jDJjiH6x4LsOCL06E/odtU7wuWcCzZcl5zPhmvKx991Ru1PYn2HsXtXO2y6oTup7Vk4qmN/8732k+zNH8s6fk5NXsH1N20+9D5i1432vllAPae2DuIS4qf2vsEof3LtYgnN5yk9qcE76PpfW1+HGhON5KJkgrolU7eUmIliyk2pqkIkEw7voId4ftP27UjxcxuxgQV2z2no44vbmKqoBrrV30n2O0bictDXbZO6mV1iXHRn4QLjHfl1ba8FL1E7yySKnOmicgyojJVWmEJXWAQoCe50JFiO3pr2CawN3Qpskr3tRsJkXB9vMXn2pm3w9HZhMT56F62xKDizXhKbBceq4JGVwug86FwVRm+yLVpLj2XCe0YVYN7h4wisWEqUXipBYxgCMu0BmC2rggWulPLOKLT5JgsOGNvxD+cD+jOnvt+1D3dlz05H4wMp0pFck8POMVIM9/CR3pT6qsr0rZhkV83d+lVOssu2B/KyetgG+kClF9j3dfNxFXQbAj+O9aJuYH7cNuTQVLwWBFhThTxYlqMxTHOwDPIKmHKGIjoYGZTbNNStAN0j4FahU37zdZ+S3pqQVyUIS4RVkJRFvClYVUiSRS5KsKgL0FtGzA1ALgFtl+HTTDtSSa/LHIVlGArOdFA0fqXjTAZtvJAiL4zapLKEBCuk7VybSXigC2jyEoVkEKxlmhIWK4OuSPWiqFBqz0vYpPMj2HwFtp0xTUF/sW6fsPYJ63+csCha2xjb+1FM+4F4TVj8G+l6pxl610nydVKVT6Wq11LNt0p1WLCfpdXkXqk/oFJ3M8G/pCTNv6EktVaSeVlJ57Q32atpr6Z/QE37VcyPKaKdTp472tD8V1OzrL4RAmYdAsVLq8jvHhyVU62Vqso8HRw93fyeoJtDhPH1a1Bd1gu8TiqaZad4f3CNMIfGH1z0dKexOUj16cCqdZDOxTJs2C9HVPAbpN33sDMbu8zTORXGwUpOO/Q/AQ==","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7Vhbb9s2FP4rgZ5Ng1dd/LRcuqFAlwRLsocUfTgkDxuhtmRQSrKiyH/foeQ6S+y0wTBvHWBDkCxS/D6ew+8cXr5kVx3G89iGeo7Z7Ev21mezrLLOmVxrZrkqmQafs1IazkShXS5BBAsmm2RH0Hw6dK69bXpq+jDJjiH6x4LsOCL06E/odtU7wuWcCzZcl5zPhmvKx991Ru1PYn2HsXtXO2y6oTup7Vk4qmN/8732k+zNH8s6fk5NXsH1N20+9D5i1432vllAPae2DuIS4qf2vsEof3LtYgnN5yk9qcE76PpfW1+HGhON5KJkgrolU7eUmIliyk2pqkIkEw7voId4ftP27UjxcxuxgQV2z2no44vbmKqoBrrV30n2O0bictDXbZO6mV1iXHRn4QLjHfl1ba8FL1E7yySKnOmicgyojJVWmEJXWAQoCe50JFiO3pr2CawN3Qpskr3tRsJkXB9vMXn2pm3w9HZhMT56F62xKDizXhKbBceq4JGVwug86FwVRm+yLVpLj2XCe0YVYN7h4wisWEqUXipBYxgCMu0BmC2rggWulPLOKLT5JgsOGNvxD+cD+jOnvt+1D3dlz05H4wMp0pFck8POMVIM9/CR3pT6qsr0rZhkV83d+lVOssu2B/KyetgG+kClF9j3dfNxFXQbAj+O9aJuYH7cNuTQVLwWBFhThTxYlqMxTHOwDPIKmHKGIjoYGZTbNNStAN0j4FahU37zdZ+S3pqQVyUIS4RVkJRFvClYVUiSRS5KsKgL0FtGzA1ALgFtl+HTTDtSSa/LHIVlGArOdFA0fqXjTAZtvJAiL4zapLKEBCuk7VybSXigC2jyEoVkEKxlmhIWK4OuSPWiqFBqz0vYpPMj2HwFtp0xTUF/sW6fsPYJ63+csCha2xjb+1FM+4F4TVj8G+l6pxl610nydVKVT6Wq11LNt0p1WLCfpdXkXqk/oFJ3M8G/pCTNv6EktVaSeVlJ57Q32atpr6Z/QE37VcyPKaKdTp472tD8V1OzrL4RAmYdAsVLq8jvHhyVU62Vqso8HRw93fyeoJtDhPH1a1Bd1gu8TiqaZad4f3CNMIfGH1z0dKexOUj16cCqdZDOxTJs2C9HVPAbpN33sDMbu8zTORXGwUpOO/Q/AQ==","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7Vhbb9s2FP4rgZ5Ng1dd/LRcuqFAlwRLsocUfTgkDxuhtmRQSrKiyH/foeQ6S+y0wTBvHWBDkCxS/D6ew+8cXr5kVx3G89iGeo7Z7Ev21mezrLLOmVxrZrkqmQafs1IazkShXS5BBAsmm2RH0Hw6dK69bXpq+jDJjiH6x4LsOCL06E/odtU7wuWcCzZcl5zPhmvKx991Ru1PYn2HsXtXO2y6oTup7Vk4qmN/8732k+zNH8s6fk5NXsH1N20+9D5i1432vllAPae2DuIS4qf2vsEof3LtYgnN5yk9qcE76PpfW1+HGhON5KJkgrolU7eUmIliyk2pqkIkEw7voId4ftP27UjxcxuxgQV2z2no44vbmKqoBrrV30n2O0bictDXbZO6mV1iXHRn4QLjHfl1ba8FL1E7yySKnOmicgyojJVWmEJXWAQoCe50JFiO3pr2CawN3Qpskr3tRsJkXB9vMXn2pm3w9HZhMT56F62xKDizXhKbBceq4JGVwug86FwVRm+yLVpLj2XCe0YVYN7h4wisWEqUXipBYxgCMu0BmC2rggWulPLOKLT5JgsOGNvxD+cD+jOnvt+1D3dlz05H4wMp0pFck8POMVIM9/CR3pT6qsr0rZhkV83d+lVOssu2B/KyetgG+kClF9j3dfNxFXQbAj+O9aJuYH7cNuTQVLwWBFhThTxYlqMxTHOwDPIKmHKGIjoYGZTbNNStAN0j4FahU37zdZ+S3pqQVyUIS4RVkJRFvClYVUiSRS5KsKgL0FtGzA1ALgFtl+HTTDtSSa/LHIVlGArOdFA0fqXjTAZtvJAiL4zapLKEBCuk7VybSXigC2jyEoVkEKxlmhIWK4OuSPWiqFBqz0vYpPMj2HwFtp0xTUF/sW6fsPYJ63+csCha2xjb+1FM+4F4TVj8G+l6pxl610nydVKVT6Wq11LNt0p1WLCfpdXkXqk/oFJ3M8G/pCTNv6EktVaSeVlJ57Q32atpr6Z/QE37VcyPKaKdTp472tD8V1OzrL4RAmYdAsVLq8jvHhyVU62Vqso8HRw93fyeoJtDhPH1a1Bd1gu8TiqaZad4f3CNMIfGH1z0dKexOUj16cCqdZDOxTJs2C9HVPAbpN33sDMbu8zTORXGwUpOO/Q/AQ==","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7Vhbb9s2FP4rgZ5Ng1dd/LRcuqFAlwRLsocUfTgkDxuhtmRQSrKiyH/foeQ6S+y0wTBvHWBDkCxS/D6ew+8cXr5kVx3G89iGeo7Z7Ev21mezrLLOmVxrZrkqmQafs1IazkShXS5BBAsmm2RH0Hw6dK69bXpq+jDJjiH6x4LsOCL06E/odtU7wuWcCzZcl5zPhmvKx991Ru1PYn2HsXtXO2y6oTup7Vk4qmN/8732k+zNH8s6fk5NXsH1N20+9D5i1432vllAPae2DuIS4qf2vsEof3LtYgnN5yk9qcE76PpfW1+HGhON5KJkgrolU7eUmIliyk2pqkIkEw7voId4ftP27UjxcxuxgQV2z2no44vbmKqoBrrV30n2O0bictDXbZO6mV1iXHRn4QLjHfl1ba8FL1E7yySKnOmicgyojJVWmEJXWAQoCe50JFiO3pr2CawN3Qpskr3tRsJkXB9vMXn2pm3w9HZhMT56F62xKDizXhKbBceq4JGVwug86FwVRm+yLVpLj2XCe0YVYN7h4wisWEqUXipBYxgCMu0BmC2rggWulPLOKLT5JgsOGNvxD+cD+jOnvt+1D3dlz05H4wMp0pFck8POMVIM9/CR3pT6qsr0rZhkV83d+lVOssu2B/KyetgG+kClF9j3dfNxFXQbAj+O9aJuYH7cNuTQVLwWBFhThTxYlqMxTHOwDPIKmHKGIjoYGZTbNNStAN0j4FahU37zdZ+S3pqQVyUIS4RVkJRFvClYVUiSRS5KsKgL0FtGzA1ALgFtl+HTTDtSSa/LHIVlGArOdFA0fqXjTAZtvJAiL4zapLKEBCuk7VybSXigC2jyEoVkEKxlmhIWK4OuSPWiqFBqz0vYpPMj2HwFtp0xTUF/sW6fsPYJ63+csCha2xjb+1FM+4F4TVj8G+l6pxl610nydVKVT6Wq11LNt0p1WLCfpdXkXqk/oFJ3M8G/pCTNv6EktVaSeVlJ57Q32atpr6Z/QE37VcyPKaKdTp472tD8V1OzrL4RAmYdAsVLq8jvHhyVU62Vqso8HRw93fyeoJtDhPH1a1Bd1gu8TiqaZad4f3CNMIfGH1z0dKexOUj16cCqdZDOxTJs2C9HVPAbpN33sDMbu8zTORXGwUpOO/Q/AQ==","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7Vhbb9s2FP4rgZ5Ng1dd/LRcuqFAlwRLsocUfTgkDxuhtmRQSrKiyH/foeQ6S+y0wTBvHWBDkCxS/D6ew+8cXr5kVx3G89iGeo7Z7Ev21mezrLLOmVxrZrkqmQafs1IazkShXS5BBAsmm2RH0Hw6dK69bXpq+jDJjiH6x4LsOCL06E/odtU7wuWcCzZcl5zPhmvKx991Ru1PYn2HsXtXO2y6oTup7Vk4qmN/8732k+zNH8s6fk5NXsH1N20+9D5i1432vllAPae2DuIS4qf2vsEof3LtYgnN5yk9qcE76PpfW1+HGhON5KJkgrolU7eUmIliyk2pqkIkEw7voId4ftP27UjxcxuxgQV2z2no44vbmKqoBrrV30n2O0bictDXbZO6mV1iXHRn4QLjHfl1ba8FL1E7yySKnOmicgyojJVWmEJXWAQoCe50JFiO3pr2CawN3Qpskr3tRsJkXB9vMXn2pm3w9HZhMT56F62xKDizXhKbBceq4JGVwug86FwVRm+yLVpLj2XCe0YVYN7h4wisWEqUXipBYxgCMu0BmC2rggWulPLOKLT5JgsOGNvxD+cD+jOnvt+1D3dlz05H4wMp0pFck8POMVIM9/CR3pT6qsr0rZhkV83d+lVOssu2B/KyetgG+kClF9j3dfNxFXQbAj+O9aJuYH7cNuTQVLwWBFhThTxYlqMxTHOwDPIKmHKGIjoYGZTbNNStAN0j4FahU37zdZ+S3pqQVyUIS4RVkJRFvClYVUiSRS5KsKgL0FtGzA1ALgFtl+HTTDtSSa/LHIVlGArOdFA0fqXjTAZtvJAiL4zapLKEBCuk7VybSXigC2jyEoVkEKxlmhIWK4OuSPWiqFBqz0vYpPMj2HwFtp0xTUF/sW6fsPYJ63+csCha2xjb+1FM+4F4TVj8G+l6pxl610nydVKVT6Wq11LNt0p1WLCfpdXkXqk/oFJ3M8G/pCTNv6EktVaSeVlJ57Q32atpr6Z/QE37VcyPKaKdTp472tD8V1OzrL4RAmYdAsVLq8jvHhyVU62Vqso8HRw93fyeoJtDhPH1a1Bd1gu8TiqaZad4f3CNMIfGH1z0dKexOUj16cCqdZDOxTJs2C9HVPAbpN33sDMbu8zTORXGwUpOO/Q/AQ==","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7Vhbb9s2FP4rgZ5Ng1dd/LRcuqFAlwRLsocUfTgkDxuhtmRQSrKiyH/foeQ6S+y0wTBvHWBDkCxS/D6ew+8cXr5kVx3G89iGeo7Z7Ev21mezrLLOmVxrZrkqmQafs1IazkShXS5BBAsmm2RH0Hw6dK69bXpq+jDJjiH6x4LsOCL06E/odtU7wuWcCzZcl5zPhmvKx991Ru1PYn2HsXtXO2y6oTup7Vk4qmN/8732k+zNH8s6fk5NXsH1N20+9D5i1432vllAPae2DuIS4qf2vsEof3LtYgnN5yk9qcE76PpfW1+HGhON5KJkgrolU7eUmIliyk2pqkIkEw7voId4ftP27UjxcxuxgQV2z2no44vbmKqoBrrV30n2O0bictDXbZO6mV1iXHRn4QLjHfl1ba8FL1E7yySKnOmicgyojJVWmEJXWAQoCe50JFiO3pr2CawN3Qpskr3tRsJkXB9vMXn2pm3w9HZhMT56F62xKDizXhKbBceq4JGVwug86FwVRm+yLVpLj2XCe0YVYN7h4wisWEqUXipBYxgCMu0BmC2rggWulPLOKLT5JgsOGNvxD+cD+jOnvt+1D3dlz05H4wMp0pFck8POMVIM9/CR3pT6qsr0rZhkV83d+lVOssu2B/KyetgG+kClF9j3dfNxFXQbAj+O9aJuYH7cNuTQVLwWBFhThTxYlqMxTHOwDPIKmHKGIjoYGZTbNNStAN0j4FahU37zdZ+S3pqQVyUIS4RVkJRFvClYVUiSRS5KsKgL0FtGzA1ALgFtl+HTTDtSSa/LHIVlGArOdFA0fqXjTAZtvJAiL4zapLKEBCuk7VybSXigC2jyEoVkEKxlmhIWK4OuSPWiqFBqz0vYpPMj2HwFtp0xTUF/sW6fsPYJ63+csCha2xjb+1FM+4F4TVj8G+l6pxl610nydVKVT6Wq11LNt0p1WLCfpdXkXqk/oFJ3M8G/pCTNv6EktVaSeVlJ57Q32atpr6Z/QE37VcyPKaKdTp472tD8V1OzrL4RAmYdAsVLq8jvHhyVU62Vqso8HRw93fyeoJtDhPH1a1Bd1gu8TiqaZad4f3CNMIfGH1z0dKexOUj16cCqdZDOxTJs2C9HVPAbpN33sDMbu8zTORXGwUpOO/Q/AQ==","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7Vhbb9s2FP4rgZ5Ng1dd/LRcuqFAlwRLsocUfTgkDxuhtmRQSrKiyH/foeQ6S+y0wTBvHWBDkCxS/D6ew+8cXr5kVx3G89iGeo7Z7Ev21mezrLLOmVxrZrkqmQafs1IazkShXS5BBAsmm2RH0Hw6dK69bXpq+jDJjiH6x4LsOCL06E/odtU7wuWcCzZcl5zPhmvKx991Ru1PYn2HsXtXO2y6oTup7Vk4qmN/8732k+zNH8s6fk5NXsH1N20+9D5i1432vllAPae2DuIS4qf2vsEof3LtYgnN5yk9qcE76PpfW1+HGhON5KJkgrolU7eUmIliyk2pqkIkEw7voId4ftP27UjxcxuxgQV2z2no44vbmKqoBrrV30n2O0bictDXbZO6mV1iXHRn4QLjHfl1ba8FL1E7yySKnOmicgyojJVWmEJXWAQoCe50JFiO3pr2CawN3Qpskr3tRsJkXB9vMXn2pm3w9HZhMT56F62xKDizXhKbBceq4JGVwug86FwVRm+yLVpLj2XCe0YVYN7h4wisWEqUXipBYxgCMu0BmC2rggWulPLOKLT5JgsOGNvxD+cD+jOnvt+1D3dlz05H4wMp0pFck8POMVIM9/CR3pT6qsr0rZhkV83d+lVOssu2B/KyetgG+kClF9j3dfNxFXQbAj+O9aJuYH7cNuTQVLwWBFhThTxYlqMxTHOwDPIKmHKGIjoYGZTbNNStAN0j4FahU37zdZ+S3pqQVyUIS4RVkJRFvClYVUiSRS5KsKgL0FtGzA1ALgFtl+HTTDtSSa/LHIVlGArOdFA0fqXjTAZtvJAiL4zapLKEBCuk7VybSXigC2jyEoVkEKxlmhIWK4OuSPWiqFBqz0vYpPMj2HwFtp0xTUF/sW6fsPYJ63+csCha2xjb+1FM+4F4TVj8G+l6pxl610nydVKVT6Wq11LNt0p1WLCfpdXkXqk/oFJ3M8G/pCTNv6EktVaSeVlJ57Q32atpr6Z/QE37VcyPKaKdTp472tD8V1OzrL4RAmYdAsVLq8jvHhyVU62Vqso8HRw93fyeoJtDhPH1a1Bd1gu8TiqaZad4f3CNMIfGH1z0dKexOUj16cCqdZDOxTJs2C9HVPAbpN33sDMbu8zTORXGwUpOO/Q/AQ==","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7Vhbb9s2FP4rgZ5Ng1dd/LRcuqFAlwRLsocUfTgkDxuhtmRQSrKiyH/foeQ6S+y0wTBvHWBDkCxS/D6ew+8cXr5kVx3G89iGeo7Z7Ev21mezrLLOmVxrZrkqmQafs1IazkShXS5BBAsmm2RH0Hw6dK69bXpq+jDJjiH6x4LsOCL06E/odtU7wuWcCzZcl5zPhmvKx991Ru1PYn2HsXtXO2y6oTup7Vk4qmN/8732k+zNH8s6fk5NXsH1N20+9D5i1432vllAPae2DuIS4qf2vsEof3LtYgnN5yk9qcE76PpfW1+HGhON5KJkgrolU7eUmIliyk2pqkIkEw7voId4ftP27UjxcxuxgQV2z2no44vbmKqoBrrV30n2O0bictDXbZO6mV1iXHRn4QLjHfl1ba8FL1E7yySKnOmicgyojJVWmEJXWAQoCe50JFiO3pr2CawN3Qpskr3tRsJkXB9vMXn2pm3w9HZhMT56F62xKDizXhKbBceq4JGVwug86FwVRm+yLVpLj2XCe0YVYN7h4wisWEqUXipBYxgCMu0BmC2rggWulPLOKLT5JgsOGNvxD+cD+jOnvt+1D3dlz05H4wMp0pFck8POMVIM9/CR3pT6qsr0rZhkV83d+lVOssu2B/KyetgG+kClF9j3dfNxFXQbAj+O9aJuYH7cNuTQVLwWBFhThTxYlqMxTHOwDPIKmHKGIjoYGZTbNNStAN0j4FahU37zdZ+S3pqQVyUIS4RVkJRFvClYVUiSRS5KsKgL0FtGzA1ALgFtl+HTTDtSSa/LHIVlGArOdFA0fqXjTAZtvJAiL4zapLKEBCuk7VybSXigC2jyEoVkEKxlmhIWK4OuSPWiqFBqz0vYpPMj2HwFtp0xTUF/sW6fsPYJ63+csCha2xjb+1FM+4F4TVj8G+l6pxl610nydVKVT6Wq11LNt0p1WLCfpdXkXqk/oFJ3M8G/pCTNv6EktVaSeVlJ57Q32atpr6Z/QE37VcyPKaKdTp472tD8V1OzrL4RAmYdAsVLq8jvHhyVU62Vqso8HRw93fyeoJtDhPH1a1Bd1gu8TiqaZad4f3CNMIfGH1z0dKexOUj16cCqdZDOxTJs2C9HVPAbpN33sDMbu8zTORXGwUpOO/Q/AQ==","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7Vhbb9s2FP4rgZ5Ng1dd/LRcuqFAlwRLsocUfTgkDxuhtmRQSrKiyH/foeQ6S+y0wTBvHWBDkCxS/D6ew+8cXr5kVx3G89iGeo7Z7Ev21mezrLLOmVxrZrkqmQafs1IazkShXS5BBAsmm2RH0Hw6dK69bXpq+jDJjiH6x4LsOCL06E/odtU7wuWcCzZcl5zPhmvKx991Ru1PYn2HsXtXO2y6oTup7Vk4qmN/8732k+zNH8s6fk5NXsH1N20+9D5i1432vllAPae2DuIS4qf2vsEof3LtYgnN5yk9qcE76PpfW1+HGhON5KJkgrolU7eUmIliyk2pqkIkEw7voId4ftP27UjxcxuxgQV2z2no44vbmKqoBrrV30n2O0bictDXbZO6mV1iXHRn4QLjHfl1ba8FL1E7yySKnOmicgyojJVWmEJXWAQoCe50JFiO3pr2CawN3Qpskr3tRsJkXB9vMXn2pm3w9HZhMT56F62xKDizXhKbBceq4JGVwug86FwVRm+yLVpLj2XCe0YVYN7h4wisWEqUXipBYxgCMu0BmC2rggWulPLOKLT5JgsOGNvxD+cD+jOnvt+1D3dlz05H4wMp0pFck8POMVIM9/CR3pT6qsr0rZhkV83d+lVOssu2B/KyetgG+kClF9j3dfNxFXQbAj+O9aJuYH7cNuTQVLwWBFhThTxYlqMxTHOwDPIKmHKGIjoYGZTbNNStAN0j4FahU37zdZ+S3pqQVyUIS4RVkJRFvClYVUiSRS5KsKgL0FtGzA1ALgFtl+HTTDtSSa/LHIVlGArOdFA0fqXjTAZtvJAiL4zapLKEBCuk7VybSXigC2jyEoVkEKxlmhIWK4OuSPWiqFBqz0vYpPMj2HwFtp0xTUF/sW6fsPYJ63+csCha2xjb+1FM+4F4TVj8G+l6pxl610nydVKVT6Wq11LNt0p1WLCfpdXkXqk/oFJ3M8G/pCTNv6EktVaSeVlJ57Q32atpr6Z/QE37VcyPKaKdTp472tD8V1OzrL4RAmYdAsVLq8jvHhyVU62Vqso8HRw93fyeoJtDhPH1a1Bd1gu8TiqaZad4f3CNMIfGH1z0dKexOUj16cCqdZDOxTJs2C9HVPAbpN33sDMbu8zTORXGwUpOO/Q/AQ==","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7Vhbb9s2FP4rgZ5Ng1dd/LRcuqFAlwRLsocUfTgkDxuhtmRQSrKiyH/foeQ6S+y0wTBvHWBDkCxS/D6ew+8cXr5kVx3G89iGeo7Z7Ev21mezrLLOmVxrZrkqmQafs1IazkShXS5BBAsmm2RH0Hw6dK69bXpq+jDJjiH6x4LsOCL06E/odtU7wuWcCzZcl5zPhmvKx991Ru1PYn2HsXtXO2y6oTup7Vk4qmN/8732k+zNH8s6fk5NXsH1N20+9D5i1432vllAPae2DuIS4qf2vsEof3LtYgnN5yk9qcE76PpfW1+HGhON5KJkgrolU7eUmIliyk2pqkIkEw7voId4ftP27UjxcxuxgQV2z2no44vbmKqoBrrV30n2O0bictDXbZO6mV1iXHRn4QLjHfl1ba8FL1E7yySKnOmicgyojJVWmEJXWAQoCe50JFiO3pr2CawN3Qpskr3tRsJkXB9vMXn2pm3w9HZhMT56F62xKDizXhKbBceq4JGVwug86FwVRm+yLVpLj2XCe0YVYN7h4wisWEqUXipBYxgCMu0BmC2rggWulPLOKLT5JgsOGNvxD+cD+jOnvt+1D3dlz05H4wMp0pFck8POMVIM9/CR3pT6qsr0rZhkV83d+lVOssu2B/KyetgG+kClF9j3dfNxFXQbAj+O9aJuYH7cNuTQVLwWBFhThTxYlqMxTHOwDPIKmHKGIjoYGZTbNNStAN0j4FahU37zdZ+S3pqQVyUIS4RVkJRFvClYVUiSRS5KsKgL0FtGzA1ALgFtl+HTTDtSSa/LHIVlGArOdFA0fqXjTAZtvJAiL4zapLKEBCuk7VybSXigC2jyEoVkEKxlmhIWK4OuSPWiqFBqz0vYpPMj2HwFtp0xTUF/sW6fsPYJ63+csCha2xjb+1FM+4F4TVj8G+l6pxl610nydVKVT6Wq11LNt0p1WLCfpdXkXqk/oFJ3M8G/pCTNv6EktVaSeVlJ57Q32atpr6Z/QE37VcyPKaKdTp472tD8V1OzrL4RAmYdAsVLq8jvHhyVU62Vqso8HRw93fyeoJtDhPH1a1Bd1gu8TiqaZad4f3CNMIfGH1z0dKexOUj16cCqdZDOxTJs2C9HVPAbpN33sDMbu8zTORXGwUpOO/Q/AQ==","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}}]

But in the code, I get a collection of response DTO’s but my ResponseDto has null values in it.
It is defined as:

    public class GetUserProfileResponse
    {
        public ServiceStack.ResponseStatus ResponseStatus { get; set; }

        public UserProfile UserProfile { get; set; }
    }

whereas before using batching, the UserProfile property of the GetUserProfileResponse above would be populated with real data, it is now null for every response the batch. I still get 9 responses, just full of nulls.

am I missing something else to make this work?
Clearly I presume the JsonSeviceClient will take care of the compressed results properly?

What’s the UserProfile DTO look like and does your impl return a GetUserProfileResponse DTO? As it looks like it’s returning a serialized HttpResult instead of a naked DTO.

It also says you’re using a fairly old version of SS, It’s likely later versions is able to extract the Response DTO from the HttpResult as I don’t recall this issue being reported in recent memory.

OK, as you suggested. Its taken me this long to migrate to latest version.
So now our code is running v5.4.0.
I am still getting the same kind of response back from my Service as you see here:

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Vary: Accept
Server: Microsoft-IIS/10.0
X-AutoBatch-Completed: 9
X-Powered-By: ServiceStack/5.40 Net45/Windows
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, PATCH, OPTIONS
Access-Control-Allow-Headers: Content-Type
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Tue, 06 Nov 2018 01:53:23 GMT
Content-Length: 25624

[{"Contents":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}},{"Contents":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","ContentType":"application/json","Headers":{"Content-Encoding":"deflate"},"Cookies":[],"Status":200,"StatusCode":"OK","Response":"7VnbbttGEP0Vg89aYa+86Km+pEUA1zZquQ8u+jBc7sZEJNJYUnaDQP/eWVGWmkiTBEZVuIAEQRJ3uHP2nJ3hDKnPyV3nwk1ofT1zyeRz8r5KJonO8zSTDlhuy4zpXGestNowLozOFefSOEhGyRk0H0+tbRdNj1OXo+QcQrUdSM6Dg95VF/hx11v0yzkXbPWecj5Zvcd8eN0nOP8i1E8udJe1dU23Wk6ce+3P6tA/fG/+KHn312MdPsUpP4D1Ss6nVRVc1w18382hnuHcuukWwYWfbDt/hObTGL/x1Evo+l/bqva1iwCSi5wJXFA65WKi1UTrcZ6lQmcmLv70CXoINw9t3w7Of26Da2Duui0Anna7CHEQx6Bb/xwlv7uAKBb6um3i0pKpC/Pu2t+68IRabjiKokpzX0gG3Bqms0ywArxlwiubgra5Kyy6uxoAHgeFxn101vpu7WyUvO8GwEjLw6xzUc6HtnFXi3mJq3yBy7msSuM8U1ZwpgtAuLJyjGcor1Decil24eZtiV+P0R+BtZZ9jVJJUfmqKpjVBW4ceI1bqIHJApwpVJmLNNtFcSsf+/2fzlbev1L1j4OLeChCB92OPzEmLYZqVOzGBczcHj7gEX8Jy3gqHtw1T5tDNUqmbQ+oslru87nE0VvX93XzYRXOV22/3Ymx4ALXNw2LuKCvTZI2KdqkaZOhTSltymhTTpsKyiRpypKmLGnKkqYsacqSpixpypKmLL9BWXDaRKshaDUErYag1RC0GoJWQ9BqCFoNSfOSNC9J85I0L0nzkjQvSfOS3+BF77Kid1nRaihaDUWroUg1FJ0pik4HRaeeovNL0Umktkm03FPVz0M9rxuYnbcNFpE4vC21invhhGN5mXumhUlZifWCZUbzvKwyr43avbbbtUO7dbi/ImInV9V9bO82iKmxovReMGmzAquJcgw8djhKCw1Wp0aqPVXKrhzZ6Gg/0pc95bo1AyPSCmtWaiUWRK49gzRPmTSeZ1iKsXjxXagSPcHa036s3XZzgHOF595YVniIWkos9SAkK402FRS68kbuwlWDs9na2X7E2Gz/g92xTTu2af/nNg3TtQ2hfR6C6bgRP5QX/8kV+6AX6UNfJ18Tq+kmVtO9sbp6OHH93BxD9Y2G6mGK/GtCyWxCydChdAPh4zGcjuH0b4TTsZF5q1F02Pp5mNuat1ids00OZFQn+d2n5elYSS2zTMen5V/eAl84O4MAw+FLVk3rubuPUTRJrtzzyb2DGTTVyW2Pn7g1J9GOni5bC/FvgMQ17JczHPgN4nPH1e3ZsGQeH867MJBcLpd/Aw==","PaddingLength":0,"Options":{"Content-Encoding":"deflate"}}]

I see on the wire that each of the results has a Contents value which looks to be compressed data.

If I deflate any of the values for Contents, I get JSON that follows this form:

{"UserProfile":{"Id":"488672ea-8cb7-4847-bc45-0154830025ea"}}

So, its only compressed JSON.

However, my JsonServiceClient is still not correctly deserilizing it back into the array of response Dtos, and I get null for each of the UserProfile properties.

Is there something I need to do to my instance of JsonServiceClient to support the correct deserilization of these kinds of responses? I am not seeing much code in ServiceClientBase for handling this kind of response, is this kind of response not automatically handled by the ServiceStack clients?

Re-reading your question carefully again:

Perhaps there is something in how my service operation is declared?

Since we are caching responses using ToOptimizedResultUsingCache under the covers, we are declaring our service operations in this pattern:

        public object Any(GetUserProfile body)
        {
            ..call  ToOptimizedResultUsingCache() and return the raw response from cache
        }

Notice how the return type is object not GetUserProfileResponse.

Is that why we are getting the compressed response format we see? Is that what a HttpResult looks like?

I just ran a test and changed the return type from object to GetUserProfileResponse and the response the wire now looks good, and is correctly deserialized by service client!

OK, so I have a problem with the way my operations are declared, that does not work for batched requests.
I presume then that JsonServiceClient does not yet support batched HttpResult responses, which is what I have now discovered.

I either have to somehow convert what comes back from ToOptimizedResultUsingCache() to my response DTO, so that I can change my operation declarations OR, we have to update ServiceClientBase to handle batched HttpResult responses?

Can you help me with the former?

You can’t use ToOptimizedResultUsingCache() in batched Services, cached results returns raw byte[] responses which can’t be stitched together. Consider using the CacheResponse attribute instead.

Our infrastructure that uses ToOptimizedResultUsingCache() was designed long before ServiceStack implemented response caching. So, that’s a big change right now for me to migrate over to.

Is there any hope to convert what comes back from ToOptimizedResultUsingCache() to my ResponseDTO at this time?

OR perhaps support deserializing an array of HttpResult[] in our service clients?

No it’s impossible, it returns raw compressed byte[] which is impossible to stitch together in a raw response.

HttpResult is a server side concept it should never be serialized, it contains instructions for how the server should serialize the response, e.g. return this payload with these custom headers.

You can’t batch ToOptimizedResultUsingCache so your option is to maintain uncompressed services separate from compressed ones, which is fairly painless to do as seen in http://northwind.netcore.io/ which lets you create cached Service versions of existing services using the Service Gateway to reuse the existing Service:

https://github.com/NetCoreApps/Northwind/blob/master/src/Northwind.ServiceInterface/CachedServices.cs

Note you can use Auto Mapping Utils to make this even easier for more complex DTOs, e.g:

public object Get(CachedCustomerDetails request) => 
        Gateway.Send(request.ConverTo<CustomerDetails>());

OK, thanks.

and what if I wanted to extend our own JsonServiceClient and have it convert a batched response ResponseDTO, any helpers there? (I would override ServiceClientBase.HandleResponse()) and uncompress the array of results in there?

I don’t understand how you’re intending to return an array composed of individually compressed items, the above wire format is invalid as it’s trying to serilalize HttpResult which should not be serialized (and wont work if it contains non serializable/cyclical ref items), it’s also inefficient as the compressed bytes as serialized as JSON where it’s encoded in Base 64.

I don’t see another suitable option except factoring it out so the compressed services are separated from the uncompressed ones, or just implement your own “batch” service which takes takes a collection of Ids that return a collection of DTOs.

OK, cool. Thanks for qualifying that.

Ill look at other options like our own batching API then, cheers

On reflection, is it a fair request to ask that ServiceStack supports batching compressed responses?

I mean, the challenge here is that: I’ve decided to support clients that wish to receive uncompressed/compressed results by using ToOptimizedResultUsingCache(), but batching does not yet work with that mechanism.

Assuming ServiceStack is still supporting ToOptimizedResultUsingCache() as a bonefide approach still, then shouldn’t it also support batching automatically? So that batching just works for clients who want compressed results too?

Cant the ToOptimizedResultUsingCache() mechanism + batching mechansim collaborate to support this scenario?

Like I’ve already mentioned in this thread, use the Cached Response Attribute compression if you want to re-use them in Auto batching, it is impossible to stitch together ToOptimizedResultUsingCache() responses, requesting this multiple times is not going to change anything.

Auto batch will never support ToOptimizedResultUsingCache() responses as they physically returns compressed byte[] of individual Response DTOs where as all Response DTOs need to be combined and compressed as a single Response Stream. I’m at a loss for how to make this clearer.

The only way to support it would be to read all N+1 ToOptimizedResultUsingCache() results individually from the cache and decompress every Response DTO individually, combine them and compress them again, a process so inefficient and contra to the goals of compression in the first place that it’s never going to be considered.

Sorry, I didn’t intend to piss you off. I thought my request is pretty legit from a service clients perspective. Im at your mercy of course.

I dont know all the ins and outs of the framework like you do of course, but I could make a suggestion on roughly how to approach it?
What about, if the batching mechanism, signaled that a batched request is being requested (perhaps with a Request.Item or some such signal), then ‘ToOptimizedResultsUsingCache’ read that signal, and only returned the uncompressed result (regardless of what compression was defined in request). Then the batch mechanism combined the uncompressed results into an array, and compressed it based on the requested compression that was in the request? Would that kind of thing work?

The feature is incompatible with the ToOptimizedResultsUsingCache() API which returns the most optimal result from the Cache.

IMO whatever behavior you come up with is going to be uglier and more complicated than refactoring your Services to use the Cache Response Attribute which lets you return a clean Response DTO.

But if you want, you can call your own extension method that uses IRequest.IsMultiRequest() API to check if it’s an AutoBatched request and to return the Response DTO instead of ToOptimizedResultUsingCache().

Thanks for your patience.
Does using CacheResponseAttribute with HttpCacheFeature return compressed responses if service client asks for them?

If so does this move effectively make using ToOptimizedResultUsingCache() obsolete as a feature?

Yes.

It should be preferred since it lets you write cleaner and more reusable services, but doesn’t have the flexibility and fine-grained of ToOptimizedResult* APIs which can be returned at any point in a Service.