aylien_text_api 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +3 -0
  3. data/README.md +12 -10
  4. data/aylien_text_api.gemspec +3 -3
  5. data/lib/aylien_text_api/client.rb +30 -93
  6. data/lib/aylien_text_api/configuration.rb +2 -4
  7. data/lib/aylien_text_api/version.rb +1 -1
  8. data/spec/fixtures/aylien_text_api/client/{microformats_with_invalid_client.yml → elsa_with_invalid_client.yml} +10 -8
  9. data/spec/fixtures/aylien_text_api/client/{related_with_invalid_params.yml → elsa_with_invalid_params.yml} +15 -24
  10. data/spec/fixtures/aylien_text_api/client/elsa_with_text.yml +98 -0
  11. data/spec/fixtures/aylien_text_api/client/{related_with_unauthenticated_client.yml → elsa_with_unauthenticated_client.yml} +10 -8
  12. data/spec/fixtures/aylien_text_api/client/elsa_with_valid_url.yml +47 -0
  13. data/spec/fixtures/aylien_text_api/client/elsa_with_value_as_text.yml +92 -0
  14. data/spec/fixtures/aylien_text_api/client/elsa_with_value_as_valid_url.yml +53 -0
  15. data/spec/lib/aylien_text_api/client_spec.rb +1 -3
  16. data/spec/lib/aylien_text_api/elsa.rb +81 -0
  17. metadata +14 -152
  18. data/spec/fixtures/aylien_text_api/client/microformats_with_invalid_params.yml +0 -62
  19. data/spec/fixtures/aylien_text_api/client/microformats_with_unauthenticated_client.yml +0 -42
  20. data/spec/fixtures/aylien_text_api/client/microformats_with_valid_url.yml +0 -84
  21. data/spec/fixtures/aylien_text_api/client/microformats_with_value_as_valid_url.yml +0 -84
  22. data/spec/fixtures/aylien_text_api/client/related_with_invalid_client.yml +0 -38
  23. data/spec/fixtures/aylien_text_api/client/related_with_phrase.yml +0 -112
  24. data/spec/fixtures/aylien_text_api/client/related_with_value_as_phrase.yml +0 -112
  25. data/spec/fixtures/aylien_text_api/client/related_with_value_as_valid_url.yml +0 -62
  26. data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_client.yml +0 -38
  27. data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_params.yml +0 -57
  28. data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_text.yml +0 -53
  29. data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_unauthenticated_client.yml +0 -42
  30. data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_valid_url.yml +0 -97
  31. data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_text.yml +0 -57
  32. data/spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_valid_url.yml +0 -97
  33. data/spec/lib/aylien_text_api/microformats.rb +0 -66
  34. data/spec/lib/aylien_text_api/related.rb +0 -80
  35. data/spec/lib/aylien_text_api/unsupervised_classify.rb +0 -87
@@ -2,17 +2,17 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: https://api.aylien.com/api/v1/related
5
+ uri: https://api.aylien.com/api/v1/elsa
6
6
  body:
7
7
  encoding: US-ASCII
8
- string: phrase=android
8
+ string: text=Barack+Hussein+Obama+II+is+the+44th+and+current%0A++++++President+of+the+United+States%2C+and+the+first%0A++++++African+American+to+hold+the+office.
9
9
  headers:
10
10
  Accept-Encoding:
11
11
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
12
  Accept:
13
13
  - "*/*"
14
14
  User-Agent:
15
- - Aylien Text API Ruby Gem 0.6.0
15
+ - Aylien Text API Ruby Gem 0.7.0
16
16
  Content-Type:
17
17
  - application/x-www-form-urlencoded
18
18
  X-Aylien-Textapi-Application-Id:
@@ -25,18 +25,20 @@ http_interactions:
25
25
  message: Forbidden
26
26
  headers:
27
27
  Server:
28
- - openresty/1.9.3.2
28
+ - openresty/1.13.6.1
29
29
  Date:
30
- - Thu, 28 Apr 2016 10:44:42 GMT
30
+ - Thu, 31 May 2018 11:03:03 GMT
31
31
  Content-Type:
32
32
  - text/plain; charset=us-ascii
33
33
  Transfer-Encoding:
34
34
  - chunked
35
- Connection:
36
- - keep-alive
35
+ Via:
36
+ - 1.1 google
37
+ Alt-Svc:
38
+ - clear
37
39
  body:
38
40
  encoding: UTF-8
39
41
  string: Authentication failed
40
42
  http_version:
41
- recorded_at: Thu, 28 Apr 2016 10:44:42 GMT
43
+ recorded_at: Thu, 31 May 2018 11:03:03 GMT
42
44
  recorded_with: VCR 2.9.3
@@ -0,0 +1,47 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.aylien.com/api/v1/elsa
6
+ body:
7
+ encoding: US-ASCII
8
+ string: url=http%3A%2F%2Fwww.businessinsider.com%2Fcarl-icahn-open-letter-to-apple-2014-1
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Aylien Text API Ruby Gem 0.7.0
16
+ Content-Type:
17
+ - application/x-www-form-urlencoded
18
+ X-Aylien-Textapi-Application-Id:
19
+ - "<PASSWORD>"
20
+ X-Aylien-Textapi-Application-Key:
21
+ - "<PASSWORD>"
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: ''
26
+ headers:
27
+ Server:
28
+ - openresty/1.13.6.1
29
+ Date:
30
+ - Thu, 31 May 2018 11:03:08 GMT
31
+ Content-Type:
32
+ - application/json;charset=UTF-8
33
+ Content-Length:
34
+ - '54190'
35
+ Access-Control-Allow-Origin:
36
+ - "*"
37
+ Via:
38
+ - 1.1 google
39
+ Alt-Svc:
40
+ - clear
41
+ body:
42
+ encoding: ASCII-8BIT
43
+ string: !binary |-
44
+ ewogICJ0ZXh0IjogIkNhcmwgSWNhaG4gQnV5cyAkNTAwIE1pbGxpb24gTU9SRSBPZiBBcHBsZSwgUmVsZWFzZXMgT3BlbiBMZXR0ZXIgVG8gVGhlIENvbXBhbnlcbkNhcmwgSWNhaG4gY29udGludWVkIGhpcyBhc3NhdWx0IG9uIEFwcGxlIHRvZGF5LlxyXG5IZSBhbm5vdW5jZWQgb24gVHdpdHRlciB0aGF0IGhlIGJvdWdodCBhbm90aGVyICQ1MDAgbWlsbGlvbiB3b3J0aCBvZiBBcHBsZSBzdG9jaywgYnJpbmdpbmcgaGlzIHRvdGFsIHRvICQzLjYgYmlsbGlvbi5cclxuSGUgYWxzbyB3cm90ZSBhbiBvcGVuIGxldHRlciB0byBBcHBsZSBzaGFyZWhvbGRlcnMgZXhwbGFpbmluZyB3aHkgaGUgdGhpbmtzIEFwcGxlIG5lZWRzIHRvIHJhbXAgdXAgaXRzIHNoYXJlIGJ1eWJhY2tzLiBIZSBiZWxpZXZlcyBhIHNoYXJlIGJ1eWJhY2sgd291bGQgZWFzaWx5IGdvb3NlIHRoZSBjb21wYW55J3Mgc2hhcmUgcHJpY2UuwqBcclxuSGVyZSdzIHRoZSB0d2VldDpcclxuXHJcbkJvdWdodCBhbm90aGVyICQ1MDBtaWwgb2YgJEFBUEwgdGRheSwgYnJpbmdpbmcgb3VyIHRvdGFsIHRvICQzLjYgYmlsbGlvbi4gSWYgYm9hcmQgZG9lc27igJl0IHNlZSBBQVBM4oCZcyDigJhubyBicmFpbmVy4oCZIHZhbHVlIHdlIHN1cmUgZG8uXHJcbuKAlCBDYXJsIEljYWhuIChAQ2FybF9DX0ljYWhuKSBKYW51YXJ5IDIzLCAyMDE0XHJcblxyXG5BbmQgaGVyZSdzIHRoZSBsZXR0ZXI6XHJcbkRlYXIgRmVsbG93IEFwcGxlIFNoYXJlaG9sZGVycyxcclxuT3ZlciB0aGUgY291cnNlIG9mIG15IGxvbmcgY2FyZWVyIGFzIGFuIGludmVzdG9yIGFuZCBhcyBDaGFpcm1hbiBvZiBJY2FobiBFbnRlcnByaXNlcywgb3VyIGJlc3QgcGVyZm9ybWluZyBpbnZlc3RtZW50cyByZXN1bHQgZnJvbSBvcHBvcnR1bml0aWVzIHRoYXQgd2UgbGlrZSB0byBjYWxsIFwibm8gYnJhaW5lcnMuXCIgUmVjZW50IGV4YW1wbGVzIG9mIHN1Y2gg4oCcbm8gYnJhaW5lcnPigJ0gaGF2ZSBiZWVuIG91ciBpbnZlc3RtZW50cyBpbiBOZXRmbGl4LCBIYWluIENlbGVzdGlhbCwgQ2hlc2FwZWFrZSwgRm9yZXN0IExhYnMgYW5kIEhlcmJhbGlmZSwganVzdCB0byBuYW1lIGEgZmV3LiBJbiBvdXIgb3BpbmlvbiwgYSBncmVhdCBleGFtcGxlIG9mIGEg4oCcbm8gYnJhaW5lcuKAnSBpbiB0b2RheeKAmXMgbWFya2V0IGlzIEFwcGxlLiBUaGUgUyA1MDDigJlzIHByaWNlIHRvIGVhcm5pbmdzIG11bHRpcGxlIGlzIDcxJSBoaWdoZXIgdGhhbiBBcHBsZeKAmXMsIGFuZCBpZiBBcHBsZSB3ZXJlIHNpbXBseSB2YWx1ZWQgYXQgdGhlIHNhbWUgbXVsdGlwbGUsIGl0cyBzaGFyZSBwcmljZSB3b3VsZCBiZSAkODQwLCB3aGljaCBpcyA1MiUgaGlnaGVyIHRoYW4gaXRzIGN1cnJlbnQgcHJpY2UuMSBUaGlzIGlzIGEgZHJhbWF0aWMgdmFsdWF0aW9uIGRpc2Nvbm5lY3QgdGhhdCBzaW1wbHkgbWFrZXMgbm8gc2Vuc2UgdG8gdXMsIGFuZCBpdCBzZWVtcyB0aGF0IHRoZSBjb21wYW55IGFncmVlcyB3aXRoIHVzIG9uIHRoaXMgcG9pbnQuIFRpbSBDb29rIGhpbXNlbGYgaGFzIGV4cHJlc3NlZCBvbiBtb3JlIHRoYW4gb25lIG9jY2FzaW9uIHRoYXQgQXBwbGUgaXMgdW5kZXJ2YWx1ZWQsIGFuZCBhcyB0aGUgY29tcGFueSBzdGF0ZXMsIGl0IGFscmVhZHkgaGFzIGluIHBsYWNlIOKAnHRoZSBsYXJnZXN0IHNoYXJlIHJlcHVyY2hhc2UgYXV0aG9yaXphdGlvbiBpbiBoaXN0b3J5LuKAnSBXZSBiZWxpZXZlLCBob3dldmVyLCB0aGF0IHRoaXMgc2hhcmUgcmVwdXJjaGFzZSBhdXRob3JpemF0aW9uIGNhbiBhbmQgc2hvdWxkIGJlIGV2ZW4gbGFyZ2VyLCBhbmQgZWZmZWN0dWF0aW5nIHRoYXQgZm9yIHRoZSBiZW5lZml0IG9mIGFsbCBvZiB0aGUgY29tcGFueeKAmXMgc2hhcmVob2xkZXJzIGlzIHRoZSBzb2xlIGludGVudGlvbiBvZiBvdXIgcHJvcG9zYWwuIFRoZSBjb21wYW55IGhhcyByZWNvbW1lbmRlZCB2b3RpbmcgYWdhaW5zdCBvdXIgcHJvcG9zYWwgZm9yIHZhcmlvdXMgcmVhc29ucy4gSXQgc2VlbXMgdG8gdXMgdGhhdCB0aGUgYmFzaXMgb2YgaXRzIGFyZ3VtZW50IGFnYWluc3Qgb3VyIHByb3Bvc2FsIGlzIHRoYXQgdGhlIGNvbXBhbnkgYmVsaWV2ZXMsIGJlY2F1c2Ugb2YgdGhlIOKAnGR5bmFtaWMgY29tcGV0aXRpdmUgbGFuZHNjYXBl4oCdIGFuZCBiZWNhdXNlIGl0cyDigJxyYXBpZCBwYWNlIG9mIGlubm92YXRpb24gcmVxdWlyZVtzXSB1bnByZWNlZGVudGVkIGludmVzdG1lbnQsIGZsZXhpYmlsaXR5IGFuZCBhY2Nlc3MgdG8gcmVzb3VyY2Vz4oCdLCBpdCBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBlbm91Z2ggZXhjZXNzIGxpcXVpZGl0eSB0byBpbmNyZWFzZSB0aGUgc2l6ZSBvZiBpdHMgcmVwdXJjaGFzZSBwcm9ncmFtLiBBc3N1bWluZyB0aGlzIGluZGVlZCBpcyB0aGUgYmFzaXMgZm9yIHRoZSBjb21wYW554oCZcyBhcmd1bWVudCwgd2UgZmluZCBpdHMgcG9zaXRpb24gb3Zlcmx5IGNvbnNlcnZhdGl2ZSAoYWxtb3N0IHRvIHRoZSBwb2ludCBvZiBiZWluZyBpcnJhdGlvbmFsKSwgd2hlbiB3ZSBjb25zaWRlciB0aGF0IHRoZSBjb21wYW55IGhhZCAkMTMwIGJpbGxpb24gb2YgbmV0IGNhc2ggYXMgb2YgU2VwdGVtYmVyIDI4LCAyMDEzIGFuZCB0aGF0IGNvbnNlbnN1cyBlYXJuaW5ncyBhcmUgZXhwZWN0ZWQgdG8gYmUgYWxtb3N0ICQ0MCBiaWxsaW9uIG5leHQgeWVhci4gR2l2ZW4gdGhpcyBtYXNzaXZlIG5ldCBjYXNoIHBvc2l0aW9uIGFuZCByb2J1c3QgZWFybmluZ3MgZ2VuZXJhdGlvbiwgQXBwbGUgaXMgcGVyaGFwcyB0aGUgbW9zdCBvdmVyY2FwaXRhbGl6ZWQgY29tcGFueSBpbiBjb3Jwb3JhdGUgaGlzdG9yeSwgZnJvbSBvdXIgcGVyc3BlY3RpdmUuIFJlZ2FyZGxlc3Mgb2Ygd2hhdCBsaXF1aWRpdHkgaXQgbWF5IHJlcXVpcmUgd2l0aCByZXNwZWN0IHRvIOKAnHVucHJlY2VkZW50ZWQgaW52ZXN0bWVudCwgZmxleGliaWxpdHkgYW5kIGFjY2VzcyB0byByZXNvdXJjZXPigJ0gZm9yIGlubm92YXRpb24gbW92aW5nIGZvcndhcmQsIHdlIGJlbGlldmUgdGhlIHVucHJlY2VkZW50ZWQgZGVncmVlIHRvIHdoaWNoIHRoZSBjb21wYW55IGlzIGN1cnJlbnRseSBvdmVyY2FwaXRhbGl6ZWQgd291bGQgb3ZlcmNvbXBlbnNhdGUgZm9yIGFueSBzdWNoIGludmVzdG1lbnRzIChpbmNsdWRpbmcgcG9zc2libGUgaW52ZXN0bWVudHMgaW4gc3RyYXRlZ2ljIE0sIHRvIHdoaWNoIHRoZSBjb21wYW55IGRvZXMgbm90IHJlZmVyKS4gU2FpZCBhbm90aGVyIHdheSwgd2UgYmVsaWV2ZSB0aGF0IHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgY29tcGFueeKAmXMgdW5wcmVjZWRlbnRlZGx5IGVub3Jtb3VzIG5ldCBjYXNoIGJhbGFuY2UsIHJvYnVzdCBhbm51YWwgZWFybmluZ3MsIGFuZCB0cmVtZW5kb3VzIGJvcnJvd2luZyBjYXBhY2l0eSBwcm92aWRlIG1vcmUgdGhhbiBlbm91Z2ggZXhjZXNzIGxpcXVpZGl0eSB0byBhZmZvcmQgYm90aCB0aGUgdXNlIG9mIGNhc2ggZm9yIGFueSBuZWNlc3Nhcnkgb25nb2luZyBidXNpbmVzcy1yZWxhdGVkIGludmVzdG1lbnRzIGluIGFkZGl0aW9uIHRvIHRoZSBjYXNoIHVzZWQgZm9yIHRoZSBpbmNyZWFzZWQgc2hhcmUgcmVwdXJjaGFzZXMgcHJvcG9zZWQuXHJcbkl0IGlzIG91ciBiZWxpZWYgdGhhdCBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIEJvYXJkLCBvbiBiZWhhbGYgb2YgdGhlIGNvbXBhbnnigJlzIHNoYXJlaG9sZGVycywgdG8gdGFrZSBhZHZhbnRhZ2Ugb2Ygc3VjaCBhIGxhcmdlIGFuZCB1bm1pc3Rha2FibGUgb3Bwb3J0dW5pdHkuIEluZGVlZCwgd2UgYmVsaWV2ZSB0aGF0IGJ5IGNob29zaW5nIG5vdCB0byBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgcmVwdXJjaGFzZSBwcm9ncmFtLCB0aGUgZGlyZWN0b3JzIGFyZSBhY3R1YWxseSBwZXJmb3JtaW5nIGEgZ3JlYXQgZGlzc2VydmljZSB0byB0aGUgb3duZXJzLCBlc3BlY2lhbGx5IHNtYWxsZXIgc2hhcmVob2xkZXJzIHdobyBtYXkgbm90IGJlIGluIGEgcG9zaXRpb24gdG8gYnV5IG1vcmUgc3RvY2sgdGhlbXNlbHZlcy4gTWVhbndoaWxlLCB3ZSBhcmUgaW4gYSBwb3NpdGlvbiB0byBjb250aW51ZSBidXlpbmcgc2hhcmVzIGluIHRoZSBtYXJrZXQgYXQgdG9kYXkncyBwcmljZSwgc28gcGVyaGFwcyB3ZSBzaG91bGQgdGhhbmsgdGhlIEJvYXJkIGZvciBub3QgYmVpbmcgbW9yZSBhZ2dyZXNzaXZlLCBhbmQgdGh1cyBhbGxvd2luZyB1cyB0byBhY2N1bXVsYXRlIGFuIGV2ZW4gbGFyZ2VyIGludmVzdG1lbnQgcG9zaXRpb24gYXQgYSBwcmljZSB0aGF0IHJlZmxlY3RzIHRoZSBhZm9yZW1lbnRpb25lZCB2YWx1YXRpb24gZGlzY29ubmVjdC4gSW4gZmFjdCwgb3ZlciB0aGUgcGFzdCB0d28gd2Vla3Mgd2UgcHVyY2hhc2VkICQxIGJpbGxpb24gbW9yZSBpbiBBcHBsZSBzaGFyZXMsICQ1MDAgbWlsbGlvbiBvZiB3aGljaCB3ZSBwdXJjaGFzZWQgdG9kYXksIGJyaW5naW5nIG91ciB0b3RhbCBvd25lcnNoaXAgcG9zaXRpb24gaW4gQXBwbGUgdG8gYSBjdXJyZW50IHZhbHVlIG9mIGFwcHJveGltYXRlbHkgJDMuNiBiaWxsaW9uLlxyXG5HaXZlbiB0aGUgZGVncmVlIHRvIHdoaWNoIEFwcGxlIGFwcGVhcnMgdW5kZXJ2YWx1ZWQgdG8gdXMsIHdlIGFsbW9zdCBmZWVsIHRoYXQgaXTigJlzIGEgd2FzdGUgb2YgdGltZSB0byBkZWJhdGUgdGhlIHBvaW50LiBBcyB3ZSBiZWxpZXZlIGl0IHRvIGJlIHRoZSBwcmVlbWluZW50IGFuZCBtb3N0IGlubm92YXRpdmUgY29uc3VtZXIgcHJvZHVjdHMgY29tcGFueSBpbiB0aGUgd29ybGQsIHdpdGggdGhlIGdyZWF0ZXN0IGJyYW5kLCBoYXJkd2FyZSwgc29mdHdhcmUsIGFuZCBzZXJ2aWNlcyBpbiB0aGUgd29ybGQsIEFwcGxlIGhhcyBoYWQgdHJlbWVuZG91cyBncm93dGggdG8gZGF0ZSwgYW5kIHdlIGZhaWwgdG8gc2VlIHdoeSB0aGlzIGdyb3d0aCB3b3VsZCBub3QgY29udGludWUgbW92aW5nIGZvcndhcmQuIFRoZSBpbmR1c3RyeSAoc21hcnRwaG9uZXMgYW5kIHRhYmxldHMpIGlzIGV4cGVjdGVkIHRvIGdyb3cgdm9sdW1lIGF0IGEgMTUlIGNvbXBvdW5kZWQgYW5udWFsIGdyb3d0aCByYXRlIGZyb20gMjAxMyB0aHJvdWdoIDIwMTcgYWNjb3JkaW5nIHRvIElEQy4gV2UgYmVsaWV2ZSBBcHBsZSBzaG91bGQgY29udGludWUgdG8gYmVuZWZpdCBmcm9tIHRoaXMgc2VjdWxhciBncm93dGgsIGFzIGxhc3QgeWVhciwgODUlIG9mIEFwcGxl4oCZcyByZXZlbnVlcyBjYW1lIGZyb20gc21hcnRwaG9uZXMsIHRhYmxldHMsIGFuZCByZWxhdGVkIHNvZnR3YXJlLCBzZXJ2aWNlcywgYW5kIGFjY2Vzc29yaWVzLiBUaGUgbmF5c2F5ZXJzIHF1ZXN0aW9uIHdoZXRoZXIgQXBwbGUgd2lsbCBiZSBhYmxlIHRvIHBhcnRpY2lwYXRlIGluIHRoaXMgZ3Jvd3RoIHdpdGhvdXQgc2FjcmlmaWNpbmcgcHJpY2luZyBhbmQgZ3Jvc3MgbWFyZ2lucywgZXNwZWNpYWxseSB3aXRoIGNvbXBldGl0aW9uIGZyb20gR29vZ2xlLCBTYW1zdW5nLCBNaWNyb3NvZnQsIEFtYXpvbiBhbmQgQ2hpbmVzZSBtYW51ZmFjdHVyZXJzLiBPdXIgcmVzcG9uc2UgdG8gdGhlbSBpcyB0aGF0IHRoZSBhbnN3ZXIgaXMgYWxyZWFkeSBldmlkZW50IHRvIHVzIGZyb20gdGhlIGNvbnRpbnVpbmcgbG95YWx0eSBvZiBBcHBsZeKAmXMgZ3Jvd2luZyBjdXN0b21lciBiYXNlLiBUaGUgaGlnaGx5IHN1Y2Nlc3NmdWwgZXZvbHV0aW9uYXJ5IChub3QgcmV2b2x1dGlvbmFyeSkgaW50cm9kdWN0aW9ucyBvZiB0aGUgaVBob25lIDVzIGFuZCA1YyBhbmQgSXBhZCBBaXIgYW5kIE1pbmksIHByb3ZlIHRvIHVzIHRoYXQgQXBwbGUgY291bGQsIGZvciB0aGUgbW9zdCBwYXJ0LCBtYWludGFpbiBwcmljaW5nIGFuZCBncm9zcyBtYXJnaW4gYXMgd2UgYmVsaWV2ZSBjb25zdW1lcnMgYXJlIHdpbGxpbmcgdG8gcGF5IGEgcmVhc29uYWJsZSBwcmVtaXVtIGZvciB0aGUgd29ybGTigJlzIGJlc3Qgc21hcnRwaG9uZXMgYW5kIHRhYmxldHMuIFRoZSBydW1vcmVkIGZ1dHVyZSBpbnRyb2R1Y3Rpb24gb2YgcHJvZHVjdCBsaW5lIGV4dGVuc2lvbnMgd2l0aCBsYXJnZXIgc2NyZWVucyBmb3IgYm90aCB0aGUgaVBob25lIGFuZCBpUGFkIHdvdWxkIGZ1cnRoZXIgc3VwcG9ydCB0aGlzIHZpZXcuMiBJbiBmYWN0LCBhIHJlY2VudCBzdHVkeSBmcm9tIE5EQyBzaG93cyB0aGF0IHRoZSBpUGhvbmUgYWNjb3VudGVkIGZvciA0MiUgb2Ygc21hcnRwaG9uZSB1c2VycyBpbiB0aGUgVW5pdGVkIFN0YXRlcyBhdCB0aGUgZW5kIG9mIDIwMTMsIHVwIGEgc3RhZ2dlcmluZyAyMCUgZnJvbSB0aGUgcHJpb3IgeWVhci4gRGVzcGl0ZSBpdHMgZ3JlYXQgc2NhbGUgYW5kIG5hcnJvdyBmb2N1cywgQXBwbGUgaGFzIGFuIG9wZXJhdGluZyBtYXJnaW4gb2YganVzdCAyOC41JS4gV2UgYmVsaWV2ZSBpdHMgY3VzdG9tZXJz4oCZIHdpbGxpbmduZXNzIHRvIHBheSBhIHByZW1pdW0gcHJpY2UgZm9yIHRoZSB3b3JsZOKAmXMgZ3JlYXRlc3QgcHJvZHVjdHMgc2hvdWxkIGVuYWJsZSBBcHBsZSB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgZXhwZWN0ZWQgdm9sdW1lIGdyb3d0aCBvZiB0aGVzZSBjYXRlZ29yaWVzIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgbGFyZ2VseSBtYWludGFpbmluZyBpdHMgYXZlcmFnZSBzZWxsaW5nIHByaWNlcyBhbmQgZ3Jvc3MgbWFyZ2lucy4gQW5kLCBhcyBzb2Z0d2FyZSBhbmQgc2VydmljZXMgaW1wcm92ZSBhbmQgYmVjb21lIGV2ZW4gbW9yZSBpbXBvcnRhbnQgdG8gY29uc3VtZXJzIGluIHRoZSBmdXR1cmUsIHdlIGV4cGVjdCBjdXN0b21lciBsb3lhbHR5IHRvIHN0cmVuZ3RoZW4gZnVydGhlci5cclxuRXZlbiBpZiB0aGUgc3RvcnkgZW5kZWQgd2l0aCBBcHBsZeKAmXMgZXhpc3RpbmcgcHJvZHVjdCBhbmQgc29mdHdhcmUgbGluZXMsIHdlIHdvdWxkIHN0aWxsIGNob29zZSB0byBtYWtlIEFwcGxlIG91ciBsYXJnZXN0IGludmVzdG1lbnQuIEJ1dCB0aGVyZSBpcyBtb3JlIHRvIHRoZSBzdG9yeSEgVGltIENvb2sga2VlcHMgc2F5aW5nIHRoYXQgaGUgZXhwZWN0cyB0byBpbnRyb2R1Y2Ug4oCcbmV3IHByb2R1Y3RzIGluIG5ldyBjYXRlZ29yaWVz4oCdIGFuZCB5ZXQgdmVyeSBmZXcgcGVvcGxlIHNlZW0gdG8gYmUgbGlzdGVuaW5nLiBXZeKAmXJlIG5vdCBhd2FyZSBvZiBhIHNpbmdsZSBXYWxsIFN0cmVldCBhbmFseXN0IHdobyBpbmNsdWRlcyDigJxuZXcgcHJvZHVjdHMgaW4gbmV3IGNhdGVnb3JpZXPigJ0gb3IgbmV3IHNlcnZpY2VzIGluIGFueSBvZiB0aGVpciBmaW5hbmNpYWwgcHJvamVjdGlvbnMsIGV2ZW4gdGhvdWdoIEFwcGxlIGNsZWFybHkgaGFzIGFuIGltcHJlc3NpdmUgdHJhY2sgcmVjb3JkIG9mIHN1Y2ggbmV3IGNhdGVnb3J5IHByb2R1Y3QgaW50cm9kdWN0aW9ucywgZXZlbiBpZiBpdCBkb2VzIHNvIHJhcmVseS4gQXBwbGUgcmVsZWFzZWQgdGhlIGlQaG9uZSBpbiAyMDA3IGFuZCB0aGUgaVBhZCBmaXZlIHllYXJzIGxhdGVyIGluIDIwMTIsIGJvdGggc28gZXh0cmFvcmRpbmFyaWx5IHN1Y2Nlc3NmdWwgdGhhdCB0b2RheSB0aGV5IHJlcHJlc2VudCB0aGUgbWFqb3JpdHkgb2YgdGhlIGNvbXBhbnnigJlzIHJldmVudWUuIFRpbSBDb29r4oCZcyBjb21tZW50cywgYWxvbmcgd2l0aCBhZHZhbmNlbWVudHMgaW4gZW5hYmxpbmcgdGVjaG5vbG9naWVzLCBsZWFkIHVzIHRvIGJlbGlldmUgdGhhdCB3ZSBtYXkgc2VlIGluIHRoZSBub3QgdG9vIGRpc3RhbnQgZnV0dXJlIHdoYXQgbmV3IGdyb3VuZGJyZWFraW5nIHByb2R1Y3RzIHRoZXnigJl2ZSBiZWVuIHdvcmtpbmcgb24gZGV2ZWxvcGluZyBpbiBDdXBlcnRpbm8gdGhlc2UgbGFzdCBzZXZlcmFsIHllYXJzLjNcclxuVG8gZ2V0IGEgc2Vuc2Ugb2YgdGhlIHNjYWxlIG9mIHRoZSBvcHBvcnR1bml0eSB0aGF0IHN0ZW1zIGZyb20gbmV3IHByb2R1Y3RzIGluIG5ldyBjYXRlZ29yaWVzLCBsZXTigJlzIHRha2UgYSBtb21lbnQgdG8gY29uc2lkZXIgdGhlIHBvc3NpYmlsaXR5IG9mIGFuIEFwcGxlIHRlbGV2aXNpb24uIFRoZSBtYWpvciBlbGVjdHJvbmljcyBjb21wYW5pZXMgYXJlIG5vdyBmb2N1c2VkIG9uIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBUVnMgYXMgdGhlaXIgbmV4dCBiaWcgb3Bwb3J0dW5pdHkuIFVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBpcyBleHBlY3RlZCB0byBvZmZlciBhIGxldmVsIG9mIGltYWdlIGNsYXJpdHkgdGhhdCBpcyBzdXBlcmlvciB0byB0b2RheeKAmXMgaGlnaCBkZWZpbml0aW9uIHRlbGV2aXNpb25zIGZvciBzY3JlZW4gc2l6ZXMgNTUgaW5jaGVzIGFuZCBhYm92ZS4gVG8gZGF0ZSwgdGhlIGJhcnJpZXIgdG8gbWFzcyBtYXJrZXQgYWRvcHRpb24gb2YgdWx0cmEgaGlnaCBkZWZpbml0aW9uIGhhcyBiZWVuIHRoZSBwcmljZSBnYXAgYmV0d2VlbiBpdCBhbmQgcmVndWxhciBoaWdoIGRlZmluaXRpb24sIGJ1dCB0aGF0IHByaWNlIGdhcCBpcyBjbG9zaW5nIGFuZCB3aWxsIHNvb24gYmUgZGUgbWluaW1pcy4gVGhlIGNsb3Npbmcgb2YgdGhpcyBwcmljZSBnYXAgaXMgc3VwcG9ydGVkIGJ5IHN0YXRlbWVudHMgbWFkZSBieSB0aGUgQ28tQ0VPIG9mIFNhbXN1bmcgRWxlY3Ryb25pY3MsIHdobyBleHBlY3RzIHRoZSBwcmljZSBnYXAgdG8gZmFsbCB0byAxMCUgYnkgdGhlIGVuZCBvZiB0aGlzIHllYXIuIFdoaWxlIGNhYmxlIGNvbXBhbmllcyB3aWxsIGxpa2VseSBiZSBzbG93IHRvIHVwZ3JhZGUgdGhlaXIgbGluZWFyIFRWIGluZnJhc3RydWN0dXJlIGR1ZSB0byBjb3N0LCB2aWRlbyBjb250ZW50IGlzIGV4cGVjdGVkIHRvIGJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgaW50ZXJuZXQgdmlhIHNlcnZpY2VzIGxpa2UgTmV0ZmxpeCBhbmQgb3RoZXJzLiBXZSBiZWxpZXZlIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiByZXByZXNlbnRzIGEgbWFqb3IgY2F0YWx5c3QgZm9yIHRoZSBuZXh0IFRWIHJlcGxhY2VtZW50IGN5Y2xlIGFuZCBhIHByb21pc2luZyBtb21lbnQgZm9yIEFwcGxlIHRvIGludHJvZHVjZSBpdHMgZmlyc3QgbmV3IHByb2R1Y3QgaW4gdGhpcyBjYXRlZ29yeS4gUmVlZCBIYXN0aW5ncywgQ0VPIG9mIE5ldGZsaXgsIGhhcyByZWZlcmVuY2VkIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBhcyBhIG1ham9yIGNhdGFseXN0IGZvciBOZXRmbGl4IGdvaW5nIGZvcndhcmQuIFdoaWxlIHRoaXMgaXMgdHJ1ZSBmb3IgTmV0ZmxpeCwgd2UgYmVsaWV2ZSBpdCBpcyBhbHNvIHRydWUgZm9yIEFwcGxlLCBub3QganVzdCBmb3IgaXRzIGhhcmR3YXJlIGJ1dCBhbHNvIGZvciBzZWxsaW5nIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBtb3ZpZXMgYW5kIHNob3dzIG9uIGlUdW5lcyB0aHJvdWdoIHRoZSBpbnRlcm5ldC4gV2l0aCAyMzggbWlsbGlvbiBUVnMgc29sZCBnbG9iYWxseSBpbiAyMDEyLCBpdCB3b3VsZCBub3Qgc3VycHJpc2UgdXMgaWYgQXBwbGUgY291bGQgc2VsbCAyNSBtaWxsaW9uIG5ldyBBcHBsZSB1bHRyYSBoaWdoIGRlZmluaXRpb24gdGVsZXZpc2lvbnMgYXQgJDEsNjAwIHBlciB1bml0LCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgYm90aCBpdHMgdHJhY2sgcmVjb3JkIG9mIGludHJvZHVjaW5nIGJlc3QgaW4gY2xhc3MgcHJvZHVjdHMgYW5kIGl0cyBtYXJrZXQgc2hhcmUgaW4gc21hcnRwaG9uZXMgYW5kIHRhYmxldHMuNCBBdCBhIGdyb3NzIG1hcmdpbiBvZiAzNy43JSwgd2hpY2ggd291bGQgYmUgY29uc2lzdGVudCB3aXRoIHRoYXQgb2YgdGhlIG92ZXJhbGwgY29tcGFueSwgc3VjaCBhIGRlYnV0IHdvdWxkIGFkZCAkNDAgYmlsbGlvbiBvZiByZXZlbnVlcyBhbmQgJDE1IGJpbGxpb24gdG8gb3BlcmF0aW5nIGluY29tZSBhbm51YWxseS41XHJcblRoZSBwb3NzaWJpbGl0eSBvZiBhIHRlbGV2aXNpb24gcmVwcmVzZW50cyBvbmx5IG9uZSBvcHBvcnR1bml0eSBmb3IgdGhlIGNvbXBhbnkgdGhhdCBzdGVtcyBmcm9tIG5ldyBwcm9kdWN0cyBpbiBuZXcgY2F0ZWdvcmllcy4gV2hpbGUgd2Ugd29u4oCZdCBnbyB0aHJvdWdoIGFsbCBvZiB0aGVtIGhlcmUsIHdlIHNlZSBzZXZlcmFsIG1ham9yIG9wcG9ydHVuaXRpZXMgaW4gaGFyZHdhcmUgYWxvbmUuIFdpdGggYWR2YW5jZW1lbnRzIGluIG1pbmlhdHVyaXphdGlvbiBhbmQgY29udGludWVkIGltcHJvdmVtZW50cyBpbiBTaXJpLCBpdCBzZWVtcyBvYnZpb3VzIHRvIHVzIHRoYXQgQXBwbGUgaGFzIGEgY29tcGVsbGluZyBvcHBvcnR1bml0eSBpbiB0aGUgZXhjaXRpbmcgYXJlYSBvZiB3ZWFyYWJsZSBkZXZpY2VzLCBzdXBwb3J0ZWQgYnkgcnVtb3JzIHRoYXQgQXBwbGUgaXMgZGV2ZWxvcGluZyBhIHNtYXJ0d2F0Y2ggKGFzIFRpbSBDb29rIGhpbXNlbGYgc2FpZCB0aGUgd3Jpc3QgaXMg4oCcYW4gYXJlYSBvZiBncmVhdCBpbnRlcmVzdCBmb3IgQXBwbGXigJ0pLiBXaGlsZSBtYW55IGNvbnNpZGVyIEFwcGxlIGEgaGFyZHdhcmUgY29tcGFueSwgdG8gcGlnZW9uaG9sZSBpdCBhcyBzdWNoIGlzIG5vIGxvbmdlciBhcHByb3ByaWF0ZSBpbiBvdXIgb3Bpbmlvbi4gQXBwbGUgaGFzIGJ1aWx0IGFuIGVjb3N5c3RlbSBvZiBoYXJkd2FyZSwgc29mdHdhcmUsIGFuZCBzZXJ2aWNlcyB0aGF0IHdlIGJlbGlldmUgY29sbGVjdGl2ZWx5IHJlcHJlc2VudHMgdGhlIG1vc3Qgc3VjY2Vzc2Z1bCBjb25zdW1lciBwcm9kdWN0IHBsYXRmb3JtIGluIHRoZSBlbnRpcmUgaGlzdG9yeSBvZiBjb25zdW1lci1mYWNpbmcgdGVjaG5vbG9naWVzLiBBbmQgYXMgQXBwbGXigJlzIGN1c3RvbWVyIGJhc2UgY29udGludWVzIHRvIGVuam95IHRoZSB1c2Ugb2YgdGhpcyBlY29zeXN0ZW0sIHN0b3JpbmcgbWVkaWEgaW4gdGhlIGNsb3VkIGFuZCBtb3ZpbmcgaXQgZnJvbSBvbmUgQXBwbGUgZGV2aWNlIHRvIGFub3RoZXIgYXMgZG9pbmcgc28gYmVjb21lcyBpbmNyZWFzaW5nbHkgY29udmVuaWVudCB3aXRoIGlubm92YXRpb25zIHN1Y2ggYXMgQWlycGxheSAoYXMganVzdCBvbmUgc2ltcGxlIGV4YW1wbGUgb2YgdGhpcyBlY29zeXN0ZW3igJlzIGN1cnJlbnQgZnVuY3Rpb25hbGl0eSksIHdlIGJlbGlldmUgdGhhdCBjdXN0b21lciBiYXNlIGdyb3dzIGluY3JlYXNpbmdseSBsb3lhbCBhbmQgZXhjaXRlZCBmb3IgdGhlIG5leHQgQXBwbGUgcHJvZHVjdCByZWxlYXNlLCBtYWtpbmcgaXQgYW4gYXNzZXQgaW4gYW5kIG9mIGl0c2VsZiB0aGF0IGdyb3dzIGFuZCBiZWNvbWVzIGluY3JlYXNpbmdseSB2YWx1YWJsZS4gSW5kZWVkLCB3ZSBiZWxpZXZlIGFueSBuZXcgc29mdHdhcmUgc2VydmljZSB0aGF0IG9mZmVycyBuZXcgZnVuY3Rpb25hbGl0eSB0byB0aGlzIGN1c3RvbWVyIGJhc2UgYmVjb21lcyBhIGxhcmdlIG9wcG9ydHVuaXR5IGZvciBBcHBsZSB0byBpbnRyb2R1Y2UgYXMgYSByZXZvbHV0aW9uYXJ5IGFuZCBkaXNydXB0aXZlIGJvbHQtb24gdG8gdGhlIGVjb3N5c3RlbS4gQXMganVzdCBvbmUgb2YgbWFueSBwb3NzaWJsZSBleGFtcGxlcyBvZiB0aGlzIHBoZW5vbWVub24sIEFwcGxlIGNvdWxkIGludHJvZHVjZSBhIG5leHQgZ2VuZXJhdGlvbiBwYXltZW50cyBzb2x1dGlvbi4gSW4gdGVybXMgb2Ygd2hldGhlciB0aGUgbWFya2V0cGxhY2UgaXMgd2VsbCBhZGRyZXNzZWQgYnkgbW9iaWxlIHBheW1lbnRzIHNvbHV0aW9ucywgVGltIENvb2sgaGFzIHNhaWQg4oCcSSB0aGluayBpdCBpcyBpbiBpdHMgaW5mYW5jeeKApiBJIHRoaW5rIGl0IGlzIGp1c3QgZ2V0dGluZyBzdGFydGVkIGFuZCBqdXN0IG9mIG91dCBvZiB0aGUgc3RhcnRpbmcgYmxvY2su4oCdIFdpdGggdGhlIGZpbmdlcnByaW50IHNlbnNvciwgaUJlYWNvbiwgNTc1KyBtaWxsaW9uIGNyZWRpdCBjYXJkIG51bWJlcnMgc3RvcmVkIGluIGlUdW5lcywgYW5kIEFwcGxl4oCZcyBob21vZ2VuZW91cyBpT1MgaW5zdGFsbGVkIGJhc2Ugd2l0aCA3OSUgb2YgZGV2aWNlcyB1c2luZyBpT1MgNywgd2UgYmVsaWV2ZSBhIHJldm9sdXRpb25hcnkgcGF5bWVudHMgc29sdXRpb24gaXMgbm93IGEgdmVyeSByZWFsIG9wcG9ydHVuaXR5IHRoYXQgdGhlIGNvbXBhbnkgY291bGQgY2hvb3NlIHRvIHB1cnN1ZS4gV2l0aCByZXNwZWN0IHRvIGFsbCBvZiBBcHBsZeKAmXMgbmV3IGFuZCBleGlzdGluZyBvcHBvcnR1bml0aWVzIGZvciBncm93dGgsIHRoZXkgd2lsbCBvbmx5IHByb3ZlIHRvIGJlIHN1Y2Nlc3NmdWwgd2l0aCBzdHJvbmcgZXhlY3V0aW9uIGZyb20gdGhlIGNvbXBhbnnigJlzIG1hbmFnZW1lbnQsIGluIHdob20gd2UgaG9sZCBncmVhdCBjb25maWRlbmNlLiBOYXlzYXllcnMgc2F5IFRpbSBDb29rIGlzIG5vdCBTdGV2ZSBKb2JzLCBhbmQgdGhleeKAmXJlIGFic29sdXRlbHkgcmlnaHQuIEhlIGlzIFRpbSBDb29rIGFuZCB3ZSBiZWxpZXZlIGhlIGlzIGRvaW5nIGFuIGV4Y2VsbGVudCBqb2IsIGFuZCBKb25hdGhhbiBJdmUsIFNlbmlvciBWUCBvZiBEZXNpZ24sIGlzIEpvbmF0aGFuIEl2ZSBhbmQgd2UgYmVsaWV2ZSBoZeKAmXMgZG9pbmcgYW4gZXhjZWxsZW50IGpvYiwgZXRjZXRlcmEuXHJcbkluIHRoaXMgbGV0dGVyLCB3ZSBoYXZlIGFib3ZlIHN1bW1hcml6ZWQgd2h5IHdlIGJlbGlldmUgQXBwbGUgaXMgdW5kZXJ2YWx1ZWQgaW4gb3JkZXIgdG8gZXhwcmVzcyBob3cgcmlkaWN1bG91cyBpdCBzZWVtcyB0byB1cyBmb3IgQXBwbGUgdG8gaG9yZGUgc28gbXVjaCBjYXNoIHJhdGhlciB0aGFuIHJlcHVyY2hhc2Ugc3RvY2sgKGFuZCB0aGVyZWJ5IHVzZSB0aGF0IGNhc2ggdG8gbWFrZSBhIGxhcmdlciBpbnZlc3RtZW50IGluIGl0c2VsZiBmb3IgdGhlIGJlbmVmaXQgb2YgYWxsIG9mIHRoZSBjb21wYW554oCZcyBzaGFyZWhvbGRlcnMpLiBJbiBpdHMgc3RhdGVtZW50IGluIG9wcG9zaXRpb24gdG8gb3VyIHByb3Bvc2FsLCB0aGUgY29tcGFueSBjbGFpbXMgdGhhdCDigJx0aGUgQm9hcmQgYW5kIG1hbmFnZW1lbnQgdGVhbSBoYXZlIGRlbW9uc3RyYXRlZCBhIHN0cm9uZyBjb21taXRtZW50IHRvIHJldHVybmluZyBjYXBpdGFsIHRvIHNoYXJlaG9sZGVyc+KAnSBhbmQgd2UgYmVsaWV2ZSB0aGF0IGlzIHRydWUsIGJ1dCB3ZSBhbHNvIGJlbGlldmUgdGhhdCBjb21taXRtZW50IGlzIG5vdCBzdHJvbmcgZW5vdWdoIGdpdmVuIHRoZSB1bmlxdWUgZGVncmVlIHRvIHdoaWNoIHRoZSBjb21wYW55IGlzIGJvdGggdW5kZXJ2YWx1ZWQgYW5kIG92ZXJjYXBpdGFsaXplZC4gRnVydGhlcm1vcmUsIGl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgYSBzaGFyZSByZXB1cmNoYXNlIGlzIG5vdCBzaW1wbHkgYW4gYWN0IG9mIOKAnHJldHVybmluZyBjYXBpdGFsIHRvIHNoYXJlaG9sZGVyc+KAnSBzaW5jZSBpdCBpcyBhbHNvIHRoZSBjb21wYW55IGVmZmVjdGl2ZWx5IG1ha2luZyBhbiBpbnZlc3RtZW50IGluIGl0c2VsZi4gVG8gdXMsIGFzIGxvbmcgdGVybSBpbnZlc3RvcnMsIHRoaXMgaXMgYW4gaW1wb3J0YW50IGRpZmZlcmVuY2U6IGEgZGl2aWRlbmQgaXMgYSBwdXJlIHJldHVybiBvZiBjYXBpdGFsIHdoaWxlIGEgc2hhcmUgcmVwdXJjaGFzZSBpcyB0aGUgY29tcGFueSBtYWtpbmcgYW4gaW52ZXN0bWVudCBpbiBpdHNlbGYgYnkgYnV5aW5nIHNoYXJlcyBpbiB0aGUgbWFya2V0IGF0IHRoZSBjdXJyZW50IHByaWNlLCB3aGljaCB3ZSBiZWxpZXZlIHRvIGJlIHVuZGVydmFsdWVkLCBmcm9tIHNoYXJlaG9sZGVycyB3aWxsaW5nIHRvIHNlbGwgYXQgdGhhdCBwcmljZSBmb3IgdGhlIGJlbmVmaXQgb2Ygc2hhcmVob2xkZXJzIHdobyBjaG9vc2UgdG8gcmVtYWluIGludmVzdG9ycyBmb3IgdGhlIGxvbmdlciB0ZXJtLiBBbmQgd2UgYXJlIGxvbmcgdGVybSBpbnZlc3RvcnMuIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG5vIG9uZSBvbiB0aGUgQm9hcmQgc2VlbXMgdG8gYmUgYW4gZXhwZXJ0IGluIHRoZSB3b3JsZCBvZiBpbnZlc3RtZW50IG1hbmFnZW1lbnQuIEhvd2V2ZXIsIGJhc2VkIG9uIG91ciByZWNvcmQsIHdlIGJlbGlldmUgZmV3IHdpbGwgYXJndWUgdGhhdCB3ZSBhcmUgZXhwZXJ0cyBpbiB0aGlzIGFyZWEsIGFuZCB3ZSBoYXZlIG5vIGRvdWJ0cyB0aGF0IHRoZSBCb2FyZCBpcyBkb2luZyBhIGdyZWF0IGRpc3NlcnZpY2UgdG8gaXRzIHNoYXJlaG9sZGVycyBieSBub3QgaW1tZWRpYXRlbHkgaW5jcmVhc2luZyB0aGUgc2l6ZSBvZiB0aGUgc2hhcmUgcmVwdXJjaGFzZSBwcm9ncmFtIGluIG9yZGVyIHRvIG1vcmUgZWZmZWN0aXZlbHkgdGFrZSBhZHZhbnRhZ2Ugb2Ygd2hhdCB3ZSBiZWxpZXZlIHRvIGJlIHRoZSBjb21wYW554oCZcyBsb3cgbWFya2V0IHZhbHVhdGlvbi5cclxuV2UgaGF2ZSBleHByZXNzZWQgYWJvdmUgd2hhdCB3ZSBiZWxpZXZlIHRvIGJlIHRoZSBjb21wYW554oCZcyBwcmltYXJ5IHJlYXNvbiBmb3Igbm90IHN1cHBvcnRpbmcgb3VyIHByb3Bvc2FsLiBDb252ZXJzZWx5LCBpdCBpcyBvdXIgYmVsaWVmIHRoYXQgQXBwbGXigJlzIGN1cnJlbnQgZXhjZXNzIGxpcXVpZGl0eSBpcyB3aXRob3V0IGhpc3RvcmljYWwgcHJlY2VkZW50IGFuZCBiZXlvbmQgcmVhc29uYWJsZSBjb21wYXJpc29uIHRvIGl0cyBwZWVycyBvciBvdGhlcndpc2UsIGFuZCBzdWNoIGRyYW1hdGljIG92ZXJjYXBpdGFsaXphdGlvbiBhZmZvcmRzIHRoZSBjb21wYW55IGVub3VnaCBleGNlc3MgbGlxdWlkaXR5IHRvIHJlcHVyY2hhc2UgdGhlIGFtb3VudCBvZiBzaGFyZXMgd2UgcHJvcG9zZWQuIEFwcGxl4oCZcyBleGlzdGluZyBjYXBpdGFsIHJldHVybiBwcm9ncmFtIGhhcyBqdXN0ICQzNyBiaWxsaW9uIHJlbWFpbmluZywgYW5kIHRoZSBjb21wYW55IGhhcyB1bnRpbCB0aGUgZW5kIG9mIDIwMTUgdG8gY29tcGxldGUgaXQuIFdpdGhvdXQgYW55IGNoYW5nZXMgdG8gdGhlIHByb2dyYW0sIHRoZSBsYXJnZXN0IHBpbGUgb2YgY29ycG9yYXRlIGNhc2ggaW4gdGhlIHdvcmxkIGlzIGxpa2VseSB0byBncm93IGV2ZW4gbGFyZ2VyLCBhbmQgaWYgdGhlIHNoYXJlIHByaWNlIHJpc2VzLCB0aGlzIEJvYXJkIHdpbGwgaGF2ZSBtaXNzZWQgYSBncmVhdCBvcHBvcnR1bml0eSB0byB1c2UgbW9yZSBvZiB0aGF0IGhvYXJkZWQgY2FzaCB0byByZXB1cmNoYXNlIHNoYXJlcyBhdCBhbiBhdHRyYWN0aXZlIHZhbHVlLiBXaGlsZSBpdCBpcyBpbXBvcnRhbnQgZm9yIHRoZSBCb2FyZCB0byBmb2N1cyBvbiB0aGUgcmV0dXJuIG9mIGNhcGl0YWwgb24gYSBzdXN0YWluZWQgYmFzaXMsIGl0IGlzIGFsc28gaW1wb3J0YW50IGZvciB0aGUgQm9hcmQgdG8gZXZhbHVhdGUgd2hldGhlciBvciBub3QgaXRzIHNoYXJlIHByaWNlIGlzIHVuZGVydmFsdWVkIGFuZCB0byB0YWtlIGFkdmFudGFnZSBvZiBpdCB3aXRoIHNoYXJlIHJlcHVyY2hhc2VzLCBlc3BlY2lhbGx5IHdoZW4gdGhlIGJhbGFuY2Ugc2hlZXQgZXhoaWJpdHMgZHJhbWF0aWMgZXhjZXNzIGxpcXVpZGl0eSwgYXMgd2UgYmVsaWV2ZSBBcHBsZeKAmXMgZG9lcyB0b2RheS5cclxuVGhlIEJvYXJkIG1heSBhcmd1ZSB0aGF0IHdpdGggc28gbXVjaCBvcHBvcnR1bml0eSwgaXQgd291bGQgYmUgcHJ1ZGVudCB0byBtYWludGFpbiBpdHMgZXhjZXNzIGxpcXVpZGl0eSB0byBpbmNyZWFzZSBSIG9yIG1ha2UgYWNxdWlzaXRpb25zLCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgdGhlIGZpbmFuY2lhbCBzdHJlbmd0aCBvZiBpdHMgY29tcGV0aXRvcnMuIFdlIGNvbXBsZXRlbHkgYWdyZWUgdGhhdCB0aGUgY29tcGFueSBtdXN0IGlubm92YXRlIGFuZCBzaG91bGQgYmUgZmxleGlibGUgdG8gbWFrZSBwcnVkZW50IHN0cmF0ZWdpYyBhY3F1aXNpdGlvbnMsIHlldCBldmVuIGFmdGVyIHRha2luZyBzdWNoIGZhY3RvcnMgaW50byBhY2NvdW50LCB3ZSBiZWxpZXZlIHRoYXQgdHJlbWVuZG91cyBleGNlc3MgbGlxdWlkaXR5IHJlbWFpbnMuIFdpdGggcmVzcGVjdCB0byBwb3NzaWJsZSBNICh0byB3aGljaCB0aGUgY29tcGFueSBkb2VzIG5vdCByZWZlciBpbiBpdHMgc3RhdGVtZW50KSwgZm9yIHRoZSBvcHBvcnR1bml0aWVzIGhpZ2hsaWdodGVkIGFib3ZlIChhIFRWLCBhIHdhdGNoLCBhIHBheW1lbnQgc2VydmljZSksIHdlIGZpbmQgaXQgZXh0cmVtZWx5IGRpZmZpY3VsdCB0byBpZGVudGlmeSBhbnkgcG9zc2libGUgc3RyYXRlZ2ljIGFjcXVpc2l0aW9ucyBvZiBzY2FsZSB0aGF0IG1ha2Ugc2Vuc2UuIEZ1cnRoZXJtb3JlLCBzdWNoIGFjdGlvbiB3b3VsZCBzZWVtIHRvIGNvbmZsaWN0IHdpdGggQXBwbGXigJlzIGN1bHR1cmUgaGlzdG9yaWNhbGx5LiBBIHJlbWFya2FibGUgZmFjdCBpcyB0aGF0IHNpbmNlIHRoZSBCb2FyZCByZWFjcXVpcmVkIFN0ZXZlIEpvYnMgdGhyb3VnaCB0aGUgTmVYVCBhY3F1aXNpdGlvbiBmb3IgJDQyNyBtaWxsaW9uIGluIDE5OTcsIHRoZSBuZXh0IGxhcmdlc3QgYWNxdWlzaXRpb24gQXBwbGUgbWFkZSB3YXMgJDIuNiBiaWxsaW9uIGZvciBOb3J0ZWzigJlzIHBhdGVudCBwb3J0Zm9saW8uIEFtYXppbmdseSwgb3ZlciB0aGVzZSAxNyB5ZWFycywgQXBwbGUgbWFkZSBqdXN0ICQ3LjggYmlsbGlvbiB3b3J0aCBvZiBhY3F1aXNpdGlvbnMgaW4gdG90YWwgZHVyaW5nIHRoaXMgdGltZWZyYW1lLiBBcHBsZSBjbGVhcmx5IGhhcyBhIGxvbmcgaGlzdG9yeSBhbmQgY3VsdHVyZSBvZiBkZXZlbG9waW5nIGl0cyBpbm5vdmF0aW9uIGludGVybmFsbHksIHdoaWNoIGxlYWRzIHVzIHRvIGJlbGlldmUgdGhhdCB0aGUgY29tcGFueSB3aWxsIG5vdCBzZWVrIG91dCBsYXJnZSBhY3F1aXNpdGlvbnMgdG8gcHVyc3VlIGFueSBvZiB0aGUgb3Bwb3J0dW5pdGllcyBhYm91dCB3aGljaCB3ZSBoYXZlIHNwZWN1bGF0ZWQuIEluIHRlcm1zIG9mIHBheWluZyBmb3IgdGhlIG5lY2Vzc2FyeSBpbm5vdmF0aW9uIGludGVybmFsbHksIEFwcGxlIGlzIGV4cGVjdGVkIHRvIGdlbmVyYXRlICQ0MCBiaWxsaW9uIG9mIGVhcm5pbmdzIG5leHQgeWVhciwgd2hpY2ggYWxyZWFkeSB0YWtlcyBpbnRvIGFjY291bnQgYW4gaW5jcmVhc2luZyBSIGV4cGVuc2UuIEluIG9yZGVyIHRvIGFkZHJlc3MgdGhlIGFyZ3VtZW50IHRoYXQgQXBwbGUgc2hvdWxkIHJlc2VydmUgZXhjZXNzIGxpcXVpZGl0eSB0byBtb3JlIGVmZmVjdGl2ZWx5IGNvbXBldGUgd2l0aCBzb21lIG9mIGl0cyBkZWVwLXBvY2tldGVkIGNvbXBldGl0b3JzLCB0aGVyZSBpcyBubyBkb3VidCB0aGF0IHNvbWUgb2YgdGhlbSBhbHNvIGhhdmUgc2lnbmlmaWNhbnQgZWFybmluZ3MgYW5kIG5ldCBjYXNoIG9uIHRoZWlyIGJhbGFuY2Ugc2hlZXRzICh3aGV0aGVyIG9yIG5vdCB0aGF0IGlzIGFwcHJvcHJpYXRlKS4gQnV0IEFwcGxlIGhhcyBtdWNoIG1vcmUuIFdoZW4gY29tcGFyZWQgdG8gaXRzIG5leHQgbGFyZ2VzdCBjb21wZXRpdG9yLCBNaWNyb3NvZnQsIGZvciBleGFtcGxlLCBBcHBsZSBoYXMgJDY4IGJpbGxpb24gbW9yZSBuZXQgY2FzaCBhbmQgaXMgZXhwZWN0ZWQgdG8gZ2VuZXJhdGUgJDE4IGJpbGxpb24gbW9yZSBpbiBlYXJuaW5ncyBkdXJpbmcgMjAxNC5cclxuVGhlIEJvYXJkIG1heSBhcmd1ZSB0aGF0IG11Y2ggb2YgaXRzIGNhc2ggYW5kIGVhcm5pbmdzIGFyZSBpbnRlcm5hdGlvbmFsIGFuZCB0aGVyZWZvcmUgc3ViamVjdCB0byBhIHJlcGF0cmlhdGlvbiB0YXggaWYgcmV0dXJuZWQgdG8gdGhlIFVuaXRlZCBTdGF0ZXMgdG8gcmVwdXJjaGFzZSBzaGFyZXMuIFdoaWxlIHRoaXMgaXMgdHJ1ZSwgd2UgcXVlc3Rpb24gd2h5IHRoZSBjb21wYW55IHdvdWxkIG5vdCBzaW1wbHkgYm9ycm93IHRoZSBtb25leSBpbiB0aGUgVW5pdGVzIFN0YXRlcyB0byB0aGUgZXh0ZW50IGl0IGRlZW1zIGl0cyBkb21lc3RpYyBjYXNoIG9mICQzNiBiaWxsaW9uIGFuZCBkb21lc3RpYyBlYXJuaW5ncyBhcmUgaW5zdWZmaWNpZW50LiBHaXZlbiB0aGF0IHRoZSBjb21wYW55IGhhcyAkMTMwIGJpbGxpb24gb2YgbmV0IGNhc2ggYW5kICQ0MCBiaWxsaW9uIG9mIGV4cGVjdGVkIGFubnVhbCBlYXJuaW5ncywgYW5kIHRoZSBmYWN0IHRoYXQgaXQgaXMgaGFyZCB0byBmaW5kIGEgYmV0dGVyIHRpbWUgaW4gaGlzdG9yeSB0byBib3Jyb3cgbW9uZXksIGEgJDUwIGJpbGxpb24gc2hhcmUgcmVwdXJjaGFzZSBvdmVyIHRoZSBjb3Vyc2Ugb2YgZmlzY2FsIHllYXIgMjAxNCBzZWVtcyBtb3JlIHRoYW4gcmVhc29uYWJsZSB0byB1cy4gVG9kYXksIEFwcGxl4oCZcyBvdXRzdGFuZGluZyB0ZW4geWVhciBib25kcyB5aWVsZCAzLjYzJSwgYW5kIGl0cyBmaXZlIHllYXIgYm9uZHMgeWllbGQgMiUuIEFwcGxlIGNvdWxkIGVpdGhlciBjb250aW51ZSB0byBjYXJyeSB0aGlzIGRlYnQsIHJlcGF5IGl0IGZyb20gaXRzIGRvbWVzdGljIGVhcm5pbmdzIG92ZXIgdGltZSwgb3IgcmVwYXRyaWF0ZSBjYXNoIGZyb20gYWJyb2FkIHVwb24gdGhlIHBhc3NhZ2Ugb2YgY29ycG9yYXRlIHRheCByZWZvcm0uXHJcblRoZSBjb21wYW55IGhhcyBzdGF0ZWQgdGhhdCBpdCBpcyDigJx1cGRhdGluZyBwZXJzcGVjdGl2ZXMgb24gaXRzIGNhcGl0YWwgcmV0dXJuIHByb2dyYW0gZm9yIDIwMTQgYW5kIGJleW9uZOKAnSBhbmQg4oCcY29sbGVjdGluZyBpbnB1dCBmcm9tIGEgdmVyeSBicm9hZCBiYXNlIG9mIHNoYXJlaG9sZGVycy7igJ0gV2UgYmVsaWV2ZSwgaWYgb3VyIHByb3Bvc2FsIHJlY2VpdmVzIG1ham9yaXR5IHNoYXJlaG9sZGVyIHN1cHBvcnQsIHRoYXQgdGhlIEJvYXJkIHNob3VsZCByZXNwZWN0IGl0IGFuZCBpbmNyZWFzZSB0aGUgcmVwdXJjaGFzZSBwcm9ncmFtIGFzIHJlcXVlc3RlZC4gV2UgYmVsaWV2ZSB0aGlzIGFjdGlvbiB3aWxsIGdyZWF0bHkgZW5oYW5jZSB2YWx1ZSBmb3IgYWxsIGxvbmcgdGVybSBzaGFyZWhvbGRlcnMgd2hvIGJlbGlldmUsIGFzIHdlIGRvLCBpbiB0aGUgZ3JlYXQgcG90ZW50aWFsIG9mIHRoaXMgY29tcGFueS4gSWYgdGhlIEJvYXJkIHRha2VzIHRoaXMgYWN0aW9uLCB3ZSB3aWxsIGFwcGxhdWQgdGhlbSBmb3IgdGFraW5nIGFkdmFudGFnZSBvZiBvbmUgb2YgdGhlIGdyZWF0ZXN0IGV4YW1wbGVzIG9mIGEg4oCcbm8gYnJhaW5lcuKAnSB3ZSBoYXZlIHNlZW4gaW4gZml2ZSBkZWNhZGVzIG9mIHN1Y2Nlc3NmdWwgaW52ZXN0aW5nLlxyXG5TaW5jZXJlbHkgeW91cnMsXHJcbkNhcmwgQy4gSWNhaG4iLAogICJlbnRpdGllcyI6IFt7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkNhcmwgSWNhaG4gQnV5cyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjQKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC42NAogICAgfSwKICAgICJ0eXBlIjogIlBlcnNvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA1MzI4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiR29vZ2xlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY3CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC42NwogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA5ODk0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiU2lyaSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgfSwKICAgICJ0eXBlIjogIkxvY2F0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDQ2NSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkJvdWdodCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNwogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjcKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNjAxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQ2FybCBJY2FobiIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJDYXJsIEljYWhuIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJDYXJsIEljYWhuIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41OQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjYKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvQ2FybF9JY2FobiIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvUGVyc29uIl0sCiAgICAgICJjb25maWRlbmNlIjogMC4wMQogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNzM5MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40NwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA2ODEzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiVGltIENvb2siLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTAwNjcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaW0gQ29vayIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTIwMzQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaW0gQ29vayIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTQ0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTk3MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmVnYXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40NQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTM1MSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NwogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL1RpbV9Db29rIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9QZXJzb24iXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAxCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA4ODEzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiUmVlZCBIYXN0aW5ncyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDgKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC40OAogICAgfSwKICAgICJ0eXBlIjogIlBlcnNvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9SZWVkX0hhc3RpbmdzIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9QZXJzb24iXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDU5MTgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDU1OTMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc1CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDYwMTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc1CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDcyMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU0CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzcKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTYyNywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk1pbmkiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTUzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiTmV0ZmxpeCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC41NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNTQKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvTmV0ZmxpeCIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTMKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDEyMTMwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSm9uYXRoYW4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEyMDkyLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSm9uYXRoYW4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTczMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJVbml0ZXMgU3RhdGVzIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmVnYXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41MgogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogIm5lZ2F0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNzczLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSWNhaG4gRW50ZXJwcmlzZXMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvSWNhaG5fRW50ZXJwcmlzZXMiLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0NvbXBhbnkiXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDExMTUsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaGUgUyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzMKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43MwogICAgfSwKICAgICJ0eXBlIjogIlByb2R1Y3QiLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTkwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiRm9yZXN0IExhYnMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ3CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNDcKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNDk3NCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIklEQyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjUKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTA4NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogImlUdW5lcyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE1NTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpVHVuZXMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ5CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNDkKICAgIH0sCiAgICAidHlwZSI6ICJMb2NhdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA4ODM1LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiTmV0ZmxpeCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODkwNSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5ldGZsaXgiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDk1MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5ldGZsaXgiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODYxMiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5ldGZsaXgiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUzCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDg5NTEsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJOZXRmbGl4IiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDE0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlR3aXR0ZXIiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTMKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjUzCiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTA2NzgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBaXJwbGF5IiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTU5MjQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJOZVhUIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40OQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjQ5CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDY3MiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkRlYXIgRmVsbG93IEFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NgogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc2CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDgzNDYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJTYW1zdW5nIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41MwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA1MzM2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiU2Ftc3VuZyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvU2Ftc3VuZyIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vc2NoZW1hLm9yZy9Pcmdhbml6YXRpb24iLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0NvbXBhbnkiLCAiaHR0cDovL3d3dy53aWtpZGF0YS5vcmcvZW50aXR5L1E0MzIyOSIsICJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQWdlbnQiLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L09yZ2FuaXNhdGlvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTgKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDM3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUsIFJlbGVhc2VzIE9wZW4gTGV0dGVyIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ5CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC40OQogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA5NjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJIYWluIENlbGVzdGlhbCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC40NQogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9IYWluX0NlbGVzdGlhbF9Hcm91cCIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMAogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTc4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQ2hlc2FwZWFrZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTEKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC41MQogICAgfSwKICAgICJ0eXBlIjogIkxvY2F0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0NoZXNhcGVha2VfQmF5IiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9SaXZlciJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTgKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDExOTg2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiU3RldmUgSm9icyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5lZ2F0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTMKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTU5MDEsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJTdGV2ZSBKb2JzIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NwogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY3CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL1N0ZXZlX0pvYnMiLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L1BlcnNvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMDcKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDMxMjksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJTYWlkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDE3MDc4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiVGhlIEJvYXJkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTUwNzQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaGUgQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC43CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDUzNjcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJDaGluZXNlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC43MwogICAgfSwKICAgICJ0eXBlIjogIkxvY2F0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0NoaW5hIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9Db3VudHJ5Il0sCiAgICAgICJjb25maWRlbmNlIjogNi45MgogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogODM0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlNhbXN1bmcgRWxlY3Ryb25pY3MiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNjgKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvU2Ftc3VuZyIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vc2NoZW1hLm9yZy9Pcmdhbml6YXRpb24iLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0NvbXBhbnkiLCAiaHR0cDovL3d3dy53aWtpZGF0YS5vcmcvZW50aXR5L1E0MzIyOSIsICJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQWdlbnQiLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L09yZ2FuaXNhdGlvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTgKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDM3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTIKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDk5MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA3MTA0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDQ0NTcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjYKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTQwNzcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzMKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTc3MzMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzYKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE3MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTg5LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEwMTMzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE2NjI0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTIKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTA4MzgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNTE5OSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAzMjUsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNjE4NSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNDMzMSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE2NDYzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc2CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE1MDUzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDExNzgwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDUwNzAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTEyMDgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC41MgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNjA4NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjM5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDU0ODYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTYKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDI3NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43MgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNTA4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDU2NTAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTEwOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43MwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA3MjIwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDQ3MjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODc1NCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA5MTg4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTAxNjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNjg0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDYzMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTAyNTQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogOTkyOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMDU4NSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNjE3MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42MwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA2NzUxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMjgxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEwMDMwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTk5LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE2OTcxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTIzMjksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNzc4NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNTk5NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU0CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDY2NzYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE1NjgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5lZ2F0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogOTIyMCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjM4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE3ODE1LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc1CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEyMjU0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDM3NCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNTgxOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTA3MSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNjg4MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUxCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDI2NjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEwNDY3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDg5OTEsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0FwcGxlX0luYy4iLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL3NjaGVtYS5vcmcvT3JnYW5pemF0aW9uIiwgImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9Db21wYW55IiwgImh0dHA6Ly93d3cud2lraWRhdGEub3JnL2VudGl0eS9RNDMyMjkiLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0FnZW50IiwgImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9PcmdhbmlzYXRpb24iXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjU3CiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA2MDY4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiVW5pdGVkIFN0YXRlcyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTcyMTQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJVbml0ZWQgU3RhdGVzIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTIwOTIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJKb25hdGhhbiBJdmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjkKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY5CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0pvbmF0aGFuX0l2ZSIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vd3d3Lndpa2lkYXRhLm9yZy9lbnRpdHkvUTUiLCAiaHR0cDovL3d3dy53aWtpZGF0YS5vcmcvZW50aXR5L1EyMTU2MjciLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0FnZW50IiwgImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9QZXJzb24iLCAiaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uIiwgImh0dHA6Ly94bWxucy5jb20vZm9hZi8wLjEvUGVyc29uIl0sCiAgICAgICJjb25maWRlbmNlIjogMC4wCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxNTA3OCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkJvYXJkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTM1MTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTcwODIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTQ4NTMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC40NwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMjU4MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkJvYXJkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAzNTU1LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY2CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE0NzYyLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU2CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE1ODg0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE4MjMxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE0NjExLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE4NDU2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDQwMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTMKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTM3MDQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjIKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA2MTMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJAQ2FybF9DX0ljYWhuIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjYzCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC42MwogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA3NjAwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQ3VwZXJ0aW5vIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42OAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvQ3VwZXJ0aW5vLF9DYWxpZm9ybmlhIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9DaXR5Il0sCiAgICAgICJjb25maWRlbmNlIjogMC4wMwogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTYwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQUFQTCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTEKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDkyLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQUFQTCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzIKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43MgogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxNjAyOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5vcnRlbCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzQKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9Ob3J0ZWwiLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0NvbXBhbnkiXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAzCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxMDA2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSGVyYmFsaWZlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41NQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjU1CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0hlcmJhbGlmZSIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMDEKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDU5OTcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJOREMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzcKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTk5LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAi4oCUIENhcmwgSWNhaG4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY1CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDU2MTQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJJcGFkIEFpciIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjQKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC42NAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxODY0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkNhcmwgQy4gSWNhaG4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjMKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjYzCiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0NhcmxfSWNhaG4iLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L1BlcnNvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMDEKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDE2OTQ3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiTWljcm9zb2Z0IiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUzCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDUzNDUsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJNaWNyb3NvZnQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzMKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvTWljcm9zb2Z0IiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9Db21wYW55Il0sCiAgICAgICJjb25maWRlbmNlIjogMS4zCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxNDYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUd2l0dGVyIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC40OAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9Ud2l0dGVyIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9Db21wYW55Il0sCiAgICAgICJjb25maWRlbmNlIjogMC42OAogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTYwNywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIjVjIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDUzNTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBbWF6b24iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc2CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzYKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTE1MDQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpQmVhY29uIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40OAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjQ4CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfV0KfQ==
45
+ http_version:
46
+ recorded_at: Thu, 31 May 2018 11:03:08 GMT
47
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,92 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.aylien.com/api/v1/elsa
6
+ body:
7
+ encoding: US-ASCII
8
+ string: text=Barack+Hussein+Obama+II+is+the+44th+and+current%0A++++++President+of+the+United+States%2C+and+the+first%0A++++++African+American+to+hold+the+office.
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Aylien Text API Ruby Gem 0.7.0
16
+ Content-Type:
17
+ - application/x-www-form-urlencoded
18
+ X-Aylien-Textapi-Application-Id:
19
+ - "<PASSWORD>"
20
+ X-Aylien-Textapi-Application-Key:
21
+ - "<PASSWORD>"
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: ''
26
+ headers:
27
+ Server:
28
+ - openresty/1.13.6.1
29
+ Date:
30
+ - Thu, 31 May 2018 11:03:09 GMT
31
+ Content-Type:
32
+ - application/json;charset=UTF-8
33
+ Content-Length:
34
+ - '1364'
35
+ Access-Control-Allow-Origin:
36
+ - "*"
37
+ Via:
38
+ - 1.1 google
39
+ Alt-Svc:
40
+ - clear
41
+ body:
42
+ encoding: UTF-8
43
+ string: |-
44
+ {
45
+ "text": "Barack Hussein Obama II is the 44th and current\n President of the United States, and the first\n African American to hold the office.",
46
+ "entities": [{
47
+ "mentions": [{
48
+ "offset": 71,
49
+ "confidence": 1.0,
50
+ "text": "United States",
51
+ "sentiment": {
52
+ "polarity": "neutral",
53
+ "confidence": 0.48
54
+ }
55
+ }],
56
+ "overall_sentiment": {
57
+ "polarity": "neutral",
58
+ "confidence": 0.48
59
+ },
60
+ "type": "Location",
61
+ "links": [{
62
+ "uri": "http://dbpedia.org/resource/United_States",
63
+ "provider": "dbpedia",
64
+ "types": ["http://dbpedia.org/ontology/Country"],
65
+ "confidence": 28.15
66
+ }]
67
+ }, {
68
+ "mentions": [{
69
+ "offset": 0,
70
+ "confidence": 1.0,
71
+ "text": "Barack Hussein Obama II",
72
+ "sentiment": {
73
+ "polarity": "positive",
74
+ "confidence": 0.56
75
+ }
76
+ }],
77
+ "overall_sentiment": {
78
+ "polarity": "positive",
79
+ "confidence": 0.56
80
+ },
81
+ "type": "Person",
82
+ "links": [{
83
+ "uri": "http://dbpedia.org/resource/Barack_Obama",
84
+ "provider": "dbpedia",
85
+ "types": ["http://dbpedia.org/ontology/Agent", "http://www.wikidata.org/entity/Q215627", "http://www.wikidata.org/entity/Q5", "http://schema.org/Person", "http://dbpedia.org/ontology/Person", "http://xmlns.com/foaf/0.1/Person"],
86
+ "confidence": 0.91
87
+ }]
88
+ }]
89
+ }
90
+ http_version:
91
+ recorded_at: Thu, 31 May 2018 11:03:09 GMT
92
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,53 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.aylien.com/api/v1/elsa
6
+ body:
7
+ encoding: US-ASCII
8
+ string: url=http%3A%2F%2Fwww.businessinsider.com%2Fcarl-icahn-open-letter-to-apple-2014-1
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Aylien Text API Ruby Gem 0.7.0
16
+ Content-Type:
17
+ - application/x-www-form-urlencoded
18
+ X-Aylien-Textapi-Application-Id:
19
+ - "<PASSWORD>"
20
+ X-Aylien-Textapi-Application-Key:
21
+ - "<PASSWORD>"
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: ''
26
+ headers:
27
+ Server:
28
+ - openresty/1.13.6.1
29
+ Date:
30
+ - Thu, 31 May 2018 11:03:14 GMT
31
+ Content-Type:
32
+ - application/json;charset=UTF-8
33
+ Content-Length:
34
+ - '54190'
35
+ X-Ratelimit-Limit:
36
+ - '400000'
37
+ X-Ratelimit-Remaining:
38
+ - '399994'
39
+ X-Ratelimit-Reset:
40
+ - '1527811200'
41
+ Access-Control-Allow-Origin:
42
+ - "*"
43
+ Via:
44
+ - 1.1 google
45
+ Alt-Svc:
46
+ - clear
47
+ body:
48
+ encoding: ASCII-8BIT
49
+ string: !binary |-
50
+ ewogICJ0ZXh0IjogIkNhcmwgSWNhaG4gQnV5cyAkNTAwIE1pbGxpb24gTU9SRSBPZiBBcHBsZSwgUmVsZWFzZXMgT3BlbiBMZXR0ZXIgVG8gVGhlIENvbXBhbnlcbkNhcmwgSWNhaG4gY29udGludWVkIGhpcyBhc3NhdWx0IG9uIEFwcGxlIHRvZGF5LlxyXG5IZSBhbm5vdW5jZWQgb24gVHdpdHRlciB0aGF0IGhlIGJvdWdodCBhbm90aGVyICQ1MDAgbWlsbGlvbiB3b3J0aCBvZiBBcHBsZSBzdG9jaywgYnJpbmdpbmcgaGlzIHRvdGFsIHRvICQzLjYgYmlsbGlvbi5cclxuSGUgYWxzbyB3cm90ZSBhbiBvcGVuIGxldHRlciB0byBBcHBsZSBzaGFyZWhvbGRlcnMgZXhwbGFpbmluZyB3aHkgaGUgdGhpbmtzIEFwcGxlIG5lZWRzIHRvIHJhbXAgdXAgaXRzIHNoYXJlIGJ1eWJhY2tzLiBIZSBiZWxpZXZlcyBhIHNoYXJlIGJ1eWJhY2sgd291bGQgZWFzaWx5IGdvb3NlIHRoZSBjb21wYW55J3Mgc2hhcmUgcHJpY2UuwqBcclxuSGVyZSdzIHRoZSB0d2VldDpcclxuXHJcbkJvdWdodCBhbm90aGVyICQ1MDBtaWwgb2YgJEFBUEwgdGRheSwgYnJpbmdpbmcgb3VyIHRvdGFsIHRvICQzLjYgYmlsbGlvbi4gSWYgYm9hcmQgZG9lc27igJl0IHNlZSBBQVBM4oCZcyDigJhubyBicmFpbmVy4oCZIHZhbHVlIHdlIHN1cmUgZG8uXHJcbuKAlCBDYXJsIEljYWhuIChAQ2FybF9DX0ljYWhuKSBKYW51YXJ5IDIzLCAyMDE0XHJcblxyXG5BbmQgaGVyZSdzIHRoZSBsZXR0ZXI6XHJcbkRlYXIgRmVsbG93IEFwcGxlIFNoYXJlaG9sZGVycyxcclxuT3ZlciB0aGUgY291cnNlIG9mIG15IGxvbmcgY2FyZWVyIGFzIGFuIGludmVzdG9yIGFuZCBhcyBDaGFpcm1hbiBvZiBJY2FobiBFbnRlcnByaXNlcywgb3VyIGJlc3QgcGVyZm9ybWluZyBpbnZlc3RtZW50cyByZXN1bHQgZnJvbSBvcHBvcnR1bml0aWVzIHRoYXQgd2UgbGlrZSB0byBjYWxsIFwibm8gYnJhaW5lcnMuXCIgUmVjZW50IGV4YW1wbGVzIG9mIHN1Y2gg4oCcbm8gYnJhaW5lcnPigJ0gaGF2ZSBiZWVuIG91ciBpbnZlc3RtZW50cyBpbiBOZXRmbGl4LCBIYWluIENlbGVzdGlhbCwgQ2hlc2FwZWFrZSwgRm9yZXN0IExhYnMgYW5kIEhlcmJhbGlmZSwganVzdCB0byBuYW1lIGEgZmV3LiBJbiBvdXIgb3BpbmlvbiwgYSBncmVhdCBleGFtcGxlIG9mIGEg4oCcbm8gYnJhaW5lcuKAnSBpbiB0b2RheeKAmXMgbWFya2V0IGlzIEFwcGxlLiBUaGUgUyA1MDDigJlzIHByaWNlIHRvIGVhcm5pbmdzIG11bHRpcGxlIGlzIDcxJSBoaWdoZXIgdGhhbiBBcHBsZeKAmXMsIGFuZCBpZiBBcHBsZSB3ZXJlIHNpbXBseSB2YWx1ZWQgYXQgdGhlIHNhbWUgbXVsdGlwbGUsIGl0cyBzaGFyZSBwcmljZSB3b3VsZCBiZSAkODQwLCB3aGljaCBpcyA1MiUgaGlnaGVyIHRoYW4gaXRzIGN1cnJlbnQgcHJpY2UuMSBUaGlzIGlzIGEgZHJhbWF0aWMgdmFsdWF0aW9uIGRpc2Nvbm5lY3QgdGhhdCBzaW1wbHkgbWFrZXMgbm8gc2Vuc2UgdG8gdXMsIGFuZCBpdCBzZWVtcyB0aGF0IHRoZSBjb21wYW55IGFncmVlcyB3aXRoIHVzIG9uIHRoaXMgcG9pbnQuIFRpbSBDb29rIGhpbXNlbGYgaGFzIGV4cHJlc3NlZCBvbiBtb3JlIHRoYW4gb25lIG9jY2FzaW9uIHRoYXQgQXBwbGUgaXMgdW5kZXJ2YWx1ZWQsIGFuZCBhcyB0aGUgY29tcGFueSBzdGF0ZXMsIGl0IGFscmVhZHkgaGFzIGluIHBsYWNlIOKAnHRoZSBsYXJnZXN0IHNoYXJlIHJlcHVyY2hhc2UgYXV0aG9yaXphdGlvbiBpbiBoaXN0b3J5LuKAnSBXZSBiZWxpZXZlLCBob3dldmVyLCB0aGF0IHRoaXMgc2hhcmUgcmVwdXJjaGFzZSBhdXRob3JpemF0aW9uIGNhbiBhbmQgc2hvdWxkIGJlIGV2ZW4gbGFyZ2VyLCBhbmQgZWZmZWN0dWF0aW5nIHRoYXQgZm9yIHRoZSBiZW5lZml0IG9mIGFsbCBvZiB0aGUgY29tcGFueeKAmXMgc2hhcmVob2xkZXJzIGlzIHRoZSBzb2xlIGludGVudGlvbiBvZiBvdXIgcHJvcG9zYWwuIFRoZSBjb21wYW55IGhhcyByZWNvbW1lbmRlZCB2b3RpbmcgYWdhaW5zdCBvdXIgcHJvcG9zYWwgZm9yIHZhcmlvdXMgcmVhc29ucy4gSXQgc2VlbXMgdG8gdXMgdGhhdCB0aGUgYmFzaXMgb2YgaXRzIGFyZ3VtZW50IGFnYWluc3Qgb3VyIHByb3Bvc2FsIGlzIHRoYXQgdGhlIGNvbXBhbnkgYmVsaWV2ZXMsIGJlY2F1c2Ugb2YgdGhlIOKAnGR5bmFtaWMgY29tcGV0aXRpdmUgbGFuZHNjYXBl4oCdIGFuZCBiZWNhdXNlIGl0cyDigJxyYXBpZCBwYWNlIG9mIGlubm92YXRpb24gcmVxdWlyZVtzXSB1bnByZWNlZGVudGVkIGludmVzdG1lbnQsIGZsZXhpYmlsaXR5IGFuZCBhY2Nlc3MgdG8gcmVzb3VyY2Vz4oCdLCBpdCBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBlbm91Z2ggZXhjZXNzIGxpcXVpZGl0eSB0byBpbmNyZWFzZSB0aGUgc2l6ZSBvZiBpdHMgcmVwdXJjaGFzZSBwcm9ncmFtLiBBc3N1bWluZyB0aGlzIGluZGVlZCBpcyB0aGUgYmFzaXMgZm9yIHRoZSBjb21wYW554oCZcyBhcmd1bWVudCwgd2UgZmluZCBpdHMgcG9zaXRpb24gb3Zlcmx5IGNvbnNlcnZhdGl2ZSAoYWxtb3N0IHRvIHRoZSBwb2ludCBvZiBiZWluZyBpcnJhdGlvbmFsKSwgd2hlbiB3ZSBjb25zaWRlciB0aGF0IHRoZSBjb21wYW55IGhhZCAkMTMwIGJpbGxpb24gb2YgbmV0IGNhc2ggYXMgb2YgU2VwdGVtYmVyIDI4LCAyMDEzIGFuZCB0aGF0IGNvbnNlbnN1cyBlYXJuaW5ncyBhcmUgZXhwZWN0ZWQgdG8gYmUgYWxtb3N0ICQ0MCBiaWxsaW9uIG5leHQgeWVhci4gR2l2ZW4gdGhpcyBtYXNzaXZlIG5ldCBjYXNoIHBvc2l0aW9uIGFuZCByb2J1c3QgZWFybmluZ3MgZ2VuZXJhdGlvbiwgQXBwbGUgaXMgcGVyaGFwcyB0aGUgbW9zdCBvdmVyY2FwaXRhbGl6ZWQgY29tcGFueSBpbiBjb3Jwb3JhdGUgaGlzdG9yeSwgZnJvbSBvdXIgcGVyc3BlY3RpdmUuIFJlZ2FyZGxlc3Mgb2Ygd2hhdCBsaXF1aWRpdHkgaXQgbWF5IHJlcXVpcmUgd2l0aCByZXNwZWN0IHRvIOKAnHVucHJlY2VkZW50ZWQgaW52ZXN0bWVudCwgZmxleGliaWxpdHkgYW5kIGFjY2VzcyB0byByZXNvdXJjZXPigJ0gZm9yIGlubm92YXRpb24gbW92aW5nIGZvcndhcmQsIHdlIGJlbGlldmUgdGhlIHVucHJlY2VkZW50ZWQgZGVncmVlIHRvIHdoaWNoIHRoZSBjb21wYW55IGlzIGN1cnJlbnRseSBvdmVyY2FwaXRhbGl6ZWQgd291bGQgb3ZlcmNvbXBlbnNhdGUgZm9yIGFueSBzdWNoIGludmVzdG1lbnRzIChpbmNsdWRpbmcgcG9zc2libGUgaW52ZXN0bWVudHMgaW4gc3RyYXRlZ2ljIE0sIHRvIHdoaWNoIHRoZSBjb21wYW55IGRvZXMgbm90IHJlZmVyKS4gU2FpZCBhbm90aGVyIHdheSwgd2UgYmVsaWV2ZSB0aGF0IHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgY29tcGFueeKAmXMgdW5wcmVjZWRlbnRlZGx5IGVub3Jtb3VzIG5ldCBjYXNoIGJhbGFuY2UsIHJvYnVzdCBhbm51YWwgZWFybmluZ3MsIGFuZCB0cmVtZW5kb3VzIGJvcnJvd2luZyBjYXBhY2l0eSBwcm92aWRlIG1vcmUgdGhhbiBlbm91Z2ggZXhjZXNzIGxpcXVpZGl0eSB0byBhZmZvcmQgYm90aCB0aGUgdXNlIG9mIGNhc2ggZm9yIGFueSBuZWNlc3Nhcnkgb25nb2luZyBidXNpbmVzcy1yZWxhdGVkIGludmVzdG1lbnRzIGluIGFkZGl0aW9uIHRvIHRoZSBjYXNoIHVzZWQgZm9yIHRoZSBpbmNyZWFzZWQgc2hhcmUgcmVwdXJjaGFzZXMgcHJvcG9zZWQuXHJcbkl0IGlzIG91ciBiZWxpZWYgdGhhdCBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIEJvYXJkLCBvbiBiZWhhbGYgb2YgdGhlIGNvbXBhbnnigJlzIHNoYXJlaG9sZGVycywgdG8gdGFrZSBhZHZhbnRhZ2Ugb2Ygc3VjaCBhIGxhcmdlIGFuZCB1bm1pc3Rha2FibGUgb3Bwb3J0dW5pdHkuIEluZGVlZCwgd2UgYmVsaWV2ZSB0aGF0IGJ5IGNob29zaW5nIG5vdCB0byBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgcmVwdXJjaGFzZSBwcm9ncmFtLCB0aGUgZGlyZWN0b3JzIGFyZSBhY3R1YWxseSBwZXJmb3JtaW5nIGEgZ3JlYXQgZGlzc2VydmljZSB0byB0aGUgb3duZXJzLCBlc3BlY2lhbGx5IHNtYWxsZXIgc2hhcmVob2xkZXJzIHdobyBtYXkgbm90IGJlIGluIGEgcG9zaXRpb24gdG8gYnV5IG1vcmUgc3RvY2sgdGhlbXNlbHZlcy4gTWVhbndoaWxlLCB3ZSBhcmUgaW4gYSBwb3NpdGlvbiB0byBjb250aW51ZSBidXlpbmcgc2hhcmVzIGluIHRoZSBtYXJrZXQgYXQgdG9kYXkncyBwcmljZSwgc28gcGVyaGFwcyB3ZSBzaG91bGQgdGhhbmsgdGhlIEJvYXJkIGZvciBub3QgYmVpbmcgbW9yZSBhZ2dyZXNzaXZlLCBhbmQgdGh1cyBhbGxvd2luZyB1cyB0byBhY2N1bXVsYXRlIGFuIGV2ZW4gbGFyZ2VyIGludmVzdG1lbnQgcG9zaXRpb24gYXQgYSBwcmljZSB0aGF0IHJlZmxlY3RzIHRoZSBhZm9yZW1lbnRpb25lZCB2YWx1YXRpb24gZGlzY29ubmVjdC4gSW4gZmFjdCwgb3ZlciB0aGUgcGFzdCB0d28gd2Vla3Mgd2UgcHVyY2hhc2VkICQxIGJpbGxpb24gbW9yZSBpbiBBcHBsZSBzaGFyZXMsICQ1MDAgbWlsbGlvbiBvZiB3aGljaCB3ZSBwdXJjaGFzZWQgdG9kYXksIGJyaW5naW5nIG91ciB0b3RhbCBvd25lcnNoaXAgcG9zaXRpb24gaW4gQXBwbGUgdG8gYSBjdXJyZW50IHZhbHVlIG9mIGFwcHJveGltYXRlbHkgJDMuNiBiaWxsaW9uLlxyXG5HaXZlbiB0aGUgZGVncmVlIHRvIHdoaWNoIEFwcGxlIGFwcGVhcnMgdW5kZXJ2YWx1ZWQgdG8gdXMsIHdlIGFsbW9zdCBmZWVsIHRoYXQgaXTigJlzIGEgd2FzdGUgb2YgdGltZSB0byBkZWJhdGUgdGhlIHBvaW50LiBBcyB3ZSBiZWxpZXZlIGl0IHRvIGJlIHRoZSBwcmVlbWluZW50IGFuZCBtb3N0IGlubm92YXRpdmUgY29uc3VtZXIgcHJvZHVjdHMgY29tcGFueSBpbiB0aGUgd29ybGQsIHdpdGggdGhlIGdyZWF0ZXN0IGJyYW5kLCBoYXJkd2FyZSwgc29mdHdhcmUsIGFuZCBzZXJ2aWNlcyBpbiB0aGUgd29ybGQsIEFwcGxlIGhhcyBoYWQgdHJlbWVuZG91cyBncm93dGggdG8gZGF0ZSwgYW5kIHdlIGZhaWwgdG8gc2VlIHdoeSB0aGlzIGdyb3d0aCB3b3VsZCBub3QgY29udGludWUgbW92aW5nIGZvcndhcmQuIFRoZSBpbmR1c3RyeSAoc21hcnRwaG9uZXMgYW5kIHRhYmxldHMpIGlzIGV4cGVjdGVkIHRvIGdyb3cgdm9sdW1lIGF0IGEgMTUlIGNvbXBvdW5kZWQgYW5udWFsIGdyb3d0aCByYXRlIGZyb20gMjAxMyB0aHJvdWdoIDIwMTcgYWNjb3JkaW5nIHRvIElEQy4gV2UgYmVsaWV2ZSBBcHBsZSBzaG91bGQgY29udGludWUgdG8gYmVuZWZpdCBmcm9tIHRoaXMgc2VjdWxhciBncm93dGgsIGFzIGxhc3QgeWVhciwgODUlIG9mIEFwcGxl4oCZcyByZXZlbnVlcyBjYW1lIGZyb20gc21hcnRwaG9uZXMsIHRhYmxldHMsIGFuZCByZWxhdGVkIHNvZnR3YXJlLCBzZXJ2aWNlcywgYW5kIGFjY2Vzc29yaWVzLiBUaGUgbmF5c2F5ZXJzIHF1ZXN0aW9uIHdoZXRoZXIgQXBwbGUgd2lsbCBiZSBhYmxlIHRvIHBhcnRpY2lwYXRlIGluIHRoaXMgZ3Jvd3RoIHdpdGhvdXQgc2FjcmlmaWNpbmcgcHJpY2luZyBhbmQgZ3Jvc3MgbWFyZ2lucywgZXNwZWNpYWxseSB3aXRoIGNvbXBldGl0aW9uIGZyb20gR29vZ2xlLCBTYW1zdW5nLCBNaWNyb3NvZnQsIEFtYXpvbiBhbmQgQ2hpbmVzZSBtYW51ZmFjdHVyZXJzLiBPdXIgcmVzcG9uc2UgdG8gdGhlbSBpcyB0aGF0IHRoZSBhbnN3ZXIgaXMgYWxyZWFkeSBldmlkZW50IHRvIHVzIGZyb20gdGhlIGNvbnRpbnVpbmcgbG95YWx0eSBvZiBBcHBsZeKAmXMgZ3Jvd2luZyBjdXN0b21lciBiYXNlLiBUaGUgaGlnaGx5IHN1Y2Nlc3NmdWwgZXZvbHV0aW9uYXJ5IChub3QgcmV2b2x1dGlvbmFyeSkgaW50cm9kdWN0aW9ucyBvZiB0aGUgaVBob25lIDVzIGFuZCA1YyBhbmQgSXBhZCBBaXIgYW5kIE1pbmksIHByb3ZlIHRvIHVzIHRoYXQgQXBwbGUgY291bGQsIGZvciB0aGUgbW9zdCBwYXJ0LCBtYWludGFpbiBwcmljaW5nIGFuZCBncm9zcyBtYXJnaW4gYXMgd2UgYmVsaWV2ZSBjb25zdW1lcnMgYXJlIHdpbGxpbmcgdG8gcGF5IGEgcmVhc29uYWJsZSBwcmVtaXVtIGZvciB0aGUgd29ybGTigJlzIGJlc3Qgc21hcnRwaG9uZXMgYW5kIHRhYmxldHMuIFRoZSBydW1vcmVkIGZ1dHVyZSBpbnRyb2R1Y3Rpb24gb2YgcHJvZHVjdCBsaW5lIGV4dGVuc2lvbnMgd2l0aCBsYXJnZXIgc2NyZWVucyBmb3IgYm90aCB0aGUgaVBob25lIGFuZCBpUGFkIHdvdWxkIGZ1cnRoZXIgc3VwcG9ydCB0aGlzIHZpZXcuMiBJbiBmYWN0LCBhIHJlY2VudCBzdHVkeSBmcm9tIE5EQyBzaG93cyB0aGF0IHRoZSBpUGhvbmUgYWNjb3VudGVkIGZvciA0MiUgb2Ygc21hcnRwaG9uZSB1c2VycyBpbiB0aGUgVW5pdGVkIFN0YXRlcyBhdCB0aGUgZW5kIG9mIDIwMTMsIHVwIGEgc3RhZ2dlcmluZyAyMCUgZnJvbSB0aGUgcHJpb3IgeWVhci4gRGVzcGl0ZSBpdHMgZ3JlYXQgc2NhbGUgYW5kIG5hcnJvdyBmb2N1cywgQXBwbGUgaGFzIGFuIG9wZXJhdGluZyBtYXJnaW4gb2YganVzdCAyOC41JS4gV2UgYmVsaWV2ZSBpdHMgY3VzdG9tZXJz4oCZIHdpbGxpbmduZXNzIHRvIHBheSBhIHByZW1pdW0gcHJpY2UgZm9yIHRoZSB3b3JsZOKAmXMgZ3JlYXRlc3QgcHJvZHVjdHMgc2hvdWxkIGVuYWJsZSBBcHBsZSB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgZXhwZWN0ZWQgdm9sdW1lIGdyb3d0aCBvZiB0aGVzZSBjYXRlZ29yaWVzIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgbGFyZ2VseSBtYWludGFpbmluZyBpdHMgYXZlcmFnZSBzZWxsaW5nIHByaWNlcyBhbmQgZ3Jvc3MgbWFyZ2lucy4gQW5kLCBhcyBzb2Z0d2FyZSBhbmQgc2VydmljZXMgaW1wcm92ZSBhbmQgYmVjb21lIGV2ZW4gbW9yZSBpbXBvcnRhbnQgdG8gY29uc3VtZXJzIGluIHRoZSBmdXR1cmUsIHdlIGV4cGVjdCBjdXN0b21lciBsb3lhbHR5IHRvIHN0cmVuZ3RoZW4gZnVydGhlci5cclxuRXZlbiBpZiB0aGUgc3RvcnkgZW5kZWQgd2l0aCBBcHBsZeKAmXMgZXhpc3RpbmcgcHJvZHVjdCBhbmQgc29mdHdhcmUgbGluZXMsIHdlIHdvdWxkIHN0aWxsIGNob29zZSB0byBtYWtlIEFwcGxlIG91ciBsYXJnZXN0IGludmVzdG1lbnQuIEJ1dCB0aGVyZSBpcyBtb3JlIHRvIHRoZSBzdG9yeSEgVGltIENvb2sga2VlcHMgc2F5aW5nIHRoYXQgaGUgZXhwZWN0cyB0byBpbnRyb2R1Y2Ug4oCcbmV3IHByb2R1Y3RzIGluIG5ldyBjYXRlZ29yaWVz4oCdIGFuZCB5ZXQgdmVyeSBmZXcgcGVvcGxlIHNlZW0gdG8gYmUgbGlzdGVuaW5nLiBXZeKAmXJlIG5vdCBhd2FyZSBvZiBhIHNpbmdsZSBXYWxsIFN0cmVldCBhbmFseXN0IHdobyBpbmNsdWRlcyDigJxuZXcgcHJvZHVjdHMgaW4gbmV3IGNhdGVnb3JpZXPigJ0gb3IgbmV3IHNlcnZpY2VzIGluIGFueSBvZiB0aGVpciBmaW5hbmNpYWwgcHJvamVjdGlvbnMsIGV2ZW4gdGhvdWdoIEFwcGxlIGNsZWFybHkgaGFzIGFuIGltcHJlc3NpdmUgdHJhY2sgcmVjb3JkIG9mIHN1Y2ggbmV3IGNhdGVnb3J5IHByb2R1Y3QgaW50cm9kdWN0aW9ucywgZXZlbiBpZiBpdCBkb2VzIHNvIHJhcmVseS4gQXBwbGUgcmVsZWFzZWQgdGhlIGlQaG9uZSBpbiAyMDA3IGFuZCB0aGUgaVBhZCBmaXZlIHllYXJzIGxhdGVyIGluIDIwMTIsIGJvdGggc28gZXh0cmFvcmRpbmFyaWx5IHN1Y2Nlc3NmdWwgdGhhdCB0b2RheSB0aGV5IHJlcHJlc2VudCB0aGUgbWFqb3JpdHkgb2YgdGhlIGNvbXBhbnnigJlzIHJldmVudWUuIFRpbSBDb29r4oCZcyBjb21tZW50cywgYWxvbmcgd2l0aCBhZHZhbmNlbWVudHMgaW4gZW5hYmxpbmcgdGVjaG5vbG9naWVzLCBsZWFkIHVzIHRvIGJlbGlldmUgdGhhdCB3ZSBtYXkgc2VlIGluIHRoZSBub3QgdG9vIGRpc3RhbnQgZnV0dXJlIHdoYXQgbmV3IGdyb3VuZGJyZWFraW5nIHByb2R1Y3RzIHRoZXnigJl2ZSBiZWVuIHdvcmtpbmcgb24gZGV2ZWxvcGluZyBpbiBDdXBlcnRpbm8gdGhlc2UgbGFzdCBzZXZlcmFsIHllYXJzLjNcclxuVG8gZ2V0IGEgc2Vuc2Ugb2YgdGhlIHNjYWxlIG9mIHRoZSBvcHBvcnR1bml0eSB0aGF0IHN0ZW1zIGZyb20gbmV3IHByb2R1Y3RzIGluIG5ldyBjYXRlZ29yaWVzLCBsZXTigJlzIHRha2UgYSBtb21lbnQgdG8gY29uc2lkZXIgdGhlIHBvc3NpYmlsaXR5IG9mIGFuIEFwcGxlIHRlbGV2aXNpb24uIFRoZSBtYWpvciBlbGVjdHJvbmljcyBjb21wYW5pZXMgYXJlIG5vdyBmb2N1c2VkIG9uIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBUVnMgYXMgdGhlaXIgbmV4dCBiaWcgb3Bwb3J0dW5pdHkuIFVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBpcyBleHBlY3RlZCB0byBvZmZlciBhIGxldmVsIG9mIGltYWdlIGNsYXJpdHkgdGhhdCBpcyBzdXBlcmlvciB0byB0b2RheeKAmXMgaGlnaCBkZWZpbml0aW9uIHRlbGV2aXNpb25zIGZvciBzY3JlZW4gc2l6ZXMgNTUgaW5jaGVzIGFuZCBhYm92ZS4gVG8gZGF0ZSwgdGhlIGJhcnJpZXIgdG8gbWFzcyBtYXJrZXQgYWRvcHRpb24gb2YgdWx0cmEgaGlnaCBkZWZpbml0aW9uIGhhcyBiZWVuIHRoZSBwcmljZSBnYXAgYmV0d2VlbiBpdCBhbmQgcmVndWxhciBoaWdoIGRlZmluaXRpb24sIGJ1dCB0aGF0IHByaWNlIGdhcCBpcyBjbG9zaW5nIGFuZCB3aWxsIHNvb24gYmUgZGUgbWluaW1pcy4gVGhlIGNsb3Npbmcgb2YgdGhpcyBwcmljZSBnYXAgaXMgc3VwcG9ydGVkIGJ5IHN0YXRlbWVudHMgbWFkZSBieSB0aGUgQ28tQ0VPIG9mIFNhbXN1bmcgRWxlY3Ryb25pY3MsIHdobyBleHBlY3RzIHRoZSBwcmljZSBnYXAgdG8gZmFsbCB0byAxMCUgYnkgdGhlIGVuZCBvZiB0aGlzIHllYXIuIFdoaWxlIGNhYmxlIGNvbXBhbmllcyB3aWxsIGxpa2VseSBiZSBzbG93IHRvIHVwZ3JhZGUgdGhlaXIgbGluZWFyIFRWIGluZnJhc3RydWN0dXJlIGR1ZSB0byBjb3N0LCB2aWRlbyBjb250ZW50IGlzIGV4cGVjdGVkIHRvIGJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgaW50ZXJuZXQgdmlhIHNlcnZpY2VzIGxpa2UgTmV0ZmxpeCBhbmQgb3RoZXJzLiBXZSBiZWxpZXZlIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiByZXByZXNlbnRzIGEgbWFqb3IgY2F0YWx5c3QgZm9yIHRoZSBuZXh0IFRWIHJlcGxhY2VtZW50IGN5Y2xlIGFuZCBhIHByb21pc2luZyBtb21lbnQgZm9yIEFwcGxlIHRvIGludHJvZHVjZSBpdHMgZmlyc3QgbmV3IHByb2R1Y3QgaW4gdGhpcyBjYXRlZ29yeS4gUmVlZCBIYXN0aW5ncywgQ0VPIG9mIE5ldGZsaXgsIGhhcyByZWZlcmVuY2VkIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBhcyBhIG1ham9yIGNhdGFseXN0IGZvciBOZXRmbGl4IGdvaW5nIGZvcndhcmQuIFdoaWxlIHRoaXMgaXMgdHJ1ZSBmb3IgTmV0ZmxpeCwgd2UgYmVsaWV2ZSBpdCBpcyBhbHNvIHRydWUgZm9yIEFwcGxlLCBub3QganVzdCBmb3IgaXRzIGhhcmR3YXJlIGJ1dCBhbHNvIGZvciBzZWxsaW5nIHVsdHJhIGhpZ2ggZGVmaW5pdGlvbiBtb3ZpZXMgYW5kIHNob3dzIG9uIGlUdW5lcyB0aHJvdWdoIHRoZSBpbnRlcm5ldC4gV2l0aCAyMzggbWlsbGlvbiBUVnMgc29sZCBnbG9iYWxseSBpbiAyMDEyLCBpdCB3b3VsZCBub3Qgc3VycHJpc2UgdXMgaWYgQXBwbGUgY291bGQgc2VsbCAyNSBtaWxsaW9uIG5ldyBBcHBsZSB1bHRyYSBoaWdoIGRlZmluaXRpb24gdGVsZXZpc2lvbnMgYXQgJDEsNjAwIHBlciB1bml0LCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgYm90aCBpdHMgdHJhY2sgcmVjb3JkIG9mIGludHJvZHVjaW5nIGJlc3QgaW4gY2xhc3MgcHJvZHVjdHMgYW5kIGl0cyBtYXJrZXQgc2hhcmUgaW4gc21hcnRwaG9uZXMgYW5kIHRhYmxldHMuNCBBdCBhIGdyb3NzIG1hcmdpbiBvZiAzNy43JSwgd2hpY2ggd291bGQgYmUgY29uc2lzdGVudCB3aXRoIHRoYXQgb2YgdGhlIG92ZXJhbGwgY29tcGFueSwgc3VjaCBhIGRlYnV0IHdvdWxkIGFkZCAkNDAgYmlsbGlvbiBvZiByZXZlbnVlcyBhbmQgJDE1IGJpbGxpb24gdG8gb3BlcmF0aW5nIGluY29tZSBhbm51YWxseS41XHJcblRoZSBwb3NzaWJpbGl0eSBvZiBhIHRlbGV2aXNpb24gcmVwcmVzZW50cyBvbmx5IG9uZSBvcHBvcnR1bml0eSBmb3IgdGhlIGNvbXBhbnkgdGhhdCBzdGVtcyBmcm9tIG5ldyBwcm9kdWN0cyBpbiBuZXcgY2F0ZWdvcmllcy4gV2hpbGUgd2Ugd29u4oCZdCBnbyB0aHJvdWdoIGFsbCBvZiB0aGVtIGhlcmUsIHdlIHNlZSBzZXZlcmFsIG1ham9yIG9wcG9ydHVuaXRpZXMgaW4gaGFyZHdhcmUgYWxvbmUuIFdpdGggYWR2YW5jZW1lbnRzIGluIG1pbmlhdHVyaXphdGlvbiBhbmQgY29udGludWVkIGltcHJvdmVtZW50cyBpbiBTaXJpLCBpdCBzZWVtcyBvYnZpb3VzIHRvIHVzIHRoYXQgQXBwbGUgaGFzIGEgY29tcGVsbGluZyBvcHBvcnR1bml0eSBpbiB0aGUgZXhjaXRpbmcgYXJlYSBvZiB3ZWFyYWJsZSBkZXZpY2VzLCBzdXBwb3J0ZWQgYnkgcnVtb3JzIHRoYXQgQXBwbGUgaXMgZGV2ZWxvcGluZyBhIHNtYXJ0d2F0Y2ggKGFzIFRpbSBDb29rIGhpbXNlbGYgc2FpZCB0aGUgd3Jpc3QgaXMg4oCcYW4gYXJlYSBvZiBncmVhdCBpbnRlcmVzdCBmb3IgQXBwbGXigJ0pLiBXaGlsZSBtYW55IGNvbnNpZGVyIEFwcGxlIGEgaGFyZHdhcmUgY29tcGFueSwgdG8gcGlnZW9uaG9sZSBpdCBhcyBzdWNoIGlzIG5vIGxvbmdlciBhcHByb3ByaWF0ZSBpbiBvdXIgb3Bpbmlvbi4gQXBwbGUgaGFzIGJ1aWx0IGFuIGVjb3N5c3RlbSBvZiBoYXJkd2FyZSwgc29mdHdhcmUsIGFuZCBzZXJ2aWNlcyB0aGF0IHdlIGJlbGlldmUgY29sbGVjdGl2ZWx5IHJlcHJlc2VudHMgdGhlIG1vc3Qgc3VjY2Vzc2Z1bCBjb25zdW1lciBwcm9kdWN0IHBsYXRmb3JtIGluIHRoZSBlbnRpcmUgaGlzdG9yeSBvZiBjb25zdW1lci1mYWNpbmcgdGVjaG5vbG9naWVzLiBBbmQgYXMgQXBwbGXigJlzIGN1c3RvbWVyIGJhc2UgY29udGludWVzIHRvIGVuam95IHRoZSB1c2Ugb2YgdGhpcyBlY29zeXN0ZW0sIHN0b3JpbmcgbWVkaWEgaW4gdGhlIGNsb3VkIGFuZCBtb3ZpbmcgaXQgZnJvbSBvbmUgQXBwbGUgZGV2aWNlIHRvIGFub3RoZXIgYXMgZG9pbmcgc28gYmVjb21lcyBpbmNyZWFzaW5nbHkgY29udmVuaWVudCB3aXRoIGlubm92YXRpb25zIHN1Y2ggYXMgQWlycGxheSAoYXMganVzdCBvbmUgc2ltcGxlIGV4YW1wbGUgb2YgdGhpcyBlY29zeXN0ZW3igJlzIGN1cnJlbnQgZnVuY3Rpb25hbGl0eSksIHdlIGJlbGlldmUgdGhhdCBjdXN0b21lciBiYXNlIGdyb3dzIGluY3JlYXNpbmdseSBsb3lhbCBhbmQgZXhjaXRlZCBmb3IgdGhlIG5leHQgQXBwbGUgcHJvZHVjdCByZWxlYXNlLCBtYWtpbmcgaXQgYW4gYXNzZXQgaW4gYW5kIG9mIGl0c2VsZiB0aGF0IGdyb3dzIGFuZCBiZWNvbWVzIGluY3JlYXNpbmdseSB2YWx1YWJsZS4gSW5kZWVkLCB3ZSBiZWxpZXZlIGFueSBuZXcgc29mdHdhcmUgc2VydmljZSB0aGF0IG9mZmVycyBuZXcgZnVuY3Rpb25hbGl0eSB0byB0aGlzIGN1c3RvbWVyIGJhc2UgYmVjb21lcyBhIGxhcmdlIG9wcG9ydHVuaXR5IGZvciBBcHBsZSB0byBpbnRyb2R1Y2UgYXMgYSByZXZvbHV0aW9uYXJ5IGFuZCBkaXNydXB0aXZlIGJvbHQtb24gdG8gdGhlIGVjb3N5c3RlbS4gQXMganVzdCBvbmUgb2YgbWFueSBwb3NzaWJsZSBleGFtcGxlcyBvZiB0aGlzIHBoZW5vbWVub24sIEFwcGxlIGNvdWxkIGludHJvZHVjZSBhIG5leHQgZ2VuZXJhdGlvbiBwYXltZW50cyBzb2x1dGlvbi4gSW4gdGVybXMgb2Ygd2hldGhlciB0aGUgbWFya2V0cGxhY2UgaXMgd2VsbCBhZGRyZXNzZWQgYnkgbW9iaWxlIHBheW1lbnRzIHNvbHV0aW9ucywgVGltIENvb2sgaGFzIHNhaWQg4oCcSSB0aGluayBpdCBpcyBpbiBpdHMgaW5mYW5jeeKApiBJIHRoaW5rIGl0IGlzIGp1c3QgZ2V0dGluZyBzdGFydGVkIGFuZCBqdXN0IG9mIG91dCBvZiB0aGUgc3RhcnRpbmcgYmxvY2su4oCdIFdpdGggdGhlIGZpbmdlcnByaW50IHNlbnNvciwgaUJlYWNvbiwgNTc1KyBtaWxsaW9uIGNyZWRpdCBjYXJkIG51bWJlcnMgc3RvcmVkIGluIGlUdW5lcywgYW5kIEFwcGxl4oCZcyBob21vZ2VuZW91cyBpT1MgaW5zdGFsbGVkIGJhc2Ugd2l0aCA3OSUgb2YgZGV2aWNlcyB1c2luZyBpT1MgNywgd2UgYmVsaWV2ZSBhIHJldm9sdXRpb25hcnkgcGF5bWVudHMgc29sdXRpb24gaXMgbm93IGEgdmVyeSByZWFsIG9wcG9ydHVuaXR5IHRoYXQgdGhlIGNvbXBhbnkgY291bGQgY2hvb3NlIHRvIHB1cnN1ZS4gV2l0aCByZXNwZWN0IHRvIGFsbCBvZiBBcHBsZeKAmXMgbmV3IGFuZCBleGlzdGluZyBvcHBvcnR1bml0aWVzIGZvciBncm93dGgsIHRoZXkgd2lsbCBvbmx5IHByb3ZlIHRvIGJlIHN1Y2Nlc3NmdWwgd2l0aCBzdHJvbmcgZXhlY3V0aW9uIGZyb20gdGhlIGNvbXBhbnnigJlzIG1hbmFnZW1lbnQsIGluIHdob20gd2UgaG9sZCBncmVhdCBjb25maWRlbmNlLiBOYXlzYXllcnMgc2F5IFRpbSBDb29rIGlzIG5vdCBTdGV2ZSBKb2JzLCBhbmQgdGhleeKAmXJlIGFic29sdXRlbHkgcmlnaHQuIEhlIGlzIFRpbSBDb29rIGFuZCB3ZSBiZWxpZXZlIGhlIGlzIGRvaW5nIGFuIGV4Y2VsbGVudCBqb2IsIGFuZCBKb25hdGhhbiBJdmUsIFNlbmlvciBWUCBvZiBEZXNpZ24sIGlzIEpvbmF0aGFuIEl2ZSBhbmQgd2UgYmVsaWV2ZSBoZeKAmXMgZG9pbmcgYW4gZXhjZWxsZW50IGpvYiwgZXRjZXRlcmEuXHJcbkluIHRoaXMgbGV0dGVyLCB3ZSBoYXZlIGFib3ZlIHN1bW1hcml6ZWQgd2h5IHdlIGJlbGlldmUgQXBwbGUgaXMgdW5kZXJ2YWx1ZWQgaW4gb3JkZXIgdG8gZXhwcmVzcyBob3cgcmlkaWN1bG91cyBpdCBzZWVtcyB0byB1cyBmb3IgQXBwbGUgdG8gaG9yZGUgc28gbXVjaCBjYXNoIHJhdGhlciB0aGFuIHJlcHVyY2hhc2Ugc3RvY2sgKGFuZCB0aGVyZWJ5IHVzZSB0aGF0IGNhc2ggdG8gbWFrZSBhIGxhcmdlciBpbnZlc3RtZW50IGluIGl0c2VsZiBmb3IgdGhlIGJlbmVmaXQgb2YgYWxsIG9mIHRoZSBjb21wYW554oCZcyBzaGFyZWhvbGRlcnMpLiBJbiBpdHMgc3RhdGVtZW50IGluIG9wcG9zaXRpb24gdG8gb3VyIHByb3Bvc2FsLCB0aGUgY29tcGFueSBjbGFpbXMgdGhhdCDigJx0aGUgQm9hcmQgYW5kIG1hbmFnZW1lbnQgdGVhbSBoYXZlIGRlbW9uc3RyYXRlZCBhIHN0cm9uZyBjb21taXRtZW50IHRvIHJldHVybmluZyBjYXBpdGFsIHRvIHNoYXJlaG9sZGVyc+KAnSBhbmQgd2UgYmVsaWV2ZSB0aGF0IGlzIHRydWUsIGJ1dCB3ZSBhbHNvIGJlbGlldmUgdGhhdCBjb21taXRtZW50IGlzIG5vdCBzdHJvbmcgZW5vdWdoIGdpdmVuIHRoZSB1bmlxdWUgZGVncmVlIHRvIHdoaWNoIHRoZSBjb21wYW55IGlzIGJvdGggdW5kZXJ2YWx1ZWQgYW5kIG92ZXJjYXBpdGFsaXplZC4gRnVydGhlcm1vcmUsIGl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgYSBzaGFyZSByZXB1cmNoYXNlIGlzIG5vdCBzaW1wbHkgYW4gYWN0IG9mIOKAnHJldHVybmluZyBjYXBpdGFsIHRvIHNoYXJlaG9sZGVyc+KAnSBzaW5jZSBpdCBpcyBhbHNvIHRoZSBjb21wYW55IGVmZmVjdGl2ZWx5IG1ha2luZyBhbiBpbnZlc3RtZW50IGluIGl0c2VsZi4gVG8gdXMsIGFzIGxvbmcgdGVybSBpbnZlc3RvcnMsIHRoaXMgaXMgYW4gaW1wb3J0YW50IGRpZmZlcmVuY2U6IGEgZGl2aWRlbmQgaXMgYSBwdXJlIHJldHVybiBvZiBjYXBpdGFsIHdoaWxlIGEgc2hhcmUgcmVwdXJjaGFzZSBpcyB0aGUgY29tcGFueSBtYWtpbmcgYW4gaW52ZXN0bWVudCBpbiBpdHNlbGYgYnkgYnV5aW5nIHNoYXJlcyBpbiB0aGUgbWFya2V0IGF0IHRoZSBjdXJyZW50IHByaWNlLCB3aGljaCB3ZSBiZWxpZXZlIHRvIGJlIHVuZGVydmFsdWVkLCBmcm9tIHNoYXJlaG9sZGVycyB3aWxsaW5nIHRvIHNlbGwgYXQgdGhhdCBwcmljZSBmb3IgdGhlIGJlbmVmaXQgb2Ygc2hhcmVob2xkZXJzIHdobyBjaG9vc2UgdG8gcmVtYWluIGludmVzdG9ycyBmb3IgdGhlIGxvbmdlciB0ZXJtLiBBbmQgd2UgYXJlIGxvbmcgdGVybSBpbnZlc3RvcnMuIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG5vIG9uZSBvbiB0aGUgQm9hcmQgc2VlbXMgdG8gYmUgYW4gZXhwZXJ0IGluIHRoZSB3b3JsZCBvZiBpbnZlc3RtZW50IG1hbmFnZW1lbnQuIEhvd2V2ZXIsIGJhc2VkIG9uIG91ciByZWNvcmQsIHdlIGJlbGlldmUgZmV3IHdpbGwgYXJndWUgdGhhdCB3ZSBhcmUgZXhwZXJ0cyBpbiB0aGlzIGFyZWEsIGFuZCB3ZSBoYXZlIG5vIGRvdWJ0cyB0aGF0IHRoZSBCb2FyZCBpcyBkb2luZyBhIGdyZWF0IGRpc3NlcnZpY2UgdG8gaXRzIHNoYXJlaG9sZGVycyBieSBub3QgaW1tZWRpYXRlbHkgaW5jcmVhc2luZyB0aGUgc2l6ZSBvZiB0aGUgc2hhcmUgcmVwdXJjaGFzZSBwcm9ncmFtIGluIG9yZGVyIHRvIG1vcmUgZWZmZWN0aXZlbHkgdGFrZSBhZHZhbnRhZ2Ugb2Ygd2hhdCB3ZSBiZWxpZXZlIHRvIGJlIHRoZSBjb21wYW554oCZcyBsb3cgbWFya2V0IHZhbHVhdGlvbi5cclxuV2UgaGF2ZSBleHByZXNzZWQgYWJvdmUgd2hhdCB3ZSBiZWxpZXZlIHRvIGJlIHRoZSBjb21wYW554oCZcyBwcmltYXJ5IHJlYXNvbiBmb3Igbm90IHN1cHBvcnRpbmcgb3VyIHByb3Bvc2FsLiBDb252ZXJzZWx5LCBpdCBpcyBvdXIgYmVsaWVmIHRoYXQgQXBwbGXigJlzIGN1cnJlbnQgZXhjZXNzIGxpcXVpZGl0eSBpcyB3aXRob3V0IGhpc3RvcmljYWwgcHJlY2VkZW50IGFuZCBiZXlvbmQgcmVhc29uYWJsZSBjb21wYXJpc29uIHRvIGl0cyBwZWVycyBvciBvdGhlcndpc2UsIGFuZCBzdWNoIGRyYW1hdGljIG92ZXJjYXBpdGFsaXphdGlvbiBhZmZvcmRzIHRoZSBjb21wYW55IGVub3VnaCBleGNlc3MgbGlxdWlkaXR5IHRvIHJlcHVyY2hhc2UgdGhlIGFtb3VudCBvZiBzaGFyZXMgd2UgcHJvcG9zZWQuIEFwcGxl4oCZcyBleGlzdGluZyBjYXBpdGFsIHJldHVybiBwcm9ncmFtIGhhcyBqdXN0ICQzNyBiaWxsaW9uIHJlbWFpbmluZywgYW5kIHRoZSBjb21wYW55IGhhcyB1bnRpbCB0aGUgZW5kIG9mIDIwMTUgdG8gY29tcGxldGUgaXQuIFdpdGhvdXQgYW55IGNoYW5nZXMgdG8gdGhlIHByb2dyYW0sIHRoZSBsYXJnZXN0IHBpbGUgb2YgY29ycG9yYXRlIGNhc2ggaW4gdGhlIHdvcmxkIGlzIGxpa2VseSB0byBncm93IGV2ZW4gbGFyZ2VyLCBhbmQgaWYgdGhlIHNoYXJlIHByaWNlIHJpc2VzLCB0aGlzIEJvYXJkIHdpbGwgaGF2ZSBtaXNzZWQgYSBncmVhdCBvcHBvcnR1bml0eSB0byB1c2UgbW9yZSBvZiB0aGF0IGhvYXJkZWQgY2FzaCB0byByZXB1cmNoYXNlIHNoYXJlcyBhdCBhbiBhdHRyYWN0aXZlIHZhbHVlLiBXaGlsZSBpdCBpcyBpbXBvcnRhbnQgZm9yIHRoZSBCb2FyZCB0byBmb2N1cyBvbiB0aGUgcmV0dXJuIG9mIGNhcGl0YWwgb24gYSBzdXN0YWluZWQgYmFzaXMsIGl0IGlzIGFsc28gaW1wb3J0YW50IGZvciB0aGUgQm9hcmQgdG8gZXZhbHVhdGUgd2hldGhlciBvciBub3QgaXRzIHNoYXJlIHByaWNlIGlzIHVuZGVydmFsdWVkIGFuZCB0byB0YWtlIGFkdmFudGFnZSBvZiBpdCB3aXRoIHNoYXJlIHJlcHVyY2hhc2VzLCBlc3BlY2lhbGx5IHdoZW4gdGhlIGJhbGFuY2Ugc2hlZXQgZXhoaWJpdHMgZHJhbWF0aWMgZXhjZXNzIGxpcXVpZGl0eSwgYXMgd2UgYmVsaWV2ZSBBcHBsZeKAmXMgZG9lcyB0b2RheS5cclxuVGhlIEJvYXJkIG1heSBhcmd1ZSB0aGF0IHdpdGggc28gbXVjaCBvcHBvcnR1bml0eSwgaXQgd291bGQgYmUgcHJ1ZGVudCB0byBtYWludGFpbiBpdHMgZXhjZXNzIGxpcXVpZGl0eSB0byBpbmNyZWFzZSBSIG9yIG1ha2UgYWNxdWlzaXRpb25zLCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgdGhlIGZpbmFuY2lhbCBzdHJlbmd0aCBvZiBpdHMgY29tcGV0aXRvcnMuIFdlIGNvbXBsZXRlbHkgYWdyZWUgdGhhdCB0aGUgY29tcGFueSBtdXN0IGlubm92YXRlIGFuZCBzaG91bGQgYmUgZmxleGlibGUgdG8gbWFrZSBwcnVkZW50IHN0cmF0ZWdpYyBhY3F1aXNpdGlvbnMsIHlldCBldmVuIGFmdGVyIHRha2luZyBzdWNoIGZhY3RvcnMgaW50byBhY2NvdW50LCB3ZSBiZWxpZXZlIHRoYXQgdHJlbWVuZG91cyBleGNlc3MgbGlxdWlkaXR5IHJlbWFpbnMuIFdpdGggcmVzcGVjdCB0byBwb3NzaWJsZSBNICh0byB3aGljaCB0aGUgY29tcGFueSBkb2VzIG5vdCByZWZlciBpbiBpdHMgc3RhdGVtZW50KSwgZm9yIHRoZSBvcHBvcnR1bml0aWVzIGhpZ2hsaWdodGVkIGFib3ZlIChhIFRWLCBhIHdhdGNoLCBhIHBheW1lbnQgc2VydmljZSksIHdlIGZpbmQgaXQgZXh0cmVtZWx5IGRpZmZpY3VsdCB0byBpZGVudGlmeSBhbnkgcG9zc2libGUgc3RyYXRlZ2ljIGFjcXVpc2l0aW9ucyBvZiBzY2FsZSB0aGF0IG1ha2Ugc2Vuc2UuIEZ1cnRoZXJtb3JlLCBzdWNoIGFjdGlvbiB3b3VsZCBzZWVtIHRvIGNvbmZsaWN0IHdpdGggQXBwbGXigJlzIGN1bHR1cmUgaGlzdG9yaWNhbGx5LiBBIHJlbWFya2FibGUgZmFjdCBpcyB0aGF0IHNpbmNlIHRoZSBCb2FyZCByZWFjcXVpcmVkIFN0ZXZlIEpvYnMgdGhyb3VnaCB0aGUgTmVYVCBhY3F1aXNpdGlvbiBmb3IgJDQyNyBtaWxsaW9uIGluIDE5OTcsIHRoZSBuZXh0IGxhcmdlc3QgYWNxdWlzaXRpb24gQXBwbGUgbWFkZSB3YXMgJDIuNiBiaWxsaW9uIGZvciBOb3J0ZWzigJlzIHBhdGVudCBwb3J0Zm9saW8uIEFtYXppbmdseSwgb3ZlciB0aGVzZSAxNyB5ZWFycywgQXBwbGUgbWFkZSBqdXN0ICQ3LjggYmlsbGlvbiB3b3J0aCBvZiBhY3F1aXNpdGlvbnMgaW4gdG90YWwgZHVyaW5nIHRoaXMgdGltZWZyYW1lLiBBcHBsZSBjbGVhcmx5IGhhcyBhIGxvbmcgaGlzdG9yeSBhbmQgY3VsdHVyZSBvZiBkZXZlbG9waW5nIGl0cyBpbm5vdmF0aW9uIGludGVybmFsbHksIHdoaWNoIGxlYWRzIHVzIHRvIGJlbGlldmUgdGhhdCB0aGUgY29tcGFueSB3aWxsIG5vdCBzZWVrIG91dCBsYXJnZSBhY3F1aXNpdGlvbnMgdG8gcHVyc3VlIGFueSBvZiB0aGUgb3Bwb3J0dW5pdGllcyBhYm91dCB3aGljaCB3ZSBoYXZlIHNwZWN1bGF0ZWQuIEluIHRlcm1zIG9mIHBheWluZyBmb3IgdGhlIG5lY2Vzc2FyeSBpbm5vdmF0aW9uIGludGVybmFsbHksIEFwcGxlIGlzIGV4cGVjdGVkIHRvIGdlbmVyYXRlICQ0MCBiaWxsaW9uIG9mIGVhcm5pbmdzIG5leHQgeWVhciwgd2hpY2ggYWxyZWFkeSB0YWtlcyBpbnRvIGFjY291bnQgYW4gaW5jcmVhc2luZyBSIGV4cGVuc2UuIEluIG9yZGVyIHRvIGFkZHJlc3MgdGhlIGFyZ3VtZW50IHRoYXQgQXBwbGUgc2hvdWxkIHJlc2VydmUgZXhjZXNzIGxpcXVpZGl0eSB0byBtb3JlIGVmZmVjdGl2ZWx5IGNvbXBldGUgd2l0aCBzb21lIG9mIGl0cyBkZWVwLXBvY2tldGVkIGNvbXBldGl0b3JzLCB0aGVyZSBpcyBubyBkb3VidCB0aGF0IHNvbWUgb2YgdGhlbSBhbHNvIGhhdmUgc2lnbmlmaWNhbnQgZWFybmluZ3MgYW5kIG5ldCBjYXNoIG9uIHRoZWlyIGJhbGFuY2Ugc2hlZXRzICh3aGV0aGVyIG9yIG5vdCB0aGF0IGlzIGFwcHJvcHJpYXRlKS4gQnV0IEFwcGxlIGhhcyBtdWNoIG1vcmUuIFdoZW4gY29tcGFyZWQgdG8gaXRzIG5leHQgbGFyZ2VzdCBjb21wZXRpdG9yLCBNaWNyb3NvZnQsIGZvciBleGFtcGxlLCBBcHBsZSBoYXMgJDY4IGJpbGxpb24gbW9yZSBuZXQgY2FzaCBhbmQgaXMgZXhwZWN0ZWQgdG8gZ2VuZXJhdGUgJDE4IGJpbGxpb24gbW9yZSBpbiBlYXJuaW5ncyBkdXJpbmcgMjAxNC5cclxuVGhlIEJvYXJkIG1heSBhcmd1ZSB0aGF0IG11Y2ggb2YgaXRzIGNhc2ggYW5kIGVhcm5pbmdzIGFyZSBpbnRlcm5hdGlvbmFsIGFuZCB0aGVyZWZvcmUgc3ViamVjdCB0byBhIHJlcGF0cmlhdGlvbiB0YXggaWYgcmV0dXJuZWQgdG8gdGhlIFVuaXRlZCBTdGF0ZXMgdG8gcmVwdXJjaGFzZSBzaGFyZXMuIFdoaWxlIHRoaXMgaXMgdHJ1ZSwgd2UgcXVlc3Rpb24gd2h5IHRoZSBjb21wYW55IHdvdWxkIG5vdCBzaW1wbHkgYm9ycm93IHRoZSBtb25leSBpbiB0aGUgVW5pdGVzIFN0YXRlcyB0byB0aGUgZXh0ZW50IGl0IGRlZW1zIGl0cyBkb21lc3RpYyBjYXNoIG9mICQzNiBiaWxsaW9uIGFuZCBkb21lc3RpYyBlYXJuaW5ncyBhcmUgaW5zdWZmaWNpZW50LiBHaXZlbiB0aGF0IHRoZSBjb21wYW55IGhhcyAkMTMwIGJpbGxpb24gb2YgbmV0IGNhc2ggYW5kICQ0MCBiaWxsaW9uIG9mIGV4cGVjdGVkIGFubnVhbCBlYXJuaW5ncywgYW5kIHRoZSBmYWN0IHRoYXQgaXQgaXMgaGFyZCB0byBmaW5kIGEgYmV0dGVyIHRpbWUgaW4gaGlzdG9yeSB0byBib3Jyb3cgbW9uZXksIGEgJDUwIGJpbGxpb24gc2hhcmUgcmVwdXJjaGFzZSBvdmVyIHRoZSBjb3Vyc2Ugb2YgZmlzY2FsIHllYXIgMjAxNCBzZWVtcyBtb3JlIHRoYW4gcmVhc29uYWJsZSB0byB1cy4gVG9kYXksIEFwcGxl4oCZcyBvdXRzdGFuZGluZyB0ZW4geWVhciBib25kcyB5aWVsZCAzLjYzJSwgYW5kIGl0cyBmaXZlIHllYXIgYm9uZHMgeWllbGQgMiUuIEFwcGxlIGNvdWxkIGVpdGhlciBjb250aW51ZSB0byBjYXJyeSB0aGlzIGRlYnQsIHJlcGF5IGl0IGZyb20gaXRzIGRvbWVzdGljIGVhcm5pbmdzIG92ZXIgdGltZSwgb3IgcmVwYXRyaWF0ZSBjYXNoIGZyb20gYWJyb2FkIHVwb24gdGhlIHBhc3NhZ2Ugb2YgY29ycG9yYXRlIHRheCByZWZvcm0uXHJcblRoZSBjb21wYW55IGhhcyBzdGF0ZWQgdGhhdCBpdCBpcyDigJx1cGRhdGluZyBwZXJzcGVjdGl2ZXMgb24gaXRzIGNhcGl0YWwgcmV0dXJuIHByb2dyYW0gZm9yIDIwMTQgYW5kIGJleW9uZOKAnSBhbmQg4oCcY29sbGVjdGluZyBpbnB1dCBmcm9tIGEgdmVyeSBicm9hZCBiYXNlIG9mIHNoYXJlaG9sZGVycy7igJ0gV2UgYmVsaWV2ZSwgaWYgb3VyIHByb3Bvc2FsIHJlY2VpdmVzIG1ham9yaXR5IHNoYXJlaG9sZGVyIHN1cHBvcnQsIHRoYXQgdGhlIEJvYXJkIHNob3VsZCByZXNwZWN0IGl0IGFuZCBpbmNyZWFzZSB0aGUgcmVwdXJjaGFzZSBwcm9ncmFtIGFzIHJlcXVlc3RlZC4gV2UgYmVsaWV2ZSB0aGlzIGFjdGlvbiB3aWxsIGdyZWF0bHkgZW5oYW5jZSB2YWx1ZSBmb3IgYWxsIGxvbmcgdGVybSBzaGFyZWhvbGRlcnMgd2hvIGJlbGlldmUsIGFzIHdlIGRvLCBpbiB0aGUgZ3JlYXQgcG90ZW50aWFsIG9mIHRoaXMgY29tcGFueS4gSWYgdGhlIEJvYXJkIHRha2VzIHRoaXMgYWN0aW9uLCB3ZSB3aWxsIGFwcGxhdWQgdGhlbSBmb3IgdGFraW5nIGFkdmFudGFnZSBvZiBvbmUgb2YgdGhlIGdyZWF0ZXN0IGV4YW1wbGVzIG9mIGEg4oCcbm8gYnJhaW5lcuKAnSB3ZSBoYXZlIHNlZW4gaW4gZml2ZSBkZWNhZGVzIG9mIHN1Y2Nlc3NmdWwgaW52ZXN0aW5nLlxyXG5TaW5jZXJlbHkgeW91cnMsXHJcbkNhcmwgQy4gSWNhaG4iLAogICJlbnRpdGllcyI6IFt7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkNhcmwgSWNhaG4gQnV5cyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjQKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC42NAogICAgfSwKICAgICJ0eXBlIjogIlBlcnNvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA1MzI4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiR29vZ2xlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY3CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC42NwogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA5ODk0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiU2lyaSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgfSwKICAgICJ0eXBlIjogIkxvY2F0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDQ2NSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkJvdWdodCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNwogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjcKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNjAxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQ2FybCBJY2FobiIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJDYXJsIEljYWhuIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJDYXJsIEljYWhuIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41OQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjYKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvQ2FybF9JY2FobiIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvUGVyc29uIl0sCiAgICAgICJjb25maWRlbmNlIjogMC4wMQogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNzM5MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40NwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA2ODEzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiVGltIENvb2siLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTAwNjcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaW0gQ29vayIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTIwMzQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaW0gQ29vayIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTQ0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTk3MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmVnYXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40NQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTM1MSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlRpbSBDb29rIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NwogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL1RpbV9Db29rIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9QZXJzb24iXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAxCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA4ODEzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiUmVlZCBIYXN0aW5ncyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDgKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC40OAogICAgfSwKICAgICJ0eXBlIjogIlBlcnNvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9SZWVkX0hhc3RpbmdzIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9QZXJzb24iXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDU5MTgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDU1OTMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc1CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDYwMTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc1CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDcyMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpUGhvbmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU0CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzcKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTYyNywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk1pbmkiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTUzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiTmV0ZmxpeCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC41NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNTQKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvTmV0ZmxpeCIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTMKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDEyMTMwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSm9uYXRoYW4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEyMDkyLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSm9uYXRoYW4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgIH0sCiAgICAidHlwZSI6ICJQZXJzb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTczMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJVbml0ZXMgU3RhdGVzIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmVnYXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41MgogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogIm5lZ2F0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNzczLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSWNhaG4gRW50ZXJwcmlzZXMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvSWNhaG5fRW50ZXJwcmlzZXMiLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0NvbXBhbnkiXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDExMTUsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaGUgUyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzMKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43MwogICAgfSwKICAgICJ0eXBlIjogIlByb2R1Y3QiLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTkwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiRm9yZXN0IExhYnMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ3CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNDcKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNDk3NCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIklEQyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjUKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTA4NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogImlUdW5lcyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE1NTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpVHVuZXMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ5CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNDkKICAgIH0sCiAgICAidHlwZSI6ICJMb2NhdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA4ODM1LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiTmV0ZmxpeCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODkwNSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5ldGZsaXgiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDk1MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5ldGZsaXgiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODYxMiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5ldGZsaXgiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUzCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDg5NTEsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJOZXRmbGl4IiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDE0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlR3aXR0ZXIiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTMKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjUzCiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTA2NzgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBaXJwbGF5IiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTU5MjQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJOZVhUIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40OQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjQ5CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDY3MiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkRlYXIgRmVsbG93IEFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NgogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc2CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDgzNDYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJTYW1zdW5nIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41MwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA1MzM2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiU2Ftc3VuZyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvU2Ftc3VuZyIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vc2NoZW1hLm9yZy9Pcmdhbml6YXRpb24iLCAiaHR0cDovL3d3dy53aWtpZGF0YS5vcmcvZW50aXR5L1E0MzIyOSIsICJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSIsICJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQWdlbnQiLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L09yZ2FuaXNhdGlvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTgKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDM3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUsIFJlbGVhc2VzIE9wZW4gTGV0dGVyIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ5CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC40OQogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA5NjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJIYWluIENlbGVzdGlhbCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC40NQogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9IYWluX0NlbGVzdGlhbF9Hcm91cCIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMAogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogOTc4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQ2hlc2FwZWFrZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTEKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC41MQogICAgfSwKICAgICJ0eXBlIjogIkxvY2F0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0NoZXNhcGVha2VfQmF5IiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9SaXZlciJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTgKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDExOTg2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiU3RldmUgSm9icyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5lZ2F0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTMKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTU5MDEsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJTdGV2ZSBKb2JzIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NwogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY3CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL1N0ZXZlX0pvYnMiLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L1BlcnNvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMDcKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDMxMjksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJTYWlkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDE3MDc4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiVGhlIEJvYXJkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTUwNzQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUaGUgQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC43CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDUzNjcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJDaGluZXNlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC43MwogICAgfSwKICAgICJ0eXBlIjogIkxvY2F0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0NoaW5hIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9Db3VudHJ5Il0sCiAgICAgICJjb25maWRlbmNlIjogNi45MgogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogODM0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIlNhbXN1bmcgRWxlY3Ryb25pY3MiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNjgKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvU2Ftc3VuZyIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vc2NoZW1hLm9yZy9Pcmdhbml6YXRpb24iLCAiaHR0cDovL3d3dy53aWtpZGF0YS5vcmcvZW50aXR5L1E0MzIyOSIsICJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSIsICJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQWdlbnQiLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L09yZ2FuaXNhdGlvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMTgKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDM3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTIKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDk5MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA3MTA0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDQ0NTcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjYKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTQwNzcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzMKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTc3MzMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzYKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE3MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTg5LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEwMTMzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE2NjI0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTIKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTA4MzgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNTE5OSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAzMjUsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNjE4NSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNDMzMSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE2NDYzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc2CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE1MDUzLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDExNzgwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDUwNzAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTEyMDgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC41MgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNjA4NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjM5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDU0ODYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTYKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDI3NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43MgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNTA4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDU2NTAsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTEwOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43MwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA3MjIwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDQ3MjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogODc1NCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA5MTg4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTAxNjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNjg0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDYzMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTAyNTQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzkKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogOTkyOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMDU4NSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNjE3MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42MwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiA2NzUxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMjgxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEwMDMwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTk5LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE2OTcxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTIzMjksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNzc4NywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42NQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNTk5NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU0CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDY2NzYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE1NjgsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5lZ2F0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogOTIyMCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjM4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE3ODE1LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc1CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEyMjU0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNDUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDM3NCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNTgxOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMTA3MSwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43OQogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxNjg4MCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkFwcGxlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUxCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDI2NjIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTE2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDEwNDY3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQXBwbGUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUyCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDg5OTEsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBcHBsZSIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc5CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0FwcGxlX0luYy4iLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL3NjaGVtYS5vcmcvT3JnYW5pemF0aW9uIiwgImh0dHA6Ly93d3cud2lraWRhdGEub3JnL2VudGl0eS9RNDMyMjkiLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0NvbXBhbnkiLCAiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0FnZW50IiwgImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9PcmdhbmlzYXRpb24iXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjU3CiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA2MDY4LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiVW5pdGVkIFN0YXRlcyIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjgKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTcyMTQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJVbml0ZWQgU3RhdGVzIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTIwOTIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJKb25hdGhhbiBJdmUiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjkKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY5CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0pvbmF0aGFuX0l2ZSIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vd3d3Lndpa2lkYXRhLm9yZy9lbnRpdHkvUTUiLCAiaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uIiwgImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9BZ2VudCIsICJodHRwOi8vd3d3Lndpa2lkYXRhLm9yZy9lbnRpdHkvUTIxNTYyNyIsICJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvUGVyc29uIiwgImh0dHA6Ly94bWxucy5jb20vZm9hZi8wLjEvUGVyc29uIl0sCiAgICAgICJjb25maWRlbmNlIjogMC4wCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxNTA3OCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkJvYXJkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjcKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTM1MTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzQKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTcwODIsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzUKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTQ4NTMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogIm5ldXRyYWwiLAogICAgICAgICJjb25maWRlbmNlIjogMC40NwogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAxMjU4MywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkJvYXJkIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NgogICAgICB9CiAgICB9LCB7CiAgICAgICJvZmZzZXQiOiAzNTU1LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY2CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE0NzYyLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjU2CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE1ODg0LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE4MjMxLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE0NjExLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDE4NDU2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQm9hcmQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc4CiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDQwMzksCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTMKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogMTM3MDQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJCb2FyZCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjIKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43OAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA2MTMsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJAQ2FybF9DX0ljYWhuIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjYzCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC42MwogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiA3NjAwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQ3VwZXJ0aW5vIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC42OAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY4CiAgICB9LAogICAgInR5cGUiOiAiTG9jYXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvQ3VwZXJ0aW5vLF9DYWxpZm9ybmlhIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9DaXR5Il0sCiAgICAgICJjb25maWRlbmNlIjogMC4wMwogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTYwLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQUFQTCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNTEKICAgICAgfQogICAgfSwgewogICAgICAib2Zmc2V0IjogNDkyLAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiQUFQTCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzIKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43MgogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxNjAyOCwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIk5vcnRlbCIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNzQKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9Ob3J0ZWwiLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L0NvbXBhbnkiXSwKICAgICAgImNvbmZpZGVuY2UiOiAwLjAzCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxMDA2LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiSGVyYmFsaWZlIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC41NQogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjU1CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0hlcmJhbGlmZSIsCiAgICAgICJwcm92aWRlciI6ICJkYnBlZGlhIiwKICAgICAgInR5cGVzIjogWyJodHRwOi8vZGJwZWRpYS5vcmcvb250b2xvZ3kvQ29tcGFueSJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMDEKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDU5OTcsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJOREMiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc3CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzcKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTk5LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAi4oCUIENhcmwgSWNhaG4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjUKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjY1CiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDU2MTQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJJcGFkIEFpciIsCiAgICAgICJzZW50aW1lbnQiOiB7CiAgICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjQKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICJjb25maWRlbmNlIjogMC42NAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbXQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxODY0NiwKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIkNhcmwgQy4gSWNhaG4iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgICAiY29uZmlkZW5jZSI6IDAuNjMKICAgICAgfQogICAgfV0sCiAgICAib3ZlcmFsbF9zZW50aW1lbnQiOiB7CiAgICAgICJwb2xhcml0eSI6ICJuZXV0cmFsIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjYzCiAgICB9LAogICAgInR5cGUiOiAiUGVyc29uIiwKICAgICJsaW5rcyI6IFt7CiAgICAgICJ1cmkiOiAiaHR0cDovL2RicGVkaWEub3JnL3Jlc291cmNlL0NhcmxfSWNhaG4iLAogICAgICAicHJvdmlkZXIiOiAiZGJwZWRpYSIsCiAgICAgICJ0eXBlcyI6IFsiaHR0cDovL2RicGVkaWEub3JnL29udG9sb2d5L1BlcnNvbiJdLAogICAgICAiY29uZmlkZW5jZSI6IDAuMDEKICAgIH1dCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDE2OTQ3LAogICAgICAiY29uZmlkZW5jZSI6IDEuMCwKICAgICAgInRleHQiOiAiTWljcm9zb2Z0IiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjUzCiAgICAgIH0KICAgIH0sIHsKICAgICAgIm9mZnNldCI6IDUzNDUsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJNaWNyb3NvZnQiLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjczCiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzMKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW3sKICAgICAgInVyaSI6ICJodHRwOi8vZGJwZWRpYS5vcmcvcmVzb3VyY2UvTWljcm9zb2Z0IiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9Db21wYW55Il0sCiAgICAgICJjb25maWRlbmNlIjogMS4zCiAgICB9XQogIH0sIHsKICAgICJtZW50aW9ucyI6IFt7CiAgICAgICJvZmZzZXQiOiAxNDYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJUd2l0dGVyIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjQ4CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAibmV1dHJhbCIsCiAgICAgICJjb25maWRlbmNlIjogMC40OAogICAgfSwKICAgICJ0eXBlIjogIk9yZ2FuaXphdGlvbiIsCiAgICAibGlua3MiOiBbewogICAgICAidXJpIjogImh0dHA6Ly9kYnBlZGlhLm9yZy9yZXNvdXJjZS9Ud2l0dGVyIiwKICAgICAgInByb3ZpZGVyIjogImRicGVkaWEiLAogICAgICAidHlwZXMiOiBbImh0dHA6Ly9kYnBlZGlhLm9yZy9vbnRvbG9neS9Db21wYW55Il0sCiAgICAgICJjb25maWRlbmNlIjogMC42OAogICAgfV0KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogNTYwNywKICAgICAgImNvbmZpZGVuY2UiOiAxLjAsCiAgICAgICJ0ZXh0IjogIjVjIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC43NAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjc0CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfSwgewogICAgIm1lbnRpb25zIjogW3sKICAgICAgIm9mZnNldCI6IDUzNTYsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJBbWF6b24iLAogICAgICAic2VudGltZW50IjogewogICAgICAgICJwb2xhcml0eSI6ICJwb3NpdGl2ZSIsCiAgICAgICAgImNvbmZpZGVuY2UiOiAwLjc2CiAgICAgIH0KICAgIH1dLAogICAgIm92ZXJhbGxfc2VudGltZW50IjogewogICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAiY29uZmlkZW5jZSI6IDAuNzYKICAgIH0sCiAgICAidHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgImxpbmtzIjogW10KICB9LCB7CiAgICAibWVudGlvbnMiOiBbewogICAgICAib2Zmc2V0IjogMTE1MDQsCiAgICAgICJjb25maWRlbmNlIjogMS4wLAogICAgICAidGV4dCI6ICJpQmVhY29uIiwKICAgICAgInNlbnRpbWVudCI6IHsKICAgICAgICAicG9sYXJpdHkiOiAicG9zaXRpdmUiLAogICAgICAgICJjb25maWRlbmNlIjogMC40OAogICAgICB9CiAgICB9XSwKICAgICJvdmVyYWxsX3NlbnRpbWVudCI6IHsKICAgICAgInBvbGFyaXR5IjogInBvc2l0aXZlIiwKICAgICAgImNvbmZpZGVuY2UiOiAwLjQ4CiAgICB9LAogICAgInR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICJsaW5rcyI6IFtdCiAgfV0KfQ==
51
+ http_version:
52
+ recorded_at: Thu, 31 May 2018 11:03:15 GMT
53
+ recorded_with: VCR 2.9.3
@@ -22,14 +22,12 @@ describe AylienTextApi::Client do
22
22
  require_relative './classify'
23
23
  require_relative './concepts'
24
24
  require_relative './entities'
25
+ require_relative './elsa'
25
26
  require_relative './extract'
26
27
  require_relative './hashtags'
27
28
  require_relative './language'
28
- require_relative './related'
29
29
  require_relative './sentiment'
30
30
  require_relative './summarize'
31
- require_relative './microformats'
32
- require_relative './unsupervised_classify'
33
31
  require_relative './combined'
34
32
  require_relative './image_tags'
35
33
  require_relative './classify_by_taxonomy'
@@ -0,0 +1,81 @@
1
+ describe "Elsa endpoint" do
2
+ before do
3
+ @url = "http://www.businessinsider.com/carl-icahn-open-letter-to-apple-2014-1"
4
+ @text = %q(Barack Hussein Obama II is the 44th and current
5
+ President of the United States, and the first
6
+ African American to hold the office.)
7
+ end
8
+
9
+ it "shouldn't be nil with valid url" do
10
+ VCR.use_cassette('elsa_with_valid_url') do
11
+ result = @client.elsa(url: @url)
12
+ result.wont_be_nil
13
+ end
14
+ end
15
+
16
+ it "shouldn't be nil with text" do
17
+ VCR.use_cassette('elsa_with_text') do
18
+ result = @client.elsa(text: @text)
19
+ result.wont_be_nil
20
+ end
21
+ end
22
+
23
+ it "shouldn't be nil with value as valid url" do
24
+ VCR.use_cassette('elsa_with_value_as_valid_url') do
25
+ result = @client.elsa(@url)
26
+ result.wont_be_nil
27
+ end
28
+ end
29
+
30
+ it "shouldn't be nil with value as text" do
31
+ VCR.use_cassette('elsa_with_value_as_text') do
32
+ result = @client.elsa(@text)
33
+ result.wont_be_nil
34
+ end
35
+ end
36
+
37
+ it "should be nil with unauthenticated client" do
38
+ VCR.use_cassette('elsa_with_unauthenticated_client') do
39
+ result = @unauthenticated_client.elsa(text: @text)
40
+ result.must_be_nil
41
+ end
42
+ end
43
+
44
+ it "should raise Forbidden with unauthenticated client" do
45
+ VCR.use_cassette('elsa_with_unauthenticated_client') do
46
+ proc {
47
+ @unauthenticated_client.elsa!(text: @text)
48
+ }.must_raise AylienTextApi::Error::Forbidden
49
+ end
50
+ end
51
+
52
+ it "should be nil with invalid client" do
53
+ VCR.use_cassette('elsa_with_invalid_client') do
54
+ result = @invalid_client.elsa(text: @text)
55
+ result.must_be_nil
56
+ end
57
+ end
58
+
59
+ it "should raise Forbidden with invalid client" do
60
+ VCR.use_cassette('elsa_with_invalid_client') do
61
+ proc {
62
+ @invalid_client.elsa!(text: @text)
63
+ }.must_raise AylienTextApi::Error::Forbidden
64
+ end
65
+ end
66
+
67
+ it "should be nil with invalid params" do
68
+ VCR.use_cassette('elsa_with_invalid_params') do
69
+ result = @client.elsa(wrong_param: @text)
70
+ result.must_be_nil
71
+ end
72
+ end
73
+
74
+ it "should raise BadRequest with invalid params" do
75
+ VCR.use_cassette('elsa_with_invalid_params') do
76
+ proc {
77
+ @client.elsa!(wrong_param: @text)
78
+ }.must_raise AylienTextApi::Error::BadRequest
79
+ end
80
+ end
81
+ end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aylien_text_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aylien Inc.
8
- - Hamed Ramezanian
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2016-05-21 00:00:00.000000000 Z
11
+ date: 2018-06-13 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
@@ -59,20 +58,19 @@ dependencies:
59
58
  requirements:
60
59
  - - "~>"
61
60
  - !ruby/object:Gem::Version
62
- version: '1.20'
61
+ version: 2.3.2
63
62
  type: :development
64
63
  prerelease: false
65
64
  version_requirements: !ruby/object:Gem::Requirement
66
65
  requirements:
67
66
  - - "~>"
68
67
  - !ruby/object:Gem::Version
69
- version: '1.20'
68
+ version: 2.3.2
70
69
  description: AYLIEN Text Analysis API is a package of Natural Language Processing
71
70
  and Machine Learning-powered tools for analyzing and extracting various kinds of
72
71
  information from text and images.
73
72
  email:
74
73
  - support@aylien.com
75
- - hamed.r.nik@gmail.com
76
74
  executables: []
77
75
  extensions: []
78
76
  extra_rdoc_files: []
@@ -126,6 +124,13 @@ files:
126
124
  - spec/fixtures/aylien_text_api/client/concepts_with_valid_url.yml
127
125
  - spec/fixtures/aylien_text_api/client/concepts_with_value_as_text.yml
128
126
  - spec/fixtures/aylien_text_api/client/concepts_with_value_as_valid_url.yml
127
+ - spec/fixtures/aylien_text_api/client/elsa_with_invalid_client.yml
128
+ - spec/fixtures/aylien_text_api/client/elsa_with_invalid_params.yml
129
+ - spec/fixtures/aylien_text_api/client/elsa_with_text.yml
130
+ - spec/fixtures/aylien_text_api/client/elsa_with_unauthenticated_client.yml
131
+ - spec/fixtures/aylien_text_api/client/elsa_with_valid_url.yml
132
+ - spec/fixtures/aylien_text_api/client/elsa_with_value_as_text.yml
133
+ - spec/fixtures/aylien_text_api/client/elsa_with_value_as_valid_url.yml
129
134
  - spec/fixtures/aylien_text_api/client/entities_with_invalid_client.yml
130
135
  - spec/fixtures/aylien_text_api/client/entities_with_invalid_params.yml
131
136
  - spec/fixtures/aylien_text_api/client/entities_with_text.yml
@@ -159,20 +164,9 @@ files:
159
164
  - spec/fixtures/aylien_text_api/client/language_with_valid_url.yml
160
165
  - spec/fixtures/aylien_text_api/client/language_with_value_as_text.yml
161
166
  - spec/fixtures/aylien_text_api/client/language_with_value_as_valid_url.yml
162
- - spec/fixtures/aylien_text_api/client/microformats_with_invalid_client.yml
163
- - spec/fixtures/aylien_text_api/client/microformats_with_invalid_params.yml
164
- - spec/fixtures/aylien_text_api/client/microformats_with_unauthenticated_client.yml
165
- - spec/fixtures/aylien_text_api/client/microformats_with_valid_url.yml
166
- - spec/fixtures/aylien_text_api/client/microformats_with_value_as_valid_url.yml
167
167
  - spec/fixtures/aylien_text_api/client/rate_limits.yml
168
168
  - spec/fixtures/aylien_text_api/client/rate_limits_with_invalid_client.yml
169
169
  - spec/fixtures/aylien_text_api/client/rate_limits_with_unauthenticated_client.yml
170
- - spec/fixtures/aylien_text_api/client/related_with_invalid_client.yml
171
- - spec/fixtures/aylien_text_api/client/related_with_invalid_params.yml
172
- - spec/fixtures/aylien_text_api/client/related_with_phrase.yml
173
- - spec/fixtures/aylien_text_api/client/related_with_unauthenticated_client.yml
174
- - spec/fixtures/aylien_text_api/client/related_with_value_as_phrase.yml
175
- - spec/fixtures/aylien_text_api/client/related_with_value_as_valid_url.yml
176
170
  - spec/fixtures/aylien_text_api/client/sentiment_with_invalid_client.yml
177
171
  - spec/fixtures/aylien_text_api/client/sentiment_with_invalid_params.yml
178
172
  - spec/fixtures/aylien_text_api/client/sentiment_with_text.yml
@@ -188,30 +182,21 @@ files:
188
182
  - spec/fixtures/aylien_text_api/client/summarize_with_value_as_text_and_title.yml
189
183
  - spec/fixtures/aylien_text_api/client/summarize_with_value_as_text_and_without_title.yml
190
184
  - spec/fixtures/aylien_text_api/client/summarize_with_value_as_valid_url.yml
191
- - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_client.yml
192
- - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_params.yml
193
- - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_text.yml
194
- - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_unauthenticated_client.yml
195
- - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_valid_url.yml
196
- - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_text.yml
197
- - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_valid_url.yml
198
185
  - spec/lib/aylien_text_api/absa.rb
199
186
  - spec/lib/aylien_text_api/classify.rb
200
187
  - spec/lib/aylien_text_api/classify_by_taxonomy.rb
201
188
  - spec/lib/aylien_text_api/client_spec.rb
202
189
  - spec/lib/aylien_text_api/combined.rb
203
190
  - spec/lib/aylien_text_api/concepts.rb
191
+ - spec/lib/aylien_text_api/elsa.rb
204
192
  - spec/lib/aylien_text_api/entities.rb
205
193
  - spec/lib/aylien_text_api/extract.rb
206
194
  - spec/lib/aylien_text_api/hashtags.rb
207
195
  - spec/lib/aylien_text_api/image_tags.rb
208
196
  - spec/lib/aylien_text_api/language.rb
209
- - spec/lib/aylien_text_api/microformats.rb
210
197
  - spec/lib/aylien_text_api/rate_limits.rb
211
- - spec/lib/aylien_text_api/related.rb
212
198
  - spec/lib/aylien_text_api/sentiment.rb
213
199
  - spec/lib/aylien_text_api/summarize.rb
214
- - spec/lib/aylien_text_api/unsupervised_classify.rb
215
200
  - spec/spec_helper.rb
216
201
  homepage: https://github.com/AYLIEN/aylien_textapi_ruby
217
202
  licenses:
@@ -233,133 +218,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
233
218
  version: '0'
234
219
  requirements: []
235
220
  rubyforge_project:
236
- rubygems_version: 2.6.4
221
+ rubygems_version: 2.7.6
237
222
  signing_key:
238
223
  specification_version: 4
239
224
  summary: AYLIEN Text Analysis API is a package of Natural Language Processing and
240
225
  Machine Learning-powered tools for analyzing and extracting various kinds of information
241
226
  from text and images.
242
- test_files:
243
- - spec/fixtures/aylien_text_api/client/absa_with_invalid_client.yml
244
- - spec/fixtures/aylien_text_api/client/absa_with_invalid_params.yml
245
- - spec/fixtures/aylien_text_api/client/absa_with_text.yml
246
- - spec/fixtures/aylien_text_api/client/absa_with_unauthenticated_client.yml
247
- - spec/fixtures/aylien_text_api/client/absa_with_valid_url.yml
248
- - spec/fixtures/aylien_text_api/client/absa_with_value_as_text.yml
249
- - spec/fixtures/aylien_text_api/client/absa_with_value_as_valid_url.yml
250
- - spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_invalid_client.yml
251
- - spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_invalid_params.yml
252
- - spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_invalid_taxonomy.yml
253
- - spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_text.yml
254
- - spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_unauthenticated_client.yml
255
- - spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_valid_url.yml
256
- - spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_value_as_text.yml
257
- - spec/fixtures/aylien_text_api/client/classify_by_taxonomy_with_value_as_valid_url.yml
258
- - spec/fixtures/aylien_text_api/client/classify_with_invalid_client.yml
259
- - spec/fixtures/aylien_text_api/client/classify_with_invalid_params.yml
260
- - spec/fixtures/aylien_text_api/client/classify_with_text.yml
261
- - spec/fixtures/aylien_text_api/client/classify_with_unauthenticated_client.yml
262
- - spec/fixtures/aylien_text_api/client/classify_with_valid_url.yml
263
- - spec/fixtures/aylien_text_api/client/classify_with_value_as_text.yml
264
- - spec/fixtures/aylien_text_api/client/classify_with_value_as_valid_url.yml
265
- - spec/fixtures/aylien_text_api/client/combined_with_invalid_client.yml
266
- - spec/fixtures/aylien_text_api/client/combined_with_invalid_params.yml
267
- - spec/fixtures/aylien_text_api/client/combined_with_text.yml
268
- - spec/fixtures/aylien_text_api/client/combined_with_unauthenticated_client.yml
269
- - spec/fixtures/aylien_text_api/client/combined_with_valid_url.yml
270
- - spec/fixtures/aylien_text_api/client/combined_with_value_as_text.yml
271
- - spec/fixtures/aylien_text_api/client/combined_with_value_as_valid_url.yml
272
- - spec/fixtures/aylien_text_api/client/concepts_with_invalid_client.yml
273
- - spec/fixtures/aylien_text_api/client/concepts_with_invalid_params.yml
274
- - spec/fixtures/aylien_text_api/client/concepts_with_text.yml
275
- - spec/fixtures/aylien_text_api/client/concepts_with_unauthenticated_client.yml
276
- - spec/fixtures/aylien_text_api/client/concepts_with_valid_url.yml
277
- - spec/fixtures/aylien_text_api/client/concepts_with_value_as_text.yml
278
- - spec/fixtures/aylien_text_api/client/concepts_with_value_as_valid_url.yml
279
- - spec/fixtures/aylien_text_api/client/entities_with_invalid_client.yml
280
- - spec/fixtures/aylien_text_api/client/entities_with_invalid_params.yml
281
- - spec/fixtures/aylien_text_api/client/entities_with_text.yml
282
- - spec/fixtures/aylien_text_api/client/entities_with_unauthenticated_client.yml
283
- - spec/fixtures/aylien_text_api/client/entities_with_valid_url.yml
284
- - spec/fixtures/aylien_text_api/client/entities_with_value_as_text.yml
285
- - spec/fixtures/aylien_text_api/client/entities_with_value_as_valid_url.yml
286
- - spec/fixtures/aylien_text_api/client/extract_with_invalid_client.yml
287
- - spec/fixtures/aylien_text_api/client/extract_with_invalid_params.yml
288
- - spec/fixtures/aylien_text_api/client/extract_with_unauthenticated_client.yml
289
- - spec/fixtures/aylien_text_api/client/extract_with_valid_url.yml
290
- - spec/fixtures/aylien_text_api/client/extract_with_value_as_text.yml
291
- - spec/fixtures/aylien_text_api/client/extract_with_value_as_valid_url.yml
292
- - spec/fixtures/aylien_text_api/client/hashtags_with_invalid_client.yml
293
- - spec/fixtures/aylien_text_api/client/hashtags_with_invalid_params.yml
294
- - spec/fixtures/aylien_text_api/client/hashtags_with_text.yml
295
- - spec/fixtures/aylien_text_api/client/hashtags_with_unauthenticated_client.yml
296
- - spec/fixtures/aylien_text_api/client/hashtags_with_valid_url.yml
297
- - spec/fixtures/aylien_text_api/client/hashtags_with_value_as_text.yml
298
- - spec/fixtures/aylien_text_api/client/hashtags_with_value_as_valid_url.yml
299
- - spec/fixtures/aylien_text_api/client/image_tags_with_invalid_client.yml
300
- - spec/fixtures/aylien_text_api/client/image_tags_with_invalid_params.yml
301
- - spec/fixtures/aylien_text_api/client/image_tags_with_unauthenticated_client.yml
302
- - spec/fixtures/aylien_text_api/client/image_tags_with_valid_url.yml
303
- - spec/fixtures/aylien_text_api/client/image_tags_with_value_as_text.yml
304
- - spec/fixtures/aylien_text_api/client/image_tags_with_value_as_valid_url.yml
305
- - spec/fixtures/aylien_text_api/client/language_with_invalid_client.yml
306
- - spec/fixtures/aylien_text_api/client/language_with_invalid_params.yml
307
- - spec/fixtures/aylien_text_api/client/language_with_unauthenticated_client.yml
308
- - spec/fixtures/aylien_text_api/client/language_with_valid_text.yml
309
- - spec/fixtures/aylien_text_api/client/language_with_valid_url.yml
310
- - spec/fixtures/aylien_text_api/client/language_with_value_as_text.yml
311
- - spec/fixtures/aylien_text_api/client/language_with_value_as_valid_url.yml
312
- - spec/fixtures/aylien_text_api/client/microformats_with_invalid_client.yml
313
- - spec/fixtures/aylien_text_api/client/microformats_with_invalid_params.yml
314
- - spec/fixtures/aylien_text_api/client/microformats_with_unauthenticated_client.yml
315
- - spec/fixtures/aylien_text_api/client/microformats_with_valid_url.yml
316
- - spec/fixtures/aylien_text_api/client/microformats_with_value_as_valid_url.yml
317
- - spec/fixtures/aylien_text_api/client/rate_limits.yml
318
- - spec/fixtures/aylien_text_api/client/rate_limits_with_invalid_client.yml
319
- - spec/fixtures/aylien_text_api/client/rate_limits_with_unauthenticated_client.yml
320
- - spec/fixtures/aylien_text_api/client/related_with_invalid_client.yml
321
- - spec/fixtures/aylien_text_api/client/related_with_invalid_params.yml
322
- - spec/fixtures/aylien_text_api/client/related_with_phrase.yml
323
- - spec/fixtures/aylien_text_api/client/related_with_unauthenticated_client.yml
324
- - spec/fixtures/aylien_text_api/client/related_with_value_as_phrase.yml
325
- - spec/fixtures/aylien_text_api/client/related_with_value_as_valid_url.yml
326
- - spec/fixtures/aylien_text_api/client/sentiment_with_invalid_client.yml
327
- - spec/fixtures/aylien_text_api/client/sentiment_with_invalid_params.yml
328
- - spec/fixtures/aylien_text_api/client/sentiment_with_text.yml
329
- - spec/fixtures/aylien_text_api/client/sentiment_with_unauthenticated_client.yml
330
- - spec/fixtures/aylien_text_api/client/sentiment_with_valid_url.yml
331
- - spec/fixtures/aylien_text_api/client/sentiment_with_value_as_text.yml
332
- - spec/fixtures/aylien_text_api/client/sentiment_with_value_as_valid_url.yml
333
- - spec/fixtures/aylien_text_api/client/summarize_with_invalid_client.yml
334
- - spec/fixtures/aylien_text_api/client/summarize_with_invalid_params.yml
335
- - spec/fixtures/aylien_text_api/client/summarize_with_title_and_text.yml
336
- - spec/fixtures/aylien_text_api/client/summarize_with_unauthenticated_client.yml
337
- - spec/fixtures/aylien_text_api/client/summarize_with_valid_url.yml
338
- - spec/fixtures/aylien_text_api/client/summarize_with_value_as_text_and_title.yml
339
- - spec/fixtures/aylien_text_api/client/summarize_with_value_as_text_and_without_title.yml
340
- - spec/fixtures/aylien_text_api/client/summarize_with_value_as_valid_url.yml
341
- - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_client.yml
342
- - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_invalid_params.yml
343
- - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_text.yml
344
- - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_unauthenticated_client.yml
345
- - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_valid_url.yml
346
- - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_text.yml
347
- - spec/fixtures/aylien_text_api/client/unsupervised_classify_with_value_as_valid_url.yml
348
- - spec/lib/aylien_text_api/absa.rb
349
- - spec/lib/aylien_text_api/classify.rb
350
- - spec/lib/aylien_text_api/classify_by_taxonomy.rb
351
- - spec/lib/aylien_text_api/client_spec.rb
352
- - spec/lib/aylien_text_api/combined.rb
353
- - spec/lib/aylien_text_api/concepts.rb
354
- - spec/lib/aylien_text_api/entities.rb
355
- - spec/lib/aylien_text_api/extract.rb
356
- - spec/lib/aylien_text_api/hashtags.rb
357
- - spec/lib/aylien_text_api/image_tags.rb
358
- - spec/lib/aylien_text_api/language.rb
359
- - spec/lib/aylien_text_api/microformats.rb
360
- - spec/lib/aylien_text_api/rate_limits.rb
361
- - spec/lib/aylien_text_api/related.rb
362
- - spec/lib/aylien_text_api/sentiment.rb
363
- - spec/lib/aylien_text_api/summarize.rb
364
- - spec/lib/aylien_text_api/unsupervised_classify.rb
365
- - spec/spec_helper.rb
227
+ test_files: []