relaton 0.8.0 → 0.9.0

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: 5d5cff734da00b1585ab38ae5b3f776cb40064832141a6bf98b092c6273b2d17
4
- data.tar.gz: df83c65654caf6cf8aa94bc4d3c4720792d66c29337fe1d5ccac3df14d206855
3
+ metadata.gz: 22a1e8f9a807ed93c69a7a876128c4d3804d6527d76160d3b206e5d254e42706
4
+ data.tar.gz: e5d763c7d1afdabe3744d2ea1b4bea990022dd205613a2c2a4261a98e339fb87
5
5
  SHA512:
6
- metadata.gz: 766aad0800d04f7561d570688fe27768ee2110590ba7a561071458125c1e8a35c0cb81978d0d5e00c5662a23e05a7988d234524367b87052dd225c8b893f21c7
7
- data.tar.gz: a210092bfec36f80fbc1993e1cb79ffd999877fe8dc7c12145196ffb9cfb114d8f19f9b9ea515481e002553de16b4f29bea7ebfda508c785f7ea2969e6c1b01e
6
+ metadata.gz: bf63b7fa27d0f14e6de6fa42a7a8be6b9520a435fb99931313a589b43c75a88338a47dcd7fb24d57ebbec15926eb8e2bf8361d3a2748e53e1eede81cda1cd68b
7
+ data.tar.gz: 6d4e1abc76a7ff1048ed97e3b9f442d006f7185430668ed5270fe58080da274e42f258e847de61d00f59a4254987f02ab6310861d98de872f47ee0bebb9e451d
@@ -7,7 +7,7 @@ module Relaton
7
7
  class Registry
8
8
  SUPPORTED_GEMS = %w[
9
9
  relaton_gb relaton_iec relaton_ietf relaton_iso relaton_itu relaton_nist
10
- relaton_ogc relaton_calconnect
10
+ relaton_ogc relaton_calconnect relaton_omg
11
11
  ].freeze
12
12
 
13
13
  include Singleton
@@ -1,3 +1,3 @@
1
1
  module Relaton
2
- VERSION = "0.8.0".freeze
2
+ VERSION = "0.9.0".freeze
3
3
  end
data/relaton.gemspec CHANGED
@@ -29,14 +29,15 @@ model.
29
29
  spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
30
30
 
31
31
  # spec.add_dependency "algoliasearch"
32
- spec.add_dependency "relaton-calconnect", "~> 0.4.0"
33
- spec.add_dependency "relaton-gb", "~> 0.9.0"
34
- spec.add_dependency "relaton-iec", "~> 0.7.0"
35
- spec.add_dependency "relaton-ietf", "~> 0.9.0"
36
- spec.add_dependency "relaton-iso", "~> 0.9.0"
37
- spec.add_dependency "relaton-itu", "~> 0.6.0"
38
- spec.add_dependency "relaton-nist", "~> 0.6.0"
39
- spec.add_dependency "relaton-ogc", "~> 0.4.0"
32
+ spec.add_dependency "relaton-calconnect", "~> 0.5.0"
33
+ spec.add_dependency "relaton-gb", "~> 0.10.0"
34
+ spec.add_dependency "relaton-iec", "~> 0.8.0"
35
+ spec.add_dependency "relaton-ietf", "~> 0.10.0"
36
+ spec.add_dependency "relaton-iso", "~> 0.10.0"
37
+ spec.add_dependency "relaton-itu", "~> 0.7.0"
38
+ spec.add_dependency "relaton-nist", "~> 0.7.0"
39
+ spec.add_dependency "relaton-ogc", "~> 0.5.0"
40
+ spec.add_dependency "relaton-omg", "~> 0.1.0"
40
41
 
41
42
  spec.add_development_dependency "byebug", "~> 10.0"
42
43
  spec.add_development_dependency "debase"
data/spec/relaton_spec.rb CHANGED
@@ -172,6 +172,13 @@ RSpec.describe Relaton::Db do
172
172
  end
173
173
  end
174
174
 
175
+ it "get OMG reference" do
176
+ VCR.use_cassette "ogm_ami4ccm_1_0" do
177
+ bib = @db.fetch "OMG AMI4CCM 1.0", nil, {}
178
+ expect(bib).to be_instance_of RelatonOmg::OmgBibliographicItem
179
+ end
180
+ end
181
+
175
182
  context "version control" do
176
183
  before(:each) { @db.save_entry "iso(test_key)", value: "test_value" }
177
184
 
@@ -0,0 +1,55 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://www.omg.org/spec/AMI4CCM/1.0
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
+ response:
17
+ status:
18
+ code: 200
19
+ message: '200'
20
+ headers:
21
+ Date:
22
+ - Sun, 16 Feb 2020 14:45:34 GMT
23
+ Server:
24
+ - Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16 mod_perl/2.0.10 Perl/v5.16.3
25
+ X-Arequestid:
26
+ - 585x2342567x1
27
+ X-Xss-Protection:
28
+ - 1; mode=block
29
+ X-Content-Type-Options:
30
+ - nosniff
31
+ X-Frame-Options:
32
+ - SAMEORIGIN
33
+ Content-Security-Policy:
34
+ - frame-ancestors 'self'
35
+ X-Asen:
36
+ - SEN-L14934863
37
+ Set-Cookie:
38
+ - JSESSIONID=63528B0B87BCB6F1EB10F952041B0C33; Path=/; Secure; HttpOnly
39
+ - atlassian.xsrf.token=BZ1S-78OQ-47MN-5Q1I_0f2201512bd66ae2981c3977077cecff55b27aa2_lout;
40
+ Path=/; Secure
41
+ X-Ausername:
42
+ - anonymous
43
+ Cache-Control:
44
+ - max-age=60, private
45
+ Content-Type:
46
+ - text/html;charset=UTF-8
47
+ Transfer-Encoding:
48
+ - chunked
49
+ body:
50
+ encoding: ASCII-8BIT
51
+ string: !binary |-
52
+ CgoKCgoKCgoKCgoKCgoKCjxodG1sIGNsYXNzPSJqcyBuby10b3VjaCBjc3N0cmFuc2Zvcm1zM2QgY3NzdHJhbnNpdGlvbnMiIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8dGl0bGU+QWJvdXQgdGhlIEFzeW5jaHJvbm91cyBNZXRob2QgSW52b2NhdGlvbiBmb3IgQ0NNIFNwZWNpZmljYXRpb24gVmVyc2lvbiAxLjA8L3RpdGxlPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiLz4KICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL3NwZWMvQU1JNENDTS8xLjAvQWJvdXQtQU1JNENDTS8iLz4KICAgIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIiB0eXBlPSJhcHBsaWNhdGlvbi9yZGYreG1sIiBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL3NwZWMvQU1JNENDTS8xLjAvQWJvdXQtQU1JNENDTS8iLz4KICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+WyB7CiAgIkBpZCIgOiAiaHR0cDovL3d3dy5vbWcub3JnL3RlY2hwcm9jZXNzL2FiL1NwZWNpZmljYXRpb25NZXRhZGF0YS9jYXRlZ29yeSIsCiAgIkB0eXBlIiA6IFsgImh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDcvb3dsI0Fubm90YXRpb25Qcm9wZXJ0eSIgXQp9LCB7CiAgIkBpZCIgOiAiaHR0cHM6Ly93d3cub21nLm9yZy9zcGVjL0FNSTRDQ00iLAogICJAdHlwZSIgOiBbICJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA3L293bCNOYW1lZEluZGl2aWR1YWwiLCAiaHR0cDovL3d3dy5vbWcub3JnL3RlY2hwcm9jZXNzL2FiL1NwZWNpZmljYXRpb25NZXRhZGF0YS9TcGVjaWZpY2F0aW9uIiBdLAogICJodHRwOi8vd3d3Lm9tZy5vcmcvdGVjaHByb2Nlc3MvYWIvU3BlY2lmaWNhdGlvbk1ldGFkYXRhL2NhdGVnb3J5IiA6IFsgewogICAgIkB2YWx1ZSIgOiAiY29tcG9uZW50LWFyY2hpdGVjdHVyZSIKICB9LCB7CiAgICAiQHZhbHVlIiA6ICJjb3JiYS1wbGF0Zm9ybSIKICB9IF0sCiAgImh0dHA6Ly93d3cub21nLm9yZy90ZWNocHJvY2Vzcy9hYi9TcGVjaWZpY2F0aW9uTWV0YWRhdGEvcHVibGljYXRpb25EYXRlIiA6IFsgewogICAgIkB0eXBlIiA6ICJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNkYXRlVGltZSIsCiAgICAiQHZhbHVlIiA6ICIyMDEzLTAzLTMxVDAwOjAwOjAwLTA0MDAiCiAgfSBdLAogICJodHRwOi8vd3d3Lm9tZy5vcmcvdGVjaHByb2Nlc3MvYWIvU3BlY2lmaWNhdGlvbk1ldGFkYXRhL3NwZWNpZmljYXRpb25BYmJyZXZpYXRpb24iIDogWyB7CiAgICAiQHZhbHVlIiA6ICJBTUk0Q0NNIgogIH0gXSwKICAiaHR0cDovL3d3dy5vbWcub3JnL3RlY2hwcm9jZXNzL2FiL1NwZWNpZmljYXRpb25NZXRhZGF0YS9zcGVjaWZpY2F0aW9uQWJzdHJhY3QiIDogWyB7CiAgICAiQHZhbHVlIiA6ICJUaGlzIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIG1lY2hhbmlzbSB0byBwZXJmb3JtIGFzeW5jaHJvbm91cyBtZXRob2QgaW52b2NhdGlvbiBmb3IgQ0NNIChBTUk0Q0NNKS4iCiAgfSBdLAogICJodHRwOi8vd3d3Lm9tZy5vcmcvdGVjaHByb2Nlc3MvYWIvU3BlY2lmaWNhdGlvbk1ldGFkYXRhL3NwZWNpZmljYXRpb25UaXRsZSIgOiBbIHsKICAgICJAdmFsdWUiIDogIkFzeW5jaHJvbm91cyBNZXRob2QgSW52b2NhdGlvbiBmb3IgQ0NNIgogIH0gXSwKICAiaHR0cDovL3d3dy5vbWcub3JnL3RlY2hwcm9jZXNzL2FiL1NwZWNpZmljYXRpb25NZXRhZGF0YS9zcGVjaWZpY2F0aW9uVVJMIiA6IFsgewogICAgIkBpZCIgOiAiaHR0cHM6Ly93d3cub21nLm9yZy9zcGVjL0FNSTRDQ00vQWJvdXQtQU1JNENDTS5odG1sIgogIH0gXQp9LCB7CiAgIkBpZCIgOiAiaHR0cHM6Ly93d3cub21nLm9yZy9zcGVjL0FNSTRDQ00vQWJvdXQtQU1JNENDTS8iLAogICJAdHlwZSIgOiBbICJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA3L293bCNPbnRvbG9neSIgXSwKICAiaHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zL2xpY2Vuc2UiIDogWyB7CiAgICAiQGlkIiA6ICJodHRwOi8vd3d3Lm9tZy5vcmcvdGVjaHByb2Nlc3MvYWIvU3BlY2lmaWNhdGlvbk1ldGFkYXRhL01JVExpY2Vuc2UiCiAgfSBdLAogICJodHRwOi8vd3d3Lm9tZy5vcmcvdGVjaHByb2Nlc3MvYWIvU3BlY2lmaWNhdGlvbk1ldGFkYXRhL2NyZWF0aW9uRGF0ZSIgOiBbIHsKICAgICJAdHlwZSIgOiAiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjZGF0ZVRpbWUiLAogICAgIkB2YWx1ZSIgOiAiMjAxMy0wMy0zMVQwMDowMDowMC0wNDAwIgogIH0gXSwKICAiaHR0cDovL3d3dy5vbWcub3JnL3RlY2hwcm9jZXNzL2FiL1NwZWNpZmljYXRpb25NZXRhZGF0YS9maWxlbmFtZSIgOiBbIHsKICAgICJAdmFsdWUiIDogIkFib3V0LUFNSTRDQ00ucmRmIgogIH0gXSwKICAiaHR0cDovL3d3dy53My5vcmcvMjAwMC8wMS9yZGYtc2NoZW1hI2xhYmVsIiA6IFsgewogICAgIkB2YWx1ZSIgOiAiQWJvdXQgdGhlIEFzeW5jaHJvbm91cyBNZXRob2QgSW52b2NhdGlvbiBmb3IgQ0NNIFNwZWNpZmljYXRpb24gVmVyc2lvbiAxLjAiCiAgfSBdLAogICJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA3L293bCNpbXBvcnRzIiA6IFsgewogICAgIkBpZCIgOiAiaHR0cDovL3d3dy5vbWcub3JnL3RlY2hwcm9jZXNzL2FiL1NwZWNpZmljYXRpb25NZXRhZGF0YS8iCiAgfSBdLAogICJodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA3L293bCN2ZXJzaW9uSVJJIiA6IFsgewogICAgIkBpZCIgOiAiaHR0cHM6Ly93d3cub21nLm9yZy9zcGVjL0FNSTRDQ00vMS4wL0Fib3V0LUFNSTRDQ00vIgogIH0gXSwKICAiaHR0cDovL3d3dy53My5vcmcvMjAwMi8wNy9vd2wjdmVyc2lvbkluZm8iIDogWyB7CiAgICAiQHZhbHVlIiA6ICJHZW5lcmF0ZWQgb24gMjAyMC0wMi0xMVQxNjoyNjo1NC0wNTAwIgogIH0gXQp9IF08L3NjcmlwdD4KICAgIDwhLS0gSEVBRCBJTkNMVURFIEJFR0lOIC0tPg0KPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4NCg0KPCEtLSBNb2JpbGUgU3BlY2lmaWMgTWV0YXMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEuMCxtYXhpbXVtLXNjYWxlPTEuMCx1c2VyLXNjYWxhYmxlPTAiPg0KDQo8IS0tIEdvb2dsZSBXZWIgRm9udHMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KPGxpbmsgaHJlZj0iLy9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PUFudG9ufE11bGk6MzAwLDQwMCw0MDBpdGFsaWMsMzAwaXRhbGljfE9zd2FsZCIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+DQoNCjwhLS0gR2xvYmFsIFNpdGUgVGFnIChndGFnLmpzKSAtIEdvb2dsZSBBbmFseXRpY3MgLS0+DQo8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1VQS0xMDY5NDE0ODgtMSI+PC9zY3JpcHQ+DQo8c2NyaXB0Pg0KICAgIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOw0KICAgIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpfTsNCiAgICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOw0KICAgIGd0YWcoJ2NvbmZpZycsICdVQS0xMDY5NDE0ODgtMScpOw0KPC9zY3JpcHQ+DQo8IS0tIEdvb2dsZSBBbmFseXRpY3MgLS0+DQoNCjwhLS0gQ1NTDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCjwhLS0gQmFzZSArIFZlbmRvcnMgQ1NTIC0tPg0KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvL3d3dy5vbWcub3JnL2Nzcy9ib290c3RyYXAubWluLmNzcyI+DQo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii8vd3d3Lm9tZy5vcmcvY3NzL2ZvbnRzL2ZvbnQtYXdlc29tZS9jc3MvZm9udC1hd2Vzb21lLmNzcyI+DQo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii8vd3d3Lm9tZy5vcmcvdmVuZG9yL293bC1jYXJvdXNlbC9vd2wuY2Fyb3VzZWwuY3NzIiBtZWRpYT0ic2NyZWVuIj4NCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLy93d3cub21nLm9yZy92ZW5kb3Ivb3dsLWNhcm91c2VsL293bC50aGVtZS5jc3MiIG1lZGlhPSJzY3JlZW4iPg0KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvL3d3dy5vbWcub3JnL3ZlbmRvci9tYWduaWZpYy1wb3B1cC9tYWduaWZpYy1wb3B1cC5jc3MiIG1lZGlhPSJzY3JlZW4iPg0KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvL3d3dy5vbWcub3JnL3ZlbmRvci9tZWRpYWVsZW1lbnQvbWVkaWFlbGVtZW50cGxheWVyLmNzcyIgLz4NCg0KPCEtLSBUaGVtZSBDU1MtLT4NCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLy93d3cub21nLm9yZy9jc3MvdGhlbWUuY3NzIj4NCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLy93d3cub21nLm9yZy9jc3MvdGhlbWUtZWxlbWVudHMuY3NzIj4NCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLy93d3cub21nLm9yZy9jc3MvYW5pbWF0ZS5taW4uY3NzIj4NCg0KPCEtLSBTa2luIENTUyAtLT4NCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLy93d3cub21nLm9yZy9jc3Mvc2tpbnMvdGVhbC5jc3MiPg0KDQo8IS0tIEN1c3RvbSBDU1MtLT4NCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLy93d3cub21nLm9yZy9jc3MvY3VzdG9tLmNzcyI+DQoNCjwhLS0gSGVhZCBMaWJzIC0tPg0KPHNjcmlwdCBzcmM9Ii8vd3d3Lm9tZy5vcmcvdmVuZG9yL21vZGVybml6ci5qcyI+PC9zY3JpcHQ+DQoNCjwhLS1baWYgbHQgSUUgOV0+DQogICAgPHNjcmlwdCBzcmM9Imh0dHA6Ly9odG1sNXNoaW0uZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2h0bWw1LmpzIj48L3NjcmlwdD4NCiAgICA8c2NyaXB0IHNyYz0idmVuZG9yL3Jlc3BvbmQubWluLmpzIj48L3NjcmlwdD4NCjwhW2VuZGlmXS0tPg0KDQo8IS0tW2lmIElFXT4NCiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImNzcy9pZS5jc3MiPg0KPCFbZW5kaWZdLS0+DQoNCjwhLS0gRmF2aWNvbnMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSIvL3d3dy5vbWcub3JnL2ltYWdlcy9mYXZpY29uLmljbyI+DQo8bGluayByZWw9Imljb24iIGhyZWY9Ii8vd3d3Lm9tZy5vcmcvaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24ucG5nIj4NCjxsaW5rIHJlbD0iaWNvbiIgc2l6ZXM9IjcyeDcyIiBocmVmPSIvL3d3dy5vbWcub3JnL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTcyeDcyLnBuZyI+DQo8bGluayByZWw9Imljb24iIHNpemVzPSIxMTR4MTE0IiBocmVmPSIvL3d3dy5vbWcub3JnL2ltYWdlcy9hcHBsZS10b3VjaC1pY29uLTExNHgxMTQucG5nIj4NCjxsaW5rIHJlbD0iaWNvbiIgc2l6ZXM9IjE0NHgxNDQiIGhyZWY9Ii8vd3d3Lm9tZy5vcmcvaW1hZ2VzL2FwcGxlLXRvdWNoLWljb24tMTQ0eDE0NC5wbmciPg0KDQo8IS0tIHNvcnRhYmxlIHRhYmxlcyAtLT4NCjxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9zb3J0YWJsZS8wLjguMC9qcy9zb3J0YWJsZS5taW4uanMiIGludGVncml0eT0ic2hhMjU2LWdDdGRBMWNMSzJFaFFaQ01oaHZHelVzV00vZnN4dEoySUltVUorNFVPUDg9IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD4NCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvc29ydGFibGUvMC44LjAvY3NzL3NvcnRhYmxlLXRoZW1lLW1pbmltYWwubWluLmNzcyIgaW50ZWdyaXR5PSJzaGEyNTYtbFVwYTVaeksrZkVKbmM0THRlR2VoRi9JRVlRZWFPTXZrSHhuN3ljbjErND0iIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIC8+PCEtLSBzb3J0YWJsZSB0YWJsZXMgLS0+DQoNCjwhLS0gSW5zdGFuY2VCZWdpbkVkaXRhYmxlIG5hbWU9ImhlYWQiIC0tPg0KPCEtLSBJbnN0YW5jZUVuZEVkaXRhYmxlIC0tPg0KPHN0eWxlIGlkPSJmaXQtdmlkcy1zdHlsZSI+DQogICAgLmZsdWlkLXdpZHRoLXZpZGVvLXdyYXBwZXJ7d2lkdGg6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjA7fQ0KICAgIC5mbHVpZC13aWR0aC12aWRlby13cmFwcGVyIGlmcmFtZSwuZmx1aWQtd2lkdGgtdmlkZW8td3JhcHBlciBvYmplY3QsLmZsdWlkLXdpZHRoLXZpZGVvLXdyYXBwZXIgZW1iZWQge3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO30NCjwvc3R5bGU+DQo8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIvL3Muc3dpZnR5cGVjZG4uY29tL2Fzc2V0cy9uZXdfZW1iZWQtNTlhZjU3YjI4MDFkN2Q4Y2NhODBlYmUwNDNjZGNmODAuY3NzIj4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQogICAgLnN0LWluc3RhbGwtVUp3a21QemdqSEJDeEh5eHpDYWogLnN0LXVpLXJlc3VsdA0KICAgIC5zdC11aS10eXBlLWhlYWRpbmcgeyBjb2xvcjojMDA4OWQ3ICFpbXBvcnRhbnQgfQ0KICAgIC5zdC1pbnN0YWxsLVVKd2ttUHpnakhCQ3hIeXh6Q2FqIC5zdC11aS1yZXN1bHQgZW0ge2ZvbnQtc3R5bGU6bm9ybWFsOyBmb250LXdlaWdodDpib2xkOyBiYWNrZ3JvdW5kLWNvbG9yOiNmNmZjZmUgIWltcG9ydGFudH0NCiAgICB1bC5kZC1saXN0IHsNCiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsNCiAgICB9DQogICAgZGl2Lmlzc3Vlcy1saW5rcyB7DQogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICB9DQouc3BlYy1hY3JvbnltIHsNCiAgICBib3JkZXI6IDVweCBzb2xpZCAjZDRkNGQ0Ow0KICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICBtYXJnaW46IC01cHggMTVweCAwIC0xMzVweDsNCn0NCjwvc3R5bGU+DQo8IS0tIEhFQUQgSU5DTFVERSBFTkQgLS0+PC9oZWFkPgo8Ym9keT4KICAgIDwhLS0gQk9EWSBIRUFERVIgSU5DTFVERSBCRUdJTiAtLT4NCjxoZWFkZXIgY2xhc3M9ImhlYWRlciBoZWFkZXItZGVmYXVsdCI+DQogICAgPGRpdiBjbGFzcz0iaGVhZGVyLXRvcCI+DQogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItdG9wLWxlZnQiPg0KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iaGVhZGVyLXRvcC1uYXYiPg0KICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLy93d3cub21nLm9yZy9pbmRleC5odG0iPjxzcGFuIHN0eWxlPSJjb2xvcjp3aGl0ZSI+SG9tZTwvc3Bhbj48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8vd3d3Lm9tZy5vcmcvc2l0ZS1tYXAuaHRtIj48c3BhbiBzdHlsZT0iY29sb3I6d2hpdGUiPlNpdGUgTWFwPC9zcGFuPjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLy93d3cub21nLm9yZy9sZWdhbC9pbmRleC5odG0iPjxzcGFuIHN0eWxlPSJjb2xvcjp3aGl0ZSI+TGVnYWw8L3NwYW4+PC9hPjwvbGk+DQogICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImhlYWRlci10b3AtbmF2Ij4NCiAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vT2JqZWN0LU1hbmFnZW1lbnQtR3JvdXAtMTcxNTM0NDEwMDIyLyI+PGkgY2xhc3M9ImZhIGZhLWZhY2Vib29rIj48L2k+PC9hPiZuYnNwOyZuYnNwOyZuYnNwOzxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vb2JqZWN0bWdtdGdyb3VwIj48aSBjbGFzcz0iZmEgZmEtdHdpdHRlciI+PC9pPjwvYT4mbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vZ3JvdXBzLzY2Nzk5Ij48aSBjbGFzcz0iZmEgZmEtbGlua2VkaW4iPjwvaT48L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iaHR0cDovL2Jsb2cub21nLm9yZy8iPjxpIGNsYXNzPSJmYSBmYS1wZW5jaWwtc3F1YXJlLW8iPjwvaT48L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vY2hhbm5lbC9VQ3R1VGoxd3R5d29qWU5ab3lQZVlBRnciPjxpIGNsYXNzPSJmYSBmYS15b3V0dWJlIj48L2k+PC9hPg0KICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci10b3AtcmlnaHQiPg0KICAgICAgICAgICAgICAgIDwhLS0gQWRkU2VhcmNoIC0tPg0KICAgICAgICAgICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FkZHNlYXJjaC5jb20vanMvP2tleT1hNzdmYjFlYjJjM2M4ZmFmZTJiMzAxODI0MzY5ZWQ5NyZjYXRlZ29yaWVzPTB4d3d3Lm9tZy5vcmciPjwvc2NyaXB0Pg0KICAgICAgICAgICAgICAgIDwhLS0gQWRkU2VhcmNoIC0tPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImhlYWRlci1tYWluIj4NCiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4NCiAgICAgICAgICAgIA0KDQoNCgkJPG5hdiBjbGFzcz0ibmF2YmFyIG5hdmJhci1kZWZhdWx0IGZobW0iPg0KCQkJCQkJPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+DQoJCQkJCQkJPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJuYXZiYXItdG9nZ2xlIj4NCgkJCQkJCQkJPGkgY2xhc3M9ImZhIGZhLWJhcnMiPjwvaT4NCgkJCQkJCQk8L2J1dHRvbj4NCgkJCQkJCQk8IS0tIExvZ28gLS0+DQoJCQkJCQkJPGRpdiBjbGFzcz0ibG9nbyI+DQoJCQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvaW5kZXguaHRtIj48aW1nIHNyYz0iaHR0cHM6Ly93d3cub21nLm9yZy9pbWFnZXMvbG9nb3MvT01HLWxvZ28td2ViLXNtLnN2ZyIgYWx0PSJPTUcgbG9nbyI+PC9hPgkNCgkJCQkJCQk8L2Rpdj4NCgkJCQkJCQk8IS0tIExvZ28gLyBFbmQgLS0+DQoJCQkJCQk8L2Rpdj48IS0tIGVuZCBuYXZiYXItaGVhZGVyIC0tPg0KDQoJCQkJCQk8ZGl2IGlkPSJtYWluLW5hdiIgY2xhc3M9Im5hdmJhci1jb2xsYXBzZSBjb2xsYXBzZSI+DQoJCQkJCQkJPHVsIGNsYXNzPSJuYXYgbmF2YmFyLW5hdiI+DQoJCQkJCQkJCTxsaSBjbGFzcz0iZHJvcGRvd24iPg0KCQkJCQkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9hYm91dC9pbmRleC5odG0iIGRhdGEtdG9nZ2xlPSIiIGNsYXNzPSIiPkFib3V0IHVzIDxiIGNsYXNzPSIiPjwvYj48L2E+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkJCQkJCQkJCQ0KCQkJCQkJCQk8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSZXNvdXJjZSBIdWIgbWVudSAtLT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93biI+DQoJCQkJCQkJCQk8YSBocmVmPSIjIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iIGNsYXNzPSJkcm9wZG93bi10b2dnbGUiPlJlc291cmNlIEh1YiA8YiBjbGFzcz0iY2FyZXQiPjwvYj48L2E+DQoJCQkJCQkJCQk8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiIHJvbGU9Im1lbnUiPg0KCQkJCQkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL2V2ZW50cy9pbmRleC5odG0iPkV2ZW50czwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL2hvdC10b3BpY3MvaW5kZXguaHRtIj5Ib3QgVG9waWNzPC9hPjwvbGk+DQoJCQkJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvbmV3cy9yZWxlYXNlcy9pbmRleC5odG0iPlByZXNzIFJvb208L2E+PC9saT4NCgkJCQkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9vbWctZGlyZWN0b3JpZXMuaHRtIj5WZW5kb3IgRGlyZWN0b3JpZXM8L2E+PC9saT4NCgkJCQkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy93ZWJpbmFycy9pbmRleC5odG0iPldlYmluYXJzPC9hPjwvbGk+DQoJCQkJCQkJCQkgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL25ld3Mvd2hpdGVwYXBlcnMvaW5kZXguaHRtIj5XaGl0ZSBQYXBlcnM8L2E+PC9saT4NCgkJCQkJCQkJCTwvdWw+DQoJCQkJCQkJCTwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJlc291cmNlIEh1YiBtZW51IC0tPg0KDQoJCQkJCQkJDQoJCQkJCQkJCQk8IS0tIFNwZWNzIC0tPg0KCQkJCQkJCQk8bGkgY2xhc3M9ImRyb3Bkb3duIGZobW0tZnciPg0KCQkJCQkJCQkJPGEgaHJlZj0iIyIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIj5PTUcgU3BlY2lmaWNhdGlvbnMgPGIgY2xhc3M9ImNhcmV0Ij48L2I+PC9hPg0KCQkJCQkJCQkJPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51IGZ1bGwiPg0KCQkJCQkJCQkJCTxsaSBjbGFzcz0iZmhtbS1jb250ZW50Ij4NCgkJCQkJCQkJCQkJPGRpdiBjbGFzcz0icm93Ij4NCgkJCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImNvbC1zbS0zIj4NCgkJCQkJCQkJCQkJCQk8aDMgY2xhc3M9InRpdGxlIj5TcGVjaWZpY2F0aW9uczwvaDM+DQoJCQkJCQkJCQkJCQkJPHVsPg0KCQkJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9zcGVjLyI+QWRvcHRlZCBTcGVjaWZpY2F0aW9uczwvYT48L2xpPg0KCQkJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy90ZWNocHJvY2Vzcy9mYXh2b3Rlcy8iIHRhcmdldD0iX2JsYW5rIj5GYXh2b3RlcyBTdGF0dXM8L2E+PC9saT4NCgkJCQkJCQkJCQkJCQkgIDxsaT48YSBocmVmPSJodHRwczovL2lzc3Vlcy5vbWcub3JnL2lzc3Vlcy9saXN0cyI+SXNzdWVzPC9hPjwvbGk+DQoJCQkJCQkJCQkJCQkJICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9wdWJsaWNfc2NoZWR1bGUvIj5SRkkgJmFtcDsgUkZQPC9hPjwvbGk+DQoJCQkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL2NnaS1iaW4vZG9jP3Ntc2MvMjAxOC0wOC0wMSI+U3BlY2lmaWNhdGlvbiBHdWlkZWxpbmVzPC9hPjwvbGk+DQoJCQkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL3RlY2hub2xvZ3kvZG9jdW1lbnRzL3ZhdWx0Lmh0bSI+U3BlY2lmaWNhdGlvbiBWYXVsdDwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkJCQkJCQkJCQkJCSAgPC91bD4NCgkJCQkJCQkJCQkJCTwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0zIj4NCgkJCQkJCQkJCQkJCQk8aDMgY2xhc3M9InRpdGxlIj48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL2luZHVzdHJpZXMvaW5kZXguaHRtIj5JbmR1c3RyaWVzPC9hPjwvaDM+DQoJCQkJCQkJCQkJCQkJPHVsPg0KCQkJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9pbmR1c3RyaWVzL2ZpbmFuY2UuaHRtIj5GaW5hbmNlPC9hPjwvbGk+DQoJCQkJCQkJCQkJCQkJICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL2luZHVzdHJpZXMvZ292ZXJubWVudC5odG0iPkdvdmVybm1lbnQ8L2E+PC9saT4NCgkJCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvaW5kdXN0cmllcy9oZWFsdGhjYXJlLmh0bSI+SGVhbHRoY2FyZTwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9pbmR1c3RyaWVzL21hbnVmYWN0dXJpbmcuaHRtIj5NYW51ZmFjdHVyaW5nPC9hPjwvbGk+DQoJCQkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL2luZHVzdHJpZXMvbWlsaXRhcnkuaHRtIj5NaWxpdGFyeTwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9pbmR1c3RyaWVzL3JldGFpbC5odG0iPlJldGFpbDwvYT48L2xpPg0KCQkJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9pbmR1c3RyaWVzL3NwYWNlLmh0bSI+U3BhY2UgRXhwbG9yYXRpb248L2E+PC9saT4NCgkJCQkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCQkJPC91bD4NCgkJCQkJCQkJCQkJCTwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkJCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImNvbC1zbS0zIj4NCgkJCQkJCQkJCQkJCQk8aDMgY2xhc3M9InRpdGxlIj5Eb2N1bWVudCBIZWxwPC9oMz4NCgkJCQkJCQkJCQkJCQk8dWw+DQoJCQkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL3RlY2hub2xvZ3kvZG93bmxvYWQuaHRtIj5Eb3dubG9hZCBJbnN0cnVjdGlvbnM8L2E+PC9saT4NCgkJCQkJCQkJCQkJCQkgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL2NnaS1iaW4vZG9jP2hoIj5Ib3cgdG8gRmluZCBhIERvY3VtZW50PC9hPjwvbGk+DQoJCQkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL2lzc3Vlcy5vbWcub3JnL2lzc3Vlcy9jcmVhdGUtbmV3LWlzc3VlIj5SZXBvcnQgYW4gSXNzdWU8L2E+PC9saT4NCgkJCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvY2dpLWJpbi9hcHBzL2RvY2xpc3QucGwiPlNlYXJjaCBEb2N1bWVudHM8L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvbWVtYmVyc19kb2NzZWFyY2guaHRtIj5TZWFyY2ggRG9jdW1lbnRzIChGdWxsKTwvYT48L2xpPg0KCQkJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9nZXR0aW5nc3RhcnRlZC90ZXJtc19hbmRfYWNyb255bXMuaHRtIj5UZXJtcyAmYW1wOyBBY3JvbnltczwvYT48L2xpPg0KCQkJCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJCQk8L3VsPg0KCQkJCQkJCQkJCQkJPC9kaXY+DQoJCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImNvbC1zbS0zIj4NCgkJCQkJCQkJCQkJCQk8aDMgY2xhc3M9InRpdGxlIj5PTUcgaW4gQWN0aW9uITwvaDM+DQoJCQkJCQkJCQkJCQkJPHVsPg0KCQkJCQkJCQkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9wdWJsaWNfc2NoZWR1bGUvIj5Xb3JrIGluIFByb2dyZXNzPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL3RlY2hub2xvZ3kvcmZjLWZvcm0uaHRtIj5SRkMgQ29tbWVudHMgRm9ybTwvYT48L2xpPg0KCQkJCQkJCQkJCQkJCSAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9ob21lcGFnZXMvaW5kZXguaHRtIj5UZWNobm9sb2d5IENvbW1pdHRlZXMgRGlyZWN0b3J5PC9hPjwvbGk+DQoJCQkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL2Fib3V0L29tZy1zdGFuZGFyZHMtaW50cm9kdWN0aW9uLmh0bSI+UG9wdWxhciBPTUcgU3RhbmRhcmRzPC9hPjwvbGk+DQoJCQkJCQkJCQkJCQkJICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL2V2ZW50cy9zdHVkZW50LXBvc3Rlci1zZXNzaW9uLXByb2dyYW0vaW5kZXguaHRtIj5TdHVkZW50IFJlc2VhcmNoPC9hPjwvbGk+DQoJCQkJCQkJCQkJCQkgIDwvdWw+DQoJCQkJCQkJCQkJCQk8L2Rpdj4NCgkJCQkJCQkJCQkJPC9kaXY+DQoJCQkJCQkJCQkJPC9saT4NCgkJCQkJCQkJCTwvdWw+DQoJCQkJCQkJCTwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTcGVjcyAtLT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUHJvZ3JhbXMgLS0+DQoJCQkJCQkJCQ0KCQkJCQkJCQk8bGkgY2xhc3M9ImRyb3Bkb3duIGRyb3Bkb3duLXJpZ2h0IGZobW0tZnciPg0KCQkJCQkJCQkJPGEgaHJlZj0iIyIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIiBjbGFzcz0iZHJvcGRvd24tdG9nZ2xlIj5Qcm9ncmFtcyA8YiBjbGFzcz0iY2FyZXQiPjwvYj48L2E+DQoJCQkJCQkJCQkNCgkJCQkJCQkJCTx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSBmdWxsIj4NCgkJCQkJCQkJCQk8bGkgY2xhc3M9ImZobW0tY29udGVudCB3aXRob3V0ZGVzYyI+DQoJCQkJCQkJCQkJCTxkaXYgY2xhc3M9InJvdyI+DQoJCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJjb2wtc20tNiI+DQoJCQkJCQkJCQkJCQkJPGgzIGNsYXNzPSJ0aXRsZSI+Q2VydGlmaWNhdGlvbnM8L2gzPg0KCQkJCQkJCQkJCQkJCTx1bD4NCgkJCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvb2N1cC0yL2luZGV4Lmh0bSI+T0NVUCAyIC0gVU1MIENlcnRpZmljYXRpb248L2E+PC9saT4NCgkJCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvb2NlYi0yL2luZGV4Lmh0bSI+T0NFQiAyIC0gQlBNIENlcnRpZmljYXRpb248L2E+PC9saT4NCgkJCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvb2NzbXAvaW5kZXguaHRtIj5PQ1NNUCAtIFN5c01MIENlcnRpZmljYXRpb248L2E+PC9saT4NCgkJCQkJCQkJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvb2NyZXMvaW5kZXguaHRtIj5PQ1JFUyAtIFJlYWwtdGltZSBDZXJ0aWZpY2F0aW9uPC9hPjwvbGk+DQoJCQkJCQkJCQkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL2NnaS1iaW4vc2VhcmNoY2VydC5jZ2kiIHRhcmdldD0iX2JsYW5rIj5DZXJ0aWZpZWQgUHJvZmVzc2lvbmFscyBEaXJlY3Rvcnk8L2E+PC9saT4NCgkJCQkJCQkJCQkJCQk8L3VsPg0KCQkJCQkJCQkJCQkJPC9kaXY+DQoJCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJjb2wtc20tNiI+DQoJCQkJCQkJCQkJCQkJPGgzIGNsYXNzPSJ0aXRsZSI+TWFuYWdlZCBQcm9ncmFtczwvaDM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmJwbS1wbHVzLm9yZy8iIG9uY2xpY2s9InRyYWNrT3V0Ym91bmRMaW5rKCdodHRwczovL3d3dy5icG0tcGx1cy5vcmcvJyk7IHJldHVybiBmYWxzZTsiPjxpIGNsYXNzPSJmYSBmYS1oZWFydGJlYXQiPjwvaT4gQlBNJiM0MzsgSGVhbHRoPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL2l0LWNpc3Eub3JnIiBvbmNsaWNrPSJ0cmFja091dGJvdW5kTGluaygnaHR0cHM6Ly9pdC1jaXNxLm9yZycpOyByZXR1cm4gZmFsc2U7Ij48aSBjbGFzcz0iZmEgZmEtY29kZSI+PC9pPiBDb25zb3J0aXVtIGZvciBJbmZvcm1hdGlvbiAmYW1wOyBTb2Z0d2FyZSBRdWFsaXR5ICAtIENJU1E8L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5kZHMtZm91bmRhdGlvbi5vcmcvIiBvbmNsaWNrPSJ0cmFja091dGJvdW5kTGluaygnaHR0cHM6Ly93d3cuZGRzLWZvdW5kYXRpb24ub3JnLycpOyByZXR1cm4gZmFsc2U7Ij48aSBjbGFzcz0iZmEgZmEtY29ubmVjdGRldmVsb3AiPjwvaT4gRERTIEZvdW5kYXRpb248L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5paWNvbnNvcnRpdW0ub3JnLyIgb25jbGljaz0idHJhY2tPdXRib3VuZExpbmsoJ2h0dHBzOi8vd3d3LmlpY29uc29ydGl1bS5vcmcvJyk7IHJldHVybiBmYWxzZTsiPjxpIGNsYXNzPSJmYSBmYS1nZWFyIj48L2k+IEluZHVzdHJpYWwgSW50ZXJuZXQgQ29uc29ydGl1bSAtIElJQzwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4NCgkJCQkJCQkJCQkJCTwvZGl2Pg0KCQkJCQkJCQkJCQk8L2Rpdj48IS0tIGVuZCByb3cgLS0+DQoJCQkJCQkJCQkJPC9saT48IS0tIGVuZCBncmlkIGRlbW8gLS0+DQoJCQkJCQkJCQk8L3VsPjwhLS0gZW5kIGRyb3AgZG93biBtZW51IC0tPg0KCQkJCQkJCQk8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQcm9ncmFtcyAtLT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCQkJCQkJCQk8IS0tIE1lbWJlcnNoaXAgLS0+DQoJCQkJCQkJCSA8bGkgY2xhc3M9ImRyb3Bkb3duIj4NCgkJCQkJCQkJCTxhIGhyZWY9IiMiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSI+TWVtYmVyc2hpcCA8YiBjbGFzcz0iY2FyZXQiPjwvYj48L2E+DQoJCQkJCQkJCQk8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiIHJvbGU9Im1lbnUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvYWJvdXQvbmV3LXRvLW9tZy5odG0iPk5ldyB0byBPTUc/PC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9iZS1hLW1lbWJlci5odG0iPkJlY29tZSBhIE1lbWJlcjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvY2dpLWJpbi9hcHBzL21lbWJlcnNlYXJjaC5wbCI+Q3VycmVudCBNZW1iZXJzPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9xdW90ZXMuaHRtIj5NZW1iZXIgUXVvdGVzPC9hPjwvbGk+DQogICAgIA0KCQkJCQkJCQkgICA8L3VsPg0KCQkJCQkJCQk8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1lbWJlcnNoaXAgLS0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCQkJCQkJCQk8IS0tIE1lbWJlcnNoaXAgLS0+DQoJCQkJCQkJCSA8bGkgY2xhc3M9ImRyb3Bkb3duIj4NCgkJCQkJCQkJCTxhIGhyZWY9IiMiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biIgY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSI+TWVtYmVycyBBcmVhIDxiIGNsYXNzPSJjYXJldCI+PC9iPjwvYT4NCgkJCQkJCQkJCTx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSIgcm9sZT0ibWVudSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9tZW1iZXJzLyI+PGkgY2xhc3M9ImZhIGZhLWxvY2siPjwvaT5Mb2ctSW48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL2xvZ2luL2luZGV4Lmh0bSI+PGkgY2xhc3M9ImZhIGZhLXVubG9jayI+PC9pPkxvZy1JbiBBc3Npc3RhbmNlPC9hPjwvbGk+DQoJCQkJCQkJCQkNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJCQ0KCQkJCQkJCQkgICA8L3VsPg0KCQkJCQkJCQk8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1lbWJlcnNoaXAgLS0+DQoJCQkJCQkJPC91bD48IS0tIGVuZCBuYXYgbmF2YmFyLW5hdiAtLT4NCgkJCQkJCTwvZGl2PjwhLS0gZW5kICNtYWluLW5hdiAtLT4NCg0KCQkJCQk8L25hdj4NCg0KDQoNCg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCjwvaGVhZGVyPg0KPCEtLSBCT0RZIEhFQURFUiBJTkNMVURFIEVORCAtLT4NCjxkaXYgY2xhc3M9Im1haW4iIHJvbGU9Im1haW4iPiA8IS0tIE1haW4gLS0+CiAgICA8c2VjdGlvbiBjbGFzcz0icGFnZS1oZWFkaW5nIiByb2xlPSJuYXZpZ2F0aW9uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTkiPgogICAgICAgICAgICAgICAgICAgIDxoMT5BYm91dCB0aGUgQXN5bmNocm9ub3VzIE1ldGhvZCBJbnZvY2F0aW9uIGZvciBDQ00gU3BlY2lmaWNhdGlvbiBWZXJzaW9uIDEuMDwvaDE+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0zIj4KICAgICAgICAgICAgICAgICAgICA8dWwgcm9sZT0ibWVudSIgY2xhc3M9ImJyZWFkY3J1bWIiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT0ibWVudWl0ZW0iIGNsYXNzPSJhY3RpdmUiPjEuMDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT0ibWVudWl0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvc3BlYy9BTUk0Q0NNLyI+QU1JNENDTTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT0ibWVudWl0ZW0iPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvc3BlYyI+U3BlY2lmaWNhdGlvbnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgPGRpdiBjbGFzcz0icGFnZS1jb250ZW50IiByb2xlPSJkaXJlY3RvcnkiPgogICAgICAgIDxzZWN0aW9uIGlkPSJkb2N1bWVudC1tZXRhZGF0YSIgcm9sZT0iY29tcGxlbWVudGFyeSIgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8aDEgY2xhc3M9InNwZWMtYWNyb255bSBjb2wtbWQtMyI+QU1JNENDTeKEojwvaDE+CiAgICAgICAgICAgICAgICA8aDEgY2xhc3M9InNwZWMtbmFtZSIgc3R5bGU9InRleHQtdHJhbnNmb3JtOiBub25lIj5Bc3luY2hyb25vdXMgTWV0aG9kIEludm9jYXRpb24gZm9yIENDTTwvaDE+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJ0ZXh0LWFsaWduOiBqdXN0aWZ5Ij5UaGlzIHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIG1lY2hhbmlzbSB0byBwZXJmb3JtIGFzeW5jaHJvbm91cyBtZXRob2QgaW52b2NhdGlvbiBmb3IgQ0NNIChBTUk0Q0NNKS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGwgY2xhc3M9ImRsLWhvcml6b250YWwgY29sLW1kLTExIj4KICAgICAgICAgICAgICAgICAgICA8IS0tIHRpdGxlIC0tPgogICAgICAgICAgICAgICAgICAgIDxkdD5UaXRsZTo8L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD5Bc3luY2hyb25vdXMgTWV0aG9kIEludm9jYXRpb24gZm9yIENDTTwvZGQ+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBhY3JvbnltIC0tPgogICAgICAgICAgICAgICAgICAgIDxkdD5BY3JvbnltOjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPkFNSTRDQ03ihKI8L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB2ZXJzaW9uIC0tPgogICAgICAgICAgICAgICAgICAgIDxkdD5WZXJzaW9uOjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPlRoaXMgdmVyc2lvbiB3YXMgc3VwZXJzZWRlZCBieSBhIG5ld2VyIGludmVudG9yeS4gVGhlIGxhdGVzdCB2ZXJzaW9uIGNhbiBiZSBmb3VuZCBoZXJlOiA8YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9zcGVjL0FNSTRDQ00vIj5odHRwczovL3d3dy5vbWcub3JnL3NwZWMvQU1JNENDTS88L2E+PC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgICAgIDwhLS0gZG9jdW1lbnQgc3RhdHVzIC0tPgogICAgICAgICAgICAgICAgICAgIDxkdD5Eb2N1bWVudCBTdGF0dXM6PC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0icmlnaHQiIGRhdGEtY29udGFpbmVyPSdib2R5JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT0iRm9ybWFsIFNwZWNpZmljYXRpb25zIGhhdmUgYmVlbiBhcHByb3ZlZCBieSBPTUcgQm9hcmQgb2YgRGlyZWN0b3JzIGFuZCBoYXZlIGJlZW4gZWRpdGVkLiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYWwgJiM5NDMyOwogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBwdWJsaWNhdGlvbiBkYXRlIC0tPgogICAgICAgICAgICAgICAgICAgIDxkdD5QdWJsaWNhdGlvbiBEYXRlOjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPiAgICAgICAgICAgIE1hcmNoIDIwMTMKICAgIDwvZGQ+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBjYXRlZ29yaWVzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD5DYXRlZ29yaWVzOjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZCByb2xlPSJsaXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCByb2xlPSJncm91cCIgY2xhc3M9Imxpc3QtaW5saW5lIGRkLWxpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSByb2xlPSJsaXN0aXRlbSIgY2xhc3M9InRleHQtY2FwaXRhbGl6ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYmFkZ2UgYmFkZ2UtaW5mbyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvc3BlYy9jYXRlZ29yeS9jb3JiYS1wbGF0Zm9ybS8iPjxlbT5Db3JiYSBQbGF0Zm9ybTwvZW0+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSByb2xlPSJsaXN0aXRlbSIgY2xhc3M9InRleHQtY2FwaXRhbGl6ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYmFkZ2UgYmFkZ2UtaW5mbyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvc3BlYy9jYXRlZ29yeS9jb21wb25lbnQtYXJjaGl0ZWN0dXJlLyI+PGVtPkNvbXBvbmVudCBBcmNoaXRlY3R1cmU8L2VtPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gaXByIG1vZGUgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJyaWdodCIgZGF0YS1jb250YWluZXI9J2JvZHknIGRhdGEtaHRtbD0idHJ1ZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPSdPTUcmIzM5O3MgUG9saWN5IG9uIEludGVsbGVjdHVhbCBQcm9wZXJ0eSBSaWdodHMgaXMgZGVzaWduZWQgdG8gZW5hYmxlIHRoZSBvcGVuIGRldmVsb3BtZW50LCBkaXNzZW1pbmF0aW9uLCBhbmQgdXNlIG9mIGl0cyBzcGVjaWZpY2F0aW9ucywgYW5kIHRoZWlyIGJyb2FkIGltcGxlbWVudGF0aW9uIGFuZCB1cHRha2UuIFNwZWNpZmljYXRpb25zLCBpbmNsdWRpbmcgRmluYWxpemF0aW9uL1JldmlzaW9uIFRhc2sgRm9yY2UgUmVwb3J0cyBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBhIGRlY2xhcmVkIEludGVsbGVjdHVhbCBQcm9wZXJ0eSBSaWdodHMgc3RhdGVtZW50IGJhc2VkIG9uIGVpdGhlciBSQU5ELCBSRiBvbiBMaW1pdGVkIFRlcm1zLCBvciBOb24tQXNzZXJ0Ljxici8+U2VlIHRoZSBPTUcgUG9saWN5IFN0YXRlbWVudCwgSW50ZWxsZWN0dWFsIFByb3BlcnR5IFJpZ2h0cywgY2xpY2sgdGhlIGxpbmsgZm9yIGRldGFpbHMuJz4gPGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cDovL2RvYy5vbWcub3JnL2lwciI+SVBSIE1vZGUgJiM5NDMyOzwvYT48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0icmlnaHQiIGRhdGEtY29udGFpbmVyPSdib2R5JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9J0VhY2ggT2JsaWdhdGVkIFBhcnR5IGluIGFuIFJGIG9uIExpbWl0ZWQgVGVybXMgSVBSIE1vZGUgQWRvcHRpb24gb3IgUmV2aXNpb24gUHJvY2VzcyBjb3ZlbmFudHMgdGhhdCBpdCB3aWxsIGdyYW50IHRvIGFuIHVucmVzdHJpY3RlZCBudW1iZXIgb2YgYXBwbGljYW50cyBhIHJveWFsdHkgYW5kIGZlZSBmcmVlLCBub25leGNsdXNpdmUsIHdvcmxkd2lkZSwgbm9uLXN1YmxpY2Vuc2FibGUsIHBlcnBldHVhbCBwYXRlbnQgbGljZW5zZSB0byBpdHMgRXNzZW50aWFsIENsYWltcyc+UkYtTGltaXRlZCAmIzk0MzI7PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0xIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tYm90dG9tOiA1cHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImRvd25sb2FkLWRvY3VtZW50IiBkYXRhLXNwZWM9IkFNSTRDQ00vMS4wIiBkYXRhLWxhYmVsPSJBTUk0Q0NNLzEuMC9QREYiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvc3BlYy9BTUk0Q0NNLzEuMC9QREYiIHRpdGxlPSJDbGljayB0byBEb3dubG9hZCBTcGVjaWZpY2F0b24gRG9jdW1lbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbGUtcGRmLW8gZmEtM3giPjwvaT48YnIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpY2F0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8aHIgY2xhc3M9ImNvbnRhaW5lcuKAnS8iPgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPHNlY3Rpb24gaWQ9InRvYyIgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxoMiByb2xlPSJoZWFkaW5nIiBhcmlhLWxldmVsPSIxIj5UYWJsZSBPZiBDb250ZW50czwvaDI+CiAgICAgICAgICAgIDx1bCByb2xlPSJkaXJlY3RvcnkiIGNsYXNzPSJ0b2MiPgogICAgICAgICAgICA8bGkgY2xhc3M9InRvY2xpbmUiPjxhIGNsYXNzPSJ0ZXh0LWluZm8iIGhyZWY9IiNkb2N1bWVudC1tZXRhZGF0YSI+QWJvdXQgdGhlIFNwZWNpZmljYXRpb248L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b2NsaW5lIj48YSBjbGFzcz0idGV4dC1pbmZvIiBocmVmPSIjY29tcGFuaWVzIj5Db21wYW5pZXMgdGhhdCBoYXZlIGNvbnRyaWJ1dGVkIHRvIHRoZSBkZXZlbG9wbWVudCBvZiB0aGlzIFNwZWNpZmljYXRpb248L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b2NsaW5lIj48YSBjbGFzcz0idGV4dC1pbmZvIiBocmVmPSIjZG9jdW1lbnRzIj5TcGVjaWZpY2F0aW9uIERvY3VtZW50czwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InRvYyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9jbGluZSI+PGEgY2xhc3M9InRleHQtaW5mbyIgaHJlZj0iI2RvY3Mtbm9ybWF0aXZlLXN1cHBvcnRpbmciPk5vcm1hdGl2ZSBEb2N1bWVudHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9jbGluZSI+PGEgY2xhc3M9InRleHQtaW5mbyIgaHJlZj0iI2RvY3Mtbm9ybWF0aXZlLW1hY2hpbmUiPk5vcm1hdGl2ZSBNYWNoaW5lIFJlYWRhYmxlIERvY3VtZW50czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b2NsaW5lIj48YSBjbGFzcz0idGV4dC1pbmZvIiBocmVmPSIjc3BlYy12ZXJzaW9ucyI+SGlzdG9yeTwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InRvYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvY2xpbmUiPjxhIGNsYXNzPSJ0ZXh0LWluZm8iIGhyZWY9IiNzcGVjLXZlcnNpb25zLWZvcm1hbCI+Rm9ybWFsIFZlcnNpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InRvY2xpbmUiPjxhIGNsYXNzPSJ0ZXh0LWluZm8iIGhyZWY9IiNpbnZlbnRvcnktbGlua3MiPkxpbmtzPC9hPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPGhyIGNsYXNzPSJjb250YWluZXLigJ0vIj4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9ImNvbXBhbmllcyIgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8aDIgcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMSI+Q29tcGFuaWVzIHRoYXQgaGF2ZSBjb250cmlidXRlZCB0byB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBTcGVjaWZpY2F0aW9uPC9oMj4KICAgICAgICAgICAgICAgIDx1bCByb2xlPSJkaXJlY3RvcnkiIGNsYXNzPSJ0b2MiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG9jbGluZSI+Q29weXJpZ2h0IMKpIDIwMTMgPGEgY2xhc3M9InRleHQtaW5mbyIgaHJlZj0iL3NwZWMvY29tcGFueS9vYmplY3QtbWFuYWdlbWVudC1ncm91cCI+T2JqZWN0IE1hbmFnZW1lbnQgR3JvdXA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ0b2NsaW5lIj5Db3B5cmlnaHQgwqkgMjAxMS0yMDEyIDxhIGNsYXNzPSJ0ZXh0LWluZm8iIGhyZWY9Ii9zcGVjL2NvbXBhbnkvcmVtZWR5LWl0Ij5SZW1lZHkgSVQ8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8aHIgY2xhc3M9ImNvbnRhaW5lcuKAnS8iPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgCiAgICAgICAgPHNlY3Rpb24gaWQ9Imlzc3VlcyIgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxoMiByb2xlPSJoZWFkaW5nIiBhcmlhLWxldmVsPSIxIj5Jc3N1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3BlY2lmaWNhdGlvbjwvaDI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciBpc3N1ZXMtbGlua3MiPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImNvbC1tZC0yIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2lzc3Vlcy5vbWcub3JnL2lzc3Vlcy9zcGVjL0FNSTRDQ00vMS4wIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWxpc3QgZmEtM3giPjwvaT48YnIvPgogICAgICAgICAgICAgICAgICAgICAgICBJc3N1ZXMgUmVwb3J0ZWQgaW4gdGhpcyBTcGVjaWZpY2F0aW9uCiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9ImNvbC1tZC0yIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2lzc3Vlcy5vbWcub3JnL2lzc3Vlcy9zcGVjL0FNSTRDQ00vMS4wL2ZpeGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZsYWctY2hlY2tlcmVkIGZhLTN4Ij48L2k+PGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgSXNzdWVzIEZpeGVkIGluIHRoaXMgU3BlY2lmaWNhdGlvbgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJjb2wtbWQtMiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9pc3N1ZXMub21nLm9yZy9pc3N1ZXMvY3JlYXRlLW5ldy1pc3N1ZT9zcGVjaWZpY2F0aW9uPUFNSTRDQ00lMjMxLjAiPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY29tbWVudGluZyBmYS0zeCI+PC9pPjxici8+CiAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9ydCBhbiBpc3N1ZQogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImNvbC1tZC0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9pc3N1ZXMub21nLm9yZy9icm93c2UvQU1JNENDTTEyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS11c2VycyBmYS0zeCI+PC9pPjxici8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc3N1ZSBUcmFja2VyIChNZW1iZXJzIE9ubHkpCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGhyIGNsYXNzPSJjb250YWluZXLigJ0vIj4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDxzZWN0aW9uIGlkPSJkb2N1bWVudHMiIGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICA8aDIgcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMSI+U3BlY2lmaWNhdGlvbiBEb2N1bWVudHM8L2gyPgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJjb250YWluZXIiIGlkPSJkb2NzLW5vcm1hdGl2ZS1zdXBwb3J0aW5nIj4KICAgICAgICA8aDMgcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMiI+Tm9ybWF0aXZlIERvY3VtZW50czwvaDM+CiAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtcmVzcG9uc2l2ZSI+CiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtc3RyaXBlZCI+CiAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImNvbC14cy01Ij5EZXNjcmlwdGlvbjwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjb2wteHMtMSI+Rm9ybWF0PC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImNvbC14cy0zIj5VUkw8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iY29sLXhzLTIiPk9NRyBGaWxlIElEPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9ImRvY3VtZW50LWV4cGxhbmF0aW9uIj5TcGVjaWZpY2F0aW9uPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJkb2N1bWVudC1mb3JtYXQiPlBERjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImRvd25sb2FkLWRvY3VtZW50IiBkYXRhLXNwZWM9IkFNSTRDQ00vMS4wIiBkYXRhLWxhYmVsPSJBTUk0Q0NNLzEuMC9QREYiIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvc3BlYy9BTUk0Q0NNLzEuMC9QREYiPkFNSTRDQ00vMS4wL1BERjwvYT48YnIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJkb2N1bWVudC1udW1iZXIiIHRpdGxlPSI0NzQ5MjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWFsLzEzLTA0LTAxCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImNvbnRhaW5lciIgaWQ9ImRvY3Mtbm9ybWF0aXZlLW1hY2hpbmUiPgogICAgICAgIDxoMyByb2xlPSJoZWFkaW5nIiBhcmlhLWxldmVsPSIyIj5Ob3JtYXRpdmUgTWFjaGluZSBSZWFkYWJsZSBEb2N1bWVudHM8L2gzPgogICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLXJlc3BvbnNpdmUiPgogICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLXN0cmlwZWQiPgogICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjb2wteHMtNSI+RGVzY3JpcHRpb248L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iY29sLXhzLTEiPkZvcm1hdDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJjb2wteHMtMyI+VVJMPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImNvbC14cy0yIj5PTUcgRmlsZSBJRDwvdGg+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJkb2N1bWVudC1leHBsYW5hdGlvbiI+QXN5bmNocm9ub3VzIE1ldGhvZCBJbnZvY2F0aW9uIGZvciBDQ00gRlRGIHppcHBlZCBJREwgZmlsZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZG9jdW1lbnQtZm9ybWF0Ij5JREw8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJkb3dubG9hZC1kb2N1bWVudCIgZGF0YS1zcGVjPSJBTUk0Q0NNLzEuMCIgZGF0YS1sYWJlbD0iQU1JNENDTS8yMDEyMDcwNy9hbWk0Y2NtLmlkbCIgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9zcGVjL0FNSTRDQ00vMjAxMjA3MDcvYW1pNGNjbS5pZGwiPkFNSTRDQ00vMjAxMjA3MDcvYW1pNGNjbS5pZGw8L2E+PGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZG9jdW1lbnQtbnVtYmVyIiB0aXRsZT0iNDczOTE4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0Yy8xMi0wNy0wNwogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz0iY29udGFpbmVy4oCdLyI+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBpZD0ic3BlYy12ZXJzaW9ucyIgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxoMiByb2xlPSJoZWFkaW5nIiBhcmlhLWxldmVsPSIxIj5IaXN0b3J5PC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImNvbnRhaW5lciIgaWQ9InNwZWMtdmVyc2lvbnMtZm9ybWFsIj4KICAgICAgICA8aDMgcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMiI+Rm9ybWFsIFZlcnNpb25zPC9oMz4KICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1yZXNwb25zaXZlIj4KICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1zdHJpcGVkIj4KICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImNvbC14cy0yIj5WZXJzaW9uPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImNvbC14cy0zIj5BZG9wdGlvbiBEYXRlPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9ImNvbC14cy03Ij5VUkw8L3RoPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4xLjA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+ICAgICAgICAgICAgTWFyY2ggMjAxMwogICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvc3BlYy9BTUk0Q0NNLzEuMCI+aHR0cHM6Ly93d3cub21nLm9yZy9zcGVjL0FNSTRDQ00vMS4wPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDxociBjbGFzcz0iY29udGFpbmVy4oCdLyI+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8c2VjdGlvbiBpZD0iaW52ZW50b3J5LWxpbmtzIiByb2xlPSJjb21wbGVtZW50YXJ5IiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGgyIHJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjEiPkxpbmtzPC9oMj4KICAgICAgICAgICAgPGRsIGNsYXNzPSJkbC1ob3Jpem9udGFsIj4KICAgICAgICAgICAgICAgIDxkdD5UaGlzIERvY3VtZW50OjwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+PGEgaHJlZj0iaHR0cHM6Ly93d3cub21nLm9yZy9zcGVjL0FNSTRDQ00vMS4wLyI+aHR0cHM6Ly93d3cub21nLm9yZy9zcGVjL0FNSTRDQ00vMS4wLzwvYT48L2RkPgoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGR0IGNsYXNzPSJzbWFsbCI+UkRGPC9kdD4KICAgICAgICAgICAgICAgIDxkZCBjbGFzcz0ic21hbGwiPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvc3BlYy9BTUk0Q0NNLzEuMC9BYm91dC1BTUk0Q0NNLnJkZiI+aHR0cHM6Ly93d3cub21nLm9yZy9zcGVjL0FNSTRDQ00vMS4wL0Fib3V0LUFNSTRDQ00ucmRmPC9hPjwvZGQ+CgogICAgICAgICAgICAgICAgPGR0IGNsYXNzPSJzbWFsbCI+SlNPTi1MRDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQgY2xhc3M9InNtYWxsIj48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL3NwZWMvQU1JNENDTS8xLjAvQWJvdXQtQU1JNENDTS5qc29ubGQiPmh0dHBzOi8vd3d3Lm9tZy5vcmcvc3BlYy9BTUk0Q0NNLzEuMC9BYm91dC1BTUk0Q0NNLmpzb25sZDwvYT48L2RkPgoKICAgICAgICAgICAgICAgIDxkdD5MYXRlc3QgRG9jdW1lbnQ6PC9kdD4KICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL3NwZWMvQU1JNENDTS8iPmh0dHBzOi8vd3d3Lm9tZy5vcmcvc3BlYy9BTUk0Q0NNLzwvYT48L2RkPgoKICAgICAgICAgICAgICAgIDxkdCBjbGFzcz0ic21hbGwiPlJERjwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQgY2xhc3M9InNtYWxsIj48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL3NwZWMvQU1JNENDTS9BYm91dC1BTUk0Q0NNLnJkZiI+aHR0cHM6Ly93d3cub21nLm9yZy9zcGVjL0FNSTRDQ00vQWJvdXQtQU1JNENDTS5yZGY8L2E+PC9kZD4KCiAgICAgICAgICAgICAgICA8ZHQgY2xhc3M9InNtYWxsIj5KU09OLUxEPC9kdD4KICAgICAgICAgICAgICAgIDxkZCBjbGFzcz0ic21hbGwiPjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm9tZy5vcmcvc3BlYy9BTUk0Q0NNL0Fib3V0LUFNSTRDQ00uanNvbmxkIj5odHRwczovL3d3dy5vbWcub3JnL3NwZWMvQU1JNENDTS9BYm91dC1BTUk0Q0NNLmpzb25sZDwvYT48L2RkPgoKICAgICAgICAgICAgICAgIDxkdD5NZW1iZXJzIE9ubHk6PC9kdD4KICAgICAgICAgICAgICAgIDxkZD48YSBocmVmPSJodHRwczovL3d3dy5vbWcub3JnL21lbWJlcnMvc3BlYy9BTUk0Q0NNLzEuMC8iPmh0dHBzOi8vd3d3Lm9tZy5vcmcvbWVtYmVycy9zcGVjL0FNSTRDQ00vMS4wLzwvYT48L2RkPgogICAgICAgICAgICAgICAgPCEtLSBrZXl3b3JkcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgPC9zZWN0aW9uPgogICAgPC9kaXY+IDwhLS0gUGFnZSBDb250ZW50IC8gRW5kIC0tPgo8L2Rpdj4gPCEtLSBNYWluIC8gRW5kIC0tPgoKICAgIDwhLS0gQk9EWSBGT09URVIgSU5DTFVERSBCRUdJTiAtLT4NCjwhLS0gRm9vdGVyIC0tPg0KPGZvb3RlciBjbGFzcz0iZm9vdGVyIiBpZD0iZm9vdGVyIj4NCiAgICA8ZGl2IGNsYXNzPSJmb290ZXItd2lkZ2V0cyI+DQogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS00IGNvbC1tZC0zIj4NCiAgICAgICAgICAgICAgICAgICAgPCEtLSBXaWRnZXQgOjogQ3VzdG9tIE1lbnUgLS0+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndpZGdldF9uYXZfbWVudSB3aWRnZXQgd2lkZ2V0X19mb290ZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ3aWRnZXQtdGl0bGUiPkN1c3RvbSBMaW5rczwvaDM+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtY29udGVudCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iLy93d3cub21nLm9yZy9nZXR0aW5nc3RhcnRlZC9ib2RfcHVibGljLmh0bSI+Qm9hcmQgb2YgRGlyZWN0b3JzPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvL3d3dy5vbWcub3JnL2xlZ2FsL2luZGV4Lmh0bSI+TGVnYWw8L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8vd3d3Lm9tZy5vcmcvYWJvdXQvbGlhaXNvbi5odG0iPkxpYWlzb24gUmVsYXRpb25zPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIvL3d3dy5vbWcub3JnL2Fib3V0L3N0YWZmLmh0bSI+TWVldCBPdXIgU3RhZmY8L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8IS0tIC9XaWRnZXQgOjogQ3VzdG9tIE1lbnUgLS0+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTQgY29sLW1kLTYiPg0KICAgICAgICAgICAgICAgICAgICA8IS0tIFdpZGdldCA6OiBUZXh0IFdpZGdldCAtLT4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0id2lkZ2V0X3RleHQgd2lkZ2V0IHdpZGdldF9fZm9vdGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0id2lkZ2V0LXRpdGxlIj5BYm91dCBVczwvaDM+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3aWRnZXQtY29udGVudCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VGhlIE9iamVjdCBNYW5hZ2VtZW50IEdyb3VwJnJlZzsgKE9NRyZyZWc7KSBpcyBhbiBpbnRlcm5hdGlvbmFsLCBvcGVuIG1lbWJlcnNoaXAsIG5vdC1mb3ItcHJvZml0IHRlY2hub2xvZ3kgc3RhbmRhcmRzIGNvbnNvcnRpdW0uPC9wPg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Rm91bmRlZCBpbiAxOTg5LCBPTUcgc3RhbmRhcmRzIGFyZSBkcml2ZW4gYnkgdmVuZG9ycywgZW5kLXVzZXJzLCBhY2FkZW1pYyBpbnN0aXR1dGlvbnMgYW5kIGdvdmVybm1lbnQgYWdlbmNpZXMuIE9NRyBUYXNrIEZvcmNlcyBkZXZlbG9wIGVudGVycHJpc2UgaW50ZWdyYXRpb24gc3RhbmRhcmRzIGZvciBhIHdpZGUgcmFuZ2Ugb2YgdGVjaG5vbG9naWVzIGFuZCBhbiBldmVuIHdpZGVyIHJhbmdlIG9mIGluZHVzdHJpZXMuPC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii8vd3d3Lm9tZy5vcmcvYWJvdXQvaW5kZXguaHRtIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5MZWFybiBNb3JlPC9hPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8IS0tIC9XaWRnZXQgOjogVGV4dCBXaWRnZXQgLS0+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTQgY29sLW1kLTMiPg0KICAgICAgICAgICAgICAgICAgICA8IS0tIFdpZGdldCA6OiBDb250YWN0cyBJbmZvIC0tPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0cy13aWRnZXQgd2lkZ2V0IHdpZGdldF9fZm9vdGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0id2lkZ2V0LXRpdGxlIj5Db250YWN0IFVzPC9oMz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IndpZGdldC1jb250ZW50Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImNvbnRhY3RzLWluZm8tbGlzdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1tYXAtbWFya2VyIj48L2k+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWl0ZW0iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwOSBIaWdobGFuZCBBdmU8YnI+TmVlZGhhbSwgTUEgMDI0OTQgVVNBDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXBob25lIj48L2k+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWl0ZW0iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBoLisxIDc4MSA0NDQtMDQwNDxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYXggKzEgNzgxLTQ0NC0wMzIwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWVudmVsb3BlIj48L2k+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5mby1pdGVtIj4NCgkJCQkJCQkJCQkJCQk8YSBocmVmPSJtYWlsdG86aW5mb0BvbWcub3JnIj5pbmZvQG9tZy5vcmc8L2E+DQoJCQkJCQkJCQkJCQk8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPCEtLSAvV2lkZ2V0IDo6IENvbnRhY3RzIEluZm8gLS0+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvcHlyaWdodCI+DQogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4NCiAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICZjb3B5OyAyMDIwICA8YSBocmVmPSIvL3d3dy5vbWcub3JnL2luZGV4Lmh0bSI+T2JqZWN0IE1hbmFnZW1lbnQgR3JvdXAmcmVnOywgT01HJnJlZzs8L2E+ICZuYnNwO3wgJm5ic3A7QWxsIFJpZ2h0cyBSZXNlcnZlZA0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS02IGNvbC1tZC02Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic29jaWFsLWxpbmtzLXdyYXBwZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNvY2lhbC1saW5rcy10eHQiPkNvbm5lY3Qgd2l0aCB1czwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ic29jaWFsLWxpbmtzIHNvY2lhbC1saW5rc19fZGFyayI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9PYmplY3QtTWFuYWdlbWVudC1Hcm91cC0xNzE1MzQ0MTAwMjIvIj48aSBjbGFzcz0iZmEgZmEtZmFjZWJvb2siPjwvaT48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9vYmplY3RtZ210Z3JvdXAiPjxpIGNsYXNzPSJmYSBmYS10d2l0dGVyIj48L2k+PC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9ncm91cHMvNjY3OTkiPjxpIGNsYXNzPSJmYSBmYS1saW5rZWRpbiI+PC9pPjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vYmxvZy5vbWcub3JnLyI+PGkgY2xhc3M9ImZhIGZhLXBlbmNpbC1zcXVhcmUtbyI+PC9pPjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDdHVUajF3dHl3b2pZTlpveVBlWUFGdyI+PGkgY2xhc3M9ImZhIGZhLXlvdXR1YmUiPjwvaT48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9wbHVzLmdvb2dsZS5jb20vYi8xMTIzMDM0NjE5OTU4NzAzMTUxNTYvMTEyMzAzNDYxOTk1ODcwMzE1MTU2L3Bvc3RzIj48aSBjbGFzcz0iZmEgZmEtZ29vZ2xlLXBsdXMiPjwvaT48L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+PGkgY2xhc3M9ImZhIGZhLXJzcyI+PC9pPjwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQo8L2Zvb3Rlcj4NCjwhLS0gRm9vdGVyIC8gRW5kIC0tPg0KDQo8IS0tIEphdmFzY3JpcHQgRmlsZXMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KPHNjcmlwdCBzcmM9Ii8vd3d3Lm9tZy5vcmcvdmVuZG9yL2pxdWVyeS0xLjExLjAubWluLmpzIj48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPSIvL3d3dy5vbWcub3JnL3ZlbmRvci9qcXVlcnktbWlncmF0ZS0xLjIuMS5taW4uanMiPjwvc2NyaXB0Pg0KPHNjcmlwdCBzcmM9Ii8vd3d3Lm9tZy5vcmcvdmVuZG9yL2Jvb3RzdHJhcC5taW4uanMiPjwvc2NyaXB0Pg0KPHNjcmlwdCBzcmM9Ii8vd3d3Lm9tZy5vcmcvdmVuZG9yL2hlYWRoZXNpdmUubWluLmpzIj48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPSIvL3d3dy5vbWcub3JnL3ZlbmRvci9maG1tLmpzIj48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPSIvL3d3dy5vbWcub3JnL3ZlbmRvci9qcXVlcnkuZmxpY2tyZmVlZC5qcyI+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0iLy93d3cub21nLm9yZy92ZW5kb3IvaXNvdG9wZS9pc290b3BlLnBrZ2QubWluLmpzIj48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPSIvL3d3dy5vbWcub3JnL3ZlbmRvci9pc290b3BlL2pxdWVyeS5pbWFnZXNsb2FkZWQubWluLmpzIj48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPSIvL3d3dy5vbWcub3JnL3ZlbmRvci9tYWduaWZpYy1wb3B1cC9qcXVlcnkubWFnbmlmaWMtcG9wdXAuanMiPjwvc2NyaXB0Pg0KPHNjcmlwdCBzcmM9Ii8vd3d3Lm9tZy5vcmcvdmVuZG9yL293bC1jYXJvdXNlbC9vd2wuY2Fyb3VzZWwubWluLmpzIj48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPSIvL3d3dy5vbWcub3JnL3ZlbmRvci9qcXVlcnkuZml0dmlkcy5qcyI+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0iLy93d3cub21nLm9yZy92ZW5kb3IvanF1ZXJ5LmFwcGVhci5qcyI+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0iLy93d3cub21nLm9yZy92ZW5kb3IvanF1ZXJ5LnN0ZWxsYXIubWluLmpzIj48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPSIvL3d3dy5vbWcub3JnL3ZlbmRvci9zbmFwLnN2Zy1taW4uanMiPjwvc2NyaXB0Pg0KPHNjcmlwdCBzcmM9Ii8vd3d3Lm9tZy5vcmcvdmVuZG9yL21lZGlhZWxlbWVudC9tZWRpYWVsZW1lbnQtYW5kLXBsYXllci5taW4uanMiPjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGFzeW5jPSIiIHNyYz0iLy93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vZ2EuanMiPjwvc2NyaXB0Pg0KDQo8c2NyaXB0IHNyYz0iLy93d3cub21nLm9yZy9qcy9jdXN0b20uanMiPjwvc2NyaXB0Pg0KDQo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvc2VsZWN0Mi80LjAuMy9qcy9zZWxlY3QyLm1pbi5qcyIgaW50ZWdyaXR5PSJzaGEyNTYtK21XZC9HNjlTNHF0Z1Bvd1NFTEllVkF2NytGdUw4NzFXWGFvbGdYbnJ3UT0iIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0Pg0KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9zZWxlY3QyLzQuMC4zL2Nzcy9zZWxlY3QyLm1pbi5jc3MiIGludGVncml0eT0ic2hhMjU2LXhKT1pIZnB4TFIvdWhoMUJ3WUZTNWZobU9BZElSUWFpT3VsNUYvYjd2M3M9IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiAvPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgew0KICAgICAgICB2YXIgc2VhcmNoQm94ID0gJCgiI3NwZWNzLXNlYXJjaC1ib3giKTsNCiAgICAgICAgc2VhcmNoQm94LnNlbGVjdDIoew0KICAgICAgICAgICAgcGxhY2Vob2xkZXIgICAgICAgICAgICAgOiAiVHlwZSBTcGVjaWZpY2F0aW9ucywgQ2F0ZWdvcmllcyBvciBLZXl3b3JkcyIsDQogICAgICAgICAgICBhbGxvd0NsZWFyICAgICAgICAgICAgICA6IHRydWUsDQogICAgICAgICAgICBtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaCA6IDUNCiAgICAgICAgfSk7DQogICAgICAgIHNlYXJjaEJveC5vbigic2VsZWN0MjpzZWxlY3QiLCBmdW5jdGlvbiAoZSkgew0KICAgICAgICAgICAgdmFyIHBhdGggPSBlLmN1cnJlbnRUYXJnZXQudmFsdWU7DQogICAgICAgICAgICBzZWFyY2hCb3gudmFsKFtdKS50cmlnZ2VyKCJjaGFuZ2UiKTsNCiAgICAgICAgICAgIGlmICghd2luZG93LmxvY2F0aW9uLmhyZWYuZW5kc1dpdGgoIi8iKSkNCiAgICAgICAgICAgICAgICBwYXRoID0gIi8iICsgcGF0aDsNCiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWYgKyBwYXRoOw0KICAgICAgICB9KTsNCiAgICAgICAgJCgiI3NwZWNzLXNlYXJjaC1idXR0b24iKS5oaWRlKCk7DQogICAgICAgICQoImEuZG93bmxvYWQtZG9jdW1lbnQiKS5jbGljayhmdW5jdGlvbigpew0KICAgICAgICAgICAgZ3RhZygnZXZlbnQnLCAnZG93bmxvYWQnLCB7DQogICAgICAgICAgICAgICAgJ2V2ZW50X2NhdGVnb3J5JzogJ2Rvd25sb2FkcycsDQogICAgICAgICAgICAgICAgJ2V2ZW50X2FjdGlvbicgIDogJCh0aGlzKS5kYXRhKCJzcGVjIiksDQogICAgICAgICAgICAgICAgJ2V2ZW50X2xhYmVsJyAgIDogJCh0aGlzKS5kYXRhKCJsYWJlbCIpfSk7DQogICAgICAgIH0pOw0KICAgIH0pOw0KICAgICQoJ1tkYXRhLXRvZ2dsZT0idG9vbHRpcCJdJykudG9vbHRpcCgpDQo8L3NjcmlwdD4NCg0KPCEtLSBCT0RZIEZPT1RFUiBJTkNMVURFIEVORCAtLT4NCjwvYm9keT4KPC9odG1sPgoK
53
+ http_version:
54
+ recorded_at: Sun, 16 Feb 2020 14:45:34 GMT
55
+ recorded_with: VCR 5.0.0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-15 00:00:00.000000000 Z
11
+ date: 2020-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: relaton-calconnect
@@ -16,112 +16,126 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.4.0
19
+ version: 0.5.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.4.0
26
+ version: 0.5.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: relaton-gb
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.9.0
33
+ version: 0.10.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.9.0
40
+ version: 0.10.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: relaton-iec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.7.0
47
+ version: 0.8.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.7.0
54
+ version: 0.8.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: relaton-ietf
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.9.0
61
+ version: 0.10.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.9.0
68
+ version: 0.10.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: relaton-iso
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.9.0
75
+ version: 0.10.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.9.0
82
+ version: 0.10.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: relaton-itu
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.6.0
89
+ version: 0.7.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.6.0
96
+ version: 0.7.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: relaton-nist
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.6.0
103
+ version: 0.7.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.6.0
110
+ version: 0.7.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: relaton-ogc
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.4.0
117
+ version: 0.5.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.5.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: relaton-omg
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.1.0
118
132
  type: :runtime
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: 0.4.0
138
+ version: 0.1.0
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: byebug
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -384,6 +398,7 @@ files:
384
398
  - spec/vcr_cassetes/iso_awi_24229.yml
385
399
  - spec/vcr_cassetes/iso_iec_guide_2.yml
386
400
  - spec/vcr_cassetes/ogc_19_025r1.yml
401
+ - spec/vcr_cassetes/ogm_ami4ccm_1_0.yml
387
402
  - spec/vcr_cassetes/rfc_8341.yml
388
403
  - spec/vcr_cassetes/sp_800_38b.yml
389
404
  homepage: https://github.com/relato/relaton