relaton 1.0.3 → 1.4.1

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: 4684fab8af1665e7b92cab99cf13c967dc540fa76458b26a8a7e65120dd80ecf
4
- data.tar.gz: 614be349342df9fa8463079a302a7780d6286eceb68b066b41ea1798e0f5e830
3
+ metadata.gz: a04fd2ed3209193d978872c08f249cd1aecc74c39e8e65fe0e27da78255cf73c
4
+ data.tar.gz: bb5de751bad5540df17b7a823a7c54e04c31d65c55880f09aff9c28f5cc48db6
5
5
  SHA512:
6
- metadata.gz: cd927cdf95bce0afc16fcd1c3401628a85441f7c9ea9d799191f3c29cfbeb32907704f8f71afde124e5ee269e41d1d6c1feeaacec22b655671e8ee202168706d
7
- data.tar.gz: 306bd2a560b3543b69a687e1bdd908a31659b0e0642e38c0238acaea8ed5f028af7e369d01c158076a8faf9f5d0e654584ffcded83ebf5d426aa662742d33473
6
+ metadata.gz: e9486289b4a958f9997ecde5ae730dc1664fb18444483f4a13a450063488e7b762073d2e9fce914774a4e6a2e80dc6772de14e3f2c9367032c40818ac4e697bb
7
+ data.tar.gz: f309920297e8b00274565b313be5f5e0677358a46900e62edccf10a5bbfbd82c8182139d6a572d13f4fb285e6ba79b3abfe0cf0fcd7d3eabbf9e0b56f196a4bc
@@ -5,6 +5,6 @@
5
5
  inherit_from:
6
6
  - https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
7
7
  AllCops:
8
- TargetRubyVersion: 2.3
8
+ TargetRubyVersion: 2.4
9
9
  Rails:
10
- Enabled: true
10
+ Enabled: false
@@ -69,42 +69,51 @@ require "relaton"
69
69
 
70
70
  # Do not cache any entries retrieved
71
71
  db = Relaton::Db.new(nil, nil)
72
- [relaton] Info: detecting backends:
73
- [relaton] processor "relaton_iec" registered
74
- [relaton] processor "relaton_iso" registered
75
- [relaton] processor "relaton_ietf" registered
76
- [relaton] processor "relaton_gb" registered
77
- [relaton] processor "relaton_nist" registered
78
- => #<Relaton::Db:0x007fb1d2a75fe0
72
+ => #<Relaton::Db:0x007faaaba77648
73
+ @db=nil,
74
+ @db_name=nil,
75
+ @local_db=nil,
76
+ @local_db_name=nil,
79
77
  ...
80
78
 
81
79
  # Use only the global cache for any entries retrieved
82
80
  db = Relaton::Db.new("globalcache", nil)
83
- [relaton] Info: detecting backends:
84
- => #<Relaton::Db:0x007fb1d2856fc0
81
+ => #<Relaton::Db:0x007faabc0e7b30
82
+ @db=#<Relaton::DbCache:0x007faabc0e7ab8 @dir="globalcache", @ext="xml">,
83
+ @db_name="globalcache",
84
+ @local_db=nil,
85
+ @local_db_name=nil,
85
86
  ...
86
87
 
87
88
  # Use both a local and a global cache
88
89
  db = Relaton::Db.new("globalcache", "localcache")
89
- [relaton] Info: detecting backends:
90
- => #<Relaton::Db:0x007fb1d0ab9328
90
+ => #<Relaton::Db:0x007faabc900628
91
+ @db=#<Relaton::DbCache:0x007faabc900060 @dir="globalcache", @ext="xml">,
92
+ @db_name="globalcache",
93
+ @local_db=#<Relaton::DbCache:0x007faabc8fa5c0 @dir="localcache", @ext="xml">,
94
+ @local_db_name="localcache",
91
95
  ...
92
96
 
93
97
  x = db.fetch("IEEE 19011")
94
- IEEE 19011 does not have a recognised prefix: IEC, ISO, IETF, CN, NIST
98
+ [relaton-ieee] ("IEEE 19011") fetching...
99
+ [relaton-ieee] WARNING: no match found online for IEEE 19011. The code must be exactly like it is on the standards website.
95
100
  => nil
96
101
 
97
102
  x = db.fetch("ISO 19011")
98
- fetching ISO 19011...
103
+ [relaton-iso] ("ISO 19011") fetching...
104
+ [relaton-iso] ("ISO 19011") found ISO 19011 (all parts)
99
105
  => #<RelatonIsoBib::IsoBibliographicItem:0x007fb1d0ab2f00
100
106
  ...
101
107
 
102
108
  x = db.fetch("ISO 19011", "2011")
103
- fetching ISO 19011...
109
+ [relaton-iso] ("ISO 19011") fetching...
110
+ [relaton-iso] ("ISO 19011") found ISO 19011:2011
104
111
  => #<RelatonIsoBib::IsoBibliographicItem:0x007fb1d2593068
105
112
  ...
106
113
 
107
- x = db.fetch("ISO 19011", "2011", allparts: true)
114
+ x = db.fetch("ISO 19115", nil, all_parts: true)
115
+ [relaton-iso] ("ISO 19115") fetching...
116
+ [relaton-iso] ("ISO 19115") found ISO 19115 (all parts)
108
117
  => #<RelatonIsoBib::IsoBibliographicItem:0x007fb1d0ae8bf0
109
118
  ...
110
119
 
@@ -112,19 +121,31 @@ db.docid_type("CN(GB/T 1.1)")
112
121
  => ["Chinese Standard", "GB/T 1.1"]
113
122
 
114
123
  x.to_xml
115
- => "<bibitem id="ISO19011-2011">...."
124
+ => "<bibitem id="ISO19115(allparts)" type="standard">
125
+ ...
126
+ </bibitem>"
116
127
 
117
128
  db.to_xml
118
- => "<?xml version\"1.0" encoding="UTF-8"?><documents><bibdata>...."
119
-
120
- x.to_xml
121
- => "<bibitem id="ISO19011-2011">..."
122
-
123
- x.to_xml
124
- => "<bibdata>..."
129
+ => "<?xml version"1.0" encoding="UTF-8"?>
130
+ <documents>
131
+ <bibdata type="standard">
132
+ ...
133
+ </bibdata>
134
+ <bibdata type="standard">
135
+ ...
136
+ </bibdata>
137
+ ...
138
+ </documents"
139
+
140
+ x.to_xml bibdata: true
141
+ => "<bibdata type="standard">
142
+ ...
143
+ </bibdata>"
125
144
 
126
145
  db.load_entry("ISO(ISO 19011)")
127
- => "<bibdata>..."
146
+ => "<bibdata type="standard">
147
+ ...
148
+ <?bibdata>"
128
149
 
129
150
  db.save_entry("ISO(ISO 19011)", nil)
130
151
  => nil
@@ -8,6 +8,7 @@ module Relaton
8
8
  SUPPORTED_GEMS = %w[
9
9
  relaton_gb relaton_iec relaton_ietf relaton_iso relaton_itu relaton_nist
10
10
  relaton_ogc relaton_calconnect relaton_omg relaton_un relaton_w3c
11
+ relaton_ieee relaton_iho relaton_bipm
11
12
  ].freeze
12
13
 
13
14
  include Singleton
@@ -1,3 +1,3 @@
1
1
  module Relaton
2
- VERSION = "1.0.3".freeze
2
+ VERSION = "1.4.1".freeze
3
3
  end
@@ -30,25 +30,28 @@ Gem::Specification.new do |spec|
30
30
  spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
31
31
 
32
32
  # spec.add_dependency "algoliasearch"
33
- spec.add_dependency "relaton-calconnect", ">= 1.0.1"
34
- spec.add_dependency "relaton-gb", "~> 1.0.1"
35
- spec.add_dependency "relaton-iec", ">= 1.0.1"
36
- spec.add_dependency "relaton-ietf", ">= 1.0.2"
37
- spec.add_dependency "relaton-iso", ">= 1.0.3"
38
- spec.add_dependency "relaton-itu", ">= 1.0.4"
39
- spec.add_dependency "relaton-nist", ">= 1.0.1"
40
- spec.add_dependency "relaton-ogc", ">= 1.0.1"
41
- spec.add_dependency "relaton-omg", ">= 1.0.1"
42
- spec.add_dependency "relaton-un", ">= 1.0.1"
43
- spec.add_dependency "relaton-w3c", ">= 1.0.1"
44
-
45
- spec.add_development_dependency "byebug", "~> 10.0"
33
+ spec.add_dependency "relaton-bipm", "~> 1.4.0"
34
+ spec.add_dependency "relaton-calconnect", "~> 1.4.0"
35
+ spec.add_dependency "relaton-gb", "~> 1.4.0"
36
+ spec.add_dependency "relaton-iec", "~> 1.4.0"
37
+ spec.add_dependency "relaton-ieee", "~> 1.4.0"
38
+ spec.add_dependency "relaton-ietf", "~> 1.4.0"
39
+ spec.add_dependency "relaton-iho", "~> 1.4.0"
40
+ spec.add_dependency "relaton-iso", "~> 1.4.0"
41
+ spec.add_dependency "relaton-itu", "~> 1.4.0"
42
+ spec.add_dependency "relaton-nist", "~> 1.4.0"
43
+ spec.add_dependency "relaton-ogc", "~> 1.4.0"
44
+ spec.add_dependency "relaton-omg", "~> 1.4.0"
45
+ spec.add_dependency "relaton-un", "~> 1.4.0"
46
+ spec.add_dependency "relaton-w3c", "~> 1.4.0"
47
+
48
+ spec.add_development_dependency "byebug", "~> 11.0"
46
49
  spec.add_development_dependency "debase"
47
50
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
48
51
  spec.add_development_dependency "guard", "~> 2.14"
49
52
  spec.add_development_dependency "guard-rspec", "~> 4.7"
50
- spec.add_development_dependency "pry-byebug"
51
- spec.add_development_dependency "rake", "~> 12.0"
53
+ spec.add_development_dependency "pry-byebug", "~> 3.9.0"
54
+ spec.add_development_dependency "rake", "~> 10.0"
52
55
  spec.add_development_dependency "rspec", "~> 3.6"
53
56
  spec.add_development_dependency "rubocop", "= 0.54.0"
54
57
  spec.add_development_dependency "ruby-debug-ide"
@@ -6,7 +6,7 @@ RSpec.describe Relaton::Registry do
6
6
  ).to_stdout
7
7
  end
8
8
 
9
- it "finds processor" do
9
+ it "finds ISO processor" do
10
10
  expect(Relaton::Registry.instance.find_processor("relaton_iso")).
11
11
  to be_instance_of RelatonIso::Processor
12
12
  end
@@ -15,7 +15,59 @@ RSpec.describe Relaton::Registry do
15
15
  expect(Relaton::Registry.instance.supported_processors).to include :relaton_iso
16
16
  end
17
17
 
18
+ it "finds processor by type" do
19
+ expect(Relaton::Registry.instance.by_type("CN")).to be_instance_of RelatonGb::Processor
20
+ end
21
+
22
+ it "finds processor by type" do
23
+ expect(Relaton::Registry.instance.by_type("IEC")).to be_instance_of RelatonIec::Processor
24
+ end
25
+
26
+ it "finds processor by type" do
27
+ expect(Relaton::Registry.instance.by_type("IETF")).to be_instance_of RelatonIetf::Processor
28
+ end
29
+
18
30
  it "finds processor by type" do
19
31
  expect(Relaton::Registry.instance.by_type("ISO")).to be_instance_of RelatonIso::Processor
20
32
  end
33
+
34
+ it "finds processor by type" do
35
+ expect(Relaton::Registry.instance.by_type("ITU")).to be_instance_of RelatonItu::Processor
36
+ end
37
+
38
+ it "finds processor by type" do
39
+ expect(Relaton::Registry.instance.by_type("NIST")).to be_instance_of RelatonNist::Processor
40
+ end
41
+
42
+ it "finds processor by type" do
43
+ expect(Relaton::Registry.instance.by_type("OGC")).to be_instance_of RelatonOgc::Processor
44
+ end
45
+
46
+ it "finds processor by type" do
47
+ expect(Relaton::Registry.instance.by_type("CC")).to be_instance_of RelatonCalconnect::Processor
48
+ end
49
+
50
+ it "finds processor by type" do
51
+ expect(Relaton::Registry.instance.by_type("OMG")).to be_instance_of RelatonOmg::Processor
52
+ end
53
+
54
+ it "finds processor by type" do
55
+ expect(Relaton::Registry.instance.by_type("UN")).to be_instance_of RelatonUn::Processor
56
+ end
57
+
58
+ it "finds processor by type" do
59
+ expect(Relaton::Registry.instance.by_type("W3C")).to be_instance_of RelatonW3c::Processor
60
+ end
61
+
62
+ it "finds processor by type" do
63
+ expect(Relaton::Registry.instance.by_type("IEEE")).to be_instance_of RelatonIeee::Processor
64
+ end
65
+
66
+ it "finds processor by type" do
67
+ expect(Relaton::Registry.instance.by_type("IHO")).to be_instance_of RelatonIho::Processor
68
+ end
69
+
70
+ it "finds processor by type" do
71
+ expect(Relaton::Registry.instance.by_type("BIPM")).to be_instance_of RelatonBipm::Processor
72
+ end
21
73
  end
@@ -39,14 +39,14 @@ RSpec.describe Relaton::Db do
39
39
  it "implicity" do
40
40
  VCR.use_cassette "iso_19115" do
41
41
  bib = @db.fetch("ISO 19115", nil, {})
42
- expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
42
+ expect(bib.docidentifier[0].id).to eq "ISO 19115 (all parts)"
43
43
  end
44
44
  end
45
45
 
46
46
  it "explicity" do
47
47
  VCR.use_cassette "iso_19115" do
48
48
  bib = @db.fetch("ISO 19115 (all parts)", nil, {})
49
- expect(bib).to be_instance_of RelatonIsoBib::IsoBibliographicItem
49
+ expect(bib.docidentifier[0].id).to eq "ISO 19115 (all parts)"
50
50
  end
51
51
  end
52
52
  end
@@ -193,6 +193,20 @@ RSpec.describe Relaton::Db do
193
193
  end
194
194
  end
195
195
 
196
+ it "get IEEE reference" do
197
+ VCR.use_cassette "ieee_528_2019" do
198
+ bib = @db.fetch "IEEE 528-2019"
199
+ expect(bib).to be_instance_of RelatonIeee::IeeeBibliographicItem
200
+ end
201
+ end
202
+
203
+ it "get IHO reference" do
204
+ VCR.use_cassette "iho_b_11" do
205
+ bib = @db.fetch "IHO B-11"
206
+ expect(bib).to be_instance_of RelatonIho::IhoBibliographicItem
207
+ end
208
+ end
209
+
196
210
  context "version control" do
197
211
  before(:each) { @db.save_entry "iso(test_key)", value: "test_value" }
198
212
 
@@ -0,0 +1,141 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://standards.ieee.org/bin/standards/search?data=%7B%22data%22:%7B%22searchTerm%22:%22528-2019%22%7D%7D
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v1.0.1
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Wed, 03 Jun 2020 18:23:50 GMT
23
+ Cache-Control:
24
+ - no-cache="set-cookie"
25
+ Content-Type:
26
+ - application/json;charset=utf-8
27
+ Vary:
28
+ - Host,Accept-Encoding,User-Agent
29
+ X-Content-Type-Options:
30
+ - nosniff
31
+ X-Frame-Options:
32
+ - SAMEORIGIN
33
+ - SAMEORIGIN
34
+ Content-Length:
35
+ - '847'
36
+ Set-Cookie:
37
+ - AWSELB=77AF5BDD1C1D50E4D12118E21FBA1C1FB04C8B23C80C17259E173393484CB99714CB48C4AFB1A0E49404A8F888F3C7BA1947A3C581C9FE6BA7CF201DC5898AAC0539E8F22B;PATH=/;MAX-AGE=900;Secure
38
+ - AWSELBCORS=77AF5BDD1C1D50E4D12118E21FBA1C1FB04C8B23C80C17259E173393484CB99714CB48C4AFB1A0E49404A8F888F3C7BA1947A3C581C9FE6BA7CF201DC5898AAC0539E8F22B;PATH=/;MAX-AGE=900;SECURE;SAMESITE=None
39
+ - TS01247332=01c1c020ddadb2afa810cfa24fd86ca188899a13bf3583d7d86b592c4a4802015c4ec8564ed08497f6cd2245b5db722d7eb07c31b1ee4b5e50cc61f4dd1811e72daef9a0897dab733d1f5bd7c2090628715ee8c8d9;
40
+ Path=/
41
+ Connection:
42
+ - close
43
+ Content-Security-Policy:
44
+ - frame-ancestors http://*.ieee.org https://*.ieee.org
45
+ Strict-Transport-Security:
46
+ - max-age=16070400
47
+ body:
48
+ encoding: ASCII-8BIT
49
+ string: '{"status":"success","code":200,"message":"{\"response\":{\"Facets\":[{\"facetId\":1,\"facetName\":\"contentType\",\"multiselect\":true,\"facets\":[{\"facetValueName\":\"Standard\",\"facetValueId\":4294967245,\"selected\":false}],\"sortOrder\":1},{\"facetId\":3,\"facetName\":\"standardTopics\",\"multiselect\":true,\"facets\":[{\"facetValueName\":\"Aerospace
50
+ Electronics\",\"facetValueId\":4294967248,\"selected\":false},{\"facetValueName\":\"Nuclear
51
+ Power\",\"facetValueId\":4294967275,\"selected\":false},{\"facetValueName\":\"Power
52
+ and Energy\",\"facetValueId\":4294967279,\"selected\":false}],\"sortOrder\":40}],\"searchResults\":{\"resultsMapList\":[{\"record\":{\"recordTitle\":\"528-2019
53
+ - IEEE Standard for Inertial Sensor Terminology\",\"recordText\":\"<endeca_term>528-2019<\/endeca_term>
54
+ - IEEE Standard for Inertial Sensor Terminology\",\"recordURL\":\"https://standards.ieee.org/content/ieee-standards/en/standard/528-2019.html\"}},{\"record\":{\"recordTitle\":\"528-2019
55
+ - IEEE Standard for Inertial Sensor Terminology\",\"recordText\":\"<endeca_term>528-2019<\/endeca_term>
56
+ - IEEE Standard for Inertial Sensor Terminology\",\"recordURL\":\"https://standards.ieee.org/standard/528-2019.html\"}},{\"record\":{\"recordTitle\":\"1293-1998/Cor
57
+ 1-2008 - IEEE Standard Specification Format Guide and Test Procedure for Linear,Single-Axis,
58
+ Nongyroscopic Accelerometers Corrigendum 1: Changes to Annex K and Annex L\",\"recordText\":\"1293-1998/Cor
59
+ 1-2008 - IEEE Standard Specification Format Guide and Test Procedure for Linear,Single-Axis,
60
+ Nongyroscopic Accelerometers ...\",\"recordURL\":\"https://standards.ieee.org/standard/1293-1998-Cor1-2008.html\"}},{\"record\":{\"recordTitle\":\"1293-2018
61
+ - IEEE Standard Specification Format Guide and Test Procedure for Linear Single-Axis,
62
+ Nongyroscopic Accelerometers\",\"recordText\":\"1293-2018 - IEEE Standard
63
+ Specification Format Guide and Test Procedure for Linear Single-Axis, Nongyroscopic
64
+ Accelerometers ...\",\"recordURL\":\"https://standards.ieee.org/standard/1293-2018.html\"}},{\"record\":{\"recordTitle\":\"1293-2018
65
+ - IEEE Standard Specification Format Guide and Test Procedure for Linear Single-Axis,
66
+ Nongyroscopic Accelerometers\",\"recordText\":\"1293-2018 - IEEE Standard
67
+ Specification Format Guide and Test Procedure for Linear Single-Axis, Nongyroscopic
68
+ Accelerometers ...\",\"recordURL\":\"https://standards.ieee.org/content/ieee-standards/en/standard/1293-2018.html\"}},{\"record\":{\"recordTitle\":\"1431-2004
69
+ - IEEE Standard Specification Format Guide and Test Procedure for Coriolis
70
+ Vibratory Gyros\",\"recordText\":\"1431-2004 - IEEE Standard Specification
71
+ Format Guide and Test Procedure for Coriolis Vibratory Gyros IEEE.org ...\",\"recordURL\":\"https://standards.ieee.org/standard/1431-2004.html\"}},{\"record\":{\"recordTitle\":\"1431-2004/Cor
72
+ 1-2008 - IEEE Standard Specification Format Guide and Test Procedure for Coriolis
73
+ Vibratory Gyros - Corrigendum 1\",\"recordText\":\"1431-2004/Cor 1-2008 -
74
+ IEEE Standard Specification Format Guide and Test Procedure for Coriolis Vibratory
75
+ Gyros ...\",\"recordURL\":\"https://standards.ieee.org/standard/1431-2004-Cor1-2008.html\"}},{\"record\":{\"recordTitle\":\"1554-2005
76
+ - IEEE Recommended Practice for Inertial Sensor Test Equipment, Instrumentation,
77
+ Data Acquisition, and Analysis\",\"recordText\":\"1554-2005 - IEEE Recommended
78
+ Practice for Inertial Sensor Test Equipment, Instrumentation, Data Acquisition,
79
+ and Analysis ...\",\"recordURL\":\"https://standards.ieee.org/standard/1554-2005.html\"}},{\"record\":{\"recordTitle\":\"292-1969
80
+ - IEEE Specification Format for Single-Degree-of-Freedom Spring-Restrained
81
+ Rate Gyros\",\"recordText\":\"292-1969 - IEEE Specification Format for Single-Degree-of-Freedom
82
+ Spring-Restrained Rate Gyros IEEE.org IEEE Xplore Digital Library ...\",\"recordURL\":\"https://standards.ieee.org/standard/292-1969.html\"}},{\"record\":{\"recordTitle\":\"293-1969
83
+ - IEEE Test Procedure for Single-Degree-of-Freedom Spring-Restrained Rate
84
+ Gyros\",\"recordText\":\"293-1969 - IEEE Test Procedure for Single-Degree-of-Freedom
85
+ Spring-Restrained Rate Gyros IEEE.org IEEE Xplore Digital Library ...\",\"recordURL\":\"https://standards.ieee.org/standard/293-1969.html\"}}],\"totalNumberOfResults\":24,\"start\":0,\"offset\":0,\"recordsPerPage\":10}}}"}'
86
+ http_version:
87
+ recorded_at: Wed, 03 Jun 2020 18:23:50 GMT
88
+ - request:
89
+ method: get
90
+ uri: https://standards.ieee.org/standard/528-2019.html
91
+ body:
92
+ encoding: US-ASCII
93
+ string: ''
94
+ headers:
95
+ User-Agent:
96
+ - Faraday v1.0.1
97
+ Accept-Encoding:
98
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
99
+ Accept:
100
+ - "*/*"
101
+ response:
102
+ status:
103
+ code: 200
104
+ message: OK
105
+ headers:
106
+ Date:
107
+ - Wed, 03 Jun 2020 18:23:50 GMT
108
+ Accept-Ranges:
109
+ - bytes
110
+ Cache-Control:
111
+ - no-cache="set-cookie"
112
+ Content-Type:
113
+ - text/html;charset=utf-8
114
+ Last-Modified:
115
+ - Wed, 03 Jun 2020 18:23:51 GMT
116
+ Vary:
117
+ - Host,Accept-Encoding,User-Agent
118
+ X-Content-Type-Options:
119
+ - nosniff
120
+ X-Frame-Options:
121
+ - SAMEORIGIN
122
+ Content-Length:
123
+ - '15061'
124
+ Set-Cookie:
125
+ - AWSELB=77AF5BDD1C1D50E4D12118E21FBA1C1FB04C8B23C80C17259E173393484CB99714CB48C4AFB9880327CD00AA10264F99D0D6415BDE660FA7517AD997168A1D36AA47EF7D2A;PATH=/;MAX-AGE=900;Secure
126
+ - AWSELBCORS=77AF5BDD1C1D50E4D12118E21FBA1C1FB04C8B23C80C17259E173393484CB99714CB48C4AFB9880327CD00AA10264F99D0D6415BDE660FA7517AD997168A1D36AA47EF7D2A;PATH=/;MAX-AGE=900;SECURE;SAMESITE=None
127
+ - TS01247332=01c1c020dda9ebb92df28c98ea59f95d36cd37ebd14c1f72f2b11138928af1b29be48ebb423c2b6bba94e4c329cf06916674f8afc80293c50066761ea880b022b2815d7233d94524b2573dae2e75d0c3bcbc01b0bb;
128
+ Path=/
129
+ Connection:
130
+ - close
131
+ Content-Security-Policy:
132
+ - frame-ancestors http://*.ieee.org https://*.ieee.org
133
+ Strict-Transport-Security:
134
+ - max-age=16070400
135
+ body:
136
+ encoding: ASCII-8BIT
137
+ string: !binary |-
138
+ DQo8IURPQ1RZUEUgSFRNTD4NCjxodG1sPg0KICAgIDxoZWFkPgoKPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyI+Cgo8IS0tIEdsb2JhbCBzaXRlIHRhZyAoZ3RhZy5qcykgLSBHb29nbGUgQW5hbHl0aWNzIC0gU3RhcnQgLS0+CjxzY3JpcHQ+KGZ1bmN0aW9uKHcsZCxzLGwsaSl7d1tsXT13W2xdfHxbXTt3W2xdLnB1c2goeydndG0uc3RhcnQnOg0KbmV3IERhdGUoKS5nZXRUaW1lKCksZXZlbnQ6J2d0bS5qcyd9KTt2YXIgZj1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKHMpWzBdLA0Kaj1kLmNyZWF0ZUVsZW1lbnQocyksZGw9bCE9J2RhdGFMYXllcic/JyZsPScrbDonJztqLmFzeW5jPXRydWU7ai5zcmM9DQonaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RtLmpzP2lkPScraStkbDtmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGosZik7DQp9KSh3aW5kb3csZG9jdW1lbnQsJ3NjcmlwdCcsJ2RhdGFMYXllcicsJ0dUTS1NUjhUODQzJyk7PC9zY3JpcHQ+DQo8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9ImJ1MWdtVzRNS3k4V2F3LTB3OFBRN2RTQkYzc0FuWVRkaGxLQ0d3T0J3QkkiIC8+DQoKPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtIEVuZCAtLT4KCgoKCgkKCQk8bWV0YSBuYW1lPSJkZXMiLz4KCQk8bWV0YSBuYW1lPSJTdGRSZWNObyIgY29udGVudD0iNzI5MiIvPgoJCTxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJUZXJtcyBhbmQgZGVmaW5pdGlvbnMgcmVsYXRpbmcgdG8gaW5lcnRpYWwgc2Vuc29ycyBhcmUgcHJlc2VudGVkIGluIHRoaXMgc3RhbmRhcmQuIFVzYWdlIGFzIHVuZGVyc3Rvb2QgYnkgdGhlIGluZXJ0aWFsIHNlbnNvciBjb21tdW5pdHkgaXMgZ2l2ZW4gcHJlZmVyZW5jZSBvdmVyIGdlbmVyYWwgdGVjaG5pY2FsIHVzYWdlIG9mIHRoZSB0ZXJtcyBoZXJlaW4uIFRoZSBjcml0ZXJpb24gZm9yIGluY2x1c2lvbiBvZiBhIHRlcm0gYW5kIGl0cyBkZWZpbml0aW9uIGluIHRoaXMgc3RhbmRhcmQgaXMgdXNlZnVsbmVzcyBhcyByZWxhdGVkIHRvIGluZXJ0aWFsIHNlbnNvciB0ZWNobm9sb2d5LiIvPgoJCTxtZXRhIG5hbWU9InRpdGxlIiBjb250ZW50PSI1MjgtMjAxOSAtIElFRUUgU3RhbmRhcmQgZm9yIEluZXJ0aWFsIFNlbnNvciBUZXJtaW5vbG9neSIvPgoJCTxtZXRhIG5hbWU9InN0YXR1cyIvPgoJCTxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJJRUVFIDUyOD8sIGluZXJ0aWFsIHNlbnNvciB0ZWNobm9sb2d5LCBpbmVydGlhbCBzZW5zb3IgdGVybWlub2xvZ3kiLz4KCQk8bWV0YSBuYW1lPSJTb2NpZXR5IiBjb250ZW50PSJJRUVFIEFlcm9zcGFjZSBhbmQgRWxlY3Ryb25pYyBTeXN0ZW1zIFNvY2lldHkiLz4KCQk8bWV0YSBuYW1lPSJ0eXBlIiBjb250ZW50PSJTdGFuZGFyZCIvPgoKCQk8bWV0YSBuYW1lPSJ0b3BpYyIgY29udGVudD0iQWVyb3NwYWNlIEVsZWN0cm9uaWNzIi8+CgoJCQoJCgoKDQogICAgCiAgICAKPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvZXRjLmNsaWVudGxpYnMvZm91bmRhdGlvbi9jbGllbnRsaWJzL21haW4ubWluLmI0OTk0Nzg4Y2YxZWFlZWQzMDBhMGFhN2FmNTNmM2M4LmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvZXRjLmNsaWVudGxpYnMvY2xpZW50bGlicy9ncmFuaXRlL2pxdWVyeS5taW4uNzcyZmIwNGQ0Y2U1MzZkZmIwNmMxN2U3ODlhZDRkYmQuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvZXRjLmNsaWVudGxpYnMvY2xpZW50bGlicy9ncmFuaXRlL3V0aWxzLm1pbi5hNTNhNjA5ZDY0YWJiNTliYTQwMTczNTE4NTRjNDZkMC5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9ldGMuY2xpZW50bGlicy9jbGllbnRsaWJzL2dyYW5pdGUvanF1ZXJ5L2dyYW5pdGUubWluLmE2YzE1ZDVlODY0M2U0YjllNmE2ODQ1YWRhMmU3YTM2LmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2V0Yy9jbGllbnRsaWJzL2dyYW5pdGUvanF1ZXJ5L2dyYW5pdGUubWluLmFjZjI4M2UwNzUxNmZmNjhmY2U3N2JkNmMzYmQ3ZmU5LmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2V0Yy5jbGllbnRsaWJzL2ZvdW5kYXRpb24vY2xpZW50bGlicy9qcXVlcnkubWluLmRkOWIzOTVjNzQxY2UyNzg0MDk2ZTI2NjE5ZTE0OTEwLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2V0Yy5jbGllbnRsaWJzL2ZvdW5kYXRpb24vY2xpZW50bGlicy9zaGFyZWQubWluLmQ4ZWVlMDY4NWYwOGE1MjUzYTFkNzUzYTI2MTlhMDhmLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2V0Yy5jbGllbnRsaWJzL2ZvdW5kYXRpb24vY2xpZW50bGlicy9tYWluLm1pbi4zODlmZTYxOGNlOTk5ZWRiYTU3NzNjZmJlOTZhNWFkYi5qcyI+PC9zY3JpcHQ+CgoKDQogICAgDQogICAgPGxpbmsgaHJlZj0iL2V0Yy9kZXNpZ25zL2llZWUtc3RhbmRhcmRzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPg0KCgoNCg0KDQoNCg0KDQoNCg0KCgoKPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KICAgICAgDQoKICAgIAo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9ldGMvY2xpZW50bGlicy9heGlzNDEtY29yZS90aGlyZHBhcnR5L2Jvb3RzdHJhcC5taW4uNDE1ZTkwY2RjMjk3OWVmZmVjYjFhODc4M2ZkMjkzNzQuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CgoKDQoKICAgIAo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9ldGMvY2xpZW50bGlicy9heGlzNDEtY29yZS90aGlyZHBhcnR5L2RhdGF0YWJsZS5taW4uMzJkYTdhOWQ0NzQ0NzNiODA1Yzg3ZGEyYjc0NDBlN2EuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2V0Yy9jbGllbnRsaWJzL2F4aXM0MS1jb3JlL2Jhc2UubWluLmMwM2E0OGRiYjMwZWJjNWFiNjU5YTRmYjM5YTAxMmY2LmNzcyIgdHlwZT0idGV4dC9jc3MiPgoKCg0KCiAgICAKPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvZXRjL2NsaWVudGxpYnMvYXhpczQxLWNvcmUvYXBwc19jb21wb25lbnRzLm1pbi5kNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KCgoNCgogICAgCgoKDQoNCgogICAgCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9ldGMvY2xpZW50bGlicy9heGlzNDEtY29yZS90aGlyZHBhcnR5L2pxdWVyeS5taW4uYzM2MjNiMTUyOWY3YTg5OTQ2MzU0YTc1ZmJjNTc3NjYuanMiPjwvc2NyaXB0PgoKCg0KCiAgICAKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2V0Yy9jbGllbnRsaWJzL2F4aXM0MS1jb3JlL3RoaXJkcGFydHkvanF1ZXJ5X2Zvcm0ubWluLmM2N2UyNmRiMGU2NWIzOWQ5NGM3M2M2ZGMyZjYyZTA2LmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2V0Yy9jbGllbnRsaWJzL2F4aXM0MS1jb3JlL3RoaXJkcGFydHkvanF1ZXJ5X3ZhbGlkYXRvci5taW4uODFmNzFhMWE0ZjdkM2Q4OWFlMjY5ZjM3M2U2MjhlNjYuanMiPjwvc2NyaXB0PgoKCg0KCiAgICAKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2V0Yy9jbGllbnRsaWJzL2F4aXM0MS1jb3JlL3RoaXJkcGFydHkvZGF0YXRhYmxlLm1pbi5jZjJiMGQ2ODAxYTQ3MWEwOTFhMDQ3YzRhZmJmOGYzMy5qcyI+PC9zY3JpcHQ+CgoKDQoKICAgIAo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvZXRjL2NsaWVudGxpYnMvYXhpczQxLWNvcmUvdGhpcmRwYXJ0eS9ib290c3RyYXAubWluLjk3ZDFiYmUxZDg0M2NiODNhNGE0MzNkYjk4ZGE0YzhkLmpzIj48L3NjcmlwdD4KCgoKPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KDQoKICAgIAo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9ldGMvZGVzaWducy9pZWVlLWNvcmUvY2xpZW50bGlicy9iYXNlLm1pbi5hN2VhZDQyYTY1OGJlNWExYjcwMDg0MjQzOTAyZmI3Zi5jc3MiIHR5cGU9InRleHQvY3NzIj4KCgoNCgogICAgCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2V0Yy9kZXNpZ25zL2llZWUtY29yZS9jbGllbnRsaWJzL2FwcHNfY29tcG9uZW50cy5taW4uZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CgoKDQoNCjxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KICAgICAgCgogICAgCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2V0Yy9kZXNpZ25zL2llZWUtc3RhbmRhcmRzL2NsaWVudGxpYnMvYmFzZS5taW4uNmQ5M2UyZjA4ODVkNzFlOTFmYzkyMmJmMDVhNWMxOWMuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CgoKCgogICAgCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2V0Yy9kZXNpZ25zL2llZWUtc3RhbmRhcmRzL2NsaWVudGxpYnMvYXBwc19jb21wb25lbnRzLm1pbi5kNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KCgoKCiAgICAKPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvZXRjL2Rlc2lnbnMvaWVlZS1zdGFuZGFyZHMvY2xpZW50bGlicy90aGlyZHBhcnR5L2ZvbnQtYXdlc29tZS5taW4uZDFlNjg5YzhiYmZlMzJkZmJjYjc3MjExMDJiYmEzNzguY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CgoKCgogICAgCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2V0Yy9kZXNpZ25zL2llZWUtc3RhbmRhcmRzL2NsaWVudGxpYnMvdGhpcmRwYXJ0eS9vcGVuLXNhbnMubWluLmI2MzQ1NTE4MTAwNTUxNGIxN2UxYzM2OGQ0ODEwMzA4LmNzcyIgdHlwZT0idGV4dC9jc3MiPgoKCgoKICAgIAo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvZXRjLmNsaWVudGxpYnMvY2xpZW50bGlicy9ncmFuaXRlL2hhbmRsZWJhcnMubWluLjVjMzI4NWVlNTA3OGRhM2NhMDVmOGUxMmI4NzdhNjQ3LmpzIj48L3NjcmlwdD4KCgoKDQoKCgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9wbGF0Zm9ybS1hcGkuc2hhcmV0aGlzLmNvbS9qcy9zaGFyZXRoaXMuanMjcHJvcGVydHk9NWE2OWZiZTYxYzVkNTkwMDEzYjRkZTNhJnByb2R1Y3Q9c29wIiBhc3luYz0iYXN5bmMiPjwvc2NyaXB0PgoKCjxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIiBocmVmPSIvZXRjL2Rlc2lnbnMvaWVlZS1zdGFuZGFyZHMvZmF2aWNvbi5pY28iPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIHR5cGU9ImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiIgaHJlZj0iL2V0Yy9kZXNpZ25zL2llZWUtc3RhbmRhcmRzL2Zhdmljb24uaWNvIj4KPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBzaXplcz0iNTd4NTciIGhyZWY9Ii9ldGMvZGVzaWducy9pZWVlLXN0YW5kYXJkcy9hcHBsZV9mYXZpY29uLnBuZyI+Cgo8dGl0bGU+NTI4LTIwMTkgLSBJRUVFIFN0YW5kYXJkIGZvciBJbmVydGlhbCBTZW5zb3IgVGVybWlub2xvZ3k8L3RpdGxlPgoKPCEtLSBHRFBSIENvb2tpZSBCYW5uZXIgLSBTdGFydCAtLT4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vczMtdXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vaWVlZXNodXRwYWdlcy9nZHByL3NldHRpbmdzLmpzIj48L3NjcmlwdD4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvY29va2llY29uc2VudDIvMy4wLjMvY29va2llY29uc2VudC5taW4uY3NzIi8+CjxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9jb29raWVjb25zZW50Mi8zLjAuMy9jb29raWVjb25zZW50Lm1pbi5qcyI+PC9zY3JpcHQ+CjwhLS0gR0RQUiBDb29raWUgQmFubmVyIC0gRW5kIC0tPgo8L2hlYWQ+DQogICAgPGJvZHk+Cgo8Ym9keT4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzaGFyZXRoaXMtZW5hYmxlZCIgbmFtZT0ic2hhcmV0aGlzLWVuYWJsZWQiIHZhbHVlPSJ0cnVlIj4KCQogICAgPCEtLSBHb29nbGUgVGFnIE1hbmFnZXIgKG5vc2NyaXB0KSAtLT4KICAgIDxub3NjcmlwdD48aWZyYW1lIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vbnMuaHRtbD9pZD1HVE0tTVI4VDg0MyINCmhlaWdodD0iMCIgd2lkdGg9IjAiIHN0eWxlPSJkaXNwbGF5Om5vbmU7dmlzaWJpbGl0eTpoaWRkZW4iPjwvaWZyYW1lPjwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBHb29nbGUgVGFnIE1hbmFnZXIgKG5vc2NyaXB0KSAtLT4KICAgIAogICAgPGRpdiBjbGFzcz0ic2hhcmV0aGlzLWlubGluZS1zaGFyZS1idXR0b25zIj48L2Rpdj4KCTxkaXYgaWQ9InBhZ2Utd3JhcHBlciIgY2xhc3M9ImNsZWFyZml4Ij4KCQkKCjwhLS0gSGVhZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KPGhlYWRlciBpZD0icGFnZS1oZWFkZXIiIGNsYXNzPSJoZWFkZXIiIHN0eWxlPSJwb3NpdGlvbjpmaXhlZCI+CiAgICANCg0KDQoNCiAgICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICA8ZGl2IGNsYXNzPSJuZXdwYXIgbmV3IHNlY3Rpb24iPg0KDQo8L2Rpdj4KDQogICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgPGRpdiBjbGFzcz0icGFyIGlwYXJ5c19pbmhlcml0ZWQiPg0KDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgPGRpdiBjbGFzcz0iZ2xvYmFsLW1ldGEtbmF2LWhlYWRlciI+CgoKPCEtLSBHbG9iYWwgTWV0YS1OYXYgSGVhZGVyIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgo8ZGl2IGNsYXNzPSJnbG9iYWwtbWV0YSBoaWRkZW4tc20gaGlkZGVuLXhzIj4KCTxuYXYgaWQ9ImxlZnQtc2lkZS1tZXRhbmF2LWxpbmtzIiBjbGFzcz0ibWV0YS1uYXYiPgoJCQ0KDQoNCg0KDQoNCiAgICAgICAgIA0KDQoNCg0KPCEtLSBMaW5rIExpc3QgQ29udGFpbmVyIENvbnRlbnQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCg0KICAgIA0KICAgIDx1bCBjbGFzcz0ibGluay1saXN0Ij4NCiAgICAgICAgDQoNCg0KDQoNCg0KICAgICAgICAgDQoNCg0KDQo8IS0tIExpbmsgQ29udGVudA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KDQogICAgPGxpPg0KICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5pZWVlLm9yZy9pbmRleC5odG1sIiB0YXJnZXQ9Il9ibGFuayI+DQogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXJyb3ctcmlnaHQiPjxpIGNsYXNzPSJmYSBmYS1hbmdsZS1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L3NwYW4+SUVFRS5vcmcNCiAgICAgICAgPC9hPg0KICAgIDwvbGk+DQoNCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+DQoNCiAgICANCiAgICAgICAgDQoNCg0KDQoNCg0KICAgICAgICAgDQoNCg0KDQo8IS0tIExpbmsgQ29udGVudA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KDQogICAgPGxpPg0KICAgICAgICA8YSBocmVmPSJodHRwOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy9YcGxvcmUvaG9tZS5qc3AiIHRhcmdldD0iX2JsYW5rIj4NCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhcnJvdy1yaWdodCI+PGkgY2xhc3M9ImZhIGZhLWFuZ2xlLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvc3Bhbj5JRUVFIFhwbG9yZSBEaWdpdGFsIExpYnJhcnkNCiAgICAgICAgPC9hPg0KICAgIDwvbGk+DQoNCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+DQoNCiAgICANCiAgICAgICAgDQoNCg0KDQoNCg0KICAgICAgICAgDQoNCg0KDQo8IS0tIExpbmsgQ29udGVudA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KDQogICAgPGxpPg0KICAgICAgICA8YSBocmVmPSJodHRwczovL3N0YW5kYXJkcy5pZWVlLm9yZy8iIHRhcmdldD0iX2JsYW5rIj4NCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhcnJvdy1yaWdodCI+PGkgY2xhc3M9ImZhIGZhLWFuZ2xlLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvc3Bhbj5JRUVFIFN0YW5kYXJkcw0KICAgICAgICA8L2E+DQogICAgPC9saT4NCg0KPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4NCg0KICAgIA0KICAgICAgICANCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8bGk+DQogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vc3BlY3RydW0uaWVlZS5vcmcvIiB0YXJnZXQ9Il9ibGFuayI+DQogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXJyb3ctcmlnaHQiPjxpIGNsYXNzPSJmYSBmYS1hbmdsZS1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L3NwYW4+SUVFRSBTcGVjdHJ1bQ0KICAgICAgICA8L2E+DQogICAgPC9saT4NCg0KPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4NCg0KICAgIA0KICAgICAgICANCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8bGk+DQogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmllZWUub3JnL3NpdGVtYXAuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPg0KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFycm93LXJpZ2h0Ij48aSBjbGFzcz0iZmEgZmEtYW5nbGUtcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9zcGFuPk1vcmUgU2l0ZXMNCiAgICAgICAgPC9hPg0KICAgIDwvbGk+DQoNCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+DQoNCiAgICA8L3VsPg0KDQo8IS0tICNsaW5rLWxpc3QtY29udGFpbmVyLWNvbnRlbnQgZW5kIC0tPg0KCgk8L25hdj4KCTxuYXYgaWQ9InJpZ2h0LXNpZGUtbWV0YW5hdi1saW5rcyIgY2xhc3M9Im1ldGEtbmF2Ij4KCQkNCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBMaXN0IENvbnRhaW5lciBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICANCiAgICA8dWwgY2xhc3M9ImxpbmstbGlzdCI+DQogICAgICAgIA0KDQoNCg0KDQoNCiAgICAgICAgIA0KDQoNCg0KPCEtLSBMaW5rIENvbnRlbnQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCg0KICAgIDxsaT4NCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9zdGFuZGFyZHMuaWVlZS5vcmcvZGV2ZWxvcC9ldG9vbHMvIiB0YXJnZXQ9Il9zZWxmIj4NCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhcnJvdy1yaWdodCI+PGkgY2xhc3M9ImZhIGZhLWFuZ2xlLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvc3Bhbj5lVG9vbHPCoCDCoMKgIMKgDQogICAgICAgIDwvYT4NCiAgICA8L2xpPg0KDQo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPg0KDQogICAgPC91bD4NCg0KPCEtLSAjbGluay1saXN0LWNvbnRhaW5lci1jb250ZW50IGVuZCAtLT4NCgoJCQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KPCEtLSBSZXNwb25zaXZlIEltYWdlIENvbnRlbnQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCjxkaXYgY2xhc3M9InJlc3BvbnNpdmUtaW1nIj4NCiAgICANCg0KICAgIA0KICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5pZWVlLm9yZy8iIHRhcmdldD0iX3NlbGYiIHN0eWxlPSJ3aWR0aDoxMDAlIj4NCiAgICAgICAgICAgIDxpbWcgc3JjPSIvY29udGVudC9kYW0vaWVlZS1zdGFuZGFyZHMvc3RhbmRhcmRzL3dlYi92aXN1YWxzL2xvZ29zL2llZWUtbG9nby13aGl0ZS5naWYiIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgYWx0PSJJRUVFIGxvZ28gc21hbGwiPg0KICAgICAgICAgICAgPC9pbWc+DQogICAgICAgIDwvYT4NCiAgICANCiAgICANCjwvZGl2Pg0KPCEtLSBFbmQgUmVzcG9uc2UgSW1hZ2UgQ29udGVudCAtLT4KCTwvbmF2Pgo8L2Rpdj4KPHN0eWxlIHR5cGU9J3RleHQvY3NzJz4KCS5tZXRhLW5hdiAubGluay1saXN0IGxpIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9CgkubWV0YS1uYXY+LmxpbmstbGlzdCBsaSBhIHtjb2xvcjogfQoJLmdsb2JhbC1tZXRhIHtiYWNrZ3JvdW5kOiB9Cjwvc3R5bGU+CjwhLS0gRW5kIEdsb2JhbCBNZXRhLU5hdiBIZWFkZXIgQ29udGVudCAtLT4KPC9kaXY+Cg0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIDxkaXYgY2xhc3M9InBhZ2UtaGVhZGVyLWNvbnRhaW5lciI+CjwhLS1QYWdlIEhlYWRlciBDb250ZW50CiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KICAgCiAgIAoKCiAKCgo8ZGl2IGNsYXNzPSJwYWdlLWhlYWRlci1jb250YWluZXIiPgogICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItYmxvY2siPgogICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvIj4KCQkJPCEtLSBNYWluIGxvZ28gQ29udGVudCAtLT4KCQkJCgkJCQk8YSBocmVmPSJodHRwczovL3N0YW5kYXJkcy5pZWVlLm9yZyIgY2xhc3M9Im5vLXNob3ctc2Nyb2xsLWRvd24iPgoJCQkJICAgIDxpbWcgc3JjPSIvY29udGVudC9kYW0vaWVlZS1zdGFuZGFyZHMvc3RhbmRhcmRzL3dlYi92aXN1YWxzL2xvZ29zL2llZWUtc2EtbG9nby10ZXh0LnBuZyIgYWx0PSJJRUVFIFN0YW5kYXJkcyBBc3NvY2lhdGlvbiBsb2dvIiB0aXRsZT0iSUVFRSBTdGFuZGFyZHMgQXNzb2NpYXRpb24gbG9nbyIgY2xhc3M9ImltZy1yZXNwb25zaXZlIHNjcm9sbC11cC1sb2dvLWltYWdlIj4KCQkJCTwvYT4KCQkJCTxhIGhyZWY9Imh0dHBzOi8vc3RhbmRhcmRzLmllZWUub3JnIiBjbGFzcz0ibm8tc2hvdy1yZWd1bGFyIj4KCQkJCSAgICA8aW1nIHNyYz0iL2NvbnRlbnQvZGFtL2llZWUtc3RhbmRhcmRzL3N0YW5kYXJkcy93ZWIvdmlzdWFscy9sb2dvcy9pZWVlLXNhLWxvZ28tc21hbGwucG5nIiBhbHQ9IklFRUUgU3RhbmRhcmRzIEFzc29jaWF0aW9uIGxvZ28iIHRpdGxlPSJJRUVFIFN0YW5kYXJkcyBBc3NvY2lhdGlvbiBsb2dvIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUgc2Nyb2xsLWRvd24tbG9nby1pbWFnZSI+CgkJCQk8L2E+CgkJCQoJCQk8IS0tIE1haW4gbG9nbyBDb250ZW50IGVuZCAtLT4KCgkJCTwhLS0gUGxhdGZvcm0gZ3JhcGhpYyBDb250ZW50IC0tPgoJCQkKCQkJCTxhIGhyZWY9Imh0dHBzOi8vc3RhbmRhcmRzLmllZWUub3JnIiBjbGFzcz0ibm8tc2hvdy1zY3JvbGwtZG93biI+CgkJCQkgICAgPGltZyBzcmM9Ii9jb250ZW50L2RhbS9pZWVlLXN0YW5kYXJkcy9zdGFuZGFyZHMvd2ViL3Zpc3VhbHMvbG9nb3MvcGxhdGZvcm1fZ3JhcGhpY190b3Bfc3BhY2UucG5nIiBhbHQ9IklFRUUgU3RhbmRhcmRzIEFzc29jaWF0aW9uIGxvZ28iIHRpdGxlPSJJRUVFIFN0YW5kYXJkcyBBc3NvY2lhdGlvbiBsb2dvIiBjbGFzcz0iaW1nLXJlc3BvbnNpdmUgcGxhdGZvcm0tZ3JhcGhpYy1pbWFnZSI+CgkJCQk8L2E+CgkJCQoJCQk8IS0tIFBsYXRmb3JtIGdyYXBoaWMgQ29udGVudCBlbmQgLS0+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJzZWFyY2gtYmFyLWNvbXAiPgogICAgICAgICAgICANCg0KPCEtLSBTaWdodGx5IGdsb2JhbCBvYmplY3RzIGRlY2xhcmF0aW9uDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCjwhLS0gI3NpZ2h0bHktZ2xvYmFsLW9iamVjdHMtZGVjbGFyYXRpb24gZW5kIC0tPg0KDQo8IS0tIFBsYWNlaG9sZGVyIENvbnRlbnQgb21pdHRlZCBzaW5jZSBzZWFyY2ggd2lsbCBiZSBvbiBoZWFkZXIuDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+ICAgICAgICAgDQo8IS0tICNwbGFjZWhvbGRlci1jb250ZW50IGVuZCAtLT4NCg0KPCEtLSBTZWFyY2ggVUkgQ29udGVudA0KPT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQo8Zm9ybSBhY3Rpb249Ii9zZWFyY2gtcmVzdWx0cy5odG1sIiByb2xlPSJzZWFyY2giIGlkPSJzZWFyY2hGb3JtIj4NCgk8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cCBzZWFyY2gtYmFyIj4NCgkJPGlucHV0IHR5cGU9InNlYXJjaCIgbmFtZT0icSIgaWQ9InEiIHRpdGxlPSJTZWFyY2ggYWxsIElFRUUgd2Vic2l0ZXMiIHBsYWNlaG9sZGVyPSJTZWFyY2giIGNsYXNzPSJyZXF1aXJlZCBmb3JtLWNvbnRyb2wiLz4gDQoJCTxzcGFuIGNsYXNzPSJpbnB1dC1ncm91cC1hZGRvbiIgaWQ9InNlYXJjaFN1Ym1pdEJ1dHRvbiI+DQoJCQk8aSBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1zZWFyY2giPjwvaT4NCgkJPC9zcGFuPg0KCTwvZGl2Pg0KPC9mb3JtPg0KPCEtLSAjc2VhcmNoIFVJIGNvbnRlbnQgZW5kIC0tPgkgICAgICAgICAgICAKICAgICAgICAgPC9kaXY+CgkJIDwhLS0gTW9iaWxlIGxvZ28gQ29udGVudCAtLT4KICAgICAgICAgPGRpdiBjbGFzcz0iaWVlZS1sb2dvIGhpZGRlbi1tZCBoaWRkZW4tbGciPgogICAgICAgICAgICANCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KPCEtLSBMb2dvIENvbnRlbnQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCjxhIGhyZWY9Imh0dHBzOi8vd3d3LmllZWUub3JnLyI+DQogICAgPGltZyBzcmM9Ii9jb250ZW50L2RhbS9pZWVlLXN0YW5kYXJkcy9zdGFuZGFyZHMvd2ViL3Zpc3VhbHMvbG9nb3MvaWVlZS1sb2dvLXdoaXRlLnBuZyIgYWx0PSJJRUVFIGxvZ28iIHRpdGxlPSJJRUVFIGxvZ28iIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSI+DQo8L2E+DQo8IS0tICNsb2dvLWNvbnRlbnQgZW5kIC0tPg0KCiAgICAgICAgIDwvZGl2PgoJCTwhLS0gTW9iaWxlIGxvZ28gQ29udGVudCBlbmQgLS0+CiAgICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgPGRpdiBjbGFzcz0ic2l0ZS1uYXZpZ2F0aW9uIj4KICAgICAgCjwhLS0gU2lnaHRseSBnbG9iYWwgb2JqZWN0cyBkZWNsYXJhdGlvbgogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Cgo8IS0tICNzaWdodGx5LWdsb2JhbC1vYmplY3RzLWRlY2xhcmF0aW9uIGVuZCAtLT4gCgoKPG5hdj4KICAgPCEtLSBCcmFuZCBhbmQgdG9nZ2xlIGdldCBncm91cGVkIGZvciBiZXR0ZXIgbW9iaWxlIGRpc3BsYXkgLS0+CiAgIDxkaXYgY2xhc3M9Im5hdmJhci1oZWFkZXIiPgogICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUgY29sbGFwc2VkIj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIG5hdi1iYXIxIj48L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciBuYXYtYmFyMiI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIgbmF2LWJhcjMiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImNsb3NlLWljb24iPgogICAgICA8aW1nIHNyYz0nZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpYVhOdkxUZzROVGt0TVNJL1BnbzhJUzB0SUVkbGJtVnlZWFJ2Y2pvZ1FXUnZZbVVnU1d4c2RYTjBjbUYwYjNJZ01Ua3VNQzR3TENCVFZrY2dSWGh3YjNKMElGQnNkV2N0U1c0Z0xpQlRWa2NnVm1WeWMybHZiam9nTmk0d01DQkNkV2xzWkNBd0tTQWdMUzArQ2p4emRtY2dlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklpQjRiV3h1Y3pwNGJHbHVhejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TVRrNU9TOTRiR2x1YXlJZ2RtVnljMmx2YmowaU1TNHhJaUJwWkQwaVRHRjVaWEpmTVNJZ2VEMGlNSEI0SWlCNVBTSXdjSGdpSUhacFpYZENiM2c5SWpBZ01DQTFNVElnTlRFeUlpQnpkSGxzWlQwaVpXNWhZbXhsTFdKaFkydG5jbTkxYm1RNmJtVjNJREFnTUNBMU1USWdOVEV5T3lJZ2VHMXNPbk53WVdObFBTSndjbVZ6WlhKMlpTSWdkMmxrZEdnOUlqVXhNbkI0SWlCb1pXbG5hSFE5SWpVeE1uQjRJajRLUEdjK0NnazhaejRLQ1FrOGNHRjBhQ0JrUFNKTk5UQTFMamswTXl3MkxqQTFPR010T0M0d056Y3RPQzR3TnpjdE1qRXVNVGN5TFRndU1EYzNMVEk1TGpJME9Td3dURFl1TURVNExEUTNOaTQyT1ROakxUZ3VNRGMzTERndU1EYzNMVGd1TURjM0xESXhMakUzTWl3d0xESTVMakkwT1NBZ0lDQkRNVEF1TURrMkxEVXdPUzQ1T0RJc01UVXVNemtzTlRFeUxESXdMalk0TXl3MU1USmpOUzR5T1RNc01Dd3hNQzQxT0RZdE1pNHdNVGtzTVRRdU5qSTFMVFl1TURVNVREVXdOUzQ1TkRNc016VXVNekEySUNBZ0lFTTFNVFF1TURFNUxESTNMakl6TERVeE5DNHdNVGtzTVRRdU1UTTFMRFV3TlM0NU5ETXNOaTR3TlRoNklpQm1hV3hzUFNJak16TXpNek16SWk4K0NnazhMMmMrQ2p3dlp6NEtQR2MrQ2drOFp6NEtDUWs4Y0dGMGFDQmtQU0pOTlRBMUxqazBNaXcwTnpZdU5qazBURE0xTGpNd05pdzJMakExT1dNdE9DNHdOell0T0M0d056Y3RNakV1TVRjeUxUZ3VNRGMzTFRJNUxqSTBPQ3d3WXkwNExqQTNOeXc0TGpBM05pMDRMakEzTnl3eU1TNHhOekVzTUN3eU9TNHlORGhzTkRjd0xqWXpOaXcwTnpBdU5qTTJJQ0FnSUdNMExqQXpPQ3cwTGpBek9TdzVMak16TWl3MkxqQTFPQ3d4TkM0Mk1qVXNOaTR3TlRoak5TNHlPVE1zTUN3eE1DNDFPRGN0TWk0d01Ua3NNVFF1TmpJMExUWXVNRFUzUXpVeE5DNHdNVGdzTkRrM0xqZzJOaXcxTVRRdU1ERTRMRFE0TkM0M056RXNOVEExTGprME1pdzBOell1TmprMGVpSWdabWxzYkQwaUl6TXpNek16TXlJdlBnb0pQQzluUGdvOEwyYytDanhuUGdvOEwyYytDanhuUGdvOEwyYytDanhuUGdvOEwyYytDanhuUGdvOEwyYytDanhuUGdvOEwyYytDanhuUGdvOEwyYytDanhuUGdvOEwyYytDanhuUGdvOEwyYytDanhuUGdvOEwyYytDanhuUGdvOEwyYytDanhuUGdvOEwyYytDanhuUGdvOEwyYytDanhuUGdvOEwyYytDanhuUGdvOEwyYytDanhuUGdvOEwyYytDand2YzNablBnbz0nLz4KICAgICAgPC9zcGFuPgogICAgICA8L2J1dHRvbj4KICAgPC9kaXY+CiAgIDxkaXYgY2xhc3M9ImJveC1zaGFkb3ctbGluZSI+PC9kaXY+CiAgIDwhLS0gQ29sbGVjdCB0aGUgbmF2IGxpbmtzIC0tPgogICA8ZGl2IGNsYXNzPSJjb2xsYXBzZSBtZW51LXRvZ2dsZSI+CiAgICAgIDx1bCBjbGFzcz0ibmF2aWdhdGlvbi1iYXIiPgogICAgICAgICAKICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wLWRvd24tbmF2Ij4KICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9ImRyb3Bkb3duLWxpbmsiIHN0eWxlPSJtaW4td2lkdGg6IDg0cHg7Ij4KICAgICAgICAgICAgICAgCQlTdGFuZGFyZHMgCiAgICAgICAgICAgICAgIDwvYT4JCQkKICAgICAgICAgICAgICAgCgo8ZGl2IGNsYXNzPSJtZWdhLWRyb3Bkb3duLW1lbnUiPgogICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMTIgY29sLW1kLTMgaGlkZGVuLXhzIGhpZGRlbi1zbSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImltZy1ibG9jay1pbmZvIj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1nLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIvY29udGVudC9kYW0vaWVlZS1zdGFuZGFyZHMvc3RhbmRhcmRzL3dlYi92aXN1YWxzL2ltYWdlcy9uYXYtc3RhbmRhcmRzLW5ldy1icmFuZC5qcGciPiAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icnRlIj4NCg0KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvZXRjLmNsaWVudGxpYnMvd2NtL2ZvdW5kYXRpb24vY2xpZW50bGlicy9hY2Nlc3NpYmlsaXR5Lm1pbi42ZmU1ZDQ0MjczNjFhNGMwY2E1YTc1NDU3ZTNlNDI1Ni5jc3MiIHR5cGU9InRleHQvY3NzIj4KDQoNCiAgICA8c3BhbiBjbGFzcz0icGFyYWdyYXBoLXNtYWxsIj5GaW5kIHN0YW5kYXJkcywgc3RhbmRhcmRzIGluIGRldmVsb3BtZW50LCBsZWFybiBhYm91dCB0aGUgU3RhbmRhcmRzIERldmVsb3BtZW50IExpZmVjeWNsZSwgYW5kIG11Y2ggbW9yZSE8L3NwYW4+DQo8L2Rpdj4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTEyIGNvbC1tZC0yIGhpZGRlbi14cyBoaWRkZW4tc20iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXZpZGVyIj48L2Rpdj4KICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cy0xMiBjb2wtbWQtMyBzdWItbmF2LWluZm8iPgogICAgICAgICAgICAKCgoKCgogICAgICAgICAKCgoKPCEtLSBMaW5rIExpc3QgQ29udGFpbmVyIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIAogICAgPHVsIGNsYXNzPSJsaW5rLWxpc3QiPgogICAgICAgIAoKCgoKCiAgICAgICAgIAoKCgo8IS0tIExpbmsgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgPGxpPgogICAgPGEgaHJlZj0iL3N0YW5kYXJkL2luZGV4Lmh0bWwiIHRhcmdldD0iX3NlbGYiPgogICAgICAgICAgICBGaW5kIFN0YW5kYXJkcwogICAgICA8L2E+CiAgICA8L2xpPgoKPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4KCiAgICAKICAgICAgICAKCgoKCgogICAgICAgICAKCgoKPCEtLSBMaW5rIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIDxsaT4KICAgIDxhIGhyZWY9Ii9wcm9qZWN0L2luZGV4Lmh0bWwiIHRhcmdldD0iX3NlbGYiPgogICAgICAgICAgICAgRmluZCBQcm9qZWN0cwogICAgICA8L2E+CiAgICA8L2xpPgoKPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4KCiAgICAKICAgICAgICAKCgoKCgogICAgICAgICAKCgoKPCEtLSBMaW5rIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIDxsaT4KICAgIDxhIGhyZWY9Ii9kZXZlbG9wL2luZGV4Lmh0bWwiIHRhcmdldD0iX3NlbGYiPgogICAgICAgICAgICBEZXZlbG9wIFN0YW5kYXJkcwogICAgICA8L2E+CiAgICA8L2xpPgoKPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4KCiAgICAKICAgICAgICAKCgoKCgogICAgICAgICAKCgoKPCEtLSBMaW5rIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIDxsaT4KICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlY2hzdHJlZXQuY29tL2llZWUvIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgICAgICBCdXkgU3RhbmRhcmRzCiAgICAgIDwvYT4KICAgIDwvbGk+Cgo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPgoKICAgIDwvdWw+Cgo8IS0tICNsaW5rLWxpc3QtY29udGFpbmVyLWNvbnRlbnQgZW5kIC0tPgoKICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cy0xMiBjb2wtbWQtMyBzdWItbmF2LWluZm8iPgogICAgICAgICAgICAKCgoKCgogICAgICAgICAKCgoKPCEtLSBMaW5rIExpc3QgQ29udGFpbmVyIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIAogICAgPHVsIGNsYXNzPSJsaW5rLWxpc3QiPgogICAgICAgIAoKCgoKCiAgICAgICAgIAoKCgo8IS0tIExpbmsgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgPGxpPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9zdGFuZGFyZHMuaWVlZS5vcmcvZGV2ZWxvcC9ldG9vbHMvIiB0YXJnZXQ9Il9zZWxmIiBjbGFzcz0icGxhaW4tbGluayI+CiAgICAgICAgICAgIGVUb29scwogICAgICA8L2E+CiAgICA8L2xpPgoKPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4KCiAgICA8L3VsPgoKPCEtLSAjbGluay1saXN0LWNvbnRhaW5lci1jb250ZW50IGVuZCAtLT4KCiAgICAgICAgIDwvZGl2PgogICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGNsYXNzPSJjbG9zZS1pY29uIGhpZGRlbi14cyBoaWRkZW4tc20iPjxpbWcgc3JjPSJkYXRhOmltYWdlL3BuZyt4bWw7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFESUFBQUF5Q0FZQUFBQWVQNGl4QUFBQUFYTlNSMElBcnM0YzZRQUEgQVdKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaSBZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlsaE5VQ0JEYjNKbElEVXVOQzR3SWo0S0lDQWdQSEprIFpqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmsgWmkxemVXNTBZWGd0Ym5NaklqNEtJQ0FnSUNBZ1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROSBJaUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02WlhocFpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzlsIGVHbG1MekV1TUM4aVBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwVmMyVnlRMjl0YldWdWRENVRZM0psWlc1emFHOTAgUEM5bGVHbG1PbFZ6WlhKRGIyMXRaVzUwUGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRLSUNBZyBQQzl5WkdZNlVrUkdQZ284TDNnNmVHMXdiV1YwWVQ0S2JzemVMZ0FBQWJKSlJFRlVhQVh0bW10dXd5QVFoSzJlIDNEZndFVGlxdXlSRmNUR0dmY3k0SkNwU1pCdDJaNzZCK0Vla0xQdStyL0lwWTF2ZVpBaHdLdEJ5WFpmRFE3bE4gczJjUjBGUmd5N1VWSks5Tkd5YXpaY0I2NUNDcG52eDVuaTVNaC9YNVNuUUtwZ21qWmxRWC9zRUxaR1l6Tjl3USB5czNrYmlTRUNyT0VCUUNoWUF3d0lVY291RGRjVUJHSzVra1Rib1NpZTlFTkpOUWRIbys5WXhveHRSc0h6OW0xIDIwT1VaRWhqcEZiaE0xMFJBQWdORS9SVmNRUWswbnZGRTVyM0FIbDZRcERhWmd1WXBWYnJENjNUQUdwcW9GQmUgc1I1b2I4M3JSKzNyQU12U2FVeno2N081S1lLYlRzam5pYmxEbEdTRE1KUVFYOFg4LzFydHdPQTB5cGVNY2lvViBpdjlSR1dMdU1KMFFxYmZtM3paQ3B3WlVVME5BMDB0YUFDMjFlZ0pBcFFmTTB3TkF2WmFJQUVWNnI0a2NLd2dRIGhJWUQvZFdDQkVCcXZRZ1Zkd3hqaG1ZM0N0T1FxZjByMUIxR2RBKzZ3V0hMYUY0MDRRTjhmUXYzaEF2V3hKMW4gbURkTXFBTTdXZ296aEFWR2hJWjFONHU3MFFCbkxUVXptUnVzUklGNk5adTZNQUFUYlIweVNzRW1uOWFZN25lMSBRS1lXcU14dEgvV25tanJrZENkUmZ5MEZPTlhRK1VUV3crUTcvZkhzK0VxczM5eFp3dDRqQUF5b0FBQUFBRWxGIFRrU3VRbUNDIj48L2E+CiAgICAgIDwvZGl2PgogICA8L2Rpdj4KPC9kaXY+CjwhLS0gI21lZ2EtZHJvcGRvd24tbWVudS1jb250YWluZXIgZW5kIC0tPgoKICAgICAgICAgICAgPC9saT4KICAgICAgICAgCiAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcC1kb3duLW5hdiI+CiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGNsYXNzPSJkcm9wZG93bi1saW5rIiBzdHlsZT0ibWluLXdpZHRoOiA4NHB4OyI+CiAgICAgICAgICAgICAgIAkJUHJvZHVjdHMgJmFtcDsgU2VydmljZXMgCiAgICAgICAgICAgICAgIDwvYT4JCQkKICAgICAgICAgICAgICAgCgo8ZGl2IGNsYXNzPSJtZWdhLWRyb3Bkb3duLW1lbnUiPgogICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMTIgY29sLW1kLTMgaGlkZGVuLXhzIGhpZGRlbi1zbSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImltZy1ibG9jay1pbmZvIj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1nLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIvY29udGVudC9kYW0vaWVlZS1zdGFuZGFyZHMvc3RhbmRhcmRzL3dlYi92aXN1YWxzL2ltYWdlcy9uYXYtcHJvZHVjdC1zZXJ2aWNlcy1uZXctYnJhbmQuanBnIj4gCiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dCI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJ0ZSI+DQoNCg0KDQogICAgPHNwYW4gY2xhc3M9InBhcmFncmFwaC1zbWFsbCI+T3VyIHByb2R1Y3RzIGFuZCBzZXJ2aWNlcyBjb3ZlciB0aGUgY29tcGxldGUgc3RhbmRhcmRzIGRldmVsb3BtZW50IGxpZmVjeWNsZS4uLmFuZCBiZXlvbmQuPC9zcGFuPjxiciAvPgoNCjwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMTIgY29sLW1kLTIgaGlkZGVuLXhzIGhpZGRlbi1zbSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpdmlkZXIiPjwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTEyIGNvbC1tZC0zIHN1Yi1uYXYtaW5mbyI+CiAgICAgICAgICAgIAoKCgoKCiAgICAgICAgIAoKCgo8IS0tIExpbmsgTGlzdCBDb250YWluZXIgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgCiAgICA8dWwgY2xhc3M9ImxpbmstbGlzdCI+CiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvcHJvZHVjdHMtc2VydmljZXMvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiIgY2xhc3M9ImxpbmstdGl0bGUiPgogICAgICAgICAgICBQcm9kdWN0cwogICAgICA8L2E+CiAgICA8L2xpPgoKPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4KCiAgICAKICAgICAgICAKCgoKCgogICAgICAgICAKCgoKPCEtLSBMaW5rIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIDxsaT4KICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy1zZXJ2aWNlcy9uZXNjL2luZGV4Lmh0bWwiIHRhcmdldD0iX3NlbGYiPgogICAgICAgICAgICBOYXRpb25hbCBFbGVjdHJpY2FsIFNhZmV0eSBDb2RlCiAgICAgIDwvYT4KICAgIDwvbGk+Cgo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPgoKICAgIAogICAgICAgIAoKCgoKCiAgICAgICAgIAoKCgo8IS0tIExpbmsgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgPGxpPgogICAgPGEgaHJlZj0iL3Byb2R1Y3RzLXNlcnZpY2VzL3JlZ2F1dGgvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiI+CiAgICAgICAgICAgIFJlZ2lzdHJhdGlvbiBBdXRob3JpdHkKICAgICAgPC9hPgogICAgPC9saT4KCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+CgogICAgCiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvcHJvZHVjdHMtc2VydmljZXMvMzAwMC9pbmRleC5odG1sIiB0YXJnZXQ9Il9zZWxmIj4KICAgICAgICAgICAgQ29sb3IgQm9va3MKICAgICAgPC9hPgogICAgPC9saT4KCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+CgogICAgCiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvcHJvZHVjdHMtc2VydmljZXMvc3RhbmRhcmRzLXJlbGF0ZWQvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiI+CiAgICAgICAgICAgIFN0YW5kYXJkcyBSZWxhdGVkIFByb2R1Y3RzCiAgICAgIDwvYT4KICAgIDwvbGk+Cgo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPgoKICAgIAogICAgICAgIAoKCgoKCiAgICAgICAgIAoKCgo8IS0tIExpbmsgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgPGxpPgogICAgPGEgaHJlZj0iL3Byb2R1Y3RzLXNlcnZpY2VzL2llZWUtZ2V0LXByb2dyYW0uaHRtbCIgdGFyZ2V0PSJfc2VsZiI+CiAgICAgICAgICAgIElFRUUgR0VUIFByb2dyYW0KICAgICAgPC9hPgogICAgPC9saT4KCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+CgogICAgCiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvcHJvZHVjdHMtc2VydmljZXMvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiIgY2xhc3M9ImxpbmsiPgogICAgICAgICAgICBWaWV3IGFsbAogICAgICA8L2E+CiAgICA8L2xpPgoKPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4KCiAgICA8L3VsPgoKPCEtLSAjbGluay1saXN0LWNvbnRhaW5lci1jb250ZW50IGVuZCAtLT4KCiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMTIgY29sLW1kLTMgc3ViLW5hdi1pbmZvIj4KICAgICAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBMaXN0IENvbnRhaW5lciBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICAKICAgIDx1bCBjbGFzcz0ibGluay1saXN0Ij4KICAgICAgICAKCgoKCgogICAgICAgICAKCgoKPCEtLSBMaW5rIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIDxsaT4KICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy1zZXJ2aWNlcy9pbmRleC5odG1sIiB0YXJnZXQ9Il9zZWxmIiBjbGFzcz0ibGluay10aXRsZSI+CiAgICAgICAgICAgIFNlcnZpY2VzCiAgICAgIDwvYT4KICAgIDwvbGk+Cgo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPgoKICAgIAogICAgICAgIAoKCgoKCiAgICAgICAgIAoKCgo8IS0tIExpbmsgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgPGxpPgogICAgPGEgaHJlZj0iL3Byb2R1Y3RzLXNlcnZpY2VzL2Ftcy9pbmRleC5odG1sIiB0YXJnZXQ9Il9zZWxmIj4KICAgICAgICAgICAgQWxsaWFuY2UgTWFuYWdlbWVudCBTZXJ2aWNlcwogICAgICA8L2E+CiAgICA8L2xpPgoKPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4KCiAgICAKICAgICAgICAKCgoKCgogICAgICAgICAKCgoKPCEtLSBMaW5rIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIDxsaT4KICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy1zZXJ2aWNlcy9pY2FwL2luZGV4Lmh0bWwiIHRhcmdldD0iX3NlbGYiPgogICAgICAgICAgICBDb25mb3JtaXR5IEFzc2Vzc21lbnQKICAgICAgPC9hPgogICAgPC9saT4KCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+CgogICAgCiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvcHJvZHVjdHMtc2VydmljZXMvc3ZzL2luZGV4Lmh0bWwiIHRhcmdldD0iX3NlbGYiPgogICAgICAgICAgICBTdGFuZGFyZHMgRGV2ZWxvcG1lbnQgU2VydmljZXMKICAgICAgPC9hPgogICAgPC9saT4KCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+CgogICAgCiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvcHJvZHVjdHMtc2VydmljZXMvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiIgY2xhc3M9ImxpbmsiPgogICAgICAgICAgICBWaWV3IG1vcmUgUHJvZHVjdHMgJmFtcDsgU2VydmljZXMKICAgICAgPC9hPgogICAgPC9saT4KCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+CgogICAgPC91bD4KCjwhLS0gI2xpbmstbGlzdC1jb250YWluZXItY29udGVudCBlbmQgLS0+CgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0iY2xvc2UtaWNvbiBoaWRkZW4teHMgaGlkZGVuLXNtIj48aW1nIHNyYz0iZGF0YTppbWFnZS9wbmcreG1sO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRElBQUFBeUNBWUFBQUFlUDRpeEFBQUFBWE5TUjBJQXJzNGM2UUFBIEFXSnBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGkgWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJbGhOVUNCRGIzSmxJRFV1TkM0d0lqNEtJQ0FnUEhKayBaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprIFppMXplVzUwWVhndGJuTWpJajRLSUNBZ0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTkgSWlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNlpYaHBaajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5bCBlR2xtTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFZjMlZ5UTI5dGJXVnVkRDVUWTNKbFpXNXphRzkwIFBDOWxlR2xtT2xWelpYSkRiMjF0Wlc1MFBnb2dJQ0FnSUNBOEwzSmtaanBFWlhOamNtbHdkR2x2Ymo0S0lDQWcgUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEtic3plTGdBQUFiSkpSRUZVYUFYdG1tdHV3eUFRaEsyZSAzRGZ3RVRpcXV5UkZjVEdHZmN5NEpDcFNaQnQyWjc2QitFZWtMUHUrci9JcFkxdmVaQWh3S3RCeVhaZkRRN2xOIHMyY1IwRlJneTdVVkpLOU5HeWF6WmNCNjVDQ3Budng1bmk1TWgvWDVTblFLcGdtalpsUVgvc0VMWkdZek45d1EgeXMza2JpU0VDck9FQlFDaFlBd3dJVWNvdURkY1VCR0s1a2tUYm9TaWU5RU5KTlFkSG8rOVl4b3h0UnNIejltMSAyME9VWkVoanBGYmhNMTBSQUFnTkUvUlZjUVFrMG52RkU1cjNBSGw2UXBEYVpndVlwVmJyRDYzVEFHcHFvRkJlIHNSNW9iODNyUiszckFNdlNhVXp6NjdPNUtZS2JUc2puaWJsRGxHU0RNSlFRWDhYOC8xcnR3T0EweXBlTWNpb1YgaXY5UkdXTHVNSjBRcWJmbTN6WkNwd1pVVTBOQTAwdGFBQzIxZWdKQXBRZk0wd05BdlphSUFFVjZyNGtjS3dnUSBoSVlEL2RXQ0JFQnF2UWdWZHd4amhtWTNDdE9RcWYwcjFCMUdkQSs2d1dITGFGNDA0UU44ZlF2M2hBdld4SjFuIG1EZE1xQU03V2dvemhBVkdoSVoxTjR1NzBRQm5MVFV6bVJ1c1JJRjZOWnU2TUFBVGJSMHlTc0VtbjlhWTduZTEgUUtZV3FNeHRIL1dubWpya2RDZFJmeTBGT05YUStVVFd3K1E3L2ZIcytFcXMzOXhad3Q0akFBeW9BQUFBQUVsRiBUa1N1UW1DQyI+PC9hPgogICAgICA8L2Rpdj4KICAgPC9kaXY+CjwvZGl2Pgo8IS0tICNtZWdhLWRyb3Bkb3duLW1lbnUtY29udGFpbmVyIGVuZCAtLT4KCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgIAogICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3AtZG93bi1uYXYiPgogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0iZHJvcGRvd24tbGluayIgc3R5bGU9Im1pbi13aWR0aDogODRweDsiPgogICAgICAgICAgICAgICAJCVRlY2hub2xvZ2llcyAmYW1wOyBJbml0aWF0aXZlcyAKICAgICAgICAgICAgICAgPC9hPgkJCQogICAgICAgICAgICAgICAKCjxkaXYgY2xhc3M9Im1lZ2EtZHJvcGRvd24tbWVudSI+CiAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cy0xMiBjb2wtbWQtMyBoaWRkZW4teHMgaGlkZGVuLXNtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1nLWJsb2NrLWluZm8iPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWctYmxvY2siPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ii9jb250ZW50L2RhbS9pZWVlLXN0YW5kYXJkcy9zdGFuZGFyZHMvd2ViL3Zpc3VhbHMvaW1hZ2VzL25hdi10ZWNobm9sb2d5LWluaXRpYXRpdmVzLW5ldy1icmFuZC5qcGciPiAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icnRlIj4NCg0KDQoNCiAgICA8c3BhbiBjbGFzcz0icGFyYWdyYXBoLXNtYWxsIj5FeHBsb3JlIG91ciBoaWdoLWxldmVsIGluaXRpYXRpdmVzLCBvciBmb3N0ZXIgbmV3IHRlY2hub2xvZ2llcyB2aWEgb3VyIEluZHVzdHJ5IENvbm5lY3Rpb25zIHByb2dyYW0uPC9zcGFuPjxiciAvPgoNCjwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMTIgY29sLW1kLTIgaGlkZGVuLXhzIGhpZGRlbi1zbSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpdmlkZXIiPjwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTEyIGNvbC1tZC0zIHN1Yi1uYXYtaW5mbyI+CiAgICAgICAgICAgIAoKCgoKCiAgICAgICAgIAoKCgo8IS0tIExpbmsgTGlzdCBDb250YWluZXIgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgCiAgICA8dWwgY2xhc3M9ImxpbmstbGlzdCI+CiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvaW5pdGlhdGl2ZXMvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiIgY2xhc3M9ImxpbmstdGl0bGUiPgogICAgICAgICAgICBJbml0aWF0aXZlcwogICAgICA8L2E+CiAgICA8L2xpPgoKPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4KCiAgICAKICAgICAgICAKCgoKCgogICAgICAgICAKCgoKPCEtLSBMaW5rIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIDxsaT4KICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2xvYmFsY3hpLm9yZy8iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0icGxhaW4tbGluayI+CiAgICAgICAgICAgIENvdW5jaWwgb24gRXh0ZW5kZWQgSW50ZWxsaWdlbmNlCiAgICAgIDwvYT4KICAgIDwvbGk+Cgo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPgoKICAgIAogICAgICAgIAoKCgoKCiAgICAgICAgIAoKCgo8IS0tIExpbmsgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgPGxpPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9zdGFuZGFyZHMuaWVlZS5vcmcvaW5pdGlhdGl2ZXMvb3BlbnNvdXJjZS9pbmRleC5odG1sIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InBsYWluLWxpbmsiPgogICAgICAgICAgICBJRUVFIFNBIE9wZW4KICAgICAgPC9hPgogICAgPC9saT4KCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+CgogICAgCiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSJodHRwczovL2llZWUtd2FtaWlpLm9yZy8iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0icGxhaW4tbGluayI+CiAgICAgICAgICAgIFdlYXJhYmxlcyBhbmQgTWVkaWNhbCBJb1QgSW50ZXJvcGVyYWJpbGl0eSAmYW1wOyBJbnRlbGxpZ2VuY2UKICAgICAgPC9hPgogICAgPC9saT4KCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+CgogICAgCiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvaW5pdGlhdGl2ZXMvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiIgY2xhc3M9ImxpbmsiPgogICAgICAgICAgICBFeHBsb3JlIG1vcmUgaW5pdGlhdGl2ZXMKICAgICAgPC9hPgogICAgPC9saT4KCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+CgogICAgPC91bD4KCjwhLS0gI2xpbmstbGlzdC1jb250YWluZXItY29udGVudCBlbmQgLS0+CgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTEyIGNvbC1tZC0zIHN1Yi1uYXYtaW5mbyI+CiAgICAgICAgICAgIAoKCgoKCiAgICAgICAgIAoKCgo8IS0tIExpbmsgTGlzdCBDb250YWluZXIgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgCiAgICA8dWwgY2xhc3M9ImxpbmstbGlzdCI+CiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvaW5kdXN0cnktY29ubmVjdGlvbnMvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiIgY2xhc3M9ImxpbmstdGl0bGUiPgogICAgICAgICAgICBUZWNobm9sb2dpZXMKICAgICAgPC9hPgogICAgPC9saT4KCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+CgogICAgCiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvaW5kdXN0cnktY29ubmVjdGlvbnMvM2QvYm9keXByb2Nlc3NpbmcuaHRtbCIgdGFyZ2V0PSJfc2VsZiIgY2xhc3M9InBsYWluLWxpbmsiPgogICAgICAgICAgICAzRCBCb2R5IFByb2Nlc3NpbmcKICAgICAgPC9hPgogICAgPC9saT4KCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+CgogICAgCiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvaW5kdXN0cnktY29ubmVjdGlvbnMvZWMvYXV0b25vbW91cy1zeXN0ZW1zLmh0bWwiIHRhcmdldD0iX3NlbGYiIGNsYXNzPSJwbGFpbi1saW5rIj4KICAgICAgICAgICAgQXV0b25vbW91cyBTeXN0ZW1zCiAgICAgIDwvYT4KICAgIDwvbGk+Cgo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPgoKICAgIAogICAgICAgIAoKCgoKCiAgICAgICAgIAoKCgo8IS0tIExpbmsgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgPGxpPgogICAgPGEgaHJlZj0iL2luZHVzdHJ5LWNvbm5lY3Rpb25zL0JER01NLWluZGV4Lmh0bWwiIHRhcmdldD0iX3NlbGYiPgogICAgICAgICAgICBCaWcgRGF0YSBHb3Zlcm5hbmNlIGFuZCBNZXRhZGF0YSBNYW5hZ2VtZW50IAogICAgICA8L2E+CiAgICA8L2xpPgoKPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4KCiAgICAKICAgICAgICAKCgoKCgogICAgICAgICAKCgoKPCEtLSBMaW5rIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIDxsaT4KICAgIDxhIGhyZWY9Ii9pbmR1c3RyeS1jb25uZWN0aW9ucy9pbmR1c3RyeS1jb25zb3J0aXVtLWxlYXJuaW5nLWVuZ2luZWVyaW5nLmh0bWwiIHRhcmdldD0iX3NlbGYiPgogICAgICAgICAgICBJbmR1c3RyeSBDb25zb3J0aXVtIG9uIExlYXJuaW5nIEVuZ2luZWVyaW5nIAogICAgICA8L2E+CiAgICA8L2xpPgoKPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4KCiAgICAKICAgICAgICAKCgoKCgogICAgICAgICAKCgoKPCEtLSBMaW5rIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIDxsaT4KICAgIDxhIGhyZWY9Ii9pbmR1c3RyeS1jb25uZWN0aW9ucy9pbmRleC5odG1sIiB0YXJnZXQ9Il9zZWxmIiBjbGFzcz0ibGluayI+CiAgICAgICAgICAgIEV4cGxvcmUgSW5kdXN0cnkgQ29ubmVjdGlvbnMgcHJvZ3JhbQogICAgICA8L2E+CiAgICA8L2xpPgoKPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4KCiAgICA8L3VsPgoKPCEtLSAjbGluay1saXN0LWNvbnRhaW5lci1jb250ZW50IGVuZCAtLT4KCiAgICAgICAgIDwvZGl2PgogICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGNsYXNzPSJjbG9zZS1pY29uIGhpZGRlbi14cyBoaWRkZW4tc20iPjxpbWcgc3JjPSJkYXRhOmltYWdlL3BuZyt4bWw7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFESUFBQUF5Q0FZQUFBQWVQNGl4QUFBQUFYTlNSMElBcnM0YzZRQUEgQVdKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaSBZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlsaE5VQ0JEYjNKbElEVXVOQzR3SWo0S0lDQWdQSEprIFpqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmsgWmkxemVXNTBZWGd0Ym5NaklqNEtJQ0FnSUNBZ1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROSBJaUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02WlhocFpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzlsIGVHbG1MekV1TUM4aVBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwVmMyVnlRMjl0YldWdWRENVRZM0psWlc1emFHOTAgUEM5bGVHbG1PbFZ6WlhKRGIyMXRaVzUwUGdvZ0lDQWdJQ0E4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRLSUNBZyBQQzl5WkdZNlVrUkdQZ284TDNnNmVHMXdiV1YwWVQ0S2JzemVMZ0FBQWJKSlJFRlVhQVh0bW10dXd5QVFoSzJlIDNEZndFVGlxdXlSRmNUR0dmY3k0SkNwU1pCdDJaNzZCK0Vla0xQdStyL0lwWTF2ZVpBaHdLdEJ5WFpmRFE3bE4gczJjUjBGUmd5N1VWSks5Tkd5YXpaY0I2NUNDcG52eDVuaTVNaC9YNVNuUUtwZ21qWmxRWC9zRUxaR1l6Tjl3USB5czNrYmlTRUNyT0VCUUNoWUF3d0lVY291RGRjVUJHSzVra1Rib1NpZTlFTkpOUWRIbys5WXhveHRSc0h6OW0xIDIwT1VaRWhqcEZiaE0xMFJBQWdORS9SVmNRUWswbnZGRTVyM0FIbDZRcERhWmd1WXBWYnJENjNUQUdwcW9GQmUgc1I1b2I4M3JSKzNyQU12U2FVeno2N081S1lLYlRzam5pYmxEbEdTRE1KUVFYOFg4LzFydHdPQTB5cGVNY2lvViBpdjlSR1dMdU1KMFFxYmZtM3paQ3B3WlVVME5BMDB0YUFDMjFlZ0pBcFFmTTB3TkF2WmFJQUVWNnI0a2NLd2dRIGhJWUQvZFdDQkVCcXZRZ1Zkd3hqaG1ZM0N0T1FxZjByMUIxR2RBKzZ3V0hMYUY0MDRRTjhmUXYzaEF2V3hKMW4gbURkTXFBTTdXZ296aEFWR2hJWjFONHU3MFFCbkxUVXptUnVzUklGNk5adTZNQUFUYlIweVNzRW1uOWFZN25lMSBRS1lXcU14dEgvV25tanJrZENkUmZ5MEZPTlhRK1VUV3crUTcvZkhzK0VxczM5eFp3dDRqQUF5b0FBQUFBRWxGIFRrU3VRbUNDIj48L2E+CiAgICAgIDwvZGl2PgogICA8L2Rpdj4KPC9kaXY+CjwhLS0gI21lZ2EtZHJvcGRvd24tbWVudS1jb250YWluZXIgZW5kIC0tPgoKICAgICAgICAgICAgPC9saT4KICAgICAgICAgCiAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcC1kb3duLW5hdiI+CiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGNsYXNzPSJkcm9wZG93bi1saW5rIiBzdHlsZT0ibWluLXdpZHRoOiA4NHB4OyI+CiAgICAgICAgICAgICAgIAkJUGFydGljaXBhdGUgCiAgICAgICAgICAgICAgIDwvYT4JCQkKICAgICAgICAgICAgICAgCgo8ZGl2IGNsYXNzPSJtZWdhLWRyb3Bkb3duLW1lbnUiPgogICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMTIgY29sLW1kLTMgaGlkZGVuLXhzIGhpZGRlbi1zbSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImltZy1ibG9jay1pbmZvIj4KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1nLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSIvY29udGVudC9kYW0vaWVlZS1zdGFuZGFyZHMvc3RhbmRhcmRzL3dlYi92aXN1YWxzL2ltYWdlcy9uYXYtcGFydGljaXBhdGUtbmV3LWJyYW5kLmpwZyI+IAogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQiPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJydGUiPg0KDQoNCg0KICAgIDxzcGFuIGNsYXNzPSJwYXJhZ3JhcGgtc21hbGwiPkpvaW4gYSBnbG9iYWwgbmV0d29yayBvZiBpbmR1c3RyeSAmYW1wOyB0ZWNobm9sb2d5IGV4cGVydHMgdGhhdCBjaGFuZ2UgdGhlIHdheSBwZW9wbGUgbGl2ZSwgd29yaywgYW5kIGNvbW11bmljYXRlLjwvc3Bhbj4NCjwvZGl2PgogICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMTIgY29sLW1kLTIgaGlkZGVuLXhzIGhpZGRlbi1zbSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpdmlkZXIiPjwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTEyIGNvbC1tZC0zIHN1Yi1uYXYtaW5mbyI+CiAgICAgICAgICAgIAoKCgoKCiAgICAgICAgIAoKCgo8IS0tIExpbmsgTGlzdCBDb250YWluZXIgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgCiAgICA8dWwgY2xhc3M9ImxpbmstbGlzdCI+CiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvYWJvdXQvbWVtYmVyc2hpcC9pbmRleC5odG1sIiB0YXJnZXQ9Il9zZWxmIj4KICAgICAgICAgICAgSUVFRSBTQSBNZW1iZXJzaGlwCiAgICAgIDwvYT4KICAgIDwvbGk+Cgo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPgoKICAgIAogICAgICAgIAoKCgoKCiAgICAgICAgIAoKCgo8IS0tIExpbmsgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgPGxpPgogICAgPGEgaHJlZj0iL2RldmVsb3AvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiI+CiAgICAgICAgICAgIFN0YW5kYXJkcyBEZXZlbG9wbWVudAogICAgICA8L2E+CiAgICA8L2xpPgoKPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4KCiAgICAKICAgICAgICAKCgoKCgogICAgICAgICAKCgoKPCEtLSBMaW5rIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIDxsaT4KICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy1zZXJ2aWNlcy9hbXMvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiI+CiAgICAgICAgICAgIEFsbGlhbmNlIE1hbmFnZW1lbnQgU2VydmljZXMKICAgICAgPC9hPgogICAgPC9saT4KCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+CgogICAgCiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvaW5kdXN0cnktY29ubmVjdGlvbnMvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiI+CiAgICAgICAgICAgIE5ldyBUZWNobm9sb2dpZXMKICAgICAgPC9hPgogICAgPC9saT4KCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+CgogICAgCiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvZGV2ZWxvcC9ldG9vbHMvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiIgY2xhc3M9InBsYWluLWxpbmsiPgogICAgICAgICAgICBlVG9vbHMKICAgICAgPC9hPgogICAgPC9saT4KCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+CgogICAgPC91bD4KCjwhLS0gI2xpbmstbGlzdC1jb250YWluZXItY29udGVudCBlbmQgLS0+CgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTEyIGNvbC1tZC0zIHN1Yi1uYXYtaW5mbyI+CiAgICAgICAgICAgIAoKCgoKCiAgICAgICAgIAoKCgo8IS0tIExpbmsgTGlzdCBDb250YWluZXIgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgCiAgICA8dWwgY2xhc3M9ImxpbmstbGlzdCI+CiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvYWJvdXQvYXdhcmRzL2luZGV4Lmh0bWwiIHRhcmdldD0iX3NlbGYiPgogICAgICAgICAgICBBd2FyZHMKICAgICAgPC9hPgogICAgPC9saT4KCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+CgogICAgCiAgICAgICAgCgoKCgoKICAgICAgICAgCgoKCjwhLS0gTGluayBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICA8bGk+CiAgICA8YSBocmVmPSIvcHJvZHVjdHMtc2VydmljZXMvaWNhcC9pbmRleC5odG1sIiB0YXJnZXQ9Il9zZWxmIj4KICAgICAgICAgICAgSUVFRSBDZXJ0aWZpY2F0aW9uCiAgICAgIDwvYT4KICAgIDwvbGk+Cgo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPgoKICAgIAogICAgICAgIAoKCgoKCiAgICAgICAgIAoKCgo8IS0tIExpbmsgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgPGxpPgogICAgPGEgaHJlZj0iL2luaXRpYXRpdmVzL2luZGV4Lmh0bWwiIHRhcmdldD0iX3NlbGYiPgogICAgICAgICAgICBJbml0aWF0aXZlcwogICAgICA8L2E+CiAgICA8L2xpPgoKPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4KCiAgICAKICAgICAgICAKCgoKCgogICAgICAgICAKCgoKPCEtLSBMaW5rIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIDxsaT4KICAgIDxhIGhyZWY9Ii9ldmVudHMvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiI+CiAgICAgICAgICAgIEV2ZW50cwogICAgICA8L2E+CiAgICA8L2xpPgoKPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4KCiAgICAKICAgICAgICAKCgoKCgogICAgICAgICAKCgoKPCEtLSBMaW5rIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIDxsaT4KICAgIDxhIGhyZWY9Ii9wYXJ0aWNpcGF0ZS9pbmRleC5odG1sIiB0YXJnZXQ9Il9zZWxmIiBjbGFzcz0ibGluayI+CiAgICAgICAgICAgIFZpZXcgYWxsCiAgICAgIDwvYT4KICAgIDwvbGk+Cgo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPgoKICAgIDwvdWw+Cgo8IS0tICNsaW5rLWxpc3QtY29udGFpbmVyLWNvbnRlbnQgZW5kIC0tPgoKICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9ImNsb3NlLWljb24gaGlkZGVuLXhzIGhpZGRlbi1zbSI+PGltZyBzcmM9ImRhdGE6aW1hZ2UvcG5nK3htbDtiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURJQUFBQXlDQVlBQUFBZVA0aXhBQUFBQVhOU1IwSUFyczRjNlFBQSBBV0pwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpIFlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWxoTlVDQkRiM0psSURVdU5DNHdJajRLSUNBZ1BISmsgWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKayBaaTF6ZVc1MFlYZ3Ribk1qSWo0S0lDQWdJQ0FnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5IElpSUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZaWGhwWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOWwgZUdsbUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBWYzJWeVEyOXRiV1Z1ZEQ1VFkzSmxaVzV6YUc5MCBQQzlsZUdsbU9sVnpaWEpEYjIxdFpXNTBQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnIFBDOXlaR1k2VWtSR1BnbzhMM2c2ZUcxd2JXVjBZVDRLYnN6ZUxnQUFBYkpKUkVGVWFBWHRtbXR1d3lBUWhLMmUgM0Rmd0VUaXF1eVJGY1RHR2ZjeTRKQ3BTWkJ0Mlo3NkIrRWVrTFB1K3IvSXBZMXZlWkFod0t0QnlYWmZEUTdsTiBzMmNSMEZSZ3k3VVZKSzlOR3lhelpjQjY1Q0NwbnZ4NW5pNU1oL1g1U25RS3BnbWpabFFYL3NFTFpHWXpOOXdRIHlzM2tiaVNFQ3JPRUJRQ2hZQXd3SVVjb3VEZGNVQkdLNWtrVGJvU2llOUVOSk5RZEhvKzlZeG94dFJzSHo5bTEgMjBPVVpFaGpwRmJoTTEwUkFBZ05FL1JWY1FRazBudkZFNXIzQUhsNlFwRGFaZ3VZcFZickQ2M1RBR3Bxb0ZCZSBzUjVvYjgzclIrM3JBTXZTYVV6ejY3TzVLWUtiVHNqbmlibERsR1NETUpRUVg4WDgvMXJ0d09BMHlwZU1jaW9WIGl2OVJHV0x1TUowUXFiZm0zelpDcHdaVVUwTkEwMHRhQUMyMWVnSkFwUWZNMHdOQXZaYUlBRVY2cjRrY0t3Z1EgaElZRC9kV0NCRUJxdlFnVmR3eGpobVkzQ3RPUXFmMHIxQjFHZEErNndXSExhRjQwNFFOOGZRdjNoQXZXeEoxbiBtRGRNcUFNN1dnb3poQVZHaElaMU40dTcwUUJuTFRVem1SdXNSSUY2Tlp1Nk1BQVRiUjB5U3NFbW45YVk3bmUxIFFLWVdxTXh0SC9Xbm1qcmtkQ2RSZnkwRk9OWFErVVRXdytRNy9mSHMrRXFzMzl4Wnd0NGpBQXlvQUFBQUFFbEYgVGtTdVFtQ0MiPjwvYT4KICAgICAgPC9kaXY+CiAgIDwvZGl2Pgo8L2Rpdj4KPCEtLSAjbWVnYS1kcm9wZG93bi1tZW51LWNvbnRhaW5lciBlbmQgLS0+CgogICAgICAgICAgICA8L2xpPgogICAgICAgICAKICAgICAgPC91bD4KICAgPC9kaXY+CjwvbmF2Pgo8IS0tICNzaXRlLW5hdmlnYXRpb24tY29udGVudCBlbmQgLS0+CjxzdHlsZSB0eXBlPSd0ZXh0L2Nzcyc+CgkucGFnZS1oZWFkZXItY29udGFpbmVyIC5zaXRlLW5hdmlnYXRpb24gewogICAgCWJhY2tncm91bmQtY29sb3I6ICMyNjI2MjYgIWltcG9ydGFudDsKCX0KCS5oZWFkZXIuc3RpY2t5IC5zaXRlLW5hdmlnYXRpb24gewogICAgCWJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKCX0JCgkucGFnZS1oZWFkZXItY29udGFpbmVyIC5zaXRlLW5hdmlnYXRpb24gLm1lbnUtdG9nZ2xlIHsKCQliYWNrZ3JvdW5kLWNvbG9yOiAjMjYyNjI2ICFpbXBvcnRhbnQ7Cgl9CgkucGFnZS1oZWFkZXItY29udGFpbmVyIC5zaXRlLW5hdmlnYXRpb24gYS5kcm9wZG93bi1saW5rIHsKICAgIAljb2xvcjogI0ZGRkZGRiAhaW1wb3J0YW50OyAKICAgIAlmb250LXNpemU6IDE0cHggIWltcG9ydGFudDsJCgl9CgkubWVnYS1kcm9wZG93bi1tZW51IHsgCiAgICAJYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgCWNvbG9yOiAjRkZGRkZGICFpbXBvcnRhbnQ7IAogICAgfQogICAgLnBhZ2UtaGVhZGVyLWNvbnRhaW5lciAuc2l0ZS1uYXZpZ2F0aW9uIC5uYXZpZ2F0aW9uLWJhciAubWVnYS1kcm9wZG93bi1tZW51IHVsIGxpIGEgewogICAgCWZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50OwogICAgCWNvbG9yOiAjRkZGRkZGICFpbXBvcnRhbnQ7Cgl9CiAgICAucGFnZS1oZWFkZXItY29udGFpbmVyIC5zaXRlLW5hdmlnYXRpb24gLm5hdmlnYXRpb24tYmFyIC5tZWdhLWRyb3Bkb3duLW1lbnUgdWwgbGkgYS5wbGFpbi1saW5rIHsKICAgIAlmb250LXNpemU6IDE0cHggIWltcG9ydGFudDsKICAgIH0KICAgIC5wYWdlLWhlYWRlci1jb250YWluZXIgLnNpdGUtbmF2aWdhdGlvbiAubmF2aWdhdGlvbi1iYXIgLm1lZ2EtZHJvcGRvd24tbWVudSB1bCBsaSBhLmxpbmstdGl0bGUgeyAKICAgIAlmb250LXNpemU6IDE0cHggIWltcG9ydGFudDsKICAgIH0KICAgIC5wYWdlLWhlYWRlci1jb250YWluZXIgLnNpdGUtbmF2aWdhdGlvbiAubmF2aWdhdGlvbi1iYXIgLm1lZ2EtZHJvcGRvd24tbWVudSB1bCBsaSBhLmxpbmsgeyAKICAgIAlmb250LXNpemU6IDE0cHggIWltcG9ydGFudDsKICAgIAljb2xvcjogIzAwQjVFMiAhaW1wb3J0YW50OwogICAgfQogICAgQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJICAgIC5oZWFkZXIuc3RpY2t5IC5zaXRlLW5hdmlnYXRpb24gbmF2IHsKCQkJbWFyZ2luLWxlZnQ6IHB4ICFpbXBvcnRhbnQ7CgkJfQogICAgfQogICAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CgkgICAgLnBhZ2UtaGVhZGVyLWNvbnRhaW5lciAuc2l0ZS1uYXZpZ2F0aW9uIC5uYXZpZ2F0aW9uLWJhciAubWVnYS1kcm9wZG93bi1tZW51IHsKCQkJYm9yZGVyLXRvcC1jb2xvcjogICFpbXBvcnRhbnQ7CgkJfQoJfQoJQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CgkJLnBhZ2UtaGVhZGVyLWNvbnRhaW5lciAuc2l0ZS1uYXZpZ2F0aW9uIC5uYXZpZ2F0aW9uLWJhcj5saS5hY3RpdmUgYS5kcm9wZG93bi1saW5rOjphZnRlciB7CgkJCWJhY2tncm91bmQtY29sb3I6ICAhaW1wb3J0YW50OwoJCX0KICAgIH0KPC9zdHlsZT4KCiAgICAgIDxkaXYgY2xhc3M9InJpZ2h0LWJ0bnMiPgogICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMtc2VydmljZXMvcmVnYXV0aC9pbmRleC5odG1sIiBjbGFzcz0iYnRuLXN0eWxlIGdyYXktYmciPk1BQyBBRERSRVNTPC9hPgogICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LnRlY2hzdHJlZXQuY29tL2llZWUiIGNsYXNzPSJidG4tc3R5bGUgb3JhbmdlIj5CVVkgU1RBTkRBUkRTPC9hPgogICAgICA8L2Rpdj4KICAgPC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0iY2xlYXJmaXgiPjwvZGl2Pgo8IS0tIEVuZCBQYWdlIGhlYWRlciBCbG9jayBjb21wb25lbnQgLS0+CgoKPHN0eWxlIHR5cGU9J3RleHQvY3NzJz4KCgoJCglAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKCQkubm8tc2hvdy1yZWd1bGFyIHsKCQkJZGlzcGxheTogbm9uZTsKCQl9CgkJLnBhZ2UtaGVhZGVyLWNvbnRhaW5lciAuaGVhZGVyLWJsb2NrIC5sb2dvIHsKICAgIAkJd2lkdGg6IDE1MHB4ICFpbXBvcnRhbnQ7CiAgICAJCWhlaWdodDogMTVweCAhaW1wb3J0YW50OwogICAgCQltYXJnaW4tdG9wOiAtMC45NiUgIWltcG9ydGFudDsKCQl9CgkJLm5vLXNob3ctc2Nyb2xsLWRvd24gLnBsYXRmb3JtLWdyYXBoaWMtaW1hZ2UgewoJICAgCQl3aWR0aDogODAuMzk5OTk5OTk5OTk5OTlweCAhaW1wb3J0YW50OwoJICAgCQloZWlnaHQ6IDE1cHggIWltcG9ydGFudDsKCQl9CQkKCX0KCUBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewoJCS5uby1zaG93LXJlZ3VsYXIgewoJCQlkaXNwbGF5OiBub25lOwoJCX0KCQkucGFnZS1oZWFkZXItY29udGFpbmVyIC5oZWFkZXItYmxvY2sgLmxvZ28gewogICAgCQl3aWR0aDogMTUwcHggIWltcG9ydGFudDsKICAgIAkJaGVpZ2h0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAJCW1hcmdpbi10b3A6IC0wLjk2JSAhaW1wb3J0YW50OwoJCX0KCQkubm8tc2hvdy1zY3JvbGwtZG93biAucGxhdGZvcm0tZ3JhcGhpYy1pbWFnZSB7CgkgICAJCXdpZHRoOiA4MC4zOTk5OTk5OTk5OTk5OXB4ICFpbXBvcnRhbnQ7CgkgICAJCWhlaWdodDogMTVweCAhaW1wb3J0YW50OwoJCX0KCX0KCQoJCglAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKCQkubm8tc2hvdy1yZWd1bGFyIHsKCQkJZGlzcGxheTogbm9uZTsKCQl9CgkJLnBhZ2UtaGVhZGVyLWNvbnRhaW5lciAuaGVhZGVyLWJsb2NrIC5sb2dvIHsKICAgIAkJd2lkdGg6IDIwMHB4ICFpbXBvcnRhbnQ7CiAgICAJCWhlaWdodDogMjBweCAhaW1wb3J0YW50OwogICAgCQltYXJnaW4tdG9wOiAtMS4yODAwMDAwMDAwMDAwMDAyJSAhaW1wb3J0YW50OwoJCX0KCQkubm8tc2hvdy1zY3JvbGwtZG93biAucGxhdGZvcm0tZ3JhcGhpYy1pbWFnZSB7CgkgICAJCXdpZHRoOiAxMDcuMnB4ICFpbXBvcnRhbnQ7CgkgICAJCWhlaWdodDogMjBweCAhaW1wb3J0YW50OwoJCX0KCX0KCQogICAgQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJCS5uby1zaG93LXJlZ3VsYXIgewoJCQlkaXNwbGF5OiBub25lOwoJCX0KCQkucGFnZS1oZWFkZXItY29udGFpbmVyIC5oZWFkZXItYmxvY2sgLmxvZ28gewogICAgCQl3aWR0aDogMjUwcHggIWltcG9ydGFudDsKICAgIAkJaGVpZ2h0OiAyNXB4ICFpbXBvcnRhbnQ7CiAgICAJCW1hcmdpbi10b3A6IC0xLjYlICFpbXBvcnRhbnQ7CgkJfQoJICAgIC5oZWFkZXIuc3RpY2t5IC5uby1zaG93LXNjcm9sbC1kb3duIHsKCQkJZGlzcGxheTogbm9uZTsKCQl9CgkgICAgLmhlYWRlci5zdGlja3kgLm5vLXNob3ctcmVndWxhciB7CgkJCWRpc3BsYXk6IGJsb2NrOwoJCX0KCQkuaGVhZGVyLnN0aWNreSAucGFnZS1oZWFkZXItY29udGFpbmVyIC5oZWFkZXItYmxvY2sgLmxvZ28gewoJICAgCQl3aWR0aDogMTIwcHggIWltcG9ydGFudDsKCSAgIAkJaGVpZ2h0OiAyM3B4ICFpbXBvcnRhbnQ7CgkgICAJCXRvcDogMHB4OwoJICAgCQltYXJnaW4tdG9wOiAuODUlICFpbXBvcnRhbnQ7CgkgICAJfQoJCS5uby1zaG93LXNjcm9sbC1kb3duIC5wbGF0Zm9ybS1ncmFwaGljLWltYWdlIHsKCSAgIAkJd2lkdGg6IDEzNHB4ICFpbXBvcnRhbnQ7CgkgICAJCWhlaWdodDogMjVweCAhaW1wb3J0YW50OwoJCX0KCX0KCQo8L3N0eWxlPjwvZGl2PgoNCiAgICANCg0KPC9kaXY+Cg0KICAgIA0KDQoKPC9oZWFkZXI+CjwhLS0gI2hlYWRlciBlbmRzIC0tPgoKCSAgICAKCgoKPCEtLSBMMiBTdGFuZGFyZC9Qcm9qZWN0IFBhZ2UgQ29udGFpbmVyIC0tPgo8ZGl2IGNsYXNzPSJwcm9qZWN0cy1kZXRhaWwtcGFnZSI+Cgk8ZGl2IGNsYXNzPSJwcm9qZWN0cy1kZXRhaWwtcGFnZS1oZWFkZXIiPgogICAgCTxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgCTxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgIAk8ZGl2IGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTEyIj4KICAgICAgICAgICAgCQkKCgoKCgoKCjwhLS0gRHluYW1pYyBQYWdlIFRpdGxlIERldGFpbHMgQ29udGVudCAtLT4KCgk8ZGl2IGNsYXNzPSJidXR0b24tcm93IHRleHQtbGVmdCBzbWFsbC1idG4iPgoJICAgIDxkaXYgY2xhc3M9ImJ1dHRvbmNlbGwiPgoJICAgICAgICA8YSBjbGFzcz0iYnRuLXN0eWxlIGdyZXkiPlN0YW5kYXJkPC9hPgoJICAgIDwvZGl2PgoJICAgIDxkaXYgY2xhc3M9ImJ1dHRvbmNlbGwiPgoJICAgICAgICA8YSBjbGFzcz0iYnRuLXN0eWxlIEFjdGl2ZSIgdGFyZ2V0PSJfYmxhbmsiPkFjdGl2ZTwvYT4KCSAgICA8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icnRlLXdpdGgtY3RhIj4KCSAgICA8ZGl2IGNsYXNzPSJjdGEtcnRlIHRleHQtbGVmdCI+CgkgICAgICAgIDxkaXYgY2xhc3M9InRleHQgcnRlIiBzdHlsZT0iY29sb3I6d2hpdGUiPgoJICAgICAgICAgICAgPHNwYW4gY2xhc3M9InN1Yi1oZWFkaW5nIj41MjgtMjAxOSAtIElFRUUgU3RhbmRhcmQgZm9yIEluZXJ0aWFsIFNlbnNvciBUZXJtaW5vbG9neTwvc3Bhbj4KCSAgICAgICAgICAgIDxicj4KCSAgICAgICAgPC9kaXY+CgkgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1yb3cgdGV4dC1sZWZ0Ij4KCSAgICAgICAgICAgIAoJCQkJICAgIDxkaXYgY2xhc3M9ImJ1dHRvbmNlbGwiPgoJCQkJICAgICAgICA8YSBjbGFzcz0iYnRuLXN0eWxlIG9yYW5nZSIgaHJlZj0iaHR0cDovL3d3dy50ZWNoc3RyZWV0LmNvbS9pZWVlL3Byb2R1Y3RzL3ZlbmRvcl9pZC83MjkyIiB0YXJnZXQ9Il9ibGFuayI+CgkJCQkgICAgICAgIAlCdXkgVGhpcyBTdGFuZGFyZAoJCQkJICAgICAgICA8L2E+CgkJCQkgICAgPC9kaXY+CgkJCQkgICAgCgkJCQkKCQkJCQoJCQkgICAgPGRpdiBjbGFzcz0iYnV0dG9uY2VsbCI+CgkJCSAgICAgICAgPGEgY2xhc3M9ImJ0bi1zdHlsZSB3aGl0ZS1vdXRsaW5lIiBocmVmPSJodHRwOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy9zZXJ2bGV0L29wYWM/cHVudW1iZXI9ODg2Mzc5NyIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkgICAgICAgIAlBY2Nlc3MgVmlhIFN1YnNjcmlwdGlvbgoJCQkgICAgICAgIDwvYT4KCQkJICAgIDwvZGl2PgoJICAgICAgICA8L2Rpdj4KCSAgICA8L2Rpdj4KCTwvZGl2PgoKPCEtLSAjZHluYW1pYy1wYWdlLXRpdGxlLWRldGFpbHMtY29udGVudCBlbmQgLS0+CgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogIAkJPC9kaXY+Cgk8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByb2plY3RzLWRldGFpbC1wYWdlLWNvbnRlbnQgY29udGVudC13aWR0aC10d28tY29sdW1ucyBsZWZ0LWNvbHVtbi1iZyI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS00Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWZ0LWJsb2NrIHJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZnQtY29udGVudC1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgIAk8ZGl2IGNsYXNzPSJsZWZ0LWZpbHRlci1uYXYgY29sLXNtLTExIGNvbC1tZC0xMSAiPgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKCgo8IS0tIER5bmFtaWMgUGFnZSBMZWZ0TmF2IERldGFpbHMgQ29udGVudCAtLT4KCgk8ZGl2IGNsYXNzPSJmaWx0ZXItdGl0bGUgaGlkZGVuLXhzIj5FeHBsb3JlIFRoaXMgU3RhbmRhcmQ8L2Rpdj4KCTxkaXYgY2xhc3M9Im5hdiBwcm9qZWN0LWRldGFpbHMtaXRlbXMiPgoJICAgIDxkaXYgY2xhc3M9InByb2plY3QtZHJvcGRvd24tc2VsZWN0b3IiPgoJICAgICAgICA8c3BhbiBjbGFzcz0icmVwbGFjZS10ZXh0Ij48L3NwYW4+CgkgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXRyaWFuZ2xlLWJvdHRvbSI+PC9zcGFuPgoJICAgIDwvZGl2PgoJICAgIDx1bCBjbGFzcz0icHJvamVjdC1saXN0LWl0ZW1zIHByb2plY3QtZHJvcGRvd24tbGlzdC1oaWRlIj4KCSAgICAgICAgPGxpIGNsYXNzPSJzZWxlY3RlZCBhY3RpdmUiPjxhIGhyZWY9IiNTdGFuZGFyZCI+U3RhbmRhcmQgRGV0YWlsczwvYT48L2xpPgoJICAgICAgICA8bGk+PGEgaHJlZj0iI0FkZGl0aW9uYWwiPkFkZGl0aW9uYWwgUmVzb3VyY2VzPC9hPjwvbGk+CgkgICAgICAgIDxsaT48YSBocmVmPSIjV29ya2luZyI+V29ya2luZyBHcm91cDwvYT48L2xpPgoJICAgIDwvdWw+Cgk8L2Rpdj4KCjwhLS0gI2R5bmFtaWMtcGFnZS10aXRsZS1kZXRhaWxzLWNvbnRlbnQgZW5kIC0tPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KDQoNCgoJICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgkJCQkJCTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmlnaHQtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIAkKCgoKCgoKCjwhLS0gRHluYW1pYyBQYWdlIERldGFpbHMgQ29udGVudCAtLT4KCiAgICA8ZGl2IGNsYXNzPSJkZXRhaWxzLWJsb2NrIGJvdHRvbS1ib3JkZXIiIGlkPSJTdGFuZGFyZCI+CiAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPlN0YW5kYXJkIERldGFpbHM8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJkZXNjcmlwdGlvbiI+VGVybXMgYW5kIGRlZmluaXRpb25zIHJlbGF0aW5nIHRvIGluZXJ0aWFsIHNlbnNvcnMgYXJlIHByZXNlbnRlZCBpbiB0aGlzIHN0YW5kYXJkLiBVc2FnZSBhcyB1bmRlcnN0b29kIGJ5IHRoZSBpbmVydGlhbCBzZW5zb3IgY29tbXVuaXR5IGlzIGdpdmVuIHByZWZlcmVuY2Ugb3ZlciBnZW5lcmFsIHRlY2huaWNhbCB1c2FnZSBvZiB0aGUgdGVybXMgaGVyZWluLiBUaGUgY3JpdGVyaW9uIGZvciBpbmNsdXNpb24gb2YgYSB0ZXJtIGFuZCBpdHMgZGVmaW5pdGlvbiBpbiB0aGlzIHN0YW5kYXJkIGlzIHVzZWZ1bG5lc3MgYXMgcmVsYXRlZCB0byBpbmVydGlhbCBzZW5zb3IgdGVjaG5vbG9neS48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdGFuZGFyZC1pbmZvIj4KICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CiAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbC14cy02IGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPlNwb25zb3IgQ29tbWl0dGVlPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtNiBjb2wtc20tOSByaWdodC1zZWN0aW9uLWluZm8iIHZlcnRpY2xlLWFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSBocmVmPSJodHRwOi8vaWVlZS1hZXNzLm9yZy90ZWNoLW9wcy9neXJvLWFuZC1hY2NlbGVyb21ldGVyIiBjbGFzcz0ibGluayI+QUVTL0dBIC0gR3lybyBBY2NlbGVyb21ldGVyIFBhbmVsPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8IS0tIFN0YW5kYXJkcyBEYXRhIHN0YXJ0IC0tPgogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtNiBjb2wtc20tMyBsZWZ0LXRpdGxlIiB2ZXJ0aWNsZS1hbGlnbj0idG9wIj5TdGF0dXM8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbC14cy02IGNvbC1zbS05IHJpZ2h0LXNlY3Rpb24taW5mbyIgdmVydGljbGUtYWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PkFjdGl2ZTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbC14cy02IGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPkJvYXJkIEFwcHJvdmFsPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtNiBjb2wtc20tOSByaWdodC1zZWN0aW9uLWluZm8iIHZlcnRpY2xlLWFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4yMDE5LTA2LTEzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTYgY29sLXNtLTMgbGVmdC10aXRsZSIgdmVydGljbGUtYWxpZ249InRvcCI+SGlzdG9yeTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTYgY29sLXNtLTkgcmlnaHQtc2VjdGlvbi1pbmZvIiB2ZXJ0aWNsZS1hbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlzaGVkIERhdGU6MjAxOS0xMC0wOAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdGFuZGFyZHMgRGF0YSBlbmQgLS0+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPCEtLSBQcm9qZWN0cyBEYXRhIHN0YXJ0IC0tPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwhLS0gUHJvamVjdHMgRGF0YSBlbmQgLS0+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+Cgo8IS0tICNkeW5hbWljLXBhZ2UtZGV0YWlscy1jb250ZW50IGVuZCAtLT4KCiAgICAgICAgICAgICAgICAgICAgCQoKCgoKCgoKPCEtLSBEeW5hbWljIFBhZ2UgQWRkaXRpb25hbCBSZXNvdXJjZXMgRGV0YWlscyBDb250ZW50IC0tPgoKICAgIDxkaXYgY2xhc3M9ImRldGFpbHMtYmxvY2sgYm90dG9tLWJvcmRlciIgaWQ9IkFkZGl0aW9uYWwiPgogICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj5BZGRpdGlvbmFsIFJlc291cmNlcyBEZXRhaWxzPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic3RhbmRhcmQtaW5mbyI+CiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3RhbmRhcmRzIERhdGEgc3RhcnQgLS0+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbC14cy02IGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPlBBUjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTYgY29sLXNtLTkgcmlnaHQtc2VjdGlvbi1pbmZvIiB2ZXJ0aWNsZS1hbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wbWVudC5zdGFuZGFyZHMuaWVlZS5vcmcvbXlwcm9qZWN0LXdlYi9wdWJsaWMvdmlldy5odG1sI3BhcmRldGFpbC82NDYzIiBjbGFzcz0ibGluayI+QXBwcm92ZWQgUEFSPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8IS0tIFN0YW5kYXJkcyBEYXRhIGVuZCAtLT4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8IS0tIENvbW1vbiBEYXRhIHN0YXJ0IC0tPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwhLS0gQ29tbW9uIERhdGEgZW5kIC0tPgogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKPCEtLSAjZHluYW1pYy1wYWdlLWFkZGl0aW9uYWwtcmVzb3VyY2VzLWRldGFpbHMtY29udGVudCBlbmQgLS0+CgogICAgICAgICAgICAgICAgICAgIAkKCgoKCgoKCjwhLS0gRHluYW1pYyBXb3JraW5nIEdyb3VwIERldGFpbHMgQ29udGVudCAtLT4KCiAgICA8ZGl2IGNsYXNzPSJkZXRhaWxzLWJsb2NrIiBpZD0iV29ya2luZyI+CiAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPldvcmtpbmcgR3JvdXAgRGV0YWlsczwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InN0YW5kYXJkLWluZm8iPgogICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KICAgICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTYgY29sLXNtLTMgbGVmdC10aXRsZSIgdmVydGljbGUtYWxpZ249InRvcCI+V29ya2luZyBHcm91cDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTYgY29sLXNtLTkgcmlnaHQtc2VjdGlvbi1pbmZvIiB2ZXJ0aWNsZS1hbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+U0VOU1JfV0cgLSBTZW5zb3JzIFdvcmtpbmcgR3JvdXA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtNiBjb2wtc20tMyBsZWZ0LXRpdGxlIiB2ZXJ0aWNsZS1hbGlnbj0idG9wIj5Xb3JraW5nIEdyb3VwIENoYWlyPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtNiBjb2wtc20tOSByaWdodC1zZWN0aW9uLWluZm8iIHZlcnRpY2xlLWFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5IYXJyeSBEYXZpczwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbC14cy02IGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPlNwb25zb3IgQ29tbWl0dGVlPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtNiBjb2wtc20tOSByaWdodC1zZWN0aW9uLWluZm8iIHZlcnRpY2xlLWFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSBocmVmPSJodHRwOi8vaWVlZS1hZXNzLm9yZy90ZWNoLW9wcy9neXJvLWFuZC1hY2NlbGVyb21ldGVyIiBjbGFzcz0ibGluayI+QUVTL0dBIC0gR3lybyBBY2NlbGVyb21ldGVyIFBhbmVsPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTYgY29sLXNtLTMgbGVmdC10aXRsZSIgdmVydGljbGUtYWxpZ249InRvcCI+U29jaWV0eTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTYgY29sLXNtLTkgcmlnaHQtc2VjdGlvbi1pbmZvIiB2ZXJ0aWNsZS1hbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGEgaHJlZj0iaHR0cDovL3d3dy5pZWVlLWFlc3Mub3JnLyIgY2xhc3M9ImxpbmsiPklFRUUgQWVyb3NwYWNlIGFuZCBFbGVjdHJvbmljIFN5c3RlbXMgU29jaWV0eTwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbC14cy02IGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPklFRUUgUHJvZ3JhbSBNYW5hZ2VyPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtNiBjb2wtc20tOSByaWdodC1zZWN0aW9uLWluZm8iIHZlcnRpY2xlLWFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGRhdGEtdXNlcj0ibWFpbFRPOmEuZi5tb3JhbkBpZWVlLm9yZyIgY2xhc3M9ImxpbmsgdXNlcl9lbWFpbF9fbGluayI+QXNobGV5IE1vcmFuPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbC14cy0xMiBjb2wtc20tMyBsZWZ0LXRpdGxlIiB2ZXJ0aWNsZS1hbGlnbj0idG9wIj5BY3RpdmUgUHJvamVjdHM8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbC14cy0xMiBjb2wtc20tOSByaWdodC1zZWN0aW9uLWluZm8iIHZlcnRpY2xlLWFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSBjbGFzcz0iYnRuLXN0eWxlIEFjdGl2ZSI+QWN0aXZlPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSBocmVmPSIvcHJvamVjdC85NTIuaHRtbCIgY2xhc3M9ImxpbmsiPlA5NTIgLSBJRUVFIERyYWZ0IFN0YW5kYXJkIFNwZWNpZmljYXRpb24gRm9ybWF0IEd1aWRlIGFuZCBUZXN0IFByb2NlZHVyZSBmb3IgU2luZ2xlLUF4aXMgSW50ZXJmZXJvbWV0cmljIEZpYmVyIE9wdGljIEd5cm9zPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlNwZWNpZmljYXRpb24gYW5kIHRlc3QgcHJvY2VkdXJlcyBmb3IgYSBzaW5nbGUtYXhpcyBpbnRlcmZlcm9tZXRyaWMgZmliZXIgb3B0aWMgZ3lybyAoSUZPRykgZm9yIHVzZSBhcyBhIHNlbnNvciBpbiBhdHRpdHVkZSBjb250cm9sIHN5c3RlbXMsIGFuZ3VsYXIgZGlzcGxhY2VtZW50IG1lYXN1cmluZyBzeXN0ZW1zLCBhbmQgYW5ndWxhciByYXRlIG1lYXN1cmluZyBzeXN0ZW1zIGFyZSBkZWZpbmVkLiBUaGUgdGVzdCBwcm9jZWR1cmVzIGFyZSBkZXJpdmVkIGZyb20gdGhvc2UgcHJlc2VudGx5IHVzZWQgaW4gdGhlIGluZHVzdHJ5LjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTMgbGVmdC10aXRsZSIgdmVydGljbGUtYWxpZ249InRvcCI+RXhpc3RpbmcgU3RhbmRhcmRzPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTkgcmlnaHQtc2VjdGlvbi1pbmZvIiB2ZXJ0aWNsZS1hbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGEgY2xhc3M9ImJ0bi1zdHlsZSBBY3RpdmUiPkFjdGl2ZTwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGEgaHJlZj0iL3N0YW5kYXJkLzI5Mi0xOTY5Lmh0bWwiIGNsYXNzPSJsaW5rIj4yOTItMTk2OSAtIElFRUUgU3BlY2lmaWNhdGlvbiBGb3JtYXQgZm9yIFNpbmdsZS1EZWdyZWUtb2YtRnJlZWRvbSBTcHJpbmctUmVzdHJhaW5lZCBSYXRlIEd5cm9zPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlRoaXMgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIHRoZSByZXF1aXJlbWVudHMgZm9yIGEgc2luZ2xlLWRlZ3JlZS1vZi1mcmVlZG9tIHNwcmluZy1yZXN0cmFpbmVkIHJhdGUgZ3lybyBmb3IgW2FpcmNyYWZ0LCBtaXNzaWxlLCBzcGFjZWNyYWZ0LF9fX19fX10gYXBwbGljYXRpb25zLiBUaGUgcmF0ZSBneXJvIHNoYWxsIGJlIGNhcGFibGUgb2YgcHJvdmlkaW5nIFsoZGMsIGFjKSB2b2x0YWdlIG91dHB1dHMgcHJvcG9ydGlvbmFsIHRvIGFuZ3VsYXIgcmF0ZSBpbnB1dHMgdXAgdG9fX19fX18gZGVncmVlcyBwZXIgc2Vjb25kLCBhIHN3aXRjaCBjbG9zdXJlKHMpIGF0IGFuZ3VsYXIgcmF0ZXMgKGV4Y2VlZGluZyxsZXNzIHRoYW4pX19fX19fICgrLC0sPylfX19fX18gZGVncmVlcyBwZXIgc2Vjb25kXS48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS05IHJpZ2h0LXNlY3Rpb24taW5mbyIgdmVydGljbGUtYWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGNsYXNzPSJidG4tc3R5bGUgQWN0aXZlIj5BY3RpdmU8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGhyZWY9Ii9zdGFuZGFyZC8yOTMtMTk2OS5odG1sIiBjbGFzcz0ibGluayI+MjkzLTE5NjkgLSBJRUVFIFRlc3QgUHJvY2VkdXJlIGZvciBTaW5nbGUtRGVncmVlLW9mLUZyZWVkb20gU3ByaW5nLVJlc3RyYWluZWQgUmF0ZSBHeXJvczwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5SZWNvbW1lbmRlZCByYXRlIGd5cm8gdGVzdCBwcm9jZWR1cmVzIGRlcml2ZWQgZnJvbSB0aG9zZSBjdXJyZW50bHkgaW4gdXNlLCBpbmNsdWRpbmcgdGVzdCBjb25kaXRpb25zIHRvIGJlIGNvbnNpZGVyZWQsIGFyZSBjb21waWxlZC4gSW4gc29tZSBjYXNlcyBhbHRlcm5hdGUgbWV0aG9kcyBmb3IgbWVhc3VyaW5nIGEgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWMgaGF2ZSBiZWVuIGluY2x1ZGVkLiBUaGlzIHN0YW5kYXJkIGlzIGludGVuZGVkIHRvIGJlIGEgZ3VpZGUgaW4gdGhlIHByZXBhcmF0aW9uIG9mIFNlY3Rpb24gNCBvZiBhIHNwZWNpZmljYXRpb24gdGhhdCBmb2xsb3dzIHRoZSBmb3JtYXQgb2YgSUVFRSBTdGQgMjkyLCBTcGVjaWZpY2F0aW9uIEZvcm1hdCBmb3IgU2luZ2xlLURlZ3JlZS1vZi1GcmVlZG9tIFNwcmluZy1SZXN0cmFpbmVkIFJhdGUgR3lyb3MuDQo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS05IHJpZ2h0LXNlY3Rpb24taW5mbyIgdmVydGljbGUtYWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGNsYXNzPSJidG4tc3R5bGUgQWN0aXZlIj5BY3RpdmU8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGhyZWY9Ii9zdGFuZGFyZC81MTctMTk3NC5odG1sIiBjbGFzcz0ibGluayI+NTE3LTE5NzQgLSBJRUVFIFN0YW5kYXJkIFNwZWNpZmljYXRpb24gRm9ybWF0IEd1aWRlIGFuZCBUZXN0IFByb2NlZHVyZSBmb3IgU2luZ2xlLURlZ3JlZS1vZi1GcmVlZG9tIFJhdGUtSW50ZWdyYXRpbmcgR3lyb3M8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+QSBzcGVjaWZpY2F0aW9uIGZvcm1hdCBndWlkZSBmb3IgdGhlIHByZXBhcmF0aW9uIG9mIGEgcmF0ZS1pbnRlZ3JhdGluZyBneXJvIHNwZWNpZmljYXRpb24gdGhhdCBwcm92aWRlcyBhIGNvbW1vbiBtZWV0aW5nIGdyb3VuZCBvZiB0ZXJtaW5vbG9neSBhbmQgcHJhY3RpY2UgZm9yIG1hbnVmYWN0dXJlcnMgYW5kIHVzZXJzIGlzIHByZXNlbnRlZC4gQSBjb21waWxhdGlvbiBvZiByZWNvbW1lbmRlZCBwcm9jZWR1cmVzIGZvciB0ZXN0aW5nIGEgcmF0ZS1pbnRlZ3JhdGluZyBneXJvIGlzIGdpdmVuLjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+Cjx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTMgbGVmdC10aXRsZSIgdmVydGljbGUtYWxpZ249InRvcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTkgcmlnaHQtc2VjdGlvbi1pbmZvIiB2ZXJ0aWNsZS1hbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGEgY2xhc3M9ImJ0bi1zdHlsZSBTdXBlcnNlZGVkIj5TdXBlcnNlZGVkPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSBocmVmPSIvc3RhbmRhcmQvNTI4LTIwMDEuaHRtbCIgY2xhc3M9ImxpbmsiPjUyOC0yMDAxIC0gSUVFRSBTdGFuZGFyZCBmb3IgSW5lcnRpYWwgU2Vuc29yIFRlcm1pbm9sb2d5PC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlRlcm1zIGFuZCBkZWZpbml0aW9ucyByZWxhdGluZyB0byBpbmVydGlhbCBzZW5vcnMgYXJlIHByZXNlbnRlZCBpbiB0aGlzIHN0YW5kYXJkLiBVc2FnZSBhcyB1bmRlcnN0b29kIGJ5IHRoZSBpbmVydGlhbCBzZW5zb3IgY29tbXVuaXR5IGlzIGdpdmVuIHByZWZlcmVuY2Ugb3ZlciBnZW5lcmFsIHRlY2huaWNhbCB1c2FnZSBvZiB0aGUgdGVybXMgaGVyZWluLiBUaGUgY3JpdGVyaW9uIGZvciBpbmNsdXNpb24gb2YgYSB0ZXJtIGFuZCBpdHMgZGVmaW5pdGlvbiBpbiB0aGlzIHN0YW5kYXJkIGlzIHVzZWZ1bG5lc3MgYXMgcmVsYXRlZCB0byBpbmVydGlhbCBzZW5zb3IgdGVjaG5vbG9neS48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS05IHJpZ2h0LXNlY3Rpb24taW5mbyIgdmVydGljbGUtYWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGNsYXNzPSJidG4tc3R5bGUgQWN0aXZlIj5BY3RpdmU8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGhyZWY9Ii9zdGFuZGFyZC81MjktMTk4MC5odG1sIiBjbGFzcz0ibGluayI+NTI5LTE5ODAgLSBTdXBwbGVtZW50IGZvciBTdHJhcGRvd24gQXBwbGljYXRpb25zIHRvIElFRUUgU3RhbmRhcmQgU3BlY2lmaWNhdGlvbiBGb3JtYXQgR3VpZGUgYW5kIFRlc3QgUHJvY2VkdXJlIGZvciBTaW5nbGUtRGVncmVlLW9mLUZyZWVkb20gUmF0ZS1JbnRlZ3JhdGluZyBHeXJvczwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5BIHNwZWNpZmljYXRpb24gZm9ybWF0IGd1aWRlIGZvciB0aGUgcHJlcGFyYXRpb24gb2YgYSByYXRlLWludGVncmF0aW5nIGd5cm9zY29wZSBzcGVjaWZpY2F0aW9uIGlzIHByZXNlbnRlZC4gUmVjb21tZW5kZWQgcHJvY2VkdXJlcyBmb3IgdGVzdGluZyBhIHJhdGUtaW50ZWdyYXRpbmcgZ3lyb3Njb3BlIGFyZSBjb21waWxlZC4gVGhpcyBzdGFuZGFyZCwgd2hlbiBjb21iaW5lZCB3aXRoIElFRUUgU3RkIDUxNy0xOTc0IChSMTk4MCksIGRlZmluZXMgdGhlIHJlcXVpcmVtZW50cyBhbmQgdGVzdCBwcm9jZWR1cmVzIGluIHRlcm1zIG9mIGNoYXJhY3RlcmlzdGljcyB1bmlxdWUgdG8gdGhlIGd5cm9zY29wZSBvciB0aG9zZSBhcHBsaWNhdGlvbnMgaW4gd2hpY2ggdGhlIGR5bmFtaWMgYW5ndWxhciBpbnB1dHMgYXJlIHNpZ25pZmljYW50bHkgZ3JlYXRlciB0aGFuIHRoZSBsaW1pdGF0aW9ucyBpZGVudGlmaWVkIGluIElFRUUgU3RkIDUxNy48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS05IHJpZ2h0LXNlY3Rpb24taW5mbyIgdmVydGljbGUtYWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGNsYXNzPSJidG4tc3R5bGUgSW5hY3RpdmUtUmVzZXJ2ZWQiPkluYWN0aXZlLVJlc2VydmVkPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSBocmVmPSIvc3RhbmRhcmQvNjcxLTE5ODUuaHRtbCIgY2xhc3M9ImxpbmsiPjY3MS0xOTg1IC0gSUVFRSBTdGFuZGFyZCBTcGVjaWZpY2F0aW9uIEZvcm1hdCBHdWlkZSBhbmQgVGVzdCBQcm9jZWR1cmUgZm9yIE5vbmd5cm9zY29waWMgSW5lcnRpYWwgQW5ndWxhciBTZW5zb3JzOiBKZXJrLCBBY2NlbGVyYXRpb24sIFZlbG9jaXR5LCBhbmQgRGlzcGxhY2VtZW50PC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PkEgZ3VpZGUgaXMgcHJlc2VudGVkIGZvciB0aGUgcHJlcGFyYXRpb24gb2YgYSBzcGVjaWZpY2F0aW9uIGFuZCB0ZXN0IHByb2NlZHVyZSBmb3IgYW4gaW5lcnRpYWwgYW5ndWxhciBzZW5zb3IgdGhhdCBwcm92aWRlcyBhIGNvbW1vbiBtZWV0aW5nIGdyb3VuZCBvZiB0ZXJtaW5vbG9neSBhbmQgcHJhY3RpY2UgZm9yIG1hbnVmYWN0dXJlcnMgYW5kIHVzZXJzIG9mIGFuIGFycmF5IG9mIHNlbnNvcnMgdGhhdCBoYXZlIGJlZW4gZGV2ZWxvcGVkIHRvIG1lZXQgbmVlZHMgbm90IGVhc2lseSBtZXQgYnkgdHJhZGl0aW9uYWwgc3Bpbm5pbmctcm90b3IgZ3lyb3Njb3Blcy4gQSB0ZXN0IHByb2NlZHVyZSBmb3IgdmVyaWZ5aW5nIHRoYXQgdGhlIHNwZWNpZmljYXRpb25zIGhhdmUgYmVlbiBtZXQgaXMgZ2l2ZW4uIFRoZSBzdGFuZGFyZCBpcyBub3QgaW50ZW5kZWQgdG8gY29tcGV0ZSB3aXRoIGV4aXN0aW5nIHN0YW5kYXJkcyBmb3Igc3BlY2lmaWMgZGV2aWNlcyB3aXRoIGhpZ2hseSBzcGVjaWZpYyBtb2RlbHMgYW5kIGVycm9yIHNvdXJjZXMsIHN1Y2ggYXMgc3ByaW5nLXJlc3RyYWluZWQgcmF0ZSBneXJvcywgYnV0IHRvIHByb3ZpZGUgYSB1bmlmb3JtIGd1aWRlIGZvciB0aG9zZSBpbmVydGlhbCBhbmd1bGFyIHNlbnNvcnMgdGhhdCBoYXZlIG5vdCBiZWVuIGNvdmVyZWQgZWxzZXdoZXJlLjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+Cjx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTMgbGVmdC10aXRsZSIgdmVydGljbGUtYWxpZ249InRvcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTkgcmlnaHQtc2VjdGlvbi1pbmZvIiB2ZXJ0aWNsZS1hbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGEgY2xhc3M9ImJ0bi1zdHlsZSBBY3RpdmUiPkFjdGl2ZTwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGEgaHJlZj0iL3N0YW5kYXJkLzgxMy0xOTg4Lmh0bWwiIGNsYXNzPSJsaW5rIj44MTMtMTk4OCAtIElFRUUgU3BlY2lmaWNhdGlvbiBGb3JtYXQgR3VpZGUgYW5kIFRlc3QgUHJvY2VkdXJlIGZvciBUd28tRGVncmVlLW9mLUZyZWVkb20gRHluYW1pY2FsbHkgVHVuZWQgR3lyb3M8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+QSBmb3JtYXQgZ3VpZGUgZm9yIHRoZSBwcmVwYXJhdGlvbiBvZiBhIHR3by1kZWdyZWUtb2YtZnJlZWRvbSBkeW5hbWljYWxseSB0dW5lZCBneXJvIChEVEcpIHNwZWNpZmljYXRpb24gaXMgZ2l2ZW4gdGhhdCBwcm92aWRlcyBhIGNvbW1vbiBncm91bmQgb2YgdGVybWlub2xvZ3kgYW5kIHByYWN0aWNlIGZvciBtYW51ZmFjdHVyZXJzIGFuZCB1c2Vycy4gQSBjb21waWxhdGlvbiBvZiByZWNvbW1lbmRlZCBwcm9jZWR1cmVzIGZvciB0ZXN0aW5nIGEgRFRHIGlzIGFsc28gZ2l2ZW4uIFRoZSByZXF1aXJlbWVudHMgYW5kIHRlc3QgcHJvY2VkdXJlcyBhcmUgZGVmaW5lZCBpbiB0ZXJtcyB1bmlxdWUgdG8gdGhlIERURy4gVGhleSBjb3ZlciBhcHBsaWNhdGlvbnMgb2YgdGhlIGd5cm8gYXMgYW4gYW5ndWxhciBtb3Rpb24gc2Vuc29yIGluIG5hdmlnYXRpb24gYW5kIGNvbnRyb2wgc3lzdGVtcy4gVGhleSBhcHBseSB0byB0d28gbW9kZXMgb2YgdXNlOiAoMSkgYXMgYSBzdHJhcC1kb3duIHNlbnNvciBpbiBvcGVyYXRpbmcgZW52aXJvbm1lbnRzIHR5cGljYWwgb2YgYWlyY3JhZnQgYW5kIG1pc3NpbGUgYXBwbGljYXRpb25zLCBhbmQgKDIpIGFzIGEgc2Vuc29yIGluIGdpbWJhbGxlZCBwbGF0Zm9ybSBhcHBsaWNhdGlvbnMgaW4gd2hpY2ggdGhlIGR5bmFtaWMgYW5ndWxhciBpbnB1dHMgdG8gd2hpY2ggdGhlIGd5cm8gaXMgc3ViamVjdGVkIGFyZSBiZW5pZ24gcmVsYXRpdmUgdG8gdGhlIGFjY3VyYWN5IHJlcXVpcmVkLiBJbiB0aGUgY2FzZSBvZiB0aGUgc3RyYXAtZG93biBEVEcsIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGV4dGVybmFsIGNhcHR1cmUgbG9vcHMgYXJlIGNvbnNpZGVyZWQgdG8gdGhlIGV4dGVudCBuZWNlc3NhcnkgdG8gZGVmaW5lIHRoZSBneXJvIHBlcmZvcm1hbmNlLg0KPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbC14cy0xMiBjb2wtc20tMyBsZWZ0LXRpdGxlIiB2ZXJ0aWNsZS1hbGlnbj0idG9wIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbC14cy0xMiBjb2wtc20tOSByaWdodC1zZWN0aW9uLWluZm8iIHZlcnRpY2xlLWFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSBjbGFzcz0iYnRuLXN0eWxlIEFjdGl2ZSI+QWN0aXZlPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSBocmVmPSIvc3RhbmRhcmQvOTUyLTE5OTcuaHRtbCIgY2xhc3M9ImxpbmsiPjk1Mi0xOTk3IC0gSUVFRSBTdGFuZGFyZCBTcGVjaWZpY2F0aW9uIEZvcm1hdCBHdWlkZSBhbmQgVGVzdCBQcm9jZWR1cmUgZm9yIFNpbmdsZS1BeGlzIEludGVyZmVyb21ldHJpYyBGaWJlciBPcHRpYyBHeXJvczwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5TcGVjaWZpY2F0aW9uIGFuZCB0ZXN0IHJlcXVpcmVtZW50cyBmb3IgYSBzaW5nbGUtYXhpcyBpbnRlcmZlcm9tZXRyaWMgZmliZXIgb3B0aWMgZ3lybyAoSUZPRykNCmZvciB1c2UgYXMgYSBzZW5zb3IgaW4gYXR0aXR1ZGUgY29udHJvbCBzeXN0ZW1zLCBhbmd1bGFyIGRpc3BsYWNlbWVudCBtZWFzdXJpbmcgc3lzdGVtcywgYW5kIGFuZ3VsYXIgcmF0ZSBtZWFzdXJpbmcgc3lzdGVtcyBhcmUgZGVmaW5lZC4gQSBzdGFuZGFyZCBzcGVjaWZpY2F0aW9uIGZvcm1hdCBndWlkZSBmb3IgdGhlIHByZXBhcmF0aW9uIG9mIGEgc2luZ2xlLWF4aXMgSUZPRyBpcyBwcm92aWRlZC4gQSBjb21waWxhdGlvbiBvZiByZWNvbW1lbmRlZCBwcm9jZWR1cmVzIGZvciB0ZXN0aW5nIGEgZmliZXIgb3B0aWMgZ3lybywgZGVyaXZlZCBmcm9tIHRob3NlIHByZXNlbnRseSB1c2VkIGluIHRoZSBpbmR1c3RyeSwgaXMgYWxzbyBwcm92aWRlZC48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS05IHJpZ2h0LXNlY3Rpb24taW5mbyIgdmVydGljbGUtYWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGNsYXNzPSJidG4tc3R5bGUgQWN0aXZlIj5BY3RpdmU8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGhyZWY9Ii9zdGFuZGFyZC8xNTU0LTIwMDUuaHRtbCIgY2xhc3M9ImxpbmsiPjE1NTQtMjAwNSAtIElFRUUgUmVjb21tZW5kZWQgUHJhY3RpY2UgZm9yIEluZXJ0aWFsIFNlbnNvciBUZXN0IEVxdWlwbWVudCwgSW5zdHJ1bWVudGF0aW9uLCBEYXRhIEFjcXVpc2l0aW9uLCBhbmQgQW5hbHlzaXM8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+VGVzdCBlcXVpcG1lbnQsIGRhdGEgYWNxdWlzaXRpb24gZXF1aXBtZW50LCBpbnN0cnVtZW50YXRpb24sIHRlc3QgZmFjaWxpdGllcywgYW5kIGRhdGEgYW5hbHlzaXMgdGVjaG5pcXVlcyB1c2VkIGluIGluZXJ0aWFsIHNlbnNvciB0ZXN0aW5nIGFyZSBkZXNjcmliZWQgaW4gdGhpcyByZWNvbW1lbmRlZCBwcmFjdGljZS48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS05IHJpZ2h0LXNlY3Rpb24taW5mbyIgdmVydGljbGUtYWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGNsYXNzPSJidG4tc3R5bGUgQWN0aXZlIj5BY3RpdmU8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGhyZWY9Ii9zdGFuZGFyZC82NDctMjAwNi5odG1sIiBjbGFzcz0ibGluayI+NjQ3LTIwMDYgLSBJRUVFIFN0YW5kYXJkIFNwZWNpZmljYXRpb24gRm9ybWF0IEd1aWRlIGFuZCBUZXN0IFByb2NlZHVyZSBmb3IgU2luZ2xlLUF4aXMgTGFzZXIgR3lyb3M8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+U3BlY2lmaWNhdGlvbiBhbmQgdGVzdCByZXF1aXJlbWVudHMgZm9yIGEgc2luZ2xlLWF4aXMgcmluZyBsYXNlciBneXJvIChSTEcpIGZvciB1c2UgYXMgYQ0gc2Vuc29yIGluIGF0dGl0dWRlIGNvbnRyb2wgc3lzdGVtcywgYW5ndWxhciBkaXNwbGFjZW1lbnQgbWVhc3VyaW5nIHN5c3RlbXMsIGFuZCBhbmd1bGFyIHJhdGUNIG1lYXN1cmluZyBzeXN0ZW1zIGFyZSBkZWZpbmVkLiBBIHN0YW5kYXJkIHNwZWNpZmljYXRpb24gZm9ybWF0IGd1aWRlIGZvciB0aGUgcHJlcGFyYXRpb24gb2YgYQ0gc2luZ2xlLWF4aXMgUkxHIGlzIHByb3ZpZGVkLiBBIGNvbXBpbGF0aW9uIG9mIHJlY29tbWVuZGVkIHByb2NlZHVyZXMgZm9yIHRlc3RpbmcgYW4gUkxHLA0gZGVyaXZlZCBmcm9tIHRob3NlIHByZXNlbnRseSB1c2VkIGluIHRoZSBpbmR1c3RyeSwgaXMgYWxzbyBwcm92aWRlZC48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS05IHJpZ2h0LXNlY3Rpb24taW5mbyIgdmVydGljbGUtYWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGNsYXNzPSJidG4tc3R5bGUgSW5hY3RpdmUtUmVzZXJ2ZWQiPkluYWN0aXZlLVJlc2VydmVkPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSBocmVmPSIvc3RhbmRhcmQvODM2LTIwMDkuaHRtbCIgY2xhc3M9ImxpbmsiPjgzNi0yMDA5IC0gSUVFRSBSZWNvbW1lbmRlZCBQcmFjdGljZSBmb3IgUHJlY2lzaW9uIENlbnRyaWZ1Z2UgVGVzdGluZyBvZiBMaW5lYXIgQWNjZWxlcm9tZXRlcnM8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+VGhpcyByZWNvbW1lbmRlZCBwcmFjdGljZSBkZXNjcmliZXMgdGhlIGNvbmR1Y3QgYW5kIGFuYWx5c2lzIG9mIHByZWNpc2lvbiB0ZXN0cyB0aGF0IGFyZSB0byBiZSBwZXJmb3JtZWQgb24gbGluZWFyIGFjY2VsZXJvbWV0ZXJzIHVzaW5nIGNlbnRyaWZ1Z2UgdGVjaG5pcXVlcy4gVGhlIHRlcm0gP3ByZWNpc2lvbiw/IGluIHRoaXMgY29udGV4dCwgcmVmZXJzIHRvIHRlc3RzIHRoYXQgYXJlIGNvbmR1Y3RlZCB0byBldmFsdWF0ZSBhY2NlbGVyb21ldGVyIHBhcmFtZXRlcnMsIGFzIG9wcG9zZWQgdG8gdGhvc2UgY29uZHVjdGVkIHRvIGVzdGFibGlzaCBlbnZpcm9ubWVudGFsIHN1cnZpdmFiaWxpdHkgb25seS4gRXZhbHVhdGlvbiBtYXkgdGFrZSB0aGUgZm9ybSBvZiBkZXRlcm1pbmluZyB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSBhY2NlbGVyb21ldGVyP3MgbW9kZWwgZXF1YXRpb24sIGV4Y2VwdCBmb3IgYmlhcyBhbmQgc2NhbGUgZmFjdG9yLCB3aGljaCBhcmUgbW9zdCBhY2N1cmF0ZWx5IGRldGVybWluZWQgYnkgc3RhdGljIG11bHRpLXBvc2l0aW9uIHRlc3RzLiBBbHRlcm5hdGl2ZWx5LCBldmFsdWF0aW9uIG1heSBvbmx5IGVzdGFibGlzaCB0aGF0IHRoZSBhY2NlbGVyb21ldGVyIG91dHB1dCBjb21wbGllcyB3aXRoIHNwZWNpZmljIGVycm9yIGxpbWl0IGNyaXRlcmlhLjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+Cjx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTMgbGVmdC10aXRsZSIgdmVydGljbGUtYWxpZ249InRvcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTkgcmlnaHQtc2VjdGlvbi1pbmZvIiB2ZXJ0aWNsZS1hbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGEgY2xhc3M9ImJ0bi1zdHlsZSBBY3RpdmUiPkFjdGl2ZTwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGEgaHJlZj0iL3N0YW5kYXJkLzE0MzEtMjAwNC5odG1sIiBjbGFzcz0ibGluayI+MTQzMS0yMDA0IC0gSUVFRSBTdGFuZGFyZCBTcGVjaWZpY2F0aW9uIEZvcm1hdCBHdWlkZSBhbmQgVGVzdCBQcm9jZWR1cmUgZm9yIENvcmlvbGlzIFZpYnJhdG9yeSBHeXJvczwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5TcGVjaWZpY2F0aW9uIGFuZCB0ZXN0IHJlcXVpcmVtZW50cyBmb3IgYSBzaW5nbGUtYXhpcyBDb3Jpb2xpcyB2aWJyYXRvcnkgZ3lybyAoQ1ZHKSBmb3IgdXNlIGFzIGEgc2Vuc29yIGluIGF0dGl0dWRlIGNvbnRyb2wgc3lzdGVtcywgYW5ndWxhciBkaXNwbGFjZW1lbnQgbWVhc3VyaW5nIHN5c3RlbXMsIGFuZCBhbmd1bGFyIHJhdGUgbWVhc3VyaW5nIHN5c3RlbXMgYXJlIGRlZmluZWQuIEEgc3RhbmRhcmQgc3BlY2lmaWNhdGlvbiBmb3JtYXQgZ3VpZGUgZm9yIHRoZSBwcmVwYXJhdGlvbiBvZiBhIHNpbmdsZS1heGlzIENWRyBpcyBwcm92aWRlZC4gQSBjb21waWxhdGlvbiBvZiByZWNvbW1lbmRlZCBwcm9jZWR1cmVzIGZvciB0ZXN0aW5nIGEgQ1ZHLCBkZXJpdmVkIGZyb20gdGhvc2UgcHJlc2VudGx5IHVzZWQgaW4gdGhlIGluZHVzdHJ5LCBpcyBhbHNvIHByb3ZpZGVkLiBJbmZvcm1hdGl2ZSBhbm5leGVzIGNvdmVyIENWRyBkZXNpZ24gZmVhdHVyZXMgYW5kIHRoZW9yZXRpY2FsIHByaW5jaXBsZXMgb2Ygb3BlcmF0aW9uLjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+Cjx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTMgbGVmdC10aXRsZSIgdmVydGljbGUtYWxpZ249InRvcCI+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJjb2wteHMtMTIgY29sLXNtLTkgcmlnaHQtc2VjdGlvbi1pbmZvIiB2ZXJ0aWNsZS1hbGlnbj0idG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGEgY2xhc3M9ImJ0bi1zdHlsZSBTdXBlcnNlZGVkIj5TdXBlcnNlZGVkPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSBocmVmPSIvc3RhbmRhcmQvMTI5My0xOTk4LUNvcjEtMjAwOC5odG1sIiBjbGFzcz0ibGluayI+MTI5My0xOTk4L0NvciAxLTIwMDggLSBJRUVFIFN0YW5kYXJkIFNwZWNpZmljYXRpb24gRm9ybWF0IEd1aWRlIGFuZCBUZXN0IFByb2NlZHVyZSBmb3IgTGluZWFyLFNpbmdsZS1BeGlzLCBOb25neXJvc2NvcGljIEFjY2VsZXJvbWV0ZXJzIENvcnJpZ2VuZHVtIDE6IENoYW5nZXMgdG8gQW5uZXggSyBhbmQgQW5uZXggTDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5Db3JyaWdlbmR1bSB0byBJRUVFIFN0ZCAxMjkzLTE5OTguIFNwZWNpZmljYXRpb24gYW5kIHRlc3QgcmVxdWlyZW1lbnRzIGZvciBsaW5lYXIsIHNpbmdsZS1heGlzLCBub25neXJvc2NvcGljIGFjY2VsZXJvbWV0ZXJzIGZvciB1c2UgYXMgYSBzZW5zb3IgaW4gYXR0aXR1ZGUgY29udHJvbCBzeXN0ZW1zLCBsaW5lYXIgZGlzcGxhY2VtZW50IG1lYXN1cmluZyBzeXN0ZW1zLCBhbmQgbGluZWFyIHJhdGUgbWVhc3VyaW5nIHN5c3RlbXMgYXJlIGRlZmluZWQuIFRoZSBzcGVjaWZpY2F0aW9uIGZvcm1hdCBndWlkZSBhbmQgdGVzdCBwcm9jZWR1cmUgc3RhbmRhcmQgYXBwbGllcyB0byBmb3JjZS1yZWJhbGFuY2UgYWNjZWxlcm9tZXRlcnMgKHBlbmR1bG91cyBvciB0cmFuc2xhdGlvbmFsIHByb29mDQptYXNzKSwgdmlicmF0aW5nIGJlYW0gYWNjZWxlcm9tZXRlcnMgKFZCQXMpLCBhbmQgbWljcm9tZWNoYW5pY2FsIGFjY2VsZXJvbWV0ZXJzIHRoYXQgcmFuZ2UNCmZyb20gbGVzc2VyIGFjY3VyYWN5IHRvIGhpZ2ggYWNjdXJhY3kgZGV2aWNlcy48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS05IHJpZ2h0LXNlY3Rpb24taW5mbyIgdmVydGljbGUtYWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGNsYXNzPSJidG4tc3R5bGUgQWN0aXZlIj5BY3RpdmU8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGhyZWY9Ii9zdGFuZGFyZC8xNDMxLTIwMDQtQ29yMS0yMDA4Lmh0bWwiIGNsYXNzPSJsaW5rIj4xNDMxLTIwMDQvQ29yIDEtMjAwOCAtIElFRUUgU3RhbmRhcmQgU3BlY2lmaWNhdGlvbiBGb3JtYXQgR3VpZGUgYW5kIFRlc3QgUHJvY2VkdXJlIGZvciBDb3Jpb2xpcyBWaWJyYXRvcnkgR3lyb3MgLSBDb3JyaWdlbmR1bSAxPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PkNvcnJpZ2VuZHVtIHRvIElFRUUgU3RkIDE0MzEtMjAwNC4gDQo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS05IHJpZ2h0LXNlY3Rpb24taW5mbyIgdmVydGljbGUtYWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGNsYXNzPSJidG4tc3R5bGUgQWN0aXZlIj5BY3RpdmU8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGhyZWY9Ii9zdGFuZGFyZC82NzEtMTk4NS1Db3IxLTIwMTAuaHRtbCIgY2xhc3M9ImxpbmsiPjY3MS0xOTg1L0NvciAxLTIwMTAgLSBJRUVFIFN0YW5kYXJkIFNwZWNpZmljYXRpb24gRm9ybWF0IEd1aWRlIGFuZCBUZXN0IFByb2NlZHVyZSBmb3IgTm9uZ3lyb3Njb3BpYyBJbmVydGlhbCBBbmd1bGFyIFNlbnNvcnM6IEplcmssIEFjY2VsZXJhdGlvbiwgVmVsb2NpdHksIGFuZCBEaXNwbGFjZW1lbnQgQ29ycmlnZW5kdW0gMTogNC43LjIuNiBTaG9ydC1UZXJtIFN0YWJpbGl0eSBhbmQgQW5uZXggQSBTZW5zb3IgRHluYW1pYyBCbG9jayBEaWFncmFtczwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5JRUVFIFN0ZCA2NzEtMTk4NSBwcm92aWRlcyBzcGVjaWZpY2F0aW9ucyBhbmQgdGVzdCByZXF1aXJlbWVudHMgZm9yIGEgbm9uLWd5cm9zY29waWMgaW5lcnRpYWwgYW5ndWxhciBzZW5zb3IgdGhhdCBtYXkgbWVhc3VyZSBhbmd1bGFyIGplcmssIGFjY2VsZXJhdGlvbiwgcmF0ZSwgb3IgZGlzcGxhY2VtZW50IHdpdGggb3Igd2l0aG91dCByZXNwb25zZSBkb3duIHRvIHplcm8gZnJlcXVlbmN5LiBBIHN0YW5kYXJkIHNwZWNpZmljYXRpb24gZm9ybWF0IGlzIHByb3ZpZGVkLiBBIGNvbXBpbGF0aW9uIG9mIHJlY29tbWVuZGVkIHRlc3QgcHJvY2VkdXJlcywgZGVyaXZlZCBmcm9tIHRob3NlIHByZXNlbnRseSB1c2VkIGluIHRoZSBpbmR1c3RyeSwgaXMgYWxzbyBwcm92aWRlZC4gSW5mb3JtYXRpdmUgYW5uZXhlcyBjb3ZlciBkZXNpZ24gZmVhdHVyZXMgYW5kIHRoZW9yZXRpY2FsIHByaW5jaXBsZXMgb2Ygb3BlcmF0aW9uLg0KVGhpcyBjb3JyaWdlbmR1bSBtYWtlcyBjaGFuZ2VzIHRvIDQuNy4yLjYgdG8gZGVsZXRlIGEgc2VudGVuY2UgdGhhdCBkb2VzIG5vdCBiZWxvbmcgdGhlcmUsIHRvIGFkZCBhIHN1YmNsYXVzZSB0aGF0IHdhcyBpbmFkdmVydGVudGx5IGxlZnQgb3V0LCBhbmQgdG8gcmVudW1iZXIgdGhlIGV4aXN0aW5nIHN1YmNsYXVzZXMuIENoYW5nZXMgYXJlIGFsc28gYmVpbmcgbWFkZSB0byBmaXggdGhlIGJsb2NrIGRpYWdyYW1zIGluIEFubmV4IEEsIHRvIGNvcnJlY3QgYSBtaXNzcGVsbGluZyBvZiBpbmVydGlhLCBhbmQgdG8gYWRkIGEgbWlzc2luZyBzeW1ib2wuDQo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS05IHJpZ2h0LXNlY3Rpb24taW5mbyIgdmVydGljbGUtYWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGNsYXNzPSJidG4tc3R5bGUgQWN0aXZlIj5BY3RpdmU8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGhyZWY9Ii9zdGFuZGFyZC8xMjkzLTIwMTguaHRtbCIgY2xhc3M9ImxpbmsiPjEyOTMtMjAxOCAtIElFRUUgU3RhbmRhcmQgU3BlY2lmaWNhdGlvbiBGb3JtYXQgR3VpZGUgYW5kIFRlc3QgUHJvY2VkdXJlIGZvciBMaW5lYXIgU2luZ2xlLUF4aXMsIE5vbmd5cm9zY29waWMgQWNjZWxlcm9tZXRlcnM8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+VGhlIHNwZWNpZmljYXRpb24gYW5kIHRlc3QgcmVxdWlyZW1lbnRzIGZvciBhIGxpbmVhciwgc2luZ2xlLWF4aXMsIG5vbmd5cm9zY29waWMgYWNjZWxlcm9tZXRlciBmb3IgdXNlIGluIGluZXJ0aWFsIG5hdmlnYXRpb24sIGd1aWRhbmNlLCBhbmQgbGV2ZWxpbmcgc3lzdGVtcyBhcmUgZGVmaW5lZC4gQSBzdGFuZGFyZCBzcGVjaWZpY2F0aW9uIGd1aWRlIGFuZCBhIGNvbXBpbGF0aW9uIG9mIHJlY29tbWVuZGVkIHRlc3QgcHJvY2VkdXJlcyBmb3Igc3VjaCBhY2NlbGVyb21ldGVycyBhcmUgcHJvdmlkZWQuIEluZm9ybWF0aXZlIGFubmV4ZXMgYXJlIGdpdmVuIG9uIHRoZSB2YXJpb3VzIHR5cGVzIG9mIHN1Y2ggYWNjZWxlcm9tZXRlcnMgKGZvcmNlIG9yIHBlbmR1bG91cyB0b3JxdWUgcmViYWxhbmNlIHdpdGggYW5hbG9nIG9yIGRpZ2l0YWwgb3V0cHV0LCB2aWJyYXRpbmcgYmVhbSwgYW5kIG1pY3JvbWVjaGFuaWNhbCkgYW5kIGVycm9yIGVmZmVjdHMsIG9uIGZpbHRlcmluZywgbm9pc2UsIGFuZCB0cmFuc2llbnQgYW5hbHlzaXMgdGVjaG5pcXVlcywgYW5kIG9uIGNhbGlicmF0aW9uIGFuZCBtb2RlbGluZyB0ZWNobmlxdWVzIChtdWx0aXBvaW50IHR1bWJsZSBhbmFseXNpcywgdmlicmF0aW9uIGFuZA0Kc2hvY2sgdGVzdCBhbmFseXNlcywgYW5kIGdlb3BoeXNpY2FsIGVmZmVjdHMgaW4gaW5lcnRpYWwgaW5zdHJ1bWVudCB0ZXN0aW5nKS48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS05IHJpZ2h0LXNlY3Rpb24taW5mbyIgdmVydGljbGUtYWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGNsYXNzPSJidG4tc3R5bGUgQWN0aXZlIj5BY3RpdmU8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGhyZWY9Ii9zdGFuZGFyZC8yOTMtMTk2OS1Db3IxLTIwMTQuaHRtbCIgY2xhc3M9ImxpbmsiPjI5My0xOTY5L0NvciAxLTIwMTQgLSBJRUVFIFN0YW5kYXJkIGZvciBJRUVFIFRlc3QgUHJvY2VkdXJlIGZvciBTaW5nbGUtRGVncmVlLW9mLUZyZWVkb20gU3ByaW5nLVJlc3RyYWluZWQgUmF0ZSBHeXJvcyAtLSBDb3JyaWdlbmR1bSAxOiBUYWJsZSAxIEhlYWRpbmc8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+Q29ycmVjdGlvbiB0byBUYWJsZSAxIG9uIHBhZ2UgMTQgb2YgSUVFRSBTdGQgMjkzLTE5Njk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8L3RyPgo8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS0zIGxlZnQtdGl0bGUiIHZlcnRpY2xlLWFsaWduPSJ0b3AiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iY29sLXhzLTEyIGNvbC1zbS05IHJpZ2h0LXNlY3Rpb24taW5mbyIgdmVydGljbGUtYWxpZ249InRvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGNsYXNzPSJidG4tc3R5bGUgQWN0aXZlIj5BY3RpdmU8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIGhyZWY9Ii9zdGFuZGFyZC81MjktMTk4MC1Db3IxLTIwMTcuaHRtbCIgY2xhc3M9ImxpbmsiPjUyOS0xOTgwL0NvciAxLTIwMTcgLSBJRUVFIFN0YW5kYXJkIFN1cHBsZW1lbnQgZm9yIFN0cmFwZG93biBBcHBsaWNhdGlvbnMgdG8gSUVFRSBTdGFuZGFyZCBTcGVjaWZpY2F0aW9uIEZvcm1hdCBHdWlkZSBhbmQgVGVzdCBQcm9jZWR1cmUgZm9yIFNpbmdsZS1EZWdyZWUtb2YtRnJlZWRvbSBSYXRlLUludGVncmF0aW5nIEd5cm9zIC0gQ29ycmlnZW5kdW0gMTogMy4zLjkuMi4yLCAzLjYuNC4xLjEsIDMuNi40LjEuMiwgNi4zLCBhbmQgMTAuMTAuNC4xPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PkNvcnJlY3Rpb25zIGFyZSBtYWRlIGJ5IHRoaXMgY29ycmlnZW5kdW0gdG8gbWF0ZXJpYWwgYWxyZWFkeSBwdWJsaXNoZWQgaW4gSUVFRSBTdGQgNTI5LTE5ODAuPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbC14cy0xMiBjb2wtc20tMyBsZWZ0LXRpdGxlIiB2ZXJ0aWNsZS1hbGlnbj0idG9wIj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImNvbC14cy0xMiBjb2wtc20tOSByaWdodC1zZWN0aW9uLWluZm8iIHZlcnRpY2xlLWFsaWduPSJ0b3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSBjbGFzcz0iYnRuLXN0eWxlIEFjdGl2ZSI+QWN0aXZlPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSBocmVmPSIvc3RhbmRhcmQvOTUyLTE5OTctQ29yMS0yMDE2Lmh0bWwiIGNsYXNzPSJsaW5rIj45NTItMTk5Ny9Db3IgMS0yMDE2IC0gSUVFRSBTdGFuZGFyZCBTcGVjaWZpY2F0aW9uIEZvcm1hdCBHdWlkZSBhbmQgVGVzdCBQcm9jZWR1cmUgZm9yIFNpbmdsZS1BeGlzIEludGVyZmVyb21ldHJpYyBGaWJlciBPcHRpYyBHeXJvcyAtLSBDb3JyaWdlbmR1bSAxOiBGaWd1cmUgMSBhbmQgU3ViY2xhdXNlcyA1LjMuNCwgOC4zLCAxMi4xMS40LjMuMiwgMTIuMTEuNC4zLjMsIDEyLjExLjQuMy40LCAxMi4xMi4zLjEsIGFuZCAxMi4xMi40LjE8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+RXJyb3JzIGlkZW50aWZpZWQgaW4gSUVFRSBTdGQgOTUyLTE5OTcgYXJlIGNvcnJlY3RlZCBpbiB0aGlzIGNvcnJpZ2VuZHVtLiBDb3JyZWN0aW9ucyBhcmUgbWFkZSB0byBGaWd1cmUgMSBhbmQgaW4gc3ViY2xhdXNlcyA1LjMuNCwgOC4zLCAxMi4xMS40LjMuMiwgMTIuMTEuNC4zLjMsIDEyLjExLjQuMy40LCAxMi4xMi4zLjEsIGFuZCAxMi4xMi40LjEuPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KCiAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+Cgo8IS0tICNkeW5hbWljLXdvcmtpbmctZ3JvdXAtZGV0YWlscy1jb250ZW50IGVuZCAtLT4KCgkJCQkJPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCQ0KDQo8ZGl2IGNsYXNzPSJhZW0tR3JpZCBhZW0tR3JpZC0tMTIgYWVtLUdyaWQtLWRlZmF1bHQtLTEyICI+DQogICAgDQogICAgDQogICAgDQo8L2Rpdj4KPC9kaXY+CjwhLS0gI2wyLXN0YW5kYXJkLXByb2plY3QtcGFnZS1jb250YWluZXIgZW5kcyAtLT4KCgkgICAgDQoNCjwhLS0gRm9vdGVyDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQo8Zm9vdGVyIGlkPSJwYWdlLWZvb3RlciI+DQogICAgDQoNCg0KDQogICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgPGRpdiBjbGFzcz0ibmV3cGFyIG5ldyBzZWN0aW9uIj4NCg0KPC9kaXY+Cg0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIDxkaXYgY2xhc3M9InBhciBpcGFyeXNfaW5oZXJpdGVkIj4NCg0KICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1jb250YWluZXIiPgo8IS0tIEZvb3RlciBDb250ZW50CiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4gIAo8ZGl2IGNsYXNzPSJmb290ZXIgdG9wLWZvb3Rlci13cmFwcGVyIj4KICAgCiAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9InJvdyAiPgogICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItdG9wLXNlY3Rpb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tNiBjb2wtbWQtNiAiPgogICAgICAgICAgICAgICANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCjwhLS0gUmVzcG9uc2l2ZSBJbWFnZSBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQo8ZGl2IGNsYXNzPSJyZXNwb25zaXZlLWltZyI+DQogICAgDQoNCiAgICANCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuaWVlZS5vcmcvIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9IndpZHRoOjEwMCUiPg0KICAgICAgICAgICAgPGltZyBzcmM9Ii9jb250ZW50L2RhbS9pZWVlLXN0YW5kYXJkcy9zdGFuZGFyZHMvd2ViL3Zpc3VhbHMvbG9nb3MvaWVlZS1sb2dvLWZvb3Rlci5naWYiIGNsYXNzPSJpbWctcmVzcG9uc2l2ZSIgYWx0PSJJRUVFIExvZ28iPg0KICAgICAgICAgICAgPC9pbWc+DQogICAgICAgIDwvYT4NCiAgICANCiAgICANCjwvZGl2Pg0KPCEtLSBFbmQgUmVzcG9uc2UgSW1hZ2UgQ29udGVudCAtLT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02IGhpZGRlbi14cyB0ZXh0LXJpZ2h0Ij4KICAgICAgICAgICAgICAgCgoKCgoKCgoKCjwhLS0gU29jaWFsIE1lZGlhIENvbnRhaW5lciBDb250ZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgICAKICAgIDxkaXYgY2xhc3M9InNvY2lhbG1lZGlhIj4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIAoKCgoKCgoKCgo8IS0tU29jaWFsIE1lZGlhIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIDxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vaWVlZXNhIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgPGkgY2xhc3M9ImZhYiBmYS10d2l0dGVyIj48L2k+CiAgICA8L2E+CgoKCgo8IS0tICNzb2NpYWwtbWVkaWEtY29udGVudCBlbmQgLS0+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgCiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIAoKCgoKCgoKCgo8IS0tU29jaWFsIE1lZGlhIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9pZWVlc2EvIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgPGkgY2xhc3M9ImZhYiBmYS1mYWNlYm9vay1mIj48L2k+CiAgICA8L2E+CgoKCgo8IS0tICNzb2NpYWwtbWVkaWEtY29udGVudCBlbmQgLS0+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgCiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIAoKCgoKCgoKCgo8IS0tU29jaWFsIE1lZGlhIENvbnRlbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9ncm91cHMvMTc5MTExOCIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgIDxpIGNsYXNzPSJmYWIgZmEtbGlua2VkaW4taW4iPjwvaT4KICAgIDwvYT4KCgoKCjwhLS0gI3NvY2lhbC1tZWRpYS1jb250ZW50IGVuZCAtLT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAKICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgCgoKCgoKCgoKCjwhLS1Tb2NpYWwgTWVkaWEgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9pZWVlc2EvIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgPGkgY2xhc3M9ImZhYiBmYS1pbnN0YWdyYW0iPjwvaT4KICAgIDwvYT4KCgoKCjwhLS0gI3NvY2lhbC1tZWRpYS1jb250ZW50IGVuZCAtLT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAKICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgCgoKCgoKCgoKCjwhLS1Tb2NpYWwgTWVkaWEgQ29udGVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CgogICAgPGEgaHJlZj0iaHR0cDovL3d3dy55b3V0dWJlLmNvbS9pZWVlc2EiIHRhcmdldD0iX2JsYW5rIj4KICAgICAgICA8aSBjbGFzcz0iZmFiIGZhLXlvdXR1YmUiPjwvaT4KICAgIDwvYT4KCgoKCjwhLS0gI3NvY2lhbC1tZWRpYS1jb250ZW50IGVuZCAtLT4KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgogICAgPC9kaXY+Cgo8IS0tI1NvY2lhbC1tZWRpYS1jb250YWluZXIgY29udGVudCBlbmQtLT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItbGlua3MtaW5mbyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cy02IGNvbC1zbS0zIGNvbC1tZC0zIGNvbC1sZy0yIj4KICAgICAgICAgICAgICAgCiAKCgo8IS0tIEZvb3RlciBDb2x1bW4gU2VjdGlvbiBDb250ZW50CiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgIDxkaXYgY2xhc3M9ImZvb3QtdGl0bGUiPkFib3V0PC9kaXY+CiAgIAogICAKICAgDQoNCg0KDQoNCg0KICAgICAgICAgDQoNCg0KDQo8IS0tIExpbmsgTGlzdCBDb250YWluZXIgQ29udGVudA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KDQogICAgDQogICAgPHVsIGNsYXNzPSJsaW5rLWxpc3QiPg0KICAgICAgICANCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8bGk+DQogICAgICAgIDxhIGhyZWY9Ii9hYm91dC5odG1sIiB0YXJnZXQ9Il9zZWxmIj4NCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhcnJvdy1yaWdodCI+PGkgY2xhc3M9ImZhIGZhLWFuZ2xlLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvc3Bhbj5BYm91dCBVcw0KICAgICAgICA8L2E+DQogICAgPC9saT4NCg0KPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4NCg0KICAgIA0KICAgICAgICANCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8bGk+DQogICAgICAgIDxhIGhyZWY9Ii9hYm91dC9jb3JwY2hhbi5odG1sIiB0YXJnZXQ9Il9zZWxmIj4NCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhcnJvdy1yaWdodCI+PGkgY2xhc3M9ImZhIGZhLWFuZ2xlLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvc3Bhbj5Db3Jwb3JhdGUgUHJvZ3JhbQ0KICAgICAgICA8L2E+DQogICAgPC9saT4NCg0KPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4NCg0KICAgIA0KICAgICAgICANCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8bGk+DQogICAgICAgIDxhIGhyZWY9Ii9hYm91dC9kaXN0cmliLmh0bWwiIHRhcmdldD0iX3NlbGYiPg0KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFycm93LXJpZ2h0Ij48aSBjbGFzcz0iZmEgZmEtYW5nbGUtcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9zcGFuPkRpc3RyaWJ1dG9yIFByb2dyYW0NCiAgICAgICAgPC9hPg0KICAgIDwvbGk+DQoNCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+DQoNCiAgICANCiAgICAgICAgDQoNCg0KDQoNCg0KICAgICAgICAgDQoNCg0KDQo8IS0tIExpbmsgQ29udGVudA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KDQogICAgPGxpPg0KICAgICAgICA8YSBocmVmPSIvYWJvdXQvaW50bC5odG1sIiB0YXJnZXQ9Il9zZWxmIj4NCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhcnJvdy1yaWdodCI+PGkgY2xhc3M9ImZhIGZhLWFuZ2xlLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvc3Bhbj5HbG9iYWwgRW5nYWdlbWVudA0KICAgICAgICA8L2E+DQogICAgPC9saT4NCg0KPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4NCg0KICAgIA0KICAgICAgICANCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8bGk+DQogICAgICAgIDxhIGhyZWY9Ii9hYm91dC9wb2xpY2llcy5odG1sIiB0YXJnZXQ9Il9zZWxmIj4NCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhcnJvdy1yaWdodCI+PGkgY2xhc3M9ImZhIGZhLWFuZ2xlLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvc3Bhbj5Qb2xpY2llcyAmYW1wOyBQcm9jZWR1cmVzDQogICAgICAgIDwvYT4NCiAgICA8L2xpPg0KDQo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPg0KDQogICAgDQogICAgICAgIA0KDQoNCg0KDQoNCiAgICAgICAgIA0KDQoNCg0KPCEtLSBMaW5rIENvbnRlbnQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCg0KPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4NCg0KICAgIA0KICAgICAgICANCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8bGk+DQogICAgICAgIDxhIGhyZWY9Ii9mYXFzLmh0bWwiIHRhcmdldD0iX3NlbGYiPg0KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFycm93LXJpZ2h0Ij48aSBjbGFzcz0iZmEgZmEtYW5nbGUtcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9zcGFuPkZBUXMNCiAgICAgICAgPC9hPg0KICAgIDwvbGk+DQoNCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+DQoNCiAgICANCiAgICAgICAgDQoNCg0KDQoNCg0KICAgICAgICAgDQoNCg0KDQo8IS0tIExpbmsgQ29udGVudA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KDQogICAgPGxpPg0KICAgICAgICA8YSBocmVmPSIvYWJvdXQvY29udGFjdC5odG1sIiB0YXJnZXQ9Il9zZWxmIj4NCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhcnJvdy1yaWdodCI+PGkgY2xhc3M9ImZhIGZhLWFuZ2xlLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvc3Bhbj5Db250YWN0IFVzDQogICAgICAgIDwvYT4NCiAgICA8L2xpPg0KDQo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPg0KDQogICAgPC91bD4NCg0KPCEtLSAjbGluay1saXN0LWNvbnRhaW5lci1jb250ZW50IGVuZCAtLT4NCgoKPCEtLSAjZm9vdGVyLWNvbHVtbi1zZWN0aW9uLWNvbnRlbnQgZW5kIC0tPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTYgY29sLXNtLTMgY29sLW1kLTMgY29sLWxnLTIiPgogICAgICAgICAgICAgICAKIAoKCjwhLS0gRm9vdGVyIENvbHVtbiBTZWN0aW9uIENvbnRlbnQKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgoKICAgPGRpdiBjbGFzcz0iZm9vdC10aXRsZSI+Qm9hcmQgb2YgR292ZXJub3JzIChCb0cpPC9kaXY+CiAgIAogICAKICAgDQoNCg0KDQoNCg0KICAgICAgICAgDQoNCg0KDQo8IS0tIExpbmsgTGlzdCBDb250YWluZXIgQ29udGVudA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KDQogICAgDQogICAgPHVsIGNsYXNzPSJsaW5rLWxpc3QiPg0KICAgICAgICANCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8bGk+DQogICAgICAgIDxhIGhyZWY9Ii9hYm91dC9ib2cuaHRtbCIgdGFyZ2V0PSJfc2VsZiI+DQogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXJyb3ctcmlnaHQiPjxpIGNsYXNzPSJmYSBmYS1hbmdsZS1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L3NwYW4+QWJvdXQgdGhlIEJPRw0KICAgICAgICA8L2E+DQogICAgPC9saT4NCg0KPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4NCg0KICAgIA0KICAgICAgICANCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8bGk+DQogICAgICAgIDxhIGhyZWY9Ii9hYm91dC9ib2cvYXJjb20vaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiI+DQogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXJyb3ctcmlnaHQiPjxpIGNsYXNzPSJmYSBmYS1hbmdsZS1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L3NwYW4+QXdhcmRzIENvbW1pdHRlZQ0KICAgICAgICA8L2E+DQogICAgPC9saT4NCg0KPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4NCg0KICAgIA0KICAgICAgICANCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8bGk+DQogICAgICAgIDxhIGhyZWY9Ii9hYm91dC9ib2cvY2FnLmh0bWwiIHRhcmdldD0iX3NlbGYiPg0KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFycm93LXJpZ2h0Ij48aSBjbGFzcz0iZmEgZmEtYW5nbGUtcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9zcGFuPkNvcnAuIEFkdmlzb3J5IEdyb3VwDQogICAgICAgIDwvYT4NCiAgICA8L2xpPg0KDQo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPg0KDQogICAgDQogICAgICAgIA0KDQoNCg0KDQoNCiAgICAgICAgIA0KDQoNCg0KPCEtLSBMaW5rIENvbnRlbnQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCg0KICAgIDxsaT4NCiAgICAgICAgPGEgaHJlZj0iL2Fib3V0L2JvZy9yYWMuaHRtbCIgdGFyZ2V0PSJfc2VsZiI+DQogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXJyb3ctcmlnaHQiPjxpIGNsYXNzPSJmYSBmYS1hbmdsZS1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L3NwYW4+UmVnLiBBdXRoLiBDb21taXR0ZWUNCiAgICAgICAgPC9hPg0KICAgIDwvbGk+DQoNCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+DQoNCiAgICANCiAgICAgICAgDQoNCg0KDQoNCg0KICAgICAgICAgDQoNCg0KDQo8IS0tIExpbmsgQ29udGVudA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KDQogICAgPGxpPg0KICAgICAgICA8YSBocmVmPSIvYWJvdXQvYm9nL3NwY2MvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiI+DQogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXJyb3ctcmlnaHQiPjxpIGNsYXNzPSJmYSBmYS1hbmdsZS1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L3NwYW4+U1BDQw0KICAgICAgICA8L2E+DQogICAgPC9saT4NCg0KPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4NCg0KICAgIDwvdWw+DQoNCjwhLS0gI2xpbmstbGlzdC1jb250YWluZXItY29udGVudCBlbmQgLS0+DQoKCjwhLS0gI2Zvb3Rlci1jb2x1bW4tc2VjdGlvbi1jb250ZW50IGVuZCAtLT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cy02IGNvbC1zbS0zIGNvbC1tZC0zIGNvbC1sZy0yIj4KICAgICAgICAgICAgICAgCiAKCgo8IS0tIEZvb3RlciBDb2x1bW4gU2VjdGlvbiBDb250ZW50CiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgIDxkaXYgY2xhc3M9ImZvb3QtdGl0bGUiPlN0YW5kYXJkcyBCb2FyZCAoU0FTQik8L2Rpdj4KICAgCiAgIAogICANCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBMaXN0IENvbnRhaW5lciBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICANCiAgICA8dWwgY2xhc3M9ImxpbmstbGlzdCI+DQogICAgICAgIA0KDQoNCg0KDQoNCiAgICAgICAgIA0KDQoNCg0KPCEtLSBMaW5rIENvbnRlbnQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCg0KICAgIDxsaT4NCiAgICAgICAgPGEgaHJlZj0iL2Fib3V0L3Nhc2IuaHRtbCIgdGFyZ2V0PSJfc2VsZiI+DQogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXJyb3ctcmlnaHQiPjxpIGNsYXNzPSJmYSBmYS1hbmdsZS1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L3NwYW4+QWJvdXQgdGhlIFNBU0INCiAgICAgICAgPC9hPg0KICAgIDwvbGk+DQoNCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+DQoNCiAgICANCiAgICAgICAgDQoNCg0KDQoNCg0KICAgICAgICAgDQoNCg0KDQo8IS0tIExpbmsgQ29udGVudA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KDQogICAgPGxpPg0KICAgICAgICA8YSBocmVmPSIvYWJvdXQvc2FzYi9zYmEuaHRtbCIgdGFyZ2V0PSJfc2VsZiI+DQogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXJyb3ctcmlnaHQiPjxpIGNsYXNzPSJmYSBmYS1hbmdsZS1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L3NwYW4+Qm9hcmQgQXBwcm92YWxzDQogICAgICAgIDwvYT4NCiAgICA8L2xpPg0KDQo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPg0KDQogICAgDQogICAgICAgIA0KDQoNCg0KDQoNCiAgICAgICAgIA0KDQoNCg0KPCEtLSBMaW5rIENvbnRlbnQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCg0KICAgIDxsaT4NCiAgICAgICAgPGEgaHJlZj0iL2Fib3V0L3Nhc2IvYXVkY29tLmh0bWwiIHRhcmdldD0iX3NlbGYiPg0KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFycm93LXJpZ2h0Ij48aSBjbGFzcz0iZmEgZmEtYW5nbGUtcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9zcGFuPkF1ZENvbQ0KICAgICAgICA8L2E+DQogICAgPC9saT4NCg0KPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4NCg0KICAgIA0KICAgICAgICANCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8bGk+DQogICAgICAgIDxhIGhyZWY9Ii9hYm91dC9zYXNiL2ljY29tLmh0bWwiIHRhcmdldD0iX3NlbGYiPg0KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFycm93LXJpZ2h0Ij48aSBjbGFzcz0iZmEgZmEtYW5nbGUtcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9zcGFuPklDQ29tDQogICAgICAgIDwvYT4NCiAgICA8L2xpPg0KDQo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPg0KDQogICAgDQogICAgICAgIA0KDQoNCg0KDQoNCiAgICAgICAgIA0KDQoNCg0KPCEtLSBMaW5rIENvbnRlbnQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCg0KICAgIDxsaT4NCiAgICAgICAgPGEgaHJlZj0iL2Fib3V0L3Nhc2IvbmVzY29tLmh0bWwiIHRhcmdldD0iX3NlbGYiPg0KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFycm93LXJpZ2h0Ij48aSBjbGFzcz0iZmEgZmEtYW5nbGUtcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9zcGFuPk5lc0NvbQ0KICAgICAgICA8L2E+DQogICAgPC9saT4NCg0KPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4NCg0KICAgIA0KICAgICAgICANCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8bGk+DQogICAgICAgIDxhIGhyZWY9Ii9hYm91dC9zYXNiL3BhdGNvbS5odG1sIiB0YXJnZXQ9Il9zZWxmIj4NCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhcnJvdy1yaWdodCI+PGkgY2xhc3M9ImZhIGZhLWFuZ2xlLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvc3Bhbj5QYXRDb20NCiAgICAgICAgPC9hPg0KICAgIDwvbGk+DQoNCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+DQoNCiAgICANCiAgICAgICAgDQoNCg0KDQoNCg0KICAgICAgICAgDQoNCg0KDQo8IS0tIExpbmsgQ29udGVudA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KDQogICAgPGxpPg0KICAgICAgICA8YSBocmVmPSIvYWJvdXQvc2FzYi9wcm9jb20uaHRtbCIgdGFyZ2V0PSJfc2VsZiI+DQogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXJyb3ctcmlnaHQiPjxpIGNsYXNzPSJmYSBmYS1hbmdsZS1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L3NwYW4+UHJvQ29tDQogICAgICAgIDwvYT4NCiAgICA8L2xpPg0KDQo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPg0KDQogICAgDQogICAgICAgIA0KDQoNCg0KDQoNCiAgICAgICAgIA0KDQoNCg0KPCEtLSBMaW5rIENvbnRlbnQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCg0KICAgIDxsaT4NCiAgICAgICAgPGEgaHJlZj0iL2Fib3V0L3Nhc2IvcmV2Y29tLmh0bWwiIHRhcmdldD0iX3NlbGYiPg0KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFycm93LXJpZ2h0Ij48aSBjbGFzcz0iZmEgZmEtYW5nbGUtcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9zcGFuPlJldkNvbQ0KICAgICAgICA8L2E+DQogICAgPC9saT4NCg0KPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4NCg0KICAgIDwvdWw+DQoNCjwhLS0gI2xpbmstbGlzdC1jb250YWluZXItY29udGVudCBlbmQgLS0+DQoKCjwhLS0gI2Zvb3Rlci1jb2x1bW4tc2VjdGlvbi1jb250ZW50IGVuZCAtLT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cy02IGNvbC1zbS0zIGNvbC1tZC0zIGNvbC1sZy0yIj4KICAgICAgICAgICAgICAgCiAKCgo8IS0tIEZvb3RlciBDb2x1bW4gU2VjdGlvbiBDb250ZW50CiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KCiAgIDxkaXYgY2xhc3M9ImZvb3QtdGl0bGUiPk5ld3MgJmFtcDsgRXZlbnRzPC9kaXY+CiAgIAogICAKICAgDQoNCg0KDQoNCg0KICAgICAgICAgDQoNCg0KDQo8IS0tIExpbmsgTGlzdCBDb250YWluZXIgQ29udGVudA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KDQogICAgDQogICAgPHVsIGNsYXNzPSJsaW5rLWxpc3QiPg0KICAgICAgICANCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8bGk+DQogICAgICAgIDxhIGhyZWY9Ii9ldmVudHMvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiI+DQogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXJyb3ctcmlnaHQiPjxpIGNsYXNzPSJmYSBmYS1hbmdsZS1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L3NwYW4+RXZlbnRzDQogICAgICAgIDwvYT4NCiAgICA8L2xpPg0KDQo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPg0KDQogICAgDQogICAgICAgIA0KDQoNCg0KDQoNCiAgICAgICAgIA0KDQoNCg0KPCEtLSBMaW5rIENvbnRlbnQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCg0KICAgIDxsaT4NCiAgICAgICAgPGEgaHJlZj0iL25ld3MvaW5kZXguaHRtbCIgdGFyZ2V0PSJfc2VsZiI+DQogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXJyb3ctcmlnaHQiPjxpIGNsYXNzPSJmYSBmYS1hbmdsZS1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L3NwYW4+TmV3cw0KICAgICAgICA8L2E+DQogICAgPC9saT4NCg0KPCEtLSAjbGluay1jb250ZW50IGVuZCAtLT4NCg0KICAgIA0KICAgICAgICANCg0KDQoNCg0KDQogICAgICAgICANCg0KDQoNCjwhLS0gTGluayBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8bGk+DQogICAgICAgIDxhIGhyZWY9Ii9uZXdzL3N0YW5kYXJkcy1mb2N1cy9pbmRleC5odG1sIiB0YXJnZXQ9Il9zZWxmIj4NCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhcnJvdy1yaWdodCI+PGkgY2xhc3M9ImZhIGZhLWFuZ2xlLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvc3Bhbj5TdGFuZGFyZHMgRm9jdXMNCiAgICAgICAgPC9hPg0KICAgIDwvbGk+DQoNCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+DQoNCiAgICANCiAgICAgICAgDQoNCg0KDQoNCg0KICAgICAgICAgDQoNCg0KDQo8IS0tIExpbmsgQ29udGVudA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KDQogICAgPGxpPg0KICAgICAgICA8YSBocmVmPSIvbmV3cy9zd2lyZS9pbmRleC5odG1sIiB0YXJnZXQ9Il9zZWxmIj4NCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhcnJvdy1yaWdodCI+PGkgY2xhc3M9ImZhIGZhLWFuZ2xlLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvc3Bhbj5TdGFuZGFyZHMgTmV3c3dpcmUNCiAgICAgICAgPC9hPg0KICAgIDwvbGk+DQoNCjwhLS0gI2xpbmstY29udGVudCBlbmQgLS0+DQoNCiAgICANCiAgICAgICAgDQoNCg0KDQoNCg0KICAgICAgICAgDQoNCg0KDQo8IS0tIExpbmsgQ29udGVudA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KDQo8IS0tICNsaW5rLWNvbnRlbnQgZW5kIC0tPg0KDQogICAgPC91bD4NCg0KPCEtLSAjbGluay1saXN0LWNvbnRhaW5lci1jb250ZW50IGVuZCAtLT4NCgoKPCEtLSAjZm9vdGVyLWNvbHVtbi1zZWN0aW9uLWNvbnRlbnQgZW5kIC0tPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC14cy0xMiB0ZXh0LWNlbnRlciBoaWRkZW4tc20gaGlkZGVuLW1kIGhpZGRlbi1sZyI+CiAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KPCEtLSBTb2NpYWwgTWVkaWEgQ29udGFpbmVyIENvbnRlbnQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCg0KICAgIA0KICAgIDxkaXYgY2xhc3M9InNvY2lhbG1lZGlhIj4NCiAgICAgICAgPHVsPg0KICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KPCEtLVNvY2lhbCBNZWRpYSBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL2llZWVzYSIgdGFyZ2V0PSJfYmxhbmsiPg0KICAgICAgICA8aSBjbGFzcz0iZmFiIGZhLXR3aXR0ZXIiPjwvaT4NCiAgICA8L2E+DQoNCg0KDQoNCjwhLS0gI3NvY2lhbC1tZWRpYS1jb250ZW50IGVuZCAtLT4NCiAgICAgICAgICAgIDwvbGk+DQogICAgICAgIA0KICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KPCEtLVNvY2lhbCBNZWRpYSBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8YSBocmVmPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vaWVlZXNhLyIgdGFyZ2V0PSJfYmxhbmsiPg0KICAgICAgICA8aSBjbGFzcz0iZmFiIGZhLWZhY2Vib29rLWYiPjwvaT4NCiAgICA8L2E+DQoNCg0KDQoNCjwhLS0gI3NvY2lhbC1tZWRpYS1jb250ZW50IGVuZCAtLT4NCiAgICAgICAgICAgIDwvbGk+DQogICAgICAgIA0KICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgIA0KDQoNCg0KDQoNCg0KDQoNCg0KPCEtLVNvY2lhbCBNZWRpYSBDb250ZW50DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQoNCiAgICA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vZ3JvdXBzLzE3OTExMTgiIHRhcmdldD0iX2JsYW5rIj4NCiAgICAgICAgPGkgY2xhc3M9ImZhYiBmYS1saW5rZWRpbi1pbiI+PC9pPg0KICAgIDwvYT4NCg0KDQoNCg0KPCEtLSAjc29jaWFsLW1lZGlhLWNvbnRlbnQgZW5kIC0tPg0KICAgICAgICAgICAgPC9saT4NCiAgICAgICAgDQogICAgICAgICAgICA8bGk+DQogICAgICAgICAgICAgICAgDQoNCg0KDQoNCg0KDQoNCg0KDQo8IS0tU29jaWFsIE1lZGlhIENvbnRlbnQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCg0KICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vaWVlZXNhLyIgdGFyZ2V0PSJfYmxhbmsiPg0KICAgICAgICA8aSBjbGFzcz0iZmFiIGZhLWluc3RhZ3JhbSI+PC9pPg0KICAgIDwvYT4NCg0KDQoNCg0KPCEtLSAjc29jaWFsLW1lZGlhLWNvbnRlbnQgZW5kIC0tPg0KICAgICAgICAgICAgPC9saT4NCiAgICAgICAgDQogICAgICAgICAgICA8bGk+DQogICAgICAgICAgICAgICAgDQoNCg0KDQoNCg0KDQoNCg0KDQo8IS0tU29jaWFsIE1lZGlhIENvbnRlbnQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCg0KICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cueW91dHViZS5jb20vaWVlZXNhIiB0YXJnZXQ9Il9ibGFuayI+DQogICAgICAgIDxpIGNsYXNzPSJmYWIgZmEteW91dHViZSI+PC9pPg0KICAgIDwvYT4NCg0KDQoNCg0KPCEtLSAjc29jaWFsLW1lZGlhLWNvbnRlbnQgZW5kIC0tPg0KICAgICAgICAgICAgPC9saT4NCiAgICAgICAgPC91bD4NCiAgICA8L2Rpdj4NCg0KPCEtLSNTb2NpYWwtbWVkaWEtY29udGFpbmVyIGNvbnRlbnQgZW5kLS0+CiAgICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgPC9kaXY+CjwvZGl2Pgo8IS0tICNmb290ZXItY29udGVudCBlbmQgLS0+PC9kaXY+Cg0KICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIDxkaXYgY2xhc3M9Imdsb2JhbC1mb290ZXItY29udGFpbmVyIj4NCg0KPCEtLSBHbG9iYWwgRm9vdGVyIENvbnRlbnQNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCjxkaXYgY2xhc3M9Imdsb2JhbC1mb290ZXIiPg0KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQogICAgICAgIDxkaXYgY2xhc3M9InJvdyI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wteHMtMTIgZm9vdGVyLWxpbmtzIGZvbnQtZiI+DQogICAgICAgICAgICAgICAgDQoNCg0KDQoNCg0KDQoNCiAgICAgICAgDQoNCg0KDQo8IS0tIFV0aWxpdHkgTGlua3MgQ29udGVudA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KDQogICAgPHVsIGlkPSJZVllIV0xMWlVSU0JOVFBEVVMiIGNsYXNzPSIgdXRpbGl0eWxpbmtzIHNlcGFyYXRvci1waXBlIj4NCiAgICAgICAgPGxpIGNsYXNzPSJ1dGlsaXR5bGlua3MtZGVmYXVsdC1jb2xvciIgc3R5bGU9ImNvbG9yOiI+DQogICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJtaW4td2lkdGg6MzBweCI+DQoNCg0KDQogICAgPGEgaHJlZj0iLyI+SG9tZTwvYT4NCjwvZGl2Pg0KICAgICAgICAgICAgDQogICAgICAgIDwvbGk+DQogICAgDQogICAgICAgIDxsaSBjbGFzcz0idXRpbGl0eWxpbmtzLWRlZmF1bHQtY29sb3IiIHN0eWxlPSJjb2xvcjoiPg0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWluLXdpZHRoOjMwcHgiPg0KDQoNCg0KICAgIDxhIGhyZWY9Ii9zaXRlbWFwLmh0bWwiPlNpdGVtYXA8L2E+DQo8L2Rpdj4NCiAgICAgICAgICAgIA0KICAgICAgICA8L2xpPg0KICAgIA0KICAgICAgICA8bGkgY2xhc3M9InV0aWxpdHlsaW5rcy1kZWZhdWx0LWNvbG9yIiBzdHlsZT0iY29sb3I6Ij4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1pbi13aWR0aDozMHB4Ij4NCg0KDQoNCiAgICA8YSBocmVmPSIvYWJvdXQvY29udGFjdC9pbmRleC5odG1sIj4gQ29udGFjdCAmYW1wOyBTdXBwb3J0IDwvYT4NCjwvZGl2Pg0KICAgICAgICAgICAgDQogICAgICAgIDwvbGk+DQogICAgDQogICAgICAgIDxsaSBjbGFzcz0idXRpbGl0eWxpbmtzLWRlZmF1bHQtY29sb3IiIHN0eWxlPSJjb2xvcjoiPg0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWluLXdpZHRoOjMwcHgiPg0KDQoNCg0KICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmllZWUub3JnL2FjY2Vzc2liaWxpdHktc3RhdGVtZW50Lmh0bWwiPkFjY2Vzc2liaWxpdHk8L2E+DQo8L2Rpdj4NCiAgICAgICAgICAgIA0KICAgICAgICA8L2xpPg0KICAgIA0KICAgICAgICA8bGkgY2xhc3M9InV0aWxpdHlsaW5rcy1kZWZhdWx0LWNvbG9yIiBzdHlsZT0iY29sb3I6Ij4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1pbi13aWR0aDozMHB4Ij4NCg0KDQoNCiAgICA8YSBocmVmPSJodHRwczovL3d3dy5pZWVlLm9yZy9hYm91dC9jb3Jwb3JhdGUvZ292ZXJuYW5jZS9wOS0yNi5odG1sIj5Ob25kaXNjcmltaW5hdGlvbiBQb2xpY3k8L2E+DQo8L2Rpdj4NCiAgICAgICAgICAgIA0KICAgICAgICA8L2xpPg0KICAgIA0KICAgICAgICA8bGkgY2xhc3M9InV0aWxpdHlsaW5rcy1kZWZhdWx0LWNvbG9yIiBzdHlsZT0iY29sb3I6Ij4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1pbi13aWR0aDozMHB4Ij4NCg0KDQoNCiAgICA8YSBocmVmPSJodHRwczovL3d3dy5pZWVlLm9yZy9zZWN1cml0eV9wcml2YWN5Lmh0bWwiPklFRUUgUHJpdmFjeSBQb2xpY3k8L2E+DQo8L2Rpdj4NCiAgICAgICAgICAgIA0KICAgICAgICA8L2xpPg0KICAgIA0KICAgICAgICA8bGkgY2xhc3M9InV0aWxpdHlsaW5rcy1kZWZhdWx0LWNvbG9yIiBzdHlsZT0iY29sb3I6Ij4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1pbi13aWR0aDozMHB4Ij4NCg0KDQoNCiAgICA8YSBocmVmPSIvaXByL2luZGV4Lmh0bWwiPklFRUUgU0EgQ29weXJpZ2h0IFBvbGljeTwvYT4NCjwvZGl2Pg0KICAgICAgICAgICAgDQogICAgICAgIDwvbGk+DQogICAgPC91bD4NCg0KPCEtLSAjdXRpbGl0eS1saW5rcy1jb250ZW50IGVuZCAtLT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXhzLTEyIGxlZ2FsLWNvcHkgZm9udC1mIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcS1kZC1wYXJhZ3JhcGgiPjxkaXYgY2xhc3M9InJ0ZSB0ZXh0IHBhcmJhc2UiPg0KDQoNCg0KICAgIMKpIENvcHlyaWdodCAyMDIwIElFRUUg4oCTIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBvZiB0aGlzIHdlYnNpdGUgc2lnbmlmaWVzIHlvdXIgYWdyZWVtZW50IHRvIHRoZcKgPGEgaHJlZj0iaHR0cDovL3d3dy5pZWVlLm9yZy9zaXRlX3Rlcm1zX2NvbmRpdGlvbnMuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPklFRUUgVGVybXMgYW5kIENvbmRpdGlvbnM8L2E+LjxiciAvPgpBIG5vdC1mb3ItcHJvZml0IG9yZ2FuaXphdGlvbiwgSUVFRSBpcyB0aGUgd29ybGQncyBsYXJnZXN0IHRlY2huaWNhbCBwcm9mZXNzaW9uYWwgb3JnYW5pemF0aW9uIGRlZGljYXRlZCB0byBhZHZhbmNpbmcgdGVjaG5vbG9necKgPGJyIC8+CmZvciB0aGUgYmVuZWZpdCBvZiBodW1hbml0eS48YnIgLz4KDQo8L2Rpdj4KPC9kaXY+DQoNCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCjwvZGl2Pg0KPCEtLSAjZ2xvYmFsLWZvb3Rlci1jb250ZW50IGVuZCAtLT48L2Rpdj4KDQogICAgDQoNCjwvZGl2PgoNCiAgICANCg0KDQo8L2Zvb3Rlcj4NCjwhLS0gI2Zvb3RlciBlbmRzIC0tPg0KCgk8L2Rpdj4KCQoJPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KDQoKICAgIAo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvZXRjL2NsaWVudGxpYnMvYXhpczQxLWNvcmUvYmFzZS5taW4uOGRhYTk3NTA5YTgxMzdkNjJmZjkzMjg1OGM1YmNjOWMuanMiPjwvc2NyaXB0PgoKCg0KCiAgICAKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2V0Yy9jbGllbnRsaWJzL2F4aXM0MS1jb3JlL2FwcHNfY29tcG9uZW50cy5taW4uYmI1MTBlMzM0MDc2ODlhNzgyNjRiNDhjNjkyM2UzYjMuanMiPjwvc2NyaXB0PgoKCgoJPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KDQoKICAgIAo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvZXRjL2Rlc2lnbnMvaWVlZS1jb3JlL2NsaWVudGxpYnMvYmFzZS5taW4uNmU4NmE1ZjEwYmRiZjM3OTdlZWIzNDFlOTU2OWY1OGIuanMiPjwvc2NyaXB0PgoKCg0KCiAgICAKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2V0Yy9kZXNpZ25zL2llZWUtY29yZS9jbGllbnRsaWJzL2FwcHNfY29tcG9uZW50cy5taW4uZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UuanMiPjwvc2NyaXB0PgoKCg0KDQo8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CgoKCgogICAgCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9ldGMvZGVzaWducy9pZWVlLXN0YW5kYXJkcy9jbGllbnRsaWJzL2Jhc2UubWluLjEwMTEzYTg3NjZiM2QxNDcyMWQxMTBlZTQzNGVlMjk1LmpzIj48L3NjcmlwdD4KCgoKCiAgICAKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2V0Yy9kZXNpZ25zL2llZWUtc3RhbmRhcmRzL2NsaWVudGxpYnMvYXBwc19jb21wb25lbnRzLm1pbi5kNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZS5qcyI+PC9zY3JpcHQ+CgoKCg0KCgkKCTxkaXYgY2xhc3M9ImNsb3Vkc2VydmljZSBnZW5lcmljdHJhY2tlciI+DQogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKXsKd2luZG93LmNvb2tpZWNvbnNlbnQuaW5pdGlhbGlzZShqc29uKQp9KTsNCiAgICA8L3NjcmlwdD4NCjwvZGl2PgoKCjwvYm9keT4KPC9ib2R5Pg0KPC9odG1sPg0K
139
+ http_version:
140
+ recorded_at: Wed, 03 Jun 2020 18:23:51 GMT
141
+ recorded_with: VCR 5.0.0
@@ -0,0 +1,76 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://raw.githubusercontent.com/relaton/relaton-data-iho/master/data/b-11.yaml
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
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
+ - Ruby
16
+ Host:
17
+ - raw.githubusercontent.com
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Connection:
24
+ - keep-alive
25
+ Content-Length:
26
+ - '746'
27
+ Content-Type:
28
+ - text/plain; charset=utf-8
29
+ Cache-Control:
30
+ - max-age=300
31
+ Content-Security-Policy:
32
+ - default-src 'none'; style-src 'unsafe-inline'; sandbox
33
+ Etag:
34
+ - W/"30a42e35608c73108049aa68eb4fae629dd09c7d917cbc3243a5b16d2fd0b749"
35
+ Strict-Transport-Security:
36
+ - max-age=31536000
37
+ X-Content-Type-Options:
38
+ - nosniff
39
+ X-Frame-Options:
40
+ - deny
41
+ X-Xss-Protection:
42
+ - 1; mode=block
43
+ Via:
44
+ - 1.1 varnish
45
+ - 1.1 varnish (Varnish/6.0)
46
+ X-Github-Request-Id:
47
+ - DC56:B46D:3432389:377995A:5F64926D
48
+ Accept-Ranges:
49
+ - bytes
50
+ Date:
51
+ - Fri, 18 Sep 2020 10:56:46 GMT
52
+ X-Served-By:
53
+ - cache-hhn4061-HHN
54
+ X-Cache:
55
+ - MISS, MISS
56
+ X-Cache-Hits:
57
+ - 0, 0
58
+ X-Timer:
59
+ - S1600426606.876779,VS0,VE185
60
+ Vary:
61
+ - Authorization,Accept-Encoding, Accept-Encoding
62
+ Access-Control-Allow-Origin:
63
+ - "*"
64
+ X-Fastly-Request-Id:
65
+ - 2d9381224ffcb92666398a07e509641ae01a2096
66
+ Expires:
67
+ - Fri, 18 Sep 2020 11:01:46 GMT
68
+ Source-Age:
69
+ - '0'
70
+ body:
71
+ encoding: ASCII-8BIT
72
+ string: !binary |-
73
+ LS0tCnRpdGxlOgotIHR5cGU6IG1haW4KICBjb250ZW50OiBJSE8tSU9DIEdFQkNPIENvb2sgQm9vawogIGxhbmd1YWdlOiBlbgotIHR5cGU6IG1haW4KICBjb250ZW50OiBMaXZyZSBkZSByZWNldHRlcyBHRUJDTyBPSEktQ09JCiAgbGFuZ3VhZ2U6IGZyCmVkaXRvcmlhbGdyb3VwOgotIC0gY29tbWl0dGVlOgogICAgICBhYmJyZXZpYXRpb246IEhTU0MKICAgICAgbmFtZTogSHlkcm9ncmFwaGljIFNlcnZpY2VzIGFuZCBTdGFuZGFyZHMgQ29tbWl0dGVlCiAgLSBjb21taXR0ZWU6CiAgICAgIGFiYnJldmlhdGlvbjogSVJDQwogICAgICBuYW1lOiBJbnRlci1SZWdpb25hbCBDb29yZGluYXRpb24gQ29tbWl0dGVlCiAgICAgIGNvbW1pdHRlZToKICAgICAgICBhYmJyZXZpYXRpb246IEdFQkNPCiAgICAgICAgbmFtZTogSk9JTlQgSUhPLUlPQyBHVUlESU5HIENPTU1JVFRFRSBGT1IgVEhFIEdFTkVSQUwgQkFUSFlNRVRSSUMgQ0hBUlQgT0YKICAgICAgICAgIFRIRSBPQ0VBTlMKdHlwZTogc3RhbmRhcmQKZG9jaWQ6CiAgdHlwZTogSUhPCiAgaWQ6IEItMTEKZG9jbnVtYmVyOiAxMQplZGl0aW9uOiAxLjAuMApkb2NzdGF0dXM6CiAgc3RhZ2U6CiAgICB2YWx1ZTogaW4tZm9yY2UKbGFuZ3VhZ2U6Ci0gZW4KLSBmcgpzY3JpcHQ6IExhdG4KdmVyc2lvbjoKICByZXZpc2lvbl9kYXRlOiAyMDE5LTEwLTMxCmRhdGU6CiAgdHlwZTogcHVibGlzaGVkCiAgZnJvbTogMjAyMC0wMS0yMApjb3B5cmlnaHQ6Ci0gb3duZXI6CiAgICBuYW1lOiBJbnRlcm5hdGlvbmFsIEh5ZHJvZ3JhcGhpYyBPcmdhbml6YXRpb24KICAgIGFiYnJldmlhdGlvbjogSUhPCiAgICB1cmw6IHd3dy5paG8uaW50CiAgZnJvbTogMjAxOQotIG93bmVyOgogICAgbmFtZTogSW50ZXJnb3Zlcm5tZW50YWwgT2NlYW5vZ3JhcGhpYyBDb21taXNzaW9uCiAgICBhYmJyZXZpYXRpb246IElPQwogICAgdXJsOiBodHRwOi8vaW9jLXVuZXNjby5vcmcKICBmcm9tOiAyMDE5Cmxpbms6Ci0gdHlwZTogcGRmCiAgY29udGVudDogaHR0cHM6Ly93d3cuc3Rhci5uZXNkaXMubm9hYS5nb3Yvc29jZC9sc2EvR0VCQ09fQ29va2Jvb2svZG9jdW1lbnRzL0Nvb2tCb29rXzIwMTkxMDMxLnBkZgpwbGFjZTogTW9uYWNvCnZhbGlkaXR5OgogIGJlZ2luczogMjAxOS0xMC0zMQpjb250cmlidXRvcjoKLSBvcmdhbml6YXRpb246CiAgICBuYW1lOiBJbnRlcm5hdGlvbmFsIEh5ZHJvZ3JhcGhpYyBPcmdhbml6YXRpb24KICAgIGFiYnJldmlhdGlvbjogSUhPCiAgICB1cmw6IHd3dy5paG8uaW50CiAgcm9sZTogcHVibGlzaGVyCi0gb3JnYW5pemF0aW9uOgogICAgbmFtZTogSW50ZXJnb3Zlcm5tZW50YWwgT2NlYW5vZ3JhcGhpYyBDb21taXNzaW9uCiAgICBhYmJyZXZpYXRpb246IElPQwogICAgdXJsOiBodHRwOi8vaW9jLXVuZXNjby5vcmcKICByb2xlOiBwdWJsaXNoZXIKc2VyaWVzOgogIG51bWJlcjogQgogIHR5cGU6IG1haW4KICB0aXRsZToKICAgIHR5cGU6IG9yaWdpbmFsCiAgICBjb250ZW50OgogICAgLSBjb250ZW50OiBCYXRoeW1ldHJpYyBQdWJsaWNhdGlvbnMKICAgICAgbGFuZ3VhZ2U6IGVuCiAgICAgIHNjcmlwdDogTGF0bgogICAgLSBjb250ZW50OiBQdWJsaWNhdGlvbnMgYmF0aHltw6l0cmlxdWVzCiAgICAgIGxhbmd1YWdlOiBmcgogICAgICBzY3JpcHQ6IExhdG4KICBwbGFjZTogTW9uYWNvCiAgb3JnYW5pemF0aW9uOiBJbnRlcm5hdGlvbmFsIEh5ZHJvZ3JhcGhpYyBPcmdhbml6YXRpb24KZmV0Y2hlZDogMjAyMC0wMy0yOQo=
74
+ http_version:
75
+ recorded_at: Fri, 18 Sep 2020 10:56:46 GMT
76
+ recorded_with: VCR 5.1.0