From f73526bc2042299277459ce8d54453280409417e Mon Sep 17 00:00:00 2001
From: "Erik C. Thauvin"
Date: Mon, 27 Nov 2023 10:14:53 -0800
Subject: [PATCH 01/56] Minor cleanup
---
.idea/libraries/bld.xml | 1 +
lib/bld/bld-wrapper.properties | 2 +-
.../bld/extension/ExecOperationBuild.java | 35 ++++++++++++-------
.../rife/bld/extension/ExecOperation.java | 25 +++++++++----
4 files changed, 44 insertions(+), 19 deletions(-)
diff --git a/.idea/libraries/bld.xml b/.idea/libraries/bld.xml
index cf75013..be6063a 100644
--- a/.idea/libraries/bld.xml
+++ b/.idea/libraries/bld.xml
@@ -6,6 +6,7 @@
+
diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties
index 80e04df..33db783 100644
--- a/lib/bld/bld-wrapper.properties
+++ b/lib/bld/bld-wrapper.properties
@@ -1,6 +1,6 @@
bld.downloadExtensionJavadoc=false
bld.downloadExtensionSources=true
-bld.extension-pmd=com.uwyn.rife2:bld-pmd:0.9.3
+bld.extension-pmd=com.uwyn.rife2:bld-pmd:0.9.4
bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.1
bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
bld.downloadLocation=
diff --git a/src/bld/java/rife/bld/extension/ExecOperationBuild.java b/src/bld/java/rife/bld/extension/ExecOperationBuild.java
index 40817e9..b910652 100644
--- a/src/bld/java/rife/bld/extension/ExecOperationBuild.java
+++ b/src/bld/java/rife/bld/extension/ExecOperationBuild.java
@@ -35,7 +35,7 @@ public class ExecOperationBuild extends Project {
public ExecOperationBuild() {
pkg = "rife.bld.extension";
name = "ExecOperation";
- version = version(0, 9, 0);
+ version = version(0, 9, 1, "SNAPSHOT");
javaRelease = 17;
downloadSources = true;
@@ -45,13 +45,13 @@ public class ExecOperationBuild extends Project {
scope(compile)
.include(dependency("com.uwyn.rife2", "bld", version(1, 7, 5)));
scope(test)
- .include(dependency("org.jsoup", "jsoup", version(1, 16, 2)))
- .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 0)))
- .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 0)))
+ .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 1)))
+ .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 1)))
.include(dependency("org.assertj", "assertj-core", version(3, 24, 2)));
javadocOperation()
.javadocOptions()
+ .author()
.docLint(NO_MISSING)
.link("https://rife2.github.io/bld/")
.link("https://rife2.github.io/rife2/");
@@ -61,15 +61,26 @@ public class ExecOperationBuild extends Project {
.info()
.groupId("com.uwyn.rife2")
.artifactId("bld-exec")
- .description("Command Line Execution Extension for bld ")
+ .description("Command Line Execution Extension for bld")
.url("https://github.com/rife2/bld-exec")
- .developer(new PublishDeveloper().id("ethauvin").name("Erik C. Thauvin").email("erik@thauvin.net")
- .url("https://erik.thauvin.net/"))
- .license(new PublishLicense().name("The Apache License, Version 2.0")
- .url("http://www.apache.org/licenses/LICENSE-2.0.txt"))
- .scm(new PublishScm().connection("scm:git:https://github.com/rife2/bld-exec.git")
- .developerConnection("scm:git:git@github.com:rife2/bld-exec.git")
- .url("https://github.com/rife2/bld-exec"))
+ .developer(
+ new PublishDeveloper()
+ .id("ethauvin")
+ .name("Erik C. Thauvin")
+ .email("erik@thauvin.net")
+ .url("https://erik.thauvin.net/")
+ )
+ .license(
+ new PublishLicense()
+ .name("The Apache License, Version 2.0")
+ .url("http://www.apache.org/licenses/LICENSE-2.0.txt")
+ )
+ .scm(
+ new PublishScm()
+ .connection("scm:git:https://github.com/rife2/bld-exec.git")
+ .developerConnection("scm:git:git@github.com:rife2/bld-exec.git")
+ .url("https://github.com/rife2/bld-exec")
+ )
.signKey(property("sign.key"))
.signPassphrase(property("sign.passphrase"));
}
diff --git a/src/main/java/rife/bld/extension/ExecOperation.java b/src/main/java/rife/bld/extension/ExecOperation.java
index 377dad0..df6540a 100644
--- a/src/main/java/rife/bld/extension/ExecOperation.java
+++ b/src/main/java/rife/bld/extension/ExecOperation.java
@@ -44,12 +44,14 @@ public class ExecOperation extends AbstractOperation {
* Configures the command and arguments to be executed.
*
* For example:
- *
- * - {@code command("cmd", "/c", "stop.bat")}
- * - {@code command("./stop.sh"}
- *
- *
- * @see #command(Collection)
+ *
+ * - {@code command("cmd", "/c", "stop.bat")}
+ * - {@code command("./stop.sh"}
+ *
+ *
+ * @param arg one or more arguments
+ * @return this operation instance
+ * @see #command(Collection)
*/
public ExecOperation command(String... arg) {
args_.addAll(List.of(arg));
@@ -59,6 +61,8 @@ public class ExecOperation extends AbstractOperation {
/**
* Configures the command and arguments to be executed.
*
+ * @param args the list of arguments
+ * @return this operation instance
* @see #command(String...)
*/
public ExecOperation command(Collection args) {
@@ -74,6 +78,7 @@ public class ExecOperation extends AbstractOperation {
if (project_ == null) {
LOGGER.severe("A project must be specified.");
}
+
var errorMessage = new StringBuilder(27);
final File workDir;
@@ -134,6 +139,8 @@ public class ExecOperation extends AbstractOperation {
/**
* Configure the failure mode.
*
+ * @param fail one or more failure modes
+ * @return this operation instance
* @see ExecFail
*/
public ExecOperation fail(ExecFail... fail) {
@@ -143,6 +150,9 @@ public class ExecOperation extends AbstractOperation {
/**
* Configures an Exec operation from a {@link BaseProject}.
+ *
+ * @param project the project
+ * @return this operation instance
*/
public ExecOperation fromProject(BaseProject project) {
project_ = project;
@@ -161,6 +171,9 @@ public class ExecOperation extends AbstractOperation {
/**
* Configures the working directory.
+ *
+ * @param dir the directory path
+ * @return this operation instance
*/
public ExecOperation workDir(String dir) {
workDir_ = dir;
From 70d266d52eac32235fd86f10ff10ad428872b5e6 Mon Sep 17 00:00:00 2001
From: "Erik C. Thauvin"
Date: Mon, 27 Nov 2023 10:22:00 -0800
Subject: [PATCH 02/56] Added documentation pages workflow
---
.github/workflows/pages.yml | 57 +++++++++++++++++++++++++++++++++++++
README.md | 2 ++
2 files changed, 59 insertions(+)
create mode 100644 .github/workflows/pages.yml
diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml
new file mode 100644
index 0000000..f6122cd
--- /dev/null
+++ b/.github/workflows/pages.yml
@@ -0,0 +1,57 @@
+name: javadocs-pages
+
+on:
+ # Runs on pushes targeting the default branch
+ push:
+ branches: ["master"]
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# Allow one concurrent deployment
+concurrency:
+ group: "pages"
+ cancel-in-progress: true
+
+jobs:
+ # Single deploy job since we're just deploying
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout source repository
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - name: Set up JDK 17
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'zulu'
+ java-version: 17
+
+ - name: Build Javadocs
+ run: ./bld download clean javadoc
+
+ - name: Setup Pages
+ uses: actions/configure-pages@v3
+
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v1
+ with:
+ # Upload generated Javadocs repository
+ path: 'build/javadoc/'
+
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v1
\ No newline at end of file
diff --git a/README.md b/README.md
index 2a94124..10a9aa0 100755
--- a/README.md
+++ b/README.md
@@ -71,3 +71,5 @@ public void startServer() throws Exception {
.execute();
}
```
+
+Please check the [ExecOperation documentation](https://rife2.github.io/bld-exec/rife/bld/extension/ExecOperation.html#method-summary) for all available configuration options.
From db12be1c4c9c18c27f50d9ecc6bcc3e3406f1650 Mon Sep 17 00:00:00 2001
From: "Erik C. Thauvin"
Date: Mon, 27 Nov 2023 10:30:31 -0800
Subject: [PATCH 03/56] Fixed documentation link
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 10a9aa0..3f613d6 100755
--- a/README.md
+++ b/README.md
@@ -72,4 +72,4 @@ public void startServer() throws Exception {
}
```
-Please check the [ExecOperation documentation](https://rife2.github.io/bld-exec/rife/bld/extension/ExecOperation.html#method-summary) for all available configuration options.
+Please check the [ExecOperation documentation](https://rife2.github.io/bld-pmd/rife/bld/extension/PmdOperation.html#method-summary) for all available configuration options.
From e4412eb1d6144b0d1a971f473b605c392755256a Mon Sep 17 00:00:00 2001
From: "Erik C. Thauvin"
Date: Mon, 27 Nov 2023 10:39:31 -0800
Subject: [PATCH 04/56] Fixed pages workflow
---
.github/workflows/pages.yml | 2 +-
README.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml
index f6122cd..2120d4c 100644
--- a/.github/workflows/pages.yml
+++ b/.github/workflows/pages.yml
@@ -3,7 +3,7 @@ name: javadocs-pages
on:
# Runs on pushes targeting the default branch
push:
- branches: ["master"]
+ branches: ["main"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
diff --git a/README.md b/README.md
index 3f613d6..10a9aa0 100755
--- a/README.md
+++ b/README.md
@@ -72,4 +72,4 @@ public void startServer() throws Exception {
}
```
-Please check the [ExecOperation documentation](https://rife2.github.io/bld-pmd/rife/bld/extension/PmdOperation.html#method-summary) for all available configuration options.
+Please check the [ExecOperation documentation](https://rife2.github.io/bld-exec/rife/bld/extension/ExecOperation.html#method-summary) for all available configuration options.
From eda0df169c5f95ae2a46a654ad70d5b17d58c8df Mon Sep 17 00:00:00 2001
From: "Erik C. Thauvin"
Date: Mon, 27 Nov 2023 10:55:11 -0800
Subject: [PATCH 05/56] Added failure modes to Javadocs
---
src/main/java/rife/bld/extension/ExecOperation.java | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/main/java/rife/bld/extension/ExecOperation.java b/src/main/java/rife/bld/extension/ExecOperation.java
index df6540a..9efffb7 100644
--- a/src/main/java/rife/bld/extension/ExecOperation.java
+++ b/src/main/java/rife/bld/extension/ExecOperation.java
@@ -138,6 +138,17 @@ public class ExecOperation extends AbstractOperation {
/**
* Configure the failure mode.
+ *
+ * The failure modes are:
+ *
+ * - {@link ExecFail#EXIT}
Exit value > 0
+ * - {@link ExecFail#NORMAL}
Exit value > 0 or any data to the standard error stream (stderr)
+ * - {@link ExecFail#OUTPUT}
Any data to the standard output stream (stdout) or stderr
+ * - {@link ExecFail#STDERR}
Any data to stderr
+ * - {@link ExecFail#STDOUT}
Any data to stdout
+ * - {@link ExecFail#ALL}
Any of the conditions above
+ * - {@link ExecFail#NONE}
Never fails
+ *
*
* @param fail one or more failure modes
* @return this operation instance
From cabaef9d2f813afcff7481199913900fd24e4e05 Mon Sep 17 00:00:00 2001
From: "Erik C. Thauvin"
Date: Tue, 30 Jan 2024 23:17:01 -0800
Subject: [PATCH 06/56] Updated copyright
---
.idea/copyright/Apache_License.xml | 4 ++--
src/main/java/rife/bld/extension/ExecFail.java | 2 +-
src/main/java/rife/bld/extension/ExecOperation.java | 4 ++--
src/test/java/rife/bld/extension/ExecOperationTest.java | 4 ++--
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/.idea/copyright/Apache_License.xml b/.idea/copyright/Apache_License.xml
index 15687f4..ade80da 100644
--- a/.idea/copyright/Apache_License.xml
+++ b/.idea/copyright/Apache_License.xml
@@ -1,6 +1,6 @@
-
+
-
\ No newline at end of file
+
diff --git a/src/main/java/rife/bld/extension/ExecFail.java b/src/main/java/rife/bld/extension/ExecFail.java
index 7811a0b..a6221b6 100644
--- a/src/main/java/rife/bld/extension/ExecFail.java
+++ b/src/main/java/rife/bld/extension/ExecFail.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 the original author or authors.
+ * Copyright 2023-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/src/main/java/rife/bld/extension/ExecOperation.java b/src/main/java/rife/bld/extension/ExecOperation.java
index 9efffb7..07743c3 100644
--- a/src/main/java/rife/bld/extension/ExecOperation.java
+++ b/src/main/java/rife/bld/extension/ExecOperation.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 the original author or authors.
+ * Copyright 2023-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -190,4 +190,4 @@ public class ExecOperation extends AbstractOperation {
workDir_ = dir;
return this;
}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/rife/bld/extension/ExecOperationTest.java b/src/test/java/rife/bld/extension/ExecOperationTest.java
index 1310726..0746988 100644
--- a/src/test/java/rife/bld/extension/ExecOperationTest.java
+++ b/src/test/java/rife/bld/extension/ExecOperationTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 the original author or authors.
+ * Copyright 2023-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -137,4 +137,4 @@ class ExecOperationTest {
.fail(ExecFail.NORMAL)
.execute()).message().startsWith("Invalid working directory: ").endsWith(FOO);
}
-}
\ No newline at end of file
+}
From f061f41123da07b163969441b28c7adc0c1a70fc Mon Sep 17 00:00:00 2001
From: "Erik C. Thauvin"
Date: Tue, 30 Jan 2024 23:17:38 -0800
Subject: [PATCH 07/56] Bumped to bld 1.8.0
---
.idea/intellij-javadocs-4.0.1.xml | 204 ++++++++++++++++++
.idea/libraries/bld.xml | 4 +-
.vscode/settings.json | 2 +-
README.md | 2 +-
lib/bld/bld-wrapper.jar | Bin 27321 -> 27293 bytes
lib/bld/bld-wrapper.properties | 2 +-
.../bld/extension/ExecOperationBuild.java | 6 +-
7 files changed, 212 insertions(+), 8 deletions(-)
create mode 100644 .idea/intellij-javadocs-4.0.1.xml
diff --git a/.idea/intellij-javadocs-4.0.1.xml b/.idea/intellij-javadocs-4.0.1.xml
new file mode 100644
index 0000000..90d3347
--- /dev/null
+++ b/.idea/intellij-javadocs-4.0.1.xml
@@ -0,0 +1,204 @@
+
+
+
+
+ UPDATE
+ false
+ true
+
+ FIELD
+ METHOD
+ TYPE
+
+
+ PUBLIC
+ PROTECTED
+ DEFAULT
+
+
+
+
+
+ ^.*(public|protected|private)*.+interface\s+\w+.*
+ /**\n
+ * The interface ${name}.\n
+<#if element.typeParameters?has_content> * \n
+</#if>
+<#list element.typeParameters as typeParameter>
+ * @param <${typeParameter.name}> the type parameter\n
+</#list>
+ */
+
+
+ ^.*(public|protected|private)*.+enum\s+\w+.*
+ /**\n
+ * The enum ${name}.\n
+ */
+
+
+ ^.*(public|protected|private)*.+class\s+\w+.*
+ /**\n
+ * The type ${name}.\n
+<#if element.typeParameters?has_content> * \n
+</#if>
+<#list element.typeParameters as typeParameter>
+ * @param <${typeParameter.name}> the type parameter\n
+</#list>
+ */
+
+
+ .+
+ /**\n
+ * The type ${name}.\n
+ */
+
+
+
+
+ .+
+ /**\n
+ * Instantiates a new ${name}.\n
+<#if element.parameterList.parameters?has_content>
+ *\n
+</#if>
+<#list element.parameterList.parameters as parameter>
+ * @param ${parameter.name} the ${paramNames[parameter.name]}\n
+</#list>
+<#if element.throwsList.referenceElements?has_content>
+ *\n
+</#if>
+<#list element.throwsList.referenceElements as exception>
+ * @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
+</#list>
+ */
+
+
+
+
+ ^.*(public|protected|private)*\s*.*(\w(\s*<.+>)*)+\s+get\w+\s*\(.*\).+
+ /**\n
+ * Gets ${partName}.\n
+<#if element.typeParameters?has_content> * \n
+</#if>
+<#list element.typeParameters as typeParameter>
+ * @param <${typeParameter.name}> the type parameter\n
+</#list>
+<#if element.parameterList.parameters?has_content>
+ *\n
+</#if>
+<#list element.parameterList.parameters as parameter>
+ * @param ${parameter.name} the ${paramNames[parameter.name]}\n
+</#list>
+<#if isNotVoid>
+ *\n
+ * @return the ${partName}\n
+</#if>
+<#if element.throwsList.referenceElements?has_content>
+ *\n
+</#if>
+<#list element.throwsList.referenceElements as exception>
+ * @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
+</#list>
+ */
+
+
+ ^.*(public|protected|private)*\s*.*(void|\w(\s*<.+>)*)+\s+set\w+\s*\(.*\).+
+ /**\n
+ * Sets ${partName}.\n
+<#if element.typeParameters?has_content> * \n
+</#if>
+<#list element.typeParameters as typeParameter>
+ * @param <${typeParameter.name}> the type parameter\n
+</#list>
+<#if element.parameterList.parameters?has_content>
+ *\n
+</#if>
+<#list element.parameterList.parameters as parameter>
+ * @param ${parameter.name} the ${paramNames[parameter.name]}\n
+</#list>
+<#if isNotVoid>
+ *\n
+ * @return the ${partName}\n
+</#if>
+<#if element.throwsList.referenceElements?has_content>
+ *\n
+</#if>
+<#list element.throwsList.referenceElements as exception>
+ * @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
+</#list>
+ */
+
+
+ ^.*((public\s+static)|(static\s+public))\s+void\s+main\s*\(\s*String\s*(\[\s*\]|\.\.\.)\s+\w+\s*\).+
+ /**\n
+ * The entry point of application.\n
+
+ <#if element.parameterList.parameters?has_content>
+ *\n
+</#if>
+ * @param ${element.parameterList.parameters[0].name} the input arguments\n
+<#if element.throwsList.referenceElements?has_content>
+ *\n
+</#if>
+<#list element.throwsList.referenceElements as exception>
+ * @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
+</#list>
+ */
+
+
+ .+
+ /**\n
+ * ${name}<#if isNotVoid> ${return}</#if>.\n
+<#if element.typeParameters?has_content> * \n
+</#if>
+<#list element.typeParameters as typeParameter>
+ * @param <${typeParameter.name}> the type parameter\n
+</#list>
+<#if element.parameterList.parameters?has_content>
+ *\n
+</#if>
+<#list element.parameterList.parameters as parameter>
+ * @param ${parameter.name} the ${paramNames[parameter.name]}\n
+</#list>
+<#if isNotVoid>
+ *\n
+ * @return the ${return}\n
+</#if>
+<#if element.throwsList.referenceElements?has_content>
+ *\n
+</#if>
+<#list element.throwsList.referenceElements as exception>
+ * @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n
+</#list>
+ */
+
+
+
+
+ ^.*(public|protected|private)*.+static.*(\w\s\w)+.+
+ /**\n
+ * The constant ${element.getName()}.\n
+ */
+
+
+ ^.*(public|protected|private)*.*(\w\s\w)+.+
+ /**\n
+ <#if element.parent.isInterface()>
+ * The constant ${element.getName()}.\n
+<#else>
+ * The ${name}.\n
+</#if> */
+
+
+ .+
+ /**\n
+ <#if element.parent.isEnum()>
+ *${name} ${typeName}.\n
+<#else>
+ * The ${name}.\n
+</#if>*/
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/bld.xml b/.idea/libraries/bld.xml
index be6063a..4bb3867 100644
--- a/.idea/libraries/bld.xml
+++ b/.idea/libraries/bld.xml
@@ -2,12 +2,12 @@
-
+
-
+
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 133aa45..5633e79 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -7,7 +7,7 @@
],
"java.configuration.updateBuildConfiguration": "automatic",
"java.project.referencedLibraries": [
- "${HOME}/.bld/dist/bld-1.7.5.jar",
+ "${HOME}/.bld/dist/bld-1.8.0.jar",
"lib/compile/*.jar",
"lib/runtime/*.jar",
"lib/test/*.jar"
diff --git a/README.md b/README.md
index 10a9aa0..a9dc752 100755
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
[](https://opensource.org/licenses/Apache-2.0)
[](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
-[](https://rife2.com/bld)
+[](https://rife2.com/bld)
[](https://repo.rife2.com/#/releases/com/uwyn/rife2/bld-exec)
[](https://repo.rife2.com/#/snapshots/com/uwyn/rife2/bld-exec)
[](https://github.com/rife2/bld-exec/actions/workflows/bld.yml)
diff --git a/lib/bld/bld-wrapper.jar b/lib/bld/bld-wrapper.jar
index e9d9403f37430202f3a06e4e410708ad0199d8d2..48bd8ab6f75fb0b0b6942745a8a3fe0bb59a0a91 100644
GIT binary patch
delta 25301
zcmV)1K+V6o)d8K=0S-`00|XQR2nYxO4zWI1kq&(X4zWI1k&iEbya{|sJm=oz
zPA0c)nsiG`X}YIbX-f+vT}YdhrerBe+K{#orpdGoO=i-WNf%a?eG{RIfVhB46;Ytj
zY1#@^Q9x8w1Qc9vn5!6xw*Hya#tkK-ye)rwmWY>nUrNwwoMlKnDQSw^
z?20jEFX;*O#FjA`#q-u%=M{Mn!`C
z;b>1R9C7A<9pjl7{q=-pHkC`?+~Dq5Fcj?xhoYTQUun~6G@q%kJG?8@8xC~WCE8oV
z1CcHbk2grqg*Kg@x#t?p)*bHB@D|&22A#=dZ64UNB`8Q$8&~+z0M4mqDoCxYCK3tk
zY3PY!KTBzuMaykEn`#n_km?czUj?Glk!g1E#)hGPY?ojH7g5m|SfGkl3JcU?wZ)#+
zmEqoAjKGq?2C}GCHl0JOF=tOG8VmIH)`Yqn0t2D0ZCGjXP_Xmrg=N>+bS^b8nZeyX
zSdm#=?|^EushQS-YF&|FAQo&NN>`?t#poi8lpOi%qT6hDD`8S`&ycjU57F-g+Oc
zXUge+?b#d&2=y&GKV6hGU>|J|iu86@?C$H$rA>5!MHkxCNf&{0b>|QuZUMx~wSgEm
zufkiHsxwH>#t~&O4MMd{ve~9C>W0L}!cJERQ}GBAyG6*gR=&2`)I%48=D=?>7S+0B
zgP(e-&!Uh`Vd@7Mt)gP#aBo!OVI63Mo_^qet2;5(jG?F+KC$p?#HJ{Lj$>9d)ON0^
zY3W>B)7Dnk(ge=&&_5E~8r&^Aiv=SgEO;mFvS_zWd+3rhIZf*al=lTt&R$BBJ`?ZK7dP*)(<-V@t~FYs$921Rs#
zC4I=E58Lz+-E9O|8aMsDfv#XpZ?A0oYMZW+ZBLYKw>Gb9Sy|WW-F`m$TqYf_x9JAy
zIJTvJRowz_7iqo8rkka;&}q#8NGSJFn{K6#LHF#6^u&S*0?o|8UPHOtqT89uJ=6~F
z?h5vc0DA~u7m0);b%_RxKAuoBfK%UpoNVyZUb;ir?31u@-nrYhMZ&uRn_Y3b3;Hw~
zjK#2=XvM|RaL7lWf}V!(l)JjRqCY9rKKeA;WPJ-N5^Av_3?lW&xX*%9Md*gM_^F-l
zwdp?kJXpk~3sdcgEOG+Y8OqXMwCR2!$|*wIwJptS>ss16I@i~=wAME_r3kEl90GsY
zrU#_=sSXK8>hGfmnV$CUW~lmKx+TyX4f->7ac#-cSY*KIk+MQdb=hmdmNwR`uWRaD
zS=ZFoQqxf8tgEH2p{}O2uGOCjp$?3wo&=U0D&7I4t9J$?GSSjmm%3k<`+f8^NQ9>X
zdgo!A9-;kE1aLZPHb=v~1F@iguo%>7LTM%VQo288(*cS@O~t~F%A8O5%lz
z5q~Bi?uJE2V9e6HLuo{MHe*&jNll{Ur^o3Di;mj#4fUC&$5eRs4l`1m
zX+0YoPHNW7T3y!iq)p$Z@4#2;4)z9P!TK$AuAZKlalUyQEP5K)Nhzj(ivtm;r4VFB
zO#f4qC68xq`W}5B8v%+M13jVSLIC)bVy}*r;i*jqcR|wGxb2^lxZHkKL&ch1?EFd*Y-2z@&+eby-PP`(K+rpks)8uv$Tt
zyV%qJhsAn)!Pl8>RuXJwZRs6|Zj&0*<}6*))fEewIh%8A_KUR>)U^)u
z_eX-!Xs{dBhizDYA08!2YvsxeRwSPcx-1{;b{QCn$J(6F1x`5D5_Gg|%D>9w3I=19
z>slHBCQBgfrEz|q$dfECw0Sa5NkoNiH>eVr(-2&mkmH*(O)gG{lxnN?^He_7;%PP)
z@$`gV8P*L`z=p4j23H2){zS!1-vESS>`a?yF@men*i3zYC`kZOUnwo`X{fe%?lAQQ
z>eYo}kv)E%gS~+$B{r9G8D_<}CfGLJ$~47G_Dg#DD>wA?>n7nvu0V&xj4O1s6zulQ
z?B{Ym4Wh&IQ~t`3waJ#sd7;gx^CIj~++Q$8@x~Prs=Ur;*nB3Rg&OU5LFmy^U+*wh
zwarU}jr^K_jojUov+3vMY+8J_*M~~Y=;IaGWTltsLD^cH>jbBMp<`n4%lRCeS93l3
z%evrquGkZENHK5YiX1+d8!T?Lxrv*ZrY9{&7aSar4jdH-bq6BdE1fdNWvy#l)rrV*
za>KCBZl`Kt?ehd>El}&&?8rUmt;YLl(Yn6=*dFQEVe=oL+1F@mkhsWB}Bp;%8}Fy)?d
zC*2_sy2M+6lrjfx-XiMT4_NCRS4FC~+1#VE8s^c
zvN_Cuh@M5A^hQ`xr7|
zK=Z;W;!AD5Ox6eoO6P|73baKdT|WL0ctj@g@kih@MO=*&_3_o{fk@ZK*CIl#sPOUi
z!1GY=(Z@G}_}gN!{%BQYrL@ei=nL!&hAP5;k*$^bYeA*tZ+`0ITcFfDE~233R+~S@
zw_zKYXhm;#!lT-AT!oiR81ddjK<2+iC}!e<}dPp
z{h&p(zgIFBb2IHHLwqk|zhv{5g}5fF`lRA3Ha{q011VX7&f9bOYy6PK58M2RtZ!6W
z0t#e<1(NkYYV%`!0Pagr6pn5ho95j~x=LUjw0V#Zp(7MmB!KOE9BkdO-mORPBm8xX
zAGi4lSy2A)E?DKZKvdMS^!sYQB6Imke#+*j
z1wb|!9q1RY3@rI9Hk}sO2$sHY^AGqr$Qh(C5{pXYK0;D*gFya~%|8~%;@qtd^bSBM
zeggORcoCJ4Uliv+M_$11Pi-2@KO5qDrp4AL%AWEo{Bw(cVe>C#;bT)BR=^K`3I@co
z_KOO2i$4DKNGo*1LLb9j%_(nfs#)8*y17lz@~X|h6X@WAZjBTlzs9um1Txzd?yDTw
zwI@`m!)@)rr6RaW5t}z`ep92nC)yec^hdXaV?O>P(}o1(=xOsS!qF%q#ZVx&r$4B{
ziztB|E4@mjGU|?xp2W0o+5BgJLHcMnl=rCWw{8BbBhjM5#Z`R`aD^7{XOPiROI7cbECp=^$ET?IOQ_TCC2n)S0$AOI0OY
z+-R_C08Z$h%0|Q>fvv&Xo~=RgvU0T>F1bvJDdvyNq?rL=#l32Yt(K}~+Eoa2yG~~Q
z(CqKV6|%0gZB?V-!e$TjgJwb3Sza$qwYI7gZ#BDHLzXR{W2@B)RilHUu5fp7b#Qk>
zcvn!HB8t|P0IdwqNHy82S!cAJjESYrW15q`situ2K-adK-mTC+
zv2A@G$BI>}t=i;ZVO)Zt(!IHN^;wW=x7GQo19I0TL29p#Vmp~;H=IPYD~_w$Xsb=?
z0$?N-Ue{9Z$$B{)Szql}o$4Y>1#Gohb*0B}_3p5SVZ$1K0Q+49NA?l5C3Sp}Wb*YQ
z@!M?Gqa{8(5X&c@BiX&S>Jzcf(gKVcX20rJJ1iBkRaC_izO?JyBk)6%zS8}G2?zyu
zxh1A$BScRP!y$+pCgHQNkvkqccvJ1P)h@N$amABxrx#}eA^esYYN<;Sp@n9YhHz+W
z)|JPce|~j;g}TyGAF|bl)khLpn2|sM;ju^{6h)M{DiVffD=R+9<*!*YZ;emEcQ(7j
zA&Byu2=aj7>qKw*EOkR-W>-|2!m(B1flzlU&!KLDY=y$HqAgON4_>)NP9^$%>Q>Mv
zDB1UX@~c~X>UO4i!fzGg5G3+JF25!H0!bnC?v&$y=Rfj
zCz)fZJJZf)Q%8F_{EE8UR-aP$V9RYCYwN&wnG$5`Gq(Dy`ka#r&<84!fiCSXE=)UR
zbdyJ(nn-Yq%vI?bRP9r6wDTOblH6)krul-czNqeZvcHYN*tRfC(Ag(AS{r#z2Ldc$
zuB29fSbZ7s3hjs6roLjU2h~?$@^*^r*t|v5)CMmI*JXnsKcpVE)FZaquO3ZMf255;
zMMIQQDthj5PGHkwVRb;oEp^aVgX&Nsf0$t>P>VgGo#E{OeO87r=Hw=`)DfoA;ZxKD
zvg2j71tLIyO0TNJ>Tz2=p^mz#)WASA=*afkx&E+=rq^-U!2?1kk
zP+N+pZ1uDR)T2@X^~&BJY5A_Lo|Tp{sTS>I$r*JP9{iB>dd^lqR6hbk_k_B72fBl6
zcJ{3eL||GG!gx-OQ^EMK;C#JLJ&*O2cR?&)0OObIG;Ec6$yPsAKNF9!TXHbRIS}7}
zV5wKq2(>m6hLMjZTv7G1`h`uF`enwm@%7UFYg_$BiM!tu+7^T*t8eyX?=!%xmO-!D
z>UZk*5|>JlB(6z@0qFUYv)8_igX)iD+Q|w$*#;
zKTbYEOK*Q5wrx!yqJ5EJHxwkPqzV6lt&YhWCPgD%SV1Da8uc#4VB1iJ0eMC&vbiS|
zYzuo6ESf(y4kO6$OA)xWH=q}U)a%G+93A^H$i3w#Xo=L@BHpbh=
z1fl!rq+6_y}HNu68$4`*8*z6YV_*v4F=*g1k~
z3q-dw9Z30S?UJc>Y31brFWOIz(CHXC*}9RLbe8ksT9fE@?4`sgwTv=<+bB0Gn2Jw!
zAe1w>uXm`TOIl}s#W>A2=8Jx@H#?O&83cM63vJ_c&27M4YUfc=CkHL#4ELa7IBxtj
z+BnNLswDg!)e9BU8tf0~@*r}qsf3JvAP_L9yghh@w!g0ah`3o7_CmcDI0Kd{4FD=ywgF9*pNxH8|!Ri
zz0nTy5OuQ8&H9=&e#r-;clZp60M|u>
zk@A|Y!4QJVF>scDd8)C~Hg*|^;_{<%lDT65aenH4X{LO5rej$|+r}lfaj9_`_;q#N
z`JJ`(=hU~gb~ZG(*R{xX$CZ*j%M#RFX&WChJ`B`2>AKay-L*Yidtz=DVe0S+6Eai}
zf6llHBB(FRZVUGXea1CV91>W;0Wq$FBWCQDmE2$(H%c;p&6YE{b**(Rl1K9yH%qt&
z0{M)OLU@-X(wT0)Ygt9f@+CSD?K4UMU
z(#lO0PNGz1cXFoX8!wzuIsJmt;^j-GyY9`rO*&C%d;)s&I3p5SMYs1SLAi<&-D6YY
z%%-BmXWZp~K#?Seh9RlRk>~sre4Y_{51H@NAaF$q+S6wHENV}izhL3%ix!`8=2?Nw
zUERSgqT%kfjr)wxL&e0x;zsDZtIlaB^x>$qJ5AWfaMYqx;#!~9_vqBx+*BhGY%<5!
z>NCE~wB-LwK3npx&FxJM%{8@P*_AbI`V!3KVRgxWIbGfoDQl`}L^M6lduK3JJzA<)
ztgFX!bxrGPpYgEc6**B;#kN3n8!FmcYSyj=m#%H8TUCF)&v?|yG$wA3VAH7{`X*X^
zov7_ZCG3N{fT0)Fn2LtnV9T)0Q`1If=rBIn*iyH)xwXEnxkWFaFj-%Bep_9Wb2CnF
z0n$BxybW}E+}XY7rW@SA;Zvu;xfne`FVT3l&ETjh$zIMtk^8!piS_2R_G|@D3`D?2
zGt{gnwZ9P#riytYyC=mPf
zx$=bKOqYh`)-q!9fj+RRTw==52UDlrfOh?V;Bnnh+dU!ePkD}KEmuUL`IBKjdXFFI
z-x>*Y2kX0o0a&L7eNlRkb|$o#Ffq1M+3-KzF|F2_b-}|ZIP+cG8w33=UJ}!-k4nb4
z)xAf`jWo^^Tl#eXy|3Mq4$IUsn5M1g*a)Xn^W*4wmZqRtgi5X
zfZk+1ER#@UYSOdFaOI?0?t^$P(M%fY7LMfooGUIv*O0gxBPa^#D|fy~^3Krc^z^Uy
zcqe@oS(_z|Z^;h{JYAZ-1hCy-Zge_?u)953@#LuVYYG^ZH`HH~UumTAH`J(0%UMJE
zjvzR5hX&9Y`^^IZ%zk}S)SuMMz+X;(Qa=Dw{YhtJya#6T^cj<7gFIV$wlY;`>ab+E
z&osPd8N$Qw0TVD=fq~vwXRn(g!~CAlE$-QlzVs4BzvPAZ4DO2P1AUsFBd1}VavYZF
z{(RzMdy)%BIMfkpx@R4oecg*>t%+h%$a8z5oe84`ljfzq%MpcXb*^Q1+j6&mcr)wM
zPLRdN0=5jf_L#hel;KJw`Wpigz%7UjPsf8_PBL$wT-Qj6`D)87@ZKUm9yEPA?d07%
zyByUZcSurM-f1VuZ$s5N$?eWQH*Y(6st?aLTmk_}8FD7H+ILnl8A>UpQeAWBQ#a
zxpT84GwJvn5<=^9Yd5P|kRch$G%wRMBPb|;cQOx<(AUE=1l4khJe8>E90>JjW0fgM
zB8S_lWr!r|=${TX&P(m?UxGIT$|Nump4WuUjWwI>#=_L-gF=*sjo
z0qeYg2^5?%v?c8Vl-cFp22A|+h<&Eqzvc?9WPB!sM^&N{QZspFc%ZjCG&fcxcXf&q
z&T`RQp6fHWr(H{ba-yLkuU}J?h~;)>A5HAa=!d&0bQQymgi9k#(z_f{}#&SX=NpUzvS2bPuK5!`6a%_<@u@u@5%B@
zUj4q=eLvv7qwf0}_kF*97fOyB?_yBgA|GaY5~Vvqea5?~b>9J6^oZWWxAB}qIe5;%
zEY&oBj+O!k%V-uYr%F1Ts;CBEE2x%gjqjkB?X1Lj%6J;@9OD_|yY4E_aaUP*gc!4)
zb%d%qN(O1kL0S=~x