github_api 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/README.md +2 -2
  2. data/features/authentication.feature +8 -0
  3. data/features/cassettes/errors/repos/create.yml +36 -0
  4. data/features/cassettes/gists/gist.yml +64 -0
  5. data/features/cassettes/gists/gist/first.yml +65 -0
  6. data/features/cassettes/gists/gists/public_all.yml +71 -0
  7. data/features/cassettes/gists/gists/user_all.yml +48 -0
  8. data/features/cassettes/gists/star.yml +34 -0
  9. data/features/cassettes/pagination/repos/per_page/1.yml +134 -0
  10. data/features/cassettes/pagination/repos/per_page/each_page.yml +395 -0
  11. data/features/cassettes/pagination/repos/per_page/first.yml +135 -0
  12. data/features/error_codes.feature +13 -0
  13. data/features/gists.feature +31 -0
  14. data/features/pagination.feature +10 -0
  15. data/features/repos.feature +12 -10
  16. data/features/step_definitions/github_api_steps.rb +20 -5
  17. data/features/support/env.rb +8 -0
  18. data/features/support/helpers.rb +7 -0
  19. data/lib/github_api.rb +6 -6
  20. data/lib/github_api/api.rb +19 -11
  21. data/lib/github_api/authorization.rb +3 -3
  22. data/lib/github_api/connection.rb +1 -1
  23. data/lib/github_api/core_ext/array.rb +1 -2
  24. data/lib/github_api/core_ext/hash.rb +16 -2
  25. data/lib/github_api/deprecation.rb +39 -0
  26. data/lib/github_api/gists.rb +27 -10
  27. data/lib/github_api/page_uri_processor.rb +6 -2
  28. data/lib/github_api/response/raise_error.rb +1 -1
  29. data/lib/github_api/result.rb +2 -1
  30. data/lib/github_api/version.rb +1 -1
  31. data/spec/fixtures/gists/gist.json +58 -0
  32. data/spec/fixtures/gists/gists.json +28 -0
  33. data/spec/github/api_spec.rb +15 -0
  34. data/spec/github/authorization_spec.rb +5 -0
  35. data/spec/github/client_spec.rb +4 -0
  36. data/spec/github/core_ext/hash_spec.rb +45 -18
  37. data/spec/github/deprecation_spec.rb +31 -0
  38. data/spec/github/gists_spec.rb +461 -3
  39. data/spec/github/repos/watching_spec.rb +12 -4
  40. data/spec/github/request_spec.rb +3 -0
  41. data/spec/github_spec.rb +34 -29
  42. data/spec/spec_helper.rb +1 -0
  43. metadata +22 -4
data/README.md CHANGED
@@ -241,8 +241,8 @@ res.links.last # Shows the URL of the last page of results.
241
241
  In order to iterate through the entire result set page by page, you can use convenience methods:
242
242
 
243
243
  ```ruby
244
- res.each_page do |page_set|
245
- page_set.each do |repo|
244
+ res.each_page do |page|
245
+ page.each do |repo|
246
246
  puts repo.name
247
247
  end
248
248
  end
@@ -0,0 +1,8 @@
1
+ Feature: Authentication
2
+ In order to perform destructive actions with GitHub service
3
+ As a deveoper
4
+ I want to be able to authenticate
5
+
6
+ Scenario: Basic Authentication
7
+
8
+ Scenario: OAuth
@@ -0,0 +1,36 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :post
5
+ uri: https://api.github.com:443/user/repos
6
+ body: "{\"homepage\":\"https://github.com\",\"public\":true,\"has_issues\":true,\"has_wiki\":true,\"has_downloads\":true,\"name\":\"basic_auth\"}"
7
+ headers:
8
+ content-type:
9
+ - application/json
10
+ response: !ruby/struct:VCR::Response
11
+ status: !ruby/struct:VCR::ResponseStatus
12
+ code: 401
13
+ message: Unauthorized
14
+ headers:
15
+ server:
16
+ - nginx/1.0.4
17
+ date:
18
+ - Sat, 04 Feb 2012 13:32:31 GMT
19
+ content-type:
20
+ - application/json; charset=utf-8
21
+ connection:
22
+ - keep-alive
23
+ status:
24
+ - 401 Unauthorized
25
+ www-authenticate:
26
+ - Basic realm="GitHub"
27
+ x-ratelimit-limit:
28
+ - "5000"
29
+ etag:
30
+ - "\"99852aefab6a0988db8f62bf2fb96f49\""
31
+ x-ratelimit-remaining:
32
+ - "4997"
33
+ content-length:
34
+ - "37"
35
+ body: "{\"message\":\"Requires authentication\"}"
36
+ http_version: "1.1"
@@ -0,0 +1,64 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: https://api.github.com:443/gists/1738161
6
+ body:
7
+ headers:
8
+ accept-encoding:
9
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
10
+ response: !ruby/struct:VCR::Response
11
+ status: !ruby/struct:VCR::ResponseStatus
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ server:
16
+ - nginx/1.0.4
17
+ date:
18
+ - Sat, 04 Feb 2012 14:31:54 GMT
19
+ content-type:
20
+ - application/json; charset=utf-8
21
+ transfer-encoding:
22
+ - chunked
23
+ connection:
24
+ - keep-alive
25
+ status:
26
+ - 200 OK
27
+ x-ratelimit-limit:
28
+ - "5000"
29
+ etag:
30
+ - "\"4d37bc0e6942fa961150e4b60cf0f653\""
31
+ x-ratelimit-remaining:
32
+ - "4994"
33
+ content-encoding:
34
+ - gzip
35
+ body: !binary |
36
+ H4sIAAAAAAAAA+1W7WvkRBj/V4YcQivbbJJNdrMrh3d6V1+QE7Qq6EqZJLPJ
37
+ 3GVn4mTSF8vCdQtaOT+IcHcIflEOBEUUP+kH/5rYgv+Fz2Sy3XTb7m3vs6GU
38
+ ZPb5zfN73p8DI6ZyOyvSdLsQqTFQn4N2O6a5NOE1KQIz5OO23ev4dtdWR0bL
39
+ 0JKJlFkOsjijTVEFzWcAEB5x8SA3Bp982jIikoeCZpJyBprK6Y/l0S/l0eNy
40
+ +sPJw2fl9NvTrw/Lw2d299+Hf5w+/v30yZcnvz49OX5aHj4qp1+9zlMuyunP
41
+ 5dGTcvpnOf2pnP5WHh0D7J+/vz89/qY8/K6cPiqPviinf8E5aNaW5cncslsL
42
+ dg3O25UVQUpDYyBFQYA4TQkQPzBup1mC71C4Ln+T7N0rxgERFZs7JOQRZfEW
43
+ AW/dxztYScv9jIB1kuzJdpZiyoBJyJkkTMIxHWdcSJRLLGmIuIjN+wWj0ryd
44
+ 50RI8+VXhmzIaiF1o4l3pVkpa/4yxynV1S+aOwpTnOdoJcboYMgQPLfUHfq1
45
+ vmSH0whFyjgCBr8vhbKRVyzW1mcwBa2OUFj9v6m/TI1bGxo3rOoZGutAUEmr
46
+ B9iBnXc/K3CagwzjG1h5d2i0kON5LX2XGRNZmbC2vgQrSKRgVgP0HomWQoK0
47
+ IIuY1+BsKSgWhLBF1BvqcA6baAtfwKEfQZHVtjY9u+An7VQ0JjLhEaIx44Lk
48
+ qHIdiqrMBIJzL8+8Xbm0CtKFsFSBWc3ROr6QwzkURqiqF+0Ca63+Ur0QE0Z2
49
+ tea1tyD3Y3IVA8rkh7gKQQupuruM0yre5TtEjFK+u8Wrqpwn7vmMXfDrGO+h
50
+ HaUe8RECKoropRbZTm+5Tb1N/SivrmKTCtE8YLWPEES1SCXUEoOO3CgbKfab
51
+ 2aHAZ6IX/evrylsovdqLChtiGSZoTbeyTS7GWN7dC0nVmRHZy0goSXSu0hVK
52
+ ++4eMIPKDTFjXCLo7gBGN+YqWzWzZuVqvrIQrGFTg88IU3VnwQTBYYKDFKp0
53
+ hl8l+Au96oMcGpZOg3dH73AWX9a16pICV59lqhJtFEod0c1LQ3p1Tzvf0LSa
54
+ 1Qqt7mhV1c5xqza1BdjqfW0BeLG1TWCE5fRzGGt2t+O0DIF365k62wEW9wWQ
55
+ mK0A7X7QjYjdjYKo73uh5RLi9wLfH3mh3e0TLyIdYtn9oNNeaWrpOaunM8Nj
56
+ NWqvhUsxiwscK9zbamJPJi0jgZWFi31YUg6usdu0idshfkBGvh1Zru26/VHk
57
+ +JYT4o7tdZR9Pc/GvhepBSABtWRbjf2i2ikikhJVbfBhtQzJJYbly+23DBxF
58
+ tP7B7QO3AualAizduZRQ3hYJjYswoWr1EWCbxGKbRmCo5VkdMhoR14lGXdv1
59
+ 3b4TYGz7/TDoWF0vAEDKY9hUBkbjjvqG84pzEhaCmLP7q+VQC7afp+XV6ObZ
60
+ yui4vklM/ACPMTUZkW3VW2Te2CNfcjbpGOKUw8tMW/N9w3YtM2MxcFc2el63
61
+ 17XBX0BoTCW0r22s9i3Hsp0NC/7cLdsdOJ2B1/kYIDAscr2FrhzECSywiRzP
62
+ 9uSrMr/eKFXMgQksfTrCRRbh55H6P9TXC3WV2w1/w/BY7uLJf1vSHjDuDAAA
63
+
64
+ http_version: "1.1"
@@ -0,0 +1,65 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: https://api.github.com:443/gists/1738161
6
+ body:
7
+ headers:
8
+ accept-encoding:
9
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
10
+ response: !ruby/struct:VCR::Response
11
+ status: !ruby/struct:VCR::ResponseStatus
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ server:
16
+ - nginx/1.0.4
17
+ date:
18
+ - Sat, 04 Feb 2012 14:30:26 GMT
19
+ content-type:
20
+ - application/json; charset=utf-8
21
+ transfer-encoding:
22
+ - chunked
23
+ connection:
24
+ - keep-alive
25
+ status:
26
+ - 200 OK
27
+ x-ratelimit-limit:
28
+ - "5000"
29
+ etag:
30
+ - "\"9c9e3d5d788ed1511aed3c766cbbb85b\""
31
+ x-ratelimit-remaining:
32
+ - "4995"
33
+ content-encoding:
34
+ - gzip
35
+ body: !binary |
36
+ H4sIAAAAAAAAA+1W7YvjRBj/V4Ycwq500yRN2rRyeKd36wtygq4KXmWZZCbp
37
+ 3KUzMZnsi0vhtgu6cn4Q4e4Q/KIcCIooftIP/jVxF/wvfCaTbtPeXrfnZ0Mp
38
+ ycz85nme3/N6ZBRZYgyMkZRpPmi3ccrMmMlREZihGLdjlsu8bfc6vt21jZZB
39
+ aB5mLJVMcACV0x/Kk5/Lk0fl9PuzB0/L6TfnXx2Xx0/t7j8Pfj9/9Nv54y/O
40
+ fnlydvqkPH5YTr98XSQiK6c/lSePy+kf5fTHcvpreXIKsL//+u789Ovy+Nty
41
+ +rA8+byc/gnrIC4tgoSFxkBmBW0ZEUtobgyOjJtJOsK3GOiZv0kP7hTjgGbV
42
+ 5bdoKAjj8Q7NpXkP72F1Wh6mFJSV9EC20wQzDheHgkvKJSyzcSoyiXKJJQuR
43
+ yGLzXsGZNG/mOc2k+fIrQz7k9SF1o4n3pVkJa+7McUp0taN1R2GC8xytpTE6
44
+ GnIEzw11h36tL9kTjCCijKNg8PsyUzaKSouNzRlMQaslFFb/1/WXqXEbQ+Oa
45
+ VT1DYxMUVKfVA9qBnbc/LXCSwxkutrBid2i0kON5LX2XGVNZmbCxuQKbUaJg
46
+ VgP0HiUrIUFS0GXMa7C2EhRnlPJl1BtqcQ6baAv/A6EfQfTXtjaZXeJJk4rG
47
+ VI4EQSzmIqM5qqhDpIpMUHDO8oztitLKSc+4pXLMekRr/0IM55AYoUpGtA9a
48
+ a/GXygWfcLqvJW+8BbEf0+dpwLj8EFcuaCGVd5fptA67Yo9mUSL2d0SVlfPA
49
+ XYzYJV7H+ADtKfFIRAhUUYpeapHt9Fbb1NvWj2J1HZuUi+YOqzlC4NUikZBL
50
+ vEiSRtrI7LAZHQp8cfRZfn2deUupV7OosCGW4Qht6FK2LbIxlrcPQloVWkQP
51
+ UhpKShYyXaE0d3dAM8jcEHMuJIoqMLo2F9mqNWtmrtZXFhlv2NTQJ8JM3Vnw
52
+ jOJwhIMEsnSGX8f5S7XqgxwKlg6Dd6N3BI8vq1p1SgHVF5GqjjYSpfbo9qUu
53
+ fX5NWyxoWsx6iVZXtCpr57h1i9oSbP26tgR8trRNoIXl7DNoa3a34+jOyPFY
54
+ tbm1Oo3ujS0jwTwucKxwb6tu2TIyvL+7OBGoEaA5EsCJ2UDQ7gddQu0uCUjf
55
+ 90LLpdTvBb4feaHd7VOP0A617H7Qab+AVpNJyxiBTJEdGoO7Ry8wn7Sp26F+
56
+ QCPfJpZru24/Io5vOSHu2F5HadXzbOx7RA0AIzCd7qq2X1QzBaEJVdkGH1bL
57
+ kEJiGIvcfsvAhLB6w+2DbjAWjZmEdNzFan5wLNvZsuDn7tjuwOkMvM7HcH8B
58
+ XVVdu3K6UofydjZicRGOGKDABxJnSw7IaVhk1IwzvVvNZfq1bXlWh0YRdR0S
59
+ dW3Xd/tOgLHt98OgY3W94FVy/WKwc1zfpCa+j8eYmZzKtqoeMm+49iVnm40h
60
+ GnJ4mUlrvm/ZrmWmPAZFZ9u7jAAHV6kBgETEMHgNjIaxCup53V7XBlahWeR6
61
+ qFzbiZNPIFDkOLkiXufDq/IcDH3aw0VK8FVOhFp6H07fBUHQ0XdTKLS1MPiE
62
+ YXk5NWpRitL/Q2AxEtcIAU1xPppTfGOJ4MEiwVXsNdwLvWq1Ryf/AqmTDrDu
63
+ DAAA
64
+
65
+ http_version: "1.1"
@@ -0,0 +1,71 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: https://api.github.com:443/users/%7B%7D/gists
6
+ body:
7
+ headers:
8
+ accept-encoding:
9
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
10
+ response: !ruby/struct:VCR::Response
11
+ status: !ruby/struct:VCR::ResponseStatus
12
+ code: 404
13
+ message: Not Found
14
+ headers:
15
+ server:
16
+ - nginx/1.0.4
17
+ date:
18
+ - Sat, 04 Feb 2012 14:18:39 GMT
19
+ content-type:
20
+ - application/json; charset=utf-8
21
+ transfer-encoding:
22
+ - chunked
23
+ connection:
24
+ - keep-alive
25
+ status:
26
+ - 404 Not Found
27
+ x-ratelimit-limit:
28
+ - "5000"
29
+ etag:
30
+ - "\"e66a7a6c91e2c26803f3f49feb7a883f\""
31
+ x-ratelimit-remaining:
32
+ - "4998"
33
+ content-encoding:
34
+ - gzip
35
+ body: !binary |
36
+ H4sIAAAAAAAAA6tWyk0tLk5MT1WyUvLLL1Fwyy/NS1GqBQB8+Ys1FwAAAA==
37
+
38
+ http_version: "1.1"
39
+ - !ruby/struct:VCR::HTTPInteraction
40
+ request: !ruby/struct:VCR::Request
41
+ method: :get
42
+ uri: https://api.github.com:443/users/nil/gists
43
+ body:
44
+ headers:
45
+ accept-encoding:
46
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
47
+ response: !ruby/struct:VCR::Response
48
+ status: !ruby/struct:VCR::ResponseStatus
49
+ code: 200
50
+ message: OK
51
+ headers:
52
+ server:
53
+ - nginx/1.0.4
54
+ date:
55
+ - Sat, 04 Feb 2012 14:21:08 GMT
56
+ content-type:
57
+ - application/json; charset=utf-8
58
+ connection:
59
+ - keep-alive
60
+ status:
61
+ - 200 OK
62
+ x-ratelimit-limit:
63
+ - "5000"
64
+ etag:
65
+ - "\"d751713988987e9331980363e24189ce\""
66
+ x-ratelimit-remaining:
67
+ - "4997"
68
+ content-length:
69
+ - "2"
70
+ body: "[]"
71
+ http_version: "1.1"
@@ -0,0 +1,48 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: https://api.github.com:443/users/peter-murach/gists
6
+ body:
7
+ headers:
8
+ accept-encoding:
9
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
10
+ response: !ruby/struct:VCR::Response
11
+ status: !ruby/struct:VCR::ResponseStatus
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ server:
16
+ - nginx/1.0.4
17
+ date:
18
+ - Sat, 04 Feb 2012 14:18:07 GMT
19
+ content-type:
20
+ - application/json; charset=utf-8
21
+ transfer-encoding:
22
+ - chunked
23
+ connection:
24
+ - keep-alive
25
+ status:
26
+ - 200 OK
27
+ x-ratelimit-limit:
28
+ - "5000"
29
+ etag:
30
+ - "\"0ea1f9dcbdf7ecbe9127a6a7c38519f9\""
31
+ x-ratelimit-remaining:
32
+ - "4999"
33
+ content-encoding:
34
+ - gzip
35
+ body: !binary |
36
+ H4sIAAAAAAAAA4VS246bMBD9lchS3whgMASQVtu+9Av61KqKBnsgVg1Yvmwv
37
+ q/x7h022m02lROLBNnPmzDlnvj2z6Azr2CEE67ssA6vTUYdD7FO5TNmoffAZ
38
+ L8uGtzVLmEIvnbZBLzOBPoUA8qDncfMETkNv0G/CshnN0oPZzDChtyCRcDb2
39
+ RkvWBRcxYYOmStY9M7kMA55b/g+jgvDbIhEF/BUya0DP1MvrP/RW7vJTo5WG
40
+ Sm63SpiBeYwwUukcjUmYg5/799JXrZfaqeJVeTbkA29qjm2zK3e8HRqhZD+s
41
+ F6lEjmXNe17WQ53dHuN4TMjpydxhfvObMphwDmQWqY1WQUC1h0B6i5zzLX15
42
+ +aUouqrtxO4rmUPZ7S0JPDPQlUK9Vnbuv4olSPTo1jBuLsJa5DOLAd12io5i
43
+ JyQ8QQB3JcajjA7T0Z3+vqzR6ZgNfSFaVVW1gHxoZAV5X7eYqx1XVdOK9lE9
44
+ /NvDQjQppvADJtDpjCED7zH4i4A+FJ/1RIl6OryyXZ63XOSpncfVlfMwe63I
45
+ untjEMAsI+1ax64Er3AhRMkLCvJktT+8Wf3xyujuvdEv5BfZOrwT5/H7Xwxs
46
+ RfCgAwAA
47
+
48
+ http_version: "1.1"
@@ -0,0 +1,34 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :put
5
+ uri: https://api.github.com:443/gists/1738161/star
6
+ body:
7
+ headers:
8
+ content-length:
9
+ - "0"
10
+ response: !ruby/struct:VCR::Response
11
+ status: !ruby/struct:VCR::ResponseStatus
12
+ code: 404
13
+ message: Not Found
14
+ headers:
15
+ server:
16
+ - nginx/1.0.4
17
+ date:
18
+ - Sat, 04 Feb 2012 14:31:55 GMT
19
+ content-type:
20
+ - application/json; charset=utf-8
21
+ connection:
22
+ - keep-alive
23
+ status:
24
+ - 404 Not Found
25
+ content-length:
26
+ - "23"
27
+ etag:
28
+ - "\"e66a7a6c91e2c26803f3f49feb7a883f\""
29
+ x-ratelimit-limit:
30
+ - "5000"
31
+ x-ratelimit-remaining:
32
+ - "4993"
33
+ body: "{\"message\":\"Not Found\"}"
34
+ http_version: "1.1"
@@ -0,0 +1,134 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: https://api.github.com:443/users/wycats/repos
6
+ body:
7
+ headers:
8
+ accept-encoding:
9
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
10
+ response: !ruby/struct:VCR::Response
11
+ status: !ruby/struct:VCR::ResponseStatus
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ server:
16
+ - nginx/1.0.4
17
+ date:
18
+ - Sat, 04 Feb 2012 12:21:14 GMT
19
+ content-type:
20
+ - application/json; charset=utf-8
21
+ transfer-encoding:
22
+ - chunked
23
+ connection:
24
+ - keep-alive
25
+ status:
26
+ - 200 OK
27
+ x-ratelimit-limit:
28
+ - "5000"
29
+ etag:
30
+ - "\"adec8fcd501c77935ed602766569677c\""
31
+ link:
32
+ - <https://api.github.com/users/wycats/repos?page=2>; rel="next", <https://api.github.com/users/wycats/repos?page=4>; rel="last"
33
+ x-ratelimit-remaining:
34
+ - "4994"
35
+ content-encoding:
36
+ - gzip
37
+ body: !binary |
38
+ H4sIAAAAAAAAA+1da2/byBX9K6yLvoDQ5lOUWBTdpOm+AC+CXfXLFoVBiWOb
39
+ a4pUSSqKd7H/vefOUOJrFM7QK/eLACNInBnpznDOfZy59/Lfv1zto2r9yIry
40
+ Kpy/udoV6VV49VhV2zK8uYm2yfVDUj3uVtfrfHNTsG1e3uyf11FV3kSrVV6Z
41
+ 90W+Mct1QZ9x9QYTN+ld9zNa8z83sywf64mY8EUzKTw5iSTDV8YMX59sqyTP
42
+ IDl+cZ8XT1iMB2mi8i4pyx3DP6tix95cbZKiyAvxRdkuTcWYON9naR7Fx2Hr
43
+ NM/YhHXUIpUfswmTafvyDdtGD6xZyFV4H6UlJKe17JOn5LCS3TaOKhbfRRUG
44
+ O5btmBZ+7KVlhb4f+u6P+LhtkXzEoONnYMOaPcbjVXk0hyUlP+NzHMd6c5VG
45
+ 2cNOCPn9bvWM79lEZcWKu1URZTgFodjY7a587Mpnm06wtBcQLvRmJB+2nRVX
46
+ 4S+fP3W7EoezPnWY9FBEWFRU3CUxVu45c3sWRC5bB47j+qtoEdj2zFk4nrdw
47
+ ZtYCE9L8IaGjIQ4SflHP7x7Tkq13Bbs+fDo/72Lgzdh3/D3+2xEwjje/ZtfR
48
+ U7SJkuuMVTdRWbKqbKHoD86XyQbbV+Ivh29r/920Pet6mz1AUFqh9+ubqyza
49
+ 0JGQIi7fsux4yG0xx7btReDiH+uCdQ6JZdp4CPOlHYTeIvS8H69+fdNWAJii
50
+ qwC4oBqw5+PVwJ49SCEeGds0WjOjyo2yygtmbJ6NJDO3Rf5QsLI09sC/kWdG
51
+ 9ciMgsVAsvED/nNX/YMGr3ZJGmNunpYQpNYVWPer6IrjitQ1hNjf6XrBNm3L
52
+ tLyl5Ya2hZ+X6IVGfK4NZnMYjGnaACItTNtfWl7o+KG7uGiDidqAH4+ODoCG
53
+ Jr2xsO3AkqqA9s47sBMvUQHrKvnICrbOi9hMNtu8IIuspg2kU0cVw3CWVEf8
54
+ 81NVRBgLNZDfc03wls/8nosahu+ikv1eCGzc7zI+MkqT6tkgh8aICpN9qlhW
55
+ 4telASVhfB8laWm4RpTFxoo9w9c4Kg9seFt51Pb6t/U0Ti5bSZEMZ9NTanQK
56
+ WS+4A/v9HmYvq5Jsl+/K6jHJnhJAHpawXuzB91DwRWzTcpfWPPSc0A4m6pyh
57
+ 2B1nxLadqeqHPKW+gBdnpHasFJ2R4dM5oYlci3tiQ2/k+BSC0Jlx09RVRTMt
58
+ b4TLc7eNimhDll1DCTWT1NRPPV6qeF7Vp2gvWSf06G/Vi7wLcjCW9jy0gtB3
59
+ XoL07raW3MVYdCAuAguVaINcHgRESwjlIdqYX/wLff+id0pkToa/sN0A9m8Y
60
+ Zxy333V4sNdzMvQCjZR9gt0tkkgZ1+0Zo6A+DpYimmJcY5VkMWxhSUEHeRNf
61
+ 5flDyoz3CESNtx++eVXU98VVcgE6W/givItowg5dGHd7It4HS+Bg9xfQ+JPj
62
+ CQ+x7dKxQgQ6FpfrYtD1DHr7iEjBHgRW4ErB7poOIsyAbIA7MOP2ApM0aIWi
63
+ Su6TNVPGejN+FOn1UDnOGacVSuM7VoXh18vlB2MP6tOIjHK3WqfgcYD8qDKI
64
+ ScCoKE3BLvwX3GLFtUKEEGH9ZETbbZqAHyU2sqEXXoGL7C5NSSe0NloaCzyz
65
+ x10MKqv6uRMDqBOS4Jo8cg0QBAjCbwIh2VuXoCGtyTQk3P4FP6wQiX4uikLf
66
+ MWjOTUdNwMMn4sEP5p4TnFIToHxgOmZ857s+gd7lQxnfKysIMXZUOWCYVDHc
67
+ Rk8gG2H0QRAXLKuMOAHjAebx2QBBnKTRCp4AiAZiP4wFqOcG+PBez80rNlIr
68
+ Yb7etxd5AMCQQzw+PUnO3E2AdUtsDml7Dh052fbPTTugmw/4+jZI7Yvt171Z
69
+ EMdCZvUBZm8hCd7hBh533QmHPKKeza/MDYs1/Ptm/Cis66FSaC8J1XnMBOuH
70
+ e4QvuBhGFaVPr+rTd4VUQnJry85gvcW1gbt0gKh56E519HvreklMj+NGzPVs
71
+ adshoC5Euvj4ej5+c2hkWPdd2/EHlrvZeFwtw3KDzu1ablcL6yuGS+J9VGxw
72
+ 9atI03WnjCG+NVoK+g8Fq6qEFcY7kmQTFcRyC5JfXGfXl4JY1ZmN91BSFeT3
73
+ NvBFphxaXGDcCp2JplyyiPp2cKJBp/Pmm9aMAkpgnUzLxaBrGvTuGZFh3fZc
74
+ iZde7z3OBDYeVzeDYN6Bm6Yey6/SHTOLJEZGiyrU2zNGkX4cLAX6t3DPf+C5
75
+ Qca79+/rK7wP6Q7pIMafdyWhHv/N9tf/ypLK+GO02f7VYNnH65/Kv5w0/ue4
76
+ 3Wt2SYPE726tRAmIhKexq7qWnfcRD0+8qhuuQDj1tjOb6tbD1pMWAH/ghAjW
77
+ 3Uukrp8w1DkjUiWwsAO6Re3x9/Xecy3gLkLX71t8z9cz+bssTjXM/XH4qAIQ
78
+ I6XobyDswqc5tyXvCKJkxZs9kYBXnWOjvL+lDbcMaTT8mks/GF91hRcUm+1P
79
+ 5tjgVEAq7leAjHcvAfkE5B5PR5diA1aJY0N2Y2ANqXjCbUCeE0w35V68LL9v
80
+ Hd0rm+167BheaZgUrO9ghske77ZGCTgYjem+bnD8Cok2LQFVQHzYIgmCdcwv
81
+ jNwsRCqcP9H8tqUWvnePIG+2E7upcn9O2TGmaxFN7nuhDQNwccE1XfD6bJww
82
+ u45twTPq35tj22dEZeI44HrVR0TWuzcHBNS97/VjlGTETt8hhQuJMepolkwc
83
+ hXZ/jhTnJ/3qM6TnD5av4V0P5lL8IkG5op0+JuGSIwukT7PTA6EOCxLOtjs5
84
+ HQ4GO0DaOV3NIAgQ4l2YNS1mbfBsSGG2U/PrtNwgcGcSjo1ytMUjABGDpzDw
85
+ uLUSZv6RbzZImDGXdGpVKnLaE8aAfhwrBfgtL7A5JN3m97jJT6LUOE7CnTlq
86
+ iBJxe1YZqEC5huFf41qtdceMOpxeRr5q2F2PU6vf6a9ExeJ3trbLu1PBVGst
87
+ N6g5iHdrVEpB+/LHQbnRxC0O02hrsSU1PbAIuDJFVgslsk1TG4NlCnUxvZQH
88
+ MgWm4y5RTwD/XjgtF3WhpS7ax0imJhyeMyv3EI57L/IXuh6CFj23Lsu7Kr/7
89
+ tI0q5eK93pwxbdEeLlUYdaY+i8Ud3Hf5E8q1igQVPci1r6A9IFydxo8bA1B3
90
+ D/gv5NvcsmJ1MjQ4hzfR2isdR6K3xS/1IXhUTZdyE9l6yfMQmbbBVO+BroEt
91
+ 0+G5ti5ihUstj3643wOVTCPMZjZxqX2m7rj5qPn0QmsQMeCpqgcMMUPQouoz
92
+ HAaPaQA+Tgr9bzbblG1g+o8Iv81/TtI0+lNpfIgKlH1Sbi1pgk78Wl/PvQIb
93
+ 0BZdxTk47t/QMYjZR5biuRbXG7HG67x4uGHZzQ/bJGbFbZ49secbseq7JqN4
94
+ 6CoI1db3FHiA4SBex8U4YseJefid9XIvwe3x9xOIBAgmknMQ+Yjyw4uvoOUr
95
+ HE6VTCs4/txd+EibHjIJtO8+52BBLA2y7Ryt4pp4Y0ZxtEWRt3JpTXfKqJJo
96
+ vkCqKijR/ha5taQSGkFqTXD+LLvWYjRsf2/Xukqhrrd7WY4tYI8fBO4gi0At
97
+ 8KJ6ff5fsrrD9d30K3w0JEA+PgSj0q5LPr6+T9A9PTLw237gDotv6iv8BV0C
98
+ UJ3/IF0HyXwaLsHGRMWsMnMIoevhCoinkWNoN0Ed8K+XW/0zOPr1EvRwftij
99
+ AcbRpAOtIEhxkcE/SQCctOr8Is3yQxS2TK226S2ojv6dqbX7dL5QazOnjgIO
100
+ av4utXWTsF2fGCmurYDqHoeufn/fX1JUFxdmlqxNdCLBn9Ge0bWbsusvnzsK
101
+ eck0Kf5vSSgU2KAaP/lkPOe7wgCZ9hOS7ksjR7+BLHl4rH7XKIXzZ+rJdktH
102
+ Q0hWTps9VBdY23qPGChBFfOEyvt22i7UP7+3m+AQSMQ9rFbcL3ayepTLckl1
103
+ zIjQJK8UKQuXJkATVIfk2eAhy/SI40iTBHoPYZAkoJXaE1OfDWZWG5FEoqxB
104
+ BtNGlUd3hlRvvDXe8bwJUagXxXFpvF+SfMahsuQN0v05GY8CPnTyEJ3DeP3e
105
+ Eg0/bqlZ1mu6GtI1KTENg/2T3U7q5CBwYtGFvzhVZ8jXwtXFxCp+SmeBQnPI
106
+ k3UWoX1RFxPUxeCgyDSF7cw9WxJK4AEgjMNND5q2eZJ8Iq3bBjBgGTrWIUCI
107
+ GdrrIN02VfY4TswdUxqyaVLN0aD+/GTCZ4RSgb5seteXqBej3DrwmJ2Ai2f0
108
+ 45pIHsrk6joNbre8X5tL5E09qHsdSIVDstSFS9TiEmUP6YT3MHPduS1vINZ6
109
+ CpRz2g1DHK0rB/YJoXHCLwFSM9qsWGFWeZwr04yfmT+qHE58tVRBUKVgq4sg
110
+ l9GodshjoPQGUUxANcJUVZAy8z6BFxKl20e0B6FFoWa4rIpktes2Bjh/4HJq
111
+ fzSCl1Mf0VU6rWd3jaXmKwbWY3LfADQyhc1Ba0DRykM/hDkldEcj2fN5N8lZ
112
+ WyUhFQJcCGoSeZnkxUOZ0NX01JPqqyWoIkp9RnNXZ+FK+gu0HwVuoge0p5Za
113
+ QtrSo3K3ocPgMYXDx0m1y5f118nbkaomPwl3Xy33qS2Litdx3BBJAoNOmIFU
114
+ Z3CG3uRahY7cgsrsdQ2agmHcokPhoIcZQqBLoZF+lHE4HbLYwkH/H3sxDC5w
115
+ c0WpI1zR40zQvvfKinXuKR5yUGbqWUzN8DHQ1iOlsP1KfKmRgE0wsjwzV2m+
116
+ 5tXEvGnYnq0MJDGAsERuE1o4U2Pik/TCOUDelV0F5q1tHHCTh09L8mOAoYl8
117
+ WHQAbGIaY28xHPv+rGu/NfqR4/ShmwCuTlE3BTfjUqSkj/rmsEhxj8SExUwS
118
+ QIidBwmM2hL8DAKImdYF5cMO+TPK4cJx9Cjs+cdKUf+OdxDntxKIPuuy4uMH
119
+ H0w4qJEz1xyKr9Rw5JutkhhxxUoG8ZoBwAYm/NBsR98774ouzLjv91IQJxhy
120
+ yoawOJGJeqrLxeQESB/Q1EE0XGfuejv2fEYR0zDZiNop41DMQh895geI1qIJ
121
+ H0HMp2yF/D8TNUuwnxRnqhQxyCaOwXwwR4r4t5nRjlJQw7AvkgpNv0Rr8a+P
122
+ EhtC4poP+DYpO10Az64RTq1GxfIP5v5GnCIygtGvZ2L/oIFQ3fDd75U8aWsM
123
+ pMiB30bqMlLpkT17cQL0NcbgEfXj9rrwCe8ksX1v2F2I0hTRJxJFLihYhv4Y
124
+ hAF0L6Ger9QSB1VGyvcLw2kamoO+SKo3GmcfzPeZvYHeCjTcguHaZXeJ6v4B
125
+ bLBPTbo8JCVOfN3IicWI3INgcpdg0XAecIdSQpb05T7xRXCv8dXxFEBoc0/B
126
+ 9lDBJO0aSC+qQmsn1I3hFgdmoZfD5Ot1FmkOCrr26DsKYpI61DF+BOj2KzQb
127
+ 6Sx6EtDrzVIJA06XJuJB8u48NpWeTEs0kq5EoNwHxdvqB6pt2gXW+fvQONwv
128
+ HQy0G/32wdWNCeqgYG4tZifeMxSYLmdVKXVg+AoALavO4n2i/KIxvHZOjB4F
129
+ Nh84gmi4H+d+vY8QWAfJx/2QQFiPlKP3gon+rVMyBbuSc+R6vtdNLdaGLu75
130
+ Qc2hoS9VDkC6C3T1oXs4IDJmDk2/ZpIEY+pBcNh3BET02qaecdaBLBX185dy
131
+ mvytlYox/GDWGIS7E/7/UJbKoxJ/D1Yuc8KVoc3bBoAH84CfibZZvpKaq3th
132
+ Jg+vW2okvCBc3xEfnBcZ0p3ADniOw5CxOz4A5HwSVfrrf/4Hg3HNbwt4AAA=
133
+
134
+ http_version: "1.1"