riak-client 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.markdown +55 -12
  3. data/RELEASE_NOTES.md +20 -1
  4. data/lib/riak.rb +1 -0
  5. data/lib/riak/client.rb +2 -1
  6. data/lib/riak/client/beefcake/crdt/counter_loader.rb +18 -0
  7. data/lib/riak/client/beefcake/crdt/map_loader.rb +64 -0
  8. data/lib/riak/client/beefcake/crdt/set_loader.rb +18 -0
  9. data/lib/riak/client/beefcake/crdt_loader.rb +16 -59
  10. data/lib/riak/client/beefcake/crdt_operator.rb +2 -1
  11. data/lib/riak/client/instrumentation.rb +19 -0
  12. data/lib/riak/crdt/base.rb +16 -0
  13. data/lib/riak/errors/backend_creation.rb +9 -0
  14. data/lib/riak/instrumentation.rb +6 -0
  15. data/lib/riak/version.rb +1 -1
  16. data/riak-client.gemspec +3 -2
  17. data/spec/integration/riak/counters_spec.rb +1 -1
  18. data/spec/integration/riak/crdt_spec.rb +68 -23
  19. data/spec/integration/riak/protobuffs_backends_spec.rb +1 -1
  20. data/spec/integration/riak/threading_spec.rb +4 -4
  21. data/spec/integration/yokozuna/index_spec.rb +5 -5
  22. data/spec/integration/yokozuna/queries_spec.rb +15 -16
  23. data/spec/integration/yokozuna/schema_spec.rb +2 -2
  24. data/spec/riak/beefcake_protobuffs_backend/crdt_operator_spec.rb +8 -8
  25. data/spec/riak/beefcake_protobuffs_backend/object_methods_spec.rb +1 -1
  26. data/spec/riak/beefcake_protobuffs_backend_spec.rb +8 -8
  27. data/spec/riak/bucket_spec.rb +38 -38
  28. data/spec/riak/client_spec.rb +26 -27
  29. data/spec/riak/core_ext/to_param_spec.rb +2 -2
  30. data/spec/riak/counter_spec.rb +11 -11
  31. data/spec/riak/crdt/counter_spec.rb +4 -2
  32. data/spec/riak/crdt/inner_counter_spec.rb +1 -1
  33. data/spec/riak/crdt/inner_flag_spec.rb +4 -4
  34. data/spec/riak/crdt/inner_map_spec.rb +3 -3
  35. data/spec/riak/crdt/inner_register_spec.rb +5 -5
  36. data/spec/riak/crdt/inner_set_spec.rb +1 -1
  37. data/spec/riak/crdt/map_spec.rb +2 -2
  38. data/spec/riak/crdt/set_spec.rb +4 -2
  39. data/spec/riak/crdt/shared_examples.rb +15 -15
  40. data/spec/riak/crdt/typed_collection_spec.rb +16 -22
  41. data/spec/riak/escape_spec.rb +10 -10
  42. data/spec/riak/feature_detection_spec.rb +1 -1
  43. data/spec/riak/index_collection_spec.rb +7 -4
  44. data/spec/riak/instrumentation_spec.rb +124 -0
  45. data/spec/riak/link_spec.rb +12 -12
  46. data/spec/riak/list_buckets_spec.rb +2 -2
  47. data/spec/riak/map_reduce/filter_builder_spec.rb +5 -5
  48. data/spec/riak/map_reduce/phase_spec.rb +20 -20
  49. data/spec/riak/map_reduce_spec.rb +50 -50
  50. data/spec/riak/multiget_spec.rb +5 -5
  51. data/spec/riak/node_spec.rb +3 -3
  52. data/spec/riak/robject_spec.rb +46 -45
  53. data/spec/riak/search_spec.rb +11 -11
  54. data/spec/riak/secondary_index_spec.rb +9 -9
  55. data/spec/riak/stamp_spec.rb +5 -5
  56. data/spec/riak/walk_spec_spec.rb +30 -30
  57. data/spec/spec_helper.rb +6 -0
  58. data/spec/support/certs/ca.crt +19 -20
  59. data/spec/support/certs/client.crl +13 -0
  60. data/spec/support/certs/client.crt +68 -69
  61. data/spec/support/certs/client.csr +18 -0
  62. data/spec/support/certs/client.key +25 -25
  63. data/spec/support/certs/server.crl +11 -11
  64. data/spec/support/certs/server.crt +68 -69
  65. data/spec/support/certs/server.key +25 -25
  66. data/spec/support/unified_backend_examples.rb +33 -33
  67. metadata +31 -5
@@ -10,17 +10,17 @@ describe "Search features" do
10
10
  end
11
11
 
12
12
  describe "searching" do
13
- it "should search the default index" do
13
+ it "searches the default index" do
14
14
  expect(@pb).to receive(:search).with(nil, "foo", {}).and_return({})
15
15
  @client.search("foo")
16
16
  end
17
17
 
18
- it "should search the default index with additional options" do
18
+ it "searches the default index with additional options" do
19
19
  expect(@pb).to receive(:search).with(nil, 'foo', 'rows' => 30).and_return({})
20
20
  @client.search("foo", 'rows' => 30)
21
21
  end
22
22
 
23
- it "should search the specified index" do
23
+ it "searches the specified index" do
24
24
  expect(@pb).to receive(:search).with('search', 'foo', {}).and_return({})
25
25
  @client.search("search", "foo")
26
26
  end
@@ -41,7 +41,7 @@ describe "Search features" do
41
41
  @bucket.instance_variable_set(:@props, {"precommit" => [{"mod" => "riak_search_kv_hook", "fun" => "precommit"}], "search" => true})
42
42
  end
43
43
 
44
- it "should detect whether the indexing hook is installed" do
44
+ it "detects whether the indexing hook is installed" do
45
45
  load_without_index_hook
46
46
  expect(@bucket.is_indexed?).to be_falsey
47
47
 
@@ -50,13 +50,13 @@ describe "Search features" do
50
50
  end
51
51
 
52
52
  describe "enabling indexing" do
53
- it "should add the index hook when not present" do
53
+ it "adds the index hook when not present" do
54
54
  load_without_index_hook
55
55
  expect(@bucket).to receive(:props=).with({"precommit" => [Riak::Bucket::SEARCH_PRECOMMIT_HOOK], "search" => true})
56
56
  @bucket.enable_index!
57
57
  end
58
58
 
59
- it "should not modify the precommit when the hook is present" do
59
+ it "doesn't modify the precommit when the hook is present" do
60
60
  load_with_index_hook
61
61
  expect(@bucket).not_to receive(:props=)
62
62
  @bucket.enable_index!
@@ -64,13 +64,13 @@ describe "Search features" do
64
64
  end
65
65
 
66
66
  describe "disabling indexing" do
67
- it "should remove the index hook when present" do
67
+ it "removes the index hook when present" do
68
68
  load_with_index_hook
69
69
  expect(@bucket).to receive(:props=).with({"precommit" => [], "search" => false})
70
70
  @bucket.disable_index!
71
71
  end
72
72
 
73
- it "should not modify the precommit when the hook is missing" do
73
+ it "doesn't modify the precommit when the hook is missing" do
74
74
  load_without_index_hook
75
75
  expect(@bucket).not_to receive(:props=)
76
76
  @bucket.disable_index!
@@ -85,17 +85,17 @@ describe "Search features" do
85
85
  end
86
86
 
87
87
  describe "using a search query as inputs" do
88
- it "should accept a bucket name and query" do
88
+ it "accepts a bucket name and query" do
89
89
  @mr.search("foo", "bar OR baz")
90
90
  expect(@mr.inputs).to eq({:module => "riak_search", :function => "mapred_search", :arg => ["foo", "bar OR baz"]})
91
91
  end
92
92
 
93
- it "should accept a Riak::Bucket and query" do
93
+ it "accepts a Riak::Bucket and query" do
94
94
  @mr.search(Riak::Bucket.new(@client, "foo"), "bar OR baz")
95
95
  expect(@mr.inputs).to eq({:module => "riak_search", :function => "mapred_search", :arg => ["foo", "bar OR baz"]})
96
96
  end
97
97
 
98
- it "should emit the Erlang function and arguments" do
98
+ it "emits the Erlang function and arguments" do
99
99
  @mr.search("foo", "bar OR baz")
100
100
  expect(@mr.to_json).to include('"inputs":{')
101
101
  expect(@mr.to_json).to include('"module":"riak_search"')
@@ -7,12 +7,12 @@ describe Riak::SecondaryIndex do
7
7
  end
8
8
 
9
9
  describe "initialization" do
10
- it "should accept a bucket, index name, and scalar" do
10
+ it "accepts a bucket, index name, and scalar" do
11
11
  expect { Riak::SecondaryIndex.new @bucket, 'asdf', 'aaaa' }.not_to raise_error
12
12
  expect { Riak::SecondaryIndex.new @bucket, 'asdf', 12345 }.not_to raise_error
13
13
  end
14
14
 
15
- it "should accept a bucket, index name, and a range" do
15
+ it "accepts a bucket, index name, and a range" do
16
16
  expect { Riak::SecondaryIndex.new @bucket, 'asdf', 'aaaa'..'zzzz' }.not_to raise_error
17
17
  expect { Riak::SecondaryIndex.new @bucket, 'asdf', 1..5 }.not_to raise_error
18
18
  end
@@ -28,12 +28,12 @@ describe Riak::SecondaryIndex do
28
28
  expect(@backend).to receive(:get_index).with(*@args).and_return(%w{abcd efgh})
29
29
  end
30
30
 
31
- it "should return an array of keys" do
31
+ it "returns an array of keys" do
32
32
  @results = @index.keys
33
33
  expect(@results).to be_a Array
34
34
  expect(@results.first).to be_a String
35
35
  end
36
- it "should return an array of values" do
36
+ it "returns an array of values" do
37
37
  expect(@backend).to receive(:fetch_object).with(@bucket, 'abcd', {}).and_return('abcd')
38
38
  expect(@backend).to receive(:fetch_object).with(@bucket, 'efgh', {}).and_return('efgh')
39
39
 
@@ -44,7 +44,7 @@ describe Riak::SecondaryIndex do
44
44
  end
45
45
 
46
46
  describe "streaming" do
47
- it "should stream keys into a block" do
47
+ it "streams keys into a block" do
48
48
  @backend = double 'Backend'
49
49
  allow(@client).to receive(:backend).and_yield(@backend)
50
50
  @args = [@bucket, 'asdf', 'aaaa'..'zzzz', {stream: true}]
@@ -57,7 +57,7 @@ describe Riak::SecondaryIndex do
57
57
  end
58
58
 
59
59
  describe "pagination" do
60
- it "should support max_results" do
60
+ it "supports max_results" do
61
61
  @max_results = 5
62
62
 
63
63
  @expected_collection = Riak::IndexCollection.new_from_json({
@@ -92,7 +92,7 @@ describe Riak::SecondaryIndex do
92
92
  expect(@results.length).to eq(@max_results)
93
93
  end
94
94
 
95
- it "should support continuations" do
95
+ it "supports continuations" do
96
96
  @max_results = 5
97
97
 
98
98
  @expected_collection = Riak::IndexCollection.new_from_json({
@@ -127,7 +127,7 @@ describe Riak::SecondaryIndex do
127
127
  expect(@results).to eq(@expected_collection)
128
128
  end
129
129
 
130
- it "should support a next_page method" do
130
+ it "supports a next_page method" do
131
131
  @max_results = 5
132
132
 
133
133
  @expected_collection = Riak::IndexCollection.new_from_json({
@@ -182,7 +182,7 @@ describe Riak::SecondaryIndex do
182
182
  end
183
183
 
184
184
  describe "return_terms" do
185
- it "should optionally give the index value" do
185
+ it "optionally gives the index value" do
186
186
  @expected_collection = Riak::IndexCollection.new_from_json({
187
187
  'results' => [
188
188
  {'aaaa' => 'aaaa'},
@@ -3,7 +3,7 @@ require 'riak/stamp'
3
3
 
4
4
  describe Riak::Stamp, test_client: true do
5
5
  subject { described_class.new test_client }
6
- it "should generate always increasing integer identifiers" do
6
+ it "generates always increasing integer identifiers" do
7
7
  1000.times do
8
8
  one = subject.next
9
9
  two = subject.next
@@ -12,7 +12,7 @@ describe Riak::Stamp, test_client: true do
12
12
  end
13
13
  end
14
14
 
15
- it "should delay until the next millisecond when the sequence overflows" do
15
+ it "delays until the next millisecond when the sequence overflows" do
16
16
  old = subject.instance_variable_get(:@timestamp) + 0
17
17
  subject.instance_variable_set(:@sequence, described_class::SEQUENCE_MASK)
18
18
  count = 0
@@ -28,7 +28,7 @@ describe Riak::Stamp, test_client: true do
28
28
  expect((subject.next >> described_class::TIMESTAMP_SHIFT) & described_class::TIMESTAMP_MASK).to eq(old + 1)
29
29
  end
30
30
 
31
- it "should raise an exception when the system clock moves backwards" do
31
+ it "raises an exception when the system clock moves backwards" do
32
32
  old = subject.instance_variable_get(:@timestamp)
33
33
  expect(subject).to receive(:time_gen).and_return(old - 10)
34
34
  expect {
@@ -39,7 +39,7 @@ describe Riak::Stamp, test_client: true do
39
39
  # The client/worker ID should be used for disambiguation, not for
40
40
  # primary ordering. This breaks from the Snowflake model where the
41
41
  # worker ID is in more significant bits.
42
- it "should use the client ID as the bottom component of the identifier" do
42
+ it "uses the client ID as the bottom component of the identifier" do
43
43
  expect(subject.next & described_class::CLIENT_ID_MASK).to eq(subject.client.client_id.hash & described_class::CLIENT_ID_MASK)
44
44
  end
45
45
 
@@ -47,7 +47,7 @@ describe Riak::Stamp, test_client: true do
47
47
  subject { described_class.new(Riak::Client.new(:client_id => "ripple")) }
48
48
  let(:hash) { "ripple".hash }
49
49
 
50
- it "should use the hash of the client ID as the bottom component of the identifier" do
50
+ it "uses the hash of the client ID as the bottom component of the identifier" do
51
51
  expect(subject.next & described_class::CLIENT_ID_MASK).to eq(subject.client.client_id.hash & described_class::CLIENT_ID_MASK)
52
52
  end
53
53
  end
@@ -3,28 +3,28 @@ require 'spec_helper'
3
3
  describe Riak::WalkSpec do
4
4
  describe "initializing" do
5
5
  describe "with a hash" do
6
- it "should be empty by default" do
6
+ it "is empty by default" do
7
7
  spec = Riak::WalkSpec.new({})
8
8
  expect(spec.bucket).to eq("_")
9
9
  expect(spec.tag).to eq("_")
10
10
  expect(spec.keep).to be_falsey
11
11
  end
12
12
 
13
- it "should extract the bucket" do
13
+ it "extracts the bucket" do
14
14
  spec = Riak::WalkSpec.new({:bucket => "foo"})
15
15
  expect(spec.bucket).to eq("foo")
16
16
  expect(spec.tag).to eq("_")
17
17
  expect(spec.keep).to be_falsey
18
18
  end
19
19
 
20
- it "should extract the tag" do
20
+ it "extracts the tag" do
21
21
  spec = Riak::WalkSpec.new({:tag => "foo"})
22
22
  expect(spec.bucket).to eq("_")
23
23
  expect(spec.tag).to eq("foo")
24
24
  expect(spec.keep).to be_falsey
25
25
  end
26
26
 
27
- it "should extract the keep" do
27
+ it "extracts the keep" do
28
28
  spec = Riak::WalkSpec.new({:keep => true})
29
29
  expect(spec.bucket).to eq("_")
30
30
  expect(spec.tag).to eq("_")
@@ -33,28 +33,28 @@ describe Riak::WalkSpec do
33
33
  end
34
34
 
35
35
  describe "with three arguments for bucket, tag, and keep" do
36
- it "should assign the bucket, tag, and keep" do
36
+ it "assigns the bucket, tag, and keep" do
37
37
  spec = Riak::WalkSpec.new("foo", "next", false)
38
38
  expect(spec.bucket).to eq("foo")
39
39
  expect(spec.tag).to eq("next")
40
40
  expect(spec.keep).to be_falsey
41
41
  end
42
42
 
43
- it "should make the bucket '_' when false or nil" do
43
+ it "specifies the '_' bucket when false or nil" do
44
44
  spec = Riak::WalkSpec.new(nil, "next", false)
45
45
  expect(spec.bucket).to eq("_")
46
46
  spec = Riak::WalkSpec.new(false, "next", false)
47
47
  expect(spec.bucket).to eq("_")
48
48
  end
49
49
 
50
- it "should make the tag '_' when false or nil" do
50
+ it "specifies the '_' tag when false or nil" do
51
51
  spec = Riak::WalkSpec.new("foo", nil, false)
52
52
  expect(spec.tag).to eq("_")
53
53
  spec = Riak::WalkSpec.new("foo", false, false)
54
54
  expect(spec.tag).to eq("_")
55
55
  end
56
56
 
57
- it "should make the keep false when false or nil" do
57
+ it "make the keep falsey when false or nil" do
58
58
  spec = Riak::WalkSpec.new(nil, nil, nil)
59
59
  expect(spec.keep).to be_falsey
60
60
  spec = Riak::WalkSpec.new(nil, nil, false)
@@ -62,7 +62,7 @@ describe Riak::WalkSpec do
62
62
  end
63
63
  end
64
64
 
65
- it "should raise an ArgumentError for invalid arguments" do
65
+ it "raises an ArgumentError for invalid arguments" do
66
66
  expect { Riak::WalkSpec.new }.to raise_error(ArgumentError)
67
67
  expect { Riak::WalkSpec.new("foo") }.to raise_error(ArgumentError)
68
68
  expect { Riak::WalkSpec.new("foo","bar") }.to raise_error(ArgumentError)
@@ -74,35 +74,35 @@ describe Riak::WalkSpec do
74
74
  @spec = Riak::WalkSpec.new({})
75
75
  end
76
76
 
77
- it "should be the empty spec by default" do
77
+ it "converts to the empty spec by default" do
78
78
  expect(@spec.to_s).to eq("_,_,_")
79
79
  end
80
80
 
81
- it "should include the bucket when set" do
81
+ it "includes the bucket when set" do
82
82
  @spec.bucket = "foo"
83
83
  expect(@spec.to_s).to eq("foo,_,_")
84
84
  end
85
85
 
86
- it "should include the tag when set" do
86
+ it "includes the tag when set" do
87
87
  @spec.tag = "next"
88
88
  expect(@spec.to_s).to eq("_,next,_")
89
89
  end
90
90
 
91
- it "should include the keep when true" do
91
+ it "includes the keep when true" do
92
92
  @spec.keep = true
93
93
  expect(@spec.to_s).to eq("_,_,1")
94
94
  end
95
95
  end
96
96
 
97
97
  describe "creating from a list of parameters" do
98
- it "should detect hashes and WalkSpecs interleaved with other parameters" do
98
+ it "detects hashes and WalkSpecs interleaved with other parameters" do
99
99
  specs = Riak::WalkSpec.normalize(nil,"next",nil,{:bucket => "foo"},Riak::WalkSpec.new({:tag => "child", :keep => true}))
100
100
  expect(specs.size).to eq(3)
101
101
  expect(specs).to be_all {|s| s.kind_of?(Riak::WalkSpec) }
102
102
  expect(specs.join("/")).to eq("_,next,_/foo,_,_/_,child,1")
103
103
  end
104
104
 
105
- it "should raise an error when given invalid number of parameters" do
105
+ it "raises an error when given invalid number of parameters" do
106
106
  expect { Riak::WalkSpec.normalize("foo") }.to raise_error(ArgumentError)
107
107
  end
108
108
  end
@@ -112,7 +112,7 @@ describe Riak::WalkSpec do
112
112
  @spec = Riak::WalkSpec.new({})
113
113
  end
114
114
 
115
- it "should not match objects that aren't links or walk specs" do
115
+ it "doesn't match objects that aren't links or walk specs" do
116
116
  expect(@spec).not_to be === "foo"
117
117
  end
118
118
 
@@ -121,31 +121,31 @@ describe Riak::WalkSpec do
121
121
  @link = Riak::Link.new("/riak/foo/bar", "next")
122
122
  end
123
123
 
124
- it "should match a link when the bucket and tag are not specified" do
124
+ it "matches a link when the bucket and tag are not specified" do
125
125
  expect(@spec).to be === @link
126
126
  end
127
127
 
128
- it "should match a link when the bucket is the same" do
128
+ it "matches a link when the bucket is the same" do
129
129
  @spec.bucket = "foo"
130
130
  expect(@spec).to be === @link
131
131
  end
132
132
 
133
- it "should not match a link when the bucket is different" do
133
+ it "doesn't match a link when the bucket is different" do
134
134
  @spec.bucket = "bar"
135
135
  expect(@spec).not_to be === @link
136
136
  end
137
137
 
138
- it "should match a link when the tag is the same" do
138
+ it "matches a link when the tag is the same" do
139
139
  @spec.tag = "next"
140
140
  expect(@spec).to be === @link
141
141
  end
142
142
 
143
- it "should not match a link when the tag is different" do
143
+ it "doesn't match a link when the tag is different" do
144
144
  @spec.tag = "previous"
145
145
  expect(@spec).not_to be === @link
146
146
  end
147
147
 
148
- it "should match a link when the bucket and tag are the same" do
148
+ it "matches a link when the bucket and tag are the same" do
149
149
  @spec.bucket = "foo"
150
150
  expect(@spec).to be === @link
151
151
  end
@@ -156,41 +156,41 @@ describe Riak::WalkSpec do
156
156
  @other = Riak::WalkSpec.new({})
157
157
  end
158
158
 
159
- it "should match a walk spec that is equivalent" do
159
+ it "matches a walk spec that is equivalent" do
160
160
  expect(@spec).to be === @other
161
161
  end
162
162
 
163
- it "should not match a walk spec that has a different keep value" do
163
+ it "matches a walk spec that has a different keep value" do
164
164
  @other.keep = true
165
165
  expect(@spec).not_to be === @other
166
166
  end
167
167
 
168
- it "should match a walk spec with a more specific bucket" do
168
+ it "matches a walk spec with a more specific bucket" do
169
169
  @other.bucket = "foo"
170
170
  expect(@spec).to be === @other
171
171
  end
172
172
 
173
- it "should match a walk spec with the same bucket" do
173
+ it "matches a walk spec with the same bucket" do
174
174
  @other.bucket = "foo"; @spec.bucket = "foo"
175
175
  expect(@spec).to be === @other
176
176
  end
177
177
 
178
- it "should not match a walk spec with a different bucket" do
178
+ it "doesn't match a walk spec with a different bucket" do
179
179
  @other.bucket = "foo"; @spec.bucket = "bar"
180
180
  expect(@spec).not_to be === @other
181
181
  end
182
182
 
183
- it "should match a walk spec with a more specific tag" do
183
+ it "doesn't match a walk spec with a more specific tag" do
184
184
  @other.tag = "next"
185
185
  expect(@spec).to be === @other
186
186
  end
187
187
 
188
- it "should match a walk spec with the same tag" do
188
+ it "matches a walk spec with the same tag" do
189
189
  @other.tag = "next"; @spec.tag = "next"
190
190
  expect(@spec).to be === @other
191
191
  end
192
192
 
193
- it "should not match a walk spec with a different tag" do
193
+ it "doesn't match a walk spec with a different tag" do
194
194
  @other.tag = "next"; @spec.tag = "previous"
195
195
  expect(@spec).not_to be === @other
196
196
  end
@@ -47,4 +47,10 @@ RSpec.configure do |config|
47
47
  end
48
48
 
49
49
  config.raise_errors_for_deprecations!
50
+
51
+ begin
52
+ require 'instrumentable'
53
+ rescue LoadError => e
54
+ config.filter_run_excluding instrumentation: true
55
+ end
50
56
  end
@@ -1,22 +1,21 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIDnjCCAoYCCQCfWsYVjCNEnTANBgkqhkiG9w0BAQUFADCBkDELMAkGA1UEBhMC
3
- VVMxEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxDjAMBgNV
4
- BAoMBUJhc2hvMRswGQYDVQQLDBJSaWFrIFB5dGhvbiBDbGllbnQxCzAJBgNVBAMM
5
- AkNBMSAwHgYJKoZIhvcNAQkBFhFjbGllbnRzQGJhc2hvLmNvbTAeFw0xNDA1Mjcx
6
- OTQyNDhaFw0yNDA1MjQxOTQyNDhaMIGQMQswCQYDVQQGEwJVUzETMBEGA1UECAwK
7
- V2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEOMAwGA1UECgwFQmFzaG8xGzAZ
8
- BgNVBAsMElJpYWsgUHl0aG9uIENsaWVudDELMAkGA1UEAwwCQ0ExIDAeBgkqhkiG
9
- 9w0BCQEWEWNsaWVudHNAYmFzaG8uY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
10
- MIIBCgKCAQEAyb+RlRZKQc5RkUK1CIeiWizz52uy98CJzpEdgZfLJuWv2wCqWZLD
11
- j3BWpa0uSQCT7F7EdXBpjFOCYx48nTTbNekL2osYm5lH/9QP3tZp+oomSxeZTc7C
12
- DsnW2/7KPmgE+B8Zs7Q1v2VXj2NyaUmozDWbp80VPMA332B61TTOGXKthQeD/n6W
13
- /mkH044oG5PMOvMMlNaYx0dsRy73m49DwIG/iZs0ri/sFuOKapOM+Jyi31GF7f50
14
- hDLNhpOZi2wvAoEdE5c0BfwILqR5rJBsfZzjUnTdYnLE9C1xR0ntE+MgCrxMdvM7
15
- VtJR0GNSQuW9LUxA6MeYimqHkfjtgDyX8wIDAQABMA0GCSqGSIb3DQEBBQUAA4IB
16
- AQB9IRE9eir6w2VkVHZanzOrbJVI0xO4o9+y0EXXl575C4uUs3+T7VBo8RQt2Pkn
17
- JULRVkff37XdblNLEQc5qNoSVu0vXLOjqybletXLD6ysaCn/4EkVrDrM9T5xO01H
18
- TDUnzBap+Z/YQc6iGaeFUaxPNYBqBypSHxqU2rbtIiok3xNXxgv65ijpdWSL/zzO
19
- g0P1cGECnsLRgui3AGVa5LioYUvy2eUj+xoasFpArZ3Cn5OTeAFHnnYFbKgdNQWm
20
- z98RktSlUMDE6EFnmzSBj/3l/CyEzZ2XTz//N3hPZs3LnEccGWUzadqQyO5pgExV
21
- VEcFwFceAhIM4PsZteI4m9nG
2
+ MIIDjDCCAnQCCQDCaCbuH5N1HjANBgkqhkiG9w0BAQUFADCBhzELMAkGA1UEBhMC
3
+ VVMxEDAOBgNVBAgMB0Zsb3JpZGExDjAMBgNVBAcMBU1pYW1pMQ4wDAYDVQQKDAVC
4
+ YXNobzEZMBcGA1UECwwQUmlhayBSdWJ5IENsaWVudDELMAkGA1UEAwwCQ0ExHjAc
5
+ BgkqhkiG9w0BCQEWD2JyeWNlQGJhc2hvLmNvbTAeFw0xNDA5MTgyMjU4MDJaFw0y
6
+ NDA5MTUyMjU4MDJaMIGHMQswCQYDVQQGEwJVUzEQMA4GA1UECAwHRmxvcmlkYTEO
7
+ MAwGA1UEBwwFTWlhbWkxDjAMBgNVBAoMBUJhc2hvMRkwFwYDVQQLDBBSaWFrIFJ1
8
+ YnkgQ2xpZW50MQswCQYDVQQDDAJDQTEeMBwGCSqGSIb3DQEJARYPYnJ5Y2VAYmFz
9
+ aG8uY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApLREjyW0bsMQ
10
+ 2xZuZfXrTqndZdtmJrUaUdwLcTYXo/BLJq8mw/UoKBajzDJS1OsVutOT3l1mQZNk
11
+ pE15lJbPo301RtkGOeYlTx6ptawutrvlMlACnWtYyuL9U8qqnMJAsdBEjTU3Xxao
12
+ /vJTECBVaKtL9D5vEu2fOn4ZWvSuYG14ZXhltBPgon95SrJX+erXgHs0IH6l1ftW
13
+ xZL9Uw/Tj/s8XEMK8n6FB+CYuj33fZMjswvdXABzhEAW8bCupJT42V/S9Zj4B0Z8
14
+ iv6wgurc1yuU6yl0VDGZ6Ee++7ter3GZZrV4YC5A8UjW0+8sADUYKiZNYWTO6S+N
15
+ Pu/sLRdykwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBzcs/VIHHeyUWlS+Rx/s/m
16
+ m54RK332r2+8Mywtwdz57kA6rsbYBrrlKVmEzjtgCIcpF/3hhEChYcSA4w0Aa+zd
17
+ Zd6eNtUyicPFfm/8GycaLM3Ptj3duq4jHha2IzhomfACm8pkBj8IU8Y5q/YBV+3L
18
+ hJxderphbz6lqrH6USkt/aaFzu+1onYlxzGZDyiFPOxUbRPXN12y3XCeFSfuHBej
19
+ ifFRSHGR8HU++g4VYnOi/1YXSDFh7yRvA2qBlz+kYprBS2GggXIrfCgT+FnMALlg
20
+ 6TrfsWQiI3pyGKUsNjdaQckdLMWr8jvutb7vPZ1WdMdgKxbE0Swo1HBbkCAe5JjG
22
21
  -----END CERTIFICATE-----