From d2ed4ede2737ab6887e6ff29d64b14f851d6462a Mon Sep 17 00:00:00 2001 From: Eike Hirsch Date: Thu, 31 Dec 2015 00:02:47 +0100 Subject: [PATCH 01/47] added post about the smartsteuer snap app --- _posts/2015-12-31-smartsteuer-snap-app.md | 109 ++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 _posts/2015-12-31-smartsteuer-snap-app.md diff --git a/_posts/2015-12-31-smartsteuer-snap-app.md b/_posts/2015-12-31-smartsteuer-snap-app.md new file mode 100644 index 0000000..cfd651c --- /dev/null +++ b/_posts/2015-12-31-smartsteuer-snap-app.md @@ -0,0 +1,109 @@ +--- +layout: post +title: Creating the smartsteuer 'snap' app +subtitle: A backstage report +description: A behind the scenes view of the birth of our youngest creation. +category: smartsteuer +author: Eike Hirsch +author_email: eike.hirsch@smartsteuer.de +--- + +### Motivation ### + +As we at smartsteuer really enjoyed how this app was imagined and eventually created, I thought it might be fun to +write about it. This blog post is not that much technical but describes our journey to a product which (hopefully) +will create value for our customers. + +### Background + +At smartsteuer we create tools for people who want to do their tax filings online. For that, we +continuously seek for smart solutions to make this task as easy as possible. One example is an app that we created to +answer one question which always nags our customers: + +> Why should I care? Can I even expect a refund? + +To answer this seriously you have to do a whole lot of calculations for which you need quite some information +from the user. Which in turn would create a process which is _not_ fast and easy. So, some years ago we created this +app which would do two things: + +1. Only asks for about five thinks every user knows of the top of their heads. +2. Make some educated guesses to answer all the other questions with rough estimates. + +The result couldn't be exact but it was good enough to answer said question. It worked quite well even though you still +had to provide those five figures. + +### Theory + +Now, with the help and cooperation of our fellow colleagues from "Haufe Lohn & Gehalt" we wanted to take the app to the +next level. It was our aim to reduce the number of questions the user needs to answer and at the same time increase the +accuracy of the calculation. I will spare you the details but the result of our efforts was a QR-Code which every user +of "Haufe Lohn & Gehalt" would get and which would contain all wage and tax information an employee needs to file her +taxes. + +So the plan was to enhance the app with a qr-code scanner to safe the user some typing. + +We created a quick briefing for our mobile dev agency - they returned an offer - we signed it - the deal was sealed. + +You might wonder why I am writing the blog post in the first place, as this sounds all to familiar and is in any regards +special. Well you are right. Up until here this story is _only_ an example of solid work. +But please bare with me and read on. + +### Reality kicks in + +About an hour before the agency would come by to kick the project off I was holding an internal meeting to get everybody +on the same page. During this meeting it came to light that the project somehow managed to stay under the radar and that +everybody in the room did not know about it. This is quite uncommon in our company as everybody is eager to know what is +going on and to contribute her ideas and we encourage everyone to do so. But in this particular case this somehow did +not happen until said meeting. + +And so it was this meeting when all the experts where questioning the new feature and its purpose: + +> Why are we doing this? +> What is the benefit for the user? +> Is the benefit big enough to justify the work? +> What data is included in the qr-code? +> Is this really the best we can do for our customers? +> … + +It turned out that, while we would get a lot more data to replace some of our guesses with real values, the user +would still need to answer four out of the former five questions and instead would need to turn on the scanner and snap +the code. +That was not the benefit we hoped to deliver. + +### Adaption + +Luckily we did not stop there. When you happen to have a bunch of smart people in the room, new ideas come up and +so a totally new app slowly came into shape. + +**What can we do with that qr-code?** It contained lots of data which the user would need to manually enter into her tax +filing - a tedious and error-prone process. + +**But our main product - the tax filing software - runs in the browser on desktop-PCs.** You don't normally scan qr-codes +with an desktop-PC. + +**What if we could transform the qr-code-scanner into an input device for our software?** We would need to find a way to +link the app with the software without needing the user to do some fancy stuff or even worse needing to understand the +whole process. And at the same time keeping her data safe and protected. + +**Can't we create a second qr-code which contains the data needed for the linking?** + +**And why not use OCR to read any other document** + +By the time the agency arrived we had totally rewritten the plan. And they had no idea… + +### Outcome + +Well, we had to start the meeting with a lot of apologies. The app we original signed up for was from the table but we +still wanted *an* app. Luckily our agency was flexible enough to adapt to the new plan and within only one week we had a +working prototype. +From that day on everything worked according to the plan and now the app is in the +[app store](https://itunes.apple.com/de/app/smartsteuer/id1068423226?mt=8) and will very soon be in +the play store as well. Check it out if you like and let me now what you think. + +Finally I'd like to give a big shout out to our colleagues at [Haufe-Lexware](http://haufe-lexware.com) and to our +agency [Wissenswerft](http://wissenswerft.net) for the great teamwork and flexibility! + + + + + From d405319aa470268945d3722620ef0e24b3a1d5fd Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Thu, 31 Dec 2015 12:22:43 +0100 Subject: [PATCH 02/47] Update 2015-12-31-smartsteuer-snap-app.md Removing first header to allow rendering of initial paragraph --- _posts/2015-12-31-smartsteuer-snap-app.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/_posts/2015-12-31-smartsteuer-snap-app.md b/_posts/2015-12-31-smartsteuer-snap-app.md index cfd651c..99dd5a9 100644 --- a/_posts/2015-12-31-smartsteuer-snap-app.md +++ b/_posts/2015-12-31-smartsteuer-snap-app.md @@ -8,8 +8,6 @@ author: Eike Hirsch author_email: eike.hirsch@smartsteuer.de --- -### Motivation ### - As we at smartsteuer really enjoyed how this app was imagined and eventually created, I thought it might be fun to write about it. This blog post is not that much technical but describes our journey to a product which (hopefully) will create value for our customers. From 807f792d4f54e86102106501ffe4ab4aac0dd4cc Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Thu, 31 Dec 2015 12:30:01 +0100 Subject: [PATCH 03/47] Update 2015-12-31-smartsteuer-snap-app.md Reformatting --- _posts/2015-12-31-smartsteuer-snap-app.md | 59 ++++++----------------- 1 file changed, 14 insertions(+), 45 deletions(-) diff --git a/_posts/2015-12-31-smartsteuer-snap-app.md b/_posts/2015-12-31-smartsteuer-snap-app.md index 99dd5a9..edc4b59 100644 --- a/_posts/2015-12-31-smartsteuer-snap-app.md +++ b/_posts/2015-12-31-smartsteuer-snap-app.md @@ -8,51 +8,34 @@ author: Eike Hirsch author_email: eike.hirsch@smartsteuer.de --- -As we at smartsteuer really enjoyed how this app was imagined and eventually created, I thought it might be fun to -write about it. This blog post is not that much technical but describes our journey to a product which (hopefully) -will create value for our customers. +As we at smartsteuer really enjoyed how our [Smartsteuer App](https://www.smartsteuer.de/blog/2015/03/03/app-sofort-smartsteuer-als-app/) was imagined and eventually created, I thought it might be fun to write about it. This blog post is not that much technical but describes our journey to a product which (hopefully) will create value for our customers. ### Background -At smartsteuer we create tools for people who want to do their tax filings online. For that, we -continuously seek for smart solutions to make this task as easy as possible. One example is an app that we created to -answer one question which always nags our customers: +At smartsteuer we create tools for people who want to do their tax filings online. For that, we continuously seek for smart solutions to make this task as easy as possible. One example is an app that we created to answer one question which always nags our customers: > Why should I care? Can I even expect a refund? -To answer this seriously you have to do a whole lot of calculations for which you need quite some information -from the user. Which in turn would create a process which is _not_ fast and easy. So, some years ago we created this -app which would do two things: +To answer this seriously you have to do a whole lot of calculations for which you need quite some information from the user. Which in turn would create a process which is _not_ fast and easy. So, some years ago we created this app which would do two things: 1. Only asks for about five thinks every user knows of the top of their heads. 2. Make some educated guesses to answer all the other questions with rough estimates. -The result couldn't be exact but it was good enough to answer said question. It worked quite well even though you still -had to provide those five figures. +The result couldn't be exact but it was good enough to answer said question. It worked quite well even though you still had to provide those five figures. ### Theory -Now, with the help and cooperation of our fellow colleagues from "Haufe Lohn & Gehalt" we wanted to take the app to the -next level. It was our aim to reduce the number of questions the user needs to answer and at the same time increase the -accuracy of the calculation. I will spare you the details but the result of our efforts was a QR-Code which every user -of "Haufe Lohn & Gehalt" would get and which would contain all wage and tax information an employee needs to file her -taxes. +Now, with the help and cooperation of our fellow colleagues from "Haufe Lohn & Gehalt" we wanted to take the app to the next level. It was our aim to reduce the number of questions the user needs to answer and at the same time increase the accuracy of the calculation. I will spare you the details but the result of our efforts was a QR-Code which every user of "Haufe Lohn & Gehalt" would get and which would contain all wage and tax information an employee needs to file her taxes. So the plan was to enhance the app with a qr-code scanner to safe the user some typing. We created a quick briefing for our mobile dev agency - they returned an offer - we signed it - the deal was sealed. -You might wonder why I am writing the blog post in the first place, as this sounds all to familiar and is in any regards -special. Well you are right. Up until here this story is _only_ an example of solid work. -But please bare with me and read on. +You might wonder why I am writing the blog post in the first place, as this sounds all to familiar and is in any regards special. Well you are right. Up until here this story is _only_ an example of solid work. But please bare with me and read on. ### Reality kicks in -About an hour before the agency would come by to kick the project off I was holding an internal meeting to get everybody -on the same page. During this meeting it came to light that the project somehow managed to stay under the radar and that -everybody in the room did not know about it. This is quite uncommon in our company as everybody is eager to know what is -going on and to contribute her ideas and we encourage everyone to do so. But in this particular case this somehow did -not happen until said meeting. +About an hour before the agency would come by to kick the project off I was holding an internal meeting to get everybody on the same page. During this meeting it came to light that the project somehow managed to stay under the radar and that everyone in the room did not know about it. This is quite uncommon in our company as everybody is eager to know what is going on and to contribute her ideas and we encourage everyone to do so. But in this particular case this somehow did not happen until said meeting. And so it was this meeting when all the experts where questioning the new feature and its purpose: @@ -63,25 +46,17 @@ And so it was this meeting when all the experts where questioning the new featur > Is this really the best we can do for our customers? > … -It turned out that, while we would get a lot more data to replace some of our guesses with real values, the user -would still need to answer four out of the former five questions and instead would need to turn on the scanner and snap -the code. -That was not the benefit we hoped to deliver. +It turned out that, while we would get a lot more data to replace some of our guesses with real values, the user would still need to answer four out of the former five questions and instead would need to turn on the scanner and snap the code. That was not the benefit we hoped to deliver. ### Adaption -Luckily we did not stop there. When you happen to have a bunch of smart people in the room, new ideas come up and -so a totally new app slowly came into shape. +Luckily we did not stop there. When you happen to have a bunch of smart people in the room, new ideas come up and so a totally new app slowly came into shape. -**What can we do with that qr-code?** It contained lots of data which the user would need to manually enter into her tax -filing - a tedious and error-prone process. +**What can we do with that qr-code?** It contained lots of data which the user would need to manually enter into her tax filing - a tedious and error-prone process. -**But our main product - the tax filing software - runs in the browser on desktop-PCs.** You don't normally scan qr-codes -with an desktop-PC. +**But our main product - the tax filing software - runs in the browser on desktop-PCs.** You don't normally scan qr-codes with an desktop-PC. -**What if we could transform the qr-code-scanner into an input device for our software?** We would need to find a way to -link the app with the software without needing the user to do some fancy stuff or even worse needing to understand the -whole process. And at the same time keeping her data safe and protected. +**What if we could transform the qr-code-scanner into an input device for our software?** We would need to find a way to link the app with the software without needing the user to do some fancy stuff or even worse needing to understand the whole process. And at the same time keeping her data safe and protected. **Can't we create a second qr-code which contains the data needed for the linking?** @@ -91,15 +66,9 @@ By the time the agency arrived we had totally rewritten the plan. And they had n ### Outcome -Well, we had to start the meeting with a lot of apologies. The app we original signed up for was from the table but we -still wanted *an* app. Luckily our agency was flexible enough to adapt to the new plan and within only one week we had a -working prototype. -From that day on everything worked according to the plan and now the app is in the -[app store](https://itunes.apple.com/de/app/smartsteuer/id1068423226?mt=8) and will very soon be in -the play store as well. Check it out if you like and let me now what you think. +Well, we had to start the meeting with a lot of apologies. The app we original signed up for was from the table but we still wanted *an* app. Luckily our agency was flexible enough to adapt to the new plan and within only one week we had a working prototype. From that day on everything worked according to the plan and now our Smartsteuer App is available at the [IOS App Store](https://itunes.apple.com/de/app/smartsteuer/id1068423226?mt=8) and will be very soon be in the Android Play store as well (We will post the link as soon as its up). Check it out if you like and let me now what you think. -Finally I'd like to give a big shout out to our colleagues at [Haufe-Lexware](http://haufe-lexware.com) and to our -agency [Wissenswerft](http://wissenswerft.net) for the great teamwork and flexibility! +Finally I'd like to give a big shout out to our colleagues at [Haufe-Lexware](http://haufe-lexware.com) and to our agency [Wissenswerft](http://wissenswerft.net) for the great teamwork and flexibility! From 625cda523626114fa2266fb7e9bd7eb6403735fa Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Thu, 31 Dec 2015 12:36:33 +0100 Subject: [PATCH 04/47] Update 2015-12-31-smartsteuer-snap-app.md --- _posts/2015-12-31-smartsteuer-snap-app.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/2015-12-31-smartsteuer-snap-app.md b/_posts/2015-12-31-smartsteuer-snap-app.md index edc4b59..06be3d1 100644 --- a/_posts/2015-12-31-smartsteuer-snap-app.md +++ b/_posts/2015-12-31-smartsteuer-snap-app.md @@ -1,9 +1,9 @@ --- layout: post -title: Creating the smartsteuer 'snap' app +title: Creating the Smartsteuer 'Snap' App subtitle: A backstage report description: A behind the scenes view of the birth of our youngest creation. -category: smartsteuer +category: Smartsteuer author: Eike Hirsch author_email: eike.hirsch@smartsteuer.de --- From 51eed3f87918a3a9fcf8b6b16e7b913a52c13e40 Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Thu, 31 Dec 2015 12:37:35 +0100 Subject: [PATCH 05/47] Update 2015-12-17-letsencrypt.md --- _posts/2015-12-17-letsencrypt.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/2015-12-17-letsencrypt.md b/_posts/2015-12-17-letsencrypt.md index b4e9f35..68879f9 100644 --- a/_posts/2015-12-17-letsencrypt.md +++ b/_posts/2015-12-17-letsencrypt.md @@ -1,9 +1,9 @@ --- layout: post -title: How-to - Leverage Let's Encrypt on an Azure Ubuntu VM +title: Howto - Leverage 'Let's Encrypt' on Azure Ubuntu VM subtitle: Create free valid SSL certificates in 20 minutes. description: How-to - Leverage Let's Encrypt on an Azure Ubuntu VM -category: how-to +category: howto author: Martin author_email: martin.danielsson@haufe-lexware.com --- From 86cfe0f344ef4d308011f74482155c79b27b492c Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Thu, 31 Dec 2015 12:37:51 +0100 Subject: [PATCH 06/47] Update 2015-12-17-letsencrypt.md --- _posts/2015-12-17-letsencrypt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2015-12-17-letsencrypt.md b/_posts/2015-12-17-letsencrypt.md index 68879f9..25f4684 100644 --- a/_posts/2015-12-17-letsencrypt.md +++ b/_posts/2015-12-17-letsencrypt.md @@ -2,7 +2,7 @@ layout: post title: Howto - Leverage 'Let's Encrypt' on Azure Ubuntu VM subtitle: Create free valid SSL certificates in 20 minutes. -description: How-to - Leverage Let's Encrypt on an Azure Ubuntu VM +description: Howto - Leverage Let's Encrypt on an Azure Ubuntu VM category: howto author: Martin author_email: martin.danielsson@haufe-lexware.com From 2f4809cfc6a6984f1411e8a631cd6e839bc81490 Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Thu, 31 Dec 2015 12:40:37 +0100 Subject: [PATCH 07/47] Update 2015-12-17-letsencrypt.md --- _posts/2015-12-17-letsencrypt.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/2015-12-17-letsencrypt.md b/_posts/2015-12-17-letsencrypt.md index 25f4684..cd0dafc 100644 --- a/_posts/2015-12-17-letsencrypt.md +++ b/_posts/2015-12-17-letsencrypt.md @@ -1,8 +1,8 @@ --- layout: post -title: Howto - Leverage 'Let's Encrypt' on Azure Ubuntu VM +title: Howto - Leverage 'Let's Encrypt' on Azure subtitle: Create free valid SSL certificates in 20 minutes. -description: Howto - Leverage Let's Encrypt on an Azure Ubuntu VM +description: Howto - Leverage 'Let's Encrypt' on an Azure Ubuntu VM category: howto author: Martin author_email: martin.danielsson@haufe-lexware.com From 52639a0032453cdb8b03089c8d068ee6f110b882 Mon Sep 17 00:00:00 2001 From: Eike Hirsch Date: Mon, 4 Jan 2016 09:25:58 +0100 Subject: [PATCH 08/47] added backlink to smartsteuer and removed a typo. --- _posts/2015-12-31-smartsteuer-snap-app.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_posts/2015-12-31-smartsteuer-snap-app.md b/_posts/2015-12-31-smartsteuer-snap-app.md index cfd651c..69e2a86 100644 --- a/_posts/2015-12-31-smartsteuer-snap-app.md +++ b/_posts/2015-12-31-smartsteuer-snap-app.md @@ -10,9 +10,9 @@ author_email: eike.hirsch@smartsteuer.de ### Motivation ### -As we at smartsteuer really enjoyed how this app was imagined and eventually created, I thought it might be fun to -write about it. This blog post is not that much technical but describes our journey to a product which (hopefully) -will create value for our customers. +As we at [smartsteuer](https://www.smartsteuer.de) really enjoyed how this app was imagined and eventually created, +I thought it might be fun to write about it. This blog post is not that much technical but describes our journey to a +product which (hopefully) will create value for our customers. ### Background @@ -26,7 +26,7 @@ To answer this seriously you have to do a whole lot of calculations for which yo from the user. Which in turn would create a process which is _not_ fast and easy. So, some years ago we created this app which would do two things: -1. Only asks for about five thinks every user knows of the top of their heads. +1. Only asks for about five things every user knows of the top of their heads. 2. Make some educated guesses to answer all the other questions with rough estimates. The result couldn't be exact but it was good enough to answer said question. It worked quite well even though you still From 277511ab4bd00d41d6440e31960ee11afa33352b Mon Sep 17 00:00:00 2001 From: Eike Hirsch Date: Mon, 4 Jan 2016 09:37:32 +0100 Subject: [PATCH 09/47] Merge branch 'master' of https://github.com/Haufe-Lexware/Haufe-Lexware.github.io and changed the link to the correct app. --- _posts/2015-12-31-smartsteuer-snap-app.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2015-12-31-smartsteuer-snap-app.md b/_posts/2015-12-31-smartsteuer-snap-app.md index 56d966f..62ba747 100644 --- a/_posts/2015-12-31-smartsteuer-snap-app.md +++ b/_posts/2015-12-31-smartsteuer-snap-app.md @@ -8,7 +8,7 @@ author: Eike Hirsch author_email: eike.hirsch@smartsteuer.de --- -As we at [smartsteuer](https://www.smartsteuer.de) really enjoyed how our [Smartsteuer App](https://www.smartsteuer.de/blog/2015/03/03/app-sofort-smartsteuer-als-app/) was imagined and eventually created, I thought it might be fun to write about it. This blog post is not that much technical but describes our journey to a product which (hopefully) will create value for our customers. +As we at [smartsteuer](https://www.smartsteuer.de) really enjoyed how our [Smartsteuer Smartphone App](https://www.smartsteuer.de/online/steuererklaerung-online/#smartphone) was imagined and eventually created, I thought it might be fun to write about it. This blog post is not that much technical but describes our journey to a product which (hopefully) will create value for our customers. ### Background From 6142daef72a74ca6bf8e019a8ae7794e5effaf97 Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 11:13:29 +0100 Subject: [PATCH 10/47] Update 2015-12-15-dockercon_eu_2015.md Normalizing titles --- _posts/2015-12-15-dockercon_eu_2015.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2015-12-15-dockercon_eu_2015.md b/_posts/2015-12-15-dockercon_eu_2015.md index 6c1505d..87ad0c4 100644 --- a/_posts/2015-12-15-dockercon_eu_2015.md +++ b/_posts/2015-12-15-dockercon_eu_2015.md @@ -1,6 +1,6 @@ --- layout: post -title: Impressions from DockerCon 2015 +title: Impressions from DockerCon 2015 - Part 2 subtitle: Barcelona 16. + 17.11.2015 description: my highlights and picks from DockerCon 2015 category: docker From a49f68d6008c9113033227bc8d2c150ffec8cc16 Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 11:14:19 +0100 Subject: [PATCH 11/47] Update 2015-12-08-DockerCon-EU-2015.md Normalizing title --- _posts/2015-12-08-DockerCon-EU-2015.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2015-12-08-DockerCon-EU-2015.md b/_posts/2015-12-08-DockerCon-EU-2015.md index 2675ee1..a88d9c2 100644 --- a/_posts/2015-12-08-DockerCon-EU-2015.md +++ b/_posts/2015-12-08-DockerCon-EU-2015.md @@ -1,6 +1,6 @@ --- layout: post -title: DockerCon EU 2015 +title: Impressions from DockerCon EU 2015 - Part 1 subtite: Insights, Outlooks and Inbetweens description: Notes from DevOpsCon 2015 category: general From a488bb0f59e3d6d7f571da5c3474176148026238 Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 13:09:07 +0100 Subject: [PATCH 12/47] adding tags and categories --- _data/categories.yml | 19 +++++++++++ _data/tags.yml | 35 +++++++++++++++++++ _layouts/blog_by_category.html | 37 +++++++++++++++++++++ _layouts/blog_by_tag.html | 37 +++++++++++++++++++++ _layouts/post.html | 34 +++++++++++++++++++ _posts/2015-11-11-Hello-World.md | 1 + _posts/2015-11-17-oscon.md | 3 +- _posts/2015-11-19-api-journey.md | 1 + _posts/2015-12-07-devopscon-2015.md | 3 +- _posts/2015-12-08-DockerCon-EU-2015.md | 3 +- _posts/2015-12-11-apidays-paris.md | 3 +- _posts/2015-12-15-dockercon_eu_2015.md | 3 +- _posts/2015-12-17-letsencrypt.md | 1 + _posts/2015-12-31-smartsteuer-snap-app.md | 3 +- _posts/2015-12-8-microservices-devopscon.md | 3 +- index.html | 4 ++- 16 files changed, 182 insertions(+), 8 deletions(-) create mode 100644 _data/categories.yml create mode 100644 _data/tags.yml create mode 100644 _layouts/blog_by_category.html create mode 100644 _layouts/blog_by_tag.html diff --git a/_data/categories.yml b/_data/categories.yml new file mode 100644 index 0000000..fa63c9a --- /dev/null +++ b/_data/categories.yml @@ -0,0 +1,19 @@ +- slug: general + name: General + color: '#3498db' + +- slug: conference + name: Conference + color: '#1abc9c' + +- slug: howto + name: Howto + color: '#1abc9c' + +- slug: api + name: API + color: '#1abc9c' + +- slug: product + name: Product + color: '#1abc9c' diff --git a/_data/tags.yml b/_data/tags.yml new file mode 100644 index 0000000..998d113 --- /dev/null +++ b/_data/tags.yml @@ -0,0 +1,35 @@ +- slug: security + name: Security + +- slug: cloud + name: Cloud + +- slug: cto + name: CTO + +- slug: communication + name: Communication + +- slug: open-source + name: Open Source + +- slug: api + name: API + +- slug: microservice + name: Microservice + +- slug: devops + name: Devops + +- slug: docker + name: Docker + +- slug: mobile + name: Mobile + +- slug: custdev + name: Customer Development + +- slug: smartsteuer + name: Smartsteuer \ No newline at end of file diff --git a/_layouts/blog_by_category.html b/_layouts/blog_by_category.html new file mode 100644 index 0000000..3da3280 --- /dev/null +++ b/_layouts/blog_by_category.html @@ -0,0 +1,37 @@ +--- +layout: default +--- + +
+

{{ page.category }}

+

Articles by category

+
+ +
+ {% if site.categories[page.category] %} + {% for post in site.categories[page.category] %} + {% capture post_year %}{{ post.date | date: '%Y' }}{% endcapture %} + {% if forloop.first %} +

{{ post_year }}

+ {% endif %} + + {% if forloop.first == false %} + {% assign previous_index = forloop.index0 | minus: 1 %} + {% capture previous_post_year %}{{ site.categories[page.category][previous_index].date | date: '%Y' }}{% endcapture %} + {% if post_year != previous_post_year %} +

{{ post_year }}

+ {% endif %} + {% endif %} + + +

{{ post.title }}

+
+ + {% if forloop.last %} +
+ {% endif %} + {% endfor %} + {% else %} +

There are no posts in this category.

+ {% endif %} +
\ No newline at end of file diff --git a/_layouts/blog_by_tag.html b/_layouts/blog_by_tag.html new file mode 100644 index 0000000..69ea789 --- /dev/null +++ b/_layouts/blog_by_tag.html @@ -0,0 +1,37 @@ +--- +layout: default +--- + +
+

{{ page.tag }}

+

Articles by tag

+
+ +
+ {% if site.tags[page.tag] %} + {% for post in site.tags[page.tag] %} + {% capture post_year %}{{ post.date | date: '%Y' }}{% endcapture %} + {% if forloop.first %} +

{{ post_year }}

+ {% endif %} + + {% if forloop.first == false %} + {% assign previous_index = forloop.index0 | minus: 1 %} + {% capture previous_post_year %}{{ site.tags[page.tag][previous_index].date | date: '%Y' }}{% endcapture %} + {% if post_year != previous_post_year %} +

{{ post_year }}

+ {% endif %} + {% endif %} + + +

{{ post.title }}

+
+ + {% if forloop.last %} +
+ {% endif %} + {% endfor %} + {% else %} +

There are no posts for this tag.

+ {% endif %} +
\ No newline at end of file diff --git a/_layouts/post.html b/_layouts/post.html index 288aaf3..fb75435 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -2,6 +2,8 @@ layout: default --- +{% assign post = page %} +

{{page.title}}

@@ -9,6 +11,38 @@ layout: default {{page.date | date: "%B %d, %Y" }} / by {{page.author}} + + {% if post.category %} + {% for site_category in site.data.categories %} + {% if site_category.slug == post.category %} + {% assign category = site_category %} + {% endif %} + {% endfor %} + {% if category %} + {% capture category_content %} in {{ category.name }}{% endcapture %} + {% endif %} + {% else %} + {% assign category_content = '' %} + {% endif %} + + {% if post.tags.size > 0 %} + {% capture tags_content %} with {% if post.tags.size == 1 %}{% else %}{% endif %}: {% endcapture %} + {% for post_tag in post.tags %} + {% for data_tag in site.data.tags %} + {% if data_tag.slug == post_tag %} + {% assign tag = data_tag %} + {% endif %} + {% endfor %} + {% if tag %} + {% capture tags_content_temp %}{{ tags_content }}{{ tag.name }}{% if forloop.last == false %}, {% endif %}{% endcapture %} + {% assign tags_content = tags_content_temp %} + {% endif %} + {% endfor %} + {% else %} + {% assign tags_content = '' %} + {% endif %} + +

Posted {{ category_content }}{{ tags_content }}


diff --git a/_posts/2015-11-11-Hello-World.md b/_posts/2015-11-11-Hello-World.md index b379612..ac470f0 100644 --- a/_posts/2015-11-11-Hello-World.md +++ b/_posts/2015-11-11-Hello-World.md @@ -4,6 +4,7 @@ title: We are live or How to start a developer blog subtite: A short introduction description: How to start our developer blog category: general +tags: [cto, communication] author: Holger author_email: holger.reinhardt@haufe-lexware.com --- diff --git a/_posts/2015-11-17-oscon.md b/_posts/2015-11-17-oscon.md index 46214bb..d583784 100644 --- a/_posts/2015-11-17-oscon.md +++ b/_posts/2015-11-17-oscon.md @@ -3,7 +3,8 @@ layout: post title: Notes from OSCON Europe 2015 subtite: description: Notes from OSCON Europe 2015 -category: general +category: conference +tags: [open-source] author: Marco author_email: marco.seifried@haufe-lexware.com --- diff --git a/_posts/2015-11-19-api-journey.md b/_posts/2015-11-19-api-journey.md index 14ca2d3..b3e85bc 100644 --- a/_posts/2015-11-19-api-journey.md +++ b/_posts/2015-11-19-api-journey.md @@ -4,6 +4,7 @@ title: The beginnings of our API Journey subtite: Intro to our API style guide description: Got API? category: api +tags: [api] author: Holger author_email: holger.reinhardt@haufe-lexware.com --- diff --git a/_posts/2015-12-07-devopscon-2015.md b/_posts/2015-12-07-devopscon-2015.md index 90a763c..b42e812 100644 --- a/_posts/2015-12-07-devopscon-2015.md +++ b/_posts/2015-12-07-devopscon-2015.md @@ -3,7 +3,8 @@ layout: post title: Notes from DevOpsCon 2015 subtite: description: Notes from DevOpsCon 2015 -category: general +category: conference +tags: [docker, devops] author: Rainer author_email: rainer.zehnle@haufe-lexware.com --- diff --git a/_posts/2015-12-08-DockerCon-EU-2015.md b/_posts/2015-12-08-DockerCon-EU-2015.md index a88d9c2..8867de1 100644 --- a/_posts/2015-12-08-DockerCon-EU-2015.md +++ b/_posts/2015-12-08-DockerCon-EU-2015.md @@ -3,7 +3,8 @@ layout: post title: Impressions from DockerCon EU 2015 - Part 1 subtite: Insights, Outlooks and Inbetweens description: Notes from DevOpsCon 2015 -category: general +category: conference +tags: [docker, security] author: ThomasSc author_email: thomas.schuering@haufe-lexware.com --- diff --git a/_posts/2015-12-11-apidays-paris.md b/_posts/2015-12-11-apidays-paris.md index 4ec7fc5..f6a9561 100644 --- a/_posts/2015-12-11-apidays-paris.md +++ b/_posts/2015-12-11-apidays-paris.md @@ -3,7 +3,8 @@ layout: post title: APIdays Paris - From Philosophy to Technology and back again subtite: A biased report from APIdays global in Paris description: APIdays Paris - From Philosophy to Technology and back again -category: general +category: conference +tags: [api] author: Martin author_email: martin.danielsson@haufe-lexware.com --- diff --git a/_posts/2015-12-15-dockercon_eu_2015.md b/_posts/2015-12-15-dockercon_eu_2015.md index 87ad0c4..69f3efb 100644 --- a/_posts/2015-12-15-dockercon_eu_2015.md +++ b/_posts/2015-12-15-dockercon_eu_2015.md @@ -3,7 +3,8 @@ layout: post title: Impressions from DockerCon 2015 - Part 2 subtitle: Barcelona 16. + 17.11.2015 description: my highlights and picks from DockerCon 2015 -category: docker +category: conference +tags: [docker] author: Peter Frey author_email: peter.frey@haufe-lexware.com --- diff --git a/_posts/2015-12-17-letsencrypt.md b/_posts/2015-12-17-letsencrypt.md index cd0dafc..748bd44 100644 --- a/_posts/2015-12-17-letsencrypt.md +++ b/_posts/2015-12-17-letsencrypt.md @@ -4,6 +4,7 @@ title: Howto - Leverage 'Let's Encrypt' on Azure subtitle: Create free valid SSL certificates in 20 minutes. description: Howto - Leverage 'Let's Encrypt' on an Azure Ubuntu VM category: howto +tags: [security, cloud] author: Martin author_email: martin.danielsson@haufe-lexware.com --- diff --git a/_posts/2015-12-31-smartsteuer-snap-app.md b/_posts/2015-12-31-smartsteuer-snap-app.md index 62ba747..d22d9ad 100644 --- a/_posts/2015-12-31-smartsteuer-snap-app.md +++ b/_posts/2015-12-31-smartsteuer-snap-app.md @@ -3,7 +3,8 @@ layout: post title: Creating the Smartsteuer 'Snap' App subtitle: A backstage report description: A behind the scenes view of the birth of our youngest creation. -category: Smartsteuer +category: product +tags: [smartsteuer, mobile, custdev] author: Eike Hirsch author_email: eike.hirsch@smartsteuer.de --- diff --git a/_posts/2015-12-8-microservices-devopscon.md b/_posts/2015-12-8-microservices-devopscon.md index 2bd7e14..94c9cc6 100644 --- a/_posts/2015-12-8-microservices-devopscon.md +++ b/_posts/2015-12-8-microservices-devopscon.md @@ -3,7 +3,8 @@ layout: post title: DevOpsCon Munich - Is it really about the tools? subtite: A opinionated commentary by Elias Weingaertner description: My personal findings from DevOpsCon 2015 in Munich -category: general +category: conference +tags: [devops, microservice] author: Elias Weingaertner author_email: elias.weingaertner@haufe-lexware.com --- diff --git a/index.html b/index.html index 9c35f0e..410716c 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ layout: default ---
- {% for post in site.posts %} + {% for post in site.posts limit: 6 %} {% endfor %} + + more
From 2a4576bed7945d9439832328b3757334258bc582 Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 21:04:16 +0100 Subject: [PATCH 13/47] Changing layout of category and tags --- _layouts/post.html | 12 ++++++------ index.html | 4 +--- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/_layouts/post.html b/_layouts/post.html index fb75435..4aedddd 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -8,10 +8,6 @@ layout: default

{{page.title}}

- {{page.date | date: "%B %d, %Y" }} - / - by {{page.author}} - {% if post.category %} {% for site_category in site.data.categories %} {% if site_category.slug == post.category %} @@ -26,7 +22,7 @@ layout: default {% endif %} {% if post.tags.size > 0 %} - {% capture tags_content %} with {% if post.tags.size == 1 %}{% else %}{% endif %}: {% endcapture %} + {% capture tags_content %} with tags: {% endcapture %} {% for post_tag in post.tags %} {% for data_tag in site.data.tags %} {% if data_tag.slug == post_tag %} @@ -42,7 +38,11 @@ layout: default {% assign tags_content = '' %} {% endif %} -

Posted {{ category_content }}{{ tags_content }}

+ {{page.date | date: "%B %d, %Y" }} + / + by {{page.author}} + / + Posted {{ category_content }}{{ tags_content }}


diff --git a/index.html b/index.html index 410716c..9c35f0e 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ layout: default ---
- {% for post in site.posts limit: 6 %} + {% for post in site.posts %} {% endfor %} - - more
From 7e2d0ec41b7d0f0898381dd8547431a986769b34 Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 21:16:43 +0100 Subject: [PATCH 14/47] linebreak --- _layouts/post.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_layouts/post.html b/_layouts/post.html index 4aedddd..7569e18 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -41,7 +41,7 @@ layout: default {{page.date | date: "%B %d, %Y" }} / by {{page.author}} - / +
Posted {{ category_content }}{{ tags_content }}

From f06493136c78dc49778e912429a860472acdeb8a Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 21:22:21 +0100 Subject: [PATCH 15/47] adding general category path --- meta/category/general.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 meta/category/general.md diff --git a/meta/category/general.md b/meta/category/general.md new file mode 100644 index 0000000..ff47ae3 --- /dev/null +++ b/meta/category/general.md @@ -0,0 +1,5 @@ +--- +layout: blog_by_category +title: 'Articles by category: general' +category: general +--- \ No newline at end of file From 1279e2d5159a2917ccf8436052dc5c05dedbb0bd Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 21:24:15 +0100 Subject: [PATCH 16/47] fixing path --- _layouts/post.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_layouts/post.html b/_layouts/post.html index 7569e18..d6e25bf 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -15,7 +15,7 @@ layout: default {% endif %} {% endfor %} {% if category %} - {% capture category_content %} in {{ category.name }}{% endcapture %} + {% capture category_content %} in {{ category.name }}{% endcapture %} {% endif %} {% else %} {% assign category_content = '' %} @@ -30,7 +30,7 @@ layout: default {% endif %} {% endfor %} {% if tag %} - {% capture tags_content_temp %}{{ tags_content }}{{ tag.name }}{% if forloop.last == false %}, {% endif %}{% endcapture %} + {% capture tags_content_temp %}{{ tags_content }}{{ tag.name }}{% if forloop.last == false %}, {% endif %}{% endcapture %} {% assign tags_content = tags_content_temp %} {% endif %} {% endfor %} From a2adac6a6fb2764bcb0795485aec587c24c932ea Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 21:29:48 +0100 Subject: [PATCH 17/47] wip --- meta/category/general.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/meta/category/general.md b/meta/category/general.md index ff47ae3..f5796b5 100644 --- a/meta/category/general.md +++ b/meta/category/general.md @@ -2,4 +2,5 @@ layout: blog_by_category title: 'Articles by category: general' category: general ---- \ No newline at end of file +permalink: /meta/category/general +--- From c50f2d4a16b0ccd4a1ac82ba9c1505ebe532b160 Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 21:31:33 +0100 Subject: [PATCH 18/47] wip --- meta/category/general.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/category/general.md b/meta/category/general.md index f5796b5..59f8b56 100644 --- a/meta/category/general.md +++ b/meta/category/general.md @@ -2,5 +2,5 @@ layout: blog_by_category title: 'Articles by category: general' category: general -permalink: /meta/category/general +permalink: /meta/category/general/ --- From 25707bb8a49c2e6c679db689550def254f0f4d4b Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 21:49:37 +0100 Subject: [PATCH 19/47] wip --- _layouts/blog_by_category.html | 37 ---------------- _layouts/post_by_category.html | 44 +++++++++++++++++++ .../{blog_by_tag.html => post_by_tag.html} | 0 meta/category/general.md | 4 +- 4 files changed, 47 insertions(+), 38 deletions(-) delete mode 100644 _layouts/blog_by_category.html create mode 100644 _layouts/post_by_category.html rename _layouts/{blog_by_tag.html => post_by_tag.html} (100%) diff --git a/_layouts/blog_by_category.html b/_layouts/blog_by_category.html deleted file mode 100644 index 3da3280..0000000 --- a/_layouts/blog_by_category.html +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: default ---- - -
-

{{ page.category }}

-

Articles by category

-
- -
- {% if site.categories[page.category] %} - {% for post in site.categories[page.category] %} - {% capture post_year %}{{ post.date | date: '%Y' }}{% endcapture %} - {% if forloop.first %} -

{{ post_year }}

- {% endif %} - - {% if forloop.first == false %} - {% assign previous_index = forloop.index0 | minus: 1 %} - {% capture previous_post_year %}{{ site.categories[page.category][previous_index].date | date: '%Y' }}{% endcapture %} - {% if post_year != previous_post_year %} -

{{ post_year }}

- {% endif %} - {% endif %} - - -

{{ post.title }}

-
- - {% if forloop.last %} -
- {% endif %} - {% endfor %} - {% else %} -

There are no posts in this category.

- {% endif %} -
\ No newline at end of file diff --git a/_layouts/post_by_category.html b/_layouts/post_by_category.html new file mode 100644 index 0000000..5ea5564 --- /dev/null +++ b/_layouts/post_by_category.html @@ -0,0 +1,44 @@ +--- +layout: default +--- + +
+

{{site.data.categories[page.category].name}}

+ +

+ Articles by category +

+ +
+ +
+ {% if site.categories[page.category] %} + {% for post in site.categories[page.category] %} + {% capture post_year %}{{ post.date | date: '%Y' }}{% endcapture %} + {% if forloop.first %} +

{{ post_year }}

    + {% endif %} + + {% if forloop.first == false %} + {% assign previous_index = forloop.index0 | minus: 1 %} + {% capture previous_post_year %}{{ site.categories[page.category][previous_index].date | date: '%Y' }}{% endcapture %} + {% if post_year != previous_post_year %} +

{{ post_year }}

+ {% endif %} + {% endfor %} + {% else %} +

There are no posts in this category.

+ {% endif %} + +
\ No newline at end of file diff --git a/_layouts/blog_by_tag.html b/_layouts/post_by_tag.html similarity index 100% rename from _layouts/blog_by_tag.html rename to _layouts/post_by_tag.html diff --git a/meta/category/general.md b/meta/category/general.md index 59f8b56..01314d9 100644 --- a/meta/category/general.md +++ b/meta/category/general.md @@ -1,6 +1,8 @@ --- -layout: blog_by_category +layout: page title: 'Articles by category: general' category: general permalink: /meta/category/general/ --- + +## foobar \ No newline at end of file From 017a46856d4ebdadd3ccbc6e1b67eb03ae3d6d6d Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 21:52:46 +0100 Subject: [PATCH 20/47] removing some temp content --- meta/category/general.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/meta/category/general.md b/meta/category/general.md index 01314d9..8750916 100644 --- a/meta/category/general.md +++ b/meta/category/general.md @@ -1,8 +1,6 @@ --- -layout: page +layout: post_by_category title: 'Articles by category: general' category: general permalink: /meta/category/general/ --- - -## foobar \ No newline at end of file From 0e39c749bff75f6985999342100ef9a34aad5787 Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 22:06:34 +0100 Subject: [PATCH 21/47] Category fine-tuning --- _data/categories.yml | 5 ----- _layouts/post.html | 2 +- _layouts/post_by_category.html | 2 +- meta/category/general.md | 2 +- 4 files changed, 3 insertions(+), 8 deletions(-) diff --git a/_data/categories.yml b/_data/categories.yml index fa63c9a..9efe06e 100644 --- a/_data/categories.yml +++ b/_data/categories.yml @@ -1,19 +1,14 @@ - slug: general name: General - color: '#3498db' - slug: conference name: Conference - color: '#1abc9c' - slug: howto name: Howto - color: '#1abc9c' - slug: api name: API - color: '#1abc9c' - slug: product name: Product - color: '#1abc9c' diff --git a/_layouts/post.html b/_layouts/post.html index d6e25bf..5de6c54 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -15,7 +15,7 @@ layout: default {% endif %} {% endfor %} {% if category %} - {% capture category_content %} in {{ category.name }}{% endcapture %} + {% capture category_content %} in {{ category.name }}{% endcapture %} {% endif %} {% else %} {% assign category_content = '' %} diff --git a/_layouts/post_by_category.html b/_layouts/post_by_category.html index 5ea5564..fe4dbae 100644 --- a/_layouts/post_by_category.html +++ b/_layouts/post_by_category.html @@ -3,7 +3,7 @@ layout: default ---
-

{{site.data.categories[page.category].name}}

+

{{page.title}}

Articles by category diff --git a/meta/category/general.md b/meta/category/general.md index 8750916..053e765 100644 --- a/meta/category/general.md +++ b/meta/category/general.md @@ -1,6 +1,6 @@ --- layout: post_by_category -title: 'Articles by category: general' +title: General category: general permalink: /meta/category/general/ --- From ef31064b853fa7ed5fcc836d13fd96cb9c1936b3 Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 22:19:40 +0100 Subject: [PATCH 22/47] activating tags, finishing categories --- _layouts/post_by_tag.html | 67 ++++++++++++++++++++----------------- meta/category/api.md | 6 ++++ meta/category/conference.md | 6 ++++ meta/category/howto.md | 6 ++++ meta/category/product.md | 6 ++++ meta/tag/docker.md | 6 ++++ meta/tag/security.md | 6 ++++ 7 files changed, 73 insertions(+), 30 deletions(-) create mode 100644 meta/category/api.md create mode 100644 meta/category/conference.md create mode 100644 meta/category/howto.md create mode 100644 meta/category/product.md create mode 100644 meta/tag/docker.md create mode 100644 meta/tag/security.md diff --git a/_layouts/post_by_tag.html b/_layouts/post_by_tag.html index 69ea789..296c54a 100644 --- a/_layouts/post_by_tag.html +++ b/_layouts/post_by_tag.html @@ -2,36 +2,43 @@ layout: default --- -

-

{{ page.tag }}

-

Articles by tag

-
+
+

{{page.title}}

-
- {% if site.tags[page.tag] %} - {% for post in site.tags[page.tag] %} - {% capture post_year %}{{ post.date | date: '%Y' }}{% endcapture %} - {% if forloop.first %} -

{{ post_year }}

- {% endif %} - - {% if forloop.first == false %} - {% assign previous_index = forloop.index0 | minus: 1 %} - {% capture previous_post_year %}{{ site.tags[page.tag][previous_index].date | date: '%Y' }}{% endcapture %} - {% if post_year != previous_post_year %} -

{{ post_year }}

+

+ Articles by tag +

+ +
+ +
+ {% if site.tags[page.tag] %} + {% for post in site.tags[page.tag] %} + {% capture post_year %}{{ post.date | date: '%Y' }}{% endcapture %} + {% if forloop.first %} +

{{ post_year }}

    {% endif %} - {% endif %} - - -

    {{ post.title }}

    -
    + + {% if forloop.first == false %} + {% assign previous_index = forloop.index0 | minus: 1 %} + {% capture previous_post_year %}{{ site.tags[page.tag][previous_index].date | date: '%Y' }}{% endcapture %} + {% if post_year != previous_post_year %} +

{{ post_year }}

+ {% endif %} + {% endif %} + +
  • + + {{ post.title }} + +
  • - {% if forloop.last %} -
    - {% endif %} - {% endfor %} - {% else %} -

    There are no posts for this tag.

    - {% endif %} -
    \ No newline at end of file + {% if forloop.last %} + + {% endif %} + {% endfor %} + {% else %} +

    There are no posts for this tag.

    + {% endif %} +
    +
    \ No newline at end of file diff --git a/meta/category/api.md b/meta/category/api.md new file mode 100644 index 0000000..423cf62 --- /dev/null +++ b/meta/category/api.md @@ -0,0 +1,6 @@ +--- +layout: post_by_category +title: API +category: api +permalink: /meta/category/api/ +--- diff --git a/meta/category/conference.md b/meta/category/conference.md new file mode 100644 index 0000000..ac2a777 --- /dev/null +++ b/meta/category/conference.md @@ -0,0 +1,6 @@ +--- +layout: post_by_category +title: Conference +category: conference +permalink: /meta/category/conference/ +--- diff --git a/meta/category/howto.md b/meta/category/howto.md new file mode 100644 index 0000000..73f73b7 --- /dev/null +++ b/meta/category/howto.md @@ -0,0 +1,6 @@ +--- +layout: post_by_category +title: Howto +category: howto +permalink: /meta/category/howto/ +--- diff --git a/meta/category/product.md b/meta/category/product.md new file mode 100644 index 0000000..31e8a28 --- /dev/null +++ b/meta/category/product.md @@ -0,0 +1,6 @@ +--- +layout: post_by_category +title: Product +category: product +permalink: /meta/category/product/ +--- diff --git a/meta/tag/docker.md b/meta/tag/docker.md new file mode 100644 index 0000000..47d5f9f --- /dev/null +++ b/meta/tag/docker.md @@ -0,0 +1,6 @@ +--- +layout: post_by_tag +title: Docker +tag: docker +permalink: /meta/tag/docker/ +--- \ No newline at end of file diff --git a/meta/tag/security.md b/meta/tag/security.md new file mode 100644 index 0000000..82e9015 --- /dev/null +++ b/meta/tag/security.md @@ -0,0 +1,6 @@ +--- +layout: post_by_tag +title: Security +tag: security +permalink: /meta/tag/security/ +--- From 4efb8aa1121d155592853c3ec868fda5d3bae730 Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 22:42:52 +0100 Subject: [PATCH 23/47] Finishing up tag and category support --- _data/tags.yml | 4 ++-- _posts/2015-11-11-Hello-World.md | 2 +- meta/tag/api.md | 6 ++++++ meta/tag/cto.md | 6 ++++++ meta/tag/culture.md | 6 ++++++ meta/tag/custdev.md | 6 ++++++ meta/tag/devops.md | 6 ++++++ meta/tag/microservice.md | 6 ++++++ meta/tag/mobile.md | 6 ++++++ meta/tag/open-source.md | 6 ++++++ meta/tag/smartsteuer.md | 6 ++++++ 11 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 meta/tag/api.md create mode 100644 meta/tag/cto.md create mode 100644 meta/tag/culture.md create mode 100644 meta/tag/custdev.md create mode 100644 meta/tag/devops.md create mode 100644 meta/tag/microservice.md create mode 100644 meta/tag/mobile.md create mode 100644 meta/tag/open-source.md create mode 100644 meta/tag/smartsteuer.md diff --git a/_data/tags.yml b/_data/tags.yml index 998d113..8244207 100644 --- a/_data/tags.yml +++ b/_data/tags.yml @@ -7,8 +7,8 @@ - slug: cto name: CTO -- slug: communication - name: Communication +- slug: culture + name: Culture - slug: open-source name: Open Source diff --git a/_posts/2015-11-11-Hello-World.md b/_posts/2015-11-11-Hello-World.md index ac470f0..3f7a15f 100644 --- a/_posts/2015-11-11-Hello-World.md +++ b/_posts/2015-11-11-Hello-World.md @@ -4,7 +4,7 @@ title: We are live or How to start a developer blog subtite: A short introduction description: How to start our developer blog category: general -tags: [cto, communication] +tags: [cto, culture] author: Holger author_email: holger.reinhardt@haufe-lexware.com --- diff --git a/meta/tag/api.md b/meta/tag/api.md new file mode 100644 index 0000000..497291a --- /dev/null +++ b/meta/tag/api.md @@ -0,0 +1,6 @@ +--- +layout: post_by_tag +title: API +tag: api +permalink: /meta/tag/api/ +--- \ No newline at end of file diff --git a/meta/tag/cto.md b/meta/tag/cto.md new file mode 100644 index 0000000..012ea78 --- /dev/null +++ b/meta/tag/cto.md @@ -0,0 +1,6 @@ +--- +layout: post_by_tag +title: CTO +tag: cto +permalink: /meta/tag/cto/ +--- \ No newline at end of file diff --git a/meta/tag/culture.md b/meta/tag/culture.md new file mode 100644 index 0000000..ec8474f --- /dev/null +++ b/meta/tag/culture.md @@ -0,0 +1,6 @@ +--- +layout: post_by_tag +title: Culture +tag: culture +permalink: /meta/tag/culture/ +--- \ No newline at end of file diff --git a/meta/tag/custdev.md b/meta/tag/custdev.md new file mode 100644 index 0000000..8df887c --- /dev/null +++ b/meta/tag/custdev.md @@ -0,0 +1,6 @@ +--- +layout: post_by_tag +title: Customer Development +tag: custdev +permalink: /meta/tag/custdev/ +--- \ No newline at end of file diff --git a/meta/tag/devops.md b/meta/tag/devops.md new file mode 100644 index 0000000..233a048 --- /dev/null +++ b/meta/tag/devops.md @@ -0,0 +1,6 @@ +--- +layout: post_by_tag +title: Devops +tag: devops +permalink: /meta/tag/devops/ +--- \ No newline at end of file diff --git a/meta/tag/microservice.md b/meta/tag/microservice.md new file mode 100644 index 0000000..76fa770 --- /dev/null +++ b/meta/tag/microservice.md @@ -0,0 +1,6 @@ +--- +layout: post_by_tag +title: Microservice +tag: microservice +permalink: /meta/tag/microservice/ +--- \ No newline at end of file diff --git a/meta/tag/mobile.md b/meta/tag/mobile.md new file mode 100644 index 0000000..e1b1cd5 --- /dev/null +++ b/meta/tag/mobile.md @@ -0,0 +1,6 @@ +--- +layout: post_by_tag +title: Mobile +tag: mobile +permalink: /meta/tag/mobile/ +--- \ No newline at end of file diff --git a/meta/tag/open-source.md b/meta/tag/open-source.md new file mode 100644 index 0000000..72aca33 --- /dev/null +++ b/meta/tag/open-source.md @@ -0,0 +1,6 @@ +--- +layout: post_by_tag +title: Open Source +tag: open-source +permalink: /meta/tag/open-source/ +--- \ No newline at end of file diff --git a/meta/tag/smartsteuer.md b/meta/tag/smartsteuer.md new file mode 100644 index 0000000..3df2783 --- /dev/null +++ b/meta/tag/smartsteuer.md @@ -0,0 +1,6 @@ +--- +layout: post_by_tag +title: Smartsteuer +tag: smartsteuer +permalink: /meta/tag/smartsteuer/ +--- \ No newline at end of file From e952d7ec3e4ea575417dffc0de588c891506a800 Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 22:47:14 +0100 Subject: [PATCH 24/47] forgot cloud tag --- meta/tag/cloud.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 meta/tag/cloud.md diff --git a/meta/tag/cloud.md b/meta/tag/cloud.md new file mode 100644 index 0000000..d4e8e79 --- /dev/null +++ b/meta/tag/cloud.md @@ -0,0 +1,6 @@ +--- +layout: post_by_tag +title: Cloud +tag: cloud +permalink: /meta/tag/cloud/ +--- \ No newline at end of file From 3bc386a95aa398780c0d497537cada3b392a93ee Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 23:02:31 +0100 Subject: [PATCH 25/47] Finishing tag and category support --- README.md | 4 +++- _posts/2015-12-07-devopscon-2015.md | 2 +- _posts/2015-12-08-DockerCon-EU-2015.md | 2 +- _posts/2015-12-8-microservices-devopscon.md | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ad075cd..691fa9b 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,9 @@ Pull Requests from our design, development and operations teams of [Haufe.Group](http://www.haufe-lexware.com) and its subsidiaries are greatly appreciated. If you've never contributed to an open source project before we are more than happy to walk you through how to create a pull request. -If you want to find out more about or want to improve our blog the following links might be a good starting point +Support for Categories and Tags was inspired by [this blog entry](http://www.minddust.com/post/tags-and-categories-on-github-pages/)). A list of the defined categories and tags can be found at `_data/categories.yml` and `_data\tags.yml` respectively. If you want to add new categories or tags, you need to add them to the corresponding `.yml` file and add the matching template into the `meta/category` or `meta/tag` directories. + +If you want to find out more about using `github-pages` for blogging or want to improve our blog the following links might be good starting points * [Jekyll documentation, i.e. how to include images](http://jekyllrb.com/docs/posts/) * [Github pages powered by Jekyll](https://github.com/jekyll/jekyll/wiki/sites) diff --git a/_posts/2015-12-07-devopscon-2015.md b/_posts/2015-12-07-devopscon-2015.md index b42e812..b21323c 100644 --- a/_posts/2015-12-07-devopscon-2015.md +++ b/_posts/2015-12-07-devopscon-2015.md @@ -1,6 +1,6 @@ --- layout: post -title: Notes from DevOpsCon 2015 +title: Notes from DevOpsCon 2015 - Part 1 subtite: description: Notes from DevOpsCon 2015 category: conference diff --git a/_posts/2015-12-08-DockerCon-EU-2015.md b/_posts/2015-12-08-DockerCon-EU-2015.md index 8867de1..604249b 100644 --- a/_posts/2015-12-08-DockerCon-EU-2015.md +++ b/_posts/2015-12-08-DockerCon-EU-2015.md @@ -1,6 +1,6 @@ --- layout: post -title: Impressions from DockerCon EU 2015 - Part 1 +title: Impressions from DockerCon 2015 - Part 1 subtite: Insights, Outlooks and Inbetweens description: Notes from DevOpsCon 2015 category: conference diff --git a/_posts/2015-12-8-microservices-devopscon.md b/_posts/2015-12-8-microservices-devopscon.md index 94c9cc6..5f55029 100644 --- a/_posts/2015-12-8-microservices-devopscon.md +++ b/_posts/2015-12-8-microservices-devopscon.md @@ -1,6 +1,6 @@ --- layout: post -title: DevOpsCon Munich - Is it really about the tools? +title: DevOpsCon 2015 - Is it really about the tools? subtite: A opinionated commentary by Elias Weingaertner description: My personal findings from DevOpsCon 2015 in Munich category: conference From 381f3e110f9f935d912e79e97edbbc945285d350 Mon Sep 17 00:00:00 2001 From: Holger Reinhardt Date: Mon, 4 Jan 2016 23:10:51 +0100 Subject: [PATCH 26/47] fixing some typos --- README.md | 2 +- _layouts/post.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 691fa9b..51a623d 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Pull Requests from our design, development and operations teams of [Haufe.Group](http://www.haufe-lexware.com) and its subsidiaries are greatly appreciated. If you've never contributed to an open source project before we are more than happy to walk you through how to create a pull request. -Support for Categories and Tags was inspired by [this blog entry](http://www.minddust.com/post/tags-and-categories-on-github-pages/)). A list of the defined categories and tags can be found at `_data/categories.yml` and `_data\tags.yml` respectively. If you want to add new categories or tags, you need to add them to the corresponding `.yml` file and add the matching template into the `meta/category` or `meta/tag` directories. +Support for Categories and Tags were inspired by [this blog entry](http://www.minddust.com/post/tags-and-categories-on-github-pages/). A list of the defined categories and tags can be found at `_data/categories.yml` and `_data\tags.yml` respectively. If you want to add new categories or tags, you need to add them to the corresponding `.yml` file and add the matching template into the `meta/category` or `meta/tag` directories. If you want to find out more about using `github-pages` for blogging or want to improve our blog the following links might be good starting points * [Jekyll documentation, i.e. how to include images](http://jekyllrb.com/docs/posts/) diff --git a/_layouts/post.html b/_layouts/post.html index 5de6c54..a129891 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -22,7 +22,7 @@ layout: default {% endif %} {% if post.tags.size > 0 %} - {% capture tags_content %} with tags: {% endcapture %} + {% capture tags_content %} with tags {% endcapture %} {% for post_tag in post.tags %} {% for data_tag in site.data.tags %} {% if data_tag.slug == post_tag %} From f482e6d566c407d7243a7aa89b312418810d93e1 Mon Sep 17 00:00:00 2001 From: dutzu Date: Wed, 13 Jan 2016 10:03:09 +0200 Subject: [PATCH 27/47] Added log aggregation blog post --- _posts/2016-01-11-Log-aggregation | 195 +++++++++++++++++++++++ images/logaggregation-analyzed-field.png | Bin 0 -> 24169 bytes images/logaggregation-efk.png | Bin 0 -> 86295 bytes images/logaggregation-elk.png | Bin 0 -> 129237 bytes 4 files changed, 195 insertions(+) create mode 100644 _posts/2016-01-11-Log-aggregation create mode 100644 images/logaggregation-analyzed-field.png create mode 100644 images/logaggregation-efk.png create mode 100644 images/logaggregation-elk.png diff --git a/_posts/2016-01-11-Log-aggregation b/_posts/2016-01-11-Log-aggregation new file mode 100644 index 0000000..62f0510 --- /dev/null +++ b/_posts/2016-01-11-Log-aggregation @@ -0,0 +1,195 @@ +--- +title: Log aggregation +subtite: A short introduction +description: Introduction to log aggregation using Fluentd, Elasticsearch and Kibana +category: howto +tags: [fluentd, log, ELK, EFK] +author: Doru Mihai +author_email: doru.mihai@haufe-lexware.com +--- + +With an increasing number of systems decoupled and scattered throughout the landscape it becomes increasingly difficult to track and trace events across all systems. +Log aggregation solutions provides a series of benefits to distributed systems. + +The problems it tackles are: +- Centralized, aggregated view over all log events +- Normalization of log schema +- Automated processing of log messages +- Support for a great number of event sources and outputs + +One of the most prolific open source solutions on the market is the [ELK stack](https://www.elastic.co/videos/introduction-to-the-elk-stack) created by Elastic. +
    + +
    +ELK stands for Elasticsearch – Logstash – Kibana and they are respectively their Search engine, Log Shipper and Visualization frontend solutions. +Elasticsearch becomes the nexus for gathering and storing the log data and it is not exclusive to Logstash. + +Another very good data collection solution on the market is Fluentd, and it also supports Elasticsearch (amongst others) as the destination for it’s gathered data. So using the same data repository and frontend solutions, this becomes the EFK stack and if you do a bit of searching you will discover many people have chosen to substitute Elastic's logstash with FluentD and we will talk about why that is in a minute. +
    + +
    + + +# Logstash vs FluentD +Both of them are very capable, have [hundreds](https://www.elastic.co/guide/en/logstash/current/input-plugins.html) and [hundreds](http://www.fluentd.org/plugins) of plugins available and are being maintained actively by corporation backed support. +### Technology - Fluentd wins +The big elephant in the room is that Logstash is written in JRuby and FluentD is [written in Ruby with performance sensitive parts in C](http://www.fluentd.org/faqs). As a result the overhead of running a JVM for the log shipper translates in large memory consumption, especially when you compare it to the footprint of Fluentd. The only advantage that Logstash can still invoke is the good parallelism support that the JVM brings and very good [Grok](https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html) support. + +The only downside for Fluentd was the lack of support for Windows, but even that has been [solved](https://github.com/fluent/fluentd/pull/674) and [grok](https://github.com/kiyoto/fluent-plugin-grok-parser) support is also available for Fluentd and you can even re-use the grok libraries you had used/built, even [Logstash grok patterns](https://github.com/elastic/logstash/tree/v1.4.2/patterns). +### Shippers - Fluentd wins +They both however offer the option of deploying lightweight components that will only read and send the log messages to a fully fledged instance that will do the necessary processing. These are called log forwarders and both have lightweight forwarders written in Go. As of this writing Elastic has released a replacement for it's [logstash-forwarder](https://github.com/elastic/logstash-forwarder)(formerly called Lumberjack) and it is built on top of it's new Data shipper platform [Beats](https://www.elastic.co/products/beats), and it is called [Filebeat](https://github.com/elastic/beats/tree/master/filebeat). + +This new Logstash forwarder allows for a TLS secured communication with the log shipper, something that the old one was not capable of but it is still lacking a very valuable feature that fluentd offers, and that is buffering. +### Resiliency - Fluentd wins +As mentioned previously fluentd offers buffering, something that you get "for free" and coupled with the active client-side load balancing you get a very competent solution without a large footprint. + +On the other side, logstash doesn't have buffering and only has an in-memory queue of messages that is fixed in length (20 messages) so in case messages can't get through, they are lost. To alleviate this weakness the common practice is to set up an external queue (like [Redis](http://www.logstash.net/docs/1.3.2//tutorials/getting-started-centralized)) for persistence of the messages in case something goes wrong at either end. They are [working on it](https://github.com/elastic/logstash/issues/2605) though, so in the future we might see an improvement in this area. + +Fluentd offers in-memory or file based buffering coupled with [active-active and active-standby load balancing and even weighted load balancing](http://docs.fluentd.org/articles/high-availability) and last but not least it also offers [at-most-once and at-least-once](http://docs.fluentd.org/articles/out_forward#requireackresponse) semantics. + +# Additional considerations + +Logstash benefits from a more chiselled, mature implementation due to the fact that the core and a lot of the essential plugins are maintained by Elastic, and some may argue that it's easier to deploy a JRE and the logstash jar and be done with it while others would consider it overkill to have a JVM running for such a small task. Plus the need to deploy and maintain a separate queueing + +Fluentd provides just the core and a couple of input/output plugins and filters and the rest of the large number of plugins available are community driven and so you are exposed to the risk of potential version incompatibilities and lack of documentation and support. + +I have personally seen that there is a bit of chaos since each plugin creator will define his own set of configuration input variables and there isn't a sense of consistency when you look at different plugins. You will encounter variables that are optional and have different default values, variables that are not properly documented but you can deduct their usage from the examples that the author offers and virtually all known naming conventions will appear in your config file. + +# What next? + +Well, as you can probably already tell, I have chosen to go with fluentd, and as such it became quickly apparent that I need to integrate it with Elasticsearch and Kibana to have a complete solution, and that wasn't a smooth ride due to 2 issues: +- Timestamps were sent to Elasticsearch without milliseconds +- All field values were by default analyzed fields + +For communicating with Elasticsearch I used the plugin [fluent-plugin-elasticsearch](https://github.com/uken/fluent-plugin-elasticsearch) as presented in one of their very helpful [use case tutorials](http://docs.fluentd.org/articles/free-alternative-to-splunk-by-fluentd). + +This plugin allows fluentd to impersonate logstash by just enabling the setting `logstash-format` in the configuration file. I snooped arround a bit and found that basically the only difference is that the plugin will make sure that the message sent has a timestamp field named `@timestamp`. + +And here we arrive at our first problem.... + +### Timestamp fix +This is a pain because if you want to properly visualize a set of log messages gathered from multiple systems, in sequence, to be able to see exactly what step followed the other.....well, you see the problem. + +Let's take a look at what fluentd sends to Elasticsearch. Here is a sample log file with 2 log messages: + +~~~java +2015-11-12 06:34:01,471 [ ajp-apr-127.0.0.1-8009-exec-3] LogInterceptor INFO ==== Request === +2015-11-12 06:34:01,473 [ ajp-apr-127.0.0.1-8009-exec-3] LogInterceptor INFO GET /monitor/broker/ HTTP/1.1 +~~~ + +A message sent to Elasticsearch from fluentd would contain these values: + +*-this isn't the exact message, this is the result of the stdout output plugin-* +~~~ruby +2015-11-12 06:34:01 -0800 tag.common: {"message":"[ ajp-apr-127.0.0.1-8009-exec-3] LogInterceptor INFO ==== Request ===","time_as_string":"2015-11-12 06:34:01 -0800"} + +2015-11-12 06:34:01 -0800 tag.common: {"message":"[ ajp-apr-127.0.0.1-8009-exec-3] LogInterceptor INFO GET /monitor/broker/ HTTP/1.1\n","time_as_string":"2015-11-12 06:34:01 -0800"} +~~~ + +I added the `time_as_string` field in there just so you can see the literal string that is sent as the time value. + +This is a known issue and initially it was the fault of fluentd for not supporting that level of granularity, but is had been [fixed](https://github.com/fluent/fluentd/issues/461). Sadly, the fix has not made it's way to the Elasticsearch plugin and so, [alternatives have appeared](https://github.com/shivaken/fluent-plugin-better-timestamp). + +The fix basically involves manually formatting the `@timestamp` field to have the format `YYYY-MM-ddThh:mm:ss.SSSZ`. So you can either bring on the previously mentioned `fluent-plugin-better-timestamp` into your log processing pipeline to act as a filter that fixes your timestamps OR you can build it yourself. + +In order to build it yourself you only need the `record_transformer` filter that is part of the core of plugins that fluentd comes with and that I anyway would recommend you use for enriching your messages with things like the source hostname for example. + +Next you need to parse the timestamp of your logs into separate date, time and millisecond components (which is basically what the better-timestamp plugin asks you to do, to some extent), and then to create a filter that would match all the messages you will send to Elasticsearch and to create the `@timestamp` value by appending the 3 components. This makes use of the fact that fluentd also allows you to run ruby code within your record_transformer filters to accommodate for more special log manipulation tasks. + +~~~xml + + type record_transformer + enable_ruby true + + @timestamp ${date_string + "T" + time_string + "." + msec + "Z"} + + +~~~ + +The result is that the above sample will come out like this: +~~~ruby +2015-12-12 05:26:15 -0800 akai.common: {"date_string":"2015-11-12","time_string":"06:34:01","msec":"471","message":"[ ajp-apr-127.0.0.1-8009-exec-3] LogInterceptor INFO ==== Request ===","@timestamp":"2015-11-12T06:34:01.471Z"} +2015-12-12 05:26:15 -0800 akai.common: {"date_string":"2015-11-12","time_string":"06:34:01","msec":"473","message":"[ ajp-apr-127.0.0.1-8009-exec-3] LogInterceptor INFO GET /monitor/broker/ HTTP/1.1\n","@timestamp":"2015-11-12T06:34:01.473Z"} +~~~ + +*__Note__: you can use the same record_transformer filter to remove the 3 separate time components after creating the `@timestamp` field via the `remove_keys` option.* + +### Do not analyse + +There are 2 reasons why you shouldn't want your fields to be analyzed in this scenario: +- It will potentially increase the storage requirements +- It will make it impossible to do proper analysis and visualization on your data if you have field values that contain hyphens, dots or others. + +Ok, so first, why does it increase the storage requirements? + +Well, while researching what would be the proper hardware sizing requirements for setting up our production EFK installation I stumbled upon [this](http://peter.mistermoo.com/2015/01/05/hardware-sizing-or-how-many-servers-do-i-really-need/) post that goes in detail about what and why and how big can the problem become. + +Worst case scenario, you could be using up to **40% more** disk space than you really need. Pretty bad huh? + +And the second issue which would become apparent much quicker than the first is that when you will try to make use of Kibana to visualize your data you will encounter the issue that fields that contain hyphens for example will appear split and duplicate when used in visualizations. + +For instance, by using the record_transformer I would send the hostname and also a statically specified field called `sourceProject`, to be able to group together messages that came from different identical instances of a project application. + +Using this example configuration I tried to create a pie chart showing the number of messages per project for a dashboard. Here is what I got. + +~~~ruby + + type record_transformer + enable_ruby true + + @timestamp ${date_string + "T" + time_string + "." + msec + "Z"} + sourceProject Test-Analyzed-Field + + +~~~ + +Sample output from stdout: +~~~ruby +2015-12-12 06:01:35 -0800 clear: {"date_string":"2015-10-15","time_string":"06:37:32","msec":"415","message":"[amelJettyClient(0xdc64419)-706] jetty:test/test INFO totallyAnonymousContent: http://whyAreYouReadingThis?:)/history/3374425?limit=1","@timestamp":"2015-10-15T06:37:32.415Z","sourceProject":"Test-Analyzed-Field"} +~~~ + +And here is the result of trying to use it in a visualization: +
    + +
    + +I should mention, what you are seeing is the result of 6 messages that all have the field sourceProject set to the value "Test-Analyzed-Field". + +Sadly, once you put some data into Elasticsearch, indices are automatically created (by the fluent-plugin-elasticsearch) and mappings along with them and once a field is mapped as being analyzed [it cannot be changed](https://www.elastic.co/blog/changing-mapping-with-zero-downtime). + +Curiously this did not happen when using Logstash, which made me look into how they are handling this problem. Then I discovered the issue was discussed also in the context of the fluent-plugin-elasticsearch and [the solution was posted there](https://github.com/uken/fluent-plugin-elasticsearch/issues/33) along with the request to include it in future versions of the plugin. + +And the solution is: When Elasticsearch creates a new index, it will rely on the existence of a template to create that index. Logstash comes with a template of its own that it uses to tell Elasticsearch to create not analyzed copies of the fields it sends to it so that users can benefit from the analyzed fields for searching and the not analyzed fields when doing visualizations. And that template can be found [here](https://github.com/logstash-plugins/logstash-output-elasticsearch/blob/master/lib/logstash/outputs/elasticsearch/elasticsearch-template.json). + +And what you basically need to do is to do a curl put with that json content to ES and then all the indices created that are prefixed with `logstash-*` will use that template. Be aware that with the fluent-plugin-elasticsearch you can specify your own index prefix so make sure to adjust the template to match your prefix: + +~~~bash +curl -XPUT localhost:9200/_template/template_doru -d '{ + "template" : "logstash-*", + "settings" : {.... +}' +~~~ + +The main thing to note in the whole template is this section: +~~~json +"string_fields" : { + "match" : "*", + "match_mapping_type" : "string", + "mapping" : { + "type" : "string", "index" : "analyzed", "omit_norms" : true, + "fielddata" : { "format" : "disabled" }, + "fields" : { + "raw" : {"type": "string", "index" : "not_analyzed", "doc_values" : true, "ignore_above" : 256} + } + } +} +~~~ + +This tells Elasticsearch that for any field of type string that it receives it should create a mapping of type string that is analyzed + another field that adds a `.raw` suffix that will not be analyzed. + +The `not_analyzed` suffixed field is the one you can safely use in visualizations, but do keep in mind that this creates the scenario mentioned before where you can have up to 40% inflation in storage requirements because you will have both analyzed and not_analyzed fields in store. + +# Have fun +So, now you know what we went through here at Haufe and what problems we faced and how we can overcome them. + +If you want to give it a try you can take a look at our docker templates on github, there you will find a template for an EFK setup + a shipper that can transfer messages securely to the EFK solution and you can have it up and running in a matter of minutes: https://github.com/Haufe-Lexware/docker-templates/tree/master/logaggregation diff --git a/images/logaggregation-analyzed-field.png b/images/logaggregation-analyzed-field.png new file mode 100644 index 0000000000000000000000000000000000000000..6a5846641a5d323157255f4c547c37082fa87afb GIT binary patch literal 24169 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 literal 0 HcmV?d00001 diff --git a/images/logaggregation-efk.png b/images/logaggregation-efk.png new file mode 100644 index 0000000000000000000000000000000000000000..9d200cb9c6973eade0b3d068dde27be61b1a51b6 GIT binary patch literal 86295 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

    tWu>$(C{!c7s0LhUjOfJ_#rn5(-rSz>3YF; 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 literal 0 HcmV?d00001 diff --git a/images/logaggregation-elk.png b/images/logaggregation-elk.png new file mode 100644 index 0000000000000000000000000000000000000000..2c1f58eb350e645b99a8a8ce6f11200d2eee3d4b GIT binary patch literal 129237 zcmeFa1yqz>_waoYBBjhI(!wwz0@B?QLrF;}A>BQcbV?0M2uL@Ih%^XDBa%`A(h`!= zl0);2a_cS6b3d=oyZ-O@e(PIH*3#j`-sd{Mv(G;JoO7)q_>O|q1za**001t?NW+u? z;Jh~gpqXN$qjKnp2m??bIJVLn4gkP>?b|;zm&{vE0D!A#E-rrOjv3q$?qCMDg~*7D zLu~EgCgxVg0N^r`tYWIFvOpw+9N!X?Mfg0Gg)3jdhA4|Y_92X*WuV3Z-9}KS4_{Gw z3zm?;ByUYaV1$MFgj`W##D9c4bbf|9Bh2p^;?etq&+gAG2da^CoyVnv!t=SC$tB(A z>#^};q&bwheDJfyD8Z9{Esf2eXP8BNacOJ;5O#?XwZqXhG+@_DQ1B+S{(LQf=F*3U z4b;mg*0WLsoe(UF#cQGY_@mW3M)1mF`w#*mZee0C01-(vpX4}N6(9{0&}%m|mMLkz5dh?}F#-md2>`j>_Z~?A>Z|~viEJYuFvJ9~%BY!0 z1BK;4eHRF?7{JB{Sd|a~^Z=$ipx1isnhW3`4-iUjs0ps$%m>Xgph(3R3s%tZN%-E! zX0ki4rp8Q3*Cj)IlaN~I{U_N|)@yU%AvNQxl8_ z7{U`=K%s>&ntKG(OKn4p9oZWob;tTCBmitw!QXzQ!^ZG2^ZVTGe6n`yNGk0*;A0{a zX$Js0FdAmn_a(PlumJ#;=F3nhO1|}$gs~or;_bOlZ}ATGxc$Xw8XLqwVz@>=6!v=b zxevwY0y_(@GU%~<6uHV-uVfY&WqXmi;qIG@Lbe3^`q(LN>8gEkFhyIjFY8l}AkYjR zsb34jCXNr-rG6`odFe3?qzyr+1eJ~8l4etWqzbt!eRV^~9-S{pOR_RTpcP<$co}%Re@LnT{0Xtiex-{dpflJ|+SwQXx@kSn+OTpso zH!7Z>%M?9V?Y-11*=wVGZGka6kyD!NT2$MJk!A6DzNd_ko2>ye$usX}IA+Las5kE8 zCL4&@J>ONCqEmivahr4&G|M@QWgN#YdiPm^^4QCCRWMh$rdVEjnR0l<9c*U;;VM<4uNOGRU zl+>A|AWrTDY2Rbg7FAXrwxziFc!GHNU3G>s29GNd?{TAVN7F`=Gq9*;zk2a%{1x8a z&AaWY;n_MWp81k@IaH>zaX!Z6+R48b!bEpcI_w!DxN_`sK|k+!IF*u#mTD(>iN)nlPo+39@Z9Je{tN|ZOB zn%p`+9cQGf!waE*S7p8N%;Tm_r4mgTFM*ckO3=^UjTsihk3{FSWa z7c~-98V9}?MO$v)(7GXI8s2p-d0u5$Wh@Ifi%4FGe>y`Qx$g|CiPf=`1rir+;d*u-TA7re^SGPoQM$Qv+ht@}~TEt5G#ko|T@V zM?&W>1Px!zxvF{9%i*;>A^$!8@r16V)mxrTTQLhPrt00G?jerpvdiuCjpoTJiG5P0 z#HJMvew&EL!LkqAnPY{S6Um#$T5D!*J8s))e|GELPEIUIY*=|YTCmE!YQ7ruDYb($ zl|Ds-!{NibR`E%t*`8Z?snM*K6S-cB;)=eerSsQV3|S)7@&*gbGo4={_1B1ncZBUz zr-i2ldB)ktHFP_8>dRZp+ZErzQ*;9+#J#Vb7@fGC^Z;2t*U?Ndf_+7O@1q~=x_MC7 zh27#GHQp&6UJ(sRs}Q{+8vZcv;q2QyYO~hmCwbJ!`M9o#F7t~4cf7s~d^oQ^r~mk! z7ygZapa8YNTVb{cb+R6|ST5(DPvQ;}uzgqzY&_AFO_8sF={6UG@GE8u!4aNH&dOWO z%qAKg{p!i;GFGw_e9R2_+%{IV6Nf9CK~u?7c+>90aV)Lcwyx=24O;UJ-w#YC7rqkwD4%eYIQEM75Zx!2S@IzG z`?~l~PhV%}G*%dOoAjD2%#Aap+`ky}Dt0dRqRoZjk=GX{?!8{w-jNt(iS48tt@0}q zuXt7`_@>%8tF5b3;Fjuh)h*S1RqoZ^u~PlPU7Ma&a`);T&gK5m`_;%J;kMe*yJ&ai z`%U_d4`dEXkhk)KUoGs$99V1TDOlUBv|#jN9G$;*v23v7WB=7&Aywt@ftyQG7h9-m zkCWG&nJ#c&xEq?(Jax?$<~p;0#F;=+Uf>^b3USZ8j~f77MY2jReU=m4t)) z2KOr!JA``%7RTKVrADa;k~jr5TyJlxwwaGCJnV}y-RKTUj!yRUV&40tH=0rAK5y7H zVLpIcNKz|CK&{)l;8ywk$+@2sB^RmBj)YV=!?0jQ2uUfHM zcS~eNbXa^WsQ=de<4;3tpS&&VozpgZK1m_50{psj0McGbocW_iT{u}Op zp$b*~9~IgD*vkC#bNwv-j~E@zP5#4!d@K2nV#Y4!|3U0q$*I_Pn>rn8K@@dYvJPlRm+*W|EdRWWNza6UupTf z<}W&o4Easq_SX82!sgccrp7F`Hl~6se`o$u^Sk}>%h)(L>f0C^%fN(D8O-M9M*JMS zY@FQe+{R4$#vH~>oNTOoO!{nWJWM^$Fb$jkpK{%@*baKi`RrVvW? zskbqL8=}dH2F9$Y#@O|ZdDsluIr%t^ ze>CwAYW}S$X>$jZ<+=W1ktnK`p&HtAJ@wX)#n(5n^8XF0- z{OH?{jQ@*cX9%}(GPeKUnMkPVs*ehdjO`tSP3+;;5Pe%)D|18rZrG4!}@1#{#bQRz3thR z@5gHT?nzNpW^Q2~jQyHZE~CHVIBKUI}(_7$=NNlnW*X6XW~cV*FDP zj|ne3yD>W#6CaO08xtoFm*KaFlM5Avv+;27aU1g*@^Syy%EUP(L^(MnxVbsRxKU5V z$}7pu!7D1t#=*zM!@(-X`Ok_@bIQVG7{q4Y<%3PZ3r{luWEj&_lury`zwA_@QMngzOPThD4BoD``7yF z--1x92j7EC4%Y8KENtIC{*wK*{9k1?ek1#9`M=8kEqd3++))@6-+zD9f64wu>f1Ju z|2sbw)X|6Wx6b`**1y)iWA0*Xr4BPkZ9W{n1<`DLY$#j&F7>ZP|0t^QwhOi-=jqG8O{gD!^#ADR-(C7Ys`jk1KaHH_@tf2iT)zQy zw)hXOvpjy2`h)8?fX){G!F86$Z&H77{RYt4;y<{~^7u{a53b(;I$Qh)*I6FFN&Ug~ z8$f4^|KK{y<2R{4xPAlZZ1EplXLJP5p06JUz2iI91 zze)YU^&3EEi~ry{%i}kxKe&Da=xp&HTxWUwCiMr`ZvdSw{)6i*kKd&J;Q9@qv&DaK zo#pYH)E`{G0d%(b53aL3ev|rx>oe~vqbu&?4v;{y6rIqCY!0kE!`1k?9-U;e+0RSGb0>Gjk0Px2F05LpL zw@DH}%RP{RiK@DcEFU>18JRw~ah&RqG9P$b`)bw=Q*%zTSpXLzf=)wxiVvW!1 zZtZPdP_vW&Ze%<)w$z!}%FvKJcp$c2M12wdEH6Jf^^Wdr^>hKGk^Tod9zpiOpe94`F`$?(r@)F zj{ju*;qlXA{u^`95W@U!VvC;=Nk;6Dw~jM#3@-cUEfgs~Nc&LA%k1dxB*haMfASb% zTj8!$>a6sP``(JK$wOWSryx6e=BKjScuBH;g)gPf=_aU#gQFs+>a$xu#&_QSKh@5B0$0QV7s^4#|s@u17dd_&E9KV@Vb&O-7MYv7VT zp-4%O*>x*F5C8%{0r`@G+3JWl+0^n7;~Z5V-RC{$dY#l?!UC895q1FEXdf%~BI7XY zn`PzKcA4&JIqrqMB|{aQA-DJG@BD@2!PnTYwx34t%N?ftt%BSg=G8@w4?Kmhla2bvC8V*yV4UEMi7#0)e^FIP zc2Dbcx z*NZCS?)o-dmQWu=sAOLieuPI1_hO$;T&q*_3vjX}URn|Ar@OeV$4{fIJ(G#%{wrn? z7);!#m1M`t@6D$wR%S=y9K4+Ve6fmK3{ICba5CQ9345ds#RsrKM3sK58~70B5L`Pg zPSISY(o=Vpm9bFr{WpH+i&USsKa}4px3vY)(#Q{MVy2l0jc$GM1Jud1G|AM_>qW33 z^%q+ozRBfoULLAKJu&hkI5AW*h8w%B>UIB1UukQLB<+~z3ywABpwShRUW+Suc6#Op z2Gu=QJPE{?-$zcJvP5Z@t3-4TL zXmtm#D-i}M^zru}Kf4&C!7163b~ z@_FTg?_h$cLo(9SKQCN!zv+kZ$qF6Y0SkaKE=vr7NXf~Hd+L?f!>%t~P4nP@LO~!q z^T)%kYg%*ozFZ_&oSdB1o(JQf>FcKJ8zVjkm*x;ztJl4%D~RM=iYk>X>5*0479skYz1~6g1w>Y4aT@sSjEgs2b3`7CrvTvb5ZK__(yd z+jMj8s!FMeqVx8nb{3Bn%NR!W4??UT?lUw6ww7>`bvl)36bxorZf7r;cvjv^O?uf+ zmgkfx1LOL!H7VucYKTtVeCeTVZ0I~lfKDL=z{H+$y-&gwHGOKQGHpx zPZGF3byrQxah7Sh#8)CG@51IIkkIwhnXo7SvvXD>yJO-9PDHp8nDj6b%rBR)>RIuF z!b4Uj%IC=tPw;(+n-u_gthjU7_2|5qz$JbDeI+#g^Vko|ltbe7($|DHD!M&g`(EVv z;kgyOIh-PgSKGHuy|u3(3HWHiHM-(d(gPBOV&?|Cy*k41gwbw}XKKV;AGfPY=F~K= z>bKzTdwy4TB+p5}x_qQdMnI-!o<>G1hE^u0-y+N0BA3e_VHCnPfUXRReJ0i<;B2(^ zV(fmc+N-Sw!csh$%(h*;jPJNQ; z{azc-T}5xVX=Lr4mHU_th&M=ScHwx9#{erIpX(+Q&&jZ^7YOux3{xKrc7k5SjJpc> z6iQ4$Ge&K^oBGvqmlpGBJMYDyI>%m8 zc>YP(vt(P15NUse|5cw7#KU?r@w|H@X0L1JpO1AFbINPV2xRk&ZZ9-{R5kQ)e9g@@ ztiT>yK_idDhK){+DNP4mPI4wCy#}mEhDx}dS7XvF8{o*V*li-#^|Z{^T3OT)k<1eR zYb?coj3qP0NcpVy@kmaaI?Xlcz*H-&a^Ch52_~@SnPBX_{kg98usJcEkD(sI*s#n2 zV2RG*i)^rx`3EGkVjz$jgi@krYx~Qlw+;uXbgNw^Z+LB79n|tPSAV2gy5N*^VQMqz z5*PqG0j^0*fP2n#L)P)a9JIglt^hz(r3cCDat zdw}4uQwoyj=kSoRqn>dJMnaRSA^Dk51b|f=cH2>>)q8!xpsL=))Ad*qnAqPbKQhx| zF0<@2?HdZ?`o`y-rUS^_na|85tS9v`?Jp+0*Xj@ivkxdi5OQ`Hk@J2E0$5 z`C~y?O4x2AI9V4!uDNss1{@L*VKZKhm)@bUxD2JHS#e6J2=~}pW3D=m{y>HWfN!L1 zMwo(caiCp*UTpM3h!!^WP8`({cs%1k*dhgT`vLJ|eO2E!Ux## zppPH`B%`oEQL(w{wkjQRi^U7od#jb}ECo9kiQ329h)!1%D*goFo8SC!c8SgCW#rKc z)yWMJPHvFz;iadbq}DKuyliv$g-bmjBCeGmw}u}MpFhE+^P@QjLc5V7IunOuHbL(r z8RAw|`*q#>X!2z51JzNRxA!^|i)DDYsrh9{YUoaVauqhBka(vg-GNes!yT;4Obq@S zEMFz;Jy?^-y`oj@_<5UU#CCl@x;=*J)jb0=Jz=-EA=sjNQY|l1J?!UW*N(^Ek(cYZ z_e-pK&97LpsO#kPhmYA4fiFFH#M8iPRW>qOwp_iL4_8#^C*C3i^sO8lTKqK*% z4lLS5i$E{E z9ucN3z;Nr=KyVpi1 z+`aF<_s+bgcuB*>4_mPTT+c$OHZQCM! zovUXDZZcODj%aU;^N=&myN1PHyA&Xrshm4F>g;{w>%BWPU&WBAdlc=g<=(l!UPK?` zQJ`o?2g{&CJagF`sG&N@5|9dP8Q^BcGsk`+A=D_LIUcK!gtoV*Wx%>Vc()$FtO-FZX4OwHkV|y$o@2VQHsGZ1Y zpMcJ#McWf9m#o~!As2%sBqikbFP7J?mO}8C(QqPwa{%aNiE0}5!?-uQ-QJsOQJ16Y zjz{Z^1>bbc>T_j)*L?spQI{7yd?yzkVnfjpfND-=%|YOCORCpaMCj=FZeZ-mdzNbJ zvC7%;3X_s(8q!pQ+ZbRWhn#2Y0-)lfYYjeew}#~aCIlS>g70HT5f&=%IoW-y%yjLo?!m0{;VwDc zWT&q$ly8({ZbqnlWFf#ZmPu>qWNc0N_)D`jIkQfM%eqKavY<8elf`wRvFIfoj|G)P zXYbW8xR%?(xmc}Qn}w;jT$XD2b-NAMWn)#VrXY`^%2E>&Zufm8u?#5{r3efVcTeGc z10OBBQCq%#EYMW7zXi+8A#MYa3JssGew&Y8be{%n%lrGLC&;hq$+XyDOfbj?8-R2U zmB7-oWBfGxxJIpT@=EjWv3tyX4X>VyCXB5&27Fu*a;`6K`iN!r4z%!iE-mR+ZF3c9 z7uh7kxzW(Vx}@H9U^-HYINS)w5~TsN!kP>YgB8agAP1=qn^Ha7mvoTDn%0$L3f)Fw zypPZgLy-7DN96MbiKTl+GCRo!R8&`!-%M>h2oRe|x^*N@Z4mi9fVc9vQkKfYWpl9h zc=EwuE&;}pAo1-03A_WA3df`CvH7|sCVLxKWEuJ`a-z#dSDq)o9?5%o=Miq^^D#5I z@LL;WRovs=gXuMi<<|Q)&PZUGE(DkV!s!+-<;IU?(p0H8;kYaImU1FV88?6lgNcag z1)98vsbkBV1!K3oUj!s)5Ah!YB1*Pq-6;oa2Rjc~ zTo;N z8ML^tqm>ua$C;=tZoJTYuF8pOe0O)JHf3=(R{P2Gg+5ABm|S13GJU>A%}l%V#DrC8 zLCyY@Q>4p$vcrngL&(w5*iAKN?JB3Hz{i96Iwh4OcMC=1Uf9@Y%xPGGnwoGUhikSY zj;gq=y_QE4Dfb3G4jr>HlN+L&8X2)vQ01tX zh6)l>cP1fITaFH6=h}504ld{(ZaC|D_1(=;W40;19A_SD!>I}A;or@f9Usq^<<7mW z;{0{;!{>L`M$6X5>elLKRE1=E3x}>seV*C)Mfr;!6;h2HL5fGr> zhe!kvj0A%$txMv^ohOjz&$|~?ZcNd1@;~?p07*e(Eeu2%aF3+}s*^#Mm5~Q}Mpo>d zTGU}I!-X$YA0=-BK6G}3He+SZYsc4?2JpJvH zxbAy2aE~7_I+!N}+j@I8mCHLXF6KSUvH(1ijEbj%d zeoVdv4w&|aWwUVSd*6;;v)6#;Ktf7N{_$~2qD|%E^#8Yj->*7ID)kwRd z_g(U#1Y>(}@8e0HTcuXBO+3{bd1^W*{OpzN>8DJbx3a#Ty4~Skn~zTLin@>ek1=5) z2&@Qfj&1;S&IpH%#gFzj#~0?r+LU@%Fq&ar>D!aN%@dxoH9I=|4t!b+AAkgc{)Ec4 zT@h1%JxtM?Ob#ZEAo>6y6Cs4r_?ZDD^ddAOtpaIajQKZ1cPo~QFH|{Q9jZ1~RCB)K z0|*EVEyM{20=c^7ukM5tcU+gT0D+aBt6UF7XlpkGw~aKyIyJ9-#V0z#L%+}1M9yPl zS=#$x>E88~E&R1FN$~PMCxN!!<-`fEMywviyPQi4q+PR`g- zX>d^sW#xRT@Ya2Aq_6H!*@Ams^V5|0(}m{Khq(*ir_O^iE7z^nmenI8twnSI27>`c zfs*ZLBAG_P{O#Ce&+kq3g~%3Vb9u(#fC+KeKfjZ5S{rg&vM#?rsq=(@_Tsm<5Tr;sU&gp@$I9<`O*|(5LkAv}`V$PcN>uOaU zv(MfSwS}z@0VD1@)h=lusc_*kYey^lwc2+#V^}CCmLE^Qyo12C;}v9IU-#bY%^y3D z_`+3QXEfaFOT(wV8Hf$i&(sQ;{?f(bxmIwp(}yzJwnVSxE9NoDZHvF zt_FQ!$m6Z0+p|NO?r+bv7rZezO6YHIpY7cp+MSu<1g^+tGRh;DT@Kr%)`r(VV!)hw zHt@g?E=inj+_Zm2@3U_Uj@~tXWoAdaG#CG>bV%V%#4ayu<`9qpK%kJ%`1l=*_g?#BJfey@&J48m zCj_jC1x@n+;pqF z`OHuyF=b@?>$CfklC)%@I}z6m2?XCPObGAwx1)3d1hZa=MlFd_W(u*6x7^88u zqkC6{f`oV0tBzN0)!NU_E_oe$!Wm;9%S1NBhbmk%aCRPyt=*`Bj~#qrIsTML#JpS} z&r?0`BmnkpdVDab`+70s@xarYP3uK%Jv}ne`*hKoq5J7a0_B2E6T4q)Q)(sbiVUpN zZoE33YqDQEOmBXlY)|Io^y$FAgcqWiwM~Rnwc_JWk-!9~9R!t} zyJXdRoMM+>jBSqvjVOu0hHT0$OZQWcyKfyvl-E#2g7t145JD-ZNm{+OSdIs~ZcrUZ zpX^9sw5w%Ki$fSEMM?bQN#i7{5$8qP1kxmYO6bBGuh$)odWR4mEul( zd9Q`%>D0K`+wc1yTv8$o&^IHXA|2cPqCy~4JzM{l+Jw208vHt8`}o}BLEY_F_jL|b zZVu|W1$O70x+spH`=*;aHhVkTR42*V>(@lpL0~jU1Ly4LHbSu5O;J6BfH85e^r6uh zSTED)QPH{%zX;yfJlXw`s>1i^73y-VA%rH9TJTY z)@b|eVJooHHhMv0L}wbQGEN7CseElQk%f;(TDnaHU|YvCuK7c^_sLuxGjzCLWqvGLd*h1VWw zXWlO8;WPX0-M9*VMw3lZ69$?-|{b2YT!0K9C9Lr-+fDV~EbS9n?7@lbvU2fLfFYu~PP0KNq>z9qc{}w;ryV z|2ox#XXCZkk2+-t^z}{Ql)s<%RHMsw_Zu+=-P!}+s=EF9?%K7MfqV_rx7!`PF5-d) z>Vu?2OQKgtJZ(pJJl~1GGn`g2G>lrg_iXHCUhS7f;<2sD*y_b(Aq?5Ak9WVX4Vx0~ zf8F35UiOt*J3`hZt}#8W+zdF`c;iy}IW9BD>Y610fP(LkkTI>1Wcb`Jk^orlU}ux` zeQ2+Zlc_A+x5zA0jRl?f~1>PHd$mOwH)kaDa0^@cEiQ`{4 zP&9@+~n@M?QjGgldVnN-O4G&-;TFnoH*&UKQ|XPA1@+PyNd zBchs%3m`yZ0<-DsgkUT;sO->!hoqb`WkF_2dXAYaTM=q+Cr$Wa_1#K~vmCkjKpHlc zAnR5$PtE7>TU$H;li2{;LfpKOels2VH3IL0l%UmvfsCehovp}NCe0cOt%Q#j9T#CD z8#rd5^@fWu|Ett7?p01!BOCMH$H=k%-Q<&nmcfGi!S&mc9P&}s82d9gUko)Y8|txq zulRCy($Z#8c^e$W(<$;=h&-l|kD`(7Th^fH_dQ-k9iHtM zg?q1Gg}ZN;4(6uD#R+d7;EGg`wAkHAv=Q2BEvs4^-aV3Xb|V;wGzA)+Ja@CkkxOd_ zrMK9c7jaH6sOJLy+TvOq%ZIKW4N=vM!~v}c1U5;-x+Xt=^n++CT`oN=A~ZBhvsV%F za;C7M!7J*19UQT*uw!idR`*edWONXiZC7Y`c+Hxr_YSf5f%DrNPs+kpe2Bi*>tMdr zvR0s|L@pt%Jg0gx+tsvAdY6duYCt1-uY10B`LfDl`7|idbl&6@@u<*BNs8MYYB`>c zkfN;H>b+1=pODPZH5odC~77%42jR@X=%1JG*m%FaUNEE zU6M6m%rZ?TUDqawSR3`R(b2n%sJ|zZbI+1+3L6xcx-Q}3>}f$R zF$*bqqTpuA7cq*Mn*kB&>+Wk4_DCK|cdNdXdp8$WvLPABOMxF%E_iHCrh3lQ_AeFm zm8g9WKRStjTt!t!$xj@796Q-f#fwIZC$-&S6rYxPHcPYxi;lDlI|pEb?W`E$ZT9J& zkLN$Z7W6}i=-|lffvARsYml}%AX2DYq@#<=a`|z4!SM{s3G*8qY15m$ARp9n32+1u zWfVH?PL|j0%wD};zQv^O*w3Ywr&Cq@p%24+Bqha(S+ubWlM~pLYb1Vrj(oB?h^lTH zPj{lycrdaF1CN+VtJpj^6eSN*BXu)Ie?dJ#?K#Nyh zyTV}o{p{m`eC>hJ(WY_tIYx&rJHq&^GK!s)f@&*sf%UHS_~$LqOPHc+nY%UTQ+8)e zYuBgY9!(bpwfVofwb*s&B?yopR!}!DPPLyiUYkEyv#EyG46ziS zcLnvJ^FpRR+U4~0_Z^HlA1yZ?TZem`M8LgPEOigq3$!Y}JhIfOo_dIf=E*HIn`8>i z;mi4iG2?Cks^rsu zTb*8s5QGZS6vsWbnNVwLO4WC67Qz!GUzShrcN5?n@h8Xu@v2&?W^Dk1?$3I!U6Qsp zKl18wXi|5Hv4}t8bb9dfVV6dT=<(hfT z@Z-S=*HL#b93wK#(D;jHn0ja|jP)tQXoyfl*80xa1sUyp+V!$OD*OWZnNJy_yl z)EH6wvWV3+vaK28I!PF(F+>*904UutGIH7d8d21i?N&03IxR6;YoC3i$)xsv_V_rT z7dKu57;>1?s(mtnWD=~)(|8sc zG}k0H;>{W*N3W8~g7nkKhz#s&OJ?-ETB<4INvEEWF(D^aR1CR@gZvSB_o_5fUAntZ z8dwgS*DzkEYxq6m%SX8AV}Vf@V=!1_&@2@5bK`h&BBi^*L0MkVMG6L@<>D(h2XqRZ z#`d|IEF>bI_rK)eIFR!f^{*koKZgcJg8~9*;Pr9W`5L5f`(eDUl9W=R>r%QD4;5=Y zIkT3>Lg1CIil`fD!G$?Ff?Rj&kOJZG;Y!nY`*+Jf+2^tHB(C(y3EekzbH9B#D)eA= z!lOl-K)B3Yan3{6Sp!rP%bOu4r+r=J5kBdbhhxG0&XMA~u}8-zN6H{cw;hJ>N8_%~ z|GF_sFdd~jIy}pP^mkwTpsOq-Nz`tGs}MS^e22N0{D zj}HXHr-P;kfPyqFXjjv-EZ$w#5JnrbxE?hzzRP!OwPu`<6t1~ zpwd03y!!B!1fDy2r&CM?-!oG%JyC`-eL|eoC+8CtXOH#tmefyvhyXF85O9PTtiL$> zsTD~iYas>lA^^^!mD1g-MApr#9m^?dpT@U!uaT!GJe@bd=7TMk(+7_;g+)X##fK~o zI_wnHNF-?(VRTT04`lfq_=3J(umzL(B`P40Jq}A)4IAb?-uf zmxSS$)|9a-=hdMS&!sT=aN&Wz!NLB!Usm&(HOgF?iUVk|BTa6~k1RiF;=sU$I7P0T zI@$_46oGb}h{Hk#aEr!@OyiR4c3$;28IS~0msm{{c^~X}o+k*ug13HC*L6i=DW?4X z!i?%w@O(&0aA8&!ySC-n1LQmBPur8t^6o>j&ZUh|Y<0RjYHg~IXz^P)cyBm(*49_e zG_h3N{ef!j$5vnyM>G&Av|7Ts_7;L^VwOdTcAM=SmI@IRBnkk&AK8Gw7<9jjBA6PO zA|NoP`lK0CfJlN}rddJV>x0jErGD>ZC`c_=9tPl{jztG|YOM$1M{lWg+}~LP^v|Ov z1tHXA5RgfRNFxqwgz-8y5q4aK5Enh8lGZ2Ng-mkhvB~1sN(EQ>9L?tQ{oIk1yoJtd z$S037-#45S!Xw&hQX&c94tob-g(Ml9#~6+DMq9nl+ zD={!%+gUl-p`tMKwNU$9rlwnNWLJl+IGCU_GxJFUb!nCR^qG^u!9EZ7@lw{>=+;MJ z7#)!TyCm>lqVH~TbR?TUggRJYI!Ty;P(Oo3cNa zf?Ab%-dtCb4ruk6@#_X4h)L3FfVvS(4N#+QDIU$pUW8`E9fo5=>7X*SvkzU@16M;u ztxxVip@C+f8{UppAy4L!#|;AB8`^M>mT(rWVl*)VFWjV-YL`k5v}ANBHaaBoijy=^ zy=i>AGS~@U82fP!DoSu}GM*f3^*stA2rnfo)yzX(-lTKN?C)3N6@_NB#--(4Qme{P z&Q_-nVnheVOAwF@1n)ekO*2YOo!k)dfdt)OOhn17#?%mXmb62W^r>vx);T!;ja6r{ z@#Fo2%EfJyn(+?t`Ka^X467=VX4rGWeKD+xa(`TWG?Hd%g}%fGsT}gMs-5T>J8DO_ zmnGAjxE(B;zn^WdR*+J8x+ea75p(V`H1z5S1uXM09R0&>UI*p;AzqqpF>IguhlnT7 zQzSxsd1+{1XaF@DXPil|)q(O`2s#Hur1lOqgogBdppK&**TpPnN-NW_yv*A1T9cgh za;p8w6HSiE7g4L>gJ&(;-iry8-WivKDcrr9Z8`++BX_a zyYNxLPHX#98=j{X2nT#+z5B#VGh#0uZliL`#i;`VwA(Ws9EW_Qi;c0IoZ%p zoV#%UgEj-~qQi~T}lnfCHpuh=$9EV$I2q^s@JbkmD?AT&@TNL%;75vy4)`)| z$0vF|Fkgh##~m7q!BDRcLG5T?jgxA~!KsX(*Tz6qVEm3>~Q zL^|?~6xHZnql!C~i`nQ4ri1v*I|#R`o9H02FRK^bD$xxiD*D!v)VvWs6f1o3iKcZ1 z{SukCf4KJt+-85h3q5xM8b+`}Lq6xtiS>dkiJxAQ7W+;J`S{pxKd*;3qzH*C~o1LGFlbzIGv{Y*gz2lOUI{onN9vHaj{QOM3 zcQKvp3*Ey<7=DdDuw5%rYS z!~i}9CuT=nP}f7$-vpkl(W7eyxqv_b1n{j6K~Ey~RS--z(xQ*cpUo_leY_o$n$(pL z4Cky!-gA0yP78hV0+SFR0yh>`cG=WNB~*3yRzq?tw}~W%IT&%1yea}(Pp_^# z4&fTVD#RMV`>E93%%fNdu7p)Ka-~$6*1z7si=n(=(+;{{!dn_cKgMo`N6(xKd-Ip5G zdC}(zB%x3dY*&7(C%IrtQ^`m)Q5a@#2Oa>uWI(+PYt(2?2>=PnR+v@Filzw9UugsC zQI{HwuH8YV(j03Vy&>_`ZEuq87ySWPeG#kp90?#On;=7|4ol=)r)(AB+|-N*^HmDr)MT4>A8`R)p0=hVqn)&pbRes@Pe<^rb-Pqj z6Ws;MH@5G%1|n0+Pge-Wo*yejBBS+-HqJ;ifXM862cR#a@6$z<%7VcvJIBi~Qa{x; z3r5$&4nc!KFjE#xB{9W}7HH~xxdvvmDfX1zv7x*w1f2l%Az=P~I|c)25yMR9%8nXt zy}!|qkA~@!xoL`tK%K-Y<0Bf-RW8g^5JN8qHM@hs^JpMJ*<&f#R~-uR1U3u=0QN_P zOWo@35gkRWfJjL+r^U435YItm+nq?GgB=2a7GJiN5IpdOopUm@9re%@<62=AX4$IB z^F&NFB8r-)0`+;yr@%oJ(II1Y-J9D|36n8heL)a}K;DrO0f<zcB0wYlUTEHGLd2n51~8VIurm7GJnLuq7adQ}V)0!zp~{*o)>;+WW#ym^Ne9ziwFR=Q$Xl-ZIPl;U{F7apEiU})&PDubcH46g)?~{pvf90{vH>}BA=qw zlQ=3oiU>xx?{HP*L`Qcjw&T;J6uNwUKAgb^vHAsdVn_mD1^@zz2|Nn(iS-=}h~#0D z28I0;_%(EVI&^)baGBI|;PU18_Y~wUHQH|*-N=~rr7AH zlS@qhI0DFJUp8q>gc<6@fX3MJTYwmbe+deqCP5biL>d&dFUKu|gvi zS+7a|KWx2cJY3!TJ$#J8h&F>TN*FEVj^4Y$5JE^ug6N%)MDJzvNz{<&B_tx!^xj(# zjF#vvdKbO(Ke@~I_q=#MULT*?`|N#{b*;6IZB7b&N8Nr|7Ilw%AJ3hk*av4@I1E1X z-W~Q@cP53%$lp_Na_WFfQjwj`W!^@aEYELm&BY9?$aAo}KI==))Gv1NFPixBf4lxK zfue^H!61KR1*ZdAQRN~}^W-UST0 znInwC+%{IqbP=ushh>-Gv*83MDc4ldP(mIcxRDpv$O{gJf~*()N_5yJYAqezavtzN zhoE3R>{kHZ`+1q0?Gni-`L5pkaJnHQw>xmC&(uGVO3CeiIo4uSaAzM!g%rU{%S83X zclyH4Y8UU07zjiJ@XA7}O6et6$4>E4zn>p+bujx1h?IOwRtU(XTw)W}VBsaBE~U=O zD}}&`kc>OL-U1~steOcy4?DI4GSZnKbNb^(NG3xtaZs&s^)4-O3Io@(5Mtt2T3aF< z!fNt2eE zIeTq^DxLj(0nUM}kbimy+ob;xG#0O{p>GE-yr5>`4`)f)U^v)FR;3WTWc!qcT_@a% z`w5B{VnM2n*GGUPj!q`=#SZOV6B`78>5Y@hd@|32Atps*cgX1l1#IXDzF$TH;1%g4 z%O;Z1AX#j~A6tasMn-k8IQ<=7eb}zd{1-+vG(A?215mUbW5mKzxM0ebypaI5%*Ntl zk?pjaCzp7r23>1gGW@R1ki)B#voS2J+4V;70Y8~zp<^47&%nR0;Xm1e7?odQ`TKAc zC>--HLzrDPJH-`4k4UE{5DH&(6tf}dg%j~`PrhVGPw*QUP1W_#Mg?;@mS^lb!U!6v z6D^cOTiK7lM~Ijgxl!A8=pnnw_-!7-yW2nPl5A+|FGVurKWD;1d6FAkIy7W#WQ2Au znZ6HmtwZ~~KZ!9!TJ0CLXn35CuioV?MFjbbn=WhW>5|Jn5G5fwr*>>99*S0dbDaS$2Ll0q0*_`#9s zmUon(HVA~Jn%0Y~Ymu%QFKm5R7cDRy%%wE%Q=UdEVS<`|2$|KdzL|ILVOI*J5xWIl z$k{j9NhQO|W~ve>LTnU)5IcL1lS+}(bWe-MeuO=A9v>wNu%T|->NB#%R-{P91Pc~U z5wd$xjeEqhTbT6(f4tES1CA|1$TMc`;ffe@M5yM@M+Ybn?}x1!^f)gK^`CCk*%G#N z|Ec&-2J`q|Rj)Xd+CApZ83|KgtV`k%#W?M(dSx7t3k>x!9}5Ezs}w-VOe;M~6>8Hd z>lr+(E0A_8bmK>bu68J|1;w|Q1c0(g8>0weS7-<1%MU$`#6ppV^aA+~5fuhla_=>o z7i<`ek~sjK*HS2Dp7c*=Fxn)4NO+G$mjk%67&~rY4@c+p#YAbwX#bc)-xk{QxP^hm zFMV&PeE1fJa(|RXkhP9RG+|@zTaikN!?+a(d16 z53=lr!Vxct(rIj-Lqu&htqJ8^7e^SAeF<9~-;a8KJ-yA{K~%WtrdOi=*Ay8$Oc{BX zO|+io6oPzhA$EOk#Z`hYBDNRGir}R*YuPaIMO18XU?5_E#N9xV3m(Gf;Rk>wdN}Y+dS&A z?ry~v%|Rk|WN>YT@;ebaxf(^2w`|x@D1cSMh4TDZaUlLxThsz2V9=1)7+dLBzKDD*^*fToPh<2)0wVGf#PI=2AyC2SvtVst&4Zt*)>l>6= z`cJjZ{GZTKPOoRB-{uJ?%tFa2W;{QZgC>05J0==zC$@RBx%)P*JNe?)32Q(fYFCE`|& zyg)upuLT7$vG%4L-kS~qBMg;#EYT<;NtN5oJX+caiqZ0>SlJ!9(}z8ASTSUnEBE9# zvo9;jGG$DmBcwQ)-QJPs{xUsub})*UoiyffC@qu@-HKPj9zSIVU@SG{=JMiv!8it7 zk$9Aaxprs-6$ST(2lJSP<6kNoKonZUy|>+}ucTcU-bhVN0K5QnF0%c;CFZpF5 zLQ$rT@c4JeUpx-o4p-Fwg?k7#{$;cFJ{b6ThkS#b35QM;f~4CB8bFIR;cSAE!wWZT zV&pW;?k!dpc=aBKAeG&8#BSl?r8--+aP|^RP?0O&Gq7ap(~>o_g{Q&D-9ILpm$RkD z;mi*53kP>Jz4KH}sG`xF8SYSm-7^N6Sgc3`0VhUj`Lk-W>5I80WlLC;+Cng&3MWoY z4QKOyuxgN%0*%A)#BTv8tfHWZ+>f|el^3n(f8h3QC!3c{i30 zZ9t&ZLHhNzcDbuciRv;7I*u_l8E9xv_q-50tZSV*I1!H8GEmL5FU6*WTVu@V5ZPMH zCtzrjoC^H4~NVnnPHYQ^?=-FLoBjAFp zPO74zyeM{z83nO;mKVM&DOvM{73CqLGA zcp>EenwJ_-yO2EYc8QVhB@)%$Gspc-UQ&@f`O(hu%5SH7muixrg3e35O-U*a^tST zZ)I+Y>9Cv-I??I-{<0PrOnCSYSCc7KULk9`lR%<;ciysoJNZY2noH=oZ(B4L09cJf zt_R)>hoQ09_enX{`ub6AW$*on9u&OWAwr)#|0B-(F{)(ss4UyhzP`1{@B6O(|cUxqe zoely0+}1dozET2+j>{KH4q7!3V7|`eX-xtiDF-B z^?eRWh&{=y6=HiIGpb?6Q;1blzn)O$=pxOOg^zzF(vH_K$!CLL!2aM?d5zWSM{|%y z(an@jYJ0+~Rht~_@x8?Ldt1j$enHLHb1K4Oo6Wk6$)!-a65tJ6cak#gs}yHTTH;Mj zG#Lu#_B{j9Kd(CoMQy0Mk(at1uOk?e*x4MMUX42Vy4#yweU2PBk-jUlGMBv2{ zINBzexCnIO$Xc+1Qe=O*J0fQr{YxZ-zzlo85l|d63gk@j;Tb;-Tn`=|=TfjIHu-wX zaZBABi0~kL?m_i|)fLlPv+dQk zo8o)>REgCmw~Yz$RjN-uhzrR|mp;4vdZ#7gpdvPEZ|~sH?P{Waap>rFl4fX}l(W{( z0>zhXzx&5lp~*hIN;2t_$km|hw1_~pB zUTK?M9{I7{!O36?mRdzW3AIDCWYO+uTP$l74^#7pM@Yw zkQvRn9lhSCV56K>>R&<96*$FPX`n#%XN!IKQxhV>~<=){Ng-A7rzT*^MDWq~z+O(j-K)LSZ{H!~~s##@^o3-sG-2lo@(T zC8$LK#vqw0TsKAFSoG9Y@_I3&({cT(y9ykCZ_Gn_`YGSx&lIn# zPX)v@+ohUglA@m{&L zwC$J3Yvl2=>(PIGsH^JW5^I!W@AP|_3z>@8yAxqeImel9@`OmUT3F?4ma}B0W23^w z!)CFD_gVCRqOTm;;M*GGM0TugCv(!3Ax5`$2?Jzv<4jCQ58o*x0Dt6SF!n+FbKTJi zC`T#yTzz!%ZZaJyN8ael=h;u1Q`hyFre$cXYz>qI9uz-VGu>;`K0B_X+Nj=%x2EUi zv&M^rz$7IMg9+|Q9`5+yX5_52qMH1ukI7AW6^ykgu-zHMa3b1APP`&=cyB@yWb=y8 z+sVgdcdL+l?nEN{jO_7LLY}uX7^K(Wpc%#mEerxhdAV6Dp%n=-`P@`d1R8O%{!5=Y zZ0t+MQ3>V@I+ zWxcoitZ%+joJjq7=0}QyR_u^Ni=sXNY^eaB#kh?o;K5~;bLh2vId=^^KB=T~M&045 zz4yZnrwwgk13!-Xy34goP%P{|TMjfWR_k{v>U>vT>|dVfH5~U@j$>emdLwFGt4yCUEAXucGp=D@WMgX=!}nc94MZ2dTtVMH5^Gs<&Ksr>Z;OF7ZAY%6nRSo;P(ir9jc_ z<@0!*LE$EQNfuJBayIy8;LfmorN^W-NNM(6YI=x-lUZeOku))OKTDY-*iqkzdOl-6 zXp8yH%Nq<^EWLSv$g#xlK4m8-R01F%?u`N~4<%t96kY?_XZ8$$y^3fH#i@mcqB$j9 zZIwE@-tLMr*h*)}91B}4(J$O##$iLv>}_N)K)%~PzmZ2!X3?J;ud`}2uy;J6UUBKX z`)k;xnq*D|I3SVO@e?LM|HVtE&_8u_FrPpDQ#ncq3n)V^tkM(VygMs_#P(kAnU65Y$rZH`Eg;jG=TN3W4+ z3aTzhD9O1KQLa&;SU9mai_9<~n-^WL*_R*@uYi|Yr|l~OGw`4~K|+{*h%<&==@m(< z$Yt(mFy+c$qd}W}GS?v@H0+>^=h!&(?#>Q{G@~*Hf^pD5r_hxwC&Ty?{3VQnAP5d& z7p}<+;tJDA`v0yr9j+!`FEDyigG>}M5;W{PlpR<9<^;?=uHKCur)pSm6bSqP-uC=m ztN1^5{44o`BBp2y9TwRfapAN@!CJ3Z}>IYux6ZE%G3*j4Caf1 zt<$$kMJLO;5fR+NmT&?%igHCX$##kq(05%NtpKo68Onh^O2n8KZt+TyOmu7Zu`3Za|s&~1*Nb6QDao^oW36N zgIaFTdIz^5RsHRF=kvY455b-)mAtwYfX1YgC}+4`1$fy+97hN3%KgpmK_B%zD)ao6 z7H~rK{dJ~||CMdc0u>bu=KF$+wx_3O*`tk*jKac$N%zuZU7ENg&X&gm%laLkjLPtV zqIcXqr|<3b*dL?-(kHdw7Gp-d#ASNc+c!ABfRDt163_q{(0&Z~V2e>!xlBlMUx z!E5 zj=cKc1gFYsAD*t#y%90J{;giMO%d<`6?*AA*XYd6vzZzy&d*tI8Xbxydu!zX-9I)z zP<~?3fg}XFn|Yn>c91_FrGKn3CP_<_-fxXQnO8}gJc`$A;IP+Xa-bk1ygN0=3lXtq zbd`OsmT$zLbbIO)&$r%!Djf3J+C82vog@!FS{%MypUQ}(h#g`dpB#Qd!It${PLW^< zoX2I{+x^BchVTJ7O4wgN2CA9=Lw)zKx=Ii1021hWD6() zL0Yx3$Dfp6odu#Gyz%XqLvWpXp%(!6M%Yb$+k@jb)j9&q&%C<~SNE$~{vdk_QQsGK z0?*n5&k7r^+{vz%FZn=z)q=IDTh2tJ=o zZ)IY&wy>u=Q$sBZ4=WcVrMU|J-0iBb$Vy|GU|Nvt-^@FNVk^dR$qG(kThQAaP92&^a*=kic zD=J`Q|3l$}@ZxyVr{fEpcqB_k%vt!~!qjYwjWAeH0((7P6>5&Zgbtw)KGXK?9`+8S zJ7jpL5u^Ow&em2;&E(J=2;#0r+)K1xYWn1ro!7fU<2$gm)ss1~J-@vt*RB#z{xyL?B)W0pXI$=^GWQ7#ojF6%;v-psS|I63zFXa)H+OHI9<3_QXId zKB^K6gT3ewdR~H6%j;7HRToeLn{on>De8t|H-n`|G{%d;;yuH0Wliy~lQOo+D|D8q zqBFq&xiW2`pf518XYk0>w|4)yz4+GQwmuCRB2lR@R1s@_!LN))W4xsIsaS8vRZ3C2E8X)P|q# z3b=2Rj`AlXZ)M7#ux5Sc+E{$8XX4#7RwgGW=U;c8=^xLDmjZrIl^k-D?_U3Ml5>@b zzji)+%YRN}uI#IdKY}e?78`|2p%*YCpG{dP^0FB(#O_AH%(0l6Nh5lFNXp#QSJai~ zOCuF$&Q9;|zNOJ$5)#cR1g^k>73Z~dZ%w5U2VCE{zWO;PnKhGFojB11-fAsp`IGE! z{{6?Ij6TfZ{W*`j;PYUqeL-(=k}g~Lrf~b=#YZc`W>ObJYWe&m~H%YlA73EJ{i_C6mI7234V_q64HNWkfHetvpr?6Ms$<}j>!@5ke^F?E-n zi%MR;htcUimUTnbj zA2XM~hSOQhJusmFKMhJSbf|Cn{(zl#>hs6rJtts@Dz-ajG#4KVh6ytvuDjvWBw3h| zM<;TJXH8p|hrU~N1-pG}-}(%v&fe#CJ=E0H{P8|7mYKol=;bYeQK#*Vib;7%Nl9sO z@%F3C79}Qz{{3Zykq?=t8XO#pAKgf;`a0Jnbzq|8OI*^6Yfh)FV+Sf+%Nb3={FT{{U)*ed)aSS#mSp;x+9L!%{m;z*)5)*_1M1l^(z9)2^ z`}_kU{{o7Z0&n(4sqScAOyv!3ZHW6D_gR~lTW>KSn!b+QpB=JgEm@<>OqaJ+Hr=6_ z&h?s+eV!>(kSfHyx6jv^IQ>H4((t_a9vIT@f0dGJn&R-FHUS$I;jU$?)%4bW&6A0b zrf$d4VUpk>4=U@90!{x|G}=ClO`bP3ob?r4t`=Aus4AL85nw-0niP9&zj*DC+M@~| zK@|dx-P3{d{c^qsCV`V>dPV^czL+E>%o;8YJl>iC8$GJ^NqOOvullsTRZB5#CHj$) zwi4|n3;O!4NOH)$F0a>et(Sm#|9qE-{Dvhvpi^It5(M600R}+PrZGjz4%n{OZ80Y- zrmG`?z-b*e8jCe{u_%A2up8!=Jti~? zWQGDg#~x53p4HBSz*efsFQ(#uO8@U%J?bxIZxgo%1KDEH;=_#iWUYY|Yx~@qXZvFs z02a4SE_|K5<+10XY2Z-{=<3t(%Gv005hemqL=0Ze`&Wi7t;0PFi=l~GZ*CHCTd0{3lt&(JsC@;I}_gH)>rJItP zl&SPnhC_Q=?+lfU%5}2k*gBhlyy-!4DMEI^$X?5ZTJDn{OtxAW6#25Kvx|&1L6q_p za#ez>Amxn~`4{Fr{GQz|dxGvJIRc4c?|!?h_1B#a_6#3*4i6`k6T?n>posK5)#h{=MNZv`nh&zNp7ZSgAq2RyhsG}q1Y-#HZ|VLK9KLZnhOBXgIA*^ zz&i$drKph44;^B($`iU}NbnlWDLhxYa+S)MRoH|g51aGsV!x$al3}s>gm|(@IGdR* z2}}_{NW#cMy2O`PKK^;nx%j$W1^>*G-J0TvgA{B3-H~OI6bTKV4?5DnY@Ti{9%#KA zIQEsK2yb(oCfSJ3YV<-k1b`3b(@T2f_l|)sjqoP8w7`C%jEDQvr2(a)_)B?#kYwZ9 z)5Czv!^8C{%em&~L0{F(p3t^`gIYP#606tjw|z)#d!J^Dko;lEpU@`H}0<)i;OO-;GYJc-1du z%$qj)DgqcG%sq5mtO_Ai@$M=E`CM`4*FX1NXLUlRcW`M)PFwVH|J1|0*H5+gILL5N zqMfO5rKfq&?gT&0@t0jqWtGJEZuajSg}wsTKTm~ehDJxH4sztKDuHFZL!1gDAJwfE zJt6VsRTHP3$wStW%Zk9mdmV2F=gi?O(r(N7?W|QZIT~yGW7#b&;}uV)%AefyC7+cn z2qSLgW)1XO{@qmOAaHvy3WJo3#KIV8RLqg#umLr{MJe)FdsXG%AQj81nmtK69 zy{n-~pSfL(W*SVHtmc4)`Pu7Xlil#hf`A2(0U0LwJyKl1waU?DuP-6i&vowH^XWus zl~F#g=|G8(bI~K=6wAO>f(^goaqmvu^TwPqk&=D@sxD z&+g^}*(tpsbFUV9bIFUQZO}02*iXS0-fZEq%o_6GlHo1OIrX2@Wl}g&)A=$3z`-)Z z41$vfq7q)&w&)?)nC@4fYS*7OoOLybKi0Kcs$?!3Dji(cFg+eSpPv5Xp^=~qpv{rc zTectj$6oe#dc>sp z_9p$LSqDnahR7@=MKC(0l~ab1nd}{SUXFpx>%5IeiKVq&HfdiF&Sw1|$ERIZKp&ID z(}wMoX93$=P+3rIF)wc?pHXIN!$|yqlRzO|}Ae3vKp|R$S+t0by-X)rA|j|$qkSWm-0L8Mbt>L#UW4E3)%z0%Z@6#vd!O2T$S9S+L_WBJ7M+e= z@1A{OFyKGCA-^z0>BZLl8Wxfbjue{Iw>bagp#A3lr&<+h3Exx!00KcG9c^a~Vl<=? z+M9kz7M7`6ZxJB<@ohBbb2cg_ghwgeaza0SZDp(A;a@nrXj0IHR^K5?YzP`8777Zk z`m~NKP3(hsX%K7}jXWl+%mv$_3z?qxAj`1Zf}HwSKOchkq`iV=)$nqW^)i3Dg!nyo zJ7%6XY!HW2cYW-#{yTMl__DPiz-wWwD}J%Hp5se|xON#0WjFJo681-t8u#@IkO_-` zDf*4oI6WyED9HQt_j^7Gl6*F}bWkBtWBgYC`BL4s!J~YG5zA_Aqbilu(_D9$=60CV zlv!WPVC+$U!RkM+Ie5W%)+UJ=3L~e^-UVA>zih88(KYS~&&Q8lTr6g*j1xNJxin5l z=&;zbp?QK*p`kHURB}S8oH{Ll-Q_l+crQXYhOxcBynZwyc>F3k$lHdiCB>Iksm8L` zeBF0@ZR*%?cJQI=2|1lK21rKAmD;VOR$QK4vglVfm*stXKhW->Rno{zAgYwA&R>Ys zPc=4sSz^;0EQa@%GybPQplbC_ljoiuyTWVxmQXoeqU%&EV6ExPmvnNrt0r)6%5Y#N zT)x0m2|VmS$mpoqQflD_0I^T7g(kOAAX`pX{PTW7?kW21Do;ft-~FEorpI(BLCHGx=EEJqus^BGsW!t;&CyWR@$3iv;5}aD0Mk99NMh&(W{io ziQF$P?w}L8n)W{jbf3^U;C-)=!#nM3IZA$XERO`mJ>0jLw`f+=5Xc##;+#k<-_iCn zCFyKamA@C2ppk0eEB)*z9B{D1H;V|1+e>KI7PuN5tlz9PN+f7>Fx_QTZtebdcdGg& zSu=bjZ-WkBri|C9zb%S@XWWAXEJ{`3^fkioq5I6kNy=11)%Z04@f2t%%>F8>s}uR+9AjZYh1o^k*tje0caCc9%U+fg-2D<)`&{M zPXW$9`G}~ard-1im$9Z!he+XAAaC(<+`DV(lXHJ1rOx?Rvq~hLz!>O~Q&N3Jar+|G z;j7nV?8OJ$@}Ue_9Ro$ANWI9Jnlf23`tTq+k8j2DCXLZ%Yci=%FIV!`I z9mNu+eOO11j)Oi&Ec`Hi55e+wM41R)ir>T@xjmEJWyL7MmDu1A)t7^H#yx?B5Jc>y zr?8?EioALEA{ql=utdpWSqrCj7*2Leazsy+TI24FCfw#=N@Tah%l)|FW9DxWf!+n7 zSUIB;_m8inCGfp_QsdsxTA(M8mNzD!vG=7s+3C0Is8fivry!tpK3@UOg0eKDv;j1n zc)`UWHr$8*IyZM%80Zi9K#uWtM#V5hO>HrB?MrRgoW3G$Y%H_9i``bL`>nyHsi~=( zpmW0X<|Ot=Q*Y(B{S~0$Vy(eEq|x`;m#e@*W{P^K3c1n~ze;&IgTFj|<(~$^o21NF zUdd-=pH0fKC+jvmxP|Ur$AAgWix?R3_43(HWqSCzx=>z@Av6dmv?L&~L9cIZ^$zUe z1^mqCzTHx7zwYz#C#Vaba_PD`Z0feX=N4Ue3j;Wc<#id?4Nsnx`^&IaglbzMIDh4KWKs$O?1(zH!MG4TC+0ZC7Spab}N-&pxt@ zpIky3E(*}@J}b!N+MPW%U~$AaJjqm4P|zj;wfuSZt95~N1^nd7?B7i%*KJXO-Mn4t zzTXs7UR{>nL56#uoXK{tz1CUE+7;p3SEjM8#&wJQ^l;k-_A`;)&aMijhf7a71l|p{ z@BC1eT*%p2jZlr}ygb{E4cy?c?-AL|9mOXY2Cd zxo^Yy#>RNLHD1Ns>-ehPgvaTVX8~)5`!hW57YK8ZKowakkX39N!xLOT_o#mg#BraNWj}t&VAxrLA-#Aptl1T*RbIR(c)n zyE)%1Igt`nuu$*J6;&trgz$7`Mmy#8)5W<^JU=*nb3kdP2> zp5i?(ep6lkZX#ikJRq1lyf~~qom6mL;Yuns>=Eq(8l|$T#=?@OOWpQ!BMzUC&h7l_ zw=#cLT&Qqcml*p)sN@ZSGII2-Z$~-<4gVwe=*&;IGjz$ZXf_fqMGl*J~Q@kG{cS=g(?gkLiLwKma4Q$CB4sgjY-Lh*sUEJlZ*)gA#?diy`=XmjxKVi ztC?Mvi}$<|t&b;4wa_XySoLaopk9L&$1_O_r%vH$Uv)#bO%U91wQXF+zCt5 zc5zU+nzS}NKvmEZL3O$AJAF9+{!U3nX=+dJv~&B?R^^=S)Zx_Sj!eVb2(^stXMt;m zmkSbs4qkT4Bd#lk(`Snn^~XKEekUTAhsvx*g=Rr4T)B8|^-n`jwUTEl*I0dLdr1h{ zh=-o~?wktLY+P%fx~Lv**j`LC_34#6ln=>zt=c`dF?DePq8<@3RTKn3G#k+AYK^^? z*3jDxDnGz>o%lKgAA*DDWZU}H@o4WRvH)fW<`M0TVJ?@eWc-xDs4L0{Gjnr%t!cU2 z=+f5F1h|a)=iAPxD{s}H#U2hDV?XcRKN(R7SRXP39ozUS0JFEFY6(zWwJ(W4{mFxx za@qSli3#^9V>ro9bNo7_chlST!%;B112cA=YzM64hoz4?OM8l+iLeb-^}Nz+wb4xErNJ6dUYQ%2Sr75Z5D_=+>7B`$^1x{M&PYv?wz`2 zMogqQ#vF4xWzHZOEN5Asu7gFnX&Q&XAz14eVS$Z@U&O^s3at4FK_+rj0PE+DE1!x# zL_9&MVaa>ljpz&jEC+`_mxz8D*{AZF(8W=50b2u)-!n~L3@ccqTsXUmQLs#I=hgL! zS;-iB0h3yfjWJtiu5`}M@+ae=}jgFY|+qf)z`RI%PYAr&hN3yURuhVQ|8 zN@^;5j_pg+o4G$k+yesMzATrKi6xscF0?RQ0?zufm0bh&wk{4ha&?ZA0v3|?(fN7q({+dEdo_VO_gVdyn@FaAkFlPwFKr=> zD(}XE!KR-p3HzH=*DXdn%1-6o{gr^dCSS(=e4XP;@l4R$Q@i%48U(V&>050}_1%UZ zKlu1lM*gsBp)0Y+|A|s4Fvk&b_%!gx7;3sqY2-OOyot<9z+2qB$L~5VSi!QJk-q>C z%q*Ekh3jpEAzkF^%ESx;9E>np^CUN$%(obhR>+SwO3eSCbu^tuJ& zFEuw8lBV1SN9HjXga=bq59p1i1}g;b#7jo0UXS0-cYMR`c)dPD5CK+Av6ua>t(jqK zI8lSUtLXuzRuQ4_2j`7#Js0kLG?C8+Ns0P!7H_+4JwSu2mzj?&RaPxu`ql3*OWdP# zjEwHM`u(j#QbmE0eEsJ~>BSi#tK@^d^wWmGZTgDK z4$y4A5*_D0r5;Tz;V`Hy4}#iE2;pMI|9DeR^sO?b_%9NNzj znqHGGtr_@90{LbE?_1wzC^;H!T#OPxX3)dYAw!ui+0C_sgow{7Xf>Ub^v7Q+KQ~k~ zOv|u_XA737(Sm3J=*llI$RyWmWNT9wa^96#;3&%I%p7s=ELUK9ba+@qu#y&|&w0o2 z=8#dXS^tY`X{=ukFzVM^XzT+$XX>o9;CInEaqyS6FS6=1zE6_vUZvdEe6X6{8Dc}@ zoIU)S-c~WFBvDGrpK^{>y;10!)oj$OCiN9p;_S9=;-1Z7O681hw}aJS3=&` zMv>)u-_9bC1qyGVy&De%D3kajR3>{*iYQrR^?7K483W!XPfDa^b#*nJfXT%4^rhz3 z_~78+_&5_(G1I#Dg79tGfq}w%*RPMhFj^)bAA7fg9XqSEfaz6Y+a-7FnCcfE2Gi=p z^o`Mzc0FV_eek`k&I1$gOw|l{wpSp|Ev`Nn` z|HDb&0v7&Uyh8`Co6ec0)!4>j#nwed!j{tIj!R1_s z9)}!O)SVEh{`N%PIZ&;(~e!zNA4b|pk zu~nN2x8HIznZViiNz==$%Lawh-w_J3($YRVG{!!o)(X2K3cFn((ra6+2inMx89q2EE3E`?myr%)7x%*uou^teDgBCVk2e;}=E|1Ehm>*{!s!!T%F z5;9YHOVGy7%d7Y6#=_T4<D#?*tyWuuplbi#X=tl)@VoKrdn<_P9_S1&W>2auKTw;Io#O4+Q{0;wLx^P7PE$ zqZ$GBj`c9z?I%tkDPhue)1U4)fSys2EzT3o?w%`oJY`q*$Uap*i@uKru?5asduQu6 zJY>3x6OvRrh9CLS#indMchw5yRlVWPpOLjvV$ip5baA}*N?81pPhV#3{LI77aI8t( z&FbX1!5f{aNZS3bl?Z%m>rsm1!8-rzAG?DRn^jA!3MWP2_dR4vIH-o}m&Ym^b~6fm z&)2f{EkQO36$MqsuWzRZD-C)#+%I@u`HV+zf9T71xvr$l!)~s&`0ngyjH>^pZTnS)&)C5Ge@5f zMCA{kQ{@`yuv;Jio~zM9$=(D2+6=J-C3p!(WOep_QI|jQ`{*kexl2uq!G$JEd$7Qk zMr!4aBNB?AF@-1SmTCJhmJEfLb*f|ip0~}{OdsR-hmEJ7R_IH<$RUb+7*By|Mcx+9 zOviuZ>LSNc6IqetO(3VGWoB&;augnXdF4Yqy|f1hzrB$fxMX|cm?V&V*&v1Bboan> zk>piGKI3q&gZH9JXCBAh34Y(ZB)~op;uLVSJbii2df9&|`RiK*i{ElK39HZE%Uc(x ztY=Lnz9Xt{n=Uj5DbCx;!GgEvq_S(w`y>ix{|(gvakiU{W8(8%FAiWI7?e2Luen&r zt*D=y?Ru8HOOV88daBC3;dxfK|_kOW|1Jyp%l;qm$PLis!1YKnP`j8pqO&lCTj-`vO zC>4bOP{qbj9K@kQ24MkPt{B6$iW2ss`&eD#Ebj^Xy0AYkwMldI`K)(Mn$iOf5o9s_ zqG^XR5PnN8%1|gikgXg+dCe8+ns9%1vC2FVLp?^TfF$^Jd!i+C6B)poz;tyi|q}JZLG7l8PZExg|(#Q0i4QYSY$oE=~GN zGKMDf!u>ZKv_B9c0@=dBJTP)7)LA_<+|tYxL#q1Vab;6+oML_}qG;(ps&(bg18~XU z&;l%(+XGrBI5in!Gx*#d^T~031+Hp8Cr{5UL#(@hE%+N5)lw`^FfnC2%_BY5 z&F68USJW26nK{1-^WRL6iSkcu;T$8@-$p%AgcIZd>}!Ydl-Eiam?RwS92}S=MguQ) zv$|sfn=Xx$ZN8WEO5OT<*_<$f>!fY7k8Ga>TZ3;~k~jT5#WgRs){$$Y0`dV}zL(yQ zAB+6HNb9ZL8{reLNz>^~hQ}yBt%^g_43)tlVbC&X?1w+ZCq* zvuqTMvt$!MK1y4IaHtp@Exgtvfc?Z+kY5-iSObmQ?f!iG8Zq~D&y-MgbP%8mrHEFK zL_~>&gU*61E_eTL@d4k`A1LG6`M>+@w8umU6i+x+uM8CI++()MWn#POW%+9dgq=R zs*8=K`2N;NV$ebc{XjkObp?{)i4*7QyA4(15PDb>^6Ry2=%Ri{F`5I))=?a1P88^A zs5cHXUK_B!8E`h&1vI_*93{&h28S10w8bZAOW)XEtIy=W^Waybd?@34YV1i_@3~%B zQ8037#o$ea=D!CY{E?^hu0DJ$7{_{D>45y>9U5j&|KaUEs&!BQ@uRmKVU~a0jZr7N zRW>9)LDSSE`TP?QTXpafzyi99%ok*oTbz&KjUgktR5>9(b{|E=5RzXoxF>kIf^)22fKXzKgc+5FGqp?4q9a?!b3S=bymj*JSfTgm{}J^SP*HtfxI+j-I&_L4 zA<`X!#LyujE#2MH(%mH`9n#&BBGTQ`A|)-|@Q%O#TkqY)n#Iy#?wx!0+3|hfKD(ew z*!M`~@}97!ZQwU0G7>}+#T8XGJ=}TG!-M#;!jcQgPa@1eE{ZoO5LQguMJxg#MqZOP z7J~Yf<3bR|&IMTU{X7zZvSTK8#V`%M z2s+a|2LHtOizGbow3Z|^*ikb`Y!CrL^I2(kVTKgk%#vx>-^mc{J{cWAm}2*K!b7e<~&Q&Og`V3`rzkXsN4vJRT2x?tQh^SEey{uuO(6Wy7O= z-R4o`yM87SNwn8fCe}xegdn1VQcaMVKbBSsE6>13cIq>h9cAg^a-k_kQjiO!D| zu>P^W>a)1oahZ9V?X&fDZ0;iob|@xF_uwX@!t2cq6-6Oa_uraa(<`do7$M#sVlXP{ zd2?jZ1nWM{c$@hkgJM>tDPWT^_iw&QLTha3mN5Dp(TSL{*eHh`$!eW)K>SS#$EXW$5o6c;D*L_ zt8nTf!()2qMR;?$8lkNAMTqtLbv0VEx*y3~BzII2QxJH!6plCy3p4$+N6LQsaOo-u zujBk2Y;VF`PJB6i!0dALa9cBD|K@1VrdGh2I3yonUEeH@2Qbj1CHRe){6l%ku-3!% zUKtfn^c1U4zz`*RAdsv;uJDj>WpSoJu3^0Lk7rwn`88t@zg^lPd)-={DOCw&l907# z<&;mht7n!f%RF^1*+k^z{g9!86#*qRqu@=c-RZiO*q!lQV?z0~aHgSnX>nzID3y%B zJ|u_@ADtE#P4M_-%D=>5m|<9A0YA~OgT!)-1sNg9q>gs}7Z;$z(!H&`o7(cV9_q7R zHF6f_k~79|C5RJ=pdOb>mLv8e^0oS~f)jwpbw*`s^;!x;p@%b`y-g$2ZAeS&>+?zb^%^O;ZE)OwuP&i1{!!RgCl?|nra^6YSw9r=03 zxgaFfRBO_g5I!QpN9f2TPpX5LM-Hf89yHI*LZ3 zPi=y+Y?G@kXhwDQiZT}`z;W%T9`2>+gyY{vN+z)t6n@>?^8Y;dWN^rg=i}@Q7OUOg zdqoZmL{_IL2-O&+A7!KngCi#sCK3b&!wf@V`^L~)8?cTuvxjwbKGX2oT|4G$m_(ai zKWCtlBI6JlboO1RDm(oLjMnt8tc|FVwGt_r*(t0~zRS900{}~!(+&{=6PNiUA20nU zbME=|-Mz2YzLsR-^4h54?&ns4^zWj+^naeBdX1=?Hx^lh5k{FB=xas}ZCnxXf?$1)tb%vjn`JS0ScOqzdUf|hSlJJYHbb(L zgh7xH(BKl|Pac`DYAyRcS(onRcTc>TTXtZy`$PpCJ+(|;?JEb1O3HGDrrA?-Z~w)(zVh!n2HD{O`d-$zDphvxn<|(Y$}+xnJes!4Y>;Cc zD>s@dOI+0M-kp5(nt{g}^b7J)aK(yLC-f`8xuElbe7lr>d6nf8|3ynY5qPxSj^;A{ zyj^_+VO>vunn!OxHBuiGb0gJf)8KL44RroMAP~CGviNF=rsRshEXYG&)F?^0+1id3 zss$G%owX zCk*hhB;TracXb%(D{8A?As}OCU{Hl@OK2!iK@6bh!)%n~Gw;2_t5|B1Hc4I_I~JS6 zAwwd_{;%U_hN(wys34?t5t8yDx!WJ+-6gOX8F;i0uo}`IubUVvn;+t%?;W(5+|F|;bw*#`sD?LRQ|}r zoti{AHfz{n#mkl!7?|4DxJBR~|zrO}1`mHWdd{g#?nKJ>|2zL9c|LZZR z|EP#g)hp5CM@zme&@a3-isF7d#f3#B4xJd`1#!>O?>EFO+v{U)=hA%_=i|IAYkF)Rv^+ELmBClT_Z?!jW{rTf#&ggAsf?LhJ2{&myfsu)F%!h8JRpgX@lr zgYWUl=q8Fba%hWXcCqMx0Z(0!5ltCiBH0w)A4F{OIn`AyMi{soYbOBx;bf zeYU4?A&C3)?9LRCd*p7b^OPQi9wF3Kj{x7H7p~r=P0AtX9ntv?^Sl>nTcN@_F(~Uo z!bhdKz3W%8_HkQmjWb7gs_=sdik?!V!0Udb(^B9CupgrsVOj6$d;6x$e=~0#`Qp*o zbLy1LI>b6u$E*{Fl*-f>!kc*bM`juVM2?Dc%lr)yxrw=vs*H5*}tcZ<0=4fs&Xc9qIPkN=fQ7-`}6x=|`TARgann!yH;~5qlFo*(jkn zNLnZ|FHrXr^43$s`SM)w~OdXW1-69f5R@pW z1>r}SL0)m(I%S^-HoV{|g}JBZH#TTZci{0vCmPB`DjoWtPihKv@%Qf5_FOSoD20L= zxI}sF6*V`F7V^D<0&6>%fe=4R{29_#llah=&vvUnH%sdTt~a%OV&==`j7cL!O18>I zWew>@cEBuUN)}p}PLD$yg2+RMjw|=?wr-xeEjt`*R|$PsvRq}R*Uiw^>^*+5%s9Tc zXHlVlc}$k={a03MPp^(Uay^(TBRC|So(%=Zl3|S>nMyt;qNb2N%9(fbx$UGa&MxQyzQZk?~zsX@j1lromWKOk97buRF*OjXL_varztXD zn^Y#GP)FoZLI)TTkv_bnWmHppOM?sE6fZqqmL7wVL2~S#;IiqlV!#FspoAj!Iezl_ zlEUcTJc+b#TD^O|wFCJS{~{SGMQY==-%{GmW>2>`CJfWABX% zXAF!3v5Vi4zJ;!Do{Ats>?(yramK&X;A})z!AcJiZr%ZxoB_n1gLJLcm zOSigGEVY#x_Ii4Tqi$&2%oC$o;yS&Uh~xs;Xwk6D?!X}VHiRBBrIU>B;i2;^$2;G_Z|VR(3Zev3WP*Rnc(Y53QD@sol-!(6!=+`twUXaf$cn;fWD;n?XX(aHWiGVT)MVdG zxuH#1a3w`4y!$(_q@ZG3h@RX98ImuHT@kOx-AOr{{Bv1C^=1d>opnT`qE>R^CobD! zm3M)!Cx7_=5L$J8lyVa~_E2cl`lTsfIANYf@!FE$EmVp7?l?KwSEymDYA#Fg1CNn@ zmq}*cwO;V|jEfvUOl41h+|BLfevLczPG^q5v2ANRs}om``}PNEKHS(o?zh1(CvsL2 z+Qfm4Y5^TPH$y}J5j){xS-N=X`i2G<7gv-U#4ZCia_oVKy#9z%hWd~0S-iyJkuz2` znmQ~RdOjT^X6b4vIrOq%IGwq<2IctN+#FGC&!5vM*!R=>Dw7eyy5+;_`Eq^=MLWAg zc{4>W;z^m_W9Mz=_lk;&&MGPz8Y!zsu|d=|nyOP=P^uv($wXxiY3!ozO(z0;!q=G! z?QRQ-ipf5kU2(qaPOJk47-1b8{xA{oS7doliOdNxyE!vNs*_)b1yuVw;?s#!`-xHJ z!lEtIXz7sq8+-rUlHFQ;&S%_8XT*q>Qd@lOwb47OsVEXNMA}tv2?;}4KtzUJgx)5q zCB!v|sGg##1${elnkr=|o9Pdk%E_`E>O!V@Q~GjR6G{aQm{2WYpu)KcUhT72vW+3b@0^A#23@<`!DUGY`H9XlA0)Z>RXa-DVP>9J1vC#U_T{S%t z{gu_eSNj=18b* zxbl&k)y-RQy(9H()>kYE1aY6$klV;-U?TO1+3zqMx3d+rGT@0%!N~ z0w4M!ew>SW;F+S0g+GioY{ZPymIC7ExXMKt#Mb*s6)Ut`)jfv2Fp8}Lf8p=2Ssggd z$jHd(sO#%YaE&%RFD;h}_M}S#(ZA$U$4l4pwCmXe(-_;v2<`slmvu;lruuc5Es8z@ zJCvG{acJkmf(;LtP|1-dPp49g0#@9tLFonm3}5i9L2WZUSBZ^y|KQ+YXXp6#-rL(d zT>QnWGa=Zs;ivfIZ2PC3ddqixUaMmRjp*cZ{ZS!TfiMTAK^JX3AFsYmqGxLZ4cIc@ zi0=3fy^tVSe*CWoL&N%YAxMVD>pE+fl5*$QjnTdz4{PdT1TP*toZ1F#CXQGlwh9Y@ zQquQgzDS$berJDo|NJthRZd+!dFVi|*}#? z=elj>@bJ)GFl$R`7<{j17lVVrjM!RV4Y~rp3?&~BDb|3G2JM1i>ag8?%lY#1@=7Jk z;Ik+UAnp0^T5f0vTlg-lXC_jkT!)|bdT0O7-F}_oTWGu3 zSb6nDWw6hHPHNqXx4Fl0>5bHY(mA8ve8;spm|i zT<#MuqDWJ*vYm$Uec!bbHO1(!jl--=80JNw(IFnW$8iOIZoD*kfckj3#9Y%G2l zQzncvphs~t*AUu&^zkoV%iVu5gl1O8_VL~8-xEe?`}Iyw?AURqxZvV3h9sX_UMQ*k z=FxaHeh~P-K(bD?^E491K^jdFTU1>=ZdO;rB)1v2!}(Md4-A0pTi4aqwY9aKu=qrg zvEE!>UVeSL?IlPtC{*OEnQTfG)MZdzSV%{X4VHo>gMWcSGPpW=&t&=a>6aClG=ue%E>$h`5qW@cv2%*+(ZW`#k;^OXl}0uYSnGEQp?K9z(|?aR)Lb3qF~C1 zya|i?#RG5-R@SQG;^OLRHUWWjJ)!msoKwlV0!vcw6cOvXhK7bOU%s@rFK?ed2^5ue zWsFFe#!&RYdRNmpVB+*TvmOQ5P+e^;IX0?yq=?$$&KxDdj?@dB1@U_yU$EJSh6a)8 zj94zLq6>WW)j~i2IpNoMZ-V*Qer_{sFI3*`rDKNj8V&c3e4N+deb_DP z!@dq55JKROnYlX>?Lva2S=%DRaqUB+-s(IsC3>G&l&swSUdMRwk)!;1X*be%yW(>n zsxNT;vM8&^=}y$kTH-~#+luGys(o9{#SrThjaniYzXy($2IuXe#~UI@j;GA|2?3*m z@Ol)jT=KAg!p@&RS4W+XbvOC3vsKzsUKinr#`~w&AB9%4KEJ8zydZ_-d|YYU-QAt) zaJ*TQBJXmXs$4n0y?^vN9dTRr@mgMR`M^Cdj)RE;9HE$4_w7*!Dnzr|psSP`TX=og zo~2SR!?BVAun)I~UwMf!6}BdK_x2vIzX?m;p8rTxxY--wjjnk8_^11+ee32dn8;P+ zTDP^^_wRw2~rRr1sOr{+-H#aZhrNzXM)XWt_e}&+tB+zVbY{+qH=O_Vq#+87kd1>xh#Kq_Yakbg{3-A zM5`AMp8R)w{rXjvEq!{JG`e@VFk-qZa5r?x&W(>88~I;Kgpd9N5us{s@7!~7aZx}( zptZHtR4WAbF7xWAE$hx8Twg&|U0pT-xpzuPMqW`|3OwEX&-o-XV0Di zSLV~1UCEhK<$E?UjsF{BkiE{n$;;cGM)|{-@RI0U{s^^5*K=nCjH`K6YBerSqDb*A znZ2i=MEBcYvZ9LnArPm@!s3C=FPZd4=wypg*!LzIz1!0XgN=&YXO%$letl<5=&F1E z(QUW1irj`*O;K?S14zVwW3VQs({l}%Lv9^na zvK@<`Q+9= z12W&4IUkqJBx?2hNAKIaqAc%1r!{=3t_794?cnX~+cC1o!=0V91RtLfBK>j@`fiWf zkIpzpuV%lle%4UVeTr{(5}r@gg@CFTha9Lpg>P3dA0HB4h+`!q4;6t$Fhw!);j59L zByW%oo_rC}JoqDX6(~zzcpi)|L0f}N_yh&MQJp84V!%-?_%zUP#?+K3IhBo$0p+u# z$rJN&i$6303xV<<;OthOa421vm~s8SJ7Vkpokq&Site`C;xG%@?rxHY9pdpO6oFlW zlkBG$Lxm*L)O?~JASd{+zr6M_P^;m?ppBHX2MF{(V962H=M!cU%`4#QTUtD?Pc|`# zSh&(h@IJmiQ&Ig~=+O=uar7jViw{sXBejwnG?_d+Jb>TdIsI^!3Q{Kl*L{Qe68*=w ztj{4L5``dG*48?KcDL? z5*F0NqKo1l?L% zeM8F!DV`K~=@vQtD*~ z2F;oH5*{0Cq0hmF5g>r=@IACNSkG1H-i`}DTrYzm^^YC5x>>>o1)Eq{SeMJrV|!H{ zJj*ZtS@RZ|{l|^mP?naf-;u0egA9v?F<(-|uDXr2#|q#45l`C3`!4m|=V~JKImN|v zss7zbN+`Lf^k=UM{U#rjV)F>FupU9a_~5i2O-=X^Hq9xaufIww+};tNZQ2v55FU?a91?ayKzm{|ovP`rKd3Z*ly^(1H!*HBnA< zd@;XKapJ%sy~ubuhIv*&2Jml`_b#2kq97p%Oc+zo-%oymB619}*)LH`{9gEOWb7uQ z)%o(nNv=ZTkJ%Q+|p?i&YFknQVV3rHx8v=N~MyrDtH$e5#oYI z^}8b~|0Eoe5*##?W2bgat-#WIA_)E&oID>)LV00v5m1qz)6=Qrp_>&DhzzHHfrrEm z8)PRVnp6wLHnk~p}|20#(&4q(2%pUGiU#HPSKm7>FAV%+yojersSoiC6LWe z&&)J5HooJu_)KR!&xAD~{Sq;c-pt$_gu~Hv-dL+9@TWzrvPujo%n^A#Mm38EpB(JL zVP|J&VPRo!{}d(gbK#c|Jn{nz0EU#sp{dmmnB+yH!=<~a77i}JG6U&KX=!OfLIOD9 zu=F;&l?uKDFl6gGu(rN@p(Txe_vG>~<$xt-<;_TgRy5r<0o%9$>tjackmu&FDuUC3l&4Yv=vzKx0H}o=#M{ zgMtzw0ufaAQdNF9Ug^|0TDdseoMY0jwy;~3%l0`L(0@4F29aUPJ8yP&mhAClZad54 z0(6U?%M@h@-pXz5yv%O9?oBUDs(*%~{-s?LXnGT*Pqy{1DciVuF;jW*ZkNuA|Y zRoQ8GzF*BouD7#pyN7%}oO90=BtCpK&rTaa_ulCts%k!wO|dSnK8#tkBlGI3939=x z_PRh#(c!oj6g(S4J?gw%ao`iI&|nxk0iwG5-Lk5?vy<%mKYb}X)FGBgBs;4?7qa*7 z`i8NiiLq-0i7mtF_veuDQjN@qYUp9=Xb1!Ig{3&$g`yA`k`^Hx0u6#9B2rO`sNbfv zJ2C~pD3OiOmge(=jNj9j_Tau}%B3~`0Q7F6X5l#QCcMrH7%!n==2Ve6p?%@)j!Hf7LJ1XhGiD)a82xx0Z?NB2vn8d^-h&$35fW z|3dy6B7*y~_G8TtV*{;X3r%G%HCjwWOr$4v<0gt~Mkvn76Xn*~|Erda{cFbpD4UlL zpI{KGYG`Pvs>+9W#)!WFD(&}mW+Mv?*4oTyqoicOlU|f;5eREpwkwT} zpsl8sl%CEA{Vu;-PaNX-I+HN+OF;n*49dmLZM)p!a(i(Q9Ua|e5V!C#_Ta62Iw}Ec zk+0q$pUR>gsZmXR{n@zKQ{Aslrpn6k6BZeQ=YnlK&Q4DIu3mO_m0(!BCR0!xup>~L zR2jk5(n>oN8^zuSCeVyjPmZoRq{fi>fwj}-ysZ$}Rc$_&1p?*!?=2X88|;ho z0K$Ky&oyl7Kad)Wp0*4eVX~__@3`1%bng6W(_f`?crDv)%cuO5e;Z+ifs)dZ{9qHE z6_@B9iH&;oqQ>Em*X8ovC^$<~kE=5$VfpR(?!sLbtG@*ic`-ygQ@ zbvy<}(m7}Nwx3NN`MMo^fZFu+20mVGH&!e@02P#EzGIZh=fZ<|UCu<3DOFp=ku0ix zXHa0AjtP^wtv(gLa!A-e1(i={=fwin-rU&Fb4lun&Sj?|0sGGT?al{NL$xF!JCMUe zZL}nqgt;~-k*NG2#&NHG0%6sd(_DFm-?4e1w)CEpJ0RWR+>MTnArQeymZ=T`YlrnA|fWA zYZ)P8B62`2>RsGZVJOkQf)cc_-&Ixhopmv7oh5EsX^tMjw7I`SE;RW{CGj+8*aBeR zeT4Kk;+KbCSA5Kpt0yK=qpb}fK{gGB00kO(Bp+d6mZprjO(m}AWT5bW$_9%>Pq-y( zP~3=Feujpr=@)=drRt)i1b*_=>-6zfQBmO{{qk;n1HsavQyygni3*_zMr>^5yXL?L z+^l-V`v#l&+JFE=tJi{?B2bclrQkQm4El%w%CJ1}=*AZp8HYI39?TrjrmGiCIDo5V z)@gRwnfwBl2P+d(hSMPTh;_m2bF;cM*@O}qM_XIwnXwq#Un1$DrKNbL*_LVy5k?$o zva+)O&gHZ@cyi(t*v0l%V~{P1My98y=ghN2jEmsbIEvp2l_y>nADQaqOY@05iJ@d> z?Pdo$by@8801$b(@^5 zTQXV*W}o2oNnxF${`cy@BgWDGE&Yt2&fFVMO=b|qMKEyqX+G(8v$k2*tJ>;5BU(A% zp7C;R(c#Ao%75Dnh4{f@yJw!EWqLg_KNW`y^X&}tyJB$ja^GL@&V2;_*N6WW)Z=rr z725V~*M+Z?uN0U~v>w)aQa;`cyu4+9O1$2Ax1*@5o7s7NV9zP=z5A)qhf`@5JkCH? zp~t&cBAu&o&E$PNU0v1pvZaKj zUbpe6sZ!^KG9q31Pz5Y*h%#&#i{DRSG>9x>(UUN&(kAnuUKF+8xbvil4Xp;Ty3`b%JBuMFM1JDqlhy-|AT__a6#-s?Of$u^L zk>zG>(py#S)BY3n^&RzBk9q%RBYu zW@;^ooi=Af03POv1qQk9#))AAylTw-W0p{cLJ=Dz#PDK&9t;9cA!$F$@km3UhOz2oRO@_5$bnE(4H$^8=3$fXTlg z|JcdTQdx6t)k@y<$Xe%%a`g6ogEh;Wn=$2=5lO@_thCgIXVHd@h&xRlEDSC^ z+OgAGCbthC#xc#AX66vg_;2r~hsX#Jk?nSwFJ1;Rwbq+i@1d4iEArVr#AP>sm;1EU zi8O;sJcKYHA{Ig~lvDcs&g*OKkd$0QzTFr<*s$2m+`4fQDO8?ODyw>pDZhl5u>C6A zEsWf^%du!U?biIZ(N?(a3b$&m_4%n%tNB>d=o6<8hLaHTI%1$yBSg8++HRk!*O7^yKYl%;r*h zJnypXA8*{2y~lLj4*FWcB=S4keiH$NI_3VV@8*wT#7j7yPB}Km``?wupAD*;sllTspo^S3gBnGn-kQ}ersh*Z23$EG!DE8?%Mp_`td9zrK{r+3&8ZS0Pj4#Rgv1yQ3t~dzmd8a`pm!gCNELy;aMYQ?)z&jK(@KpS_-3P%D6i%D zOW;4!qObV!85LJTYLC$?Mn>(9kJot;k#xqfWZ~i$pfvZnzZpsARe3`168^RYeYkN* zLydq+ygdt~wxGXRM^lrJGfzR*BPA(`3XlZH?mGX(JK}07F<5U;Mgsy4jMR)AivO);-mWa2^q4#{mqR z75@A$Hx5$^r$?<{8S(oaw{a6H>7U^l@k+l*)p38UV5vI~5{u11;vGw|p4GX#k2ISc zb;s1XK4paGjz1yN-Dt5Z^FDB$2FPX$#3e1+4E6meH*8sT>lYrXtbA zQvs0u{aclSTd+n8AN?eNw%$NY) zo2*;;KLI$gp+W?>ekz&>BT><=lg**0Z_dU+3Kmsju9ZwiM%H%(`Y%jVuUZN|ykTUFl>7-i7kOpW zJW!b{lf_BX{Jy+3u1RGY`jEj!%N(Rm3-3R01(jEFQW60H!3gnrM$obyD>L)KpFcSp zHUJ^?Niv3w4-j#h)p(#kBzUSmQ^4)w>`bZYLp$pT zW?j>-hx>=h!w!o|^I3^~x*$HA$z2z$>?%t>Bej8X#F0)-OD}Q@!*9e-3ql|`;Z0(r z)GXdv12=;fC3-i1E1nBFDU!otr?@BFzNW&8CZ>aDj)eX;&CF*-Ccj)pN8`yfAe%QLbGOuph`SoUwQN7Zk=u%yfFj5y7o0;O4@aa%SP!he-ZPlOA0AJNghz09(|!YFV3zCr()TJ*C?xd^ z$z?UsWwn!w)~_V|(su9X(>NynFvFyv-kjVzH>iIpjv%EET@Ym$EGQx%bgWGtr7&Nh zCYNq$iDZh6JwkO}05|A%|6Dd9hX)63uzM6hVp7Bn~W8GmP?h~)*f1K4Y8s_-p9 zOhB4%IzK-qPZb1ML`O&V-qiO?qaP_OP<{gy2*uOTZjeQ&s(r>T&iM&&Y65}@&3G*> zt-3A;V?Jb2uM`GuW0Kf?PLiU5A2MMu)?JmKzRzUmgpgndiP9iL5;X-lm~oQ@`!tE7 zlMfFyvaWlko}SPp%5j)mjEOrm&M&N8>Yl_d3SUiSGW9*rX?nZ7(oW=k=>^0Pf!>jF z5k#u$0Djos-cBDj6NN$PYBZS$V?A11+H_Yy3;46erlLoPLJz1XDi$||4ujS&x0#~i ztT~b}HCS{s0nNEN==61ou&jrYlsK6xNSsq5YOS_jf z9mUJPX+>G@8*S#(%)Onj6kS8_bETeNuhFKsy0|L1-9P+J>C7-(UvE8XJ3W?qK4ha` zHuJvSM8?O*M^Ch4Y7K^k66MH6dT`<5_Mx7am)m~1h4xwN?wb4Wn!W?qzD?oBG@+|hyI0T0#C)-)ULj;nHz=Q0NV zx|AHmJ=s#%Z)?zAStMMZhtYw;X=#RhlOJEs0LwTaeBc{lGZrBd4Fm$^b5)`g581?= zwNYUEGxF|#GPaKih>%}=qwB{^`W>Lh{%JPg3wo#P3M~Pt4qCr;TU~7dcuRwu2G`o- z8oi?`2$_@2$Dyi!zT*_yt*oU*5-kZB3$a`!dwbS~X+Kzua!7sLe;^PjN2)3-M}c)` zPICe=42Z9hgv{u{@OWt&!btyDwRX~yI>->fT7-7jbdo31$}qfog@%j>h|N#teZ;Zq zug*68y9{z_UTlw~Z@addpXwTOqyaqYAADwQ4bBQUvPpj3Bh{A?T7yDIKc^a6SIjvv z>YVu`p#x5-E7t|CeK8<%FHvs>)bdy4AtVkzD`%sczbIF9wYwg2j(s?8O?eh}DKALTxq(U)+P#K$ zkd&F|yu~{vxH+vNH#FEAjWj;}vmV$e*r(ureWvUssnX%g6y1x_+an?ZqJydvkBc<( zi`iKPixfbzcY4guhdy_72c1LfLS8Me1upmJPkZ;Oe6Jo*!41cIJ<+M>xpTtkla-w< z>{=^A`FA|VJh{^ds?2SXinezV5RkFz<|$ddP2%~eV7x#ky1>RG~fZa9sWFCV65`F>O$T5 zq{wjCvK|B6(EV+#`RD}i{YmGCtW+)%k~>A#zI(*Tx-uJtLfzPhQy8U2r`wLXa zOp!)tBt}$!EF`;hGMS5vmEd`{>7u+Ww^%jfe-?Gd{s3y@H#BgJS6koh6fOL+gn>ekuz8eWM!{c zW?xI@keZn{3hAmmk5{9{H@EEy7hIgg>o~|&eE#*G{0F9$hcp8l`AzBUY1-sX>XsK$ z-)kIuCv}$<3Qa#86LYgrN73bD%E=yY zt2mzuc<$VlA{~N2Fy^x|xs>7K+1l-MOq-J7yB56jHvwOwM*{p5Ww=`D>Mjqlwx3NW zDt@V|o8>y#PSJnZC9670!Dc572P2-AcZ&3N+ON!oJAYgEJx_UHndj#RKT^J%j4PFu z+gaWhKtYms6gTz5c}(zhZ#9Z~)lLZur4_+9snUk=Ck$VtLz8&?)yh~gZlUpmpT2|s&2qpiWQ^AtY>-bmH-mYeo2M= zKB?+%v$xZV_$8`j5KJVj#|p4joJ$$5M=RbltiJrYx)}=Fmn=6AO``&=Bh>_e5CTVE zwgVhc^5DvDe;CJFE+C)9YCQaoh!wj2vF7k6FuY{b{w&NAl~6n%2_6y`kA!AL+J#(Q zovliZtdy+Y6J#1U;D?L;Ft)v%ei3Y@=a!h|AtA z;K+DkQ1GtPwv|gWKLAq#C4+eWgaI2ddawm|H2YXE3=r3CZEYtfC*bwoh>Sy7I^k1F zid33b%sReAF7DAl0s{;^;M=Jn+@g~+_e>WKfYH8n0Gmwrdx?_>s9~kc7XsivA_Bc> z(OcvvJ>UU;|Nael01?XZsi}NR(r&gJW?|)F^#kY3r`C0so5Dd#6I^Q4X7SymqSO@( z1{qQuqtuQD=?fQ8ljpeMGe{w!8O{buEvr=s2+Z&ei2fa?&qVPg+&=cm>vH96cJ^FL zYo3X;zQvh?+Nq8*M9kk>-+jMxZW$fBxJhzM@O;|qr~}NFnd&@_*4IBx|3_>nXsD~Z z0svpfVJ-M_$>oxfwKL=Jpw9bN*KO%~sLY4^bn~Bo26~jDw5vs;jK@$iyMDgmU;%;K z2*xVGgR`l}zqfmHACDzIdwB!5*x9yQS~F+fez9w98BG&4dH+<<;Y_20BMtX<)?@pb z&kr1pyZvo#9(#qC_kdbH-~7xSTJfH{w=TQ#8>ybo4*9B4LliS%7CTVwWj}5d;k`rs zxVPl&dpyL*IpixNGjLSddJ)Ar)_lH|{x2Elx{Q#_<9$5u)wb_^`&?drD_jIZ34=-7 z`lI<fEia@yJ-(d~>Im8Sg#~?vY6UF3YMu8D8;ma^ zj2s zC`n?$^owq=zs-RwV13bp6E^u}3XJ*lEI;SbmzKU8iY#bHgNGRs$E@?kq~q@4{zo-C zIXeS&qKQ^a-@2F`x~El$p@nR0AHWCb@aWh?<084eo!(_OcXo#B4~?gvTEA3O9E|bay}Cc+y}MQ<0(-tB3fudLc2zX3 zx(?U$>D?}_PWH_-U)_3NW*(1l0=ChtIZV&%Jc&!i=Mj}i*X{m1QP^0^<9cfB&23%w z!Lq4^NCT2dH~mT@U5U;vSD<^J9cOWp^*rwzCBeHWJCmNT*~TzujNP zb_vBUR233YIbR^ZYhG_$+}qomlDALE>!IPd@d%V_b!QVD4fzXL*$$VCW4iy8uAJ9oihw( z@JpF5ul=u&Mj5YNvL^IW`yK}|3Wbh*O7Ee1uWj8Ky*Ak4LqH-rln(^~N{kXg{vElP z6kC$Z-u?wlT}+u-i!BHiBSDB~4O8N({CXhRM|FeClWSlr;x5`VL7YfcXCLHOZXnSG z`e&)K#7c}g;nfySvV=`5bpPYD>REe;86)7f0U(WN27r1n1`()$%;gE)TwU!}JG}32 z&Vd>MOj3!+i(12HN6oQ(FGx|Ojx^o!!+=e`VjytFYGiDTm4U&^*7l3)s|If3cclXs zEWOZA%67`D5x94*)0z za($o%EfI>l$A|R>!Lqh>Su{jNMO|GRCoG1qKIAGD1JNJQ=(V<{lUjjqDq}cUsxq0j z?Exf(*5jK_G6|pNccLVX6%=9?4+<4nWpMS6%wF=CrUrXh+3%ftBIWgud~c&dre^;- zMAq?8Yh3x2L$?)T(Z98QAH&$9W9zG6>4kpjjRNy)!~1sc7!AXjm*aY?b4RRkbwBa0 zVzK5tqxE5${Lje1g`edgQi&oS=w(m)UYG5(P?DsE z(dpF{3}XLI!Q<(3d-uDNm*%w}fyCI=W;I@6Pz?Lc2ifB7=}Dp1^I>M~#)3rmzKa9n z>M?EJBA2)$-Lv~wxmmaNsLFS@!VeyU;V%ml-A9P5U%!4WNHIq4!!fg8>9HR#H7RdX zH&5ZaI{+I06=&wFZboK6Jz3bfl4^EClh=4@)@k7@y zAC%tG`S|CDdj`ZTTC`9&if9ztIX4B@C!-wtZ!0+`1IZ%ktaj{&k2UmE-{?8wn=iJu zJDg*O8j1OL{o)@EF_D;Y)0G?|c_((Go7|08^k|d6)dt|9D>N#>xrfL%w0_h&cI}-njh)4 zN-Rm?{YEt)#8+w7^zdDJr!5r~Gt1xH%bOb=&_rF*PM7RyM*u1KL!k=Xoe% zrSd00r61XY8;+b5cPa>^HJ0OWSuvIEP?>l<7?2Wxm=AsQ)u_Z;-cLA-Of4-_ggs{TwtrfP%A1%_RcTP&x5oE)av63S=pf)WxE3PqfCxH+FZ<>ZD|+P%_0 ze+G~KKgC^cy%5At?^&N?03|UdO6#(Mb#-wuJuB;&T~i&Cz=R4A7d5=M`ScKg zkx-YJZvTg;vkr?o{oeloBMeH6lynZEAl)HdQX(OsNSB0wbR$T2HwZ|nba!`3w{&+& z{~q@9y?%4Cf9%S#%QeqD?{n^R->(yv{8nwe)6cJF;FXT&yuDdY`SjjU!{JSgTsTYP z=^qiwe;3#La`Z=?p(JN5?d^dCnYu){n9AO}8F}xwerx0=J^l1;wuu5#JGt$F-1bNj=`<^|D=zGZXpJatAe=JDiN z{X*Y23*&a^G(Zm(g;Txeq=}SnGj5V-lZcizVH#PN`?ZKEk4ncA%+gQL_XOepjpLAk zbW|1p3zL|9Qz|E5uXz1}2S6yBDXF2~<63vkUyte9%Egg3i2mPPQqX> zlc*^h1N^U2AHHuEF`-Lz~POe+!u&#W&t5G?X9nE*S)IBdvUB%`Lrc_A#n``40FYs6MB}Mw*JB()q%&daZzHVOs=CGK@!wx(h?4vU&`0ByEyj?CUmzf(J#Jk5nZkXBz(+hiYo{*|!%pJ2NUn z0_K{XUEUad>!}0lslV+Tev}LSu)lxCNEX2(*2#WL%84j(U>LxS7wnsorlqBDIfe|sk>%)tCS?YL}6ht+d@>E|Dt-M!sS(v`{eoFnnq z%)o0c@p(;l+2q~L&F}jL&9XXUw^DJumbs4Y@K-a%9_}u_&rXJEu$7{BI#`OX#tTyg zgl}|j92LvD3Rj!;EoGW0P)MaJB5kxyi7(S zdWs4V7<9?HtXr1<34Xj&pOwTmIn|@G!EO9QE?ym&>+$dmEBDjjI4~$UIuk(hbH6?Z zg@$Ha{`12Wy>u=GP_>y`Sje-Nff6QWBx^FkZtTY$iB#6e$`N=-fW8TgJAiH4FhfEy zb!K&S6_0@6;lp7xy;O*&D#I9*3C>e*FGxrb!Q(-q(K-^ClC3N(vX`jyh5F!_0uA!7 z>wrHK=+)qEzPfTr9|EB{+DLk>Gr^%`c{D} zsq^Fj4_%Pv*7dJX=xXAo1ZoJe;-B>Wxc|C;o1`9AJj$Z2Gw71?{p8m^ot)vlmhH`h^MM#9UE?K{`hiJ4@S(m+eiNh+obt3<(|A#i!v67}pu5 zsBb5>>XtN?*&9$27Hj<~yL@$d8m%;n@i;y{{-R5Gp7nQP{>QiOXIxE}JL&iAR=wfx ziVA1zs(#hG8Ncq?a~S%WH`Qo4tHH%A8-IUeG8*Fzd~3OFuh76M1dqM_^H5jc%;jaX zTHnQwu6q|vC-WtvgrS{(h#XJTWFNE?vz+?#+C>&HhP|@21^q9%V?SHN-9kyUv+YJH zmb(@blKg8_m0Km*8ISzuNOh(eTr#KQ*4N*uspyl?N8ZwHd+7nzg&GYcD*FVrPb|%c z;@8Q6Ss)>l^NI8>1~kfBvyA3V!poQqx$m3ZcO<@$r2D_`%^}`2yRq^9qqnj0ZNy_>ZDGy7lGt(UBots6<-dHypTW8z|l)lyGn;KrspQYoJk=Oj{6bwCIiuy(fJ?>|MNKV#QvkHA@0I_wIA=Zs9Wo_s#8mabjN{?HHn73RWp}-@h3fgU z>~cQ|pR)yg_1F-07lh|j?Rv>Nf0*9F?k6EG`uqO+DC(1cw=AVEaV@d`4#$4liT<>4 zqLqzhOS(#`(km)1f`@ZptW6)>m*#WBAjm=&FKoSYdr+_EP^%y)i~=ws&C~&y9*b!2 zdE8F&iU!uNS1CX&CF!~6#r2LcrSLOtwfK*mOC_x5Oea)@-Fh8{XvXrcbsO z!C-DejauSjHpuF>dvC$XIzo7-8|^7)8K6rUs8WWCD@JJzv-X1j-HC2!uzl~C$&$&;#62x9FGl;F zA@wzqkC&5i#CPt_B-)=MtTU$*c^3x!cBHErqZ+S;-ho`pe{M-$(y;#S63C|w`-fINOr0HQ-J#AkS zx}GihhZCNW#vKBD@5!3Bk~Myx~>-llAQD(5{e&dGi?M-)Kl%TST?2@26=X9a1=i-}83 zC?CP#MCseE#s{iEkO%z7+ zeslDd$|@fYdyt9s#<62W%Y*p|h(rN}h5;{$!AIVHf~dVt4tL4A8vMwU^#O2sf;s$= zQ_9;PF~>OvI8gx5v6G3;+6gXJAbNp^2#9oo1U^Slik2~Ujr8VsQxAk}CKV&S%c?2o z47jnUrlv+lo`!ds4XPN;8;ns_9Qwhfs3U>f9jG_K9qf7&@XT*H?}bhLrn_G~A#H2E zJ#a>)qJ(f(o~y^32s<8JK6w^aU&)W4_o!Wpo~+gSf+0m9CLa)}_eJu#RJY3Svv`Yt ztItS;HAlzOCWtWkK1{P@tEE4FLSe`x9WB8lYX`8ctfQa42ACq@9N@q9q-S=AvC?20 zHVDn!-+ zHw!{?WV4R_hBn$~$v;0g+*X1cfohROtNveP7eybFh(yxn&Q9u$=qBTG$;jB$DHuhL z+TjB+`>d@`Y9icor~V|(Dc5CE`WISHr6n0TBdgT5gl@q_k#mvA9S3P1JK zDzRM?4}Zm9Wm%nT6Er2vX-Fvn&$#PYzhxY@;lGD8L*NjkuW(FKsHktoE9w+8T?IKZ z!8gP&`J6^LE&eJqNJ~-V6i#Jkr`8i))&Du7R8-jBS{K{ic|`Jt>H=Gflg&O6tL!w({4VP)}Yv zFjdh6xHiDsZ*O1GwbB#f5+;=e8lZ>kw$w-tr0ZA-v&kQQk=>pe9R+iPb8r!lPfR#C zIz9wmqr)zIw>Qr6%*4Tv3_RUI8S-a(I*~1r5+(+QdjAUzwfOoK4>9!-KX`sw5p+w{ zKwAc94g5!XtRrzPabkMg3AgArhjzIS6 zmTRMBX^1?torGAt1WrGMRSvmr?|>!)V5N(>%Rb} z<^0^cqh^$%#$#L8_kb^LTvn4&d{}?d6_cJ+72FiB_-W7N2G7jep^zfn3nP$pRNC| zkVuhvoUTBp0w!bs8?gwID;dA&&|sRFnW+U`{=;biKw~{uxbB8N{=VGmU_pj62}Bv=<8!eo=}@3VQ$=A$Z-mFiMBZY^bcVaJvYsF4 z6k+9A!@;Oftk&4NlQBk5GE3-;j1Q_yiHz}=uiEOJwYhdTf{ay79QK!}`sedfyR>P2 zeZy}u)MZs%SL++|1*iy{oV8h)m`^hVQtwg2lXv=UEGup*MV*;+oKuVvg3%Y8!=yNz z%5(Z(Z}wF6EaZWf0HR?JfdY`L0h0#fF^u}BuVRLL5Vu_QH?73y3$s;sQ+?35~+Bnj?dsNf&jrTx(!Dbv0I z;`)tXT8*LpQe}?=#3jah-LVyXH_d&ld3VoTXk|0^7Yu|oAfJPAPZiga47ah%L@(`wV%dQHCWeHBhp-{G7-9VQ;NagM8^5Y= z!*hLI8 zry7qxp`>E@Bb2fetOqIKkG%7$vh;xU0+?(*Q&+QGC^y?Rw0GU%R5O_3dlgy(;Lz@` z7FWYnfV5-W3wl`honK|1Hft=6Ck+QiHxLq%{oP%k4YM&&n_KQo*u72jTzYg(>kn@| zc0M_^X#+kmWQcEoD8^TeukhjFWvF<@4}(TYnD&$+A4veE{-({Tz4bN9NJKcUd;yLR ziUZI9;=Ex|vB;DSRcI1%``>1a~G)(s9?!wveL#LDta>2$} z$&5smv@e1ZKl-fBCp5LB?b&pkS^``mvf8i2xZDNS0;m2zDHn|d7-`hTby=%F6asGp zh%{t_^jFzYO(p|48sH#JRofVVkc?X2Alo1puQv>wJuVWko>Ed66jWNkG1}Sn zePT%VAZ+#hV>LB^zyOhZa95|h#~Fbfb5(iyn{OUT&k|m!zEg`;ZIlm)5B{#+o9RSa;IB}TkYk6+{VJ_NT2#O$Y=&y1SQ<>eyX-x>}Cv zqt`*jX!6Qc&8&E6KtbVS`sB({|5Dg)i8Oi5{laz5>YHE!rRE<9g3yK2Ns@HW^O^&l z8=sd$DA64pe!8tJj5aVz9}O50 zgv!fn_{@5%gKXc#5{8O$lta{Ri&3;J!Lam90|nwGKN+mXP>h;3a@%+z8u6>X1<~~t zV^Y|b2EvMA2p?meUVsPE7AvRxa2T@wCsN=k4@SoOW`Ttox=;B|?_4|`Mc7EL-$l{I z7Us{6nISIGQ7ctE$x1OH&Ch3{kWfgBZNwcW1XX=n6p~>mB80Ry9^PPYIbskmP)e54 z^sa>eiTx-ls40N~4UNjQs{h1IQBl#}{tQ@i)WK(s=q^=FB?d1KV)_-Ekh-!Rk_ogKO<9}y?wYP!OQ^k^iX7AUMJcV&o`Yh<;-z; z^+pPx3h%!bdv<(0_KID1_x1NzeMe4n2Nz%z5c2J(>e;SCog4^)y?)IeX2ADSsn&FC z=gh(0{#%sI5oVGL2jB z=x4+GlzBIx*

    z`eNR%1S?^7rYv)zlc50S<$Xp>}S+mBKB+m z5y9h=`(}Kd!b+i{N}<9>lPIVn%uhrdbj30ssFUP0%%13vHM7VzlB5sn*3LF)>)Kur zpR=5$><;=w9x_?@109pIBjM!5`rfnkl59J-x+n?irIV}m7uWRwD$%s)xCpF40%~X< zD%}!0^wCj$whn-lcj&+4;WNb0&fsmOb@0}4T)X#YuP#_dRAX_TR#2F(&J?CZx5 zqy7^jmR}aFJj-b)FY=NEY58CCCS>DkJcl0~brOeU%IZFXUArr8+1g`3pew=&rf*o} zQ5=vUNUMZ{Oqv2&mRCL6N8qL1tg^wVBSXj2nP^=!qPau~f`I#HVAVrlK zQj8G;HGcP{e4K>Gkl2jXAoP&IzKSIaMTI(J39mBVwgm`Rtf+$iGj+K0?jQ@cFaqZe z3h_gqe~Kao%TSqG<)(suy;FifIt@)*BHY)aSMx+4Gh#+fLm;9uuofr+596w0H3BaG z8Nm9X)&pT83SUmE#YyoC69hhcH{z)tbb;r2m*~YV6%;}#`}RLh*hkRS03ik_tEgR( zM$hi2N|BOpt=qpkd zcGwDl&?OIKGPnq)0nZT_hXCe_(rBv@nSnuE=@4VVN&3wN0lNg?OefN5+F3XBp=eV+B(!uhTthz+aiPln^5S>j^kFLqa-X(sTs(;lfUv0*5-dNlI z5C)N5<+_i`S`?!$!l=ARkLbN%(rzF2YnGS&A;QPF?*coRuQ&F>J#GpI*0|-DadHUZ zba>7Lm2G4Kl>jqn_ckuaa+0;8d!SE&Uh~~MddRpgR?F=8S<5wrTfNH}(3FHKq`8Sh z>C@bf_xupwY&s&K1wHApV z)knGTskGizUk(Uid(NE}El8l@UqK*GC8Bf6H}_8i;P7VlUmb>D-hXjY-_?6`x@Ga@}a%b@mp&p&VUmPVhf=lG-)Fl7Xnrr%C?&b7j0!4TDoRC()})?wG_BHuiqod z@O3rzz>O$CmrBPei~{{4oRumcM(Kr;!X;9!xi`DNQHnIos?4d+QDP-9BtrSP+f-Lu zJ#6C*Z%zje@mEUH$yPQs+WKkD>n%j(rm zHtq{)IfsjVAdMc_KF)kvqS88x1A+PqW{T3TTIzJUE}XaR7M2|cDRn=G*BmW$79%G+ zzDjm&oH^5}*h3$`Kvl+Z8&UeUt$d4ih3x)p&Zh0Y(#pEFl+X8Y*Ev8ePf`4U+j(~? z&8of;SW9oC+W!107vs8ey+Lz%_oLvGySBT5K^q8pV#Wn0*3O90koWoD&Fzn0k%e7c-O z_b)3oowM=SsH;ibqHenXi;N+>i!#oe=_?EwiW=#U>og(i1^0rp!>OP|P(p$d>d&0k zH~>y8qAP3!Y6rxC3LF_mp5Y3jx+Qcz-wgPYI|@zNJBd+==?HOaf3d8XkmF|~BXfr8 zhNxjOK90i;{I@@Bvd!G_e2saKZ=3S7AO?MDinlITg@+T?o>?#|bwN+FsgqX`t#6Qn zjWCZqrFX)1sK1%7S*fV}=f`CjV1EuAS^h613sVL>p#%CRu7(uRn^w8AXA>aEUO7nB zLupA6nECsx1W1}Vv7(1fEp39Njb`ye6o+fkn$AneSX1`h@maxtk$bb=iE<~!O2rm!cB+~ zQ{CU&o7oO}LT_LPjVetNgNuRcf&ni`f;uQO`*9}+ijjYpz2V?Lb%lbmF5UDV2ARen zT|#3gS~@aexR~HjaHc6Z-rOV=+swcuF)(1ypNi@udcbk<%=r0rO1#N?<=Bh$4c9Ma z@}u+9G|<_G?@VR?x?h@*m3&fVJ{Wr6bYt?xGOfi>1OrtixY|71-gBY|2B=7X=K3vJTh8$q6&TCG*`8KU zSD$|eoj9ioup@DCbKhi?Jn(^CyuG_fbGr%bp(p^~R#fE(@|&khz+0%SJQDRo?%{F=;pkRs?c9lQ zzbn*FYTVpR1by{Ej~l9U&>Kn$U#3#nGlok21Q|ALT7ceeD~XVd@Mdj`Zvn@J5(*RZ zrF>xi22=V_qM%cc(c|M_up)f3=?O_GRbW(5ln}HKWzBXP@23(zeq3Uzn5IyJP+er} zrg72rddy}KmB0c$&2dAbE@yA_uZQIKwKk}e7!9gxU*z$*2P8k@MZHX zL|g}sVDw0}R`YCuysNeXWeMtVN?$@;KJv0vej>&6H-Py3aLWIY3j=U1ux#b0v2hTw zRLp}+2Ph$c(+vO{ZQp-UI+GXGwgW*UL2`e%V&D^`wYz37yvc(LdYr)iFhG4CF$H`C zoIs4k+aD`4DTve~NR+-t+6JvGI}llYMDZk*@g9l7B_lVSMd5jEehJ7xfFP0w@>XJw zN9}ip*AFTyPV`2wS&K0pYx=O}pCZv(Q5~^iN9@xM$Tx(ncmazh!2OI61DXji*BO`b zr7D(9|00Rm({y#tk;tf4HWpN~_g17ZVi1ph5ET86J2-2&*XB1RdW;3v*tf+`p&w%gCeugveH2>4nhm&1laKHeGbO z=)7}KT*#39!-Uj=s>kgow6(h{&#{(;EquJ$7T$ljiMTzAU}p?fU;yH=xclwGOal)MO6- z3f36a!DQ3tQh97TQGIUY<|{JzC53Bp(b>3g0vu@wY=1Q)M}9*_dqiN3q5D)9mD7jl zOzn1z!WSy)1@<8n${k$P(t7FsPG4-n)w8@paZ~R4b|(y>yd^Kdz^`P7pm?>gM%iRG zi)1ZJBU3#=UkadPAg1@nxvM7TBAdIj`D#jlNX|JIHiwdT8tp~@_D%>HKsEj=%SB0w z3WsOzon#Qc*g}YNwchUcXaz;^+PhMi2x*KxM*Dnv5IKW|`q?}|1d2`t6C=I~4->QL zt>o4nj=b^kwR9n!WAUZ)6@kFKZU@Q5t3>aa;c#R)@tdy~Ps&@){kjWtOl`t6B3@1@ z{2K3OgCX#Kf zh}5wR1iw|1loNn!k`fM%Zz+?B13b>?k!S+gy`{D#?`)m6kx$?nkTMOfWqCTl$mJwf zpo<3RK|l#D%8na7Rr;hC*^U?YXG|<^4RIhy>xhIO7*2w1&7VZOg>5t=bkn0}SX0p}vgu|z;c<)n2l>v#R{ z9UNr0x|Lh6a7q>}u9i`nCJk8Gb!Rl+zwj>kBDnfbQL?ejYEsTJw5!H;sGITQZZ~V* zd~&+y>AdH{{yRgZI9K&{LQ*YsNL~SbAJ;5sQvP#}N|ML~Z4 zbiLV^`GtnEH%TvpmVLqnZCh$KDypiKMxWzJYF0Vy)mE5OxSlFU_t*g*Cb`X6BuL-2 zgJuP*Ra)86!%&ext#l~2uNE7IB z!0wR<5eRFxVwD+7&_OQZS|=X|8MdXf9|i{sKNNn;E_);&R6#|Iz}VG!8;(T9v zfi>sp=GB%145$WWyCc5s}XR8U%rm+k?e~4V8LY4;lRxao{ zg2*_{C5KDKXppokFjK}H5OcxphDE9Aek!S4dX+cpM+vLVJ^9tKYm{F0Ax9-V)$^n+ zUE^`8%EHyd*y;D4cM%h#+tvQ(_hd9^FV7^~gr^UCYISwI4JCA?9<@OsPuh|&EM!K> z&8Dwiq(@5%=e|67{mytzev>!6>1;+4d;S}SA8D{V!CSB$Cl>Cd`@M~CmYv`+s_X4t zjZONOvbHHh0Ai&m`gjX=`Eif&Fa)vpJ$We%qP-jGb${zWJKEXFU(~cN9r{za9fHJK zF;iXfr=_0Ul&f)ru>1s1xTbveWe$Dc8Zv*5`(uB&VWRs^?-u(PsNOnFjr%W!0$~&? z!*nGU%$~}jE=OdgK5r_3h=E{G%JMxYWp(q?EyX@UnpEv(hZuD0XHa#E1;7&A8H0>H zID1H(Mtr#*L7KmGQ@okjdt3^`V$Jt?8O}D$sz(?=Njb*sl;ocwK z4iypM#HWOE#Zp4mVp(CIUU$2?@i zyVTSMb}5ES1-rp^62!jFT zknws*L4nnLsXh49syVyS5uMB4NB53P=sNdTEr$$`fuM{4k42F#&Y?!i%?;B{81va8 zp3wAF4S}F_xBF5J9W^1TgFJ7sl{;@ZkFQ{FxdrO2I4JSn9AEp?uff0mF2rfK1-wBK z3M*K}MYl1E4;#c6ak;EP%1Eq7WEw|^iln*cnE8WU7a4+ji;6dP>3nLLX9j8U_+~5Y z{qrgN;WR}U3vJG<=`5a8u|U_M66*qYirvX;a$lV3wubMTsJ2WYeXD(`Ex@q%Nb;>w zB-_wSy5*ptQX|cASJwXtpZx5oZLFw1->a*ufis^FLyG!o`Vh~>l!;gXND>t4J^nV- zvk%zHW?G;&dYef^>Z?Z>XGCP2@`!QlsRme>_r1puWQ{>{0z689$#EPTkX!fZ;m5Bh(vt2e#H6pHx_S1u(f$GIwnlt;MY24^{$s zs-!>e$$;2yk%%QIljtctmph()JftXoVO!UBHx;e4;CxMnJ?D9kk$x2&E_}DT5)Mf0 z&VYdFbc0UczbCECiK9TDIAZ#TVs=y*51QZmD(Xg>eN`1zXaFLUl#NBF^0#@K&ff27 zxvR=4p@tk~>!=J-hnW8bB-(R8eu+?fNIKR+b>x)71Ev1(xc z3|2b;lgtCh>^MfH{QBA0_&ep8{EB%QhsK^26Zycm=ZP!4y|2RKWM|T8K!q29==q=1 zSXC9EnE~)GYoz-`aOi}z%Z8NaT{7d#PsCJktiK{XZhx|qwZOsHUtZSN@&TD$P%c-X z+AE*THCuRkAFdpb-OUIHXx%=|RZ9{?51|Y};CU+jD>$IAxgDnui?gto?qjJc3`B`| z8Q?TQxQ-)22-E%=fHZ}-|Gvy}epI0%cO5S!?R|<64vk7wbTA^&L_@GHimXF0#P-w6=KnI6-cr9|Gp~1=66QH;4=3!bN^&GJaW}EcD0s8 zc)`)VdI{$|&X|1{_S-el?Z zA@(r95nz1z5?H9uTtFw)Fh-<1$lHS>rmFTMW{p#JH;SO2sB9>Ikc8$Va%TehhbTmR zpPGh-hSqd0%Jr6>G!Nq1^RK8J&n)&^kn;X#S{`cl`Co3ETuOo~F zt}V*sJgb-g9o%e7PBR>;N=Ng3gI>1=T2r2Hq?28YQjiO2mEKp5X_vVR=@C9-=~rAJ zK#J%%Hk2KeO!f)pr5MaUz@{+ze zk8%p~SRH>(bzQ(5T~T__V=>Zifjo7!8XbOb z-G=!rX3Tq9oLnFGl4Oxzc`os!s(q_{x>J@iWiY_LuAXtoz&g_sZVgD3})~H7g!(m({XzssYo`{zV;lUKi6e#_4DXazrmo|B?i(ga;244F>>Og7~-d$vW^e z>xZ;073Y|J>3r(|yB7R585;uUb>8E^G?Gts^OtVU@_d^c1HKvbb}zMS%d@k6`7K~y zGpd%R7hz_!#29|yeSG*ct#S}$0jnyK=dZP?`nTVsM{*EHz$R)cNo(#boFo zB}~+ll}08!q(f_Xhv}Hq=g8zOMq&D%X3DmC#PVPNKSgQ^ZyBPmlSj z;eS7Mbhs|aCEtWA2nMIIKv8}@#e9khmuM2bcC*1=FJbS58f2PDko~o?n=l@>i!}N> zllom(;t^agRFyzZ=e-_FF9FGnL1cA~8D-M2AnBF03c$X!B1#IlUzzu_ijeh_VXLB% z%_E6Hl#!5V-1PAwkmAR%sSRdK%Hc7Or4x8p$f>Xj8oF%TrXko=-Z`zfFVOmiW4ux? z#pAfBd>|9)=%j-L={GTuUfmIOgHUbNv;FQ$$KufM)p{F`9^Ip=sw$Dc0Ya~X zQzrp97h@!bah!oDKaD;mSZ-8lF`9nde!(76;P}myK82>Y_2j7LGqeU?g^0(`Ctn( z1uci99)Sq+iHY#-mR))WAZLPfZEQTatyy$R^gDWE>7vmg@WVR|)EId4)XE@yrs#OK8?{5L{0h?!zwToQRjK4I$0M$;Ohf5R&WMDNKm@bU6 z6HXIg2R5Y1qiT?Zs9|s-7cc0a4~&=DzIWfIfA3=OIC;mgv9c8`bPjIjSju~C0HKCz zpj!QW;#nfpeu4qL>8W@8`BRc8rLPx6%yYU*K_%Mb zkJA*lOi(*y0zpf4o#KWde3JfK)3aBW{(myrFdMyI zi3V`yKEpr-dt4hnvi$hD-p?D(Z-CHt%w55gIr*LraVbhoB;fc`+-Z`6^DsIwjgf+90@@MQchg zDb9bh+}aR%-m+d##?8(-yuz8pd5SM;3QwpGd4zTD7gIHP-eF|H&U%fJIywxy7~(^7 z0&68P76u7`KqJ7m&GN>fvgz^^S_$$vTQe#8cR57vd8Jb(5ElKPvVcVvO}q;71g)*DAi!H$ z$*mdpoPwXHJ?fN?-936vmfTt9L;F~I-h^~iHuxSeh%MA8(FcIM(HG@WMu7JzLH#sT z3IuUqGS;N;Tk~k0nB2+ zCkXax)YpHg`ZtBGz2hAX_!ZzczGr^EAFKfes0i%Hq=jV^7H|kJ+j?)s4`J zHtmX|(Rlv%#|T{P5hNaD8VDhLlpy?-y3UvR!d^&3g`yd5RqF?o})%y+Dhl;(7p%^;hqz4p5mtMp!Bkf zlb4@(0T!?-_p?Y?hXU78<}aA5pFb;lW@JpKy0J9lkMF*^9yA>qZtP!2_{Qaep! zHBzi|q0{cHrt3YflfGaA<^)Hq!CD`v%qvxq@Q>6#Ae{kpJr`l}`=8K9!TJ zec`jUlo8!E#H6}nZSslr@Nptgqdqt|oP%oxKo-^1)w$irKvEqzSgWeyiHpI%48%c| zX$v#6{CO+-TC=xZm4iM~?soq9w)8PwuzoT$A0(y`G|BWX%IV~=# zQ6>^Xu!iIB;a*H1ZyZfdzDb_EW~!uW`sm(Sr89qOq#7ydK#;ErqYM;Tyiaw?8P`uu z{qdBc8N3mP5fCJC7GKGbLP11OaU%VPl4 zb?XQMf_jSc1P>CV#MJITjNAU4N|_1BeuGyjlhPg2H_#=q~U6|gV=%g1J(GGuP?WYgLM~be? zkf~Zw&`jVHe(w4h5JEeGC>KT~R$Y0{8(c9MT-XchcQ<}6n&9l&pv8A}r0^n5r=REh*ub>*H>4ddW>#2l9u+* zWB`4wL!CB&2yEe^j=y@(6bDAz;5t*pKa-C=&gaT|5H(=_Z5~ZcRaKM!SxpBA2SMr; zOih55<>tmsQrYg@dELfKbDY#!VtUju{W{D1<8R9y#zT##q|WtFFsd~@z;LrSYZ3Pp zn2i;(EjyQLYnu8u{Y=!eu_d4xseU^IqN|%QA#oGwr|qd}`!7Q0S=``tlbX)$HQHz5 zltNA0PMH7Un}u!L5YN7VdZ_gcrEoAM?2=-2v3J$3_I6b~RUHuLR>qTuy<4eFk zL1!O=ih=?d6@W>C7qG^?ealWe#_=Noj20R20306B-|-$xs=%@Qw@g4di2+alVN0W; zv`9xy=&E+xi5u_-Iy+y2fd%k=uO4Js^U6OOEXM)NS}-@0pe}#dW5q;}H4d^P|B(?h z06DP~SXhn8(bAN!f{ea>7Cdg~^SIcS-XYOuF6(K=d@3pqQ&TWE-4ePse?s1{@?nAX z_+K^K)b*%B`d*mt6AURBmQx#tJj~wnPEonTZT8Lg3$;bwgKrh-zH7dL&y3q*^<~By z7k)O`N6toaCCiPkIpijm*3@ie>`8oW`D?DCvNUgKgNZY)thK zm9dTJslHz<39DTH#;pGAHjOd5p1j|iauiOsRwy>k#rc!ar*sKn`>b?O5lmcEvCxp4 zKy+m!h>uca%1wqI`^HmYHaegXchGn&dvx`CXmbVLgzImG;swWmwtkcB0J%KC^{TW`Dr{jb33Q>3oC00tGhk;Kiw@tL()59M z+a}cBF5!j?8m|S#{?BJ**KZ5pYrto*u<#L}1QX?0e24#I{Kv+{RhE~7-NRt)hy$S7Xa5tUv?F(#iv4H0wAiu z9S4{#dt6}6CU}9910Y1yo8A@D2(YL)6Bp{;+j(}`4eh1~q4NDN)&X4bpj=ByAx+!h z5CHpd0nv>h7_|Raw;ozP<-n}`@Y-bbU6n&FsL845IjLs|BJJ85uhOv=@!RSjsA{-6 zbhK(b$U;lIWrv3tnIuN(rknQzyR1@7$l`@-G4-`_4Ua(j+Y(I3;&Br>wR zLilY_twvtWS1}9Qb}P|dep?hct`=Bun@-r9KIq$l`;s*XNx%GX)uz(O*B4x#QOr6J z1J-i;MZC$dSbGf$c0)9==g-bEm|21^)-T@TTq>k%(ey-!*4A+Q{;C+AD zL$a9f4YBj(B}Ut@2DL#(SyonA*%vwkGjdfz>k(SQ;kE5C+h^jeYBUxwnHR1o{+~?- z^WN0xeoClpX;M_U#CXG#@Ymy(QmtwG6cdu7s|qMpB+VJ7&dvIUGw#Rtji)reNL~d} z-QCni?D}?(F*qYK@g_KtA;aAo>9?m`_#M0g)3=cugoek{7=RC5#L6V%CmQ;$ZaqEXHF$oReO;`5^TenSsVsotS)y7V z6@>kGhA%0*9@=XRGIBOHHeg3YXX^&o>EW6tIob;1x~EsSWiI%WtPXKTFZ_fl-Oc*uF1n zzePTW4Dhs-P2L^Gp+##TF|WK%+Zj7Zx^S7x`{jngpE7-G%ooZpSNG z+MpW&zzK`ENPx#vHm;aA6?fIO^Qo3!m#GZ8te;@}l;lZr?smzG!F&R%6LI(J{%v3g z%qA~>?R{jHGxxr(s;FqlxQxssDZUDM5(TH|HsmGfK%PS?~|07%#ckoizs_%b?i~Hvr<_J*`p#e zWhZ-OlbtOU*&$>eBaXfI;hg{D{r%5X@AY0?C7tv6exB#K@B6v$r2Akv^0L-+PU7#c z@&>zh%@p6%CTyYv`=bc9YzZ|&M4)x&LxzuD<=A@{v-@YRw~v0%Uw*rN_g?5??9xSy zZy?5yApil`0v;wVpFmRZfl|lSORlZdN5bFbB0BgA8y%WHes8@_Tlh4vB}#_i4lPn5 z_d~6q(iMqi5d=A)Mv4K`epu1bZRJT#HnJFI+S7@x7Tad0_JH$u=xrFN@VNaionyBA zagOymu5Ze-UFAirCoccDMdph!)?yKY(uxt!6v1i5FYn5Tt}{RX`^cw3CDOf};u68f z=k4F3$e!aRaad)RIY%Z{RMrphs>Mj$AKJm{41j8JC{lUgqJ!_2N_Vd-EU&{0cf5pp z6GlpKj*Zv%t{RaJfuFM2Zy)?uy6id>LMH|!!FgHV+=zelr{%B*{v!#(tT(p5Pq)D) zd+r!7^ri^ph&?2c`|<7Dw^y&Q#l|(Hq@=z$0@T{dx>?P7?d#Inn`$`|vzBJ8!^tM% z&5=xhA3bIip8NRixjn_(8Bl4ad9T;1u=u({p@*q($yFi_dFS@+*o>>=)sqtw$sN|v z$N^PJ9MtN}RHsbnY$}?f**@nyd3ErsB$9{eFd3N>-H~k*H`kwi{vAos>kW*=v-^Bw zu-FXB7wD^D)ygIUt=kDA3)p&xrFDm~%BQg5{^re_rVZLG%kU?9tClWLD>XKsbcc%M zw~aVaR#sN>0}Kl4<)WDwuccE$+4R?1Jx!o9h_XX8&@Kg3_e-Bgr!ir_CC2Yp z^sfEPsMN~GjaDtmlIf<=cBkNm!_ANL(@wt#U6D1C)FdRz{&jhG@~F*N%dl?tuT$Sp zq1H|34tT5G1d8gXTS+u4DY7dnc9wFHZa$GeEm22P?%(~^$*8>F{ zyf(K+W}FB83CTqbb7HNt{-Bqsag$W1{@xa>DUYls!onNFB3vVHxlrZL8wDwumS*<_ z^U>0*801&&@QjA_@4fsUDvfP8)0AH$?AEjgVr768vAEX<4Qz(r`)<9LbeKsRf4lt z&Ql|4-ixDeP-w{<_K=j~lIh#K#U2YXCIwo+Cizw?iGbA6zZlpwhQMdtvqK99+?pbs@LNJn9Ug5`pv>OzHseT zb}7*)IE~ZY^6=?R76+3Yi0>`uBxJitKyc=$GvU$)2R^^C(Nxme&eYrWVVy`DeN7B? z^PkXLJxwr_mpR{(Xj|-g=yaLoWm!A3 zZ?{RUZAhiDus~yFF~*P{X~~h{Y8@@&MJzg0A8WyIo;8qy6+f z#Np20IHEp&U%ti5*s-J%JD~gJ0cPL$S&N?q?Z3QAStGp9fvo9Qt7kazCn zbGhOrqZxz|12p4<+E`uvbF-y=V>}p8x;SKxF3*TtRV#^}W=`H4Ew>q%l;Aa=-={-8 z|DqPs6}YK)lkO((SPPAU1=QcabOLO7gpf2)@(pHaai}gcVb;D~Va7lUViy1B$b6Ge%1$U*qq&0GAS{J}#PgGxdh2 zWIa)~@v2zIiKdyj+{w+(!Rrqf7?M&k1Cf`Wj%x^&Ja&pyQ&uJ1EM8-{{2*=R*)ylc zlTYub_EOTD`ZIS4n=OI^cU|4goR7ubo7SY;dzQW(CEE4!>iA-J(y*>8^(eQ@cdQJe z_T0`L;w}pf$8Cwe%YuS}VtWcAMdtn(hmHQaipO9Ghr$lmF#9cLY~U9CbED@n6~Uxv z3is;3fAf@u+xZBeDXRCwp*LSl+ka$K;ltfI7AF8hy<4y_m%7)5EvQs#Wf z)FtNO)SY=Au&J8#EQ#z|Iyuj|KSpbG8{;}@RqQ6K$9cs zRIEjHO{t5X-U|Kyw*~6Z7Bu-{AU5paaPGa+-!B=ZrCKBjspz%w8YckFU_BI8;aH=*eQs(nWP&ZJ@~4BJVXt-xDb#kIrnv|e&P$x2?3?bX({aD#$*crm?!yA2p)+!3;OL zr*&#DK5Qhqpj+_R`@y@b<40=#2dKJzliz|)-C7%U$HxR|{@eZgDH*zX*XADxT?uy% zZy^;SK9`B8_pZBX=)A2pg$aGQ>fu%4)bpug1Gm(NG~6DwO&zVX=>mnhRvtw*An89i z1?o?fgij-NwcHP=)&7D{3dAMseC_Rm!gTzvT?RWZ+3baHv^Ta=g6s76sZ}(rZ7%hH zxtlY@m1Y8lM803&a0hx!V+kBRM~YR-9bq6v9gdAKAC8_Ts$WFVS%JHXfcH@sYInE> zp6>2XgW`{KHPc)Sxf^WvPo3Q#>#;FLbMqu(zcS<9*3}VN%?f2TdwL1|`pt_;7jklH zwtz6jCf25v5NeL$=MUGq)wAf!cqi)OTzVVR=V^Lqx?m{|5g}xs zNa$O(94jkl^m$z5Ztx6l(EQoaLtG9OvJoMtd_%tN2ccd6m4H?;e+uR7A&OD2h^~s8 z+T7X*k;&4dSq~a^{A*Xd=gu|T{WRQoe4E`?PiSA5lf2Vn?IS6J^qbbGD|BQlZ?#{4 zKSwhi(iJR{^ci9Kuj1vYHV2xDja9zuw;*G?I$haEJZ(yci^QzDElbb40(v7uT6mu0 z5z7@5^q9C^_c3@VYS_yoU z{uf;Uz35pUActT4tuqZCzC0v=dwbWXl52)P@pdg4i2yq($en4<&E+D!%VZ<Q^ zv5QVEcTht^1A18-{AbWgWTl4l5V%QIt<=HSgI7$?1FpcuwYAA6UvFst{Qdpu-p+HT z48~=|N<>nnPL2# z*zwUTaS0V>KX%un16j#irvfrW;HR7cI$XZODRH_ z2Pu?rxa51#h=2Vlo<<16FGUZCFYMHg-g;hJ;=O)^ zmfozuT(19TDvRBU(od@xU9~g!oqHne$OG7LyD0dNq{(i!h&Jz;^BEL>VhRpGEX<+EB2Bn_GWO)I|0If!bls;*xDTgDO7L3-&DjkN9i z`YTzn!$U(i9)3yB%DO8$LY?wFe74A8TtfO0S(flEnFC7dBGVPWSibm9=CBt>+GS9(VzWJJpy?xq}VK zm!>kd-#(hJJzTBiZiNLLR(AzVaVtU?Jhfa<^)zu`)S^0or zA$`QiNJ~Z*= zWILy{&~>GobR#5d$ks6GU%f=5)2WX;H!Dr90uwn$(cH5o?zn1hIe6$vNz#7?JYlpc z)%m0D79ohx7UE9|(@En%$W7Zn42UP@m*}-+9IYI-b_)=EHWWujQZAwRNtYFoffr8J zRjw+Bs$RuK1Q6n>;C)be9ktg?P0II2;ar5GF|F(htDUAC?=*EFUdG!T3*=k7LibCL zaKWcF!&xVvm2@~+j-GbgiV2Q#Fy?iCeiF%W@-2jxI^k9Q-Vkll@bvl&?FewI6~Ps1<{MCX(E?_P$DpmhG2Gb zGhw{Rx4!AJgyxX#BsEw&Ko7dIwwBU)Dd?pSa|**3=pP~^EsKT8NJ;{=IYZ{8=!#a81{O zZvWCH*S!O><5amj`CIo<&)vxOjdiD-cVzw0(kwE}Ikr7+rFBg|I00Po_d@xq6j{nP zZZ!1|xI`5jS2rx}iGsq%`!gT;p*)*8x6Qq_hc-jqQ=iY`Jawowasp{n{jp!VPCz3q zD0^NnGgDZ2QUJv8j?a)JK0@1+y8Lv|-QeGp&UAm@7nf+Roj6r6R`!Q1u zgDN>?_SFY@!8isYiz~$cLj11sJTf{_3W)Mpp0yRCBq7~ju(7_xi`E%bC z6l#|6Xme{R{nwH<{hN<@|AEFaHreZ7Pax$xcMk^HwHqJv>(W{mnOh>6Q`@aKGj#Gu zaWS#45FZ^GN!GXHY9@BW?Uc`tA@ zk+;un(!6hXyWaNc(^aO9!dPA__uViHIwTKp1pi4cjeslYq+<&r2c!xby;_r!JekXd zSCSFGKX4KuRlyP_c##t_xAYWh6<^&u{@FSf*|4ZM7SOvR_H+zq& zMobMlqsMC;Ff#}K&+!X(>tQ0>X$Va?8f3vfx=t0t8GUZ{$)r=~fsWGTMV-7~m76;9 zhi^0+_8AUp98f70R>RM!h3T)vR>hoW3cdQ6emB!C0MOXE59U24U_ak zqPQ0_tNFHC`kslA84)~)ah9c>6i49WwQjy`D?v9MVP#N7GR!E&Yk^>& z1L>=!Fg2Hz-GX;6S7v20LH9*3x;s(W=u;ZMJUIlUf`{F5`}r)Zv?^N#dgoFj`pXan zb8n^l)%=|V8^aE3-J}}2k?DbY0>qP@OXJmCEAAP3h8IE2_A#udZat^kVdT#rDDoiG zxVm?gCukQm+U|8Aoy27S!czE?*2c#s(k!IW15-~PEMb0eQPb{j1;Yy)7cAFw^XlSH*vW5moWxIsg}yZNPD@$;=~n;>xqg1XvCxxK7xL#%Z)%Y{Vskmkk$)?t zsLy}D!W6ULVujIjP^nl+B?7J`44T&zat($ zrWGPgh!u#a<)*(x7VY3is&gryibnr-+O-Whb^aZEY=R`*{HjTvC94(`(aLu-Pu9-U zC}=kDqZZ}skk$j^E5+c=i*@fAMbG2CR@J8Ql{S<~U|JlrkZ7Q9Cw*&$zqZ&ZUc;}} z_1fy+Bc^j2JWO%pFfq) zhR(b)fRJXlqkqu+RL*`?`00$AIiO9hK(#NIo&w$`8VT#v<-o#8?sHOSvAeOakK&tb?4g} z6`Jb3QBC%bQIE`>%uxf&b^gs;H!kD45}dr}H3Ivh^LH3fC!aks^_g%C=9uHRdn>k; zGVVTD5-sVYe-`bd`_+j(B>(ChyKnGhjvk!8!oEr@>|F&+x!LXvuF07G|n4bQqP+*hVnC~IFXZ)Vx&J3;l1O+O5G>S(=M`) z>??HXGmX={?m$s6>My~|`TEi5HjV5NYU74^6Qz>lb8eCl!o11CIQ__^iN;fU&Y-1z z=(Fh}Y*=Q(On`fhSgeUfu`YE9ZsZ3lOrw zb6#jrYS!qr2R$QP1J(W9(w~fx^hy*~MPQH$(ndam66j`l1UBgr+ebbSFcaxJJi4sR z@_XCJW7jIw^4ebZaom-gRH2FxpD~c5#&Gqj`m~Fu?Gt(xZCTNB{=&cXono(#&!eSM zG+_qy2lyIh%j+xCIu^qsUdGylTu<*yb#2DkzvC)?le(;$94&xfvo;uCTDO%+>%UdJ zft}=9KkRC6+H7{h<-SL4w$Tch?v=;%o$Sjtpy5Ca5IFe^PPBHUR-=EI+&P5V{4@%#cAE=zx_O(Do~wiP<#j~UN=wn*HiFx|p>0$fq5 zCdZjwNW=16a7u-c43~=T4L`JhHusX0O+?jABeAZw689-DyHEqk_Cs4(lGn;tVwd|l_5bKd)H^R3>M^})z~N~zS`^^xUu9q=AM1F zkCzZHKiY+pHU60*12o3b$!TM0iDz7(ti1fi(m)RA)SxfqQ)l_nqm^pkI z*~Wull;=r7aJBzaarVtwWid7SEfAh5MaKOL<21?6+ z8I{{eR%^1(;vpKkn_f*xPek(I zbM{}(i47x9@1|dzD#^ZeUF3|=lzR6ivOT_xzc43fKG~(WcKS8RgHkh7bMroNfr37x+xi?457NF1{!11W5h*ciJYKEn zlUb`AgaUxBbM&MNg)jyHm$6tZE1|O1wMt}O(6mtNkXvdC{1w(h_Xv4R5lV_TnvCOf zoC>uhma<`=BWG|af47B7Z^o>zBsu4esF%V{DzU z9TiSK&%2t7S3J^1o24m(cwBP~r^Y(0x8JZFJzwgQ-8!Ul@;O~m(=SE-D+8W)utzlE z>*oCt6Q-n@zqW{n<*xTa)nxYm#o!Kh(zG^)acD`@(Qg77!FLx@Umh>n7K<1D2=YJe zGN0Uz^iMWR`N>D^c+~D5-*i%oPLt)+s)1)6DrP(-Eq1@A=}zP1BX@5MU#X|zcu91G z9cAc`vGAKhF+|^q)X4GEj{oFNd3F^e9@Vd}Mx~xZOuvrdwGvUf;Fr!DeG*6e=lm<~ zkERsA0~O`Tz0B^K?zuM~OiDIy$LT*i9Ik6F?drPpLh?E%-Z^|qVnzI*k9}lgj;*`? zZ@xYE`6iA|2Ib%xMh%EHxQ485qQS-W@87T19nqj1a+N5KmC!sDMWknDTK){9LBq#C zYMTc4`7?*7ruXl|vws7+ zmll1^`nSTi4}83KcMxmQw_d!v`XH@}Rc180ip|Z%#Ra+<{wsrqtFCf25`;I3?6Pbf zPT^yRJ%O`x0o;mbf2I-?6&q_A{`C+M8JUdAuGtxq*K!11TGjY%55Xi3z697OD=A&b zspPhP?~Sj*H~AmM0~rcXt}1#ZR^Xe0WSdX3>&d^gC_Y=@r^b2Dlg!+6W^b1v;9g;J zmzNUXcSMGo{Ju|P=j?G65lFmmo%)2q=SQY<5*KfZ=UxYmTWF43=)7CL4VmZx4Z-ut zy%F3A7ITJ}aNfk#1Y=)*cN@Wt=i*Ld^)wTYhtEb;7R;uK4@$tsV!RrPj41Of5phhi z%lb*DfttzT9Lo_n>95=?G|=*`2i669Vk>*lWqx8gcCeU+Md9j~-WtI9bMoIwVkoJ{ zn&VFO!2dk$_%mn>9DUI@V5s2pjWcN2rm1lIyq&M*f9xjO`1!~D2DZag(tY*tFPBW2 z<$NcP@ax^v(&d#XijIBHlnuxN$U; z6z_~{)Cdb!t_M}u&Ac4foS2vT#c6EM5wc1NM5&wk9nGhmb~g){N*o)#<^EpMXgujL zzj^6e<_83!#XmK+INdf82mocY9V0*^U}*z#QB4gEYvDA+$H$jv8G;TPZu`UzYmk3k zym)b!1lyj)uS6KyJ_nB8U-%2*iigh|#{HTauvfc69Ars;8vz!W<1eL{wXVki1Lv~P z{S>f|r%(Hd=(FHHGpJ@dk3Ou$R3(=zv z+}OPMlte9<8cWV0fGMEczF=PnL%Y(Y-0g``_PC9kFVn38nZBI%5W6 zqElNY*`v$ZQ$MEB6^8z6U6*f8shClBPL@cPI3~OMYI&=AwL^wTb@qY7Kz`x78&8pG zCP@$B$EO!7J)?MtG)yb4nQKQ*j>>JPi7zw9@M)XYOzuazW35I%KU#BeFhAN(_>XTf zpTA$~w|BCz!10^aHr4HcmEK%auWt^7#9Etq&uN$+cN*MmTpcK{5fc+T%woZAj-!q@ zpqM58&8iqKs$H-V;FDIzBm$~E#8=w5H@V?AXgnoFgQ{tk-u>R=$Z!7Rx$CBd(X`6X!uBE0v znj9u|KXjJrxu&Ryr-Y9HX2BhxNdq%yc<6sFDv?`^#M@@IxKrVi>#!lX6^T>>!nprd z%mpp{%>76O4ke5#Pxb@}UxN$;^y|qn22`_-e5XZCsNeDG;YJX(RW@xZHlYmDIw(v%kB`ode=YH`2YuYk^sJ zi`_C?LAV1~?)}0C#SoPThaMWQuvX3pVt*NV&6>;y3`#l~+P}~{u)(eqX=4bgAnCn7 zdSH-^TpO+6BE&=H%Zwgju5yixPNG{1^^C<#(jBhFcMzj%069!W!XT#spBTJc^-|0s^Q zWAM{xnW_t|pZp-{q5e{DFjbW^!&Qc6A9RY7cbD;XH~G^}|C9Dp*mIM_Zn2bpUGBWM zWC?yMwV0B$iM^QmhSqE9Isgti`ftcGC0;D!U!f^&*iSOYd4+aC4XS~|GSa+!-^pVq z=|R!MTSPZl!+`18^uH{%S!jMzUSIF6?7obW#Uyg2dNe5BV?z9gvdDTLn96$Yy%TLb zg34`Hye=_Zj!kvNAqh3?{sR!NbgKNGlhb=K$Qb)UbT5%HFBu8<$!|h4; zNw+zT(%RVqK1gNLpAAbAb!Y;|;*DC&y2(w^{Hsk1Ri&n1pR>`Ca#4o-9UXPXogScG zKrL=zOz1x!{Yxzf$vzj$+^lyYe>hdAB9k-f2B88gVUCq>Z%DKpz31foJNL(#(xw;q z9)I6@IVVpjAMk4j@u*`!i3R&RxL3@o=N?zeZA}K%viTrciLz_Fii$`C;kh7g8g_Yn zi9`%k=|^JKZ#{Wnl&*F{P5u1~wmWCH%T$OFSawZJG{BVx`2ethvNAm}cN@g-*uYrOU9n0t9nrW(2?_`hnCWRbvnc5RcsgI$amzzydqA(`#*|?fO z{qFuj(}9}%#I5|QvGFmP-B*`=)(Xu{z5A7NQ=E@^a+7t94QSuDhgVQJ=={U@IcfF9 z_ZS0UTnni23^ai^vfiHE!JnN2rTImhXBJ?7ljJmd{baonoeHb@=+-Jb$WE!$(~>Mc zdwL6anZt#9D=XOoH>CuGZ&%tGj4x;~)YwmLpX~HGO_tC9TGipdQople-aJ#c!WAc# z?O-sDmf1;^l))X5+-!KhRG!0?=FM>lQRsUfZGV z<{sD}Azn}H1+@9gqwvS4OZ(<1>_&pQ+a9PC)y!?o(M`C+Sz6p2kdDvS#(+NeSunJ{ zXFwrcu`!-&#VlJ^56aYQrVr@`{H~D z-K7hkXHPT?dQKN0iSaaJo|%j4sX}b*i)#yu4Lg1HvpEUP3wK1dHc$A|mR2U~qqHMK z2w8*8pI*R!jUfIu;Y&~Yc8>anqgQGTq_u%p2h0qgK7HCAm_H{6LP^m5RK6I4fD|Q) zoLDAwAKHGr1pKm#il`Ny2os-vG$g5txK*sD<$D)o6)VHVpe_J&ZT>Nd_o0f)KNK<` zGyLo|F(I{}kwW?YFj?GXH|sT=^o_~-n!-Z6M~~9Axm9_H*v2%krD%fcR1}^K5fPXH zVM6hcGJDxBwkYAlZgg?wJFSwAOd8zzoz_CB=(w%luWvoj(*qtGK0KI$%i+6+p6iT7 zAv{MRjy@&?DjmKOyx@Oe?HT0whr2ngLQQ>o)-MbCV#$%eh!_a85cmZb=A^S$`0VfV zUW*|#RmSVK;0exg<#l`|kNKS?d5p6z%kI*TMs%aWBkU0&3IOYOvTi(J!(gv^r&<(f%948;}B6^5&h z^{4xN5NIA_x|Pw4-GiSr%DSWQPyR_oguF)=c%%T@7SS}moxS9Im*uCqzDs=OO>4vM z8ZVW2=FPDu=;o87zGET!@Sg<*g>La?y@qtkUfZ!EHsDD#iVhop)sUB5$Ez*K5ZDVb%$682l)zrLpr`Lm>?Be%O_d&nCApzNg z2@(+3x{PMLMt@iRbV=bCi59ML47W3UBdO`QqNIWA2F7Fi0@zulGbT-XJoUXFc6lKv z@_-XRNO5GLL__?0Q^b>^GL)yoj;MciePLhC#I{p&76^T=qgE4JSzGMCc;Cc|V znX2D1_{4Qsu~?ulQ8+g@SA{Rb$anbGq{MRV=g*(3t6z>CnDQ-gEzsv)SX9Umga+>R zZR_!u^bc-ClvxYqUuuVb8k%Le^hG#FmMd23;12>6`uX$qE8#uAD?3&DY=k9;Y%d0$ z6Sv@M!@DKF)cQkA>jFW;ONCB9N;O0Pg{0&CHy4O=e&p4EvH7yr8@FeWW2wQV&w=a8 z#rEtprcE9UZa+v+AOlX3j8xsJcdzWBPxD$%Il)p45A;3oVmvt= zBkA)#=F;*uZbq`8{+TG0V*%ay*s28ZQqpM?Qpd@@kW@+Qjz6r5i+SRT;t+ z4os_3{_}hhUE289u0$wr5F+H*M@bICVxn+Z^u!Qj`x*f^P^0w{eKV{V3JT0ZjIB9w>}zN_-ZgPbRaE7t$uwh)|* z;9Ci|I9sW9(!G$q?o>TxW%8berF?VlMm}Dz_qZ)$zf=m_{z5g1V!F4f)O{}o^r4&~ zZu4a3pxHm-587eF1A~#-e3ezTSL(mRV9;>LnS-`Uere`ETD3!=9dMjD%dK6#keM<9EWVOLt;tIqn_A88wyFp9un z-<-cJlW0-x;`%O)C;$)Esjhjj=?2H)=it#O)2107%nI9;Ul6Y|&cst@UDpmGL=Yvs zrC8|;6Th?WAX+)GH{FygdWpBwK3H?sELx8G*YNd&8wR%>$5K%JGaGAL1SISm_b4(I z#LJ!WND+iq)(s2SqCT)@_J`TpXxu?xkuP$3;xTDw9uvaV3*d>Kmb9C0sVc3IG(#Ge zX(m#El;aUK-Ff_L-=EG0Wz1*sGuNgpqN<1!9zJ72w5yiofA{(KTB9o0io;v#Q%xv%7hk%!{7S9jn%P{eurY> z&=l2S9o=C)>ii>i02ER$AK6nYN$g}ejK@ec#p-sISFS7+5q%J#=oQb=PqPF5W$cd) z?*+|yLc9QScGA1ZeE6Nqs!H!LftRe(o@srI^QJ*dwbkyDYyJx4PNm*kDj>F9B}ybZ zuznr+(Nw(H_^xtM$!gpDo*ma| zm=pG-6o(c?oxBxgj#FELkyH{pr*;{;evq>_dhgFBsQb>KP#g|}&JTX9MY7?6mUIF^ z-+Xdj&e|R|8LB(J*`p)6e!UixhQds7rFm>GGQWQBJ4*!;s7sIc1${;RF~SrdI+jHU z5drvwi}=@n;FB?%X2+U;oeM{ubf8`dwMB08JyFOY9=aE_EvnyvY6%w(&w$cla5mZ1tqSkf3@_0zwESqX|fp6jVuvoKqgTO9+8NGmp3l~Ce z36;8LEFz2DCRvvBe#6?@ATU;U@~vpGOYwXyxA6zRyzNwK%0@Y)=O(9d?bgHlfJNQa zu(27M@a(D0m>SfQoZA&10dg{>!OP8ajDWqwd;35-MY6yS%@d@{T1AN9zCf5q&5O?| z-}!6T^Neh57cf#Kew_|dc=V{OQU*Rlj~7 z(P1qVhlE9B4gqN2fvtw%i%{D%-|E6bH6FJ-l6b5x&pgIYOY01UgTxtH{)ZosIgvgq z7vz6Kv_l_yaLM&dyTiO9)Mhf`W}1-VA@05RZD@l)9~Rj~MWHU)8u@(h`Z%+QzT30` zj`E-cXm`F|#bIlpW=4J@jWz8FZ6HuJ7D(RmaYValdOo)8(5qGLb8^IXNFVsjTCvC)2{1y{I9X}-U;ZiJ8JZ}eE{btW+CF9>3zz+& z$i!?abKL(P+Mu*^3ic!7VZtvIvn@8fyZ&D`wt!6L;dwW98LEPT09 z&a;Vel0qlLhGLxkr;a}F7yf9?FB!?*)PX%qd?Ul9_8M3e%1dOUQyCH8MI?UmMzf3E zA_RBT;+XRXvXyj1kUx*;)drKPH1Cn;+sorqcr_^mq@I&y$t#Er63jHf6J%dmMmL?X zG#Tj_nnr0tr{QJBb|q<<&#@`N`?%Ddi}F75mG(8==<`Y!^2mvF2z7ZCJbee*2hlxZ zkHsP-xN`#YzTZ?P%y@2nNAE=oRWe5&oi>suP8W)KWmVN06sC@7&QQfnDV+$HDPU&- zF+Ix>hhA8ldr`l*{S)F{NYlo_-riHpB(y}Zaioq6NRrT@hMBV1yct`IP92BhmZ2?H zr1d&7000w6pS6RwP9jBSd%1!<6P6*rzr6&?(wv+efRuGjgUBhvf0~R8NfzGV&?G;& zSS*e&|9gDAu&)X>*`e^!Z?}u>u6==2hb6#ZR#viNp<{+3re3fEjv&Y!%250qeaRZe z8B?*T#Hx4q*M0;>b4^p+4cw~9Eh}$av5&+n~hNsyLzgWV2;i2^YJptGX8#h(mV1< zkf*=xd93GRMl+avn8T2XLA1P_%%Ue%V2z+Abn6@lOGq`<;9g?*#H}bAL9ObxMSo|+ z^bfgW=T4B_xYF9gdg0tTDN3X&zh5c!bw*zN1u6P_jK7pgk}RG4k0x?OZE^c2EhS_S z=|{-1`a8oZJxD*_r0Gy?6)6`i!EPZ zR!}YAbvs_lrR_?t+a*O9r(y2)rM`=8ClArr#k?a7#d}2|cP-XvqMCnPL>d)g^>%b3 z%Jwue^6$oR6AE4szHQYGJMhq&7`#Pj5Q6RC!6gScEI7dcXF|ig zYCJ6@_XC>p#?4le_tN_xH!#S2cx*ZzuwDs=3C>j_MfKV)-!CrJP5UhqlGo{gGQs8& zjPJ1npFeXfPoAlL&c^k>U)U150Bq)@B;uL3exI)ClQ~bZmTpO!u4X%2(AQJl^@=-y z>UUI-ULEV5$bmlwf0c=nUiAkm50EJJ&g4_=DRPx42CnG;O4* zwBw~Y4;$tbeO*|s=o+7ugyryU+UCPv@Pj#Hq$yU6A}W%c{J!7V@Ef6CE7O#n+a0*V z2R3Z4Ax9!Ue!sdpl-9WM_+Ngr}{(&DQ!zZkEu(11rK58jK^`d~}y*X!0MYZi8xs~pH^tx0!suX`6+}kve^#Ot<#gVj9^TK=sGzK+n~t!JB5wD%Rc>=*+nVNYwKi_6P=^H z$C+apxU46jV`yt8c4zM6%x20Pys8i4VUi(X5uO4G|5I92KJ+GlRzskl+T zZlMSuZ=)}};pz}!7^a&;&8qpwla3qV8j=Z6Gey`Hg35D$&Iwg8-z8MSOQ&Y%6%u-; zgQxmIS2<7PBgw>t&H%!X%jAO5Ph*@F#I3qtw(z=y(S`pE!xqOdeX6|5@YdpgNy{)0 z1H;}$;y?Us45&?5gbN}EUIPyJPkfs(+u8=>ROg?D3L(8^BKZUSUC8S($vdzR4c*~m zp+wNf!^31~=!vg*8+G9A?QQNc69ho1CGhs}6(r0jEJTZ)SXu=Eojw!XpZ!`2lisS~u-*RRfW7M9lSnQoZX*)J^$0Ecrp zo6zvjz4>$vpAQhr{OncZa@VB_FGhxXY8j{qjmVVK3z~h{m;bP zzg2cC1_DSM5(QOjYJ?mQYXob${`A;w3agOxYs8_EzH(>|#1j7bfQC}K3;EAk`7Ccr zdg@qux=hTvdIyh8tsOjW{Z_<%STL;?l(ox@m)BDLL~21XW2{ybmv^_<+%zsskIlLJ z9{aU{t@X?29$n3`MH~*Enol;mgfo<~2IyK|(?;D?rlgSXn$@AsE?hWwi^m=2Be98B zoT~J?WU(Cc9v_ZLW6$4LrNfuGMEm@Ync&> zvU~vT6)590iT?j z`=dgp5%TG%XGq)1WfHS$!Ef*&!|l*g;i*rU`??P)CeGYfP?*-l^bG{ z{&}gqW`(ZBVcAHzkX3mmqw-ux z3?v_~u5m)ih>1OPeZo_EnYO-tciqj?RBc4X_JPzP7gPE)1`GIZRUK3KPlzED8pLxY z$A{YjmSfKTHdsR&L7`aQw*wH=%WT+2LHe3CrURC6-lyMeC;ZLHbFsp${ZkB0@&MKI zi)bFt7wq>pA{wp9{<(Wv$Yu!(Nv!-sFSrg&?0y64MXQ3ZJc2_{}kE2!r?849kl+gtBXPoq@IM^`hDhktTqO*098;+s65xd5W#X8-v@ckHnNE|;3TtK5EtdxTi- zke$B93^Us%Y@lyV9IX?*^N(XCnEaciBAcNhM=xk*|0dtP)J81xmXh$?g@D)#@@5{U1267V-|hSm z@>DyG29ZvBKeCK@eSQ8G^Y8N3G?E|%1A_##r}m2nN&U9B&?Y=_9oC>1XoQF2Xa_9- zVVk5k@;|a@p%VtLCS!F80s4Suu=DFB7J_jn*$S2e0H+3#2Y#>@ska-s$)qY%t63WB04az=ORi(ijFT|IfW{pvcVnZkZvTW1 z^%_h|u=`0ctDevv9xIg46*pq)QfmTT_6CNa@b34^6qT2_Qt+0Rx%cGoiDv_xd)p%k$tbucuVjkJTTtBH*d|Z6o zAefkHRqx%(>ik+Gl0@P5&zR@Ge+y67ptGj32L;d9_^1+9JnT-^RO0Wd175!#evUUh z-9fQ<{;O#|>WN$%@2XI6d}40`U^I<^sVBTyqBWK3-uLH154F~tFlUl9Jpk@DOE>)b zyw9-SIN7G>esgw?bz65trMC{}{Ez2Ya8M7c*T!g+`m>3h8FS0>x4@LCesMOuPimzo z^uj2NiW9!5MkntT*;Pj;*~5|dekXGVX1+tNcP0((hLfuvYd{b5zi$e=2R5mal9FBP zg6}jm&YXSE2)g8#%RtZxQB9WD<|x&_IN05dXcRA7>+|1=%$NOpSn7m3aMr7A{^^>P&DJ_+Lb?x$vgmZZ8grTh05QY^6$6+qd7KSCv z^4@M^Tu6110hDa9y0OA}>bKhDc)o}UYBp%!f9C>QOL7w5xL+j;Pz2At%K5?Cs)|&+ z$8+y1KMgu!eWQ+;&44^ogDLzi#n_c9aiR;y8PQ{QoO3x{Uj((Lp$ik3RCLBqKEvl9}*Y=!iJ(M~o@|;3n3Rm=i+2JGO^AfbBBhyejv_ zyG6El8-82qkm%ojP|AtVlYks(MQqhy%nPobmiTxSFp*10O>fZIHD6POZX_)X;kv=g zBOesJ!^f(M@U=NmYi2mu`yjWiseA)Zb;$1qBhNX6e&_pZ$IM-%Lks0mAqYZk#I?u> ziOj{aCr`p>uYej&qY=%EkKh;ln~?sseHqotOBoo)k@oab2^cHtJ{#Z9wobRyzQGO+ zF7%L83J_#!J|(jh(yxAf5at++pH9HOZ*y_+TB-l39lcY~Mfv|@>rJ4c{=fh6F^!B- z%#6V(%9#MQ?nKmMdP zD)r68zuVv5Y}Htu9G|NZ>&s(j`r)_3aav=mm#wq0Xn&yZnQG-%{p9N#l}*E@k%t#V zF5Kx|(olFZ3^}sNp}M;)U+=TxcH_pUin|wleYXdutWT%1>GI{G8S8kVWS}{3`tIEb zK(}^K{u`WW7b~$0faFLsXh8hU5eW3Kffcjt2=bdbKOXwMZ{8yhegEtX*Jn#*zBs@? z0|=neYVUCX1qy&n{nby#eIAqrzz9jn$y`-c-T;6r{oIYo2|uq?X{$!3^%*^PMpF|& z#;~m$7OFnda)A51DLF#(ZSL8)lXkMdD8SuBeR?9 zyI&y+M8ZjSm%G>Jl$YlS0T@NK8iBx#r_kGKc3qw zY9Nx8mG8P}>Os6C31mfe3hTqWE4w>;91Ux~H*8SKabAF7w7UDzJJsS(j<8SN0U6In zHtFS$6^@H>4|jif1Iw4M$&ZF8F7FXpf&Jp^_=9)P&-VeiO}rNR+^=6(ciz(5$jt1u z_O|~ly<9(={X*^Wo<)&DN19KoXwp49eh&yv7S=|3;rlM+>g4SXF{DqJ^W2~+Fu4W* zg2aWj8XB=<<=(EHlWG76fq%#Chu&U6Vp)3NNL8h?B>oYYwD_33*HyI@g+AWJ+L=?T zeeV}Q6{7LJ+wCy*wI(>oy&}0JN}|8eqC)6fn2T?!^m>r#OJ32?S^}}Sq*4MI>y^{a z8A=V~FUS{nN^Z$ANft`tsUELF>vk7fDrRfs`rrX5RxMYNbY=OyTtL}gRaA6!14j70rJ@c>r#*k*hcxHy zO9mu01`Uogy-_FR@#KTWRw=)D_T$FMrI)9#J1nR?QV+>}O4+m-x%#*Zfx;O$^rWK- zDPK&ResS?F_KY0>k{bHj_J78X2fpNmChEC2TmprLo&!voGm)_ro_Th1&6 zxbr|}G@}tJ0Bt4Vb8eT)_HBI(^CJgTYHCK=&hdN86^|MGy1#X3CA}r@o64D{duuHh z0v6;)8fWHHEpA4As{x>woYK!;3Ooi_pgK?7^Y`#r17_%>LbBrf4}pC7`2BCa^(Bgv zvLow%XRsZURwNSs^$?S5GIzj2>(Ln2AZ!sFGFAakjxd4hj=oAoUUYE}Dtpa>x znAhBRcZMP8uon)S5-Cq)J&DK%c7Y1kevU6#^D0h}ZSY5n0S%IN{hcY@T_-7DZs^G|#XZKqw8XcX` z{lqEp={yeWa4HGd&V@aj`=tDRhVr6Li5V7XG{uD6;N6l=F}pQ6po_WEC7F9i2kU<& zZVFZZl=}?(7DaP6`RjRs##J`K%~`7O@cJ!IL0dSa)*R?w%PEww&}R^5UL-N(Gv6)B zOSl%*@MD%9$*dmMC5qO3q!ajWMR5P%@wwu5DwZDEoOP=4HC;c6A7Z!uQ`YGc*~G%T ztr|cXx6hXG>YMZ^0pa_(==+6^(Vd?M`gaUYeicr7RfFQ|OjlNvZKY5%2WOf12d|&< z(r}$Ll}_fk_gQ;?tK`PVU!_-%yL_$v`Uu$5F(j(bEq!IKrq4r?gF!3=%5vVmE6$%@ zI$B-0H+6Tn?gy~2@ay_9OqK2<3V*;-y5^j|rmC~?uVmM+3-3D1nFYDV=%D78_r|st zpZprazQ`VPFDhGn`{Dk(YP;c#%6XMDNiir*G*(3BioY%-4E;cs5ic)y<&ZIyI~Uf% zM$t*^UiVK&0AuN~lqY_ewULB$bA#P2H zkc+(667I{r!eDo;@!6@opBoo7_We4;BhVFgZ-{&Oag_LN1}V)WJsu6sgV1n&g^5BY z#^dF46h&^uC&2LfkqC|FC@jm(*A)B}O<^f>iL8Ah%QY+{9pEQg~6%u+~?zi)UWG>n&2Vd4h5J^14gb z58Qp)Z(=C=Q)}e$o4mayk`)a%N}c^uJws1@ViD)bKlsVX z?^Zc;T;XKp$MYAm>rY&Yf7g52pi*hLpM!m6O-9^gsgh4iyAatXIr$>lq$(z1%xE>>`}@;aD{N&wMtKpl<(pZ;8<4)7HbIttsJ z`!&(9%AbGGj`&KnF)WlsekBHlkfA66UOU!^b~hKZHV&@XJHi#fw7bmVSfpSX9NJl3 zwZCeurHi~MOT_Z#wqlqIK%Tee1e0)c;djKpo=W8wiVkTk{c--@UX^?1qh+UY+j`II z^(uMC5Dl7maxM2Efk4cgwfjOcFk>`B-1UO`9?r`s-Lr?3L13cVv9g>5Vfa?eAcD>4 z=Xjfzu0@7<^|TF+I;tYNCjnUGJO`Yx^j}0_mKCLRPl8D#cu#~ z@}LLw?CwX`lL4EuAc2%HqO${qWiTPZBhC)fJ z`dL75-87G-nEqm*Z(3-swcxLXv%UJZN>3!241(Nz)P^Y0W|^o_(CbLEGv52|2+y`N zRxV$SY?kUm-wsA1#f&&3pfr%+)a5+6_PzMS3DJ-*_>jn~J$5cIQ_e8Qf?Bdia^Nvd z5G*(mX~$kAMZ}W8xExv*oI%bNu4WaC6o(OSR_Ndj#%}%SpMwTT&$m<`2Mw%#gWC7a4FAaxVZ{eJ?3tCmiLnL#BwR1Jo#!p< zpk919=YRpRiq~umqrfNwM*o3c&u;F?-4EMM+iI~w*UoL;P7@Hsp~N-MK2i7CF?;8D z`hq-B-VdSMRj&KAEDQd9o!Ronsq%fD*+Ef^yoOCmdumNw_@R$Ng6X zL{1}}JjD?IT@Q?WCLK#%#Oau(XmpR5g*fD_1q5vX-LYtv;s<47vL$8WZNid9{ z3U>sOOskF28klWJHeyfO)5kLb?)Ynk#ka3F(^sDC``lBPPvifRA6vf;+q=z#sN6J% z+KaSQVI14olCQ%d)+kJFASsJx;kj4e>jxCU{v)w)J=yMei%CUa`ihGKZa;r9>FKyv zMgc*}&ML>jCsx1VNW*^=9^;%Ve(K#HN#}g?SIXK@cwmr|g5NubIW^xb(9jv@r8A0( z0OX~~?_1T#r2ocOd2QY|Y3}2l8816Nmm+_`NS7|v@H`~f{&-tt9}9%n*oWWlW1`#| z41$7GKJCM*vgU1XL;)FM@&|iZOXP1AAvV4aJ z5uuAB$VjDSTOw2jJaJ0%cG+Wj-3Co0a;bTvraSrA8wdvr)s)8+@x6H!`=G&%^qI#v zl1LB*X+=MO=4vWwR`KlHPN~{gpVbLG>*n_Iw+}mXR9ZoS78PH9EI8{}UsOzFFiEQb zE^zH4F&mzfc==4y6fKCXeduMX#m4(uwo7SAum7uaNg@5e)co5gQX*LH7*XwbG4Gtt zv9Wg@5;i$=`GZ}BGrRvOO_)vp%$M$kOLP|_kpsEY*u@1})gRcmJvZGyukTM%u?>uY zK*3CW>-uLCLPe+QR=P`T7l4TO9YBRNZMypV+GjtNyW3^&^x#xHTrU0j`{LrpwYjcZ z?>L@<;NpQIjHtCNl6B6_4Jj4Y%$qmUFva??GzOWtEy`%CN^fr|!#GmOA(3|FAC(l| zEF{xp#%w}Cm+2tQ$<#u~2C5w#>bWZMwDS$TLb=P&vtFr-GLh~@~;NO(fT93-~U$3tayE(iAlJhQ`=yDCY05c zPQ-M6o4rNB{h+GFRSypdK}}_WjKk`x)cB45bN6}=3T}6&4`!Cd9{J0C4_Hx}XY4=f zi)O+=5I}Swvf~^haa!YPeqqNtSUHVLNjx*N+DW-ix9_`Yv=*!x$&~S(MO$sx}+jJkAsw7Fer^0c+4Sz6n_2j z^_kPIsYfB2K{8|;Dh`Vy^jxEBi41UX3CVoZj&0`6rc#YR@9vCz`o;M2>zda}nrF{} zSO7m!-t$NG0sHJouSNU=+}ZK%Gh`Pd$w!r)cVds+{`TmzV_U}iOzp(=bC(n?6`Q^o zcya&rE@1Xc@+MFl?gH<%cE)D+z)$H~PK7cype-QTednXAr58Za8n_;J4rsmzg$Qgm zV2(T>I?!Gb3I&TE^M}-1{EYLr_y#=+{5k4L)+@J zKGEH;J$`@p05@xIn#34`BB?4_cM;E(vLRGW4H9RXgD{w3Eel5qN6BQvoINis_Xieq zyesq+$@8hXWY^DGxtx|+;A5+IeUvr|W5PP5Xk&z_Lh%WouLuOe1W}(O#IM4`NP<$cJ5=nM-I3KoRQEaN?D*tioDLLz3Bx9-WPAbl2WZ|fg*Q#EpOajV;Ue^vVB=Fr{M zm)i%NXaG6zh8hQG`SSAXHm&nuEdmIszxF=m!;oLu`%{X%b~~C!=c&CI4Ln5lRbYaV zAX1xfq>1;*(v5`@`L9L5gJo?!XLiJS&#m1hN*e8vxWNh06;Y~p5K2z~?=H@3 z_a$DRDOVFaSX6P6$j3FJdS~2Tgm#HQfpH8pA~4LjH-D}_Gi4Ic6bbs_lY$fu#$iRZ zgpi=V0>fZqa1hQKj?E52g21p~_*5(?2&^#h!gu}q@Tc#S=N`_=L`3s;8qxnzywE~gzkAF$GWLx(mjrp9SyFNtir*3M%t;cg@dJOHIh zUek{l%oxLLwt!w7^g1P33_>`AUP~hzOHo5YjIVQIdG!JyRFt4K+hz zBzC2*#+Cm`MjtSfukoYo!Al@H37DHc-}vYLvuEQq0P$_(v|7e>Qzv{p%vg{B(d?ct z*+`VQni#X#E_IlSLluG790a&cmx^6U_?$-+tP#G z5%&xV&I;MJRY#r-KADp?;IA$Cfm;+J6lI@df0KYMQ(8a7EK?kt6gszMMoZ8Oo~^=Za4^2AEns0mQD z1fa~N_ulARmD|jAd;$i!oBn*ep;&x1f@;sg62bBKD-zcg(-|ugf+xX11-)d}r;HX0 z6^-iWSoLRwsw(837^Gt$hUo*KrCFa8DZ%2SJkV5ih zH#aPYl{=$(=FBQvAxbnaO(vdf>q!Lt)(l6~v8z#>VS@{_i^y;yf7;8n=0_kJay*Cm zfP9izsnin6Z5Jy80|{`2@hDq9j0t*~Mgk*Q!R(vgT+@bce(k(R9(n6>zyQR59v}`lFt6cu_c?U}uF(Rl zcd&}8KO8R*Q-?;yH0~1nsy;H8m0?*T8eVE!K55UNcF+T#Ir#&FeRgGi$6-raR_p=r z0(`!F3aX@gCxq+yT*?Ob-=etU2cx6NF1LO@axk+&ja5Ib;=-{GGd;%N9ZQ^c?Q7d* z0zKEDka7|Wg0i|U;|CAwZ^ueZrk@A2d~ma7xp#;~PdviH`Uilp?z5~|05;Cl?5VAq zHQBUU?f*(;Ir$sd7UK@kTb=Wb%dn8`F3%A_pSN^4A_A_^-L!^iUR#fbJ*|F~VY+xa zW45o*TLP)NB8PvyTYdvmu4F?KIsupR$J8H@8Z)DxvYYURP6aOc&B-w33Y_Ov(l^0H zN(8wZ^*4~5b?1$ z$2EoUwEm+~mY!qv>OWfRI=JQIfE?`~k0-vy>1cYP(AmHBx6Y^0m+se9mAmEiI0Z&A zDxwKSqkUzJ&@ZFnF$L^Uk8|`zM}vmTrA~2bQP2!$FtWWq&$)wiVho+~6V0U9c! z^TjUgFjnSq|9N8whzjWNX|J9|PewZHnTLZK{Cv(zE6--FNE|R@zK!9sLw3Mi(nFxa zzDN)FvHNEyAoS27V0+7}1*xl&eUI;aDJ%hq6K~yG{`%#6z$Z^W?EG3nZrg@GZ+P-n zviX7p*~cN#gi(@FX_8s39NHyvqrj&@QwPa-WuW!BV_^D4oDT0HKE09iP-ymCuo2G{ z!aS|bPIYA{$NPJ*1q35XPZA*4NkZbkugMECND|$aS;$=T%w%xp#g2l+v~3*+mmKUF z!M1AWz9d|BE4%Y?9Mr?8N-UfrjuO}F*oe~gki=n(VXYoYSNty5;;m!b_(Gy(bh%!w z?Zdgi0-u`*ASN!H2o23RcZdn13Fa21hLAzj!-13A8!@KzjXsXO5#!WH07CcQOr!!7 zhy#X*yNv>GKKHc~9I>uUnOWd;^O+_}sO!K<$p8nM5p*-W`L%;nV@!kn- z*Uq6ceXSCAM)w)7X(6w0+vl6ss_*hq^Ycn3j^a;?-UGODpKn({x4*esT~#f<`ocYP z`0d-#K`o4E5D0|k2dbxN;gVN2a&;6;xgO=9+~ffq`;|-P;-bB9iaf3xQnfgXlcnAOg)kyBlpo`6)E(FqKg&@LlX7so(cQu0uB3VE5 z`+>%P0zVHjjDicHsSNmC<}p#C?~qJ&v9YfjQu`Y>!?znYlW#n8Pjfu5e!b=Yx_IO1 zHu7W6>W!#m$A*?fYeT79y(^pce64=knq?@%yQ(iFx_YJ+`MK>O()OfGsZ< zU20W(m!|J4LE%xx0$#zdFDXm8UcIhSv2%ZcDht?D&imSLR9K!W94mQ?a`?-%hKqE9 z0Hj$$S}qIBjy!b&`gaCkB2W;xAY9rlw^Ub0G{R}iUW6VW`&pVIi>$r>e#Sw{^`eo( zg$o>u6XlW}XuDXi(y-&eG{{&EuW5boA#JvpbERi9X27JI3KgT#z>YG9rG7_xpb7{W zP2eAJ4{161?C$fNq71l@=v)|{Mm?fWCkp1ys zih|DDJBsJt%E1Q93fc=#5{QCO6SN>OFHwtVUg((-iI$1ZgMYr98~gkqd~40X3Sd5* zK_kvxV5tRLM6X? zZT=taZlgboTNg$>U6N)eK^e&M@$SbDOYeM&1_;@U8NVh{io6uP_rL4}Z2QN3O&?Z9EI5eU3O%df zHB&6Kbg8cT_-(}E?y!w9@w~oKM8F|_qKy7o+N)=Qzp>Ja_F^u-NlQ=%w2#UuD4yWp zd8Z)CuqWT|#=c@C0QvU543t(PuF&CffejmIc*{&4rUn6q8N>3H*ABbMM*QFiOCZt9 z_OO3Id@(40O@KUx;_`}DL5y20FiS?+<|r=^yn&~vKeJ(B(Oy0Swy!ZY3T(n*(Cp@) z!E7@8%|+o-RHmwxVq7pT=lw(PS6a9rV;lx07KmgDj>PmF@pmMnta6XWfwJj=d>>C5?kou?mw>z7sn=4 zCVn4FQ8ce@nC?EZkCM;!(|Hrn;+3-k_+$KxD^%61TM{JOZJ(_K_NE2&FEjix;eY(A*~SFknLI)`{?jVC18=tplm1(YJo%PBtX6M zY&=i6ac<@bKT(In7{L^u6huAMif>kt=cSWoe7mhBs0*{BcSXerSYJg!ZwE&!vpBWLMsQpce$~uIL1FurYE)`) z_OuV&Tdl1W9wuA%er^#s3HDO6{bT4m$LC6({3>b8M8ValXp!UYRCmuSNBrJf9ZvWz z%xI-A5%T0kWhN96Z$0Q|wAxxG)qIL)ektDjU1a+4OUK273-Mw3c<1+>hIG(DvNx^d z;A7tYGsdZEbdxoDC=sL))bmD>D73dLbbqVK7So#i{;pm>hE zEH8h!4KU6+5z~5SJnO5))is<)ycRN&CV(WTqz`fXG<2=mnOaCC>8nnp3A%Z z&ku_}U6pR^QD0a^KXi%}KcjnfFrzyy?`m#X8iGIKexS02soSQlhc#8$04;v|1G9Bk zQLm)k#>Tys$qMD<;v7gG88%u_3RZaHXBGF@kX;kt1^Ga~9XzDo4GA(9K#>gl#6Sps zBeWz*mbIHq2}^ zn_c;B{x98w*Nb#^@_){!-Oz0!UXuJmV!C6O$BpJPRl0JOSNJQ6=LCQ7<%t2C(4R(Y znhS4`%sY$wflZN+Y&tR$M0=I9U*0ECfYL>}8==7Li*JszcQYX7nP=ZCsU2c^f8r9Bq}&$g92VZyaZVa)^#F`d4)r$cGRdP-(UMUsw~qCqI2iraH7y+Hs1 z`=jL9)hY@s@rW}t;r>k!weTr$a&_P1^94dB8eD_)=ozxC>~4`ror0HS1`nAi`7_Ok ztURM)h$Rto;H>;c$^=%D(Obewi_Q7Z2~;YfATq?<2a{l6@u%yB#cue6gDu*&e_if- z&*GvY@zm~giN=G(Bkp|Sn>oo3Y=N&%XpEGvs_uo{^Z)Yff#czY_Bb&wR^n?C%FlRh z)Wp$J{Y5)H`fqLHVXF&_<#@Ky^Ocr6y*3)n!MJ|3aD{A9Z%wB9&%Jfz_VpPj^|Xd5 z+qa9MykCIY-ufU#=l-RAObA8uGvV@S5Ca1J6gntH)TF; z`kSkrM+6G3`kP4psgi#``KRa8AN3EP&@scaf{+ZP96U^5p2z5lm*Ixca44XHEiyVC z$pqr261rmLrw@!pbn95|lmX+Fj^MS}iHmh>XI>imhJ;2Qf3y>t+HXqfObEi|q0r1D zLgZit+H>U+;*~H>29k~xp?c_|MRi)icmY(R?4#|u=d55RX%czHsbY4B9p1LQ*BMEM zh9P0t;Hcb!WN>E=)w+czS2WX{2ZB)k}FI zWSF0o4nj`1Lxm_TGV6~Kqv53EZ9I7)9g*!(G(tEJgaP7su5lO?9~oxeQBK#9=&Si$ zr1&skx|?6|`hi;gn=-W;v|d=-dluE+^l~9_{ITEM;>Wv-HJ+(*-o?a$U+?OTnn-Vc zIvOc&C+6?u?*eNvL#HuTnWt_c-tkFh#kzJ}nbhrU=u!7HWY_0SmW_4(@$#INhi%l} z`$JHAVpkp`yhJfbcIHE6Zs#J(JVHM#QmMlU%w&6dHr7eep4iOBh;QDRd+VqPY$4z^ zhC!Kt0WTU&bH~Qs4S&mR=5pl}5Jcs+R%jPCdl%Rt5W(@E!^(wPlKGl2#1`+%7#Sqz z(gInlCto(gVIxEyNgdj7PN0~=~wmf{3kJ%&$QR`g1^bLy~1G{o}Sb{tP0Ig$!O z67$+#2571F4SAl<1A}3MRjiBl0%FJ9i#lTXE&&ZO!?q8kOCClTQJgh~);^kNNjdK0 z;&b_ww309lE=VFec=^ zSW3n=#m`@Iv-}z@-&a4gx$*4Lc=@aUsXHkpqPP5RXZ*-c>bpWGd@S=0c(M6q`Gd%( zWx5$g&=33T(Ej|<4fV?Jo8h;I`2Mz(dQv2wBZ${H&b{B)(eWcnfdoKQ&A!yoT1+ZW zGOPL>mt>Dok|iNZvtuyH6CdBZAPUf_6g;0=9l5FxK}fQf8p`j?D57=IUc}GoAcZH; z_zim@pJuA^%1xp$1+9xY73=E5FC?mqtNnpLYYOs=7~{SVL4q{mwet8fr?m3KJ#1=5ny^DMuL_!ZyOs*EAeFp)s~f!T@W9H*6+O7t&fw%Y%#vQMW$yp*3c z)wlZ0LN!^}RnsM)eFO}tXivO^k`}k|$AGqBuag+FPM64QqjuY}OFDPFek4sO2t#% zcsJaZS+@J&ExIp9IJa;@o4Hn-`CS9+n)oyizaAUq3*mrMOOBO|Dp1SkH@XSqWdxgI z=E7%|GIXBysm=H38<}m)01d2+N$0=+0Z{U|g5KHz8I>09wOxo09Ng7Brb=fpTDcW8}%1v4DEM^aHxn^Vn1j0iDXo$zsujE~(2cFRK{!O9md z=@57e4z)hU2IFIS{IMbns_8~Dg&+`Av{a|HS;C&p`{)KwiRx~m>tvbJXkqfZt$eEk zBlh=MpVkdH!Ir!HvHL=8vCYcJi)Z`VzG61T?|tHakKgjc?&9t_OYTgDNmzcWizQuS zzyH^lgxjSoTl+4qY+Y{vgIEPeLyicwqx0zJ^CFO* z3h@kFL5Ot7>vD7gESX%Y?fPZ0M0Gx7!*cV>PKlUu8FeY?KmRyTyJX5$f6!l4H1_PF z-{6fOE5EeH-#dmM4oVaspO&dG9)N&?>>X%FTWjO)4u>$FIh&2q2!fpf%XeLJC9i z<(Ca_!$)@(7w2|d9}^g+?AC?uBuk~0_B zF;A%F?%~!9Sa(?gUq4A3Yaq5mG9mzvY)3PUY_=>Tx6%^k^kgAK3@r@wQo5o=k|IWh zr(%`34+({k4o@@HvS8z>-QSr7A>4bZou4YTS>YP-OCp&{V^;(_EVzBmss%8?A!0xS zm4E6?2sAdqp6+-PiKt*sjunOrP@|t)8$0JY{#9(CFI5(9{Fs9!Tl$9O@9zuk54LXo z_P;UyiKTA*r7Gi0uT+ejdKGE}X`J;vuLo~@zrDY>pfM+KGA1*_)z))(?VtORxr7vS zAAj`Xp^|tkXpe*db=q)?kp)FXVkzjtntCfnGE5?|;Rfc|>*)N9^|KelrY@g(I2E8R z_yn#a9zF0V?|AzA1UrRZt{^57IIw_fBoY~6HdqbK#f$g&u@v-!;J#Qp5#(nUxnye( zs6#qajl$8K)+gn&H(tz4R6Ka2vB<#F+nT72l|{^!a?S&^3PQ*UTdJ9n;K)eT zZrGTgSo;4x!nZ*O;ibZ!(8fT*~CpI zSzyb!trqM8-m^!nS8~**L?+MHP8iSOJ0p%PFYF^!V6|$&kByNCE&-v>O=Hy$-~u2NRFn#T z#acN3ElE&AKK^$o7%&(DZ_`h4_{JIKw1ag)~k`^9G|$Z}+htbE!68%se9tLL+O5 z@PCyVw#HA<$LK$qScN62;{1*{p(FZ>@sVW)>f#V_#(vg6D{zGN9qUVwY{}a>;tmLKHRr0^U3HjRuKM4~%Yi?~ z#{M!tb@ux2nfwJnyO{)degbCwS?X6T>enF+;hb3bi7t2oCsOz=qq6I!xKw?I_u{Fc zt?Kcqjv(@I>^~Rbo=3rr3-`7s?dyb~3=$!@&8^7JhZQUg$Cuxg@o*cWd_~RPW3<)i z1J^-=(}W>)w_(i@4+=@vlUUUgltp!Mm`vD^4UIxiX(oE6Y(qc-nvlrg3L|IwFBs?v$NmtbL1Vpup_uiV4bgsiWN9-H*2!O9}rUjX0#&X|Y@rbMac~ zjsF;Osy1}6agX^^wo2lRvhXP^+@=LeAmn0{-49 zmm<%O8Uv@ikecp9S@pCSD&ER*=VDT+$U7LFUHEp4+O=thpw3ne>xOd}xf1_I2Z8AX=1t9&6agk&K zl+gCaO+@6TuAJWzb9C9B*=Z^ed5I$%?qS4#CJwH1S_3mfdZkv!C4R~!62#K6+Sps} z86LIqt!D6zh)HvVi1k&PJP``XK7v!e!wk;4h`19>f^j4_Xai&R;-av^4oPjOrz8@p z!(Qwn-eQ|3#>KR;yq z!_pgjNDmx3^B`eBl>u!W2?`2IHy06+(+vVSiXiQ(jB#0VZ@6Zx6@((-MvPZ!`m?9c zLo{eOf%rFX`s=3fvCi#g;+vtZ5f^fCF$rmgTww5=s&al$n!c2gc5q<92f-pL%#K|Y z(g5m|42_IyhlZS7NlgQwb9&-72pm;YTJt994G^^EA?a`=wTlBKN|lvR{7`#iBq{&G zf5RmH*k5k{c+s?1Zi!|9XHV@sG>n`LNSjqihNx=A<*&m^h?31T5tY)QsGO>cq@)qn zZoT@_9oZnQeEfW?4unWBiIyiGRKOG8j9erdbfkYJg}p|<@so>i4zK^;)Xw;c0n4)B)hNFy1-`Li&gyxE@VGpH`Mxf)T4 zHv8Cf3itE6c0$NgDM=^4tbG08@+j7E}$StWAQAI&W=*z zWvEDY7RrMto)jw!1&fNrUGhf+gDE0PpdSuG-jUC*eLIVIAd4-V(wFnw;bp>zMxnJK zM1fceys*_MtV**7BM7pgT4sHI%`ODCgZuJ=AlbC<15Be(&(!dQM3-f`NMOz!C8P2n z2UjVT5i8FSK$5RgPMXWcB;5*;U=9=z4yKh2^m||5zl)kPcyZ<*z2*}}Z;k$QXws?3 z8oRG-DGu2te5Vsj#hK6sp+nG*erXMk`73)Y%1mu_=RYP#mboE>Kj6Vwkhi@ zJ14T$X<3eJGvPokBCPn{(}f7c8{O;%0`D+eI@iOD zQ>K`a2=oiD(A_#8wd?=?2fwM+bL59{7aR_PGHc=?%mSj~5M6>$2NP5XNo1>Sxm=`f z{7wYNVNC;-$nZL{raFE%22ynm>aM)#J7*&hTO)ze!&Q z;XyU6L7?0=4tqF1yxtImls&B3K)|Zb`6vsQ8nQJSbt?I=mA3m^#qC6a@@Dy<_`#p7 zNJJ2sASS7+HA%NkE7oDK zvJdBg_=u~``qF?lp_>+81UnZ?;~{{PQXV5(Y(;oyBb(9KpRYLB?F37_Ky?ZxFsAG& zet2H-z5B{NYxd| zr?|$r4}qkXghE`)YI;EeutTD``c^wD4o}R@%{@mmOc5^k2PsvjmsNV$=14{|Dn=gi zLU4imRYp2PDtUtKR1AJ3pEY%9Gu&@KUiV~f)F@?9`A8VxdCL!#pX#sxbY62X>eNV^ z_hoojXqY|TL-G}R-M^jvNLvarjP9fe1XA4xVUj&uPq!t?^v81G_5L4XhWr0Dj^6+0 zkT6Mq9(}|?ap}F-+$@ySMSDiP@pGvn6zaS7)4sqRztkqb&FJK#`kCA%>s|r5t&bV_ zaUm|f!;r&X2`7s@)nrjZxou?xKW|+~mjLe~(3&K`3+cXu+y~Rq*w}MDWoR%cM5@9_YTU8R7Lko8AA!4hsS6uIRlaG1*#k_Kr@cp_KZ(i=c4xp~Roq zw&=Y1u^x^&OB5U6%v0@1-wOdKdQovh5r{iP5xyL=5Rhg$<{&9>- zb^q&dUaCDL>Kco%Ju=1IZd?u1$~r0w2QmG|ReSGbbkwr3TfVTFHcQ@$!BfzC46^mr zGhB|)_}=pe5l8-0CFUJogp%+Z^zlA5^y}6I89dcK7J-8X6T~%0EPswfDRF4?vg*9X zANK}=-wxIUAl(yK7%;aPn(mKu@=OHknyCeFsK?42%eMQSWlK6y{vUiW`Urqa`LBPu zNh0>STb|PS@b+zu+dDmpOAjmk=fCW*T~QXcLFbS`0{EJRL{rah<=b0z%KBe3FGS%^ zvL^-%>vfko!3(qL0@M?dY!XyA8)7vQ8gJy$hXLn=7#JB~)I)K%+>TWg(x9Nxkmf`B zF{7v;LgA^?on_AOE>Hfaj8_zT1kNuwFDX5bgT<=zHoAxalrO1DQE%Trxo7!$GcE4F zVvYVEvA$PLEKdp3zo0f7>mYII%zKmGhvPC$wSI$%42cWsx#e}IVXfvq)_o!Gr1bmM zDXdTX0zS5IA0ylL7X>Y##fSySBt6wWk_ zudnCvbU_f)+9598-PH5=j!3(U8X2!S@w?}Rc|Z9dLP*BcDReK)XD^>)H&X+MJ>+y> zYJLfE7gKv%pXRO+j*EJ zOjsn3kLef!8cd~wPM1-bELVkFjF6@PrBoog+tto#BqvZQ;l^Ph0A>kd zz7Y3#5iXc)9ata~%qfQB3#FjF(t4v-^_ zg`#2>5D=M)i_HELr*`hq$Ex*J^4u4fp+iT#E~qWea~7|(CB_)l=6H4H`V@n8qh1rU zU59}Xmj6gO^E9KzwPNr(7i@3_Xb_eP6b+?Fc28Uu2f8%gX+Cwp%%el%Mc5ZO1It{k zGsAuy8I64HS1uPuJ0g7n?v@$O?05O8LuXE49u17^s56xS>SdCr!oTNKzal412zTaZ zf3OPZj@w!>8);m>px=KxZ0YI0g3kr-wu!0RT=^%!YLVf>IMA;~QM@m1bS*Fz^NJSm zA!kl2?a=ja}M(-N-#gPJxfz2pSVYPhB$edA~)?Fg@|FV>~}=)N&^HpL5$B z)5{a*E>T?_GHqClKK>`FytTnOwb+SXu`EQf?b#;hxDHc74h6ee-fmI4^qP(s$xd&` za>&p)BqU{gmx&%IZI;P$LgAbZ0nCA+yGX|j$Mp?&%gWNem5Lxa%wpr_wgIP_ob<9$XG~Gtkl4A=x$}!ry-T+*&AVmlwz7#1 zxTy2Ku{~C`OI<$0!}|qQ^Y@!`FtT)(YN#hDe^u3M-}rejPdZ=GoA>3Q;Cby#WtX0WsBjKx#;{htF9J*gF%_@{>KpXNvF?y8yjZ*G0sY5nvkdD5xs zin~JQ$Lj#Os*#@8CHdcACg2QH^Zy=(9GNTqyZ4@3%EZ?6cv{>-SzKcI!{Ul_YG+{d zcRa&{m9O90?}+zlwA!NXAzyWyseW8oRp(2Ai@vqm>)l^_$nmFGzrpg^$kTT&RVo%G@4s&ORPew0Oy^1( zJP?YBR%r4;T~llX3bxtLLB$ zXXU3OWquH+wdcxpk)k;Ni&3cdl#fS3Z6% z=dZBj{!t^-<*xhVBN`jR`RPB`zxA8U75l87NmujdF?oDJn`?ejrJJq2|C%~~#7;5U z>*6PcA3eJxReZe?@5Iy@zvPq6p$4m_HUv(dE{=f3B{2j_Z>i0ZPg%(?dBx4C#BKsO8 zk!_R=Da&JTrZxNdzp8ApnSl-m|qZA zo_F_qLDS^?S~OeMR{9;1#8{1B^td#8v6mDoY~5nP(j2SDT;mF_^A5DVR-6U}YEr6; zvlzO+n9~oZHkrDatD~%;W=*vI_5*VGHHe)y`*a@G59_y zJ+q$~fUe}wQ`ucsTjU_j|~7Yrls<*nfWfye`&N{Rk?ai2Kd3*=7U@!cI8|0!KT;nFSFD@OFYX7;|t zsGWs3e%5+fcfd`xOReq0Tv|NZmkFi!CB}wQMwQ2|nK9jkjj-JPHU0LCh83cOEMU0B z%)EF^O;1`rsCf2{*Hh}#)6XW1|5PZNhHZ*%DVP#`01+!0xC!_v7tpotsw_8 z$#%!~{w$b?BGZk9K>oftJ#@^rvtXt>w(%RL^+%6Wwb$zIdTsN@6I%ivL?Wm_9uUBu zMVLTDAyl5<90Xm33h&NkTeisP?-Ld*SwP&su6Zcxg)@gj^+;Z;KW017M&gOKtnIurR|*f4UzKDD%GrewL%{EljDW3~nY(VoW;e8koO$-m7_x>41L^ zr<1= z*OuIiFU)`!Ev?DMDs%#H{!j7A1cksAAOT?FKhgNY-;F2EIBqp} zW1}nb78F48*Qr>|y`tK@aIE@V@<95X`95=o-AFlxDCMNa2}|C9NWFMgJo}%ST(!4< zkGw@N?%AR{pUqfyC6{lUhZ-k}{O1ZWYY3>jho5TNa@ivW; z;LpVroyXlpiCq)jctTDW{tW3*#a2gzf|RPtsWoFOPa7R_vV$M8OozB(U)p2Ke0ydz z;U$>_6YBC9Sm>5)H^RtUEsoxA#{;G;Zpnw$my%Qcf|;Z5SS3J7sZ%XBuLHO(Su-YC z!lk5&;9JHwMs@12t@sT30#FKNbxLa-u9)aK2@^!~B;zPKfl{fnLB2a{3J#2C5%&`- z+@YQ36R~M^I--~LDJjMoD9#`)I|;1_cD=t36o2YSzMk(qyK`96@K}*&CD6Re8#R#_ z6yA_E1%6Z_bSj#{beahZDmwQezN(#|8)Hf z#mt5jrppm;d&huE4jDre;C8)ULOsXVJy8U})T|dUAT2*6z&E{q4)1ChkhXr;`f;ID zxNhJIR+}TW)M#qYqC9*tqr+w|t1!LDeCr{Ddux5=qL~5S!uDDhen)?Pbf4-q8@3~h zFDUUGuGx?3Bg=uf8rFzrDz2QyAT0I$>|qS+(o@F>#+GAjUka9%d<-?m!ua@E_z7MU zTFlHBeTN|y`>DkNCTNRWlF5MZ*uZCX4nbl?vb{3L`$mB3MAGguP^=-d(?4L?bL^sC z$g2=74tQm1fJ{hzy+YAP)1hA*3sH93R2no}ergwI6TXnahu+d|yU!SCEq+Swgo*|7 zCr|rt@gm`9ZSl|pcM8!zM2Bc0)hAl&nCs|DsP3x0H(g4+d z>lU-B$zj%n&>NxUjrR#EYD268UBO^F-9@5|g7UVe&UJAF$KD zMcKXoE(wdHjD8)-{5g>40_G!seP=JQ>( zM4EMuKeSKUjWuE`+Z=1BrVOHPhtjDuImb|1e#IVVtRn7&IFA~?6IWj&b zgK$a#DnYU(ESw`3Ih<~1Zyf|=w5zmT1@ETliP+m(q3kCEo>l^@{JvLqtVwf;zG#W} za1V7W`lSX?aK7+xMRCf3UG$_!JuD)}p;=9a3!T{7E$L`$jd!h+Fg;)VivR#LuMgzU zZX$FxpNP8XqCM%mdbe}K0$ao1AmgGDcM!G)oOMuc9v%+G=zH?Bv1j)gvUoL8*f}DD_T@k zg)26W78azKkCe+f+jrN}0$YAohKda~l>ZLqiCQbF*3;|!UBxg5Wp~; zkUo{@$styZYVcM)9=N%slGX1y@S(gQH_3;&Jj1s8Yla!&0D$*xV<~4-(JZl0dczR8 z0FhR&s_V+JB2H+vSZ@8llSO!45)`8aT-roV?=ztD*P&em$Bj3#KGqs#Swzi>$@uuD zCS`oHo`|AfKY3%P);GvzawmB{adULV!x)|V)Y?WIWIAH0#^=x{^FWLhF~b{sf85>s zczvotYqaJmO{IP9s|B3IT7>3?q7sd@Ps=wT$^Z~+_ag{WM3P5sr|MJZ<(~g%%XG~_ zcD+v;G@IGzi+hgJQ)jd^XEiXnmhx+jA5*R6%-WP(M+&P$GGX$HFr*h5IzSN8=Z+I= zAm+^5?FijQfG)7u83M(O9>nut$un~MT>aPU3})*3tUl<$SSyjURViLzjE|a%Pi6^* z71R2t{mUJsF}*NKs~&q+6ub7hRLwYUBq}xarIAif^a_x)kRJ-aF#on@-b?pVHz|Kf zdvm+{VMqR(ZC-}@xb(@U`m!uwkolxah-SPdLm7b0ju}ve(2KC-tvSF{xm-uulD5Li@#3Wm(+1^AJ*QA3PF*8- zygld|1gg+qg+qqmv>UhjEW&2F_8w1-R~ViXRde$5hXnBkK{46n)GyUVt79Fj*+s)I zpGZNRU%#DvNT|3*{bi`P^A1iOQaKr3@<+AcHHaTJe$!^rHHVVgWo7}0w5H#`KpqH= z$jJ`F5_%V1gy*xO3i6E|d@VC(;LY%#s|tg?L7i86YqPF;F`v4V{^oO%82euF8hS z<+4Woni0nFYym3(tpdsCqwH>AYI5KVABy1*rK$%(kfJBOnDXGNUR2I=N@(M}&dF(!hKa?Z zZY~{@$21xaWnBSiWI}DGcDwr%6$rlYI)|oSubGK=FQz}=)BJ!q?wp*WZW?^uH(bP4 z-n_51@awW2=ytauJIFq%bGF}IMKH-IAn{0D0PrCONx6JV-5=aDDz|6uAh~BRT zBD%Mb+n~VpiyZH!II;CRlsy1s^Xp5EXk_<=eItNjmk`T~%7p3C^+OTfiYsAs=&-diiWL7wv+WvH7qM%(xslT;i z-mrXbWFqdWECFmZo1agpNfw~R02~_Vr)Tey^7Q*nEjduyD4zJ!8OLASWp;I@t9;(} z!oz%XBCSB@os|Op{4+*0%4@SKKYppDVHICOW?wmu9*S!-2Ja2R#FIZPa zSDEV;3>mBo^GbV5@xOs+<9--@`<;P)f~X-+iSrpzE0(z}VaiJdlC=-(9UO=C4m-i1 z;#N6&{zYYFR6q2rP$-8b!AnK!DV?sz{EXgnaPu*H)@UW9otmngs*Mcg&IJ}YqO=1V zbIRzX{H)B(u5TnSt8RZjTK3Q7ajCtv+0_k#pZ$7W3ANXC74)+dy7xVQb+^O}b5m1W zk<_VEe=VQt6c%Mvu|6l+8N&WqlXuHG%q=iXyX{f5nKDni00OaTOMj(~w$D#dP#*Z; zvi8B_RScphO*#HJ4_}EsH<>#>yCRtLEynpmDaK6OW%58-@*GEwopAXQ!lpvH{kbexsu&i z>+D!{reP4Ts3dK?1B;h*YV1|KJ1`O(RIl!vV33(DFXa;;Zc}S8bnc^dYI}dW+i;BJibXjHc zogdMDT=hSb*M~14165Gb_QleV6DlVcjW!1eve@*?&-IBHZsB+?*5PEgwmy46N*Wz{ z76jW}O89iNgs(NzIub#<+qC&vz~$!M;Rij-$nNf-T)Q4q&iRW<$JY%ilm3l;es<>V z*w)T(Wm>Q5!_3838p;4IwdaYEZfmw1E`5r}IYc`iwm&50*OxmdForny`TN(D>G)Sr zXYKy~V;LUQ%s{i~D{b#AC-nDsDYJLdm^!M;p!Dj-3GKx@&$pJ< z%Mb1EDorFwrV}f6cQqeYo>hjX`q9f(0vC|blLqBP!w%o2% zjHf3HGo6R#!9Rs{WtrwK8(3O~1|{E%{Kx6y*G0<;zq=S@jPVs=e@fL$N{T91Ri9-g z`7K181sKnK#Kh)Ax~+?ZAF#NV^7qE!Qa!88#&i1fgn1Mq4uOkDpweH@+%z!g6G9A@ zomtJg$P>eDg)Jz()iyy&jLKXjQEMl+$CH@5zI&dkSs%4!>*`M9xRozfeL9Uh$2Kiv zGKOMTZS1&Alzi3|mmP;M;}vXgpk6b%zL`X$i47-1CAn_bnBGDlGvj6wW>Q)aEmwv* z?FbEzOjKvDr*5AbHWicP6zkXI=E0>%ZCY2$P8na0p`J)B^*jT)U!ikeD16gfn)~`Y5C`(t0 z;l@wk_0PDS5arS2i4|F`MsI=gZlAH|JezdtGv46a#CQ&pFfnnbh0^ppy@E+}e2fk| z?{Y=Z`H{5h7k>e^BBd+Yp~^4B{8PHHyq*TmWio-An5;gqw@+mkuHp|pOOM4o^I+G&DJ^2 zDb{8NY`Y@IU>zI}0XwrS^_|dIt>>B06Q;0c3smeUkFNL4)d z(dupP%cc7B7U%k33F~=jbTO{|%Ox}^)eS5EvUQJUC)vQ1%N2gPrkl$rELdEZpsY-* zWmn4Zq;R`NIJpPP&k|$qUiG7YspKKnn(jxmV-37VE6z=^D$R1pPRZT8&P_8dv@1;e4bMwE!Oq-X z-nmIMOc3o5D0mT2HuK@{du_b}hdry(=Z8gJ2QeunQa04Y7^F(c=AsiHNoJd#j$J8! z%Z0rJx%l&+_U=ZQG0G$Ep{axU?XqQSOko_}>+VyoBu(6<{;kh$5u+E^qx^op(#XJ} zpD+Z-SwwS9^ks#;uT9?K$3>ktzk=Xub3&Q6(V0na6?ey*D0bwyj`hX7;;!ri{xqLq2lPeOFHTMEC_$z7B~D&05EW(|1j zMbdl!inUI3`l=~(vM^cW0C^N2;i})!X~GcI0i|O(Tv1=14(*hA&eQ5d-EFY&ljf~< z$|WP=9U;FTlgj{Mcf_Rt^>0G<-_}N`~zG>(P0zLb08}j!9Q)^95*vy z7|&Vm$i?1>Vthgpv0h!_C2!IM6Dtiq7!VXWsmB#34g@`Q?#P&Al?Nf8D9n>B1sF{f zCzX8yPk685mB#*bs>SaOI4n4iIkMt(uU<%3#aAb|qBB>7M$IMyoQiH2nVrv^us2xn z;(Wwe^3!(OFb)N9AABV+E9yA8>6v|kfIuC1qtGJ=^t)OEZ@}t=I&o?}@tFCNqJmpt zXzW}+MR5DdTE})NPx9dNRcMe}M&}O~i>MI2`eiOTA)yxvedglm`QG^_!6R)81djy?0X&yqUxKLu9zm0xJ; Date: Wed, 13 Jan 2016 10:06:47 +0200 Subject: [PATCH 28/47] Added blog post about ways of approaching log parsing with fluentd --- _posts/2016-01-18-Fluentd-log-parsing | 220 ++++++++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100644 _posts/2016-01-18-Fluentd-log-parsing diff --git a/_posts/2016-01-18-Fluentd-log-parsing b/_posts/2016-01-18-Fluentd-log-parsing new file mode 100644 index 0000000..d3c7428 --- /dev/null +++ b/_posts/2016-01-18-Fluentd-log-parsing @@ -0,0 +1,220 @@ +--- +title: Fluentd log parsing +subtite: Approaches to log parsing +description: Description of a couple of approaches to designing your fluentd configuration. +category: howto +tags: [fluentd, logs] +author: Doru Mihai +author_email: doru.mihai@haufe-lexware.com +--- + +# Approaches to log parsing + +When you will start to deploy your log shippers to more and more systems you will encounter the issue of adapting your solution to be able to parse whatever log format and source each system is using. Luckily, fluentd has a lot of plugins and you can approach a problem of parsing a log file in different ways. + + +The main reason you may want to parse a log file and not just pass along the contents is that when you have multi-line log messages that you would want to transfer as a single element rather than split up in an incoherent sequence. + + +Another reason would be log files that contain multiple log formats that you would want to parse into a common data structure for easy processing. +Below I will enumerate a couple of strategies that can be applied for parsing logs. + +And last but not least, there is the case that you have multiple log sources (perhaps each using a different technology) and you want to parse them and aggregate all information to a common data structure for coherent analysis and visualization of the data. + +## One Regex to rule them all +The simplest approach is to just parse all messages using the common denominator. This will lead to a very black-box type approach to your messages deferring any parsing efforts to a later time or to another component further downstream. + + +In the case of a typical log file a configuration can be something like this (but not necessarily): + + ~~~xml + + type tail + path /var/log/test.log + read_from_head true + tag test.unprocessed + format multiline + format_firstline /\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2},\d{3}/ + #we go with the most generic pattern where we know a message will have + #a timestamp in front of it, the rest is just stored in the field 'message' + format1 /(?