bolognese 1.8.8 → 1.8.17

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 606a00508da9a9b0d3b64f2e2227ff37e97125f960a7f2aac3ea18ef25c9f077
4
- data.tar.gz: b2f306899790dd5b18d0ab85deab2d6491c6da8e610f138585b0b0a8df93ad2e
3
+ metadata.gz: e6b9c0c7ee54d2b9775b2466d8f2a4da859dc1d263754d7317c80928f7b85fa5
4
+ data.tar.gz: c559c1dd56d6acf593482099498ecb9ad2df11af30ee1dfebd7f82939979792a
5
5
  SHA512:
6
- metadata.gz: 8c89df354abbc18a009e0bb23c55dfeca002517051def4d8399979f578afbb25569471f58ae957b60140c66d41fb2fc7911e3940b434cf6cc5f404fdb9f63a14
7
- data.tar.gz: 81cb04f710c2822f7a4b255e184b492ee5ce642867a740cd0e75253d584458d9681c550e67bef069ec78a153d1accef16d1139439fafb095de71a9421249fe24
6
+ metadata.gz: 4444fe16f7ccc8b64a089ac554338e936a4704d219cd3b6a447661ceaac79a0b9f7ffc2095682da458d7abc7e840f9aabf5f884dca34166643390ae29cb67bc3
7
+ data.tar.gz: 27ab78404aec764f26693b92ac5e7bd7aee32af8ebaf82799414738972c3718598ad629700d91ba5fb584b4cdbd8e922b37b4d35b5032c96ae921d02302c5bb0
@@ -0,0 +1,23 @@
1
+ name: Deploy Ruby Gem
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - "master"
7
+ jobs:
8
+ build:
9
+ name: Build + Publish
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - uses: actions/checkout@v2
14
+ - name: Set up Ruby 2.6
15
+ uses: actions/setup-ruby@v1
16
+ with:
17
+ ruby-version: 2.6.x
18
+
19
+ - name: Build and test
20
+ run: |
21
+ gem install bundler
22
+ bundle install
23
+ bundle exec rspec spec
@@ -0,0 +1,33 @@
1
+ name: Ruby Gem
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ jobs:
7
+ build:
8
+ name: Build + Publish
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - uses: actions/checkout@v2
13
+ - name: Set up Ruby 2.6
14
+ uses: actions/setup-ruby@v1
15
+ with:
16
+ ruby-version: 2.6.x
17
+
18
+ - name: Build and test
19
+ run: |
20
+ gem install bundler
21
+ bundle install
22
+ bundle exec rspec spec
23
+
24
+ - name: Publish to RubyGems
25
+ run: |
26
+ mkdir -p $HOME/.gem
27
+ touch $HOME/.gem/credentials
28
+ chmod 0600 $HOME/.gem/credentials
29
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
30
+ gem build *.gemspec
31
+ gem push *.gem
32
+ env:
33
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bolognese (1.8.8)
4
+ bolognese (1.8.17)
5
5
  activesupport (>= 4.2.5)
6
6
  benchmark_methods (~> 0.7)
7
7
  bibtex-ruby (>= 5.1.0)
@@ -30,7 +30,7 @@ PATH
30
30
  GEM
31
31
  remote: https://rubygems.org/
32
32
  specs:
33
- activesupport (6.0.3.2)
33
+ activesupport (6.0.3.4)
34
34
  concurrent-ruby (~> 1.0, >= 1.0.2)
35
35
  i18n (>= 0.7, < 2)
36
36
  minitest (~> 5.1)
@@ -39,32 +39,30 @@ GEM
39
39
  addressable (2.7.0)
40
40
  public_suffix (>= 2.0.2, < 5.0)
41
41
  benchmark_methods (0.7)
42
- bibtex-ruby (5.1.4)
42
+ bibtex-ruby (5.1.5)
43
43
  latex-decode (~> 0.0)
44
- bigdecimal (2.0.0)
45
44
  builder (3.2.4)
46
45
  citeproc (1.0.10)
47
46
  namae (~> 1.0)
48
- citeproc-ruby (1.1.12)
47
+ citeproc-ruby (1.1.13)
49
48
  citeproc (~> 1.0, >= 1.0.9)
50
49
  csl (~> 1.5)
51
50
  colorize (0.8.1)
52
51
  concurrent-ruby (1.1.7)
53
- crack (0.4.3)
54
- safe_yaml (~> 1.0.0)
52
+ crack (0.4.4)
55
53
  crass (1.0.6)
56
- csl (1.5.1)
54
+ csl (1.5.2)
57
55
  namae (~> 1.0)
58
56
  csl-styles (1.0.1.10)
59
57
  csl (~> 1.0)
60
58
  diff-lcs (1.4.4)
61
59
  docile (1.3.2)
62
- ebnf (2.1.1)
60
+ ebnf (2.1.2)
63
61
  htmlentities (~> 4.3)
64
62
  rdf (~> 3.1)
65
63
  scanf (~> 1.0)
66
64
  sxp (~> 1.1)
67
- edtf (3.0.5)
65
+ edtf (3.0.6)
68
66
  activesupport (>= 3.0, < 7.0)
69
67
  excon (0.71.1)
70
68
  faraday (0.17.3)
@@ -75,7 +73,7 @@ GEM
75
73
  faraday (>= 0.7.4, < 1.0)
76
74
  gender_detector (0.1.2)
77
75
  unicode_utils (>= 1.3.0)
78
- haml (5.1.2)
76
+ haml (5.2.0)
79
77
  temple (>= 0.8.0)
80
78
  tilt
81
79
  hamster (3.0.0)
@@ -99,12 +97,12 @@ GEM
99
97
  jsonlint (0.3.0)
100
98
  oj (~> 3)
101
99
  optimist (~> 3)
102
- latex-decode (0.3.1)
100
+ latex-decode (0.3.2)
103
101
  link_header (0.0.8)
104
- loofah (2.6.0)
102
+ loofah (2.7.0)
105
103
  crass (~> 1.0.2)
106
104
  nokogiri (>= 1.5.9)
107
- maremma (4.7.1)
105
+ maremma (4.7.2)
108
106
  activesupport (>= 4.2.5)
109
107
  addressable (>= 2.3.6)
110
108
  builder (~> 3.2, >= 3.2.2)
@@ -116,14 +114,13 @@ GEM
116
114
  oj (>= 2.8.3)
117
115
  oj_mimic_json (~> 1.0, >= 1.0.1)
118
116
  mini_portile2 (2.4.0)
119
- minitest (5.14.1)
117
+ minitest (5.14.2)
120
118
  multi_json (1.15.0)
121
119
  multipart-post (2.1.1)
122
120
  namae (1.0.1)
123
121
  nokogiri (1.10.10)
124
122
  mini_portile2 (~> 2.4.0)
125
- oj (3.10.12)
126
- bigdecimal (>= 1.0, < 3)
123
+ oj (3.10.15)
127
124
  oj_mimic_json (1.0.1)
128
125
  optimist (3.0.1)
129
126
  postrank-uri (1.0.24)
@@ -135,7 +132,7 @@ GEM
135
132
  rack-test (0.8.3)
136
133
  rack (>= 1.0, < 3)
137
134
  rake (12.3.3)
138
- rdf (3.1.5)
135
+ rdf (3.1.6)
139
136
  hamster (~> 3.0)
140
137
  link_header (~> 0.0, >= 0.0.8)
141
138
  rdf-aggregate-repo (3.1.0)
@@ -155,32 +152,31 @@ GEM
155
152
  rdf-turtle (3.1.2)
156
153
  ebnf (~> 2.0)
157
154
  rdf (~> 3.1, >= 3.1.2)
158
- rdf-vocab (3.1.7)
155
+ rdf-vocab (3.1.8)
159
156
  rdf (~> 3.1, >= 3.1.2)
160
157
  rdf-xsd (3.1.0)
161
158
  rdf (~> 3.1)
162
- rspec (3.9.0)
163
- rspec-core (~> 3.9.0)
164
- rspec-expectations (~> 3.9.0)
165
- rspec-mocks (~> 3.9.0)
166
- rspec-core (3.9.2)
167
- rspec-support (~> 3.9.3)
168
- rspec-expectations (3.9.2)
159
+ rspec (3.10.0)
160
+ rspec-core (~> 3.10.0)
161
+ rspec-expectations (~> 3.10.0)
162
+ rspec-mocks (~> 3.10.0)
163
+ rspec-core (3.10.0)
164
+ rspec-support (~> 3.10.0)
165
+ rspec-expectations (3.10.0)
169
166
  diff-lcs (>= 1.2.0, < 2.0)
170
- rspec-support (~> 3.9.0)
171
- rspec-mocks (3.9.1)
167
+ rspec-support (~> 3.10.0)
168
+ rspec-mocks (3.10.0)
172
169
  diff-lcs (>= 1.2.0, < 2.0)
173
- rspec-support (~> 3.9.0)
174
- rspec-support (3.9.3)
170
+ rspec-support (~> 3.10.0)
171
+ rspec-support (3.10.0)
175
172
  rspec-xsd (0.1.0)
176
173
  nokogiri (~> 1.6)
177
174
  rspec (~> 3)
178
- safe_yaml (1.0.5)
179
175
  scanf (1.0.0)
180
- simplecov (0.19.0)
176
+ simplecov (0.19.1)
181
177
  docile (~> 1.1)
182
178
  simplecov-html (~> 0.11)
183
- simplecov-html (0.12.2)
179
+ simplecov-html (0.12.3)
184
180
  sxp (1.1.0)
185
181
  rdf (~> 3.1)
186
182
  temple (0.8.2)
@@ -191,11 +187,11 @@ GEM
191
187
  thread_safe (~> 0.1)
192
188
  unicode_utils (1.4.0)
193
189
  vcr (3.0.3)
194
- webmock (3.8.3)
190
+ webmock (3.9.3)
195
191
  addressable (>= 2.3.6)
196
192
  crack (>= 0.3.2)
197
193
  hashdiff (>= 0.4.0, < 2.0.0)
198
- zeitwerk (2.4.0)
194
+ zeitwerk (2.4.1)
199
195
 
200
196
  PLATFORMS
201
197
  ruby
@@ -0,0 +1,28 @@
1
+ name: Build Ruby Gem
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - "master"
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - uses: actions/checkout@v2
13
+ - name: Set up Ruby 2.6
14
+ uses: actions/setup-ruby@v1
15
+ with:
16
+ ruby-version: 2.6.x
17
+
18
+ - name: Build and test
19
+ run: |
20
+ gem install bundler
21
+ bundle install
22
+ bundle exec rspec spec
23
+
24
+ - name: Code Climate Test Reporter
25
+ uses: aktions/codeclimate-test-reporter@v1
26
+ with:
27
+ codeclimate-test-reporter-id: ${{ secrets.CC_TEST_REPORTER_ID }}
28
+ command: after-build
@@ -0,0 +1,39 @@
1
+ name: Release Ruby Gem
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ jobs:
7
+ build:
8
+ name: Build + Publish
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - uses: actions/checkout@v2
13
+ - name: Set up Ruby 2.6
14
+ uses: actions/setup-ruby@v1
15
+ with:
16
+ ruby-version: 2.6.x
17
+
18
+ - name: Build and test
19
+ run: |
20
+ gem install bundler
21
+ bundle install
22
+ bundle exec rspec spec
23
+
24
+ - name: Code Climate Test Reporter
25
+ uses: aktions/codeclimate-test-reporter@v1
26
+ with:
27
+ codeclimate-test-reporter-id: ${{ secrets.CC_TEST_REPORTER_ID }}
28
+ command: after-build
29
+
30
+ - name: Publish to RubyGems
31
+ run: |
32
+ mkdir -p $HOME/.gem
33
+ touch $HOME/.gem/credentials
34
+ chmod 0600 $HOME/.gem/credentials
35
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
36
+ gem build *.gemspec
37
+ gem push *.gem
38
+ env:
39
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
@@ -64,7 +64,6 @@ module Bolognese
64
64
  journal_article = meta.dig("crossref", "journal", "journal_article") || {}
65
65
  bibliographic_metadata = journal_article.presence || journal_issue.presence || journal_metadata
66
66
  program_metadata = bibliographic_metadata.dig("crossmark", "custom_metadata", "program") || bibliographic_metadata.dig("program")
67
-
68
67
  resource_type = if journal_article.present?
69
68
  "journal_article"
70
69
  elsif journal_issue.present?
@@ -86,7 +85,9 @@ module Bolognese
86
85
  bibliographic_metadata = meta.dig("crossref", "report_paper", "report_paper_metadata").to_h
87
86
  resource_type = "report"
88
87
  when "peer_review"
89
- bibliographic_metadata = meta.dig("crossref", "peer_review").to_h
88
+ bibliographic_metadata = meta.dig("crossref", "peer_review")
89
+ when "dissertation"
90
+ bibliographic_metadata = meta.dig("crossref", "dissertation")
90
91
  end
91
92
 
92
93
  resource_type = (resource_type || model).to_s.underscore.camelcase.presence
@@ -113,7 +114,7 @@ module Bolognese
113
114
  end
114
115
  end.compact
115
116
  else
116
- [{ "title" => ":{unav)" }]
117
+ [{ "title" => ":(unav)" }]
117
118
  end
118
119
 
119
120
  date_published = crossref_date_published(bibliographic_metadata)
@@ -148,7 +149,7 @@ module Bolognese
148
149
  "title" => parse_attributes(journal_metadata.to_h["full_title"]),
149
150
  "volume" => parse_attributes(journal_issue.dig("journal_volume", "volume")),
150
151
  "issue" => parse_attributes(journal_issue.dig("issue")),
151
- "firstPage" => bibliographic_metadata.dig("pages", "first_page"),
152
+ "firstPage" => bibliographic_metadata.dig("pages", "first_page") || parse_attributes(journal_article.to_h.dig("publisher_item", "item_number"), first: true),
152
153
  "lastPage" => bibliographic_metadata.dig("pages", "last_page") }.compact
153
154
  elsif book_series_metadata.to_h.fetch("series_metadata", nil).present?
154
155
  issn = normalize_issn(book_series_metadata.dig("series_metadata", "issn"))
@@ -236,7 +237,7 @@ module Bolognese
236
237
  end
237
238
 
238
239
  def crossref_people(bibliographic_metadata, contributor_role)
239
- person = bibliographic_metadata.dig("contributors", "person_name")
240
+ person = bibliographic_metadata.dig("contributors", "person_name") || bibliographic_metadata.dig("person_name")
240
241
  organization = Array.wrap(bibliographic_metadata.dig("contributors", "organization"))
241
242
  person = [{ "name" => ":(unav)", "contributor_role"=>"author" }] if contributor_role == "author" && Array.wrap(person).select { |a| a["contributor_role"] == "author" }.blank? && Array.wrap(organization).select { |a| a["contributor_role"] == "author" }.blank?
242
243
 
@@ -245,13 +246,26 @@ module Bolognese
245
246
  if a["surname"].present? || a["given_name"].present? || name_identifiers.present?
246
247
  given_name = parse_attributes(a["given_name"])
247
248
  family_name = parse_attributes(a["surname"])
249
+ affiliation = Array.wrap(a["affiliation"]).map do |a|
250
+ if a.is_a?(Hash) && a.key?("__content__") && a["__content__"].strip.blank?
251
+ nil
252
+ elsif a.is_a?(Hash) && a.key?("__content__")
253
+ { "name" => a["__content__"] }
254
+ elsif a.is_a?(Hash)
255
+ a
256
+ elsif a.strip.blank?
257
+ nil
258
+ elsif a.is_a?(String)
259
+ { "name" => a }
260
+ end
261
+ end.compact
248
262
 
249
263
  { "nameType" => "Personal",
250
264
  "nameIdentifiers" => name_identifiers,
251
265
  "name" => [family_name, given_name].compact.join(", "),
252
266
  "givenName" => given_name,
253
267
  "familyName" => family_name,
254
- "affiliation" => Array.wrap(a["affiliation"]).map { |a| { "name" => a }}.presence,
268
+ "affiliation" => affiliation.presence,
255
269
  "contributorType" => contributor_role == "editor" ? "Editor" : nil }.compact
256
270
  else
257
271
  { "nameType" => "Organizational",
@@ -1,3 +1,3 @@
1
1
  module Bolognese
2
- VERSION = "1.8.8"
2
+ VERSION = "1.8.17"
3
3
  end
@@ -6,7 +6,7 @@ module Bolognese
6
6
  def bibtex
7
7
  return nil unless valid?
8
8
 
9
- pages = container.to_h["firstPage"].present? ? [container["firstPage"], container["lastPage"]].join("-") : nil
9
+ pages = container.to_h["firstPage"].present? ? [container["firstPage"], container["lastPage"]].compact.join("-") : nil
10
10
 
11
11
  bib = {
12
12
  bibtex_type: types["bibtex"].presence || "misc",
@@ -0,0 +1,100 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://doi.org/ra/10.1177
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Mozilla/5.0 (compatible; Maremma/4.7.2; mailto:info@datacite.org)
12
+ Accept:
13
+ - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: ''
18
+ headers:
19
+ Date:
20
+ - Mon, 12 Oct 2020 20:19:19 GMT
21
+ Content-Type:
22
+ - application/json;charset=UTF-8
23
+ Connection:
24
+ - keep-alive
25
+ Set-Cookie:
26
+ - __cfduid=d3fd7e0786c5b0c861cf006b8b0b48f451602533959; expires=Wed, 11-Nov-20
27
+ 20:19:19 GMT; path=/; domain=.doi.org; HttpOnly; SameSite=Lax; Secure
28
+ Cf-Cache-Status:
29
+ - DYNAMIC
30
+ Cf-Request-Id:
31
+ - 05c010be770000d6fd45a0e200000001
32
+ Expect-Ct:
33
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
34
+ Report-To:
35
+ - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report?lkg-colo=71&lkg-time=1602533959"}],"group":"cf-nel","max_age":604800}'
36
+ Nel:
37
+ - '{"report_to":"cf-nel","max_age":604800}'
38
+ Strict-Transport-Security:
39
+ - max-age=31536000; includeSubDomains; preload
40
+ Server:
41
+ - cloudflare
42
+ Cf-Ray:
43
+ - 5e1383dd8d78d6fd-FRA
44
+ Alt-Svc:
45
+ - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400
46
+ body:
47
+ encoding: ASCII-8BIT
48
+ string: |-
49
+ [
50
+ {
51
+ "DOI": "10.1177",
52
+ "RA": "Crossref"
53
+ }
54
+ ]
55
+ http_version:
56
+ recorded_at: Mon, 12 Oct 2020 20:19:19 GMT
57
+ - request:
58
+ method: get
59
+ uri: https://api.crossref.org/works/10.1177/0042098011428175/transform/application/vnd.crossref.unixsd+xml
60
+ body:
61
+ encoding: US-ASCII
62
+ string: ''
63
+ headers:
64
+ User-Agent:
65
+ - Mozilla/5.0 (compatible; Maremma/4.7.2; mailto:info@datacite.org)
66
+ Accept:
67
+ - text/xml
68
+ response:
69
+ status:
70
+ code: 200
71
+ message: OK
72
+ headers:
73
+ Link:
74
+ - <http://dx.doi.org/10.1177/0042098011428175>; rel="canonical", <http://journals.sagepub.com/doi/pdf/10.1177/0042098011428175>;
75
+ version="vor"; type="application/pdf"; rel="item", <http://journals.sagepub.com/doi/pdf/10.1177/0042098011428175>;
76
+ version="vor"; rel="item", <http://journals.sagepub.com/page/policies/text-and-data-mining-license>;
77
+ version="tdm"; rel="license"
78
+ Access-Control-Allow-Origin:
79
+ - "*"
80
+ Access-Control-Allow-Headers:
81
+ - X-Requested-With
82
+ Content-Length:
83
+ - '18738'
84
+ Server:
85
+ - http-kit
86
+ Date:
87
+ - Mon, 12 Oct 2020 20:19:19 GMT
88
+ X-Rate-Limit-Limit:
89
+ - '50'
90
+ X-Rate-Limit-Interval:
91
+ - 1s
92
+ Connection:
93
+ - close
94
+ body:
95
+ encoding: ASCII-8BIT
96
+ string: !binary |-
97
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGNyb3NzcmVmX3Jlc3VsdCB4bWxucz0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIiB2ZXJzaW9uPSIzLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIGh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3NjaGVtYXMvY3Jvc3NyZWZfcXVlcnlfb3V0cHV0My4wLnhzZCI+DQogIDxxdWVyeV9yZXN1bHQ+DQogICAgPGhlYWQ+DQogICAgICA8ZG9pX2JhdGNoX2lkPm5vbmU8L2RvaV9iYXRjaF9pZD4NCiAgICA8L2hlYWQ+DQogICAgPGJvZHk+DQogICAgICA8cXVlcnkgc3RhdHVzPSJyZXNvbHZlZCI+DQogICAgICAgIDxkb2kgdHlwZT0iam91cm5hbF9hcnRpY2xlIj4xMC4xMTc3LzAwNDIwOTgwMTE0MjgxNzU8L2RvaT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9InB1Ymxpc2hlci1uYW1lIiB0eXBlPSJzdHJpbmciPlNBR0UgUHVibGljYXRpb25zPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9InByZWZpeC1uYW1lIiB0eXBlPSJzdHJpbmciPlNBR0UgUHVibGljYXRpb25zPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9Im1lbWJlci1pZCIgdHlwZT0ibnVtYmVyIj4xNzk8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0iY2l0YXRpb24taWQiIHR5cGU9Im51bWJlciI+NTI4OTU4MTE8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0iam91cm5hbC1pZCIgdHlwZT0ibnVtYmVyIj40Mjg3PC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9ImRlcG9zaXQtdGltZXN0YW1wIiB0eXBlPSJudW1iZXIiPjIwMTcxMjE3MDAzNzMyMDAyMDI8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0ib3duZXItcHJlZml4IiB0eXBlPSJzdHJpbmciPjEwLjExNzc8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0ibGFzdC11cGRhdGUiIHR5cGU9ImRhdGUiPjIwMTktMDYtMjFUMDg6MDI6MTRaPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9ImNyZWF0ZWQiIHR5cGU9ImRhdGUiPjIwMTEtMTItMjNUMDU6MTY6NTJaPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9ImNpdGVkYnktY291bnQiIHR5cGU9Im51bWJlciI+MTE8L2NybS1pdGVtPg0KICAgICAgICA8ZG9pX3JlY29yZD4NCiAgICAgICAgICA8Y3Jvc3NyZWYgeG1sbnM9Imh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3hzY2hlbWEvMS4xIiB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3hzY2hlbWEvMS4xIGh0dHA6Ly9kb2kuY3Jvc3NyZWYub3JnL3NjaGVtYXMvdW5peHJlZjEuMS54c2QiPg0KICAgICAgICAgICAgPGpvdXJuYWw+DQogICAgICAgICAgICAgIDxqb3VybmFsX21ldGFkYXRhIGxhbmd1YWdlPSJlbiI+DQogICAgICAgICAgICAgICAgPGZ1bGxfdGl0bGU+VXJiYW4gU3R1ZGllczwvZnVsbF90aXRsZT4NCiAgICAgICAgICAgICAgICA8YWJicmV2X3RpdGxlPlVyYmFuIFN0dWRpZXM8L2FiYnJldl90aXRsZT4NCiAgICAgICAgICAgICAgICA8aXNzbiBtZWRpYV90eXBlPSJwcmludCI+MDA0Mi0wOTgwPC9pc3NuPg0KICAgICAgICAgICAgICAgIDxpc3NuIG1lZGlhX3R5cGU9ImVsZWN0cm9uaWMiPjEzNjAtMDYzWDwvaXNzbj4NCiAgICAgICAgICAgICAgPC9qb3VybmFsX21ldGFkYXRhPg0KICAgICAgICAgICAgICA8am91cm5hbF9pc3N1ZT4NCiAgICAgICAgICAgICAgICA8cHVibGljYXRpb25fZGF0ZSBtZWRpYV90eXBlPSJvbmxpbmUiPg0KICAgICAgICAgICAgICAgICAgPG1vbnRoPjEyPC9tb250aD4NCiAgICAgICAgICAgICAgICAgIDxkYXk+MjI8L2RheT4NCiAgICAgICAgICAgICAgICAgIDx5ZWFyPjIwMTE8L3llYXI+DQogICAgICAgICAgICAgICAgPC9wdWJsaWNhdGlvbl9kYXRlPg0KICAgICAgICAgICAgICAgIDxwdWJsaWNhdGlvbl9kYXRlIG1lZGlhX3R5cGU9InByaW50Ij4NCiAgICAgICAgICAgICAgICAgIDxtb250aD4xMTwvbW9udGg+DQogICAgICAgICAgICAgICAgICA8eWVhcj4yMDEyPC95ZWFyPg0KICAgICAgICAgICAgICAgIDwvcHVibGljYXRpb25fZGF0ZT4NCiAgICAgICAgICAgICAgICA8am91cm5hbF92b2x1bWU+DQogICAgICAgICAgICAgICAgICA8dm9sdW1lPjQ5PC92b2x1bWU+DQogICAgICAgICAgICAgICAgPC9qb3VybmFsX3ZvbHVtZT4NCiAgICAgICAgICAgICAgICA8aXNzdWU+MTE8L2lzc3VlPg0KICAgICAgICAgICAgICA8L2pvdXJuYWxfaXNzdWU+DQogICAgICAgICAgICAgIDxqb3VybmFsX2FydGljbGUgcHVibGljYXRpb25fdHlwZT0iZnVsbF90ZXh0Ij4NCiAgICAgICAgICAgICAgICA8dGl0bGVzPg0KICAgICAgICAgICAgICAgICAgPHRpdGxlPldvcmtlcnMgYW5kIHRoZSBDaXR5OiBSZXRoaW5raW5nIHRoZSBHZW9ncmFwaGllcyBvZiBQb3dlciBpbiBQb3N0LXNvY2lhbGlzdCBVcmJhbmlzYXRpb248L3RpdGxlPg0KICAgICAgICAgICAgICAgIDwvdGl0bGVzPg0KICAgICAgICAgICAgICAgIDxjb250cmlidXRvcnM+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgc2VxdWVuY2U9ImZpcnN0IiBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiPg0KICAgICAgICAgICAgICAgICAgICA8Z2l2ZW5fbmFtZT5Ob3JiZXJ0PC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgICA8c3VybmFtZT5QZXRyb3ZpY2k8L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj7CoDwvYWZmaWxpYXRpb24+DQogICAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICAgIDwvY29udHJpYnV0b3JzPg0KICAgICAgICAgICAgICAgIDxwdWJsaWNhdGlvbl9kYXRlIG1lZGlhX3R5cGU9Im9ubGluZSI+DQogICAgICAgICAgICAgICAgICA8bW9udGg+MTI8L21vbnRoPg0KICAgICAgICAgICAgICAgICAgPGRheT4yMjwvZGF5Pg0KICAgICAgICAgICAgICAgICAgPHllYXI+MjAxMTwveWVhcj4NCiAgICAgICAgICAgICAgICA8L3B1YmxpY2F0aW9uX2RhdGU+DQogICAgICAgICAgICAgICAgPHB1YmxpY2F0aW9uX2RhdGUgbWVkaWFfdHlwZT0icHJpbnQiPg0KICAgICAgICAgICAgICAgICAgPG1vbnRoPjExPC9tb250aD4NCiAgICAgICAgICAgICAgICAgIDx5ZWFyPjIwMTI8L3llYXI+DQogICAgICAgICAgICAgICAgPC9wdWJsaWNhdGlvbl9kYXRlPg0KICAgICAgICAgICAgICAgIDxwYWdlcz4NCiAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjIzNzc8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICA8bGFzdF9wYWdlPjIzOTc8L2xhc3RfcGFnZT4NCiAgICAgICAgICAgICAgICA8L3BhZ2VzPg0KICAgICAgICAgICAgICAgIDxwdWJsaXNoZXJfaXRlbT4NCiAgICAgICAgICAgICAgICAgIDxpZGVudGlmaWVyIGlkX3R5cGU9ImRvaSI+MTAuMTE3Ny8wMDQyMDk4MDExNDI4MTc1PC9pZGVudGlmaWVyPg0KICAgICAgICAgICAgICAgIDwvcHVibGlzaGVyX2l0ZW0+DQogICAgICAgICAgICAgICAgPGNyb3NzbWFyaz4NCiAgICAgICAgICAgICAgICAgIDxjcm9zc21hcmtfdmVyc2lvbj4yPC9jcm9zc21hcmtfdmVyc2lvbj4NCiAgICAgICAgICAgICAgICAgIDxjcm9zc21hcmtfcG9saWN5PjEwLjExNzcvc2FnZS1qb3VybmFscy11cGRhdGUtcG9saWN5PC9jcm9zc21hcmtfcG9saWN5Pg0KICAgICAgICAgICAgICAgICAgPGNyb3NzbWFya19kb21haW5zPg0KICAgICAgICAgICAgICAgICAgICA8Y3Jvc3NtYXJrX2RvbWFpbj4NCiAgICAgICAgICAgICAgICAgICAgICA8ZG9tYWluPmpvdXJuYWxzLnNhZ2VwdWIuY29tPC9kb21haW4+DQogICAgICAgICAgICAgICAgICAgIDwvY3Jvc3NtYXJrX2RvbWFpbj4NCiAgICAgICAgICAgICAgICAgIDwvY3Jvc3NtYXJrX2RvbWFpbnM+DQogICAgICAgICAgICAgICAgICA8Y3Jvc3NtYXJrX2RvbWFpbl9leGNsdXNpdmU+dHJ1ZTwvY3Jvc3NtYXJrX2RvbWFpbl9leGNsdXNpdmU+DQogICAgICAgICAgICAgICAgICA8Y3VzdG9tX21ldGFkYXRhPg0KICAgICAgICAgICAgICAgICAgICA8YWk6cHJvZ3JhbSB4bWxuczphaT0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvQWNjZXNzSW5kaWNhdG9ycy54c2QiIG5hbWU9IkFjY2Vzc0luZGljYXRvcnMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxhaTpsaWNlbnNlX3JlZiBhcHBsaWVzX3RvPSJ0ZG0iPmh0dHA6Ly9qb3VybmFscy5zYWdlcHViLmNvbS9wYWdlL3BvbGljaWVzL3RleHQtYW5kLWRhdGEtbWluaW5nLWxpY2Vuc2U8L2FpOmxpY2Vuc2VfcmVmPg0KICAgICAgICAgICAgICAgICAgICA8L2FpOnByb2dyYW0+DQogICAgICAgICAgICAgICAgICA8L2N1c3RvbV9tZXRhZGF0YT4NCiAgICAgICAgICAgICAgICA8L2Nyb3NzbWFyaz4NCiAgICAgICAgICAgICAgICA8ZG9pX2RhdGE+DQogICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExNzcvMDA0MjA5ODAxMTQyODE3NTwvZG9pPg0KICAgICAgICAgICAgICAgICAgPHJlc291cmNlPmh0dHA6Ly9qb3VybmFscy5zYWdlcHViLmNvbS9kb2kvMTAuMTE3Ny8wMDQyMDk4MDExNDI4MTc1PC9yZXNvdXJjZT4NCiAgICAgICAgICAgICAgICAgIDxjb2xsZWN0aW9uIHByb3BlcnR5PSJjcmF3bGVyLWJhc2VkIj4NCiAgICAgICAgICAgICAgICAgICAgPGl0ZW0gY3Jhd2xlcj0iaVBhcmFkaWdtcyI+DQogICAgICAgICAgICAgICAgICAgICAgPHJlc291cmNlPmh0dHA6Ly9qb3VybmFscy5zYWdlcHViLmNvbS9kb2kvcGRmLzEwLjExNzcvMDA0MjA5ODAxMTQyODE3NTwvcmVzb3VyY2U+DQogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4NCiAgICAgICAgICAgICAgICAgIDwvY29sbGVjdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjb2xsZWN0aW9uIHByb3BlcnR5PSJ0ZXh0LW1pbmluZyI+DQogICAgICAgICAgICAgICAgICAgIDxpdGVtPg0KICAgICAgICAgICAgICAgICAgICAgIDxyZXNvdXJjZSBtaW1lX3R5cGU9ImFwcGxpY2F0aW9uL3BkZiI+aHR0cDovL2pvdXJuYWxzLnNhZ2VwdWIuY29tL2RvaS9wZGYvMTAuMTE3Ny8wMDQyMDk4MDExNDI4MTc1PC9yZXNvdXJjZT4NCiAgICAgICAgICAgICAgICAgICAgPC9pdGVtPg0KICAgICAgICAgICAgICAgICAgPC9jb2xsZWN0aW9uPg0KICAgICAgICAgICAgICAgIDwvZG9pX2RhdGE+DQogICAgICAgICAgICAgICAgPGNpdGF0aW9uX2xpc3Q+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjEiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5JREVBIEFydGEgxZ9pIFNvY2lldGF0ZTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MTEwPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjU8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGlzc3VlPjM8L2lzc3VlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwMzwvY1llYXI+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGIyIj4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5Cb2RuYXLCoEouRXZpbCBQYXJhZGlzZXM6IERyZWFtd29ybGRzIG9mIE5lb2xpYmVyYWxpc20uIERhdmlzwqBNLiwgTW9ua8KgRC4sIGVkLiBOZXcgWW9yazogTmV3IFByZXNzOyAyMDA3OjE0MC0xNTEuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGIzIj4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+U29jaWFsaXN0IFJldmlldzwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+NTM8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+MTk8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGlzc3VlPjI8L2lzc3VlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MTk4OTwvY1llYXI+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGI0Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+QW1lcmljYW4gSm91cm5hbCBvZiBTb2Npb2xvZ3k8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjEwOTk8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+MTA2PC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxpc3N1ZT40PC9pc3N1ZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMDE8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTA4Ni8zMjAyOTk8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjUiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwODYvMjEwNDAyPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGI2Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+Q29tcGFyYXRpdmUgU3R1ZGllcyBpbiBTb2NpZXR5IGFuZCBIaXN0b3J5PC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT43MTQ8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+NDU8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGlzc3VlPjQ8L2lzc3VlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwMzwvY1llYXI+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGI3Ij4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZV90aXRsZT5Qcml2YXRpemluZyBQb2xhbmQ6IEJhYnkgRm9vZCwgQmlnIEJ1c2luZXNzLCBhbmQgdGhlIFJlbWFraW5nIG9mIExhYm9yPC92b2x1bWVfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDA0PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjgiPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lX3RpdGxlPk1ha2luZyBDYXBpdGFsaXNtIHdpdGhvdXQgQ2FwaXRhbGlzdHM6IENsYXNzIEZvcm1hdGlvbiBhbmQgRWxpdGUgU3RydWdnbGVzIGluIFBvc3QtY29tbXVuaXN0IENlbnRyYWwgRXVyb3BlPC92b2x1bWVfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4xOTk4PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjkiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwODYvMzIwMzAwPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGIxMCI+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWVfdGl0bGU+RnJvbSB0aGUgQ3VsdCBvZiBXYXN0ZSB0byB0aGUgVHJhc2ggSGVhcCBvZiBIaXN0b3J5OiBUaGUgUG9saXRpY3Mgb2YgV2FzdGUgaW4gU29jaWFsaXN0IGFuZCBQb3N0c29jaWFsaXN0IEh1bmdhcnk8L3ZvbHVtZV90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMDc8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9ImF0eXBiMTEiPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lX3RpdGxlPlRyYW5zZm9ybWF0aW9uIG9mIENpdGllcyBpbiBDZW50cmFsIGFuZCBFYXN0ZXJuIEV1cm9wZTwvdm9sdW1lX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwNjwvY1llYXI+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGIxMiI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTA4MC8xMzYwNDgxMDkwMzI5ODY3MjwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9ImF0eXBiMTMiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5DaXR5PC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4xODA8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+MTQ8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGlzc3VlPjE8L2lzc3VlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAxMDwvY1llYXI+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGIxNCI+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWVfdGl0bGU+SW52ZW50aW5nIHRoZSBOZWVkeTogR2VuZGVyIGFuZCB0aGUgUG9saXRpY3Mgb2YgV2VsZmFyZSBpbiBIdW5nYXJ5PC92b2x1bWVfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDAyPC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjE1Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMDE3L1MwMDIwODU5MDA5OTkwNjMwPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGIxNiI+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+SGlydMKgUy4sS292YWNoZXbCoEEuVGhlIFVyYmFuIE1vc2FpYyBvZiBQb3N0LXNvY2lhbGlzdCBFYXN0ZXJuIEV1cm9wZS4gVHNlbmtvdmHCoFMuLCBOZWRvdmljLUJ1ZGljwqBaLiwgZWQuIERvcmRyZWNodDogU3ByaW5nZXI7IDIwMDY6MTEyLTEzMC48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjE3Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+SW50ZXJuYXRpb25hbCBMYWJvciBhbmQgV29ya2luZy1jbGFzcyBIaXN0b3J5PC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4yNDwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT42ODwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwNTwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDE3L1MwMTQ3NTQ3OTA1MDAwMTg5PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGIxOCI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTE0Ni9hbm51cmV2LnNvLjA2LjA4MDE4MC4wMDIyNDU8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjE5Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMDA3L0JGMDA5OTM1OTY8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjIwIj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZV90aXRsZT5FeHBhbmRpbmcgQ2xhc3M6IFBvd2VyIGFuZCBFdmVyeWRheSBQb2xpdGljcyBpbiBJbmR1c3RyaWFsIENvbW11bml0aWVzPC92b2x1bWVfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4xOTk3PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjIxIj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZV90aXRsZT5Xb3JraW5nLWNsYXNzIEZvcm1hdGlvbjogTmluZXRlZW50aC1jZW50dXJ5IFBhdHRlcm5zIGluIFdlc3Rlcm4gRXVyb3BlIGFuZCB0aGUgVW5pdGVkIFN0YXRlczwvdm9sdW1lX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MTk4NjwvY1llYXI+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGIyMiI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkRpYWxlY3RpY2FsIEFudGhyb3BvbG9neTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+Mzk5PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjEyPC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxpc3N1ZT40PC9pc3N1ZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjE5ODg8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9ImF0eXBiMjMiPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPktpZGVja2VswqBELlBvc3Rzb2NpYWxpc206IElkZWFscywgSWRlb2xvZ2llcywgYW5kIFByYWN0aWNlcyBpbiBFdXJhc2lhLiBIYW5uwqBDLiwgZWQuIExvbmRvbjogUm91dGxlZGdlOyAyMDAyOjExNC0xMzIuPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGIyNCI+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWVfdGl0bGU+R2V0dGluZyBieSBpbiBQb3N0c29jaWFsaXN0IFJvbWFuaWE6IExhYm9yLCB0aGUgQm9keSwgYW5kIFdvcmtpbmcgQ2xhc3MgQ3VsdHVyZTwvdm9sdW1lX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwODwvY1llYXI+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGIyNSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTAxNi9qLmNpdGllcy4yMDA2LjAyLjAwMjwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9ImF0eXBiMjYiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5BcmhpdGVjdHVyYTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+NzA8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+NDY8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMDY8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9ImF0eXBiMjciPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5BcmhpdGVjdHVyYTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MTM8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+MTwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MTk3OTwvY1llYXI+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGIyOCI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPklERUEgQXJ0cyBhbmQgU29jaWV0eTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MTI1PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjE1PC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDAzPC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjI5Ij4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZV90aXRsZT5WaXRhbCBzdGF0aXN0aWNzIGluIHRoZSBjaXR5IG9mIENsdWotTmFwb2NhPC92b2x1bWVfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDA3PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjMwIj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZV90aXRsZT5UaGUgU29jaWFsIEltcGFjdCBvZiBJbmZvcm1hbCBFY29ub21pZXMgaW4gRWFzdGVybiBFdXJvcGU8L3ZvbHVtZV90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMDI8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9ImF0eXBiMzEiPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lX3RpdGxlPlRoZSBEZWZlYXQgb2YgU29saWRhcml0eTogQW5nZXIgYW5kIFBvbGl0aWNzIGluIFBvc3Rjb21tdW5pc3QgRXVyb3BlPC92b2x1bWVfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDA1PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjMyIj4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+U3R1ZGlhIFNvY2lvbG9naWU8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjk8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+NTM8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGlzc3VlPjI8L2lzc3VlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwOTwvY1llYXI+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGIzMyI+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWVfdGl0bGU+VXJiYW4gR2VvZ3JhcGh5OiBBIEdsb2JhbCBQZXJzcGVjdGl2ZTwvdm9sdW1lX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwOTwvY1llYXI+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGIzNCI+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+UGV0cm92aWNpwqBOLkhlYWRsaW5lcyBvZiBOYXRpb25hbGlzbSwgU3VidGV4dHMgb2YgQ2xhc3MuIEthbGLCoEQuLCBIYWxtYWnCoEcuLCBlZC4gTmV3IFlvcms6IEJlcmdoYWhuIEJvb2tzOyAyMDExOjU3LTc3LjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9ImF0eXBiMzUiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5JbnRlcm5hdGlvbmFsIExhYm9yIGFuZCBXb3JraW5nLWNsYXNzIEhpc3Rvcnk8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjE8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+Njg8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMDU8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTAxNy9TMDE0NzU0NzkwNTAwMDE2NTwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9ImF0eXBiMzYiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5FYXN0IENlbnRyYWwgRXVyb3BlPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4xMzA8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+MzY8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGlzc3VlPjE8L2lzc3VlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwOTwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMTYzLzE4NzYzMzAwOVg0MTE1Mzk8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjM3Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+RGViYXR0ZTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+NTU8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+MTc8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGlzc3VlPjE8L2lzc3VlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwOTwvY1llYXI+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGIzOCI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkpvdXJuYWwgb2YgSG91c2luZyBhbmQgdGhlIEJ1aWx0IEVudmlyb25tZW50PC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT40NzwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT4xODwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8aXNzdWU+MTwvaXNzdWU+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDAzPC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjM5Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTc3LzAwMTEzOTIxMDQwNDY2MTk8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjQwIj4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+Q2l0eTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MjkyPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjEzPC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxpc3N1ZT4yPC9pc3N1ZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMDk8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9ImF0eXBiNDEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwODAvMTM2MDQ4MTEwMDM2MzM3MTk8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjQyIj4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+QW50aXBvZGU8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjI4MzwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT40MDwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8aXNzdWU+MjwvaXNzdWU+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDA5PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjQzIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMDAyLzk3ODA0NzA3MTI3MzMuY2gzPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGI0NCI+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWVfdGl0bGU+VGhlIFBvc3Qtc29jaWFsaXN0IENpdHk6IFVyYmFuIEZvcm0gYW5kIFNwYWNlIFRyYW5zZm9ybWF0aW9ucyBpbiBDZW50cmFsIGFuZCBFYXN0ZXJuIEV1cm9wZSBhZnRlciBTb2NpYWxpc208L3ZvbHVtZV90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMDc8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9ImF0eXBiNDUiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExMTEvai4xNDY3LTgzMzAuMjAwOC4wMDU3My54PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGI0NiI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTA4MC8wMjY3MzAzOTk4MjY3ODwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9ImF0eXBiNDciPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPlN6ZWzDqW55acKgSS4sS29zdGVsbG/CoEUuVGhlIE5ldyBJbnN0aXR1dGlvbmFsaXNtIGluIFNvY2lvbG9neS4gTmVlwqBWLiwgQnJpbnRvbsKgTS4sIGVkLiBOZXcgWW9yazogUnVzc2VsbCBTYWdlIEZvdW5kYXRpb247IDE5OTg6MzA1LTMyNi48L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjQ4Ij4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZV90aXRsZT5UaGUgUG92ZXJ0eSBvZiBUaGVvcnkgYW5kIE90aGVyIEVzc2F5czwvdm9sdW1lX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MTk3ODwvY1llYXI+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGI0OSI+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWVfdGl0bGU+U3RhbGluaXNtIGZvciBBbGwgU2Vhc29uczogQSBQb2xpdGljYWwgSGlzdG9yeSBvZiBSb21hbmlhbiBDb21tdW5pc208L3ZvbHVtZV90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMDM8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9ImF0eXBiNTAiPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPlRvc2ljc8KgSS5UcmFuc2Zvcm1hdGlvbiBvZiBDaXRpZXMgaW4gQ2VudHJhbCBhbmQgRWFzdGVybiBFdXJvcGUuIEhhbWlsdG9uwqBGLiBFLiBJLiwgRGltaXRyb3dza2EgQW5kcmV3c8KgSy4sIFBpY2hsZXItTWlsYW5vdmljwqBOLiwgZWQuIFRva3lvOiBVbml0ZWQgTmF0aW9ucyBVbml2ZXJzaXR5IFByZXNzOyAyMDA2OjQ3LTc4LjwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9ImF0eXBiNTEiPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lX3RpdGxlPlPEg3DEg3RvciDDrm4gUGlhxaNhIERpc2NvcmRpZWk8L3ZvbHVtZV90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMDU8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9ImF0eXBiNTIiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5JREVBIEFydGEgxZ9pIFNvY2lldGF0ZTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MTMwPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjU8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGlzc3VlPjM8L2lzc3VlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwMzwvY1llYXI+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iYXR5cGI1MyI+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWVfdGl0bGU+VGhlIFVyYmFuIE1vc2FpYyBvZiBQb3N0LXNvY2lhbGlzdCBFYXN0ZXJuIEV1cm9wZTogU3BhY2UsIEluc3RpdHV0aW9ucyBhbmQgUG9saWN5PC92b2x1bWVfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDA2PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJhdHlwYjU0Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMDE3L1MwMDEwNDE3NTAwMDE5OTAzPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDwvY2l0YXRpb25fbGlzdD4NCiAgICAgICAgICAgICAgPC9qb3VybmFsX2FydGljbGU+DQogICAgICAgICAgICA8L2pvdXJuYWw+DQogICAgICAgICAgPC9jcm9zc3JlZj4NCiAgICAgICAgPC9kb2lfcmVjb3JkPg0KICAgICAgPC9xdWVyeT4NCiAgICA8L2JvZHk+DQogIDwvcXVlcnlfcmVzdWx0Pg0KPC9jcm9zc3JlZl9yZXN1bHQ+
98
+ http_version:
99
+ recorded_at: Mon, 12 Oct 2020 20:19:20 GMT
100
+ recorded_with: VCR 3.0.3