From 1b34978badab0f68565c2e7ca4822e172b919f47 Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Wed, 27 Feb 2019 14:03:51 -0700 Subject: [PATCH 1/7] Enable checks for jolokia documented fields --- metricbeat/module/jolokia/fields.go | 2 +- metricbeat/module/jolokia/jmx/_meta/fields.yml | 11 ++++++++++- metricbeat/tests/system/test_autodiscover_jolokia.py | 2 ++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/metricbeat/module/jolokia/fields.go b/metricbeat/module/jolokia/fields.go index d87e16c1eb0..c10ab699b9c 100644 --- a/metricbeat/module/jolokia/fields.go +++ b/metricbeat/module/jolokia/fields.go @@ -32,5 +32,5 @@ func init() { // AssetJolokia returns asset data. // This is the base64 encoded gzipped contents of ../metricbeat/module/jolokia. func AssetJolokia() string { - return "eJxsj0FOBCEQRfec4oe1cwEWHsArGGMIVDPl0BShaoxze4NNTC/mLz/8l1cX3OgR8CVVbhwdYGyVAvzb0XgHZNI0uBtLC3h1ALBesUu+V3KAXmXYZ5K2cQnYYtXZDqoUlQLKRCuZcSsa8O5Vq3+Bv5p1/+GAjalmDX/wC1rc6Sw1Y48+QUPufTVPvI6sIZI0i9wUO9ngpKCfLkoZ3xz/P8VCzdb4bHGYnC/4DQAA//8Yw1wH" + return "eJx8kFFuszAQhN99ipGf/+QAfvgP0CtUVeXCQhxsL/IuKdy+IkALaZV5nJ0dfZoTOpocrhy5C94AGjSSg31ZHGuAmqQqodfA2eG/AYD1isT1EMkAcuGi7xXnJrQOjY8yu4UieSGHdq4WUg25FYdXKxLtP9iLam/fDNAEirW4e/kJ2SfaQ83SqZ+LCg/96vzBtWh9RMVZfciCRFpCJaCxZ6Eat+C/Q76lrOvznmIhWdZJ4679N8hTmJ+xrmncSEh3ieNKmx5Z9svcmc83KhI4HxIbXkfTJ5f64fYEctZaiDykDyrg5jjS2XwFAAD//5ObnyM=" } diff --git a/metricbeat/module/jolokia/jmx/_meta/fields.yml b/metricbeat/module/jolokia/jmx/_meta/fields.yml index a927f3fc9f8..4b94f6bea7f 100644 --- a/metricbeat/module/jolokia/jmx/_meta/fields.yml +++ b/metricbeat/module/jolokia/jmx/_meta/fields.yml @@ -1 +1,10 @@ -- release: ga +- key: jmx + type: group + description: > + Jolokia jmx metricset + release: ga + fields: + - name: agent.version + type: keyword + description: > + version number of jolokia agent. diff --git a/metricbeat/tests/system/test_autodiscover_jolokia.py b/metricbeat/tests/system/test_autodiscover_jolokia.py index 4f1858c3d09..2e977b18f66 100644 --- a/metricbeat/tests/system/test_autodiscover_jolokia.py +++ b/metricbeat/tests/system/test_autodiscover_jolokia.py @@ -52,3 +52,5 @@ def test_jolokia_jmx(self): print(evt) assert evt["jolokia"]["test"]["gc"]["collection_count"] >= 0 + + self.assert_fields_are_documented(output[0]) From 90b586a846d62ac815bd47ecc17cdb2e08952399 Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Wed, 27 Feb 2019 22:07:17 -0700 Subject: [PATCH 2/7] Add agent.version --- metricbeat/docs/fields.asciidoc | 10 ++++++++++ metricbeat/module/jolokia/_meta/fields.yml | 4 ++++ metricbeat/module/jolokia/fields.go | 2 +- metricbeat/module/jolokia/jmx/_meta/fields.yml | 4 ---- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index f099a20d9ba..b9ff47beb28 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -11118,6 +11118,16 @@ jolokia contains metrics exposed via jolokia agent +*`jolokia.agent.version`*:: ++ +-- +type: keyword + +version number of jolokia agent. + + +-- + [[exported-fields-kafka]] == Kafka fields diff --git a/metricbeat/module/jolokia/_meta/fields.yml b/metricbeat/module/jolokia/_meta/fields.yml index c70f3a505c7..7accd235c28 100644 --- a/metricbeat/module/jolokia/_meta/fields.yml +++ b/metricbeat/module/jolokia/_meta/fields.yml @@ -11,3 +11,7 @@ description: > jolokia contains metrics exposed via jolokia agent fields: + - name: agent.version + type: keyword + description: > + version number of jolokia agent. diff --git a/metricbeat/module/jolokia/fields.go b/metricbeat/module/jolokia/fields.go index c10ab699b9c..f01546409ba 100644 --- a/metricbeat/module/jolokia/fields.go +++ b/metricbeat/module/jolokia/fields.go @@ -32,5 +32,5 @@ func init() { // AssetJolokia returns asset data. // This is the base64 encoded gzipped contents of ../metricbeat/module/jolokia. func AssetJolokia() string { - return "eJx8kFFuszAQhN99ipGf/+QAfvgP0CtUVeXCQhxsL/IuKdy+IkALaZV5nJ0dfZoTOpocrhy5C94AGjSSg31ZHGuAmqQqodfA2eG/AYD1isT1EMkAcuGi7xXnJrQOjY8yu4UieSGHdq4WUg25FYdXKxLtP9iLam/fDNAEirW4e/kJ2SfaQ83SqZ+LCg/96vzBtWh9RMVZfciCRFpCJaCxZ6Eat+C/Q76lrOvznmIhWdZJ4679N8hTmJ+xrmncSEh3ieNKmx5Z9svcmc83KhI4HxIbXkfTJ5f64fYEctZaiDykDyrg5jjS2XwFAAD//5ObnyM=" + return "eJyEkVFOwzAQRP9zipG/aQ/gDw7AFRBCJtmk29reyLstye1RmgS5AsR+jtczTzsHXGj2OEuUC4cGMLZIHu5lVVwDdKRt4dFYssdzAwDbK5J010gNoCcp9t5K7nnw6EPURS0UKSh5DIu1khnnQT1enWp0T3Ans9G9NUDPFDv1d/MDckhUQy1j87gYFbmOm/IL1zrbR7SSLXBWJLLCrYKmUZQ63Dh8L4WBsm2fa4qa5L5zvFFRllwFrUwXmj+ldJX+JxmwmSBf0wcVSP8Icqyy12bS9COwPsI/cXtR5zTtVyCrNh4b2me/w1cAAAD//5henSM=" } diff --git a/metricbeat/module/jolokia/jmx/_meta/fields.yml b/metricbeat/module/jolokia/jmx/_meta/fields.yml index 4b94f6bea7f..2821e3dcf71 100644 --- a/metricbeat/module/jolokia/jmx/_meta/fields.yml +++ b/metricbeat/module/jolokia/jmx/_meta/fields.yml @@ -4,7 +4,3 @@ Jolokia jmx metricset release: ga fields: - - name: agent.version - type: keyword - description: > - version number of jolokia agent. From 5bc1e0314cefdd29c2a8ed00bb02e1bde6f2623f Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Thu, 28 Feb 2019 10:44:37 -0700 Subject: [PATCH 3/7] Add more fields in doc --- metricbeat/docs/fields.asciidoc | 40 ++++++++++++++++++++++ metricbeat/module/jolokia/_meta/fields.yml | 16 +++++++++ metricbeat/module/jolokia/fields.go | 2 +- 3 files changed, 57 insertions(+), 1 deletion(-) diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index b9ff47beb28..ae78efda278 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -11126,6 +11126,46 @@ type: keyword version number of jolokia agent. +-- + +*`jolokia.agent.id`*:: ++ +-- +type: keyword + +id of jolokia agent. + + +-- + +*`jolokia.server.product`*:: ++ +-- +type: keyword + +server product's name that jolokia agent is installed on. + + +-- + +*`jolokia.server.version`*:: ++ +-- +type: keyword + +server product's version number that jolokia agent is installed on. + + +-- + +*`jolokia.server.vendor`*:: ++ +-- +type: keyword + +server product's vendor name that jolokia agent is installed on. + + -- [[exported-fields-kafka]] diff --git a/metricbeat/module/jolokia/_meta/fields.yml b/metricbeat/module/jolokia/_meta/fields.yml index 7accd235c28..1a01f3ac3f3 100644 --- a/metricbeat/module/jolokia/_meta/fields.yml +++ b/metricbeat/module/jolokia/_meta/fields.yml @@ -15,3 +15,19 @@ type: keyword description: > version number of jolokia agent. + - name: agent.id + type: keyword + description: > + id of jolokia agent. + - name: server.product + type: keyword + description: > + server product's name that jolokia agent is installed on. + - name: server.version + type: keyword + description: > + server product's version number that jolokia agent is installed on. + - name: server.vendor + type: keyword + description: > + server product's vendor name that jolokia agent is installed on. diff --git a/metricbeat/module/jolokia/fields.go b/metricbeat/module/jolokia/fields.go index f01546409ba..124f7bc16da 100644 --- a/metricbeat/module/jolokia/fields.go +++ b/metricbeat/module/jolokia/fields.go @@ -32,5 +32,5 @@ func init() { // AssetJolokia returns asset data. // This is the base64 encoded gzipped contents of ../metricbeat/module/jolokia. func AssetJolokia() string { - return "eJyEkVFOwzAQRP9zipG/aQ/gDw7AFRBCJtmk29reyLstye1RmgS5AsR+jtczTzsHXGj2OEuUC4cGMLZIHu5lVVwDdKRt4dFYssdzAwDbK5J010gNoCcp9t5K7nnw6EPURS0UKSh5DIu1khnnQT1enWp0T3Ans9G9NUDPFDv1d/MDckhUQy1j87gYFbmOm/IL1zrbR7SSLXBWJLLCrYKmUZQ63Dh8L4WBsm2fa4qa5L5zvFFRllwFrUwXmj+ldJX+JxmwmSBf0wcVSP8Icqyy12bS9COwPsI/cXtR5zTtVyCrNh4b2me/w1cAAAD//5henSM=" + return "eJysk0FOwzAQRfc5xVc2bGgPkAUH4AoIIRNP0mkdT+SZlPb2KE2CXEoFop3lj/3/08R/hR0dK2wlyI5dARhboArl86SUBeBJ68S9scQKTwUAzF/RiR8CFYBuJNlbLbHhtkLjgo5qokBOqUI7WiuZcWy1wkupGspHlBuzvnwtgIYpeK1O5itE11EONY4d+9EoydDPyg9c08wXUUs0x1HRkSWuFXToRcljz+7rkGsp2nw5p8hJTmfWe0rKErOgiWlHxw9JPtOvkgGzCeLQvVOCNOcg6yvZ7G+LZf+HKKW0p7Tuk/ihttsCJy/MXg96ioBtnJ1TgBUc1VwI5CHxKtVdtn9B9e133MQXvaS7442m/9ndVOvucAGUN+gXnKXl2+6wVIjyZ3Fe72WWEn0GAAD//8ZaRaE=" } From c4b59129b79a3afa82de5cc87a31dce0c2853290 Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Mon, 4 Mar 2019 13:28:57 -0700 Subject: [PATCH 4/7] Remove test fields before assert_fields_are_documented --- metricbeat/module/jolokia/_meta/fields.yml | 16 ++++++++++++---- .../tests/system/test_autodiscover_jolokia.py | 2 ++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/metricbeat/module/jolokia/_meta/fields.yml b/metricbeat/module/jolokia/_meta/fields.yml index 1a01f3ac3f3..7c75cfb0c81 100644 --- a/metricbeat/module/jolokia/_meta/fields.yml +++ b/metricbeat/module/jolokia/_meta/fields.yml @@ -18,16 +18,24 @@ - name: agent.id type: keyword description: > - id of jolokia agent. + Each agent has a unique id which can be either provided during startup of the agent in form of a configuration parameter or being autodetected. If autodected, the id has several parts: The IP, the process id, hashcode of the agent and its type. - name: server.product type: keyword description: > - server product's name that jolokia agent is installed on. + The container product if detected. - name: server.version type: keyword description: > - server product's version number that jolokia agent is installed on. + The container's version (if detected). - name: server.vendor type: keyword description: > - server product's vendor name that jolokia agent is installed on. + The vendor of the container the agent is running in. + - name: url + type: ip + description: > + The URL how this agent can be contacted. + - name: secured + type: boolean + description: > + Whether the agent was configured for authentication or not. diff --git a/metricbeat/tests/system/test_autodiscover_jolokia.py b/metricbeat/tests/system/test_autodiscover_jolokia.py index 2e977b18f66..346d6dc11eb 100644 --- a/metricbeat/tests/system/test_autodiscover_jolokia.py +++ b/metricbeat/tests/system/test_autodiscover_jolokia.py @@ -53,4 +53,6 @@ def test_jolokia_jmx(self): assert evt["jolokia"]["test"]["gc"]["collection_count"] >= 0 + # Remove "test" fields because namespace specific fields are not documented + del(evt["jolokia"]["test"]) self.assert_fields_are_documented(output[0]) From 6ff064b15a5a03687bfe0021cf03c58565fd8682 Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Mon, 4 Mar 2019 13:31:43 -0700 Subject: [PATCH 5/7] Run make update for docs --- metricbeat/docs/fields.asciidoc | 28 ++++++++++++++++++++++++---- metricbeat/module/jolokia/fields.go | 2 +- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index ae78efda278..28683020f9c 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -11133,7 +11133,7 @@ version number of jolokia agent. -- type: keyword -id of jolokia agent. +Each agent has a unique id which can be either provided during startup of the agent in form of a configuration parameter or being autodetected. If autodected, the id has several parts: The IP, the process id, hashcode of the agent and its type. -- @@ -11143,7 +11143,7 @@ id of jolokia agent. -- type: keyword -server product's name that jolokia agent is installed on. +The container product if detected. -- @@ -11153,7 +11153,7 @@ server product's name that jolokia agent is installed on. -- type: keyword -server product's version number that jolokia agent is installed on. +The container's version (if detected). -- @@ -11163,7 +11163,27 @@ server product's version number that jolokia agent is installed on. -- type: keyword -server product's vendor name that jolokia agent is installed on. +The vendor of the container the agent is running in. + + +-- + +*`jolokia.url`*:: ++ +-- +type: ip + +The URL how this agent can be contacted. + + +-- + +*`jolokia.secured`*:: ++ +-- +type: boolean + +Whether the agent was configured for authentication or not. -- diff --git a/metricbeat/module/jolokia/fields.go b/metricbeat/module/jolokia/fields.go index 124f7bc16da..55885a7c165 100644 --- a/metricbeat/module/jolokia/fields.go +++ b/metricbeat/module/jolokia/fields.go @@ -32,5 +32,5 @@ func init() { // AssetJolokia returns asset data. // This is the base64 encoded gzipped contents of ../metricbeat/module/jolokia. func AssetJolokia() string { - return "eJysk0FOwzAQRfc5xVc2bGgPkAUH4AoIIRNP0mkdT+SZlPb2KE2CXEoFop3lj/3/08R/hR0dK2wlyI5dARhboArl86SUBeBJ68S9scQKTwUAzF/RiR8CFYBuJNlbLbHhtkLjgo5qokBOqUI7WiuZcWy1wkupGspHlBuzvnwtgIYpeK1O5itE11EONY4d+9EoydDPyg9c08wXUUs0x1HRkSWuFXToRcljz+7rkGsp2nw5p8hJTmfWe0rKErOgiWlHxw9JPtOvkgGzCeLQvVOCNOcg6yvZ7G+LZf+HKKW0p7Tuk/ihttsCJy/MXg96ioBtnJ1TgBUc1VwI5CHxKtVdtn9B9e133MQXvaS7442m/9ndVOvucAGUN+gXnKXl2+6wVIjyZ3Fe72WWEn0GAAD//8ZaRaE=" + return "eJyslMFu2z4Mxu95ig+5/P8D2jyAD7vt0GGHYdiwwzAMikRHbG3JI6mkfftBtpM6yLIV6HQLQ3/8ifrIWzzQU4P73OUHdivA2DpqsH4/RdYrIJB64cE4pwZvVwAw/4s+h9LRCtCYxX74nFreNWhdpzUq1JFTarCr0kpmnHba4NtatVvfYB3NhvX3FdAydUGbUfwWyfW0hKrHnoYqJLkMc+Q3XNOZP4TPyRwnRU8m7BX0OGSlgD27U5LbUbL54yXFkmTM2exJlHNaFJqYHujpkCUs4lfJgFkEqfRbEuT2HGRzpTaH15V953ycpBCdwqEk/lkIHHCI7CO8S9gSiC2SYJC850ABoQinHdScWBkqrkWahTihzdLX4NjrlndFXK2OwYnryeoFBVuqEq5YDmTkjcIGd+0cqD9vRlEOI5rSnsR1VcK0wedIuPs4ZQySPamCw01NjT4HOkdyKYBNxw5dtlJJ9iSbQXIo3l7X0Mo1+2vqV5UEtzjd8Vr5f2Kjs/L/6clW/y8I3vwBIYUsryeYdI5P8NyOhUcUUlKqBuB0yVOku6Dg4eUAXz59QMwHWGSdK85GHmGuvYMvQpcDtc25I5deVv1rpHFSnq96cHqaAgp1NKrFIyVjP01FFqR8NuLT8u0fL1iWe+4vJMddfN8/HhcdLc19voSP57jqfgUAAP//ILzGGQ==" } From 886f9696ba44019b7d7d06c7754af3877d0a2f0d Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Tue, 5 Mar 2019 15:30:53 -0700 Subject: [PATCH 6/7] Add changelog and autodiscover metadata check --- CHANGELOG.next.asciidoc | 1 + metricbeat/module/jolokia/_meta/fields.yml | 4 ++-- metricbeat/tests/system/test_autodiscover_jolokia.py | 4 ++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 561dd4dcd6a..c91bb1317a0 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -192,6 +192,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Fix parsing error using GET in Jolokia module. {pull}11075[11075] {issue}11071[11071] - Collect metrics when EC2 instances are not in running state. {issue}11008[11008] {pull}11023[11023] - Change ECS field cloud.provider to aws. {pull}11023[11023] +- Add documentation about jolokia autodiscover fields. {issue}10925[10925] {pull}10979[10979] *Packetbeat* diff --git a/metricbeat/module/jolokia/_meta/fields.yml b/metricbeat/module/jolokia/_meta/fields.yml index 7c75cfb0c81..90e90b774ec 100644 --- a/metricbeat/module/jolokia/_meta/fields.yml +++ b/metricbeat/module/jolokia/_meta/fields.yml @@ -14,7 +14,7 @@ - name: agent.version type: keyword description: > - version number of jolokia agent. + Version number of jolokia agent. - name: agent.id type: keyword description: > @@ -32,7 +32,7 @@ description: > The vendor of the container the agent is running in. - name: url - type: ip + type: keyword description: > The URL how this agent can be contacted. - name: secured diff --git a/metricbeat/tests/system/test_autodiscover_jolokia.py b/metricbeat/tests/system/test_autodiscover_jolokia.py index 346d6dc11eb..727e4e62807 100644 --- a/metricbeat/tests/system/test_autodiscover_jolokia.py +++ b/metricbeat/tests/system/test_autodiscover_jolokia.py @@ -53,6 +53,10 @@ def test_jolokia_jmx(self): assert evt["jolokia"]["test"]["gc"]["collection_count"] >= 0 + # Check Jolokia autodiscover metadata is added + assert evt['jolokia']['server']['product'] == 'tomcat' + assert evt['jolokia']['server']['vendor'] == 'Apache' + # Remove "test" fields because namespace specific fields are not documented del(evt["jolokia"]["test"]) self.assert_fields_are_documented(output[0]) From 00635377d47efabd81c18c98bcef5102d8bf10c6 Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Wed, 6 Mar 2019 07:29:06 -0700 Subject: [PATCH 7/7] Run make update --- metricbeat/docs/fields.asciidoc | 4 ++-- metricbeat/module/jolokia/fields.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 28683020f9c..42e2b7da096 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -11123,7 +11123,7 @@ jolokia contains metrics exposed via jolokia agent -- type: keyword -version number of jolokia agent. +Version number of jolokia agent. -- @@ -11171,7 +11171,7 @@ The vendor of the container the agent is running in. *`jolokia.url`*:: + -- -type: ip +type: keyword The URL how this agent can be contacted. diff --git a/metricbeat/module/jolokia/fields.go b/metricbeat/module/jolokia/fields.go index 55885a7c165..aef6948238f 100644 --- a/metricbeat/module/jolokia/fields.go +++ b/metricbeat/module/jolokia/fields.go @@ -32,5 +32,5 @@ func init() { // AssetJolokia returns asset data. // This is the base64 encoded gzipped contents of ../metricbeat/module/jolokia. func AssetJolokia() string { - return "eJyslMFu2z4Mxu95ig+5/P8D2jyAD7vt0GGHYdiwwzAMikRHbG3JI6mkfftBtpM6yLIV6HQLQ3/8ifrIWzzQU4P73OUHdivA2DpqsH4/RdYrIJB64cE4pwZvVwAw/4s+h9LRCtCYxX74nFreNWhdpzUq1JFTarCr0kpmnHba4NtatVvfYB3NhvX3FdAydUGbUfwWyfW0hKrHnoYqJLkMc+Q3XNOZP4TPyRwnRU8m7BX0OGSlgD27U5LbUbL54yXFkmTM2exJlHNaFJqYHujpkCUs4lfJgFkEqfRbEuT2HGRzpTaH15V953ycpBCdwqEk/lkIHHCI7CO8S9gSiC2SYJC850ABoQinHdScWBkqrkWahTihzdLX4NjrlndFXK2OwYnryeoFBVuqEq5YDmTkjcIGd+0cqD9vRlEOI5rSnsR1VcK0wedIuPs4ZQySPamCw01NjT4HOkdyKYBNxw5dtlJJ9iSbQXIo3l7X0Mo1+2vqV5UEtzjd8Vr5f2Kjs/L/6clW/y8I3vwBIYUsryeYdI5P8NyOhUcUUlKqBuB0yVOku6Dg4eUAXz59QMwHWGSdK85GHmGuvYMvQpcDtc25I5deVv1rpHFSnq96cHqaAgp1NKrFIyVjP01FFqR8NuLT8u0fL1iWe+4vJMddfN8/HhcdLc19voSP57jqfgUAAP//ILzGGQ==" + return "eJyslM2O2zoMhfd5ioNs7i0wkwfworsupuiiKPqzKIpCkeiIM7bkklQy8/aFbGfGQZq2QKpdGPqcTxTJWzzQU4P73OUHdivA2DpqsH47RdYrIJB64cE4pwavVwAw/4s+h9LRCtCYxb77nFreNWhdpzUq1JFTarCr0kpmnHba4OtatVvfYB3NhvW3FdAydUGbUfwWyfW0hKrHnoYqJLkMc+QXXNOZP4TPyRwnRU8m7BX0OGSlgD275yS3o2Tzx0uKJcmYs9mTKOe0MJqYHujpkCUs4hfJgM+TCFLptyTI7SnI5oI3h+ts3zgfJylEp3AoiX8UAgccIvsI7xK2BGKLJBgk7zlQQCjCaQc1J1aGimuRZiFOaLP0NTjWuuVdEVfdMThxPVm9oGBLVcIVy4GMvFHY4K6dA/XnzSjKYURT2pO4rkqYNvgYCXfvp4xBsidVcLipqdHnQKdILgWw6Vih81IqyZ5kM0gOxdt1Ba1cc39N9aqS4BbPd7xk/0/a6MT+P8Usiv8XBK9+g5BClusJJp3jE7yUY9EjCikp1QbgdM5TpLue4tOHd4j5AIuss+3czSPRpcfwReh8qrY5d+TS37l/iTSOy8t9D06fR4FCnY/a55GSsZ9GIwtSPpnzaQP3j2csy2X3B5LjQr7vH4/bjpYdfrqJj+e4734GAAD//5W+yCU=" }