From a5a4427b505a5b0d79bb394093c9d6f6395d9a1f Mon Sep 17 00:00:00 2001
From: Dinh Danh Le
Date: Wed, 22 Aug 2018 12:41:50 +0100
Subject: [PATCH] Add docs for tools package & update main apex-pdp
Change-Id: I2990157eb7bae51f7d38a652fd8dd488b7287cea
Signed-off-by: Dinh Danh Le
Issue-ID: POLICY-867
---
packages/apex-pdp-docker/pom.xml | 2 +-
pom.xml | 38 +-
src/site-docs/adoc/guides/compass/rocket-panda.css | 710 +++++++++++++++++++++
src/site/xdoc/index.xml | 569 +++++++++--------
tools/model-generator/pom.xml | 19 +-
tools/model-generator/src/site/css/site.css | 100 +++
tools/model-generator/src/site/images/logos.png | Bin 0 -> 162383 bytes
tools/model-generator/src/site/site.xml | 27 +
tools/pom.xml | 17 +
tools/simple-wsclient/pom.xml | 20 +
.../src/site-docs/adoc/fragments/clients.adoc | 22 +
.../src/site-docs/adoc/fragments/run-console.adoc | 77 +++
.../src/site-docs/adoc/fragments/run-echo.adoc | 79 +++
.../simple-wsclient/src/site/asciidoc/clients.adoc | 14 +
.../src/site/asciidoc/run-console.adoc | 14 +
.../src/site/asciidoc/run-echo.adoc | 14 +
tools/simple-wsclient/src/site/css/site.css | 100 +++
tools/simple-wsclient/src/site/images/logos.png | Bin 0 -> 162383 bytes
tools/simple-wsclient/src/site/site.xml | 31 +
tools/src/site/css/site.css | 100 +++
tools/src/site/images/logos.png | Bin 0 -> 162383 bytes
tools/src/site/site.xml | 27 +
tools/tools-common/pom.xml | 20 +
.../adoc/fragments/example-cli-version.adoc | 50 ++
.../src/site-docs/adoc/fragments/example-cli.adoc | 125 ++++
.../src/site/asciidoc/example-cli-version.adoc | 14 +
.../src/site/asciidoc/example-cli.adoc | 14 +
tools/tools-common/src/site/css/site.css | 100 +++
tools/tools-common/src/site/images/logos.png | Bin 0 -> 162383 bytes
tools/tools-common/src/site/site.xml | 30 +
30 files changed, 2062 insertions(+), 271 deletions(-)
create mode 100644 src/site-docs/adoc/guides/compass/rocket-panda.css
create mode 100644 tools/model-generator/src/site/css/site.css
create mode 100644 tools/model-generator/src/site/images/logos.png
create mode 100644 tools/model-generator/src/site/site.xml
create mode 100644 tools/simple-wsclient/src/site-docs/adoc/fragments/clients.adoc
create mode 100644 tools/simple-wsclient/src/site-docs/adoc/fragments/run-console.adoc
create mode 100644 tools/simple-wsclient/src/site-docs/adoc/fragments/run-echo.adoc
create mode 100644 tools/simple-wsclient/src/site/asciidoc/clients.adoc
create mode 100644 tools/simple-wsclient/src/site/asciidoc/run-console.adoc
create mode 100644 tools/simple-wsclient/src/site/asciidoc/run-echo.adoc
create mode 100644 tools/simple-wsclient/src/site/css/site.css
create mode 100644 tools/simple-wsclient/src/site/images/logos.png
create mode 100644 tools/simple-wsclient/src/site/site.xml
create mode 100644 tools/src/site/css/site.css
create mode 100644 tools/src/site/images/logos.png
create mode 100644 tools/src/site/site.xml
create mode 100644 tools/tools-common/src/site-docs/adoc/fragments/example-cli-version.adoc
create mode 100644 tools/tools-common/src/site-docs/adoc/fragments/example-cli.adoc
create mode 100644 tools/tools-common/src/site/asciidoc/example-cli-version.adoc
create mode 100644 tools/tools-common/src/site/asciidoc/example-cli.adoc
create mode 100644 tools/tools-common/src/site/css/site.css
create mode 100644 tools/tools-common/src/site/images/logos.png
create mode 100644 tools/tools-common/src/site/site.xml
diff --git a/packages/apex-pdp-docker/pom.xml b/packages/apex-pdp-docker/pom.xml
index 75a875794..5bc27cb61 100644
--- a/packages/apex-pdp-docker/pom.xml
+++ b/packages/apex-pdp-docker/pom.xml
@@ -117,7 +117,7 @@
${project.artifactId}-site
- ${apex.adsite.prefix}/modules/${project.artifactId}/
+ ${apex.adsite.prefix}/modules/${project.parent.artifactId}/${project.artifactId}/
diff --git a/pom.xml b/pom.xml
index 0db204f8b..3a34680af 100644
--- a/pom.xml
+++ b/pom.xml
@@ -186,6 +186,7 @@
${project.basedir}/examples/examples-pcvs/src
${project.basedir}/examples/examples-periodic/src
${project.basedir}/examples/examples-onap-vcpe/src
+ ${project.basedir}/examples/examples-servlet/src
${project.basedir}/plugins/plugins-event/plugins-event-protocol/src
${project.basedir}/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src
@@ -200,7 +201,7 @@
${project.basedir}/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src
${project.basedir}/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src
${project.basedir}/plugins/plugins-context/src
- ${project.basedir}/plugins/plugins-context/context-schema/context-schema-avro/src
+ ${project.basedir}/plugins/plugins-context/plugins-context-schema/plugins-context-schema-avro/src
${project.basedir}/plugins/plugins-executor/src
${project.basedir}/plugins/plugins-executor/plugins-executor-java/src
${project.basedir}/plugins/plugins-executor/plugins-executor-javascript/src
@@ -424,7 +425,7 @@
- ${project.basedir}/examples/myfirstpolicy/src/site-docs/adoc/resources/images
+ ${project.basedir}/examples/examples-myfirstpolicy/src/site-docs/adoc/resources/images
**/*.jpg
**/*.png
@@ -560,6 +561,7 @@
${project.basedir}/examples/examples-pcvs/src
${project.basedir}/examples/examples-periodic/src
${project.basedir}/examples/examples-onap-vcpe/src
+ ${project.basedir}/examples/examples-servlet/src
${project.basedir}/plugins/plugins-event/plugins-event-protocol/src
${project.basedir}/plugins/plugins-event/plugins-event-protocol/plugins-event-protocol-jms/src
@@ -573,7 +575,7 @@
${project.basedir}/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src
${project.basedir}/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src
${project.basedir}/plugins/plugins-context/src
- ${project.basedir}/plugins/plugins-context/context-schema/context-schema-avro/src
+ ${project.basedir}/plugins/plugins-context/plugins-context-schema/plugins-context-schema-avro/src
${project.basedir}/plugins/plugins-executor/src
${project.basedir}/plugins/plugins-executor/plugins-executor-java/src
${project.basedir}/plugins/plugins-executor/plugins-executor-javascript/src
@@ -595,7 +597,7 @@
src/site-docs/adoc/resources
- ${project.basedir}/examples/myfirstpolicy/src/site-docs/adoc/resources
+ ${project.basedir}/examples/examples-myfirstpolicy/src/site-docs/adoc/resources
@@ -617,6 +619,34 @@
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 3.0.2
+
+
+ copy-site-css
+ generate-sources
+
+ copy-resources
+
+
+
+
+ ${project.basedir}/src/site-docs/adoc/guides
+
+ **/*.css
+
+
+
+ ${project.basedir}/target/generated-docs/pdf/styles
+ true
+
+
+
+
+
diff --git a/src/site-docs/adoc/guides/compass/rocket-panda.css b/src/site-docs/adoc/guides/compass/rocket-panda.css
new file mode 100644
index 000000000..c0e070ec5
--- /dev/null
+++ b/src/site-docs/adoc/guides/compass/rocket-panda.css
@@ -0,0 +1,710 @@
+@import url(http://red-hat-overpass-fonts.s3.amazonaws.com/overpass.css);
+/*! normalize.css v2.1.2 | MIT License | git.io/normalize */
+/* ========================================================================== HTML5 display definitions ========================================================================== */
+/** Correct `block` display not defined in IE 8/9. */
+@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css);
+article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; }
+
+/** Correct `inline-block` display not defined in IE 8/9. */
+audio, canvas, video { display: inline-block; }
+
+/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
+audio:not([controls]) { display: none; height: 0; }
+
+/** Address `[hidden]` styling not present in IE 8/9. Hide the `template` element in IE, Safari, and Firefox < 22. */
+[hidden], template { display: none; }
+
+script { display: none !important; }
+
+/* ========================================================================== Base ========================================================================== */
+/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
+html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
+
+/** Remove default margin. */
+body { margin: 0; }
+
+/* ========================================================================== Links ========================================================================== */
+/** Remove the gray background color from active links in IE 10. */
+a { background: transparent; }
+
+/** Address `outline` inconsistency between Chrome and other browsers. */
+a:focus { outline: thin dotted; }
+
+/** Improve readability when focused and also mouse hovered in all browsers. */
+a:active, a:hover { outline: 0; }
+
+/* ========================================================================== Typography ========================================================================== */
+/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari 5, and Chrome. */
+h1 { font-size: 2em; margin: 0.67em 0; }
+
+/** Address styling not present in IE 8/9, Safari 5, and Chrome. */
+abbr[title] { border-bottom: 1px dotted; }
+
+/** Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. */
+b, strong { font-weight: bold; }
+
+/** Address styling not present in Safari 5 and Chrome. */
+dfn { font-style: italic; }
+
+/** Address differences between Firefox and other browsers. */
+hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; }
+
+/** Address styling not present in IE 8/9. */
+mark { background: #ff0; color: #000; }
+
+/** Correct font family set oddly in Safari 5 and Chrome. */
+code, kbd, pre, samp { font-family: monospace, serif; font-size: 1em; }
+
+/** Improve readability of pre-formatted text in all browsers. */
+pre { white-space: pre-wrap; }
+
+/** Set consistent quote types. */
+q { quotes: "\201C" "\201D" "\2018" "\2019"; }
+
+/** Address inconsistent and variable font size in all browsers. */
+small { font-size: 80%; }
+
+/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
+sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
+
+sup { top: -0.5em; }
+
+sub { bottom: -0.25em; }
+
+/* ========================================================================== Embedded content ========================================================================== */
+/** Remove border when inside `a` element in IE 8/9. */
+img { border: 0; }
+
+/** Correct overflow displayed oddly in IE 9. */
+svg:not(:root) { overflow: hidden; }
+
+/* ========================================================================== Figures ========================================================================== */
+/** Address margin not present in IE 8/9 and Safari 5. */
+figure { margin: 0; }
+
+/* ========================================================================== Forms ========================================================================== */
+/** Define consistent border, margin, and padding. */
+fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
+
+/** 1. Correct `color` not being inherited in IE 8/9. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
+legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
+
+/** 1. Correct font family not being inherited in all browsers. 2. Correct font size not being inherited in all browsers. 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. */
+button, input, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 2 */ margin: 0; /* 3 */ }
+
+/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
+button, input { line-height: normal; }
+
+/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. Correct `select` style inheritance in Firefox 4+ and Opera. */
+button, select { text-transform: none; }
+
+/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
+button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
+
+/** Re-set default cursor for disabled elements. */
+button[disabled], html input[disabled] { cursor: default; }
+
+/** 1. Address box sizing set to `content-box` in IE 8/9. 2. Remove excess padding in IE 8/9. */
+input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
+
+/** 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome (include `-moz` to future-proof). */
+input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; }
+
+/** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */
+input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
+
+/** Remove inner padding and border in Firefox 4+. */
+button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
+
+/** 1. Remove default vertical scrollbar in IE 8/9. 2. Improve readability and alignment in all browsers. */
+textarea { overflow: auto; /* 1 */ vertical-align: top; /* 2 */ }
+
+/* ========================================================================== Tables ========================================================================== */
+/** Remove most spacing between table cells. */
+table { border-collapse: collapse; border-spacing: 0; }
+
+meta.foundation-mq-small { font-family: "only screen and (min-width: 768px)"; width: 768px; }
+
+meta.foundation-mq-medium { font-family: "only screen and (min-width:1280px)"; width: 1280px; }
+
+meta.foundation-mq-large { font-family: "only screen and (min-width:1440px)"; width: 1440px; }
+
+*, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }
+
+html, body { font-size: 100%; }
+
+body { background: #e5e5e5; color: #222222; padding: 0; margin: 0; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: normal; font-style: normal; line-height: 1; position: relative; cursor: auto; }
+
+a:hover { cursor: pointer; }
+
+img, object, embed { max-width: 100%; height: auto; }
+
+object, embed { height: 100%; }
+
+img { -ms-interpolation-mode: bicubic; }
+
+#map_canvas img, #map_canvas embed, #map_canvas object, .map_canvas img, .map_canvas embed, .map_canvas object { max-width: none !important; }
+
+.left { float: left !important; }
+
+.right { float: right !important; }
+
+.text-left { text-align: left !important; }
+
+.text-right { text-align: right !important; }
+
+.text-center { text-align: center !important; }
+
+.text-justify { text-align: justify !important; }
+
+.hide { display: none; }
+
+.antialiased { -webkit-font-smoothing: antialiased; }
+
+img { display: inline-block; vertical-align: middle; }
+
+textarea { height: auto; min-height: 50px; }
+
+select { width: 100%; }
+
+object, svg { display: inline-block; vertical-align: middle; }
+
+.center { margin-left: auto; margin-right: auto; }
+
+.spread { width: 100%; }
+
+p.lead, .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { font-size: 1.15625em; line-height: 1.6; }
+
+.subheader, .admonitionblock td.content > .title, .audioblock > .title, .exampleblock > .title, .imageblock > .title, .listingblock > .title, .literalblock > .title, .stemblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, table.tableblock > .title, .verseblock > .title, .videoblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { line-height: 1.4; color: #4d4d4d; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; }
+
+/* Typography resets */
+div, dl, dt, dd, ul, ol, li, h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6, pre, form, p, blockquote, th, td { margin: 0; padding: 0; direction: ltr; }
+
+/* Default Link Styles */
+a { color: #006699; text-decoration: none; line-height: inherit; }
+a:hover, a:focus { color: #ea0011; }
+a img { border: none; }
+
+/* Default paragraph styles */
+p { font-family: "Helvetica Neue", Helvetica, "Liberation Sans", Arial, sans-serif; font-weight: normal; font-size: 0.9375em; line-height: 1.4; margin-bottom: 1.375em; text-rendering: optimizeLegibility; }
+p aside { font-size: 0.875em; line-height: 1.35; font-style: italic; }
+
+/* Default header styles */
+h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { font-family: Overpass, "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: normal; font-style: normal; color: black; text-rendering: optimizeLegibility; margin-top: 1em; margin-bottom: 0.5em; line-height: 1.2125em; }
+h1 small, h2 small, h3 small, #toctitle small, .sidebarblock > .content > .title small, h4 small, h5 small, h6 small { font-size: 60%; color: #4d4d4d; line-height: 0; }
+
+h1 { font-size: 2.125em; }
+
+h2 { font-size: 1.6875em; }
+
+h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.375em; }
+
+h4 { font-size: 1.125em; }
+
+h5 { font-size: 1.125em; }
+
+h6 { font-size: 1em; }
+
+hr { border: solid #dddddd; border-width: 1px 0 0; clear: both; margin: 1.25em 0 1.1875em; height: 0; }
+
+/* Helpful Typography Defaults */
+em, i { font-style: italic; line-height: inherit; }
+
+strong, b { font-weight: bold; line-height: inherit; }
+
+small { font-size: 60%; line-height: inherit; }
+
+code { font-family: Menlo, Monaco, "Liberation Mono", Consolas, monospace; font-weight: normal; color: #3b3b3b; }
+
+/* Lists */
+ul, ol, dl { font-size: 0.9375em; line-height: 1.4; margin-bottom: 1.375em; list-style-position: outside; font-family: "Helvetica Neue", Helvetica, "Liberation Sans", Arial, sans-serif; }
+
+ul, ol { margin-left: 1.625em; }
+ul.no-bullet, ol.no-bullet { margin-left: 1.625em; }
+
+/* Unordered Lists */
+ul li ul, ul li ol { margin-left: 1.25em; margin-bottom: 0; font-size: 1em; /* Override nested font-size change */ }
+ul.square li ul, ul.circle li ul, ul.disc li ul { list-style: inherit; }
+ul.square { list-style-type: square; }
+ul.circle { list-style-type: circle; }
+ul.disc { list-style-type: disc; }
+ul.no-bullet { list-style: none; }
+
+/* Ordered Lists */
+ol li ul, ol li ol { margin-left: 1.25em; margin-bottom: 0; }
+
+/* Definition Lists */
+dl dt { margin-bottom: 0.3em; font-weight: bold; }
+dl dd { margin-bottom: 0.75em; }
+
+/* Abbreviations */
+abbr, acronym { text-transform: uppercase; font-size: 90%; color: #404040; border-bottom: 1px dotted #dddddd; cursor: help; }
+
+abbr { text-transform: none; }
+
+/* Blockquotes */
+blockquote { margin: 0 0 1.375em; padding: 0 0 0 1em; border-left: 5px solid #ededed; }
+blockquote cite { display: block; font-size: 0.8125em; color: #333333; }
+blockquote cite:before { content: "\2014 \0020"; }
+blockquote cite a, blockquote cite a:visited { color: #333333; }
+
+blockquote, blockquote p { line-height: 1.4; color: #404040; }
+
+/* Microformats */
+.vcard { display: inline-block; margin: 0 0 1.25em 0; border: 1px solid #dddddd; padding: 0.625em 0.75em; }
+.vcard li { margin: 0; display: block; }
+.vcard .fn { font-weight: bold; font-size: 0.9375em; }
+
+.vevent .summary { font-weight: bold; }
+.vevent abbr { cursor: auto; text-decoration: none; font-weight: bold; border: none; padding: 0 0.0625em; }
+
+@media only screen and (min-width: 768px) { h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; }
+ h1 { font-size: 2.75em; }
+ h2 { font-size: 2.3125em; }
+ h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.6875em; }
+ h4 { font-size: 1.4375em; } }
+/* Tables */
+table { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; }
+table thead, table tfoot { background: whitesmoke; font-weight: bold; }
+table thead tr th, table thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: #222222; text-align: left; }
+table tr th, table tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; }
+table tr.even, table tr.alt, table tr:nth-of-type(even) { background: #f9f9f9; }
+table thead tr th, table tfoot tr th, table tbody tr td, table tr td, table tfoot tr td { display: table-cell; line-height: 1.4; }
+
+body { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; tab-size: 4; }
+
+h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; }
+
+a:hover, a:focus { text-decoration: underline; }
+
+.clearfix:before, .clearfix:after, .float-group:before, .float-group:after { content: " "; display: table; }
+.clearfix:after, .float-group:after { clear: both; }
+
+*:not(pre) > code { font-size: 0.9375em; font-style: normal !important; letter-spacing: 0; padding: 1px 4px; background-color: #eff1f1; border: 1px solid #d4d9d9; -webkit-border-radius: 0; border-radius: 0; line-height: inherit; word-wrap: break-word; }
+*:not(pre) > code.nobreak { word-wrap: normal; }
+*:not(pre) > code.nowrap { white-space: nowrap; }
+
+pre, pre > code { line-height: 1.6; color: #3b3b3b; font-family: Menlo, Monaco, "Liberation Mono", Consolas, monospace; font-weight: normal; }
+
+em em { font-style: normal; }
+
+strong strong { font-weight: normal; }
+
+.keyseq { color: #737373; }
+
+kbd { font-family: Menlo, Monaco, "Liberation Mono", Consolas, monospace; display: inline-block; color: #404040; font-size: 0.65em; line-height: 1.45; background-color: #f7f7f7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; margin: 0 0.15em; padding: 0.2em 0.5em; vertical-align: middle; position: relative; top: -0.1em; white-space: nowrap; }
+
+.keyseq kbd:first-child { margin-left: 0; }
+
+.keyseq kbd:last-child { margin-right: 0; }
+
+.menuseq, .menuref { color: #000; }
+
+.menuseq b:not(.caret), .menuref { font-weight: inherit; }
+
+.menuseq { word-spacing: -0.02em; }
+.menuseq b.caret { font-size: 1.25em; line-height: 0.8; }
+.menuseq i.caret { font-weight: bold; text-align: center; width: 0.45em; }
+
+b.button:before, b.button:after { position: relative; top: -1px; font-weight: normal; }
+
+b.button:before { content: "["; padding: 0 3px 0 2px; }
+
+b.button:after { content: "]"; padding: 0 2px 0 3px; }
+
+#header, #content, #footnotes, #footer { width: 100%; margin-left: auto; margin-right: auto; margin-top: 0; margin-bottom: 0; max-width: 62.5em; *zoom: 1; position: relative; padding-left: 0.9375em; padding-right: 0.9375em; }
+#header:before, #header:after, #content:before, #content:after, #footnotes:before, #footnotes:after, #footer:before, #footer:after { content: " "; display: table; }
+#header:after, #content:after, #footnotes:after, #footer:after { clear: both; }
+
+#content { margin-top: 1.25em; }
+
+#content:before { content: none; }
+
+#header > h1:first-child { color: black; margin-top: 2.25rem; margin-bottom: 0; }
+#header > h1:first-child + #toc { margin-top: 8px; border-top: 1px solid #dddddd; }
+#header > h1:only-child, body.toc2 #header > h1:nth-last-child(2) { border-bottom: 1px solid #dddddd; padding-bottom: 8px; }
+#header .details { border-bottom: 1px solid #dddddd; line-height: 1.45; padding-top: 0.25em; padding-bottom: 0.25em; padding-left: 0.25em; color: #333333; display: -ms-flexbox; display: -webkit-flex; display: flex; -ms-flex-flow: row wrap; -webkit-flex-flow: row wrap; flex-flow: row wrap; }
+#header .details span:first-child { margin-left: -0.125em; }
+#header .details span.email a { color: #404040; }
+#header .details br { display: none; }
+#header .details br + span:before { content: "\00a0\2013\00a0"; }
+#header .details br + span.author:before { content: "\00a0\22c5\00a0"; color: #404040; }
+#header .details br + span#revremark:before { content: "\00a0|\00a0"; }
+#header #revnumber { text-transform: capitalize; }
+#header #revnumber:after { content: "\00a0"; }
+
+#content > h1:first-child:not([class]) { color: black; border-bottom: 1px solid #dddddd; padding-bottom: 8px; margin-top: 0; padding-top: 1rem; margin-bottom: 1.25rem; }
+
+#toc { border-bottom: 0 solid #dddddd; padding-bottom: 0.5em; }
+#toc > ul { margin-left: 0.125em; }
+#toc ul.sectlevel0 > li > a { font-style: italic; }
+#toc ul.sectlevel0 ul.sectlevel1 { margin: 0.5em 0; }
+#toc ul { font-family: Overpass, "Helvetica Neue", Helvetica, Arial, sans-serif; list-style-type: none; }
+#toc li { line-height: 1.3334; margin-top: 0.3334em; }
+#toc a { text-decoration: none; }
+#toc a:active { text-decoration: underline; }
+
+#toctitle { color: #4d4d4d; font-size: 1.2em; }
+
+@media only screen and (min-width: 768px) { #toctitle { font-size: 1.375em; }
+ body.toc2 { padding-left: 15em; padding-right: 0; }
+ #toc.toc2 { margin-top: 0 !important; background-color: #e5e5e5; position: fixed; width: 15em; left: 0; top: 0; border-right: 1px solid #dddddd; border-top-width: 0 !important; border-bottom-width: 0 !important; z-index: 1000; padding: 1.25em 1em; height: 100%; overflow: auto; }
+ #toc.toc2 #toctitle { margin-top: 0; margin-bottom: 0.8rem; font-size: 1.2em; }
+ #toc.toc2 > ul { font-size: 0.9em; margin-bottom: 0; }
+ #toc.toc2 ul ul { margin-left: 0; padding-left: 1em; }
+ #toc.toc2 ul.sectlevel0 ul.sectlevel1 { padding-left: 0; margin-top: 0.5em; margin-bottom: 0.5em; }
+ body.toc2.toc-right { padding-left: 0; padding-right: 15em; }
+ body.toc2.toc-right #toc.toc2 { border-right-width: 0; border-left: 1px solid #dddddd; left: auto; right: 0; } }
+@media only screen and (min-width: 1280px) { body.toc2 { padding-left: 20em; padding-right: 0; }
+ #toc.toc2 { width: 20em; }
+ #toc.toc2 #toctitle { font-size: 1.375em; }
+ #toc.toc2 > ul { font-size: 0.95em; }
+ #toc.toc2 ul ul { padding-left: 1.25em; }
+ body.toc2.toc-right { padding-left: 0; padding-right: 20em; } }
+#content #toc { border-style: solid; border-width: 1px; border-color: #cccccc; margin-bottom: 1.25em; padding: 1.25em; background: #e5e5e5; -webkit-border-radius: 0; border-radius: 0; }
+#content #toc > :first-child { margin-top: 0; }
+#content #toc > :last-child { margin-bottom: 0; }
+
+#footer { max-width: 100%; background-color: white; padding: 1.25em; }
+
+#footer-text { color: #666666; line-height: 1.26; }
+
+.sect1 { padding-bottom: 0.625em; }
+
+@media only screen and (min-width: 768px) { .sect1 { padding-bottom: 1.25em; } }
+.sect1 + .sect1 { border-top: 0 solid #dddddd; }
+
+#content h1 > a.anchor, h2 > a.anchor, h3 > a.anchor, #toctitle > a.anchor, .sidebarblock > .content > .title > a.anchor, h4 > a.anchor, h5 > a.anchor, h6 > a.anchor { position: absolute; z-index: 1001; width: 1.5ex; margin-left: -1.5ex; display: block; text-decoration: none !important; visibility: hidden; text-align: center; font-weight: normal; }
+#content h1 > a.anchor:before, h2 > a.anchor:before, h3 > a.anchor:before, #toctitle > a.anchor:before, .sidebarblock > .content > .title > a.anchor:before, h4 > a.anchor:before, h5 > a.anchor:before, h6 > a.anchor:before { content: "\00A7"; font-size: 0.85em; display: block; padding-top: 0.1em; }
+#content h1:hover > a.anchor, #content h1 > a.anchor:hover, h2:hover > a.anchor, h2 > a.anchor:hover, h3:hover > a.anchor, #toctitle:hover > a.anchor, .sidebarblock > .content > .title:hover > a.anchor, h3 > a.anchor:hover, #toctitle > a.anchor:hover, .sidebarblock > .content > .title > a.anchor:hover, h4:hover > a.anchor, h4 > a.anchor:hover, h5:hover > a.anchor, h5 > a.anchor:hover, h6:hover > a.anchor, h6 > a.anchor:hover { visibility: visible; }
+#content h1 > a.link, h2 > a.link, h3 > a.link, #toctitle > a.link, .sidebarblock > .content > .title > a.link, h4 > a.link, h5 > a.link, h6 > a.link { color: black; text-decoration: none; }
+#content h1 > a.link:hover, h2 > a.link:hover, h3 > a.link:hover, #toctitle > a.link:hover, .sidebarblock > .content > .title > a.link:hover, h4 > a.link:hover, h5 > a.link:hover, h6 > a.link:hover { color: black; }
+
+.audioblock, .imageblock, .literalblock, .listingblock, .stemblock, .videoblock { margin-bottom: 1.25em; }
+
+.admonitionblock td.content > .title, .audioblock > .title, .exampleblock > .title, .imageblock > .title, .listingblock > .title, .literalblock > .title, .stemblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, table.tableblock > .title, .verseblock > .title, .videoblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-rendering: optimizeLegibility; text-align: left; }
+
+table.tableblock > caption.title { white-space: nowrap; overflow: visible; max-width: 0; }
+
+.paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { color: black; }
+
+table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; }
+
+.admonitionblock > table { border-collapse: separate; border: 0; background: none; width: 100%; }
+.admonitionblock > table td.icon { text-align: center; width: 80px; }
+.admonitionblock > table td.icon img { max-width: initial; }
+.admonitionblock > table td.icon .title { font-weight: bold; font-family: Overpass, "Helvetica Neue", Helvetica, Arial, sans-serif; text-transform: uppercase; }
+.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #333333; }
+.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; }
+
+.exampleblock > .content { border-style: solid; border-width: 1px; border-color: #cccccc; margin-bottom: 1.25em; padding: 1.25em; background: #e5e5e5; -webkit-border-radius: 0; border-radius: 0; }
+.exampleblock > .content > :first-child { margin-top: 0; }
+.exampleblock > .content > :last-child { margin-bottom: 0; }
+
+.sidebarblock { border-style: solid; border-width: 1px; border-color: #cccccc; margin-bottom: 1.25em; padding: 1.25em; background: #e5e5e5; -webkit-border-radius: 0; border-radius: 0; }
+.sidebarblock > :first-child { margin-top: 0; }
+.sidebarblock > :last-child { margin-bottom: 0; }
+.sidebarblock > .content > .title { color: #4d4d4d; margin-top: 0; }
+
+.exampleblock > .content > :last-child > :last-child, .exampleblock > .content .olist > ol > li:last-child > :last-child, .exampleblock > .content .ulist > ul > li:last-child > :last-child, .exampleblock > .content .qlist > ol > li:last-child > :last-child, .sidebarblock > .content > :last-child > :last-child, .sidebarblock > .content .olist > ol > li:last-child > :last-child, .sidebarblock > .content .ulist > ul > li:last-child > :last-child, .sidebarblock > .content .qlist > ol > li:last-child > :last-child { margin-bottom: 0; }
+
+.literalblock pre, .listingblock pre:not(.highlight), .listingblock pre[class="highlight"], .listingblock pre[class^="highlight "], .listingblock pre.CodeRay, .listingblock pre.prettyprint { background: #eff1f1; }
+.sidebarblock .literalblock pre, .sidebarblock .listingblock pre:not(.highlight), .sidebarblock .listingblock pre[class="highlight"], .sidebarblock .listingblock pre[class^="highlight "], .sidebarblock .listingblock pre.CodeRay, .sidebarblock .listingblock pre.prettyprint { background: #f2f1f1; }
+
+.literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { border: 0 0 0 2px solid rgba(120, 120, 120, 0.35); -webkit-border-radius: 0; border-radius: 0; word-wrap: break-word; padding: 1em 1.5em 0.875em 1.5em; font-size: 0.8125em; }
+.literalblock pre.nowrap, .literalblock pre[class].nowrap, .listingblock pre.nowrap, .listingblock pre[class].nowrap { overflow-x: auto; white-space: pre; word-wrap: normal; }
+@media only screen and (min-width: 768px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 0.90625em; } }
+@media only screen and (min-width: 1280px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 1em; } }
+
+.literalblock.output pre { color: #eff1f1; background-color: #3b3b3b; }
+
+.listingblock pre.highlightjs { padding: 0; }
+.listingblock pre.highlightjs > code { padding: 1em 1.5em 0.875em 1.5em; -webkit-border-radius: 0; border-radius: 0; }
+
+.listingblock > .content { position: relative; }
+
+.listingblock code[data-lang]:before { display: none; content: attr(data-lang); position: absolute; font-size: 0.75em; top: 0.425rem; right: 0.5rem; line-height: 1; text-transform: uppercase; color: #999; }
+
+.listingblock:hover code[data-lang]:before { display: block; }
+
+.listingblock.terminal pre .command:before { content: attr(data-prompt); padding-right: 0.5em; color: #999; }
+
+.listingblock.terminal pre .command:not([data-prompt]):before { content: "$"; }
+
+table.pyhltable { border-collapse: separate; border: 0; margin-bottom: 0; background: none; }
+
+table.pyhltable td { vertical-align: top; padding-top: 0; padding-bottom: 0; line-height: 1.6; }
+
+table.pyhltable td.code { padding-left: .75em; padding-right: 0; }
+
+pre.pygments .lineno, table.pyhltable td:not(.code) { color: #999; padding-left: 0; padding-right: .5em; border-right: 1px solid #dddddd; }
+
+pre.pygments .lineno { display: inline-block; margin-right: .25em; }
+
+table.pyhltable .linenodiv { background: none !important; padding-right: 0 !important; }
+
+.quoteblock { margin: 0 1em 1.375em 1.5em; display: table; }
+.quoteblock > .title { margin-left: -1.5em; margin-bottom: 0.75em; }
+.quoteblock blockquote, .quoteblock blockquote p { color: #404040; font-size: 1.15rem; line-height: 1.75; word-spacing: 0.1em; letter-spacing: 0; font-style: italic; text-align: justify; }
+.quoteblock blockquote { margin: 0; padding: 0; border: 0; }
+.quoteblock blockquote:before { content: "\201c"; float: left; font-size: 2.75em; font-weight: bold; line-height: 0.6em; margin-left: -0.6em; color: #4d4d4d; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); }
+.quoteblock blockquote > .paragraph:last-child p { margin-bottom: 0; }
+.quoteblock .attribution { margin-top: 0.5em; margin-right: 0.5ex; text-align: right; }
+.quoteblock .quoteblock { margin-left: 0; margin-right: 0; padding: 0.5em 0; border-left: 3px solid #333333; }
+.quoteblock .quoteblock blockquote { padding: 0 0 0 0.75em; }
+.quoteblock .quoteblock blockquote:before { display: none; }
+
+.verseblock { margin: 0 1em 1.375em 1em; }
+.verseblock pre { font-family: "Open Sans", "DejaVu Sans", sans; font-size: 1.15rem; color: #404040; font-weight: 300; text-rendering: optimizeLegibility; }
+.verseblock pre strong { font-weight: 400; }
+.verseblock .attribution { margin-top: 1.25rem; margin-left: 0.5ex; }
+
+.quoteblock .attribution, .verseblock .attribution { font-size: 0.8125em; line-height: 1.45; font-style: italic; }
+.quoteblock .attribution br, .verseblock .attribution br { display: none; }
+.quoteblock .attribution cite, .verseblock .attribution cite { display: block; letter-spacing: -0.025em; color: #333333; }
+
+.quoteblock.abstract { margin: 0 0 1.375em 0; display: block; }
+.quoteblock.abstract blockquote, .quoteblock.abstract blockquote p { text-align: left; word-spacing: 0; }
+.quoteblock.abstract blockquote:before, .quoteblock.abstract blockquote p:first-of-type:before { display: none; }
+
+table.tableblock { max-width: 100%; border-collapse: separate; }
+table.tableblock td > .paragraph:last-child p > p:last-child, table.tableblock th > p:last-child, table.tableblock td > p:last-child { margin-bottom: 0; }
+
+table.tableblock, th.tableblock, td.tableblock { border: 0 solid #dddddd; }
+
+table.grid-all > thead > tr > .tableblock, table.grid-all > tbody > tr > .tableblock { border-width: 0 1px 1px 0; }
+
+table.grid-all > tfoot > tr > .tableblock { border-width: 1px 1px 0 0; }
+
+table.grid-cols > * > tr > .tableblock { border-width: 0 1px 0 0; }
+
+table.grid-rows > thead > tr > .tableblock, table.grid-rows > tbody > tr > .tableblock { border-width: 0 0 1px 0; }
+
+table.grid-rows > tfoot > tr > .tableblock { border-width: 1px 0 0 0; }
+
+table.grid-all > * > tr > .tableblock:last-child, table.grid-cols > * > tr > .tableblock:last-child { border-right-width: 0; }
+
+table.grid-all > tbody > tr:last-child > .tableblock, table.grid-all > thead:last-child > tr > .tableblock, table.grid-rows > tbody > tr:last-child > .tableblock, table.grid-rows > thead:last-child > tr > .tableblock { border-bottom-width: 0; }
+
+table.frame-all { border-width: 1px; }
+
+table.frame-sides { border-width: 0 1px; }
+
+table.frame-topbot { border-width: 1px 0; }
+
+th.halign-left, td.halign-left { text-align: left; }
+
+th.halign-right, td.halign-right { text-align: right; }
+
+th.halign-center, td.halign-center { text-align: center; }
+
+th.valign-top, td.valign-top { vertical-align: top; }
+
+th.valign-bottom, td.valign-bottom { vertical-align: bottom; }
+
+th.valign-middle, td.valign-middle { vertical-align: middle; }
+
+table thead th, table tfoot th { font-weight: bold; }
+
+tbody tr th { display: table-cell; line-height: 1.4; background: whitesmoke; }
+
+tbody tr th, tbody tr th p, tfoot tr th, tfoot tr th p { color: #222222; font-weight: bold; }
+
+p.tableblock > code:only-child { background: none; padding: 0; }
+
+p.tableblock { font-size: 1em; }
+
+td > div.verse { white-space: pre; }
+
+ol { margin-left: 1.875em; }
+
+ul li ol { margin-left: 1.625em; }
+
+dl dd { margin-left: 2em; }
+
+dl dd:last-child, dl dd:last-child > :last-child { margin-bottom: 0; }
+
+ol > li p, ul > li p, ul dd, ol dd, .olist .olist, .ulist .ulist, .ulist .olist, .olist .ulist { margin-bottom: 0.6875em; }
+
+ul.checklist, ul.none, ol.none, ul.no-bullet, ol.no-bullet, ol.unnumbered, ul.unstyled, ol.unstyled { list-style-type: none; }
+
+ul.no-bullet, ol.no-bullet, ol.unnumbered { margin-left: 0.625em; }
+
+ul.unstyled, ol.unstyled { margin-left: 0; }
+
+ul.checklist { margin-left: 0.625em; }
+
+ul.checklist li > p:first-child > .fa-square-o:first-child, ul.checklist li > p:first-child > .fa-check-square-o:first-child { width: 1.25em; font-size: 0.8em; position: relative; bottom: 0.125em; }
+
+ul.checklist li > p:first-child > input[type="checkbox"]:first-child { margin-right: 0.25em; }
+
+ul.inline { margin: 0 auto 0.6875em auto; margin-left: -1.375em; margin-right: 0; padding: 0; list-style: none; overflow: hidden; }
+ul.inline > li { list-style: none; float: left; margin-left: 1.375em; display: block; }
+ul.inline > li > * { display: block; }
+
+.unstyled dl dt { font-weight: normal; font-style: normal; }
+
+ol.arabic { list-style-type: decimal; }
+
+ol.decimal { list-style-type: decimal-leading-zero; }
+
+ol.loweralpha { list-style-type: lower-alpha; }
+
+ol.upperalpha { list-style-type: upper-alpha; }
+
+ol.lowerroman { list-style-type: lower-roman; }
+
+ol.upperroman { list-style-type: upper-roman; }
+
+ol.lowergreek { list-style-type: lower-greek; }
+
+.hdlist > table, .colist > table { border: 0; background: none; }
+.hdlist > table > tbody > tr, .colist > table > tbody > tr { background: none; }
+
+td.hdlist1, td.hdlist2 { vertical-align: top; padding: 0 0.625em; }
+
+td.hdlist1 { font-weight: bold; padding-bottom: 1.375em; }
+
+.literalblock + .colist, .listingblock + .colist { margin-top: -0.5em; }
+
+.colist > table tr > td:first-of-type { padding: 0.4em 0.75em 0 0.75em; line-height: 1; vertical-align: top; }
+.colist > table tr > td:first-of-type img { max-width: initial; }
+.colist > table tr > td:last-of-type { padding: 0.25em 0; }
+
+.thumb, .th { line-height: 0; display: inline-block; border: solid 4px white; -webkit-box-shadow: 0 0 0 1px #dddddd; box-shadow: 0 0 0 1px #dddddd; }
+
+.imageblock.left, .imageblock[style*="float: left"] { margin: 0.25em 0.625em 1.25em 0; }
+.imageblock.right, .imageblock[style*="float: right"] { margin: 0.25em 0 1.25em 0.625em; }
+.imageblock > .title { margin-bottom: 0; }
+.imageblock.thumb, .imageblock.th { border-width: 6px; }
+.imageblock.thumb > .title, .imageblock.th > .title { padding: 0 0.125em; }
+
+.image.left, .image.right { margin-top: 0.25em; margin-bottom: 0.25em; display: inline-block; line-height: 0; }
+.image.left { margin-right: 0.625em; }
+.image.right { margin-left: 0.625em; }
+
+a.image { text-decoration: none; display: inline-block; }
+a.image object { pointer-events: none; }
+
+sup.footnote, sup.footnoteref { font-size: 0.875em; position: static; vertical-align: super; }
+sup.footnote a, sup.footnoteref a { text-decoration: none; }
+sup.footnote a:active, sup.footnoteref a:active { text-decoration: underline; }
+
+#footnotes { padding-top: 0.75em; padding-bottom: 0.75em; margin-bottom: 0.625em; }
+#footnotes hr { width: 20%; min-width: 6.25em; margin: -0.25em 0 0.75em 0; border-width: 1px 0 0 0; }
+#footnotes .footnote { padding: 0 0.375em 0 0.225em; line-height: 1.3334; font-size: 0.875em; margin-left: 1.2em; text-indent: -1.05em; margin-bottom: 0.2em; }
+#footnotes .footnote a:first-of-type { font-weight: bold; text-decoration: none; }
+#footnotes .footnote:last-of-type { margin-bottom: 0; }
+#content #footnotes { margin-top: -0.625em; margin-bottom: 0; padding: 0.75em 0; }
+
+.gist .file-data > table { border: 0; background: #fff; width: 100%; margin-bottom: 0; }
+.gist .file-data > table td.line-data { width: 99%; }
+
+div.unbreakable { page-break-inside: avoid; }
+
+.big { font-size: larger; }
+
+.small { font-size: smaller; }
+
+.underline { text-decoration: underline; }
+
+.overline { text-decoration: overline; }
+
+.line-through { text-decoration: line-through; }
+
+.aqua { color: #00bfbf; }
+
+.aqua-background { background-color: #00fafa; }
+
+.black { color: black; }
+
+.black-background { background-color: black; }
+
+.blue { color: #0000bf; }
+
+.blue-background { background-color: #0000fa; }
+
+.fuchsia { color: #bf00bf; }
+
+.fuchsia-background { background-color: #fa00fa; }
+
+.gray { color: #606060; }
+
+.gray-background { background-color: #7d7d7d; }
+
+.green { color: #006000; }
+
+.green-background { background-color: #007d00; }
+
+.lime { color: #00bf00; }
+
+.lime-background { background-color: #00fa00; }
+
+.maroon { color: #600000; }
+
+.maroon-background { background-color: #7d0000; }
+
+.navy { color: #000060; }
+
+.navy-background { background-color: #00007d; }
+
+.olive { color: #606000; }
+
+.olive-background { background-color: #7d7d00; }
+
+.purple { color: #600060; }
+
+.purple-background { background-color: #7d007d; }
+
+.red { color: #bf0000; }
+
+.red-background { background-color: #fa0000; }
+
+.silver { color: #909090; }
+
+.silver-background { background-color: #bcbcbc; }
+
+.teal { color: #006060; }
+
+.teal-background { background-color: #007d7d; }
+
+.white { color: #bfbfbf; }
+
+.white-background { background-color: #fafafa; }
+
+.yellow { color: #bfbf00; }
+
+.yellow-background { background-color: #fafa00; }
+
+span.icon > .fa { cursor: default; }
+a span.icon > .fa { cursor: inherit; }
+
+.admonitionblock td.icon [class^="fa icon-"] { font-size: 2.5em; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); cursor: default; }
+.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #004c73; }
+.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; }
+.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; }
+.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; }
+.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; }
+
+.conum[data-value] { display: inline-block; color: #fff !important; background-color: #404040; -webkit-border-radius: 100px; border-radius: 100px; text-align: center; font-size: 0.75em; width: 1.67em; height: 1.67em; line-height: 1.67em; font-family: "Open Sans", "DejaVu Sans", sans-serif; font-style: normal; font-weight: bold; }
+.conum[data-value] * { color: #fff !important; }
+.conum[data-value] + b { display: none; }
+.conum[data-value]:after { content: attr(data-value); }
+pre .conum[data-value] { position: relative; top: -0.125em; }
+
+b.conum * { color: inherit !important; }
+
+.conum:not([data-value]):empty { display: none; }
+
+#header, #content, #footnotes { background: white; padding-left: 2.5em; padding-right: 2.5em; }
+
+#header { margin-bottom: 0; }
+#header > h1 { border-bottom: none; }
+
+.literalblock pre, .listingblock pre { background: #eff1f1; }
+
+#footnotes { margin-bottom: 2em; }
+
+.sect1 { padding-bottom: 0; }
+
+ol > li p, ul > li p, ul dd, ol dd, .olist .olist, .ulist .olist, .olist .ulist { margin-bottom: 0.34375em; }
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
index 55e3e58fb..fe215c5dc 100644
--- a/src/site/xdoc/index.xml
+++ b/src/site/xdoc/index.xml
@@ -5,276 +5,315 @@
================================================================================
This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
-
+
SPDX-License-Identifier: CC-BY-4.0
============LICENSE_END=========================================================
-
+
@author Sven van der Meer (sven.van.der.meer@ericsson.com)
-
+
-->
-
- Welcome to APEX - The Adaptive Policy EXecution (Engine)
- Sven van der Meer
- Liam Fallon
- John Keeny
-
-
-
-
-
-
- The APEX (Adaptive Policy Execution) policy engine is a fully featured policy engine that executes anything from simple to adaptive policies.
- An adaptive policy is one that can modify its behavior based on the current conditions of the network and systems.
- Adaptive policies have the following characteristics:
-
- - Are able to make decisions at runtime rather than simply selecting decisions described at policy definition time
- - Can use additional context information that was not provided in the incoming event or request
- - Can be adapted or self-adapt at runtime to modify decision making
-
-
-
-
- The APEX policy engine accepts input events and requests from other components, routes the input to the appropriate policies, computes the policy results, and generates response events or actions to be processed by other components.
- The policies may be affected by information injected into the policy context as changes in business or domain goals, by information derived from previous executions of the policies, and by context information retrieved from other components (analytics, inventory, topology, etc.).
-
-
-
- APEX connects to a Trigger System to receive events that can trigger a policy and to an Actioning System to send the result of a policy.
- The connection support various common technologies, such as messaging systems (Kafka, Websockets), file input/output, and standard input/output.
- APEX supports context (as additional information) for all events as well as inside the engine to support policies.
- Context information can be read from any outside source.
-
-
-
- A policy is defined in a Universal Execution Policy Specification (UEPS), directly executable in an APEX engine.
- Higher-level policy specifications (or existing policy languages) can be easily translated in UEPS.
-
-
-
- An APEX system can use multiple policy engines with different policies deployed on each of them.
- Context information is automatically shared between all engine instances.
- A simple deployment component is provided.
-
-
-
- APEX Documentation
-
-
- Document |
- Description |
-
-
- APEX Introduction |
-
- This is a short introduction to APEX to show its features and capabilities.
-
-
- Also available as
- stand-alone HTML and
- stand-alone PDF.
- |
-
-
-
- Publications |
-
- APEX is based on a theor called Unifying Policy Theory (UPT).
- Over the years, we have published a number of papers on APEX, context management, policy in general, and control loops.
- This is the list of all APEX and the most relevant other publications.
- We provide links to full text versions if possible.
-
-
- Also available as
- stand-alone HTML and
- stand-alone PDF.
- |
-
-
- APEX User Manual |
-
- The APEX user manual combines a set of guides and howto documents, all supporting the use of APEX.
- The guides and howto documents are provided as integrated documentation in the APEX site.
- Furthermore, we provide stand-alone documents in HTML and PDF.
- |
-
-
- APEX Policy Guide |
-
- The APEX policy guide combines a set of howto documents, all supporting APEX and policy, including how to write task and task selection logic.
- The howto documents are provided as integrated documentation in the APEX site.
- Furthermore, we provide stand-alone documents in HTML and PDF.
- |
-
-
- APEX Development Guide |
-
- The APEX developer guide combines a set of guides and howto documents, all addressing aspects for APEX developers.
- These documents look at APEX internals and how to extend build and extend the platform, and how to add applications.
- The guide and howto documents are provided as integrated documentation in the APEX site.
- Furthermore, we provide stand-alone documents in HTML and PDF.
- |
-
-
-
-
- APEX Modules and Projects
-
-
- Name |
- Description |
- Useful for |
-
-
-
- auth |
-
- Policy, state, and task authoring for APEX.
- Important projects here are:
-
- |
- Policy Designers |
-
-
-
- plugins |
-
- Plugins for APEX that can be implemented with various 3PPs are implemented here.
- Most of the APEX engine and system functionality is realized using plug-ins.
- These plug-ins are loaded when an APEX policy engine is started.
- A configuration specifies which plugins to load.
- Important projects here are:
-
- - plugins-executor - Execution environments for policy logic, such as Javascript, Java, JRuby, Jython, MVEL
- - plugins-event - All event-related plugins: carrier technologies (Kafka, Websocket), event protocols (XML, IBeam)
- - plugins-context - Everything for context: schema (for defining context) distribution (across policies and engines), locking (for writing to context items), persistence
- - plugins-persistence - Everything needed for persistence (beside context), mainly JPA plugins for Eclipselink and Hibernate
-
- |
- Plugin developers |
-
-
- services |
-
- The main services of APEX, deployment independent.
- Important projects here are:
-
- |
- Service developers, Deployers |
-
-
- core |
-
- The core of APEX, deployment independent.
- Important projects here are:
-
- |
- Core APEX developers |
-
-
- context |
-
- The context handling framework of APEX.
- Important projects here are:
-
- |
- Core APEX developers |
-
-
- model |
-
- The model for APEX, it comtains definitions of all APEX concepts, also has handling for APEX policy models.
- Important projects here are:
-
- |
- Core APEX developers, Application developers (Model API) |
-
-
-
-
- APEX Resources
-
-
- Resource |
- Description |
-
-
- APEX Source (ONAP) |
-
- The source of APEX is hosted part of the ONAP Policy Framework.
- |
-
-
- APEX Issue Management (Github) |
-
- Issues with the APEX software and integrated documentation are managed here.
- |
-
-
-
-
-
+
+ Welcome to APEX - The Adaptive Policy EXecution (Engine)
+ Sven van der Meer
+ Liam Fallon
+ John Keeny
+
+
+
+
+
+
+ The APEX (Adaptive Policy Execution) policy engine is a fully featured policy engine that executes anything from simple to adaptive policies.
+ An adaptive policy is one that can modify its behavior based on the current conditions of the network and systems.
+ Adaptive policies have the following characteristics:
+
+ - Are able to make decisions at runtime rather than simply selecting decisions described at policy definition time
+ - Can use additional context information that was not provided in the incoming event or request
+ - Can be adapted or self-adapt at runtime to modify decision making
+
+
+
+
+ The APEX policy engine accepts input events and requests from other components, routes the input to the appropriate policies, computes the policy results, and generates response events or actions to be processed by other components.
+ The policies may be affected by information injected into the policy context as changes in business or domain goals, by information derived from previous executions of the policies, and by context information retrieved from other components (analytics, inventory, topology, etc.).
+
+
+
+ APEX connects to a Trigger System to receive events that can trigger a policy and to an Actioning System to send the result of a policy.
+ The connection support various common technologies, such as messaging systems (Kafka, Websockets), file input/output, and standard input/output.
+ APEX supports context (as additional information) for all events as well as inside the engine to support policies.
+ Context information can be read from any outside source.
+
+
+
+ A policy is defined in a Universal Execution Policy Specification (UEPS), directly executable in an APEX engine.
+ Higher-level policy specifications (or existing policy languages) can be easily translated in UEPS.
+
+
+
+ An APEX system can use multiple policy engines with different policies deployed on each of them.
+ Context information is automatically shared between all engine instances.
+ A simple deployment component is provided.
+
+
+
+ APEX Documentation
+
+
+ Document |
+ Description |
+
+
+ APEX Introduction |
+
+ This is a short introduction to APEX to show its features and capabilities.
+
+
+ Also available as
+ stand-alone HTML and
+ stand-alone PDF.
+ |
+
+
+
+ Publications |
+
+ APEX is based on a theor called Unifying Policy Theory (UPT).
+ Over the years, we have published a number of papers on APEX, context management, policy in general, and control loops.
+ This is the list of all APEX and the most relevant other publications.
+ We provide links to full text versions if possible.
+
+
+ Also available as
+ stand-alone HTML and
+ stand-alone PDF.
+ |
+
+
+ APEX User Manual |
+
+ The APEX user manual combines a set of guides and howto documents, all supporting the use of APEX.
+ The guides and howto documents are provided as integrated documentation in the APEX site.
+ Furthermore, we provide stand-alone documents in HTML and PDF.
+ |
+
+
+ APEX Policy Guide |
+
+ The APEX policy guide combines a set of howto documents, all supporting APEX and policy, including how to write task and task selection logic.
+ The howto documents are provided as integrated documentation in the APEX site.
+ Furthermore, we provide stand-alone documents in HTML and PDF.
+ |
+
+
+ APEX Development Guide |
+
+ The APEX developer guide combines a set of guides and howto documents, all addressing aspects for APEX developers.
+ These documents look at APEX internals and how to extend build and extend the platform, and how to add applications.
+ The guide and howto documents are provided as integrated documentation in the APEX site.
+ Furthermore, we provide stand-alone documents in HTML and PDF.
+ |
+
+
+
+
+ APEX Modules and Projects
+
+
+ Name |
+ Description |
+ Useful for |
+
+
+
+ examples |
+
+ Example policies and policy models for several use cases, all written for APEX..
+ Here one can find complete implementations, examples, and tests for APEX policies.
+ Important projects here are:
+
+ |
+ Policy Designers, Testers |
+
+
+
+ clients |
+
+ Web clients for APEX, including engine monitoring, policy model deployment, and an HTML-based policy editor.
+ Important projects here are:
+
+ |
+ APEX users, Developers, Deployers |
+
+
+
+ auth |
+
+ Policy, state, and task authoring for APEX.
+ Important projects here are:
+
+ |
+ Policy Designers |
+
+
+
+ packages |
+
+ The APEX packages, for full deployment (installation package) and Docker deployment.
+ Important projects here are:
+
+ - package-full - The full deployment module, generates DEB, RPM and TAR deployment artifacts
+ - apex-pdp-docker - Creates a Docker deployment artifact
+
+ |
+ Tester, DevOps, Installers |
+
+
+
+ tools |
+
+ The APEX applications, implementation dependent wrappers and mediation for APEX in various technologies.
+ Important projects here are:
+
+ - tools-common - Utilities for APEX application developers
+ - model-generator - Generators from/to the APEX policy mode
+ - simple-wsclient - Simple Websocket clients (console and echo) for trigger/actioning systems
+
+ |
+ Applications developers, DevOps, Installers |
+
+
+
+ plugins |
+
+ Plugins for APEX that can be implemented with various 3PPs are implemented here.
+ Most of the APEX engine and system functionality is realized using plug-ins.
+ These plug-ins are loaded when an APEX policy engine is started.
+ A configuration specifies which plugins to load.
+ Important projects here are:
+
+ - plugins-executor - Execution environments for policy logic, such as Javascript, Java, JRuby, Jython, MVEL
+ - plugins-event - All event-related plugins: carrier technologies (Kafka, Websocket), event protocols (XML, IBeam)
+ - plugins-context - Everything for context: schema (for defining context) distribution (across policies and engines), locking (for writing to context items), persistence
+ - plugins-persistence - Everything needed for persistence (beside context), mainly JPA plugins for Eclipselink and Hibernate
+
+ |
+ Plugin developers |
+
+
+
+ testsuites |
+
+ APEX testsuites for integration tests, performance tests, and bench marking.
+ Important projects here are:
+
+ - integration - Packaging for all the Apex components, the engine, the WAR service, and the editor
+ - performance - Packaging for all the Apex components, the engine, the WAR service, and the editor
+
+ |
+ Service developers, Deployers |
+
+
+
+ services |
+
+ The APEX engine as a service, deployment independent.
+ Important projects here are:
+
+ |
+ Service developers, Deployers |
+
+
+
+ core |
+
+ The core of APEX, deployment independent.
+ Important projects here are:
+
+ |
+ Core APEX developers |
+
+
+
+ context |
+
+ The context handling framework of APEX.
+ Important projects here are:
+
+ |
+ Core APEX developers |
+
+
+
+ model |
+
+ The model for APEX, it comtains definitions of all APEX concepts, also has handling for APEX policy models.
+ Important projects here are:
+
+ |
+ Core APEX developers, Application developers (Model API) |
+
+
+
+
+ APEX Resources
+
+
+ Resource |
+ Description |
+
+
+ APEX Source (ONAP) |
+
+ The source of APEX is hosted part of the ONAP Policy Framework.
+ |
+
+
+ APEX Issue Management (Github) |
+
+ Issues with the APEX software and integrated documentation are managed here.
+ |
+
+
+
+
+
diff --git a/tools/model-generator/pom.xml b/tools/model-generator/pom.xml
index 5da446c77..99e31e624 100644
--- a/tools/model-generator/pom.xml
+++ b/tools/model-generator/pom.xml
@@ -57,4 +57,21 @@
${project.version}
-
+
+
+
+ apexSite
+
+
+ apexSite
+
+
+
+
+ ${project.artifactId}-site
+ ${apex.adsite.prefix}/modules/${project.parent.artifactId}/${project.artifactId}/
+
+
+
+
+
\ No newline at end of file
diff --git a/tools/model-generator/src/site/css/site.css b/tools/model-generator/src/site/css/site.css
new file mode 100644
index 000000000..ef8bd4d15
--- /dev/null
+++ b/tools/model-generator/src/site/css/site.css
@@ -0,0 +1,100 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.0/css/font-awesome.css);
+
+
+/*************** Table definitions *******************/
+
+tableblock > .title, .tableblock > caption { line-height: 1.4; color: #7a2518; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; }
+
+.tableblock > caption { text-align: left; font-weight: bold; white-space: nowrap; overflow: visible; max-width: 0; }
+
+table.tableblock { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; }
+table.tableblock thead, table.tableblock tfoot { background: whitesmoke; font-weight: bold; }
+table.tableblock thead tr th, table.tableblock thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: #222222; text-align: left; }
+table.tableblock tr th, table.tableblock tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; }
+table.tableblock tr.even, table.tableblock tr.alt, table.tableblock tr:nth-of-type(even) { background: #f9f9f9; }
+table.tableblock thead tr th, table.tableblock tfoot tr th, table.tableblock tbody tr td, table.tableblock tr td, table.tableblock tfoot tr td { display: table-cell; line-height: 1.6; }
+
+table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; }
+
+table.tableblock.grid-all { border-collapse: separate; border-spacing: 1px; -webkit-border-radius: 4px; border-radius: 4px; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; }
+
+table.tableblock.frame-topbot, table.tableblock.frame-none { border-left: 0; border-right: 0; }
+
+table.tableblock.frame-sides, table.tableblock.frame-none { border-top: 0; border-bottom: 0; }
+
+table.tableblock td .paragraph:last-child p, table.tableblock td > p:last-child { margin-bottom: 0; }
+
+th.tableblock.halign-left, td.tableblock.halign-left { text-align: left; }
+
+th.tableblock.halign-right, td.tableblock.halign-right { text-align: right; }
+
+th.tableblock.halign-center, td.tableblock.halign-center { text-align: center; }
+
+th.tableblock.valign-top, td.tableblock.valign-top { vertical-align: top; }
+
+th.tableblock.valign-bottom, td.tableblock.valign-bottom { vertical-align: bottom; }
+
+th.tableblock.valign-middle, td.tableblock.valign-middle { vertical-align: middle; }
+
+p.tableblock.header { color: #222222; font-weight: bold; }
+
+
+
+/*************** KBD Macro definitions *******************/
+
+kbd.keyseq { color: #555555; }
+
+kbd:not(.keyseq) { display: inline-block; color: #222222; font-size: 0.75em; line-height: 1.4; background-color: #F7F7F7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; margin: -0.15em 0.15em 0 0.15em; padding: 0.2em 0.6em 0.2em 0.5em; vertical-align: middle; white-space: nowrap; }
+
+kbd kbd:first-child { margin-left: 0; }
+
+kbd kbd:last-child { margin-right: 0; }
+
+
+/*************** Admontion Blocks definitions *******************/
+.admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-align: left; font-weight: bold; }
+
+.admonitionblock > table { border: 0; background: none; width: 100%; margin-top: 1em; margin-bottom: 1em;}
+.admonitionblock > table td.icon { text-align: center; width: 80px; }
+.admonitionblock > table td.icon img { max-width: none; }
+.admonitionblock > table td.icon .title { font-weight: bold; text-transform: uppercase; }
+.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #6f6f6f; }
+.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; }
+
+.admonitionblock td.icon [class^="fa icon-"]:before {font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
+.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #005498; color: #003f72; }
+.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; }
+.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; }
+.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; }
+.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; }
+
+
+
+/*************** Misc definitions *******************/
+
+*:not(pre) > code { font-size: 0.9375em; padding: 1px 3px 0; white-space: nowrap; background-color: #f2f2f2; border: 1px solid #cccccc; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: none; }
+
+pre, pre > code { line-height: 1.4; color: inherit; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; }
+
+code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; color: #6d180b; }
+
diff --git a/tools/model-generator/src/site/images/logos.png b/tools/model-generator/src/site/images/logos.png
new file mode 100644
index 0000000000000000000000000000000000000000..915d6e59d42a39d262c209cdcc9801969a236c3b
GIT binary patch
literal 162383
zcmXt91yEc~vt4{~cemi4;1(pfhlPdU?(S@GcXtRuf)gOP2X{hn2=4AKZ~6XuQ$y#*-;kk0{#8Pw=Wn4qMJkLLt5TbiC)Hy{i*68M|s?7Txu-(Qzl&u&M-;7KNg89&7f9rR1Nyq
zXuDC1uKx4Zj#w#NJKLWz_*in>IC8T702m44Wcot2*SJ)0G)^Ir>Gqq
z)*h=dGFS(MTm#R}j?k4pzzEwl@RIQyf~B~8#paGKVbcqy!FXF4jDRkm)x&l@ph`5k
zVSNNLulLoTdEmdw?X|asRR92_>4jcee|54x5~n62zP6U|+&F!Seb#i1aY+*5hc3%A
zz}nqrjn$F(eGwe4G?yR<*x!%(aqPA?Nob+K&TbFTwbPXM-)@&cG(e?(OvgYjqZlWb
zCeEWwl?J}-fg4mcoaG9-_wzy`tQ??mNz@A*&(7>=o>{MDT^x1O-X9GXl=UuJWf0+BV5U#OCWszt)5YV!^{w
z(Zo{GTtLotJ~3;S+ivNuZmhtSPCqvFHZ#(f%zP3sNs#lJ_=
z-rV)bd7&@ZkDrE(UoGXLqf>g%EVSj`5ae0gf8tn9T#-h$2!NVSF$@;)`aKH8
z;`MNsw2Fd)AexAaCVm__0Ra{kyF>@!^!U@`X51yxNeAg|msv4~AU~{=qvK!@64m@K
zbQwK2x4*BB%EvHahVaD+NJB1tIrLpo(m$&xW*_eTcC~2fFlDHsfc7yB&_fas0ajMy
za?7i%@6{z~uaz{hu>z1kQj-EBUqTA00cU$WT*fAwbjpGWIbS!J_$kBzKU@g#vk^Ad
z)(qjOKi~A(bWZvH>yKF(DkuP=AY5!LCON{-JcX@Lhbc#QSD^Vlp>59>Z5^>;vwruhZE(x|8Qt1KKB21;G
z!z5HRpmT(O+wnWF%kLG5^z~{(VdQkaUg1tZ0ENp4Xvxmfje8;fc^tQqAS?Tu;kUR4
zgV%TN*b=Z#-WCa6kOU|Wm{9=M4iKLne7~y!^jC{pc8a~!Fp}Hw7wXbY=5DE7Dv23}
zFJ5Nr@__AT^4y;F;HWoG$l?L+EVA|ZH#hUF+udzHdrI|&%T`UyfOM^7YEweWeIvSx
z%dpBpQ`e`>3bR3zgMloC1QtJL(AF2MCLH12(zRyd&vRmzj3vtO(JC+wO@YrGfEdTE
znzeOcZ@1At)Jw0gqLUW`)qWeDe7uM?
zZY)dgFZUrlYpGZ4p8SNVK|NDaF#di++vpB=U3nh9=Bq3IJ``Tx9HXQLgEkVs^DlgH
zvgylZ*5yx`Vrhi;l!U91h?v*v-0;I^=Yf3eLHI*XmP#QE=q9${%f1-$JAQC?i{yim
z@I*tC7temFBE9|{!;0cBGe7ml&
z-xB7%og+t<&QHe|8KkfxI7GnlvE}QYMQfFvwYj8*1~5E)zXqMI+d16{v-hL3eZRyn
zG*=Tp*4$*SPw#mVzqos?^8tQ!CkzCJ{PzxsTh4kn5fe8C?M@0-k0rHV=2}?!7DJ^{
zt+=ogL1Er`6+Z{RZ&3z7dBLD2@cN&J*y{ot-9&{R8&GMuQNTPvst2C;mCCu_PG{+)$=Kus8@=l>RUKkwAw
zRec^?1z*qV(|*0ItcZMB(9_ytd?Azpb%iK|cr?(Z5<>4}706
z!P;7*D(-+K&Y5~tMXHNdYPIz~HQY?$*0Y9#-aW!RVV;!`cBX7ias)j0e2a7|e8%D=
zw)~=viV_Qj1py@x;O72)n^LUiDRd>^cmI$awkL%bR^gc>1yiqa^u!-E9Rj?>P+7*_
zL6Fu-(JxkNDE}JUu~qD6mfOrprNoL80KZ`U>o#%S}7~R|wU_OjirV?IcIzbW!TvyBe&+k<#BpD4OMKa3k7}l9=a6
zr>$wL=urO0`VWa`>o7oG2OHs&Aiuf|n;E7RtmeXWISjm4N(#+6f?u@yAVWPj6|3Hl
z=B3W;K!9gA+~I*??dQxn5`+i!
z{FcJ@e--lkwQ<^*H+R0&)6-$V_|wtmCRu@5P%DmxoD{hdOP-@UWk)U*mARU{ZzG-{
zZaI|2N3@9C*A%3fSf1
zSk{{}=F(;j=KqKlQS{CJPpl}6L0%_&7(~Hwnx;%rTF^Uk)G-0|*
zAoaw?FlTy4AY1G6kC#dnu|7X2Nb(y01Bv4r3~<)YR&WR6*M4%?F_A?@6`qKWlQg6D
z#{xaFRrXm?4$SNjRBN_H8N(gYHQm*IRQ@2gyEdk@g-zYGPg+m91~gsy-TV_8SBQ~-
zz?1Empws)c77m!bD~KajO|nm9xsMvSwlg28aWhTgBc?SR*hj|9rY5SB&moX4Nj4u|7i#567CoNS=PMZ6dO`4T{LtB+Nckco~f!F1$i
zi+M!8;`5RfA-EQ0be6X?5njB)!{7V$a`i_C@EhW8f2PNqAvs^gffmajM+_BiTVD*X
z2lO9{&0gmx_s}(e@ZW07Qmlu#9TnP8Z2tA^cle?r$1iOa_UkUvnUd*Mot9eqnB~gk
zml9$`aJOrB8pkc-Nk{9$rhyncMMzZ0sL-1@N;ilHA&K2rYjv|H00?
z1Y~nvBz{o*1Q2Y%K~oa7qY~C5Xh})zYH1KWG#q4}>2Oj;K_&s=60V`6_sSy}zq&xK
z%N^mlPuE~IFfcBW5CC5dC^OkxjC%}n9)?fE%9Ig+z7(DmZCm6!>p}w`VWR=Pr}Qer
z6{iAo!xt-B6cohpzmJJhYD*~8d`jInCWI3>mf%>A8MuGHFdPH0qLFdPXbIb#Cy@VB
z2fJIcrny~j8p{Qanp+_8RaBlh!oCdhBNnNjlxY^SRD$9h3^9*?N&u2JHSF`S{YAOKf=<(8!mX+)99
zp%z_G>FxXys1jqrujClmO-j<`E=nxyxWn|QjL3;7Lv{HdE2ook20!p=H`Y9-dpr-#
z+QbUfJhE*f!Nws4^2F_fWL#zK29%vboZLPM)1W2KSH`j`z{@F0r6zb$&QKfVR4;-8
zB3#L%^m#wnSf;;i?Sn(41
zZ@gZ_T_YbdJm+V3AV~L>D@-8N#Yg~J;%;aUlwGrtvU^>sQR=#wE_rPtmHA@@>?Wi&
zc^y^J!6I?VBXv-B5dliPr@MCe%llOC)WXKTqNs+8JOx0aEp;ZFG%9Sn+K~BseA03duZP`9jZ@;
zA{f3bxAY@Ev^Im*=jkTz2aJeKOu@+1p3P`C8>rozgt>LQy$RSyVYKlAVgK!cQ8VMz
zA7b-zd+29#`GH&{W}qL06o72@F0TQrxJGaTZsAm8JPA@9-+&m+CbNNQTFqm^t}1UP
zbn`O5sJ2)e!_^ToSRH_g=BMW_qLTOJLgWPKn+tFSk?4_y`5Syf)?
z*m$0?p4^)It%OySIWr{5Y)56Vp9!DOZ1{NXBm^E7*_KxqMUC=hN}6&YoE}8!hs-)n
zt09T|d)5GFmlc%^9xtZrooafryWb$RF5L#R!L(c5aWU0M@mO@S(vSOQd;)vMzTfw*
z>HG}&M^dQb3poUG;Nn2~>+mgQiC^-=^XDKvuA(9Ck-BXgnZrXT+Q?sEQmvQ#
z2-mo8cq1~aQ>)$SR^bWUbgZ<4_m;vjFoAzi^AM3pQw=V%2K;Uck8NI9&w|W5`{8yH
zkj9!NBf}WgT8hWw`Dn$`1;-A)2{#hs(dSBntcAE3<{y(VekQ%t#jK8{1|wUsN}E8ZeLJ$cS>gzyIiaCO=Bz5B1%R_TPNc_frr^lX>$tS
z#i|eygs6rYkGzYE!EOD`pl(K8Q(Vjax6-W8Zc-K=o~*4XC9#mz&`&
zld4i0mv06(W}oNVSyVl`P*0vd=Fh;us#V;ho7ttx6{R0?*LHevx}@edIuA38F=;T-
zHaN>xXDNRoh`?gxR-e+X0B-AyNz}whGDyOHgol}5Gc;PLe}$|q>Yx`mrn|klXHbUh
zaNc>iMS-K~V)S*7!g5JJrz8ait7dXjW$HBP$Fki?L9&f(Gty+T{hb$yR@_(;Z8cwV
zTk{9sC+;uYtcaSE?`I`X67_=O3rEJ~)fYLZCZdQEPJ?c5YGw&@(J7i=I~H>syRX1u
zv{2DzE5%Ylf;8dxcb{_6`QSk;4C}cA3Q=Qqba@0uAhG>B@lwUPB0Mj3R>f_KR+l62
z_I~Z&@)QTprQWRk#?PwQ;a`q;V33v;jy6MOeRu_!Ljv0{|v)Rn3=W+LIwhe1iX`&$P+9?;HOMAt^ibN~;ofBormc
zW0}io#6{(jL4$_O{69``#RB}9pXc{HNwI)z?P*m!QU&i}KKXYg;)CFOQ3TA~Ovifb
z%%|1EjYTYFl-3VWuGioW%esX1%71zOY^Dl4nj;cmNG==q<|RJH!rom|8v9H&UdHEV
zaY6cK!;m){!ovg5(a|N-o?fK+8r&M&YX!k<(hAN=_@D#y1ZN(&zCr_l35R+{%{9oB{Wsx)_O{OMo`k1_3RlS+r%_kO4M-|+yZQei_-v!q-4!La3bJ({QY3J31Q)_Zz@B5>l1OxyfGCHMrCV7f_-Iou^
zt*!=E4Uyj~-1t;;x4#W59Sm6xC}N>GWP~zK*K8+#5e}S>k^Yo3t2L4UEV*C%CsJWG
zLGiNn&jaL#2o>QU-oOZi7HSQ4t2d7}ywzS>ZnY>hARsMyBxnw=GaopVo-;C|NHZof
z9J6159XCh|U&r2_pI`Z}WU@t1mYZNk0x(^pq$0I{4y=rhJ~YNrTN?Ul7|o3X8yMbJ
z#a?}>phez<;t##Vtb=_^MEUPF{*55TitYbSdL662M~}wFW_->Bo9$#xGagI=y&1|g
zzQNbv_mL1T;B_vh$^na~W|A;8YHf%0?1ToaRkv+8;Z6&O%YI-!G|kjGCipXru;+29
zRx)$`96jtjT{&OM{TeA||Ne+m^39M~Ey9@%o$JdSsiY%^@Vm}2DG(tXu(@7y;k$eb
z+rW}kxxVr~oQ)`+!|>m?5ti;q3xhp$EK%2nniu;WiPQ>~MN{(BW<63Gpv4Wj-55rk
z%WzprR415~`9YMB?*pAKe|zWFm$m;pn*uonpyN0jSB&$Q(F}flX(p9%^fWmd4?b8w
zN1!gZp9D}5Y}%LojT
zbZ+}&C@#RBpI;as3;>yKiCd9$1QD6x=}clCwpK+-@~@gKjLlRE>q!kiQWhJ0L(Pw*
z$z>?8aYHz=4)#oy9&aKo{LU{A;?`5I#`&S)%xcC7K>wlV{Nk5P$_%w2jUp~Q`1$c-
zS-9AIf;0K6w)pV1`_xc8rPjj8;B0Iyex%#Xv}+Z+=8(q4M8mV(PF+oc@hme>{jI#7
zVkG?7hxCK;_ylibk@k>Wn@)are1B%LfKkS`oisfGcf}eich6=r)sQSPO$2N%8n*Az
zEf$BNs|GQIbT~iq&UXixk7OV>_S!Vbn~1}-eV<#Mv%Nb9g@sDCh8`AE>C#uSM)qK6
z%QQpwD9^kpy(}**I=>2g60s9-7eMjw6YnFy)5T)<&k{TTq090uX^*s)VdnQ*Chhvs
z?4rZJrb-Lsy|vR)4SkVZ__gwiOg55iTIO{!S>sc~GDrSHPwK2%dk~^=+tWzt+Zv57bV#vRBGQRf#SrQWR9P
ztvg9Kj0U&H&`n?NyWf3~9qwSF?t8B7pqO)SpAG#Jn=o3!bSrGLN!2K&wv^xW$-G?S
zmrB}KO4@Hav?L_Vtey8hJ#(0+eeC?BL~n-szzOi3=`UFM>AkcgR;8pF@mpzOh&M=O
zoX30|Dz|!(z3*Wx+fUa1DH1@JQ2eaH9YjptuOQY5xj=$aAaM{aR#*`t?4-|=4aXfOO*J7Ftdydb{e^^Pb7`Z@
z0PA)xJjHu(LO`Gt%ny7sb3>83@fD;bw9N*y)n6<;{rNF}t12|NtJ>lIeWGzLb&Pa%
zsi3Ax@h`1{<#}WW1o~qIYWq61awme8|+S46_#oOKP0;eQv`lA45ewj?v_vA5iq7f
z4s-Ac6}YJ6?iqjA^PV-QM510fJiz)xci_MD0Po*;bDQUQ
zW%c8$@YypB7Y%Is$wZv_tPYqQ6m~33tDHY9&&&4NfFbLTvi?%B?l4v1m8|my{kcrt
zFb6INe7asTG&>{}qyMz|*$(cA_
zoo~|&DQJ~k6vtdU*tK%W`K;IOE|{Fg;+2SK7~YbN&z5)n?X73N-kca={~;0vdX2XD
zYdj1ghhieh7xWO84IRnDm_frNSi
zU}Q<=uOD8Fv=Nwa
z)jdk6R^(69)`_9o`3~P2ljFMDuvmvtb)h2c)W5HT-rb0~+qovu#`nNO<0Fcg0zg*(
z92obZ!Ht3g)}W<|QOgR(%1@NuY}U|GK2#d{$FOarYFgf&PwCUxS5kRV6XEL=v-rVZ
zw>|c5M4RI(yusY5`?7z&Dka(!#1p`2mUpdP{H_&p5IZ|2G}xLT3M9vXd9x}DwDH({
z5U$0x>O5tDP|pk}>ofxKfbcgzQ1{=5%vyryuv5_&3Y(G*f8RMS3~Zf;Sn
zfV~%}BtSqj{N7JhNaJb-(nBuQ>`~)HomhqwCXY93ItqLie1*{
z!PVFYerd=83EnJJ2`J2^lr>1Q?%(69v~T0X+}vHOTf4ZV+4~
z0_rt{z(pW8ra4ktIbC}lAyd{}O%8>mYWf=qtUzdg&h9v*;r0Gta0W;(2rD44nZcRd`PUfMW?`|;*KGvsYd&{-RRDGHe4>QT%*8`_wQ!{F(cSo2%r$^@=>+dAG4z?@Td%GOl(b#diACT;}s%;Jc0q#u3{A^NbQoToy(i
zBQ;1W$zVFJb_eaV4{djMR;D&gZ&~9%=e18wqgRrl|80xuukAI3@H#p9$ES8Jz<>D^
z<)AoZXPQSByvy`XX&Y>QA|W-br}hNq{ve%k^lHSY*?x@2v}oEVY-ID7tUwN@AM&S1
zLEu}(!UkSk_aaBs(_O0^J*jn$LZiuHITrye3>wh)XF$M4ZB|Fe=}1!2JZ6|=;M>-)
zi2hpMpghs0?dVSYuk~1h>=G&EC&HvG_uABEV44x6eoGV1bdNf6Z@&>E%
z5<3EkX?H>CDb#cmvUrLIC^4s3
zZktHG?2?MI`ad*ecfy7$4SFi7qm~hJ!^$l!>;vU503n2cmSe*Bf6cJ-fbxE
z>WGa7njxA_DEPajB6rQZI;9`3Ayx=`;K^F4obE$z)`4j>eQL_AM27l-h>eDmr4Q&v
zrsD@Z%Np>1hiQ%*M%@pHJhFWx5CzO{+#XI@Q^^qiJ|dw)FrS={8Z7cKD8lL_^m*UT
zi-_gFlb^)#LRhV>kI@bDiS-WyvYPC_#NnH9l!}ocuu8vL`${r8wC`3|X?rngOyh)3
z-^f_IA+%{KGm>uHs0oP_xJga0YL#}Qp+$N(u{gX($g~-5wpf8KXM4`idb}u`1_07f
zcd_7u7zr4gu3Js!-cJ0AeYzH^D6)r5RyH=j2C#H==Uem5Y=<-$$t$%)i{>nnK25
zp>82q$+|JbwyAz1BPlq%ux<$H??$r0KQ2h7zsi*dC6m+}OlfnaqUi=LHFW$~nqp08
zBF>@O;4&M#tF)t`Xniu@uwjM7poO8yfhY8dqny}ism{8E1l#))+MhCfPBZV2p%XP}
z2+*vC3e9ROZqovO^Y4G&7~g5iQA8l}F!V;Y(q{k|zVZ=LM1@Mw7+GUgp}@C
zxLH4%*H`bmUznBJQ%UvGuUaMUpwu#J>s75FX?8T23J|2la?lsrCd$qdjZw9?y-zmt
zOB0Hx*|JS!2zF1Mo6$SEe{g%OhE)xrjSqT5XGo0vQs#>tAtW={G9o$XqWB}XGI~g9
zuM`e~6*bz}SOG;$?L0^IM8$P0n{Kw$4;@zOxQh4NxuBym6WK`YL{3d`rsxDo){r$G
zZo2sxlS$^wb-g*|)LhX9s8ld&v?2$7Yx`iz2KK%KO9axl!jMbU3E9Q1mw~EKB=k2M
z;G_BPEnFOQmbkKukp@uGqgxLVVo#y)hy=~#NItOYvyrt!C%jT;57{6yJ{C9~yxPx#{}ALPfcorp63v72
zY^xN{&;pF?{abiQ1-H~%EzGVc?fT&b7{vYpTS6?)5v~a?zZifEn@vnJzG?G;Eq0mA
zQj`$ol%=O?8w6Qw`W=MKTXKI3&MXctI`^@UH1*4~Hh4<4h|QKr&%S88HBEiKkTzAD
z?A(#s*>@m$Z@vna
z=ckS-nQoy2wJ%o9*UHind`o45C>Ya&BZX~w)
zNO85`F?mfb@eTxi&f$JhOw`ya?{)YkMs8FB!lLcE?bcla_uTQfJI+lE_yGwO#Tehx
zpCuLG`()kAukmY(7X$2R6g)fdcZ0wqaAkhiw5IyH^XDj`a*W&Ldb_|4O&mQ+d6d59N%;vc+vSK
z!+L4wVotl9VNUJ)-3FUP1$_Q58^oRzTH@Pu@R4cz1b>|Dv^)`F&0eaw;DYLDYqA4I
zHASCF>1z^~n&Pyev*}QEIQG3JwYPVa-h}7}r(N7QElU5Wkm>)hhKvT_xTU-}Z^J1X)!Tdp
z$kNidD63Q8V%rml@%K$aOTfaZo-BC}F|^BH>QKWf_iC%>_%fkbyi2Xt3)GKeJF$;kD;>kKm=q9u60gC*W`;z=Fob#KjhM)Xmb*-bPgARI=tt?
zuaLIe5Aiy^`WdU4TYjK3*GxA6q~Z%rCN)s+x286=lN?f1&vTE)gI^n~tPtj+zj@lY
zfotq)t~mjSmSNR~q3upCU>r+C;@M`fal{w
z-O9|Q-xaBpYRKs0Pxhr>oaUaf+eWacDInxrQP5FXZ15j?V=pS;-cVK2z5lRRrG-_iNtQHT)K?b~ncK?(6@;rWJxEe~9l_u=0{)epNsAbXr74v`DV;8WLi
zmw$c4@GvoO{|5A*h-nUjv6v2NJ5<#`OxO+1O6$zm&bn?>Gr47sJriCTTkq7iX6SdV
zh2KTQ?CF*c&>3rV1V<|&%(zGIA~uVJLxe#J)I4&3*$qTTJi#^USq>5NSA0x8Gr+F+
z{5S^b#PhX{!w8qNVsp@zDCzS;oJ?m>5tp3L0<{0%`4J#hdKms!SBvb{+%d0<2>HY(
zWgMTuDV(s}C$9xH>NYMLX6;y}^FjnKt518*^=C9Q+Nl97@B2-ObU`7ZIt052k9q
ze=D!#u`^1y61nr`8d>_5-C5xa%1t-Djr2vayrb5Q8|E8
zvuFx_7#7f0Q87Bxrh(7SJ{|?%c}H?(iz>rX?x6W#kq{qDFF3n
zu9Q}~#tPArLUUR+U7>~;RJ&o3r0ICc7N?@33G2M8hHaNWOKK^;Io<9|qg2CppA(88
zm>CgK>jJdjc2HOT=-K{jZ@oFA#Z+8IAXJ=y&w9ZL6M%(Tv(#xQ%D0)hZ{wx^&S-sA
zhfNo}y3&3gsFDx41_iU!5&XT~hr!A@obYB~;lluS3lx4$PZciA{g(V2E0D@Fy`B|*
zUnUqCQrc1yjXEV7byw%ij-^Lh4^v0()mcP7a?Lqxcv$x{W}sr?&}BMyloH!puh@5f
zph`^W5u*CgHzR0I8n&G=V$<}(+U(8IcpVkZn{rA7hmXSv--uRnbQ;IZFzW&RK)b
zLSqX>u8X@kdKV4#kL+*hamdZ-@J&uBUBq51%F^1OI}NFdY+UTD^flvu2{8-~3m^d)
zqi83trz#AgY*ZWlg4!~lLutx@wXp<&@#F=MJ%;swGx-=e^c)t%f!y|6M9Y;U1XM(E
zSG%v*25Ew+IqZR^tvB8kn7I30E&C6p12ajdI6QE73oOy<SK#Qu`+@^Q*f-mOzV?Eu;p4Fq5%N5s
z43MgUEO6z>cpF^Ykgv9gOlX)9
zocxOb-mv|-dvQ&0HD-1D7rFULtgk;T{=w@?ZP48zn7h4+D2MoIXPrG_`OEL(sq(`YASsC?<*A0(B5CuP}7v?Av(1w*`Ylb3MLZTgjY&ouo-UR11oZP
z17aOk%{$$+iSV_@z(zL$otx8L6=BcUyNQ~g4CXwrgm4*t&}2U{oW#z|>rO%4!~tl&
z82kzsAPdA`#!Exb_Pm#Yd2ejgF9`&2xK}}>CFdR#)>VdUC>xySWu+Yd#$o>Bz@VS~
z_AnOX&+*-c3J^;N%KwL?0GQioZ0s{>@|L1OEoM!3ju9l<^he|G*{frVO(g78+h8##
zpIZXuArsyR=90t-V(1F(-=S+gl8mI)VD~y<+Ye%XFLIq>GX9bG@19ils|E&2HUjsn
zIDlC%%iz)oWUWIl6`#YOmMyKrf~7BcSk|BGRz8s1ai|Nh*4C!`4N#q!je04aoQEj#
z-*~4T&&CByvCf9O-DGoJ*6X}4o&CkK)gR52p$-Clp%LX<trW2b>R-H(
zxHv$n$l)1mXQTXVLh%_n;q;wCz`OJK!I~~OPbG3v5}&zBVxNa92U@y>khO7RfM=1<
zamMlC_>&EVq8EVc-72A5dcqBsbf#=qRXjIO_4T1f^TaTuM!kX|)qpH^}z2twlNZDpnnYjsE$lJY2m0L1H_1qiS3jQk^RcFZ7ExP*M6X4Wz5BucD&+zm>R4J9PBp8ga>S^t7H8}|g4-x+Y+)_A
zP;Vw5)=sJQTyVK+EA+u|YJaG>KK1XRSv?p>eav>JXRczCCJ=wmHD0sbG>huv;{;FU
zW$8#T=qp)zI9L_4`yvAG5Iz=Z#ow#Fz`};j{Qeik!Y|vAoj(keO$a5iMla*JzqMvC
zZ221@V^)65G>1XobI#1CEaF9w86J0q8|6|{zH7t4_lP7}oNwtc4MA#5sap*ZXD`hU
zylCQ#B6gZ@LrW6NK^#{ApxOKH{3^{Iak&XmzgFF<&l>?AFF(eG9Z
zY7EgGcZ0Xv0_uT>%23Yv4N6r%(LZek2fWg*?!9B
z>jsl%eT`W>LOJPbW{FEdrBvQ*VeZdgL=eGN6I>rC>Z*x1mcmA1{EUKA1M{gZA+)iIn1GMzxA
ztrU{fMhrUvi0Rz|rHSz!{U`^H5x{d3ItF8<_Z)e9VHgS1YZ+=x={|3aG;EO-D5q!B
z`i@#W@XJQlM~a577S={=#mK^==V@8GvRWO6#ddkkGJ}Kd!uAWk%k~o|BLc1w!4V>a
zDU+FS=1p*MzvRNi)ZT}Wu@PHrTaQ@(M2c1n#GKY{EIgD&j3JB)SkRFhBq(LRcU?Zr
z)FOLy$Nmhn9pi%p$0km?O^$+%RdXSJ*tJvlE;R3zm~!=zY-fV^3{AY~F?|j)#qxnX
zp+b;$l*CVJ&>+VwE1`UMSWUcD-=!KTQa|SHXP#3O{rmKb8%L=hoSY3Zb&eM)J!0J=`$8W*jEYTL+QPp*mLd
z7WK7jB`4iSAsA+Dj77Pr@J;6vbmJLiYFhBbL^n4$TQloLC325UKhm%#@^~nnn>EGM
zrrjJM`^^gK3V|a(B#kO=S1lLx(vCU-6Yx9Bs>x&SqPe+GG<*^$in%_;tX<0Kh#JuN
zBZ;f{S?%3Wc6#>AbGqw>HS|J9hfkpW;Cz?uh+~_HJ0AG20T@9zAHMG7%TfnZ9axhs
zx3%+LOmRHHweDt00mWTzXQRZ9Q%JOc*oHU8lma=4brvoJEYUy8m=&{X6StXQ<98zi
z6Vv2SKhl!RL-IjUR1NHjkJI3mHd?T8*56%L`s!D;zUM?xe5zViv}DYPM
z6RB!Hb+XA+eR$JniJ|0bQH>>+S-D`YF3hg1rMA!rr<>o;9iaO=`e8*HWgCmbyAC*!78O@1vlHZ&dt_zLOe@8EoipSf;_spQI=rmHnI%=
zQTMBkqPo$TqPqU)b^d8lIt8nw?WRww_4FMN`~rH1|56k4cSU?eKI9>+R<|$N)%IPr;$C0;xw)
zO;5h|lX$1fi=85+cB3xb-|Lk3VB%x#(}}9I)Hw4QMV~yS4%XVMuqijGZ#qihRk`YO
zmlMh>&6g1oNSuCY{SzqA`2#j#K%3h?CI`DCp@S*U{S&kbarp!w4G!_VC&=zDr1kk+
zM8)Vvwim8zDVBemZ7fK4bvTI0F!e$d0|Ojch4I@T94AGrR)Lt%#nruZf{Q
zZI!3Q)p-Zog(}VbnYqGqY0Re+Eh#Mx+UOr;1Bxrm?T}O6L~ff&oDt`Q*w6(I;!q!0
zk}SL4Oy5-*+!wS`4jjb;VfGFLcBWK%SZ+SX>Yi@41&9z*%bd@Mz|E#4fA+nXSApIs
z|J}IcOG7{O;^0-sV-v50Y;NifxRal;BpVJz^o
z?tB*i_M@}yDA(Yq!|9dcML3lc`dZ{f0R4ldr?Q5Wf!AE1b#Pj<>#d=on+2D(!-3cV
zndpZXPq(dRB(6HBOgX!8Tk@;R_uIq|t2OnSO*o(|N3X>{|B2r5I^J|T
zoaba+(nr2FoUhkIrOzs_C_J|XRDgD9b$nxGtbgmPz~aGB-bntccAs}@C+7uANlYv9EP6DZL8ih7gD
zFhhVMk9msVOkeIr&VKUxj{pQ1PZ^I=liQQh$6R06CsEcvhAp)5%>hW_zbNmAZ&Q}i
z^4LA?2yVa18`et&TUs9(_#NDxxrl{x&thI;78sS>&d+^C`4(%Lao*M_>PiH4ty1XRyvw9j0d*x|^
zg$awoqFMz1czMF{)>byzXCc5xaZd!0rL}R4*xh(8$H)C{^}rFh3{uB$c5WK43270A
zC{zSW>E;FzWpp?syD&&zBR+fvS8{-V{Jvt5@$chSUfipfTfT(*4;)x_$A<+c{`}!8
zl7efz6T!GtWYdf?>4I_9;%bj%ykK7SiDuPTfhxEI(tQ7^YirEcdui6)&_>8QE$nf#
zcd1L}p1S6XT}8Ny4S?rX$_h1=YcV!4*>(cQNMFvn^^p|}Zst_Wi@?sxhE|@Tsek7j
zZ21X{L}w%(B}Gm7QB7~wVb;h=m3_2|ES@p2KX2>a?$|%ZntIX0NJ+qdSG6WCajiU}
z^x4TJb)2t=Zr5(gtI
zk{bXMQ|Xe49T|eMrqL8gO&d5r#jEEDLsU184Tp7HTGb$+O7Gup5|Au7OoTWq+T1
z^bz7C)L=mja>Q7fKT5IbAZmWJ=vnQ?K`R!5&46I}pHx*6`eke9qe_ep+UOeC4}4dS
z#|mKNy|w+O?&a$|XCl^}Z`Uyh2(KF3ZR?z>-_fKgLBZnsZF|xrq)Vj~VZQ6G-Cwya
z9ITkU#bG#}
zQ-z{jEr?--RXxmI3*?iHIy<9F@$|xH&{PGzze#5}iS9y14eh}igx|!fAFk+WV2Zp9-sx!@ce_H%
zQ9U5QPDyg$g&>fM?zGt)1MWd3B5CcT&qVR1SfKnPbDOZ3gC(Rw<*+sq{#5@QZ9i!Bbgh7eQHJjh(xb%93?|!
zXY(j8{rYPTZlo!g`yEWtgpt@$?X)O(@#6#7g+8=5ropTYagpcq=KG!7w6CGU%R_3@
z*1v_ek5*U!$rcBvHXXmgRCP$urfrqzIl9tFLwisdw9MY5uP_=2UdzU3{)et-GaGx{
zws{DYD_kKafLYrkT3l{_S;h=NLN_Y3_}X-Y!J*ig_?&r1q#O`K%u&Sg;S|nTLB_<0
z`1WUu1;z?`^2_Sin3Y&Nvcji&x>}$tC;)7J>)knaZu);Tonv%lUDJj;?qo8tZD(TJ
zb~4e#6Wg|J+qP{_G_fYO?d0p{TkHMbKl<#mchy~2-Mh}iAV0w(iqt>tg2(EZdgCTJ
z$Xjp!nw;BhQpDJehO?Jb73^%SB#`d()CXknw02#h>XsY4c&&D9Kqts}gaZSBBuK*{
zEo#MwmlMz55WO%TMnyn^y76Z5t960fE@JyLivcUme8@dr3bv{S+4;TPG`@E1H|imQ
zqVRD$5>5m7nWi;dw>)Vjni4g$)sQJUqfU4!2Heo*xXQK(Ps*9`7WJZovMn(g-wtDH
zoRr;l2*poPzi=MgEmzc(INV9(v2&s({-0UbuZQUCKHASJveVc8FA_vF1N?9(Bzekb
z+f2gGGx8Uk?uaF^p-2Fwb1fg?qYlT<9LHWrGNrp0-a`?Q6m+oRUCuD<+JcV7cJHx^
z3JY}R;APd9qH(LmNhFc4{+u{S}?cwvihctJs263!5xS^9hdxzEIubO3T6j2Lb-`hWoGuMifRO-q++v&jU_)5k8M*M7x>-=SSYY%;eQ@EaM+0BQYA
zS&BaiiP^lRy<~9ZGg>4hR^z_ng4}n(a*sFTfR>krihF?rew#`bO!Oc`8Xlq9q(Ydd
zc`&aFO{6fzO1P^c7LQuMY#6y90qAy+2?R*6o~_6T9H7&P+(afae!)UAQuG3Z>~yKv
z?~^;#=>@L;=x`9t8PH()89t>fdpFI_)-#2Bub3Q0V$YMkmFJ$N7fXnTe{g#X*eI={A45go1Bp9eH
zzX})2$#&h(BIaeD!2@jZHXIDjP80u)epG~VJ_>0F4)V*UnOs#pvm`a(wT73xqZi|D
zk?8zdm0ok|*ErjK8*5{wCcWz^;}2iXjM!SL`9X@U3;i;J8Ryf1#0nUKas+`V01Bx3#_5RZzE2ERo=5&RwVOemHo-wNmENwPf|*NBMiO`$lJO@+
zOw+mHm#su>v<4lrOs|vhgxRR-zgyMuLrjlov7ZPhILq<&tP&(&@(=8du)nM+w*xvn
zCMJFC*BkYC>;P|c_`3hCmLpJ4z0>E-mg5QkgJL=vlM+m0Oy%a;l}5BZ-*k$W;*r-=
zhOzw$3Lpj=90FRd72c)`ozqH-RA%=eqBHa7bp2dViCsd%LLYogB`cO`tVxCBzI+Cm
zxKUGS;OtACEUs+5o^oJ9KTmYq&F{x^
zKM?(30oi<`x}Vs$5rN+hjFlS0opM5?=&(f%x<{2I!gnYCvCbAaSz8}9qtY4}$=fPb
zxijDQP#&$Zb4=VC3Suw!C)ju?ylN#n8JGVeC!x|YF;_5=cbCI2uDRN}A7BGifb4m8
zaUhO*Gdl@}>kda^-!`ScTFX5;SR@%vFvW&Kqd$Blc_
z%(7Qt$7U{F{E`R;bjRFjMNBoTkaxmC4ucbB6fgx|VwzgJ5MsqBK?1NSi;Qu<7f+_o+B6vn6Tyar?>oosCj#T1XvE9VVO%mDd)N
zs)FN`C(~8HAGqVkBG5aTb5yt2#T9SLr3%LR*4UXE%m=~86Vac+H@lOKpWb(iaYsS|
zby7kwpg`6RT_k|6m7crRkB8Y_
zL7IDpmY+SF-*5
zXddToxtmh?rug&*lBLN`5_E8;9&S54{Ki!2C(LF^8g2ItBGZR6sr)Zoq6KFz
z4BIL#?8`9!Q9Kv_6%yq$UNmBtHG#54x2%@3%kf%VVme0;RNU61wHM2#U6vLj?Zo<$Zi5C)xbx9ibo;c>&Fb9#Fd2`|s{I-S4Wsy;!)?=2x
zfSXqhStV00bx@}(cB`l+11s71tvO`+xX6vLj)jI!sAu8mT%LA_jbkKx;63*90#b$-
zU~6_uqoUUHrtW&xi5^Lpb{TLSiU5+PwE{=gpnmOCfI1h(0j)N^3F^sEOBA3E2N;5)
zC=WFg4@crCdZoz$ag(lHODklJWlg&*M7BOT`BZgBm6y}Z=jFlMa)SaH`nR>Hdx8Bn
zBP&X<-PzLBk=B)3pq=2Srr-8SA9t8y_HNV5^Yk*raX$$OBItH`Xv8(9uDRY~<3WJ}
z*s+F{R3L&Q6uA=pE4*Mh=E^CZG4>J!wM4pA*^fZ<2JcEb=JqM7Mh(jJ_4pyom4o!X
z@y0$$SJL6V@pJVUF+)r3W`U?bZeZqoILoM1z#y|TDp&ZcoG#a+TEvZ5F*HyjZ~%?#
zy1tCYeAjF@I(P|CH-2o^j@q}=(0A?qO*JRGtg?1Nl7yoCOC&r%Hpx)Bj0@=1ZRE;%+H{
zaM^;mhmhUnB#)n4^w!$r0L8|;;MKq?bmNm4~EJ*%?~Dlf2=t{z$l9}fZQgfGv}d_!<4y^$YPebF=P
zDsSq1urO?_k7mBaDO?cTex$`c7H50u;MlOKayaGgN#mJLek4DA
z6`=+%O4lQU38R-yuPuJ$4&cS?>sp^waLMHU2v>|RuAb&jQ!}~sDAWr#Hr9aBN-xgd
zXkiHx%ixZik&lQN6EUe35d<1u=oEkE{=5C-+>9e$58MXsANYfroou?im}-{WCnJG{
zVL9&aFg7X%G*wKubZA;hfTj87x9oFC^Al4?yM^T~%NII1z825?v!2+LcPM{kM(bUg
zq>H39=F^;j7jEIpTzJZlq1nX}@B{6d*30!Xf%^p`Qdc8nNDu?V;|00+J9f^uEKawc
zQ^?HY;vZ}``giJtSN-DeZ(pmv9~+Y>Wu4M(Iz5>Ae9$S6O?<{AHIz7fj}*eqUF$9q
zB`jp4Fw~%ga|aq>ZmoDsXtkH{Nvykz>ue08*&{+-lkMKD;o1fgbKRY{B22
z3e))*1ym)|2CL=EQWv{4SftvX|7@!DZxj<~Qx#>(cC))IeN&fvd+3I02?rzRnH
zZm(m%;i!WC;4p5YrZbX_M#bSGyYZf^DDMb3nz)m07L#ti`Ft*m!9se*yUaozNH9bqmtWN=lAelDYWR+EKR4N#%}-
z_9-{j@z6uON`=dkzUs>6e@z#UhYj;4XT88fU|ax
z-4RAiT5091pini{Aroa$Byo&MY-P>=^dGG8u#S8f#ff8A=1-fig~Hdwh2t5Z$LMb{
z!BZ&p)4K^xX{)b~vrA@d*(1EF?n+*}nOIjJV+WMM6kJSrJpTnm=)48jKW73bYHRGl
z{&!UBZUl)iMEBzbd0~o&rn&eC7}zXMlXQHm!%M;>Tq$Ac-wLMNseg7*NUazbgDzpq
zAJgw2k305=I?T_4K8w@6u?vjlsQVu#46
zNr6d^nr4wXDn)mr5|xwt*ZM*#a}RdXolG4`2)HUgme7pz)RN76U7~I4_4*A!Q7^ay
zEaC^|mG?Sdj9;N{)B*xfr;e5vD9D)jH3vF%zeufgzIZV2qixh)rb+8|Vf%;Zmcs#gc9}9!-z{Wf$Q%-Omy=I=x&M
z*!$d9*o|NWDisbxAh%4*mUtJu5EB={#SvKb-I}7}A<)kWt%v+?NW3od`#2|z3B_VZ
zJ4+~j^t=-Qkst3Kjy3~Jq}j;gMeqh?1MX&by{^N3-go~~Q(o(=>if6<_+!EfIPM#uc&Y$=NUDgg8rpp9SE
zzr3T&`$@WScg+mxBZ>-MZ;X5!9|p0Rv814hJ8|8Fid#>ng1;&+y3fisZohw6^KIQ@
z(lSIZ!-J&u?GAJa?^XyPy(!Uit1wRM;?PU8%Ubhd(ZzE!5SG8Z18{KEGcM4P1vlWl8Iwb?JcoFvDq2A|{0iLd7+
zvG96j+D28HKSGRPx~EXHS`Hl<49wJROF}PD*+0-7PcE67?rJMGv6VNNCDs!!3d|?Y
zHXXyHFL0D=`;E?NOLT?-2+X0JU1P;gft6~BSKfmp(8Te5x~diReWH5hmZq2J8S2xxc0dG_zFSpL?!QjB*vs?&njMOBd>bG=xG^(BwIpDhOc-TH
zuw8W!@lqo)H1||Yq&y_0gt|(n2e;JLlZ3=)((xy+EEHnd5-^s3GkP@VwEyyB3X6cY
z@Q|g5E@veeT~l;`C<A7iAF@%98+>#~z-4F@+spJlZzi-2&aElqcm+
zHsc9ubmJ)-)^&92`lv*(X(mAGpqy(*a0D{qd`J{Ia_u9UV^>)6;)i?y~RrOs9!Z8tUvubl*4m6bf4k(37MjYHBgY
z5yE<50huUd3D8y*{j=1&N({X=Dz$L4kiaJAAiECgn9ya}VF-mkBkhM&aE9iJG~y+i
z%R#Vp&fZi%)P#{Ei|jAZ*RPuee4&Hu(Ex&X^o!!uTQ1ugu#W^af@4h`Co=ZQ@ik0o
zCBXq2IK{!RNvTaD%ju4CPSO1hK={C&FWoG^SnoR*G)yvsZ`aQ6P@>E~1|;%XM1?Ub
zCbbzI-wiez_W6FXpVS=-JjJ)Y)PZ}9kuAcU^Zg2W^R*{;At(zlmN5(q>{;)b(Ns|V
z3JzqP4MMLphj*j|y@4yY@9}ofNY+x#^4Q2JY}c19++Ej8ROkG^{C}?jP$3|r6Vd}Ohm(K1~Sg;*0V6wlr5Lo;uOov0wLf%RXW
z<|IHYpZjD1!TDb?n_RT{O$p}swN;iwHG#>Tc1`e_HR0EWnad*0B-4
zezZ_3QxLd$v0Kn;T@QEag~%CeKH*UvVDuB}rTbmId%;e~tQo9tGD&RA)t1;J!KP#E
z&aqn1Xfb*Y5O4Gt@>NW%4IgJcu@J~n$Gc8M1S2%Sy-LETB~s(V#3b)-*Q0cG)gaRz
z+K%$IR*Q+*!&u$mIYScxTD5wwGzU)n{%(RPPQYs|Kdfi0+
zvDqpgj1=-H3Y;G$?AP99DR
z(x;p|JAteU{p~{C$)&k9zXLD
zaRDi|u%!f~Y344cT@}2ojZI(W87`BKbH^0}khhfpf+yYL2EI|)=N_C`AAYoYe?ZH;cl#Kmk
zqTsUM?+H;gP259Sen@fh<}rWk<$j0v?R?rg8&5tfnyNFR9GRBH;;nFSbg--7yYoZN
z*t|Pfi}i;Sq!GcXIGa=AXlt*%AtS{(3nWP&xqB;OfK{X6N|eUtz5*jpwZGYKKqkKM
z#;nfdlKr|GE|N;Sp&0R2ogK?*Wk&oo)^Vn(nm6_$BBqF`nR%rCT@H>91(*&AWE~xT
z^#$^ZYG6^{Mx4^Jg(R8CN>?ZJ*Zm~zO{s4y-1?)M@bWg5fIB`s{w!-mezV+j=nP+Y
zCWf^*=(Ti+H@+fm_>#QJATe9x@#+R79_Zm-RJT-g2hX4`+r
zx5x<9iWFOfUpdVXb*Mr4OM{xZ=_$Kf#Qw_Fb|3}_z6NUp++g$_n%IjPzE2)mOK6h}xnKC4(B9n7lt9A7rUJ%FVDS!QASIE?
z!@>(kH+v6`a|!QHUy<96dbI1EZPA^gwGApr#r8CUCKA{;p3*6qeAoD!oPzS9{3K_&
zB%Szid!G6XHP{(YVYL~*<1U=Ux}u#^
zaX?b@6Ex|cvb&tu4(NSNK5)8KrRhoRoT@3P@ayFx4JS;x5T`Q}!?5ed5%pNNqcy$Z
z0zked^kMuo0qfrRk{U2i#MIq4#2-U9EMl{;sPWG2XAb^waCL3Qc>qlGz4^6a6|1n(i^+grb!$diT7!zz*DflJtHAUG;X
z!6viYW%b-joi`8*LKs?%>NnTK8VfYaPqorQGo%$&k+HgZV+H!2+d<2@4Gb4A3cqEP
z_{A-+1Cs@HHsW-4_pLGuO-MiBcN^^hTmac$ip#D?9r$vqU~9+HuX0BwuP=^o_V>S$
zpPr00d32Qaul;bR8qhYp75gc_QEdZa)XZV5~ye^I74Rm){)Ho^&-V-j|Ofhg^G
zN=3rlT`#XAhx`GYyrwh}f-L3T5i)V&mu~WI@gGmV7Fci7QtbPb`@q
z>%j+iF2dr`jm)HJdy?nLMiFi^Q*p0K4B#KB*t}*TQ)ADRi4mK8NAP;yj_0}v
zN5Yudh^`-;Zkv|Rl{~;0>O%xZt`g!$2~T9E`cR~M}JWl!-)
zK<%8Ar9GnN(;;p@%67(RIEG!sT*Cax*UKobAFimmgy>Z2VY_UDhmh$&C^^>TUKgaz
zJc$V3SJ?(3e$i45TA=3-7L}VbN|TPHyjsMBfli+tcDjsq82SqXvmkrvG3>=7tl~ho
zca$JTCo63TlVN?^jzld$^31@uQm2Jn
zz@vHTgt(HPh~9)Nakd$Ky!C4OxwbAsaW5V`L`lp)pJy`^R+Z^MS^=1wfrVs~{uk;^
zfVlBvs;FZ7t598WXZK80gpX&Ly_+GKME#7Gw5{FZoURl}K$zb%9ohk2<1y{77I8%K
z;Y}!{ZYy3NN?j~UL2)8GE_;cSrnk2j_;b*Je~rg2fFuY2REyI5REx$!msM7ei!jrV
zl+EC@K3Dpa+mfrGMcUV%0^~+1v5bL0s5V{~lu|u~L5l6Yo!F2XU7!s=gekxvkk>)ibA
z>y~M=ZhzD9+6^S=eLh!=yYSSKdn}oVCI^6dxnyZVN~g;8rkXfHXn3{~T0d2(eRXpq
z3F)wjQ@-Pbrwyyrmi4OXj^wzLcql-7!Mq7N0h-F}FDDdFW-H5*30U7r`?x%Wv6xe0
z)@!t4H5LMl@8X|)`M6;!^#~#SAVOG#gDj)H^iMpg7|bO`PPfQmRVT|zEmKfe26o_G
z@T-O{1JMZtVDlhx!}w**c>UKVFeuSKU$k!sa?eyfa1Hmf!tKTeo_rgDxzE0>yRwe(
zB?d=b-9j!c_X5A?x&6do2lC;UtSd(m2{LB-NdQsCf|JSeLWCMG;%P>bLVS?AH21j~~|K
z$an{lP;|y!I5qTwN|asjdmt(UG_08kDC_|fUU05vAXwE>b`!zCv>qeuX!;ES`V2x}
z(i9%Pk}LEK<61O0q<=Pt@#gyU#O*$K9MDi`OQtig;ftU?y%zl#v>Hp?ZATK|(Fmqv
zWM++M^wwhmSj7Nt>z4j4AUmzdh_82Y%E+b7%l<^KNs|pUT<@{q?RMeiMlmojI1Fjd
z>w}u;D=ger>(JjQCxF#_&Mh_B4R*!hQ%$Lo)t%HJi=O#+12+-L6E}fX5DQl5VZMVD
zlG4I>sIVT{S)&azUzcYNe-ahq>w64$&Zi7LUuUrXZ?8<4)>s?2#&~D*Nd4SLK>XSV
zy{*d!X*UR&2RnC>9UP$f_>D-5Ld4wM*lE8CN+k7`6s9GHU^e><0@*T4@6Da>7i$bt
zq;!cJqaTbBuTv|Z!GDrON$p>ZY)EbK^?7Dt{g(#yzYSJ+9z<0)yivb52VCx9kkEzA
z!81%+^G%Vw0@{lYu`kwLnPCH5i;n53Z+{|(Bn%WKdiW4U%J7+l3MATWObX@#w;$B{
z)JlRFi$KZn>jfo?8`F{Gec_c%jniYr+-rBKd13=;m+I#PfX0jpDI}&S+(2Y{_a9<+
zK!F5%-1V4PBWx*7D@H>oGIdhlC`QJ{;jpr(F(ow
zH3fd;4p#sT7Lr-B5is27lHbk;E}S-MOB`EIhYyOOyuMZ1G{ITg5HKw!BJAMBTtwyw1j}(bES*gt$6@J?l
z(}C`r-6+?L>u_t^IMGY#I;klR6X%B@J!D$kC-2
zIy$*^z(j!X-L>#|lfS~|BaTUo0QmZ${9QJTTTEq?#uT$6@wZ`y4`d79MVGRIXKYlK
zDMu~bY`^GG_PgaP7!F^Zb^-mM74~yG4Tdy++hb|_7nrIXf;#*&<2kUEU{cHtf*GRx$gthVN~l<4
zG@{<)f^(<<+jLc}fQk40kE#ZSUV|!sTNi=6yPA5_-rCFhYz`KXxVxM9{TCJ~)el)J
z?S^0mcrm-%UtqZ^EQ$<)dDR0Y!IejseSdC3hl7NcncJ~obLw+0DC@8lDB9oj$$Q=^
zhjSb(bTaZ9Y<_j2%a~k&3hA`k2O%u2HPSR5V*!5mGu*JCztfS=SBN_P(L85J%vMY=
zg9>j{a4%i=N$aMFc0{Rnd@zcTb0%>Z(W$!*sq!w~{OxC$TaaXl1}^rRRxA7NgX&?K
zTtv5I3J<9CR3fUc(ISJvfcT6^?emhllS&+gNV6TukJ;fiDZm*OZ
z1`X{qNy8e(!~gro3V&r)IddYr4Ai^oWK0P#j`Si-jcV&b5NVy$@Es}KP>oML++PL9
z$@BBcaQ9xSEt)3$5+(=nCQCz+k3&N{%1GjLQlEl46Kcc`3>
z!jmROwY&-xwI=?$Xc*$Z5v$2PX9~E36^p?#j(iXx^0R$c=wb#Vo)3^?TNVIQ3x}aL
z_@{6R2AA3s0FK5ik*a#xZrVuu5ZKm}2QY1`5@~kZXgF$g0#M9Ox1=)}|J=+5kbrR*
z3XZ*f7i0yvG&%f1uRpaXGn?zMnJ&D>l
zV8D{EDS779ul65Z#bhsH&tAjZd3hodeRhMUoXAaAypfElp&$4BmMuUSFeE*~@WxGC
z6r?bK`^%9ZD^b%`?pLcFZNQZ*i9{`z+};`;f&p${v#(M{!^=u}PSk
zT*G1YM}6#@yGO_5DWsHwLYlgg@`y?=A+K)4)%&}&MvJz5wG8RTjMLt(^?$#8ACI;*
z${EYk$AS-y!QA=OqZ87W0E!w(@2mUWic!LG!H5O>a#lGmj~1GHeaz(c>n!(vQ)$gN
zhaXS!zj`;Me#AdWggW4U_;ey)jo{6cRyJo}tiR-L+R4x4evm0kO7zXFi)%Qk-RNzk
zEA(@O0EM{*slA{H+(Kil2(V*W!XUVN5JkxgOM+*>VLD^Lo(l5sXWz?;q)4gKVf1Dg
ziRBy@adi%HZC%=nmK#Kh{ViDj>wSWcVZu$mNFp~k>M;mRZju0785b1Vb`OU$<76}C
z*TVbhqU?JmKwK%(^lCuO(Uq%x;JsBRV7N9nEtr%N#F(mexqPGRzI_6CkMqmfB0wj-
z_G6W$jK&gEI{o3ckuKHg!A1?8u7ZW8FTe5y{Y_DD~DoLl>T%7T1xZruJun($?-bGhtn>sCO?2KM3{k--Isv}xJ+7P5A1yp$v4J08M
zE$`lFQ-OI;H8(M$Pdi1P?3pfYf)Oo6ay$kM9bX~b`(O7Heb0=n}vt>k)v0f~?T%OV{gc^Y$Qs%`2U>JadN~
zjpcywAA;DbPLJ3fAfrm`^6=GRW~*9}Ip8G6vZoNby(?gJidcFC(nxFDe;pBy1|d`S
zL&^=u?rf!eKjxm%eSaXV?rUGdA~8ho&B4)=ZA|&n@
z1K}%}SC$&h2QBowdL&F(9
z)}7rf9RmTeIeaiWf37k)4ge)FTuby{C}1!|I!27}xCZm!bD|@ZV#)Up^d!PJ0gOzQ
zdNI@3tVoI@pkyTQeu19G@)MLod>hL&lB5r#Ue8Q%O7y34
zL&&Q_&D$>BvmOsVL6=m$zp<*rOM26Mz8&t`FN_WX5aky@ZKMV*y|G9e4nP*i3ga}D
ztIh=kAse!Y4`yIwbGPmwfDz%iss8MpEJh###q8hjYJ@CsG)Ky`#)F#1c6G2Yv9G5T
z|522q$L}GBON<0+BCdgw781`1rBl{Q@1LvXX{;8}N5+bYTT|&?Nb{rkBc0lzBm`4_
zTq54tCVX=dq$$_K?mt2n$BPtN
z#-3&!{{OyIuJ>MRm?#}4V4J@t3LJDy0y9&)LO~5h2@p0<2ht|Ba!o5zG<88V6HwwO@MQV1zWuZ39xDG``DsgJB@Xd%MgeGigqATijwe;QUc%
zFd&j8Eia1R*{i6bt%+e}&y~EK>>&OiOJ(*$0-%W{7e?Zkc<0PHNowHpm0`S!W9=2r
z9I~Uj>U4f*L$@B&fFw>dn8G!x+Y>~GE7&-nk!uG=z<}zQe$-moK2Y-*9laQzz((s8
zq5%0@>yPy?4)*Ub#O8_<+~u9FVp@{l*`}TkS_wd~I+)X^1URaIxx3H~4kE&Ff3U*D
zn5k$jMnTet$$CRcHMKdviE3w-OjVX16%9WZ)YwQ-8nQj!GN(4ubS_IZ(b{
z#(r(Q<*Vz^$haS3L4XL!WxF-~ztuIrLCOeZSjW12;VD#bGdL7h|9T>|ujjMP1O^2US++Ttd`##5Mi~?(l1Z(UDEEDl>+nmvWys|RyyUNWBFx|q7
zE=frXlTO?Qy8`1QYMFX#J$zt#F8$ICNl0K{alyo_B=IXz3X;Wzibp%G%&gNN;ooqd
z;zmO+${LUTfFT_kw=8}PQUW*go8t7=(p<{vgtm`8tJJyt_mZ(EG!mB!m8+2CwqDWs8r9r!7x50n7oxu%ishaSY5(fJQG}
z7ipXcp_e$^gSgtEyP*CkuhVip|1=_rK75DxO{Zyz;bO!C5PM5O{iCnw=nS}0~*G2?3fB#Qo1W=%aWS7Uc
zjxzjNXspp&h+x~zfrsm|v}@&NtNNmAPWyU4P>D56Lj8cO}vw`6s|SFuQ;7)cvP}i>79Ly*^UM#3ZtJY
z*LJ8N0;R@cMN6#Gj7VcY(jP<|&&p_Cgxg_>g9d8+Z@;vTtq|dsc+?Ae>g6be41Kw<-q~*8W7)96wa|jTuVUdGcaV^Ta
zf&oorS(WEx$Zm%na@L&~xa^>$v0ltPDxqO`m`~pG(iT+%xi&0y2_suu7mWI&Ag0&W
zKWN|a*o5OHaj<^6Vr;$Mt57l6V3x07_uT9qJYPRt8Ojcthw?iga)wKVIww~@4}|KC
z9DSXbP;P_mzCTwd$l$ceTb}@3s{y?Oh2S965Q5G&?`l5)nT4f`+E
znMC^n9TL-?*KleWa*feXxU7y-I3315QL`S^5kVbiR2!`>Yyje>9NBj~9<`ug78g>y
zj%%kq94akT1FJ3d;G5`Dx5kJ?hEaL->3@Otr1FN#{cs=`(Ca@31e|WYu-&JaSD1Cu
z{$W1X5jVrBCztQY>q(M1K4`*zq7y?L0_`}FCKthCupmE9d#m_vu5UN+MiMTzn=>6^
z=_HgDcC-J1q#NKfrnYSJtPJ)H6onksUjg
zGPzyFcgeoT1^hIj2^%ViWht9-pzr7}<9F#T^vPgtc1Qp-c13jhug=rq(Ux~eK^29K
z#&5|ou>Xbiomou|@yXCFI{YIn0PjvPEaIlMISZ%-xXx76uxKxc(-Fa>XE_X*Ob_JW#p^yi2igoU`r)W?|{%;dv)U8zUj)cU@p<(YRmkrS0w
zfwcMU>G$Uc)J8?+B&2cS;+cW$hZ^Kv?zI^sP0k1%8h6to1|Dz(`GN2sM~dUv`+f{V
z>dy*kz1DqDbYJX(^$A^l5`b7|l9@n25VLqc5)O~!N_OTy?pMgyx#KQXK+p_luGdHD
zz1uizhSYcI(RSJm?2R?#frfS-Ci4YYesJ*F99H`lYG|FScG>o*8*-`2i8Wp!S`SKKMAezAcgHs(gO_QN*N
z+EHN2l~5zB!Vn^fL+3n<
zE3R#3ZClFOn1k#rIKlpU{vs
z6U7w#zm=BotqgjxAPTd~S^8!qFRA-0zP*eUocHU|4C(r<$VBf{Cq57hF4JPxDWbRc
zh*}oM84n~ES*d+GJ!t-Ge;OY0ZSylg1}Uznj(+sEp)^w9?Xz0PlvS-o{Peo1!Mtg|
z@&d4{6liC^b~#d|tx(WIT~%G-MQkWIOO-}YmL~r(g);k7y=5&?Z6c!W;4-<>N=Q<-RqM{91BL4C>3v(TV^TDo$En-wRBW&hh&r&!^Jc-_tCMu%Q
z$g_x>r(@t)EE{L-RWXe>&%2ZMJaG0e@<8g>z2-0Hmmi8dta`1@2w&HY#dX%-L;6#p
zf8rlRAqR0GKfeSgi5wvB?VY$+DSB9
zhTB;wf{4Ze1k2lD6G73z-si!yk!r3OQu0!|!qCe+4EI2XgJTp}l;3aVq^Jzl&f8!K
zjt@ZJNzF!cPKuE19bkI_ot~g^zsAn~V{u_Z^3-D1g8kEhsp#)&erGJd0QRUnCh_l;
zX}4oTfiAh6fBSPsrFrxQG=)4rf&>*2Fn;QGBV#NkxuboE_Z|)-7d%%6R3Sd;A`A2R
z>P0a^gQO7%wf$Fr#ctlS%Wj6$sATbCj;i~*eFp`Gd(bz99}`tHc}4E8aL#4{qM>Za$GMSt?X97hscQ5k&uKySFq`2*}Qb6*Cxf1~4
zdszUZI=&jU-EbHqjW--1?t`G`rl>N!jA}uz{wE=a4t0m++MbDz^?+kyb)_$bX&a^U
z=Gs&NTM7s~e0yG$tLhCVxC?m{vR&xp^!ny0n=jr5d0BXZV%5i&^
z(@RKwYOIzi<7$Wy1@5ObTQnBtwYE`x{)aRFK*1mD=MpLEOg?xZK4Z+tRch5#CnxUe
zg9-_*BscQ%z$%d>Zy^6~es)1ZBizdd)OF_sUpM#m6Q
zO5u0r4_0RDJJ~T*UH&q6Do-{CO)a@D5KfH+n+7NQ7NqaOymo5w5OsUQ4+SUXHr^fx1m+^ozBrqIJXmDhme3&-&v
zZM|~_u_mG#MI@R(`HS72l-pCzCvnFiLx#y7m*?Erb&D1>;}ai6u#K5OxfRnd^rA9+
z+4V+QC7+K-2}1v|P=$e2C+GaE4~c^0OF&(btqrnZHNkUA*eNw|MAeh9u3^yKQ!b_1
z^8`d}_ZRil>X5;h3*eH<@Uvs>@A){mG2g~ds`
z=^r)PNmjK)?F4J8D`)`nS|F2t9=>J7q#nx_`^_Rb
zqEp6`41Os+0<*O5D+)XoV<;~+5?9Bqg41H1B#{CnsR=T;LknJj{d`U|1;!^afCSjV
zjJIu%KFWm_D?#66OcBjgwSNI!p3~QGze2j2-LX262~U43kdKD9Hv3Gv!
zd`3@Ja0t1B<`WAW5>Br!^`e
zNUptZqpnq(A@H@_AO#{Kw2IAu!gNc1O+OI5*fj>`bi?sPQ3JR%Nq?grqWLAb$*q!>F}7|L3bn+Hz~XyWWa;BJ3?ybC*L5<`xk*hN`XE*?yR|6J
zyXv4pv6J5VqP-RK)D0UwSev3Fk59m7vNF8C^TXLXHk)Z^{qhn{2M(_S_+`@1{Ym3Q|=c
z+}RW3p8ou3o?8>s^1ucW3J2KvYM=*#2zdUALtK0e7`DGoQi}BAm`=~!nJyI6Vt)+@
zWO2PZ#!&^DMLK@Fh&l~)Ha3SmQ7!5h6s1apIlw7OX`NJ69g9s%X9eS0QQ
z&Psf8)-)i|ky_?;IfRaODM=z*wZ#)O2G;NXv?U&`i|e@oL*=DauWeFFoqX55mXTrg
zH1(1xm55n(MQk~v{RO<($s=Br*)j18ot-@x>V$O9`h4mgweMF3`YkWE_w79E>rLn~ELA*I
z8~?O@^bBmY$m{)7a%++u5CRB@eusI#H=4?=CJuE9Ms8Q(58gezqO!!zDc1?lMfZVJ
z-oL1T&~T2mq8YZ`-UCNOK7y5k+}I^Pr4SkWZLO-J#@1zEd@TJpm&L0ZfCbYh)l}7E
zJ4mx-iGgQ?ha(Kg?Eaz;V%|p-^9O)pZ~wgn?l@>dAM-Cl!E|EI7JJH55B|UYqKS~=
zlyB-rPqbNPFzOYg2-B^#yRrl?Wr{Le`)VV)h6u~_{cJ4Jr<(f1dIpAPFw|WkA$*ud
zf9fvb>!&@G_s}iuz1kRD^}383fj4-V(((6#GJ{8}SYGX$xbVFOM`1bY2c3@Tk
z3@!piQqWl`Ix?O2gv~9K{s`Jh2^zuI3>Z%{Cu){M7${`42vvz`L6py&g^FdM6#ine
zBfQieo_52w%>%P&Th-U-wE!DFz22#i<#~PqO7LWPSvslGcH+uv=*)z1tCb52amg@D
zbLsmE>i}TNNv;~gg+VdqRLb4mXpxM8ICuj*8hoOBqs_xbFc29mZ(S;GB7*
zf(Ow$(ElwWn1$!j_j+rN&|F73-%`78)aeA|cX4}vK&L^U@hS(qG%k^TRwaGns+yVx
zJr9RYGS};s?FJ%YZotn~16QUyeiT0pL5yNhmeTLg(_lxFxpi_n33ivlCk1BpC!L<0
zc_k7`bRkG4quXnOj+|E_1BLoMrgU@>0k>4KkkEHnkOfLnuJVqUK3{x>R6i=LOV5uu
z4$2rlu|Sgw@*g-(6Sf$c&2pis;9Pb3;P)?U!_8;>T_=(tD
zYRFWz!~f)lEo)d_gxz{wi!N^WuJV?rOe>eF1);bcrU|Gz
zA}5ZdE{L3MyHSVRXE~MIz>BDpue(p1Q1jPk_5Iq{*ec_?4gdBAe*45@(70
zGkrqWc67TU6%7=&gSym0;biu%56Ba%mRQJ;V^>3wW60R}t6yAp+novv|Q
zYp0I(hJ87w7$EXNaGGN=m2Dz~Z1gbTXKoaoSJ;kYnr>80i@cE>gd-(R
zZJpCW8hCII8%ISDFGkS!mhFSD_jol{Ol=DV))n12kzds;l&C{`!%Cbjj)c)Vn0X0O
zAXR2|A$?pYZW;`{5`+ZLO^e!5k_dS8?zt^XcM9zfJn}jq_~j~r6nG$s!1h$`6k3vL
zUbudAD5=~Q5#Ix(1+~`n{AWx7I$FM|VgfraxJrkgRPk=yL*MQno?
zC~p>+{j2?R0xF0sxjSjOv>SzqC%}5}w{H${*H;BwZf7K!;-Bb=!QeK`E}-wdH@u2l4;l$rasyWJ37nx#IQ(XY^gqiB=aw>l}s)r3QO#
z$PL${!hxzJ%urJWJQG9T7PeP?(uKw(pAZ-USG;~k-?Gjba5p%*Ff6Rkl~@9WPd)+VV3UW
zol8}Xqt~~rVteB^oHfVOQ_!X5FoP?eB(dUO1O<`<484<@=tn@rp5-^g-u!ww2jbcy
zhd=6qE8celPH&RpFUvh|+s}<3zL$(SQY9)By5Jcg&LiTHIW
zA|5XUG@JtGM^`xSr+#Uk_Z>2PK8*;cLEl0!P{JNkfI6Sl=-6V6GOWOEH;?YIEV|Q|
z1e1<)HEvOi+Gwi=i+o4Vy94$mI_Y}6Te8KBY&YWG8=O=nP8@R3S_y{=jC-i$%;cKq%}HEMQC$
z;z>JDEjQDvthl~Jo*ZKLZU+Z(<%aSSmg;y>L60Dz$QX&N<7hYO(}0p=G$*B+3fPW*
z61+sqgJpQZyJh^%pSh7$zZhK~s~gOHUe0TCdBfR-lpCFm9XX2fsm?8gdjL^2X|tR9
zaMYbu=^(l(<=~tijo}ErY|vD@_&&o#CEY;g1QHWYh6FY3`2s*J1Qt^_7=HJ)r!ZA~
z1A{)E!5XCe$~K=!6CzPaH-UD~W_FJE(~AEbOzH7-dA;*rWPUGq!Q0S1zV;~ql!3vD
zXf`x?YBu5jJx&dgzoM_Z8^F}bW9{sQ00IsCnEGT5XNPx-%Pa&{G|F7M!R<6v)i){#
zQ1Q8SLe5`Gt1l&RqOz&_x6!}4S__jhxGMx^L9*#z>_M0nTMNm!Aq=u-b??m#DX1;1
zRd{}n06Ww);&88p1!epUA9^G~nz*oJ5J@@}-au&AeqQCKz;*W;pC$!Cg`dglD?{2BPAJz4?L2YQ{wDW8!KR~mZiN#KXr%{}
z5XuM^v&chZ;|_pOQxLHddN(+;yI+AqL3eFZEhAxU5E?A^v5}VGB`Rs>Tn6cnb2Gka
z8ho{z3mr&gATWGYFvpwC7+har@OOIdANT{05QnYm_~{=2mSRxEp|TicdHPq*S4PPa
zqbS|*Ph%B4_k-HbUW-tBr#;6c>yW5O29e0)vRik5ez6xkuch9-_e4t+wb|9Z>%2C7
z^(dIWrs)eMgb^zm%k>}&Uf1IV%W5Zbu2P#fODjEuwICIeuXR#Hnl9ImZGOf-`v7r|
zQFU0M0@;c%$PIAtedH#iMjE3am~!bPsVa_wh@l|yb0)^gafBbbDZE`@2Wf`Fbr7}W
z5OW?E-^X?`W9>VwP+=s9xgqiAvq`Hi5s9avnuY=l?&%ar12O}`17)&bIApVFx~y_vpUD)VL5h(NZ!0#o
zi)OUg9Z1U4=es4=u&72xkX;A2*}7u2%A&$)fP8S9vvuZssB97@g}i1$_w>mR+LTVB
z0wEaxF`}-_LFU?30N73_d2MKx}(kH*I`l_r0&w>$n&Z07tR^3SU}UxPHZ(
zmmXP7ha$@TN$eD2E5nY=*yzxYdhJ1P47i#xOpb&Zn1KO8e=q01%{d2ucHid
zgmp>#(~B5uwW&OaTehSq0T=?90}VdD#7(C?+=kQZCG!#9S$*
zC+>JCrJAK)%eqT6&YP&0N1a-4hLu$z5@8b8f+*eBxyB0ee(wk-+0dOlmBNBgp2(bD
znD3Xw)Z;HrpVigWR#6WpiwUAqo;$5!h}7T8miVaY&7$YjAqK#=QvG57IPZa0C%TODM3IrjrT
z*sEqrMn&Wcn=X!2aU9ewK}drAcXAW~U|GSOfJ3Eub>2(4)5Q}{X=S`r>TOO5Ys-fu
zkhhl()xOrD!ug8?y-jFHIi|+>BOR(n6$oj>6Be5smPzZbp
zEZfhX{Ym0K;uL8vG?Bk0|e9A$2gF~ap
zkk-`27b~82xj`F_f&FfYYLbq{IM3oJ01`pek=95I9BK5~a@D!d{rv0C($RGYB1f7P
zmm3%^?4|p_=OIA|z;3%$(i4pJb*VZ}dD7E^kDbfe{-tx#^Z0PQUi$jNb!YP7@v!pn
z{-piquIrJHiL(x0k{5DxbJV3M9}Mj(ouiX$>22b}l#nqQ9BzSB(%ja^6?JF*
z@VL%!hNDPk-WqM?uN{wS=iNkR7gUTt);7K7GoApDQ|^9|{VKwOKo8LXr%+h0%LT+G
zx9=4&kZGBq96#OLj8UH{bS|%UW41`mw4i*E0+ocj8|!ie$60cm{bcXrwn~L;5dLNV+;nw=~Q{+uhaBzz00!6R_a;vA3F=mxj!2aol?YLgjUD;*xEoY!dAW
z3-Erg@#ec%6~tJxqXhBXB)ObE*eKCqhe~EyM}5t!C-)0>%AFDl2ah;uH8>%WS?##)
z&c8}yz@mGD`p4dL+6nX65hnNcQ{V;{SfUp#a{JdeUt-1yX?WvFT2PKM@jFGOeXb@v
z{5gi5-QnkGc#JS8QkRmX5Ug_lPTnrKd<>|8YZ90yA}{9UES{|O8ieF`km&%COEP+z
z%s)oD7$wKLQ)Cn1h(PjQDcu`~?Hy|69WZE7jYHg?mnKd<&Terqq`djd+~2RxP+&NY
zr-nAxlhU8T^|-UV_p4p|`6UHOXXNJ_k4yU6qB>zK13dcSk1c`ic#W_!@p!lC)jcssGJQIHr)qCn=FxF|g6~rU{nO%l?P%j)jez-%5I--E5{p2J%m5=-2)d
z0-1!2#)!o3^^A%wcaa3h5J$tMSKtNw02!O{{W|}2{s8E{0p~|fI)Aej`)^IfzuMU|
z;K*Dw(RwP!srj`@E<<2SBi@SY5T54F9hF~b2zm?L_@|$_d?K2J>hv6EL=M{q1{S83IJX%?QOjUob35rLOzdDMm+^
zcP}=X-`ZZa%**EPy}Yh`VXr@v=(2YXxhqB~QL*y08>_v6#8Zj#bK&c5it^KbIZpQ?%_08flWt|Y>;)mEh9^Np=RF`a31A_e-J+kFU
zU6^|nlw%r~?|;Pto=&I0al~K?5TOQYR!Cu@sxHhfIO28#TfcgN5qs9^ABRwxC{?~N
zftA3daBECE-nji+)LCvco}SoZ?t#s$-;Ns&nZ8kYKWMzZh|HW@aCg>|ijrK##!Q({IbMC*PrJxMy13u9K!S1SNNR>sh^OW{t*m9BvIG~)lS=Vx7s
zMw|2Bv>#kV1$#7A_(iiC4n(BOs$p|cUFXCrV@*>pKE!s-ZzKTaTwc)3NyVl03oo7M{h$)*JJwiSU%Jl=oH1&wd4^;5M
zltOe;3^-Ajs?9gnbt3vs~-yW8!2DT=`
zznB+Ef1yF(vRS?7xXHd!)e8y9Z!kNSvsQL`hW}U&
zxmwCQ+U8<+K9xH>6NQNgDr#RC8|oXWSPJvXPqQJC7R_xa4H8}?V$VXi?-N%iI8E=$
zEPYA><{Rc&plxD;5<0EWauDhy#^Ux$^X{N~5^*T6oL5wPastWd;G51fF5|Z|KKrwj
zG|+chIvjJr@*ZTuAtoAhoD2hQzbU{(vSjSnGon9+LojqlibY-1;@US!LBkyrz;v;Z
z(7&KPw541Pkqf2i;vMBr@mEwzf)q1x9zcV;@!{BtwT>-zRva`VBczl3%Jnmg%jrZ%
zJBOtM)GbWT!sOdgQ{>JG=)EW;fw^yydM!Mzpk;HzX^x}eqJ{}^GRfAev-Cl^v(29R
zQlx@jFL%*m_u1nAaRDA0cVWm6PLb_n(49O!HMNyPdZ!*
zOC)cch(Jj*S{CIzQ(9FySx#)LlX*9lSyNfx2Xhz5BpE4BS*}3#>73({jBIxSsYM;w
zHkTaz6-|@vx-J(|`0a-EYg%1|*Z*uy8+SIe_QI)#(uMmvF_tw6@mX;$9&&L3$6Cx&
zAQvB0#pB>;wwv&~=W8W>MLT(!(%&3D!ifoHJ};^3;ro*1$cpWk_pL)>KHo11R3&h2XyOe<|=U!$XO{Yebar*@_LZOdUI4yViSL68$fAdAk?P!p^I>^Z|
z-JML~*3>RX{Gb#_aR1*aw67R10EvpBf-=!B{)*Tyhxc?u&VT+pN$sI0w`EdKTy}JH
zot%mhh0#ot+&b67Y~ouGCT2d^bfs?Mg(fj15UCoSrNsPW#s#MU3aICCP6Tb){WoIH
zZy6Nl-|1o8t1-6}rAPTvofenz1aeC@Y1Q7|9m4K}Gen{T75{9jb7X!0ik!`3_xGFA
zOzMUXLLd4CL`XB&B++ljq6!s8Yt+bROgcMm@S}f>wk!MjaH(KvC<1)Vj|M^=>|a#%3<5Rna5BywTnqfOrwO^b8X)Z1}v$IHm-#8eg*q09B@tE9{oGc_ut6EjJT7H*1IAf$4Xxu=1G81%9nNp
zO)zU{8w7AuH!_34q^3XgZSvoj2VR!IYMK>hf)s0&WbY-ogL)b9V?U5RdnDchYo%2omP@9ra(q*ospL>zjw
z)Wwsur<6GaAAI1wlx7@gQOh`|{h@E-y1i~0$2$LJuiW@-zv*OqM@-Cm^;nmX=byva
z8z>7esNxzEy5eqpTMV#lkRJ$(Sp+Y5uU_}vZL5{3kp`A#4I%&$($t6wm1z7%Gy$l|
zUFl1BUq-;>I_b1O2%z%yDLzWL2z(Wm~QRPGMh|E$vGT@%^+(BE)qAod%dkP)p!L0THCbpyHm$@N>!L?u%QUT6vhQ*a7$8+WT!vstU
zbYgr!;J3+g_7^7X^m*6+4a=Tu+((4&?x5VL>Ux$6hNB?9%aMEZa7N?^
zf9S_f#wh0wianf#m8}PRU@q9fe?yZ8ijfy+UD>}*j-Pa8AzoiyU2zah=)lmfn~S>pZtBj6dwzCw(S=W5XWv^N{R9aM
z1JM3)xZonuUKpXws`Yd0?E|&lzp0j)-ODS21Ay$dNZmZG(wx<;@_xFqQ_@wgV<5k*
ze9xI9%PK53cyG#|`8hXU01}YRKxWPc1OZ|(+~*DMeV*)uf~;52@U9-;O0b2aJAP^z
z)cUssLUDQf$bvaa1JahL6rJ=u*k?lRo)HooJ;BOW1KH7S7E}KulPwcU2V8Jftn~zxj97
z;n>%X
zc4Fu$COcdu*?a1bsY@QFI~7-<-Bgv?eG!LbxM@pZr+qnLp4I}B(lL(nwLKL}kTMnK%Wn87|
z-V;#oaIpn+C=#pmYaEk;MfG9V$*VY+*SE9~k>?BcD)Vsy#M{ar3lgyXlx&pXQ80l1
zT%`xHug0Z-hpTJ5s%{hg9n72>PQb2SmI)#@_|^}fm1r=4{VNGdIv0D3ToE}l;RCm`
z`}3bYB8dJ!HC|kI+&C1No}B{1rFYEEp07B-Rv{EDl&^8|kDhN4T=C-5?d;uk=5Fm#
z;}@v5H3vV>AW()bv+oB?JyP|83=CU25?^jFv&<(CBza_}e^;lhKmvfx&1wJ(c-{?G
z;X_fh3=uycZ5n*Q^!%5L5CU{UGlwJoZEVACl0l|md27?5He}w1aefG2Y57{f{D3jn~<-$fCp>xsoeRDPIu
zo`(sufa6bJYlzQ%6dIOG+g8@rl(cbqNT*Vvdtl0aH){>bC@qvF9UY07QW_Z=_@KUF
z*Xu2sBnlXzAYjuORKm1po-T9k%`iv075(X6lOdaCRf;&Y{ulj3f6;IG4RK;MGAhV0
zk>bG0i{dQf_oE|grQ1}-kGf3K>2k~-s{E?(AfuoAOrY5t+y<41vN;)Vx3oKs=ngluweLeAljfp44@aWeG1Q(#c=
z_;v!Enz20F5sMR^5Zs_9_1t06T{=4~&$I0pnV%c0!-H!3^)L+D$z2JtV~(!j6Hut?~=>Mx^%T<*QajRwIh`#y3YCc5=#XO4i*G}
z2e1OwMF@U?K;U;lW>AK4jA>Jb8xL=7Ii;vBaa7RyzGf+)u3@4bwH+7i2E?iRffpl-
zc~CKmM^9%pq+it>ZuIEeN?gSJV
zFi-1$#2d}7y;;ZnXYWSrcvA0MS5r%RbXi=1*XhW?!(wAdE*25X(3XlP+g4KcLf7p|
zR|TK#Vc(6QDA=n-<=xels~1RlM)>zC#SaW<#zA53+skaR_bAW=^nSwX(G=KMeeX^t
z>|MfS`FW`PIEM-j3lOtMshNncxkN3qAaif9Bl7S}q6M;ZLlF9)5Ca0Wh_VKVMd9Wd
z-=qCCCYw{oDM!Xc8KrPCCZcwPL?1^j51(%cU;r|1$+?7WjykK2Bi%r!Yt)AB|>QUU@Nv9{J0ejl~!
z@Ip#Myy!{4hBW*s1bB2=bZAHxYGH9v!5frw(peLEhpy!lm|g2CW(lGYM5)5rwYa=+
zfay5rPEp2^w=k)x2ZoF=@_I81?pR-uDX4cS00<7tjze&b|KiJpImu$+=9=-cXrM+J^EYb5k1b(wRGuv8|;8({DN;Y8~Qx6K`r?FqI%*N)L!o?XxdDb2tl+PRM8^qTk$jZJw4ZpI@>X=#0P7T~(PMKe#Bt
zmp2SG6?%PVRN2HmvOa~&XmU-h0#yn1(eP@!d@aOQcBZ|nsSc
zJ_;6(pV&FfZ|H>uULB|}vwrSuUqkPL=G$EUMY5R49gG?A=x0M9(f!MMy?Ho8LRj<4
zr3-wkY-1uq`zYmba4%tg%EAm#94tuqjg?vn6+>n)TI2Jo3`g7V&qrdbKN#TJb>hN}
z(V<%Lz!`Pv<79}d`|trX_>KNh#%*;Q0fx3{1hAqb&8u3~FAL-l1M|l$t