From c3dbd45716f5996ad1ecae5f33ca54f1f60def9f Mon Sep 17 00:00:00 2001 From: Declan Freeman-Gleason Date: Tue, 8 Dec 2020 02:34:21 -0500 Subject: [PATCH] Add GPU Acceleration on the Raspberry Pi (#140) * Add native stuff * use runtimeloader * add more native methods * more stuff * Switch JNI methods to static * Remove non-java classes from the picam jni * Add gradle task for JNI generation * Migrate my previous GPU accel work * Initial work on defining JNI interface * Change libpicam to a symlink for now * Initial work on adding no-copy OMX GPU accel on the pi * Make DIRECT_OMX GPU accel mode not crash * Clean up OMX changes (still not getting valid data back) * Re-add GPU unit test * A couple debugging tweaks/notes * Add temporary special cases to get RGB out of ProcessingMode.NONE * Code clarity improvements; fix possible VBO bug * Get DIRECT_OMX working * Remove some debugging switches in GPUAccelerator * Pipe in VCSM stuff to read out pixels FAST * Apply Spotless * Revert versioningHelper changes * Add missing import * Convert to MMAL and move everything to native * Re-add shared object * Rework to use MMAL and do everything natively * Condense pipeline settings classes * Add OutputStreamPipeline * Apply spotless * Fix duplicate variable inits and add more video modes * Integrate color frames and latency measurements for GPU * Fix camera detection on pi and other platforms * Add proper color copy disabling and camera settings calls * Fix things that were broken by rebase * Fix spotless issues and remove uneeded prints * Remove libpicam symlink * Fix stream resolution limiting * Remove testing code in GPUAcceleratedHSVPipe * Make profiling options general to all computers * Make PicamJNI load from resources * run spotlessApply * Address review comments * Update Maven repo for JOGL * Fix release race condition * Only run GPU accel test on the pi * Lint fix and merge conflict accident fixes * Make Jackson ignore extra fields when unmarshalling HardwareConfig * Fix Mat releasing data race * Spotless apply * Remove broken header generation task * Fix shared library loading typo * Add a ZeroCopyPicam quirk to allow setting gain with the MMAL backend * Make sure that exposure/brightness/gain get set after res changes * Make rawInputMat properly local * Remove bogus set of shouldRun flag * Clean up small GPUHSVPipe print * Add in some things that missed the ZeroCopyPiCameraSource rename * Fix incorrect scoping introduced in past rebase * Don't filter out too-low resolutions * Only show latency when GPU accel is enabled * Don't free Mats in stream thread before we use them * Fix use-after-free and latency caluclation bugs on USB camera source * Update libpicam * Remove unwanted print * Add libpicam forceLoad in unit test * Fix streaming during camera calibration * Fix zerocopy Picam calculation * Use logger trace method instead of raw prints * Fix calibration and driver mode pipes with the Picam Co-authored-by: Matt Co-authored-by: Banks Troutman --- .gitignore | 1 + photon-client/src/store/index.js | 6 +- photon-client/src/views/LogsView.vue | 114 ++-- photon-client/src/views/PipelineView.vue | 74 ++- .../src/views/PipelineViews/InputTab.vue | 39 +- .../src/views/PipelineViews/PnPTab.vue | 2 +- .../src/views/PipelineViews/ThresholdTab.vue | 4 + .../src/views/SettingsViews/General.vue | 93 ++- photon-server/build.gradle | 34 +- .../src/main/java/org/photonvision/Main.java | 2 + .../common/configuration/HardwareConfig.java | 2 + .../configuration/PhotonConfiguration.java | 8 +- .../dataflow/websocket/UIDataPublisher.java | 1 + .../common/util/math/MathUtils.java | 8 + .../java/org/photonvision/raspi/PicamJNI.java | 96 ++++ .../photonvision/server/SocketHandler.java | 6 + .../vision/camera/CameraType.java | 3 +- .../vision/camera/QuirkyCamera.java | 9 +- .../vision/camera/ZeroCopyPicamSource.java | 156 +++++ .../org/photonvision/vision/frame/Frame.java | 14 +- .../AcceleratedPicamFrameProvider.java | 52 ++ .../frame/provider/FileFrameProvider.java | 11 +- .../frame/provider/USBFrameProvider.java | 20 +- .../org/photonvision/vision/opencv/CVMat.java | 19 +- .../vision/pipe/impl/Draw2dTargetsPipe.java | 24 +- .../vision/pipe/impl/FindContoursPipe.java | 2 +- .../pipe/impl/GPUAcceleratedHSVPipe.java | 540 ++++++++++++++++++ .../vision/pipe/impl/HSVPipe.java | 12 +- .../pipeline/AdvancedPipelineSettings.java | 65 ++- .../vision/pipeline/CVPipeline.java | 8 +- .../vision/pipeline/CVPipelineSettings.java | 10 +- .../vision/pipeline/Calibrate3dPipeline.java | 35 +- .../vision/pipeline/ColoredShapePipeline.java | 23 +- .../ColoredShapePipelineSettings.java | 3 +- .../vision/pipeline/DriverModePipeline.java | 15 + .../pipeline/DriverModePipelineSettings.java | 1 + .../vision/pipeline/OutputStreamPipeline.java | 128 +++++ .../vision/pipeline/PipelineProfiler.java | 8 - .../vision/pipeline/ReflectivePipeline.java | 160 ++---- .../pipeline/ReflectivePipelineSettings.java | 34 -- .../pipeline/result/CVPipelineResult.java | 17 +- .../result/DriverModePipelineResult.java | 4 +- .../vision/processes/VisionModule.java | 139 ++++- .../vision/processes/VisionSourceManager.java | 31 +- .../resources/nativelibraries/libpicam.so | Bin 0 -> 862044 bytes .../AcceleratedPicamFrameProviderTest.java | 52 ++ .../vision/pipeline/CirclePNPTest.java | 4 +- .../vision/pipeline/PipelineProfilerTest.java | 7 +- .../resources/hardware/HardwareConfig.json | 3 - photon-server/versioningHelper.gradle | 3 +- 50 files changed, 1705 insertions(+), 397 deletions(-) create mode 100644 photon-server/src/main/java/org/photonvision/raspi/PicamJNI.java create mode 100644 photon-server/src/main/java/org/photonvision/vision/camera/ZeroCopyPicamSource.java create mode 100644 photon-server/src/main/java/org/photonvision/vision/frame/provider/AcceleratedPicamFrameProvider.java create mode 100644 photon-server/src/main/java/org/photonvision/vision/pipe/impl/GPUAcceleratedHSVPipe.java create mode 100644 photon-server/src/main/java/org/photonvision/vision/pipeline/OutputStreamPipeline.java create mode 100755 photon-server/src/main/resources/nativelibraries/libpicam.so create mode 100644 photon-server/src/test/java/org/photonvision/vision/frame/provider/AcceleratedPicamFrameProviderTest.java diff --git a/.gitignore b/.gitignore index 9f8966e07..c0af66100 100644 --- a/.gitignore +++ b/.gitignore @@ -125,3 +125,4 @@ photon-server/build photon-server/photon-vision photon-server/src/main/resources/web photon-server/src/main/java/org/photonvision/PhotonVersion.java +photon-server/src/main/generated/native/include/org_photonvision_raspi_PicamJNI.h diff --git a/photon-client/src/store/index.js b/photon-client/src/store/index.js index fad74334b..2f09ef3f9 100644 --- a/photon-client/src/store/index.js +++ b/photon-client/src/store/index.js @@ -21,7 +21,6 @@ export default new Vuex.Store({ compactMode: localStorage.getItem("compactMode") === undefined ? undefined : localStorage.getItem("compactMode") === "true", // Compact mode is initially unset on purpose logMessages: [], currentCameraIndex: 0, - selectedOutputs: [0, 1], // 0 indicates normal, 1 indicates threshold cameraSettings: [ // This is a list of objects representing the settings of all cameras { tiltDegrees: 0.0, @@ -65,6 +64,8 @@ export default new Vuex.Store({ contourGroupingMode: 0, contourIntersection: 0, contourSortMode: 0, + inputShouldShow: true, + outputShouldShow: true, outputShouldDraw: true, outputShowMultipleTargets: false, offsetRobotOffsetMode: 0, @@ -144,7 +145,7 @@ export default new Vuex.Store({ metrics: set('metrics'), logString: (state, newStr) => { const str = state.logMessages; - str.push(newStr) + str.push(newStr); Vue.set(state, 'logString', str) }, @@ -238,6 +239,7 @@ export default new Vuex.Store({ currentCameraIndex: state => state.currentCameraIndex, currentPipelineIndex: state => state.cameraSettings[state.currentCameraIndex].currentPipelineIndex, currentPipelineSettings: state => state.cameraSettings[state.currentCameraIndex].currentPipelineSettings, + currentVideoFormat: state => state.cameraSettings[state.currentCameraIndex].videoFormatList[state.cameraSettings[state.currentCameraIndex].currentPipelineSettings.cameraVideoModeIndex], videoFormatList: state => { return Object.values(state.cameraSettings[state.currentCameraIndex].videoFormatList); // convert to a list }, diff --git a/photon-client/src/views/LogsView.vue b/photon-client/src/views/LogsView.vue index dc77e14bf..70b136004 100644 --- a/photon-client/src/views/LogsView.vue +++ b/photon-client/src/views/LogsView.vue @@ -1,67 +1,69 @@ \ No newline at end of file + diff --git a/photon-client/src/views/PipelineViews/PnPTab.vue b/photon-client/src/views/PipelineViews/PnPTab.vue index 7c76c62b3..a9912f3f9 100644 --- a/photon-client/src/views/PipelineViews/PnPTab.vue +++ b/photon-client/src/views/PipelineViews/PnPTab.vue @@ -53,7 +53,7 @@ import CVslider from '../../components/common/cv-slider' export default { - name: "SolvePNP", + name: "PnP", components: { CVslider, miniMap diff --git a/photon-client/src/views/PipelineViews/ThresholdTab.vue b/photon-client/src/views/PipelineViews/ThresholdTab.vue index 75b4fd419..9dbbdab48 100644 --- a/photon-client/src/views/PipelineViews/ThresholdTab.vue +++ b/photon-client/src/views/PipelineViews/ThresholdTab.vue @@ -174,6 +174,7 @@ case 0: this.currentFunction = undefined; this.$store.state.colorPicking = false; + this.handlePipelineUpdate("outputShouldDraw", true); return; case 1: @@ -187,7 +188,10 @@ break; } this.$store.state.colorPicking = true; + this.handlePipelineUpdate("outputShouldDraw", false); + this.$store.commit("mutatePipeline", {"inputShouldShow": true}); + this.handlePipelineUpdate("inputShouldShow", true); } } } diff --git a/photon-client/src/views/SettingsViews/General.vue b/photon-client/src/views/SettingsViews/General.vue index 6a98d2cae..67b7ceb57 100644 --- a/photon-client/src/views/SettingsViews/General.vue +++ b/photon-client/src/views/SettingsViews/General.vue @@ -3,43 +3,88 @@ - - - - + + + + - - - - + + + +
Version Hardware Model Platform GPU Acceleration + Version + + Hardware Model + + Platform + + GPU Acceleration +
{{ version.replace(" ", "") }}{{ hwModel.replace(" ", "") }}{{ platform.replace(" ", "") }}{{ gpuAccel.replace(" ", "") }} + {{ version.replace(" ", "") }} + + {{ hwModel.replace(" ", "") }} + + {{ platform.replace(" ", "") }} + + {{ gpuAccel.replace(" ", "") }} +
- - - - - + + + + + - - - - - + + + + + - - - - - + + + + +
CPU Usage CPU Temp CPU Memory Usage GPU Memory Usage Disk Usage + CPU Usage + + CPU Temp + + CPU Memory Usage + + GPU Memory Usage + + Disk Usage +
{{ metrics.cpuUtil.replace(" ", "") }}%{{ parseInt(metrics.cpuTemp) }}° C{{ metrics.ramUtil.replace(" ", "") }}MB of {{ metrics.cpuMem }}MB{{ metrics.gpuMemUtil.replace(" ", "") }}MB of {{ metrics.gpuMem }}MB{{ metrics.diskUtilPct.replace(" ", "") }} + {{ metrics.cpuUtil.replace(" ", "") }}% + + {{ parseInt(metrics.cpuTemp) }}° C + + {{ metrics.ramUtil.replace(" ", "") }}MB of {{ metrics.cpuMem }}MB + + {{ metrics.gpuMemUtil.replace(" ", "") }}MB of {{ metrics.gpuMem }}MB + + {{ metrics.diskUtilPct.replace(" ", "") }} +
--------------- + --- + + --- + + --- + + --- + + --- +
-
diff --git a/photon-server/build.gradle b/photon-server/build.gradle index 9a9e5acf2..166e35139 100644 --- a/photon-server/build.gradle +++ b/photon-server/build.gradle @@ -19,6 +19,9 @@ sourceCompatibility = 11 repositories { jcenter() mavenCentral() + maven { + url = "https://maven.photonvision.org/repository/internal/" + } maven { url = 'https://frcmaven.wpi.edu:443/artifactory/development' } @@ -26,6 +29,7 @@ repositories { ext { wpilibVersion = '2020.3.2-99-g9f4de91' + joglVersion = '2.4.0-rc-20200307' openCVVersion = '3.4.7-2' } @@ -46,7 +50,23 @@ dependencies { implementation "org.apache.commons:commons-collections4:4.4" implementation "org.apache.commons:commons-exec:1.3" - // wpilib stuff + // JOGL stuff (currently we only distribute for aarch64, which is Pi 4) + implementation "org.jogamp.gluegen:gluegen-rt:$joglVersion" + implementation "org.jogamp.jogl:jogl-all:$joglVersion" + +// implementation "org.jogamp.gluegen:gluegen-rt:$joglVersion:natives-linux-amd64" +// implementation "org.jogamp.gluegen:gluegen-rt:$joglVersion:natives-linux-armv6hf" + implementation "org.jogamp.gluegen:gluegen-rt:$joglVersion:natives-linux-aarch64" +// implementation "org.jogamp.gluegen:gluegen-rt:$joglVersion:natives-macosx-universal" +// implementation "org.jogamp.gluegen:gluegen-rt:$joglVersion:natives-windows-amd64" + +// implementation "org.jogamp.jogl:jogl-all:$joglVersion:natives-linux-amd64" +// implementation "org.jogamp.jogl:jogl-all:$joglVersion:natives-linux-armv6hf" + implementation "org.jogamp.jogl:jogl-all:$joglVersion:natives-linux-aarch64" +// implementation "org.jogamp.jogl:jogl-all:$joglVersion:natives-macosx-universal" +// implementation "org.jogamp.jogl:jogl-all:$joglVersion:natives-windows-amd64" + + // WPILib stuff implementation "edu.wpi.first.wpiutil:wpiutil-java:$wpilibVersion" implementation "edu.wpi.first.cameraserver:cameraserver-java:$wpilibVersion" @@ -141,6 +161,18 @@ spotless { } } +run { + if (project.hasProperty("profile")) { + jvmArgs=[ + "-Dcom.sun.management.jmxremote=true", + "-Dcom.sun.management.jmxremote.ssl=false", + "-Dcom.sun.management.jmxremote.authenticate=false", + "-Dcom.sun.management.jmxremote.port=5000", + "-Djava.rmi.server.hostname=0.0.0.0", + ] + } +} + jacocoTestReport { dependsOn test // Tests are required to run before generating the report diff --git a/photon-server/src/main/java/org/photonvision/Main.java b/photon-server/src/main/java/org/photonvision/Main.java index a235dfc7f..b3cd914fd 100644 --- a/photon-server/src/main/java/org/photonvision/Main.java +++ b/photon-server/src/main/java/org/photonvision/Main.java @@ -31,6 +31,7 @@ import org.photonvision.common.logging.LogLevel; import org.photonvision.common.logging.Logger; import org.photonvision.common.networking.NetworkManager; import org.photonvision.common.util.TestUtils; +import org.photonvision.raspi.PicamJNI; import org.photonvision.server.Server; import org.photonvision.vision.camera.FileVisionSource; import org.photonvision.vision.opencv.ContourGroupingMode; @@ -153,6 +154,7 @@ public class Main { try { CameraServerCvJNI.forceLoad(); + PicamJNI.forceLoad(); TestUtils.loadLibraries(); logger.info("Native libraries loaded."); } catch (Exception e) { diff --git a/photon-server/src/main/java/org/photonvision/common/configuration/HardwareConfig.java b/photon-server/src/main/java/org/photonvision/common/configuration/HardwareConfig.java index 759efc476..98789b47c 100644 --- a/photon-server/src/main/java/org/photonvision/common/configuration/HardwareConfig.java +++ b/photon-server/src/main/java/org/photonvision/common/configuration/HardwareConfig.java @@ -17,10 +17,12 @@ package org.photonvision.common.configuration; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.util.ArrayList; import java.util.Collections; import java.util.List; +@JsonIgnoreProperties(ignoreUnknown = true) public class HardwareConfig { public final String deviceName; diff --git a/photon-server/src/main/java/org/photonvision/common/configuration/PhotonConfiguration.java b/photon-server/src/main/java/org/photonvision/common/configuration/PhotonConfiguration.java index 2cdf66096..6d64be5d0 100644 --- a/photon-server/src/main/java/org/photonvision/common/configuration/PhotonConfiguration.java +++ b/photon-server/src/main/java/org/photonvision/common/configuration/PhotonConfiguration.java @@ -25,6 +25,7 @@ import java.util.stream.Collectors; import org.photonvision.PhotonVersion; import org.photonvision.common.hardware.Platform; import org.photonvision.common.util.SerializationUtils; +import org.photonvision.raspi.PicamJNI; import org.photonvision.vision.processes.VisionModule; import org.photonvision.vision.processes.VisionModuleManager; @@ -107,8 +108,11 @@ public class PhotonConfiguration { var generalSubmap = new HashMap(); generalSubmap.put("version", PhotonVersion.versionString); - generalSubmap.put("gpuAcceleration", false); // TODO gpu accel and accel type - generalSubmap.put("gpuAccelerationType", "Unknown"); + generalSubmap.put( + "gpuAcceleration", + PicamJNI.isSupported() + ? "Zerocopy MMAL" + : ""); // TODO add support for other types of GPU accel generalSubmap.put("hardwareModel", hardwareConfig.deviceName); generalSubmap.put("hardwarePlatform", Platform.getCurrentPlatform().toString()); settingsSubmap.put("general", generalSubmap); diff --git a/photon-server/src/main/java/org/photonvision/common/dataflow/websocket/UIDataPublisher.java b/photon-server/src/main/java/org/photonvision/common/dataflow/websocket/UIDataPublisher.java index cd06340d1..1ffaaa936 100644 --- a/photon-server/src/main/java/org/photonvision/common/dataflow/websocket/UIDataPublisher.java +++ b/photon-server/src/main/java/org/photonvision/common/dataflow/websocket/UIDataPublisher.java @@ -47,6 +47,7 @@ public class UIDataPublisher implements CVPipelineResultConsumer { var uiMap = new HashMap>(); var dataMap = new HashMap(); + dataMap.put("fps", result.fps); dataMap.put("latency", result.getLatencyMillis()); var targets = result.targets; diff --git a/photon-server/src/main/java/org/photonvision/common/util/math/MathUtils.java b/photon-server/src/main/java/org/photonvision/common/util/math/MathUtils.java index 63b595699..3e3b7e0fd 100644 --- a/photon-server/src/main/java/org/photonvision/common/util/math/MathUtils.java +++ b/photon-server/src/main/java/org/photonvision/common/util/math/MathUtils.java @@ -43,6 +43,14 @@ public class MathUtils { return nanos / 1000000.0; } + public static long millisToNanos(long millis) { + return millis * 1000000; + } + + public static long microsToNanos(long micros) { + return micros * 1000; + } + public static double map( double value, double in_min, double in_max, double out_min, double out_max) { return (value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; diff --git a/photon-server/src/main/java/org/photonvision/raspi/PicamJNI.java b/photon-server/src/main/java/org/photonvision/raspi/PicamJNI.java new file mode 100644 index 000000000..c7a1fbd91 --- /dev/null +++ b/photon-server/src/main/java/org/photonvision/raspi/PicamJNI.java @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2020 Photon Vision. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.photonvision.raspi; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import org.photonvision.common.hardware.Platform; +import org.photonvision.common.logging.LogGroup; +import org.photonvision.common.logging.Logger; + +public class PicamJNI { + + private static boolean libraryLoaded = false; + private static Logger logger = new Logger(PicamJNI.class, LogGroup.Camera); + + public static synchronized void forceLoad() throws IOException { + if (libraryLoaded || !Platform.isRaspberryPi()) return; + + try { + URL resourceURL = PicamJNI.class.getResource("/nativelibraries/libpicam.so"); + File libFile = Path.of("lib/libpicam.so").toFile(); + if (!Files.exists(libFile.toPath())) { + // Assumes that the directory doesn't exist if libpicam doesn't exist + Files.createDirectory(Path.of("lib/")).toFile(); + + try (InputStream in = resourceURL.openStream()) { + Files.copy(in, libFile.toPath()); + } + } + System.load(libFile.getAbsolutePath()); + + libraryLoaded = true; + logger.info("Successfully loaded libpicam shared object"); + } catch (UnsatisfiedLinkError e) { + logger.error("Couldn't load libpicam shared object"); + e.printStackTrace(); + } + } + + public static boolean isSupported() { + return libraryLoaded; + } + + // Everything here is static because multiple picams are unsupported at the hardware level + + /** + * Called once for each video mode change. Starts a native thread running MMAL that stays alive + * until destroyCamera is called. + * + * @return true on error. + */ + public static native boolean createCamera(int width, int height, int fps); + + /** + * Destroys MMAL and EGL contexts. Called once for each video mode change *before* createCamera. + * + * @return true on error. + */ + public static native boolean destroyCamera(); + + public static native void setThresholds( + double hL, double sL, double vL, double hU, double sU, double vU); + + public static native boolean setExposure(int exposure); + + public static native boolean setBrightness(int brightness); + + public static native boolean setGain(int gain); + + public static native boolean setRotation(int rotation); + + public static native void setShouldCopyColor(boolean shouldCopyColor); + + public static native long getFrameLatency(); + + public static native long grabFrame(boolean shouldReturnColor); +} diff --git a/photon-server/src/main/java/org/photonvision/server/SocketHandler.java b/photon-server/src/main/java/org/photonvision/server/SocketHandler.java index 61b099c5f..4f5507571 100644 --- a/photon-server/src/main/java/org/photonvision/server/SocketHandler.java +++ b/photon-server/src/main/java/org/photonvision/server/SocketHandler.java @@ -84,6 +84,12 @@ public class SocketHandler { var reason = context.reason() != null ? context.reason() : "Connection closed by client"; logger.info("Closing websocket connection from " + host + " for reason: " + reason); users.remove(context); + + if (users.size() == 0) { + dcService.publishEvent( + new IncomingWebSocketEvent<>( + DataChangeDestination.DCD_ACTIVEPIPELINESETTINGS, "inputShouldShow", false)); + } } @SuppressWarnings({"unchecked"}) diff --git a/photon-server/src/main/java/org/photonvision/vision/camera/CameraType.java b/photon-server/src/main/java/org/photonvision/vision/camera/CameraType.java index f90d1a02f..edfb0a4a4 100644 --- a/photon-server/src/main/java/org/photonvision/vision/camera/CameraType.java +++ b/photon-server/src/main/java/org/photonvision/vision/camera/CameraType.java @@ -19,5 +19,6 @@ package org.photonvision.vision.camera; public enum CameraType { UsbCamera, - HttpCamera + HttpCamera, + ZeroCopyPicam } diff --git a/photon-server/src/main/java/org/photonvision/vision/camera/QuirkyCamera.java b/photon-server/src/main/java/org/photonvision/vision/camera/QuirkyCamera.java index 1594702c9..31787135d 100644 --- a/photon-server/src/main/java/org/photonvision/vision/camera/QuirkyCamera.java +++ b/photon-server/src/main/java/org/photonvision/vision/camera/QuirkyCamera.java @@ -26,10 +26,17 @@ public class QuirkyCamera { private static final List quirkyCameras = List.of( new QuirkyCamera(0x2000, 0x1415, CameraQuirk.Gain), // PS3Eye - new QuirkyCamera(-1, -1, "mmal service 16.1", CameraQuirk.PiCam) // PiCam + new QuirkyCamera(-1, -1, "mmal service 16.1", CameraQuirk.PiCam) // PiCam (via V4L2) ); public static final QuirkyCamera DefaultCamera = new QuirkyCamera(0, 0, ""); + public static final QuirkyCamera ZeroCopyPiCamera = + new QuirkyCamera( + -1, + -1, + "mmal service 16.1", + CameraQuirk.PiCam, + CameraQuirk.Gain); // PiCam (special zerocopy version) public final String baseName; public final int usbVid; diff --git a/photon-server/src/main/java/org/photonvision/vision/camera/ZeroCopyPicamSource.java b/photon-server/src/main/java/org/photonvision/vision/camera/ZeroCopyPicamSource.java new file mode 100644 index 000000000..e60294cd6 --- /dev/null +++ b/photon-server/src/main/java/org/photonvision/vision/camera/ZeroCopyPicamSource.java @@ -0,0 +1,156 @@ +/* + * Copyright (C) 2020 Photon Vision. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.photonvision.vision.camera; + +import edu.wpi.cscore.VideoMode; +import java.util.HashMap; +import org.photonvision.common.configuration.CameraConfiguration; +import org.photonvision.common.configuration.ConfigManager; +import org.photonvision.raspi.PicamJNI; +import org.photonvision.vision.frame.FrameProvider; +import org.photonvision.vision.frame.provider.AcceleratedPicamFrameProvider; +import org.photonvision.vision.processes.VisionSource; +import org.photonvision.vision.processes.VisionSourceSettables; + +public class ZeroCopyPicamSource implements VisionSource { + + private final VisionSourceSettables settables; + private final AcceleratedPicamFrameProvider frameProvider; + + public ZeroCopyPicamSource(CameraConfiguration configuration) { + if (configuration.cameraType != CameraType.ZeroCopyPicam) { + throw new IllegalArgumentException( + "GPUAcceleratedPicamSource only accepts CameraConfigurations with type Picam"); + } + + settables = new PicamSettables(configuration); + frameProvider = new AcceleratedPicamFrameProvider(settables); + } + + @Override + public FrameProvider getFrameProvider() { + return frameProvider; + } + + @Override + public VisionSourceSettables getSettables() { + return settables; + } + + /** + * On the OV5649 the actual FPS we want to request from the GPU can be higher than the FPS that we + * can do after processing. On the IMX219 these FPSes match pretty closely, except for the + * 1280x720 mode. We use this to present a rated FPS to the user that's lower than the actual FPS + * we request from the GPU. This is important for setting user expectations, and is also used by + * the frontend to detect and explain FPS drops. + */ + private static class FPSRatedVideoMode extends VideoMode { + public final int fpsActual; + + public FPSRatedVideoMode( + PixelFormat pixelFormat, int width, int height, int ratedFPS, int actualFPS) { + super(pixelFormat, width, height, ratedFPS); + + this.fpsActual = actualFPS; + } + } + + public static class PicamSettables extends VisionSourceSettables { + + private VideoMode currentVideoMode; + private double lastExposure; + private int lastBrightness; + private int lastGain; + + public PicamSettables(CameraConfiguration configuration) { + super(configuration); + + videoModes = new HashMap<>(); + videoModes.put( + 0, + new FPSRatedVideoMode( + VideoMode.PixelFormat.kUnknown, 320, 240, 90, 90)); // Was 120 on IMX219 + videoModes.put( + 1, + new FPSRatedVideoMode( + VideoMode.PixelFormat.kUnknown, 640, 480, 85, 90)); // Was 65-70 on IMX219 + videoModes.put( + 2, + new FPSRatedVideoMode( + VideoMode.PixelFormat.kUnknown, 960, 720, 45, 60)); // Was 45 on IMX219 + videoModes.put( + 3, + new FPSRatedVideoMode( + VideoMode.PixelFormat.kUnknown, 1280, 720, 30, 45)); // Was 40 on IMX219 + videoModes.put( + 4, + new FPSRatedVideoMode( + VideoMode.PixelFormat.kUnknown, 1920, 1080, 15, 20)); // Was 15 on IMX219 + + currentVideoMode = videoModes.get(0); + } + + @Override + public void setExposure(double exposure) { + lastExposure = exposure; + PicamJNI.setExposure((int) Math.round(exposure)); + } + + @Override + public void setBrightness(int brightness) { + lastBrightness = brightness; + PicamJNI.setBrightness(brightness); + } + + @Override + public void setGain(int gain) { + lastGain = gain; + PicamJNI.setGain(gain); + } + + @Override + public VideoMode getCurrentVideoMode() { + return currentVideoMode; + } + + @Override + protected void setVideoModeInternal(VideoMode videoMode) { + PicamJNI.destroyCamera(); + PicamJNI.createCamera( + videoMode.width, videoMode.height, ((FPSRatedVideoMode) videoMode).fpsActual); + + // We don't store last settings on the native side, and when you change video mode these get + // reset on MMAL's end + setExposure(lastExposure); + setBrightness(lastBrightness); + setGain(lastGain); + + currentVideoMode = videoMode; + } + + @Override + public HashMap getAllVideoModes() { + return videoModes; + } + } + + @Override + public boolean isVendorCamera() { + return ConfigManager.getInstance().getConfig().getHardwareConfig().hasPresetFOV(); + } +} diff --git a/photon-server/src/main/java/org/photonvision/vision/frame/Frame.java b/photon-server/src/main/java/org/photonvision/vision/frame/Frame.java index 29899c5a8..6763f14bf 100644 --- a/photon-server/src/main/java/org/photonvision/vision/frame/Frame.java +++ b/photon-server/src/main/java/org/photonvision/vision/frame/Frame.java @@ -17,7 +17,7 @@ package org.photonvision.vision.frame; -import org.opencv.core.Mat; +import edu.wpi.first.wpilibj.geometry.Rotation2d; import org.photonvision.vision.opencv.CVMat; import org.photonvision.vision.opencv.Releasable; @@ -36,15 +36,21 @@ public class Frame implements Releasable { this(image, System.nanoTime(), frameStaticProperties); } + public Frame() { + timestampNanos = 0; + image = new CVMat(); + frameStaticProperties = new FrameStaticProperties(0, 0, 0, new Rotation2d(), null); + } + public void copyTo(Frame destFrame) { image.getMat().copyTo(destFrame.image.getMat()); } public static Frame copyFromAndRelease(Frame frame) { - Mat newMat = new Mat(); - frame.image.getMat().copyTo(newMat); + var mat = new CVMat(); + frame.image.copyTo(mat); frame.release(); - return new Frame(new CVMat(newMat), frame.timestampNanos, frame.frameStaticProperties); + return new Frame(mat, frame.timestampNanos, frame.frameStaticProperties); } @Override diff --git a/photon-server/src/main/java/org/photonvision/vision/frame/provider/AcceleratedPicamFrameProvider.java b/photon-server/src/main/java/org/photonvision/vision/frame/provider/AcceleratedPicamFrameProvider.java new file mode 100644 index 000000000..0394f64ac --- /dev/null +++ b/photon-server/src/main/java/org/photonvision/vision/frame/provider/AcceleratedPicamFrameProvider.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2020 Photon Vision. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.photonvision.vision.frame.provider; + +import org.opencv.core.Mat; +import org.photonvision.raspi.PicamJNI; +import org.photonvision.vision.frame.Frame; +import org.photonvision.vision.frame.FrameProvider; +import org.photonvision.vision.opencv.CVMat; +import org.photonvision.vision.processes.VisionSourceSettables; + +public class AcceleratedPicamFrameProvider implements FrameProvider { + + private final VisionSourceSettables settables; + + private CVMat mat; + + public AcceleratedPicamFrameProvider(VisionSourceSettables visionSettables) { + this.settables = visionSettables; + + var vidMode = settables.getCurrentVideoMode(); + PicamJNI.createCamera(vidMode.width, vidMode.height, vidMode.fps); + } + + @Override + public String getName() { + return "AcceleratedPicamFrameProvider"; + } + + @Override + public Frame get() { + long matHandle = PicamJNI.grabFrame(false); + mat = new CVMat(new Mat(matHandle)); + return new Frame( + mat, System.nanoTime() - PicamJNI.getFrameLatency(), settables.getFrameStaticProperties()); + } +} diff --git a/photon-server/src/main/java/org/photonvision/vision/frame/provider/FileFrameProvider.java b/photon-server/src/main/java/org/photonvision/vision/frame/provider/FileFrameProvider.java index b9e50b0d5..1118b9f18 100644 --- a/photon-server/src/main/java/org/photonvision/vision/frame/provider/FileFrameProvider.java +++ b/photon-server/src/main/java/org/photonvision/vision/frame/provider/FileFrameProvider.java @@ -41,7 +41,8 @@ public class FileFrameProvider implements FrameProvider { private final Path path; private final int millisDelay; private final Frame originalFrame; - private final Frame outputFrame; + + private final FrameStaticProperties properties; private long lastGetMillis = System.currentTimeMillis(); @@ -74,12 +75,9 @@ public class FileFrameProvider implements FrameProvider { Mat rawImage = Imgcodecs.imread(path.toString()); if (rawImage.cols() > 0 && rawImage.rows() > 0) { - FrameStaticProperties m_properties = + properties = new FrameStaticProperties(rawImage.width(), rawImage.height(), fov, pitch, calibration); - Mat originalImage = new Mat(); - rawImage.copyTo(originalImage); - originalFrame = new Frame(new CVMat(rawImage), m_properties); - outputFrame = new Frame(new CVMat(originalImage), m_properties); + originalFrame = new Frame(new CVMat(rawImage), properties); } else { throw new RuntimeException("Image loading failed!"); } @@ -107,6 +105,7 @@ public class FileFrameProvider implements FrameProvider { @Override public Frame get() { + Frame outputFrame = new Frame(new CVMat(), properties); originalFrame.copyTo(outputFrame); // block to keep FPS at a defined rate diff --git a/photon-server/src/main/java/org/photonvision/vision/frame/provider/USBFrameProvider.java b/photon-server/src/main/java/org/photonvision/vision/frame/provider/USBFrameProvider.java index a77bec076..069852513 100644 --- a/photon-server/src/main/java/org/photonvision/vision/frame/provider/USBFrameProvider.java +++ b/photon-server/src/main/java/org/photonvision/vision/frame/provider/USBFrameProvider.java @@ -18,34 +18,38 @@ package org.photonvision.vision.frame.provider; import edu.wpi.cscore.CvSink; +import org.photonvision.common.util.math.MathUtils; import org.photonvision.vision.frame.Frame; import org.photonvision.vision.frame.FrameProvider; import org.photonvision.vision.opencv.CVMat; import org.photonvision.vision.processes.VisionSourceSettables; public class USBFrameProvider implements FrameProvider { + private static final long unixEpochToNanoEpoch = + System.nanoTime() + - MathUtils.millisToNanos(System.currentTimeMillis()); // Units are nanoseconds private final CvSink cvSink; @SuppressWarnings("SpellCheckingInspection") private final VisionSourceSettables settables; - private final CVMat mat; - @SuppressWarnings("SpellCheckingInspection") public USBFrameProvider(CvSink sink, VisionSourceSettables visionSettables) { cvSink = sink; cvSink.setEnabled(true); this.settables = visionSettables; - mat = new CVMat(); } @Override public Frame get() { - if (mat.getMat() != null) { - mat.release(); - } - long time = cvSink.grabFrame(mat.getMat()); - return new Frame(mat, time, settables.getFrameStaticProperties()); + var mat = new CVMat(); // We do this so that we don't fill a Mat in use by another thread + long time = + cvSink.grabFrame( + mat.getMat()); // Units are microseconds, epoch is the same as the Unix epoch + return new Frame( + mat, + MathUtils.microsToNanos(time) + unixEpochToNanoEpoch, + settables.getFrameStaticProperties()); } @Override diff --git a/photon-server/src/main/java/org/photonvision/vision/opencv/CVMat.java b/photon-server/src/main/java/org/photonvision/vision/opencv/CVMat.java index f625c70c4..bc06be610 100644 --- a/photon-server/src/main/java/org/photonvision/vision/opencv/CVMat.java +++ b/photon-server/src/main/java/org/photonvision/vision/opencv/CVMat.java @@ -19,9 +19,12 @@ package org.photonvision.vision.opencv; import java.util.HashSet; import org.opencv.core.Mat; -import org.photonvision.common.util.ReflectionUtils; +import org.photonvision.common.logging.LogGroup; +import org.photonvision.common.logging.Logger; public class CVMat implements Releasable { + private static final Logger logger = new Logger(CVMat.class, LogGroup.General); + private static final HashSet allMats = new HashSet<>(); private static boolean shouldPrint; @@ -29,7 +32,7 @@ public class CVMat implements Releasable { private final Mat mat; public CVMat() { - this.mat = new Mat(); + this(new Mat()); } public void copyTo(CVMat srcMat) { @@ -43,11 +46,13 @@ public class CVMat implements Releasable { public CVMat(Mat mat) { this.mat = mat; if (allMats.add(mat) && shouldPrint) { - System.out.println( - "(CVMat) Added new Mat (count: " - + allMats.size() - + ") from: " - + ReflectionUtils.getNthCaller(3)); + var trace = Thread.currentThread().getStackTrace(); + + final var traceStr = new StringBuilder(); + for (var elem : trace) { + traceStr.append("\t").append(elem); + } + logger.trace(traceStr::toString); } } diff --git a/photon-server/src/main/java/org/photonvision/vision/pipe/impl/Draw2dTargetsPipe.java b/photon-server/src/main/java/org/photonvision/vision/pipe/impl/Draw2dTargetsPipe.java index a6496f350..7ab74330e 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipe/impl/Draw2dTargetsPipe.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipe/impl/Draw2dTargetsPipe.java @@ -20,7 +20,7 @@ package org.photonvision.vision.pipe.impl; import java.awt.*; import java.util.ArrayList; import java.util.List; -import org.apache.commons.lang3.tuple.Triple; +import org.apache.commons.lang3.tuple.Pair; import org.opencv.core.*; import org.opencv.core.Point; import org.opencv.imgproc.Imgproc; @@ -29,31 +29,19 @@ import org.photonvision.vision.pipe.MutatingPipe; import org.photonvision.vision.target.TrackedTarget; public class Draw2dTargetsPipe - extends MutatingPipe< - Triple, Integer>, Draw2dTargetsPipe.Draw2dTargetsParams> { + extends MutatingPipe>, Draw2dTargetsPipe.Draw2dTargetsParams> { private List m_drawnContours = new ArrayList<>(); @Override - protected Void process(Triple, Integer> in) { - // Always draw FPS + protected Void process(Pair> in) { var imageSize = Math.sqrt(in.getLeft().rows() * in.getLeft().cols()); - - var fps = in.getRight(); var textSize = params.kPixelsToText * imageSize; var thickness = params.kPixelsToThickness * imageSize; - Imgproc.putText( - in.getLeft(), - fps.toString(), - new Point(10, 10 + textSize * 25), - 0, - textSize, - ColorHelper.colorToScalar(params.textColor), - (int) thickness); if (!params.shouldDraw) return null; - if (!in.getMiddle().isEmpty() + if (!in.getRight().isEmpty() && (params.showCentroid || params.showMaximumBox || params.showRotatedBox @@ -64,7 +52,7 @@ public class Draw2dTargetsPipe var rotatedBoxColour = ColorHelper.colorToScalar(params.rotatedBoxColor); var shapeColour = ColorHelper.colorToScalar(params.shapeOutlineColour); - for (int i = 0; i < (params.showMultipleTargets ? in.getMiddle().size() : 1); i++) { + for (int i = 0; i < (params.showMultipleTargets ? in.getRight().size() : 1); i++) { Point[] vertices = new Point[4]; MatOfPoint contour = new MatOfPoint(); @@ -72,7 +60,7 @@ public class Draw2dTargetsPipe break; } - TrackedTarget target = in.getMiddle().get(i); + TrackedTarget target = in.getRight().get(i); RotatedRect r = target.getMinAreaRect(); if (r == null) continue; diff --git a/photon-server/src/main/java/org/photonvision/vision/pipe/impl/FindContoursPipe.java b/photon-server/src/main/java/org/photonvision/vision/pipe/impl/FindContoursPipe.java index b243f46fa..55820f060 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipe/impl/FindContoursPipe.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipe/impl/FindContoursPipe.java @@ -39,7 +39,7 @@ public class FindContoursPipe m_foundContours.clear(); Imgproc.findContours( - in, m_foundContours, new Mat(), Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_TC89_L1); + in, m_foundContours, new Mat(), Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_TC89_KCOS); return m_foundContours.stream().map(Contour::new).collect(Collectors.toList()); } diff --git a/photon-server/src/main/java/org/photonvision/vision/pipe/impl/GPUAcceleratedHSVPipe.java b/photon-server/src/main/java/org/photonvision/vision/pipe/impl/GPUAcceleratedHSVPipe.java new file mode 100644 index 000000000..a3ac0de55 --- /dev/null +++ b/photon-server/src/main/java/org/photonvision/vision/pipe/impl/GPUAcceleratedHSVPipe.java @@ -0,0 +1,540 @@ +/* + * Copyright (C) 2020 Photon Vision. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.photonvision.vision.pipe.impl; + +import static com.jogamp.opengl.GL.*; +import static com.jogamp.opengl.GL2ES2.*; + +import com.jogamp.opengl.*; +import com.jogamp.opengl.util.GLBuffers; +import com.jogamp.opengl.util.texture.Texture; +import com.jogamp.opengl.util.texture.TextureData; +import java.nio.ByteBuffer; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import jogamp.opengl.GLOffscreenAutoDrawableImpl; +import org.opencv.core.CvType; +import org.opencv.core.Mat; +import org.photonvision.common.logging.LogGroup; +import org.photonvision.common.logging.Logger; +import org.photonvision.vision.pipe.CVPipe; + +public class GPUAcceleratedHSVPipe extends CVPipe { + + private static final String k_vertexShader = + String.join( + "\n", + "#version 100", + "", + "attribute vec4 position;", + "", + "void main() {", + " gl_Position = position;", + "}"); + private static final String k_fragmentShader = + String.join( + "\n", + "#version 100", + "", + "precision highp float;", + "precision highp int;", + "", + "uniform vec3 lowerThresh;", + "uniform vec3 upperThresh;", + "uniform vec2 resolution;", + "uniform sampler2D texture0;", + "", + "vec3 rgb2hsv(vec3 c) {", + " vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);", + " vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));", + " vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));", + "", + " float d = q.x - min(q.w, q.y);", + " float e = 1.0e-10;", + " return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);", + "}", + "", + "bool inRange(vec3 hsv) {", + " bvec3 botBool = greaterThanEqual(hsv, lowerThresh);", + " bvec3 topBool = lessThanEqual(hsv, upperThresh);", + " return all(botBool) && all(topBool);", + "}", + "", + "void main() {", + " vec2 uv = gl_FragCoord.xy/resolution;", + // Important! We do this .bgr swizzle because the image comes in as BGR but we pretend + // it's RGB for convenience+speed + " vec3 col = texture2D(texture0, uv).bgr;", + // Only the first value in the vec4 gets used for GL_RED, and only the last value gets + // used for GL_ALPHA + " gl_FragColor = inRange(rgb2hsv(col)) ? vec4(1.0, 0.0, 0.0, 1.0) : vec4(0.0, 0.0, 0.0, 0.0);", + "}"); + private static final int k_startingWidth = 1280, k_startingHeight = 720; + private static final float[] k_vertexPositions = { + // Set up a quad that covers the screen + -1f, +1f, +1f, +1f, -1f, -1f, +1f, -1f + }; + private static final int k_positionVertexAttribute = + 0; // ID for the vertex shader position variable + + public enum PBOMode { + NONE, + SINGLE_BUFFERED, + DOUBLE_BUFFERED + } + + private final IntBuffer vertexVBOIds = GLBuffers.newDirectIntBuffer(1), + unpackPBOIds = GLBuffers.newDirectIntBuffer(2), + packPBOIds = GLBuffers.newDirectIntBuffer(2); + + private final GL2ES2 gl; + private final GLProfile profile; + private final int outputFormat; + private final PBOMode pboMode; + private final GLOffscreenAutoDrawableImpl.FBOImpl drawable; + private final Texture texture; + // The texture uniform holds the image that's being processed + // The resolution uniform holds the current image resolution + // The lower and upper uniforms hold the lower and upper HSV limits for thresholding + private final int textureUniformId, resolutionUniformId, lowerUniformId, upperUniformId; + + private final Logger logger = new Logger(GPUAcceleratedHSVPipe.class, LogGroup.General); + + private byte[] inputBytes, outputBytes; + private Mat outputMat = new Mat(k_startingHeight, k_startingWidth, CvType.CV_8UC1); + private int previousWidth = -1, previousHeight = -1; + private int unpackIndex = 0, unpackNextIndex = 0, packIndex = 0, packNextIndex = 0; + + public GPUAcceleratedHSVPipe(PBOMode pboMode) { + this.pboMode = pboMode; + + // Set up GL profile and ask for specific capabilities + profile = GLProfile.get(pboMode == PBOMode.NONE ? GLProfile.GLES2 : GLProfile.GL4ES3); + final var capabilities = new GLCapabilities(profile); + capabilities.setHardwareAccelerated(true); + capabilities.setFBO(true); + capabilities.setDoubleBuffered(false); + capabilities.setOnscreen(false); + capabilities.setRedBits(8); + capabilities.setBlueBits(0); + capabilities.setGreenBits(0); + capabilities.setAlphaBits(0); + + // Set up the offscreen area we're going to draw to + final var factory = GLDrawableFactory.getFactory(profile); + drawable = + (GLOffscreenAutoDrawableImpl.FBOImpl) + factory.createOffscreenAutoDrawable( + factory.getDefaultDevice(), + capabilities, + new DefaultGLCapabilitiesChooser(), + k_startingWidth, + k_startingHeight); + drawable.display(); + drawable.getContext().makeCurrent(); + + // Get an OpenGL context; OpenGL ES 2.0 and OpenGL 2.0 are compatible with all the coprocs we + // care about but not compatible with PBOs. Open GL ES 3.0 and OpenGL 4.0 are compatible with + // select coprocs *and* PBOs + gl = pboMode == PBOMode.NONE ? drawable.getGL().getGLES2() : drawable.getGL().getGL4ES3(); + final int programId = gl.glCreateProgram(); + + if (pboMode == PBOMode.NONE && !gl.glGetString(GL_EXTENSIONS).contains("GL_EXT_texture_rg")) { + logger.warn( + "OpenGL ES 2.0 implementation does not have the 'GL_EXT_texture_rg' extension, falling back to GL_ALPHA instead of GL_RED output format"); + outputFormat = GL_ALPHA; + } else { + outputFormat = GL_RED; + } + + // JOGL creates a framebuffer color attachment that has RGB set as the format, which is not + // appropriate for us because we want a single-channel format + // We make ourown FBO color attachment to remedy this + // Detach and destroy the FBO color attachment that JOGL made for us + drawable.getFBObject(GL_FRONT).detachColorbuffer(gl, 0, true); + // Equivalent to calling glBindFramebuffer + drawable.getFBObject(GL_FRONT).bind(gl); + if (true) { // For now renderbuffers are disabled + // Create a color attachment texture to hold our rendered output + var colorBufferIds = GLBuffers.newDirectIntBuffer(1); + gl.glGenTextures(1, colorBufferIds); + gl.glBindTexture(GL_TEXTURE_2D, colorBufferIds.get(0)); + gl.glTexImage2D( + GL_TEXTURE_2D, + 0, + outputFormat == GL_RED ? GL_R8 : GL_ALPHA8, + k_startingWidth, + k_startingHeight, + 0, + outputFormat, + GL_UNSIGNED_BYTE, + null); + gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + // Attach the texture to the framebuffer + gl.glBindTexture(GL_TEXTURE_2D, 0); + gl.glFramebufferTexture2D( + GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colorBufferIds.get(0), 0); + // Cleanup + gl.glBindTexture(GL_TEXTURE_2D, 0); + } else { + // Create a color attachment texture to hold our rendered output + var renderBufferIds = GLBuffers.newDirectIntBuffer(1); + gl.glGenRenderbuffers(1, renderBufferIds); + gl.glBindRenderbuffer(GL_RENDERBUFFER, renderBufferIds.get(0)); + gl.glRenderbufferStorage( + GL_RENDERBUFFER, + outputFormat == GL_RED ? GL_R8 : GL_ALPHA8, + k_startingWidth, + k_startingHeight); + // Attach the texture to the framebuffer + gl.glFramebufferRenderbuffer( + GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, renderBufferIds.get(0)); + // Cleanup + gl.glBindRenderbuffer(GL_RENDERBUFFER, 0); + } + drawable.getFBObject(GL_FRONT).unbind(gl); + + // Check that the FBO is attached + int fboStatus = gl.glCheckFramebufferStatus(GL_FRAMEBUFFER); + if (fboStatus == GL_FRAMEBUFFER_UNSUPPORTED) { + throw new RuntimeException( + "GL implementation does not support rendering to internal format '" + + String.format("0x%08X", outputFormat == GL_RED ? GL_R8 : GL_ALPHA8) + + "' with type '" + + String.format("0x%08X", GL_UNSIGNED_BYTE) + + "'"); + } else if (fboStatus != GL_FRAMEBUFFER_COMPLETE) { + throw new RuntimeException( + "Framebuffer is not complete; framebuffer status is " + + String.format("0x%08X", fboStatus)); + } + + logger.debug( + "Created an OpenGL context with renderer '" + + gl.glGetString(GL_RENDERER) + + "', version '" + + gl.glGetString(GL.GL_VERSION) + + "', and profile '" + + profile.toString() + + "'"); + + var fmt = GLBuffers.newDirectIntBuffer(1); + gl.glGetIntegerv(GLES3.GL_IMPLEMENTATION_COLOR_READ_FORMAT, fmt); + var type = GLBuffers.newDirectIntBuffer(1); + gl.glGetIntegerv(GLES3.GL_IMPLEMENTATION_COLOR_READ_TYPE, type); + + // Tell OpenGL that the attribute in the vertex shader named position is bound to index 0 (the + // index for the generic position input) + gl.glBindAttribLocation(programId, 0, "position"); + + // Compile and setup our two shaders with our program + final int vertexId = createShader(gl, programId, k_vertexShader, GL_VERTEX_SHADER); + final int fragmentId = createShader(gl, programId, k_fragmentShader, GL_FRAGMENT_SHADER); + + // Link our program together and check for errors + gl.glLinkProgram(programId); + IntBuffer status = GLBuffers.newDirectIntBuffer(1); + gl.glGetProgramiv(programId, GL_LINK_STATUS, status); + if (status.get(0) == GL_FALSE) { + + IntBuffer infoLogLength = GLBuffers.newDirectIntBuffer(1); + gl.glGetProgramiv(programId, GL_INFO_LOG_LENGTH, infoLogLength); + + ByteBuffer bufferInfoLog = GLBuffers.newDirectByteBuffer(infoLogLength.get(0)); + gl.glGetProgramInfoLog(programId, infoLogLength.get(0), null, bufferInfoLog); + byte[] bytes = new byte[infoLogLength.get(0)]; + bufferInfoLog.get(bytes); + String strInfoLog = new String(bytes); + + throw new RuntimeException("Linker failure: " + strInfoLog); + } + gl.glValidateProgram(programId); + + // Cleanup shaders that are now compiled in + gl.glDetachShader(programId, vertexId); + gl.glDetachShader(programId, fragmentId); + gl.glDeleteShader(vertexId); + gl.glDeleteShader(fragmentId); + + // Tell OpenGL to use our program + gl.glUseProgram(programId); + + // Set up our texture + texture = new Texture(GL_TEXTURE_2D); + texture.setTexParameteri(gl, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + texture.setTexParameteri(gl, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + texture.setTexParameteri(gl, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + texture.setTexParameteri(gl, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + + // Set up a uniform holding our image as a texture + textureUniformId = gl.glGetUniformLocation(programId, "texture0"); + gl.glUniform1i(textureUniformId, 0); + + // Set up a uniform to hold image resolution + resolutionUniformId = gl.glGetUniformLocation(programId, "resolution"); + + // Set up uniforms for the HSV thresholds + lowerUniformId = gl.glGetUniformLocation(programId, "lowerThresh"); + upperUniformId = gl.glGetUniformLocation(programId, "upperThresh"); + + // Set up a quad that covers the entire screen so that our fragment shader draws onto the entire + // screen + gl.glGenBuffers(1, vertexVBOIds); + + FloatBuffer vertexBuffer = GLBuffers.newDirectFloatBuffer(k_vertexPositions); + gl.glBindBuffer(GL_ARRAY_BUFFER, vertexVBOIds.get(0)); + gl.glBufferData( + GL_ARRAY_BUFFER, vertexBuffer.capacity() * Float.BYTES, vertexBuffer, GL_STATIC_DRAW); + + // Set up pixel unpack buffer (a PBO to transfer image data to the GPU) + if (pboMode != PBOMode.NONE) { + gl.glGenBuffers(2, unpackPBOIds); + + gl.glBindBuffer(GLES3.GL_PIXEL_UNPACK_BUFFER, unpackPBOIds.get(0)); + gl.glBufferData( + GLES3.GL_PIXEL_UNPACK_BUFFER, + k_startingHeight * k_startingWidth * 3, + null, + GLES3.GL_STREAM_DRAW); + if (pboMode == PBOMode.DOUBLE_BUFFERED) { + gl.glBindBuffer(GLES3.GL_PIXEL_UNPACK_BUFFER, unpackPBOIds.get(1)); + gl.glBufferData( + GLES3.GL_PIXEL_UNPACK_BUFFER, + k_startingHeight * k_startingWidth * 3, + null, + GLES3.GL_STREAM_DRAW); + } + gl.glBindBuffer(GLES3.GL_PIXEL_UNPACK_BUFFER, 0); + } + + // Set up pixel pack buffer (a PBO to transfer the processed image back from the GPU) + if (pboMode != PBOMode.NONE) { + gl.glGenBuffers(2, packPBOIds); + + gl.glBindBuffer(GLES3.GL_PIXEL_PACK_BUFFER, packPBOIds.get(0)); + gl.glBufferData( + GLES3.GL_PIXEL_PACK_BUFFER, + k_startingHeight * k_startingWidth, + null, + GLES3.GL_STREAM_READ); + if (pboMode == PBOMode.DOUBLE_BUFFERED) { + gl.glBindBuffer(GLES3.GL_PIXEL_PACK_BUFFER, packPBOIds.get(1)); + gl.glBufferData( + GLES3.GL_PIXEL_PACK_BUFFER, + k_startingHeight * k_startingWidth, + null, + GLES3.GL_STREAM_READ); + } + gl.glBindBuffer(GLES3.GL_PIXEL_PACK_BUFFER, 0); + } + } + + private static int createShader(GL2ES2 gl, int programId, String glslCode, int shaderType) { + int shaderId = gl.glCreateShader(shaderType); + if (shaderId == 0) throw new RuntimeException("Shader ID is zero"); + + IntBuffer length = GLBuffers.newDirectIntBuffer(new int[] {glslCode.length()}); + gl.glShaderSource(shaderId, 1, new String[] {glslCode}, length); + gl.glCompileShader(shaderId); + + IntBuffer intBuffer = IntBuffer.allocate(1); + gl.glGetShaderiv(shaderId, GL_COMPILE_STATUS, intBuffer); + + if (intBuffer.get(0) != 1) { + gl.glGetShaderiv(shaderId, GL_INFO_LOG_LENGTH, intBuffer); + int size = intBuffer.get(0); + if (size > 0) { + ByteBuffer byteBuffer = ByteBuffer.allocate(size); + gl.glGetShaderInfoLog(shaderId, size, intBuffer, byteBuffer); + System.err.println(new String(byteBuffer.array())); + } + throw new RuntimeException("Couldn't compile shader"); + } + + gl.glAttachShader(programId, shaderId); + + return shaderId; + } + + @Override + protected Mat process(Mat in) { + if (in.width() != previousWidth && in.height() != previousHeight) { + logger.debug("Resizing OpenGL viewport, byte buffers, and PBOs"); + + drawable.setSurfaceSize(in.width(), in.height()); + gl.glViewport(0, 0, in.width(), in.height()); + + previousWidth = in.width(); + previousHeight = in.height(); + + inputBytes = new byte[in.width() * in.height() * 3]; + + outputBytes = new byte[in.width() * in.height()]; + outputMat = new Mat(k_startingHeight, k_startingWidth, CvType.CV_8UC1); + + if (pboMode != PBOMode.NONE) { + gl.glBindBuffer(GLES3.GL_PIXEL_PACK_BUFFER, packPBOIds.get(0)); + gl.glBufferData( + GLES3.GL_PIXEL_PACK_BUFFER, in.width() * in.height(), null, GLES3.GL_STREAM_READ); + + if (pboMode == PBOMode.DOUBLE_BUFFERED) { + gl.glBindBuffer(GLES3.GL_PIXEL_PACK_BUFFER, packPBOIds.get(1)); + gl.glBufferData( + GLES3.GL_PIXEL_PACK_BUFFER, in.width() * in.height(), null, GLES3.GL_STREAM_READ); + } + } + } + + if (pboMode == PBOMode.DOUBLE_BUFFERED) { + unpackIndex = (unpackIndex + 1) % 2; + unpackNextIndex = (unpackIndex + 1) % 2; + } + + // Reset the fullscreen quad + gl.glBindBuffer(GL_ARRAY_BUFFER, vertexVBOIds.get(0)); + gl.glEnableVertexAttribArray(k_positionVertexAttribute); + gl.glVertexAttribPointer(0, 2, GL_FLOAT, false, 0, 0); + gl.glBindBuffer(GL_ARRAY_BUFFER, 0); + + // Load and bind our image as a 2D texture + gl.glActiveTexture(GL_TEXTURE0); + texture.enable(gl); + texture.bind(gl); + + // Load our image into the texture + in.get(0, 0, inputBytes); + if (pboMode == PBOMode.NONE) { + ByteBuffer buf = ByteBuffer.wrap(inputBytes); + // (We're actually taking in BGR even though this says RGB; it's much easier and faster to + // switch it around in the fragment shader) + texture.updateImage( + gl, + new TextureData( + profile, + GL_RGB8, + in.width(), + in.height(), + 0, + GL_RGB, + GL_UNSIGNED_BYTE, + false, + false, + false, + buf, + null)); + } else { + // Bind the PBO to the texture + gl.glBindBuffer(GLES3.GL_PIXEL_UNPACK_BUFFER, unpackPBOIds.get(unpackIndex)); + + // Copy pixels from the PBO to the texture object + gl.glTexSubImage2D( + GLES3.GL_TEXTURE_2D, + 0, + 0, + 0, + in.width(), + in.height(), + GLES3.GL_RGB8, + GLES3.GL_UNSIGNED_BYTE, + 0); + + // Bind (potentially) another PBO to update the texture source + gl.glBindBuffer(GLES3.GL_PIXEL_UNPACK_BUFFER, unpackPBOIds.get(unpackNextIndex)); + + // This call with a nullptr for the data arg tells OpenGL *not* to wait to be in sync with the + // GPU + // This causes the previous data in the PBO to be discarded + gl.glBufferData( + GLES3.GL_PIXEL_UNPACK_BUFFER, in.width() * in.height() * 3, null, GLES3.GL_STREAM_DRAW); + + // Map the a buffer of GPU memory into a place that's accessible by us + var buf = + gl.glMapBufferRange( + GLES3.GL_PIXEL_UNPACK_BUFFER, + 0, + in.width() * in.height() * 3, + GLES3.GL_MAP_WRITE_BIT); + buf.put(inputBytes); + + gl.glUnmapBuffer(GLES3.GL_PIXEL_UNPACK_BUFFER); + gl.glBindBuffer(GLES3.GL_PIXEL_UNPACK_BUFFER, 0); + } + + // Put values in a uniform holding the image resolution + gl.glUniform2f(resolutionUniformId, in.width(), in.height()); + + // Put values in threshold uniforms + var lowr = params.getHsvLower().val; + var upr = params.getHsvUpper().val; + gl.glUniform3f(lowerUniformId, (float) lowr[0], (float) lowr[1], (float) lowr[2]); + gl.glUniform3f(upperUniformId, (float) upr[0], (float) upr[1], (float) upr[2]); + + // Draw the fullscreen quad + gl.glDrawArrays(GL_TRIANGLE_STRIP, 0, k_vertexPositions.length); + + // Cleanup + texture.disable(gl); + gl.glDisableVertexAttribArray(k_positionVertexAttribute); + gl.glUseProgram(0); + + if (pboMode == PBOMode.NONE) { + return saveMatNoPBO(gl, in.width(), in.height()); + } else { + return saveMatPBO((GLES3) gl, in.width(), in.height(), pboMode == PBOMode.DOUBLE_BUFFERED); + } + } + + private Mat saveMatNoPBO(GL2ES2 gl, int width, int height) { + ByteBuffer buffer = GLBuffers.newDirectByteBuffer(width * height); + // We use GL_RED/GL_ALPHA to get things in a single-channel format + // Note that which pixel format you use is *very* important to performance + // E.g. GL_ALPHA is super slow in this case + gl.glReadPixels(0, 0, width, height, outputFormat, GL_UNSIGNED_BYTE, buffer); + + return new Mat(height, width, CvType.CV_8UC1, buffer); + } + + private Mat saveMatPBO(GLES3 gl, int width, int height, boolean doubleBuffered) { + if (doubleBuffered) { + packIndex = (packIndex + 1) % 2; + packNextIndex = (packIndex + 1) % 2; + } + + // Set the target framebuffer attachment to read + gl.glReadBuffer(GLES3.GL_COLOR_ATTACHMENT0); + + // Read pixels from the framebuffer to the PBO + gl.glBindBuffer(GLES3.GL_PIXEL_PACK_BUFFER, packPBOIds.get(packIndex)); + // We use GL_RED (which is always supported in GLES3) to get things in a single-channel format + // Note that which pixel format you use is *very* important to performance + // E.g. GL_ALPHA is super slow in this case + gl.glReadPixels(0, 0, width, height, GLES3.GL_RED, GLES3.GL_UNSIGNED_BYTE, 0); + + // Map the PBO into the CPU's memory + gl.glBindBuffer(GLES3.GL_PIXEL_PACK_BUFFER, packPBOIds.get(packNextIndex)); + var buf = + gl.glMapBufferRange(GLES3.GL_PIXEL_PACK_BUFFER, 0, width * height, GLES3.GL_MAP_READ_BIT); + buf.get(outputBytes); + outputMat.put(0, 0, outputBytes); + gl.glUnmapBuffer(GLES3.GL_PIXEL_PACK_BUFFER); + gl.glBindBuffer(GLES3.GL_PIXEL_PACK_BUFFER, 0); + + return outputMat; + } +} diff --git a/photon-server/src/main/java/org/photonvision/vision/pipe/impl/HSVPipe.java b/photon-server/src/main/java/org/photonvision/vision/pipe/impl/HSVPipe.java index d406ad64f..136a5bf92 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipe/impl/HSVPipe.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipe/impl/HSVPipe.java @@ -25,15 +25,13 @@ import org.photonvision.common.util.numbers.IntegerCouple; import org.photonvision.vision.pipe.CVPipe; public class HSVPipe extends CVPipe { - - private final Mat m_outputMat = new Mat(); - @Override protected Mat process(Mat in) { - in.copyTo(m_outputMat); - Imgproc.cvtColor(m_outputMat, m_outputMat, Imgproc.COLOR_BGR2HSV, 3); - Core.inRange(m_outputMat, params.getHsvLower(), params.getHsvUpper(), m_outputMat); - return m_outputMat; + var outputMat = new Mat(); + in.copyTo(outputMat); + Imgproc.cvtColor(outputMat, outputMat, Imgproc.COLOR_BGR2HSV, 3); + Core.inRange(outputMat, params.getHsvLower(), params.getHsvUpper(), outputMat); + return outputMat; } public static class HSVParams { diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/AdvancedPipelineSettings.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/AdvancedPipelineSettings.java index 4617be1d6..4e46aa20d 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipeline/AdvancedPipelineSettings.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/AdvancedPipelineSettings.java @@ -21,8 +21,12 @@ import java.util.Objects; import org.opencv.core.Point; import org.photonvision.common.util.numbers.DoubleCouple; import org.photonvision.common.util.numbers.IntegerCouple; +import org.photonvision.vision.opencv.ContourGroupingMode; +import org.photonvision.vision.opencv.ContourIntersectionDirection; import org.photonvision.vision.opencv.ContourSortMode; +import org.photonvision.vision.pipe.impl.CornerDetectionPipe; import org.photonvision.vision.target.RobotOffsetPointMode; +import org.photonvision.vision.target.TargetModel; import org.photonvision.vision.target.TargetOffsetPointEdge; import org.photonvision.vision.target.TargetOrientation; @@ -68,32 +72,58 @@ public class AdvancedPipelineSettings extends CVPipelineSettings { public Point offsetDualPointB = new Point(); public double offsetDualPointBArea = 0; + // how many contours to attempt to group (Single, Dual) + public ContourGroupingMode contourGroupingMode = ContourGroupingMode.Single; + + // the direction in which contours must intersect to be considered intersecting + public ContourIntersectionDirection contourIntersection = ContourIntersectionDirection.Up; + + // 3d settings + public boolean solvePNPEnabled = false; + public TargetModel targetModel = TargetModel.k2020HighGoalOuter; + + // Corner detection settings + public CornerDetectionPipe.DetectionStrategy cornerDetectionStrategy = + CornerDetectionPipe.DetectionStrategy.APPROX_POLY_DP_AND_EXTREME_CORNERS; + public boolean cornerDetectionUseConvexHulls = true; + public boolean cornerDetectionExactSideCount = false; + public int cornerDetectionSideCount = 4; + public double cornerDetectionAccuracyPercentage = 10; + @Override public boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (!(o instanceof AdvancedPipelineSettings)) return false; if (!super.equals(o)) return false; AdvancedPipelineSettings that = (AdvancedPipelineSettings) o; return outputShouldDraw == that.outputShouldDraw && outputShowMultipleTargets == that.outputShowMultipleTargets && contourSpecklePercentage == that.contourSpecklePercentage - && Double.compare(that.offsetDualPointA.x, offsetDualPointA.x) == 0 - && Double.compare(that.offsetDualPointA.y, offsetDualPointA.y) == 0 && Double.compare(that.offsetDualPointAArea, offsetDualPointAArea) == 0 - && Double.compare(that.offsetDualPointB.x, offsetDualPointB.x) == 0 - && Double.compare(that.offsetDualPointB.y, offsetDualPointB.y) == 0 && Double.compare(that.offsetDualPointBArea, offsetDualPointBArea) == 0 - && hsvHue.equals(that.hsvHue) - && hsvSaturation.equals(that.hsvSaturation) - && hsvValue.equals(that.hsvValue) - && contourArea.equals(that.contourArea) - && contourRatio.equals(that.contourRatio) - && contourFullness.equals(that.contourFullness) + && solvePNPEnabled == that.solvePNPEnabled + && cornerDetectionUseConvexHulls == that.cornerDetectionUseConvexHulls + && cornerDetectionExactSideCount == that.cornerDetectionExactSideCount + && cornerDetectionSideCount == that.cornerDetectionSideCount + && Double.compare(that.cornerDetectionAccuracyPercentage, cornerDetectionAccuracyPercentage) + == 0 + && Objects.equals(hsvHue, that.hsvHue) + && Objects.equals(hsvSaturation, that.hsvSaturation) + && Objects.equals(hsvValue, that.hsvValue) + && Objects.equals(contourArea, that.contourArea) + && Objects.equals(contourRatio, that.contourRatio) + && Objects.equals(contourFullness, that.contourFullness) && contourSortMode == that.contourSortMode && contourTargetOffsetPointEdge == that.contourTargetOffsetPointEdge && contourTargetOrientation == that.contourTargetOrientation && offsetRobotOffsetMode == that.offsetRobotOffsetMode - && offsetSinglePoint.equals(that.offsetSinglePoint); + && Objects.equals(offsetSinglePoint, that.offsetSinglePoint) + && Objects.equals(offsetDualPointA, that.offsetDualPointA) + && Objects.equals(offsetDualPointB, that.offsetDualPointB) + && contourGroupingMode == that.contourGroupingMode + && contourIntersection == that.contourIntersection + && Objects.equals(targetModel, that.targetModel) + && cornerDetectionStrategy == that.cornerDetectionStrategy; } @Override @@ -117,6 +147,15 @@ public class AdvancedPipelineSettings extends CVPipelineSettings { offsetDualPointA, offsetDualPointAArea, offsetDualPointB, - offsetDualPointBArea); + offsetDualPointBArea, + contourGroupingMode, + contourIntersection, + solvePNPEnabled, + targetModel, + cornerDetectionStrategy, + cornerDetectionUseConvexHulls, + cornerDetectionExactSideCount, + cornerDetectionSideCount, + cornerDetectionAccuracyPercentage); } } diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/CVPipeline.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/CVPipeline.java index 88fea9be4..b0fe3ff9a 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipeline/CVPipeline.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/CVPipeline.java @@ -39,19 +39,19 @@ public abstract class CVPipeline(); this.minSnapshots = minSnapshots; + + if (PicamJNI.isSupported()) { + PicamJNI.setShouldCopyColor(true); + } } @Override @@ -96,20 +103,30 @@ public class Calibrate3dPipeline @Override protected CVPipelineResult process(Frame frame, Calibration3dPipelineSettings settings) { + Mat inputColorMat = frame.image.getMat(); + if (inputColorMat.channels() == 1 && PicamJNI.isSupported()) { + long colorMatPtr = PicamJNI.grabFrame(true); + if (colorMatPtr == 0) throw new RuntimeException("Got null Mat from GPU Picam driver"); + inputColorMat = new Mat(colorMatPtr); + } + // Set the pipe parameters setPipeParams(frame.frameStaticProperties, settings); if (this.calibrating) { return new CVPipelineResult( - 0, null, new Frame(new CVMat(frame.image.getMat()), frame.frameStaticProperties)); + 0, 0, null, new Frame(new CVMat(inputColorMat), frame.frameStaticProperties)); } long sumPipeNanosElapsed = 0L; // Check if the frame has chessboard corners - var outFrame = new Mat(); - frame.image.getMat().copyTo(outFrame); - var findBoardResult = findBoardCornersPipe.run(Pair.of(frame.image.getMat(), outFrame)).output; + var outputColorMat = new Mat(); + inputColorMat.copyTo(outputColorMat); + var findBoardResult = findBoardCornersPipe.run(Pair.of(inputColorMat, outputColorMat)).output; + + var fpsResult = calculateFPSPipe.run(null); + var fps = fpsResult.output; if (takeSnapshot) { // Set snapshot to false even if we don't find a board @@ -119,21 +136,25 @@ public class Calibrate3dPipeline foundCornersList.add(findBoardResult); Imgcodecs.imwrite( Path.of(imageDir.toString(), "img" + foundCornersList.size() + ".jpg").toString(), - frame.image.getMat()); + inputColorMat); // update the UI broadcastState(); return new CVPipelineResult( - MathUtils.nanosToMillis(sumPipeNanosElapsed), Collections.emptyList(), frame); + MathUtils.nanosToMillis(sumPipeNanosElapsed), + fps, + Collections.emptyList(), + new Frame(new CVMat(inputColorMat), frame.frameStaticProperties)); } } // Return the drawn chessboard if corners are found, if not, then return the input image. return new CVPipelineResult( MathUtils.nanosToMillis(sumPipeNanosElapsed), + fps, // Unused but here in case null, - new Frame(new CVMat(outFrame), frame.frameStaticProperties)); + new Frame(new CVMat(outputColorMat), frame.frameStaticProperties)); } public void deleteSavedImages() { diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipeline.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipeline.java index dce29cbc8..5e619d605 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipeline.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipeline.java @@ -21,7 +21,6 @@ import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import org.apache.commons.lang3.tuple.Pair; -import org.apache.commons.lang3.tuple.Triple; import org.opencv.core.Mat; import org.opencv.core.Point; import org.photonvision.common.util.math.MathUtils; @@ -55,6 +54,7 @@ public class ColoredShapePipeline private final Draw2dCrosshairPipe draw2dCrosshairPipe = new Draw2dCrosshairPipe(); private final Draw2dTargetsPipe draw2DTargetsPipe = new Draw2dTargetsPipe(); private final Draw3dTargetsPipe draw3dTargetsPipe = new Draw3dTargetsPipe(); + private final CalculateFPSPipe calculateFPSPipe = new CalculateFPSPipe(); private final Mat rawInputMat = new Mat(); private final Point[] rectPoints = new Point[4]; @@ -158,7 +158,9 @@ public class ColoredShapePipeline var solvePNPParams = new SolvePNPPipe.SolvePNPPipeParams( - settings.cameraCalibration, settings.cameraPitch, settings.targetModel); + frameStaticProperties.cameraCalibration, + frameStaticProperties.cameraPitch, + settings.targetModel); solvePNPPipe.setParams(solvePNPParams); Draw2dTargetsPipe.Draw2dTargetsParams draw2DTargetsParams = @@ -178,10 +180,12 @@ public class ColoredShapePipeline frameStaticProperties); draw2dCrosshairPipe.setParams(draw2dCrosshairParams); - var draw3dContoursParams = + var draw3dTargetsParams = new Draw3dTargetsPipe.Draw3dContoursParams( - settings.outputShouldDraw, settings.cameraCalibration, settings.targetModel); - draw3dTargetsPipe.setParams(draw3dContoursParams); + settings.outputShouldDraw, + frameStaticProperties.cameraCalibration, + settings.targetModel); + draw3dTargetsPipe.setParams(draw3dTargetsParams); } @Override @@ -269,12 +273,11 @@ public class ColoredShapePipeline // Draw 2D contours on input and output var draw2dContoursResultOnInput = - draw2DTargetsPipe.run(Triple.of(rawInputMat, collect2dTargetsResult.output, -12345)); + draw2DTargetsPipe.run(Pair.of(rawInputMat, collect2dTargetsResult.output)); sumPipeNanosElapsed += draw2dContoursResultOnInput.nanosElapsed; var draw2dContoursResultOnOutput = - draw2DTargetsPipe.run( - Triple.of(hsvPipeResult.output, collect2dTargetsResult.output, -12345)); + draw2DTargetsPipe.run(Pair.of(hsvPipeResult.output, collect2dTargetsResult.output)); sumPipeNanosElapsed += draw2dContoursResultOnOutput.nanosElapsed; if (settings.solvePNPEnabled && settings.desiredShape == ContourShape.Circle) { @@ -291,8 +294,12 @@ public class ColoredShapePipeline var outputMatPipeResult = outputMatPipe.run(hsvPipeResult.output); sumPipeNanosElapsed += outputMatPipeResult.nanosElapsed; + var fpsResult = calculateFPSPipe.run(null); + var fps = fpsResult.output; + return new CVPipelineResult( MathUtils.nanosToMillis(sumPipeNanosElapsed), + fps, targetList, new Frame(new CVMat(hsvPipeResult.output), frame.frameStaticProperties), new Frame(new CVMat(rawInputMat), frame.frameStaticProperties)); diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipelineSettings.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipelineSettings.java index 19e309340..3d9ce13e3 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipelineSettings.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/ColoredShapePipelineSettings.java @@ -132,6 +132,7 @@ public class ColoredShapePipelineSettings extends AdvancedPipelineSettings { cornerDetectionSideCount, cornerDetectionAccuracyPercentage, erode, - dilate); + dilate, + accuracy); } } diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/DriverModePipeline.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/DriverModePipeline.java index 01b96d2e9..f07f018c8 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipeline/DriverModePipeline.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/DriverModePipeline.java @@ -19,10 +19,13 @@ package org.photonvision.vision.pipeline; import java.util.List; import org.apache.commons.lang3.tuple.Pair; +import org.opencv.core.Mat; import org.photonvision.common.util.math.MathUtils; +import org.photonvision.raspi.PicamJNI; import org.photonvision.vision.frame.Frame; import org.photonvision.vision.frame.FrameStaticProperties; import org.photonvision.vision.opencv.CVMat; +import org.photonvision.vision.pipe.impl.CalculateFPSPipe; import org.photonvision.vision.pipe.impl.Draw2dCrosshairPipe; import org.photonvision.vision.pipe.impl.RotateImagePipe; import org.photonvision.vision.pipeline.result.DriverModePipelineResult; @@ -32,6 +35,7 @@ public class DriverModePipeline private final RotateImagePipe rotateImagePipe = new RotateImagePipe(); private final Draw2dCrosshairPipe draw2dCrosshairPipe = new Draw2dCrosshairPipe(); + private final CalculateFPSPipe calculateFPSPipe = new CalculateFPSPipe(); public DriverModePipeline() { settings = new DriverModePipelineSettings(); @@ -47,12 +51,19 @@ public class DriverModePipeline Draw2dCrosshairPipe.Draw2dCrosshairParams draw2dCrosshairParams = new Draw2dCrosshairPipe.Draw2dCrosshairParams(frameStaticProperties); draw2dCrosshairPipe.setParams(draw2dCrosshairParams); + + PicamJNI.setShouldCopyColor(true); } @Override public DriverModePipelineResult process(Frame frame, DriverModePipelineSettings settings) { // apply pipes var inputMat = frame.image.getMat(); + if (inputMat.channels() == 1 && PicamJNI.isSupported()) { + long colorMatPtr = PicamJNI.grabFrame(true); + if (colorMatPtr == 0) throw new RuntimeException("Got null Mat from GPU Picam driver"); + inputMat = new Mat(colorMatPtr); + } var rotateImageResult = rotateImagePipe.run(inputMat); var draw2dCrosshairResult = draw2dCrosshairPipe.run(Pair.of(inputMat, List.of())); @@ -60,8 +71,12 @@ public class DriverModePipeline // calculate elapsed nanoseconds long totalNanos = rotateImageResult.nanosElapsed + draw2dCrosshairResult.nanosElapsed; + var fpsResult = calculateFPSPipe.run(null); + var fps = fpsResult.output; + return new DriverModePipelineResult( MathUtils.nanosToMillis(totalNanos), + fps, new Frame(new CVMat(inputMat), frame.frameStaticProperties)); } } diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/DriverModePipelineSettings.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/DriverModePipelineSettings.java index 1c14c6103..ede5c3338 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipeline/DriverModePipelineSettings.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/DriverModePipelineSettings.java @@ -32,5 +32,6 @@ public class DriverModePipelineSettings extends CVPipelineSettings { pipelineNickname = "Driver Mode"; pipelineIndex = PipelineManager.DRIVERMODE_INDEX; pipelineType = PipelineType.DriverMode; + inputShouldShow = true; } } diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/OutputStreamPipeline.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/OutputStreamPipeline.java new file mode 100644 index 000000000..738981713 --- /dev/null +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/OutputStreamPipeline.java @@ -0,0 +1,128 @@ +/* + * Copyright (C) 2020 Photon Vision. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.photonvision.vision.pipeline; + +import java.util.List; +import org.apache.commons.lang3.tuple.Pair; +import org.photonvision.common.util.math.MathUtils; +import org.photonvision.vision.frame.Frame; +import org.photonvision.vision.frame.FrameStaticProperties; +import org.photonvision.vision.opencv.CVMat; +import org.photonvision.vision.opencv.DualOffsetValues; +import org.photonvision.vision.pipe.impl.*; +import org.photonvision.vision.pipeline.result.CVPipelineResult; +import org.photonvision.vision.target.TrackedTarget; + +/** +* This is a "fake" pipeline that is just used to move identical pipe sets out of real pipelines. It +* shall not get its settings saved, nor shall it be managed by PipelineManager +*/ +public class OutputStreamPipeline { + + private final OutputMatPipe outputMatPipe = new OutputMatPipe(); + private final Draw2dCrosshairPipe draw2dCrosshairPipe = new Draw2dCrosshairPipe(); + private final Draw2dTargetsPipe draw2dTargetsPipe = new Draw2dTargetsPipe(); + private final Draw3dTargetsPipe draw3dTargetsPipe = new Draw3dTargetsPipe(); + private final CalculateFPSPipe calculateFPSPipe = new CalculateFPSPipe(); + + private final long[] pipeProfileNanos = new long[10]; + + protected void setPipeParams( + FrameStaticProperties frameStaticProperties, AdvancedPipelineSettings settings) { + + var dualOffsetValues = + new DualOffsetValues( + settings.offsetDualPointA, + settings.offsetDualPointAArea, + settings.offsetDualPointB, + settings.offsetDualPointBArea); + + var draw2DTargetsParams = + new Draw2dTargetsPipe.Draw2dTargetsParams( + settings.outputShouldDraw, settings.outputShowMultipleTargets); + draw2dTargetsPipe.setParams(draw2DTargetsParams); + + var draw2dCrosshairParams = + new Draw2dCrosshairPipe.Draw2dCrosshairParams( + settings.outputShouldDraw, + settings.offsetRobotOffsetMode, + settings.offsetSinglePoint, + dualOffsetValues, + frameStaticProperties); + draw2dCrosshairPipe.setParams(draw2dCrosshairParams); + + var draw3dTargetsParams = + new Draw3dTargetsPipe.Draw3dContoursParams( + settings.outputShouldDraw, + frameStaticProperties.cameraCalibration, + settings.targetModel); + draw3dTargetsPipe.setParams(draw3dTargetsParams); + } + + public CVPipelineResult process( + Frame inputFrame, + Frame outputFrame, + AdvancedPipelineSettings settings, + List targetsToDraw) { + setPipeParams(inputFrame.frameStaticProperties, settings); + var inMat = inputFrame.image.getMat(); + var outMat = outputFrame.image.getMat(); + + long sumPipeNanosElapsed = 0L; + + // Convert single-channel HSV output mat to 3-channel BGR in preparation for streaming + var outputMatPipeResult = outputMatPipe.run(outMat); + sumPipeNanosElapsed += pipeProfileNanos[0] = outputMatPipeResult.nanosElapsed; + + // Draw 2D Crosshair on input and output + var draw2dCrosshairResultOnInput = draw2dCrosshairPipe.run(Pair.of(inMat, targetsToDraw)); + sumPipeNanosElapsed += pipeProfileNanos[1] = draw2dCrosshairResultOnInput.nanosElapsed; + + var draw2dCrosshairResultOnOutput = draw2dCrosshairPipe.run(Pair.of(inMat, targetsToDraw)); + sumPipeNanosElapsed += pipeProfileNanos[2] = draw2dCrosshairResultOnOutput.nanosElapsed; + + // Draw 2D contours on input and output + var draw2dTargetsOnInput = draw2dTargetsPipe.run(Pair.of(inMat, targetsToDraw)); + sumPipeNanosElapsed += pipeProfileNanos[3] = draw2dTargetsOnInput.nanosElapsed; + + var draw2dTargetsOnOutput = draw2dTargetsPipe.run(Pair.of(outMat, targetsToDraw)); + sumPipeNanosElapsed += pipeProfileNanos[4] = draw2dTargetsOnOutput.nanosElapsed; + + // Draw 3D Targets on input and output if necessary + if (settings.solvePNPEnabled) { + var drawOnInputResult = draw3dTargetsPipe.run(Pair.of(inMat, targetsToDraw)); + sumPipeNanosElapsed += pipeProfileNanos[5] = drawOnInputResult.nanosElapsed; + + var drawOnOutputResult = draw3dTargetsPipe.run(Pair.of(outMat, targetsToDraw)); + sumPipeNanosElapsed += pipeProfileNanos[6] = drawOnOutputResult.nanosElapsed; + } else { + pipeProfileNanos[5] = 0; + pipeProfileNanos[6] = 0; + } + + var fpsResult = calculateFPSPipe.run(null); + var fps = fpsResult.output; + + return new CVPipelineResult( + MathUtils.nanosToMillis(sumPipeNanosElapsed), + fps, // Unused but here just in case + targetsToDraw, + new Frame(new CVMat(outMat), outputFrame.frameStaticProperties), + new Frame(new CVMat(inMat), inputFrame.frameStaticProperties)); + } +} diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/PipelineProfiler.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/PipelineProfiler.java index ab5df3eee..3f39a9ce4 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipeline/PipelineProfiler.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/PipelineProfiler.java @@ -38,7 +38,6 @@ public class PipelineProfiler { private static final String[] ReflectivePipeNames = new String[] { "RotateImage", - "InputCopy", "HSV", "FindContours", "SpeckleReject", @@ -48,13 +47,6 @@ public class PipelineProfiler { "Collect2dTargets", "CornerDetection", "SolvePNP", - "OutputConversion", - "Draw2dCrosshairInput", - "Draw2dCrosshairOutput", - "Draw2dTargetsInput", - "Draw2dTargetsOutput", - "Draw3dTargetsInput", - "Draw3dTargetsOutput", }; public static final int ReflectivePipeCount = ReflectivePipeNames.length; diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/ReflectivePipeline.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/ReflectivePipeline.java index 53c99a970..1894db0a0 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipeline/ReflectivePipeline.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/ReflectivePipeline.java @@ -18,10 +18,9 @@ package org.photonvision.vision.pipeline; import java.util.List; -import org.apache.commons.lang3.tuple.Pair; -import org.apache.commons.lang3.tuple.Triple; import org.opencv.core.Mat; import org.photonvision.common.util.math.MathUtils; +import org.photonvision.raspi.PicamJNI; import org.photonvision.vision.frame.Frame; import org.photonvision.vision.frame.FrameStaticProperties; import org.photonvision.vision.opencv.CVMat; @@ -47,13 +46,8 @@ public class ReflectivePipeline extends CVPipeline hsvPipeResult; + Mat rawInputMat; + if (frame.image.getMat().channels() != 1) { + var rotateImageResult = rotateImagePipe.run(frame.image.getMat()); + sumPipeNanosElapsed += pipeProfileNanos[0] = rotateImageResult.nanosElapsed; - // TODO: make this a pipe? - long inputCopyStartNanos = System.nanoTime(); - rawInputMat.release(); - frame.image.getMat().copyTo(rawInputMat); - long inputCopyElapsedNanos = System.nanoTime() - inputCopyStartNanos; - sumPipeNanosElapsed += pipeProfileNanos[1] = inputCopyElapsedNanos; + rawInputMat = frame.image.getMat(); - CVPipeResult hsvPipeResult = hsvPipe.run(rawInputMat); - sumPipeNanosElapsed += hsvPipeResult.nanosElapsed; - pipeProfileNanos[2] = pipeProfileNanos[2] = hsvPipeResult.nanosElapsed; + hsvPipeResult = hsvPipe.run(rawInputMat); + sumPipeNanosElapsed += hsvPipeResult.nanosElapsed; + pipeProfileNanos[1] = pipeProfileNanos[1] = hsvPipeResult.nanosElapsed; + } else { + long inputMatPtr = PicamJNI.grabFrame(true); + if (inputMatPtr != 0) rawInputMat = new Mat(inputMatPtr); + else rawInputMat = frame.image.getMat(); + + // We can skip a few steps if the image is single channel because we've already done them on + // the GPU + hsvPipeResult = new CVPipeResult<>(); + hsvPipeResult.output = frame.image.getMat(); + hsvPipeResult.nanosElapsed = System.nanoTime() - frame.timestampNanos; + + sumPipeNanosElapsed = pipeProfileNanos[1] = hsvPipeResult.nanosElapsed; + } CVPipeResult> findContoursResult = findContoursPipe.run(hsvPipeResult.output); - sumPipeNanosElapsed += pipeProfileNanos[3] = findContoursResult.nanosElapsed; + sumPipeNanosElapsed += pipeProfileNanos[2] = findContoursResult.nanosElapsed; CVPipeResult> speckleRejectResult = speckleRejectPipe.run(findContoursResult.output); - sumPipeNanosElapsed += pipeProfileNanos[4] = speckleRejectResult.nanosElapsed; + sumPipeNanosElapsed += pipeProfileNanos[3] = speckleRejectResult.nanosElapsed; CVPipeResult> filterContoursResult = filterContoursPipe.run(speckleRejectResult.output); - sumPipeNanosElapsed += pipeProfileNanos[5] = filterContoursResult.nanosElapsed; + sumPipeNanosElapsed += pipeProfileNanos[4] = filterContoursResult.nanosElapsed; CVPipeResult> groupContoursResult = groupContoursPipe.run(filterContoursResult.output); - sumPipeNanosElapsed += pipeProfileNanos[6] = groupContoursResult.nanosElapsed; + sumPipeNanosElapsed += pipeProfileNanos[5] = groupContoursResult.nanosElapsed; CVPipeResult> sortContoursResult = sortContoursPipe.run(groupContoursResult.output); - sumPipeNanosElapsed += pipeProfileNanos[7] = sortContoursResult.nanosElapsed; + sumPipeNanosElapsed += pipeProfileNanos[6] = sortContoursResult.nanosElapsed; CVPipeResult> collect2dTargetsResult = collect2dTargetsPipe.run(sortContoursResult.output); - sumPipeNanosElapsed += pipeProfileNanos[8] = collect2dTargetsResult.nanosElapsed; + sumPipeNanosElapsed += pipeProfileNanos[7] = collect2dTargetsResult.nanosElapsed; List targetList; // 3d stuff if (settings.solvePNPEnabled) { var cornerDetectionResult = cornerDetectionPipe.run(collect2dTargetsResult.output); - sumPipeNanosElapsed += pipeProfileNanos[9] = cornerDetectionResult.nanosElapsed; + sumPipeNanosElapsed += pipeProfileNanos[8] = cornerDetectionResult.nanosElapsed; var solvePNPResult = solvePNPPipe.run(cornerDetectionResult.output); - sumPipeNanosElapsed += pipeProfileNanos[10] = solvePNPResult.nanosElapsed; + sumPipeNanosElapsed += pipeProfileNanos[9] = solvePNPResult.nanosElapsed; targetList = solvePNPResult.output; } else { + pipeProfileNanos[8] = 0; pipeProfileNanos[9] = 0; - pipeProfileNanos[10] = 0; targetList = collect2dTargetsResult.output; } var fpsResult = calculateFPSPipe.run(null); var fps = fpsResult.output; - sumPipeNanosElapsed += fpsResult.nanosElapsed; - - // Convert single-channel HSV output mat to 3-channel BGR in preparation for streaming - var outputMatPipeResult = outputMatPipe.run(hsvPipeResult.output); - sumPipeNanosElapsed += pipeProfileNanos[11] = outputMatPipeResult.nanosElapsed; - - // Draw 2D Crosshair on input and output - var draw2dCrosshairResultOnInput = draw2dCrosshairPipe.run(Pair.of(rawInputMat, targetList)); - sumPipeNanosElapsed += pipeProfileNanos[12] = draw2dCrosshairResultOnInput.nanosElapsed; - - var draw2dCrosshairResultOnOutput = - draw2dCrosshairPipe.run(Pair.of(hsvPipeResult.output, targetList)); - sumPipeNanosElapsed += pipeProfileNanos[13] = draw2dCrosshairResultOnOutput.nanosElapsed; - - // Draw 2D contours on input and output - var draw2dTargetsOnInput = - draw2dTargetsPipe.run(Triple.of(rawInputMat, collect2dTargetsResult.output, fps)); - sumPipeNanosElapsed += pipeProfileNanos[14] = draw2dTargetsOnInput.nanosElapsed; - - var draw2dTargetsOnOutput = - draw2dTargetsPipe.run(Triple.of(hsvPipeResult.output, collect2dTargetsResult.output, fps)); - sumPipeNanosElapsed += pipeProfileNanos[15] = draw2dTargetsOnOutput.nanosElapsed; - - // Draw 3D Targets on input and output if necessary - if (settings.solvePNPEnabled) { - var drawOnInputResult = - draw3dTargetsPipe.run(Pair.of(rawInputMat, collect2dTargetsResult.output)); - sumPipeNanosElapsed += pipeProfileNanos[16] = drawOnInputResult.nanosElapsed; - - var drawOnOutputResult = - draw3dTargetsPipe.run(Pair.of(hsvPipeResult.output, collect2dTargetsResult.output)); - sumPipeNanosElapsed += pipeProfileNanos[17] = drawOnOutputResult.nanosElapsed; - } else { - pipeProfileNanos[16] = 0; - pipeProfileNanos[17] = 0; - } PipelineProfiler.printReflectiveProfile(pipeProfileNanos); return new CVPipelineResult( MathUtils.nanosToMillis(sumPipeNanosElapsed), + fps, targetList, new Frame(new CVMat(hsvPipeResult.output), frame.frameStaticProperties), new Frame(new CVMat(rawInputMat), frame.frameStaticProperties)); diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/ReflectivePipelineSettings.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/ReflectivePipelineSettings.java index b314e857d..0dabade01 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipeline/ReflectivePipelineSettings.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/ReflectivePipelineSettings.java @@ -18,7 +18,6 @@ package org.photonvision.vision.pipeline; import com.fasterxml.jackson.annotation.JsonTypeName; -import java.util.Objects; import org.photonvision.vision.opencv.ContourGroupingMode; import org.photonvision.vision.opencv.ContourIntersectionDirection; import org.photonvision.vision.pipe.impl.CornerDetectionPipe; @@ -48,37 +47,4 @@ public class ReflectivePipelineSettings extends AdvancedPipelineSettings { super(); pipelineType = PipelineType.Reflective; } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - if (!super.equals(o)) return false; - ReflectivePipelineSettings that = (ReflectivePipelineSettings) o; - return solvePNPEnabled == that.solvePNPEnabled - && cornerDetectionUseConvexHulls == that.cornerDetectionUseConvexHulls - && cornerDetectionExactSideCount == that.cornerDetectionExactSideCount - && cornerDetectionSideCount == that.cornerDetectionSideCount - && Double.compare(that.cornerDetectionAccuracyPercentage, cornerDetectionAccuracyPercentage) - == 0 - && contourGroupingMode == that.contourGroupingMode - && contourIntersection == that.contourIntersection - && targetModel.equals(that.targetModel) - && cornerDetectionStrategy == that.cornerDetectionStrategy; - } - - @Override - public int hashCode() { - return Objects.hash( - super.hashCode(), - contourGroupingMode, - contourIntersection, - solvePNPEnabled, - targetModel, - cornerDetectionStrategy, - cornerDetectionUseConvexHulls, - cornerDetectionExactSideCount, - cornerDetectionSideCount, - cornerDetectionAccuracyPercentage); - } } diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/result/CVPipelineResult.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/result/CVPipelineResult.java index 2ec0997ac..83b204512 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipeline/result/CVPipelineResult.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/result/CVPipelineResult.java @@ -26,21 +26,28 @@ import org.photonvision.vision.target.TrackedTarget; public class CVPipelineResult implements Releasable { private double latencyMillis; public final double processingMillis; + public final double fps; public final List targets; public final Frame outputFrame; public final Frame inputFrame; public CVPipelineResult( - double processingMillis, List targets, Frame outputFrame, Frame inputFrame) { + double processingMillis, + double fps, + List targets, + Frame outputFrame, + Frame inputFrame) { this.processingMillis = processingMillis; + this.fps = fps; this.targets = targets != null ? targets : Collections.emptyList(); - this.outputFrame = Frame.copyFromAndRelease(outputFrame); - this.inputFrame = inputFrame != null ? Frame.copyFromAndRelease(inputFrame) : null; + this.outputFrame = outputFrame; + this.inputFrame = inputFrame; } - public CVPipelineResult(double processingMillis, List targets, Frame outputFrame) { - this(processingMillis, targets, outputFrame, null); + public CVPipelineResult( + double processingMillis, double fps, List targets, Frame outputFrame) { + this(processingMillis, fps, targets, outputFrame, null); } public boolean hasTargets() { diff --git a/photon-server/src/main/java/org/photonvision/vision/pipeline/result/DriverModePipelineResult.java b/photon-server/src/main/java/org/photonvision/vision/pipeline/result/DriverModePipelineResult.java index 6db6a5343..59596ec19 100644 --- a/photon-server/src/main/java/org/photonvision/vision/pipeline/result/DriverModePipelineResult.java +++ b/photon-server/src/main/java/org/photonvision/vision/pipeline/result/DriverModePipelineResult.java @@ -21,7 +21,7 @@ import java.util.List; import org.photonvision.vision.frame.Frame; public class DriverModePipelineResult extends CVPipelineResult { - public DriverModePipelineResult(double latencyMillis, Frame outputFrame) { - super(latencyMillis, List.of(), outputFrame); + public DriverModePipelineResult(double latencyMillis, double fps, Frame outputFrame) { + super(latencyMillis, fps, List.of(), outputFrame); } } diff --git a/photon-server/src/main/java/org/photonvision/vision/processes/VisionModule.java b/photon-server/src/main/java/org/photonvision/vision/processes/VisionModule.java index eb0c2b4cc..d4091e702 100644 --- a/photon-server/src/main/java/org/photonvision/vision/processes/VisionModule.java +++ b/photon-server/src/main/java/org/photonvision/vision/processes/VisionModule.java @@ -37,8 +37,12 @@ import org.photonvision.vision.calibration.CameraCalibrationCoefficients; import org.photonvision.vision.camera.CameraQuirk; import org.photonvision.vision.camera.QuirkyCamera; import org.photonvision.vision.camera.USBCameraSource; +import org.photonvision.vision.camera.ZeroCopyPicamSource; +import org.photonvision.vision.frame.Frame; import org.photonvision.vision.frame.consumer.FileSaveFrameConsumer; import org.photonvision.vision.frame.consumer.MJPGFrameConsumer; +import org.photonvision.vision.pipeline.AdvancedPipelineSettings; +import org.photonvision.vision.pipeline.OutputStreamPipeline; import org.photonvision.vision.pipeline.ReflectivePipelineSettings; import org.photonvision.vision.pipeline.UICalibrationData; import org.photonvision.vision.pipeline.result.CVPipelineResult; @@ -53,12 +57,13 @@ import org.photonvision.vision.target.TrackedTarget; */ public class VisionModule { - private static final int StreamFPSCap = 30; + private static final int streamFPSCap = 30; private final Logger logger; protected final PipelineManager pipelineManager; protected final VisionSource visionSource; private final VisionRunner visionRunner; + private final StreamRunnable streamRunnable; private final LinkedList resultConsumers = new LinkedList<>(); private final LinkedList fpsLimitedResultConsumers = new LinkedList<>(); private final NTDataPublisher ntConsumer; @@ -88,11 +93,14 @@ public class VisionModule { this.visionSource.getFrameProvider(), this.pipelineManager::getCurrentUserPipeline, this::consumeResult); + this.streamRunnable = new StreamRunnable(new OutputStreamPipeline()); this.moduleIndex = index; // do this if (visionSource instanceof USBCameraSource) { cameraQuirks = ((USBCameraSource) visionSource).cameraQuirks; + } else if (visionSource instanceof ZeroCopyPicamSource) { + cameraQuirks = QuirkyCamera.ZeroCopyPiCamera; } else { cameraQuirks = QuirkyCamera.DefaultCamera; } @@ -100,10 +108,8 @@ public class VisionModule { DataChangeService.getInstance().addSubscriber(new VisionModuleChangeSubscriber(this)); createStreams(); - fpsLimitedResultConsumers.add(result -> dashboardInputStreamer.accept(result.inputFrame)); - fpsLimitedResultConsumers.add(result -> dashboardOutputStreamer.accept(result.outputFrame)); - fpsLimitedResultConsumers.add(result -> inputFrameSaver.accept(result.inputFrame)); - fpsLimitedResultConsumers.add(result -> outputFrameSaver.accept(result.outputFrame)); + + recreateFpsLimitedResultConsumers(); ntConsumer = new NTDataPublisher( @@ -169,6 +175,99 @@ public class VisionModule { visionSource.getSettables().getConfiguration().nickname, "output"); } + private void recreateFpsLimitedResultConsumers() { + // Important! These must come before the stream result consumers because the stream result + // consumers release the frame + fpsLimitedResultConsumers.add(result -> inputFrameSaver.accept(result.inputFrame)); + fpsLimitedResultConsumers.add(result -> outputFrameSaver.accept(result.outputFrame)); + + fpsLimitedResultConsumers.add( + result -> { + if (this.pipelineManager.getCurrentPipelineSettings().inputShouldShow) + dashboardInputStreamer.accept(result.inputFrame); + }); + fpsLimitedResultConsumers.add( + result -> { + if (this.pipelineManager.getCurrentPipelineSettings().outputShouldShow) + dashboardOutputStreamer.accept(result.outputFrame); + }); + } + + private class StreamRunnable extends Thread { + private final OutputStreamPipeline outputStreamPipeline; + + private final Object frameLock = new Object(); + private Frame inputFrame, outputFrame; + private AdvancedPipelineSettings settings = new AdvancedPipelineSettings(); + private List targets = new ArrayList<>(); + + private boolean shouldRun = false; + + public StreamRunnable(OutputStreamPipeline outputStreamPipeline) { + this.outputStreamPipeline = outputStreamPipeline; + } + + public void updateData( + Frame inputFrame, + Frame outputFrame, + AdvancedPipelineSettings settings, + List targets) { + synchronized (frameLock) { + if (shouldRun && this.inputFrame != null && this.outputFrame != null) { + logger.trace("Fell behind; releasing last unused Mats"); + this.inputFrame.release(); + this.outputFrame.release(); + } + + this.inputFrame = inputFrame; + this.outputFrame = outputFrame; + this.settings = settings; + this.targets = targets; + + shouldRun = + inputFrame != null + && !inputFrame.image.getMat().empty() + && outputFrame != null + && !outputFrame.image.getMat().empty(); + } + } + + @Override + public void run() { + while (true) { + final Frame inputFrame, outputFrame; + final AdvancedPipelineSettings settings; + final List targets; + final boolean shouldRun; + synchronized (frameLock) { + inputFrame = this.inputFrame; + outputFrame = this.outputFrame; + this.inputFrame = null; + this.outputFrame = null; + + settings = this.settings; + targets = this.targets; + shouldRun = this.shouldRun; + + this.shouldRun = false; + } + if (shouldRun) { + var osr = outputStreamPipeline.process(inputFrame, outputFrame, settings, targets); + consumeFpsLimitedResult(osr); + inputFrame.release(); + outputFrame.release(); + } else { + // busy wait! hurray! + try { + Thread.sleep(1); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + } + } + void setDriverMode(boolean isDriverMode) { pipelineManager.setDriverMode(isDriverMode); setVisionLEDs(!isDriverMode); @@ -177,6 +276,7 @@ public class VisionModule { public void start() { visionRunner.startProcess(); + streamRunnable.start(); } public void setFovAndPitch(double fov, Rotation2d pitch) { @@ -271,7 +371,7 @@ public class VisionModule { if (!cameraQuirks.hasQuirk(CameraQuirk.Gain)) { config.cameraGain = -1; } else { - visionSource.getSettables().setGain(config.cameraGain); + visionSource.getSettables().setGain(Math.max(0, config.cameraGain)); } setVisionLEDs(config.ledMode); @@ -313,17 +413,15 @@ public class VisionModule { inputFrameSaver.updateCameraNickname(newName); outputFrameSaver.updateCameraNickname(newName); - // rename streams + // Rename streams fpsLimitedResultConsumers.clear(); // Teardown and recreate streams destroyStreams(); createStreams(); - fpsLimitedResultConsumers.add(result -> dashboardInputStreamer.accept(result.inputFrame)); - fpsLimitedResultConsumers.add(result -> dashboardOutputStreamer.accept(result.outputFrame)); - fpsLimitedResultConsumers.add(result -> inputFrameSaver.accept(result.inputFrame)); - fpsLimitedResultConsumers.add(result -> outputFrameSaver.accept(result.outputFrame)); + // Rebuild streamers + recreateFpsLimitedResultConsumers(); // Push new data to the UI saveAndBroadcastAll(); @@ -395,9 +493,21 @@ public class VisionModule { private void consumeResult(CVPipelineResult result) { consumePipelineResult(result); - consumeFpsLimitedResult(result); - result.release(); + // Pipelines like DriverMode and Calibrate3dPipeline have null output frames + if (result.inputFrame != null) { + streamRunnable.updateData( + result.inputFrame, + result.outputFrame, + (AdvancedPipelineSettings) pipelineManager.getCurrentPipelineSettings(), + result.targets); + // The streamRunnable manages releasing in this case + } else { + consumeFpsLimitedResult(result); + + result.release(); + // In this case we don't bother with a separate streaming thread and we release + } } private void consumePipelineResult(CVPipelineResult result) { @@ -407,7 +517,8 @@ public class VisionModule { } private void consumeFpsLimitedResult(CVPipelineResult result) { - if (System.currentTimeMillis() - lastFrameConsumeMillis > 1000 / StreamFPSCap) { + long dt = System.currentTimeMillis() - lastFrameConsumeMillis; + if (dt > 1000 / streamFPSCap) { for (var c : fpsLimitedResultConsumers) { c.accept(result); } diff --git a/photon-server/src/main/java/org/photonvision/vision/processes/VisionSourceManager.java b/photon-server/src/main/java/org/photonvision/vision/processes/VisionSourceManager.java index 6a081f931..6501cbfa5 100644 --- a/photon-server/src/main/java/org/photonvision/vision/processes/VisionSourceManager.java +++ b/photon-server/src/main/java/org/photonvision/vision/processes/VisionSourceManager.java @@ -29,8 +29,10 @@ import org.photonvision.common.dataflow.events.OutgoingUIEvent; import org.photonvision.common.logging.LogGroup; import org.photonvision.common.logging.Logger; import org.photonvision.common.util.TimedTaskManager; +import org.photonvision.raspi.PicamJNI; import org.photonvision.vision.camera.CameraType; import org.photonvision.vision.camera.USBCameraSource; +import org.photonvision.vision.camera.ZeroCopyPicamSource; public class VisionSourceManager { @@ -152,17 +154,17 @@ public class VisionSourceManager { // Turn these camera configs into vision sources var sources = loadVisionSourcesFromCamConfigs(matchedCameras); - // These sources can be turned into USB cameras, which can be added to the config manager + // We want to return a map between vision sources and camera configurations var visionSourceMap = new HashMap(); for (var src : sources) { - var usbSrc = (USBCameraSource) src; - visionSourceMap.put(usbSrc, usbSrc.configuration); + var usbSrc = src; + visionSourceMap.put(usbSrc, usbSrc.getSettables().getConfiguration()); logger.debug( () -> "Matched config for camera \"" + src.getFrameProvider().getName() + "\" and loaded " - + usbSrc.configuration.pipelineSettings.size() + + usbSrc.getSettables().getConfiguration().pipelineSettings.size() + " pipelines"); } return visionSourceMap; @@ -255,12 +257,6 @@ public class VisionSourceManager { return cfg; } - private List loadVisionSourcesFromCamConfigs(List camConfigs) { - List usbCameraSources = new ArrayList<>(); - camConfigs.forEach(configuration -> usbCameraSources.add(new USBCameraSource(configuration))); - return usbCameraSources; - } - private List filterAllowedDevices(List allDevices) { List filteredDevices = new ArrayList<>(); for (var device : allDevices) { @@ -294,6 +290,21 @@ public class VisionSourceManager { return baseName.replaceAll(" ", "_"); } + private static List loadVisionSourcesFromCamConfigs( + List camConfigs) { + List cameraSources = new ArrayList<>(); + for (var configuration : camConfigs) { + if (configuration.baseName.startsWith("mmal service") && PicamJNI.isSupported()) { + configuration.cameraType = CameraType.ZeroCopyPicam; + VisionSource picamSrc = new ZeroCopyPicamSource(configuration); + cameraSources.add(picamSrc); + continue; + } + cameraSources.add(new USBCameraSource(configuration)); + } + return cameraSources; + } + /** * Check if a given config list contains the given unique name. * diff --git a/photon-server/src/main/resources/nativelibraries/libpicam.so b/photon-server/src/main/resources/nativelibraries/libpicam.so new file mode 100755 index 0000000000000000000000000000000000000000..a3c37994b2b2a56d1b98ad2fd99d2a1aced14d9e GIT binary patch literal 862044 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%0Acxfi}doT)DnN98D$-6M({b}{pr6Bh&M z=k!HR+&NQf$>_>j)V)~fTp{-lIIuQ5M@G^?rycYuw>Iq5bPVLjNhbr#>Rh0=cXFjs1vu zBkuT;oaEo}F>AaQ_k_-28eR&}xbwoN%(oHy_0u_zKE|Bt$9aDn_kNDb;XUrK&-Qbk zLw;)GM7$CEkS=#^g`c|`w`I&owHb=p`kYSBGIuL(h0MsVek+#ESAxG~#;f0txxJCZ zT2}S;n0ymxdA(8nK}XLL-ksPD zQd=IzSA@zszJ$i2OAN%3H%TqK;cKIi>r+?|VGw~e)5@bO&SowI8#;~gXh z#qD?E_?Ka@89l#5;uq{lEkGhx*C(^N3^Vw;0a>TW|B|d92l07G z<`Jd*KQ!|u`9CZ(8_`j$Zdj&#y$S#2>rMDCUvI*H`Fa!n%h#LghG$+Q^hRXfC;vxg zz9aufW&SAt$7CL!BE2!0-KD-UnQMig-7|NW=W&^{<^ROYCGvk#=E?GZkIdWT|CG#^ zL3IUKaj@otSv_ zg--T;4`7w^C%EM5i=9F~7)8fij;Bl1lY;_(MQ#BLRA1(pd?-wqmQhfBg_FJOgD8Cm zUM*6MAM?q)r0C_3@N~74Ly&X8G8{dwzD7O8i>i-?RbT6L8Vy)xQF$?*{-(-h7j+qf za@VP+JkG;&XKVSM9V;M+mT?3A7qCF}xiOOu zh1;;s5U+kBmQ8neKtoNFQT>$mX{r@Z$5Q-MiDMKHwfdQu`8kO=yP}@gV_gQJ*s>u- z^vpexEbM9GLjcuIMm8Ox(n3uCtVGu4t26YkN|YtUGsI)Yl?^AvTt;;=BZrPA zyQs{;Q!1mwTOgTNbhQC}WoG353r___&*K<EnTDrsMLfD% z-8LiVFg*1HgJW3Yhfl!xj#$B`c!)bYa9>IrAvIHeL|5=#CP;oAE6hZ(xYG{zQ%sUK zPk}ib1$RCUZoY|i93bF9xG!Z7-Gdl%<98@fkRwvTjctJZZLIJBLH-NwrNyKmJ$t5nh4~?(~s}M93i;}`ni+F-wDV56(;F%rxE`q&H9&NtU&^_ zKIZddF!3J03VZ|pooZh6cf+^{DV**djcL?xD1O?bSl43W9V}7|L;|BLj=LmpL^TQL z{BJqVFe5JMc-DDXZP!FaeQrjg`^FMJ%)cYOtnd4*@U{!|r^*`hH6HJuh zXL=dGBXQyFmeHPxMjW!6&qN_kt}SNb&3=Y)2@_i|0$k6;&9%1C72s)+kk%>~wLYE-%wmIFxr?%{KU&HaAENCL`9EgmT^}Jn&8zL9WSTH2F80wyX1V+yK zu2$PAX#f0GeCVzohVFVJTH8~7Z}OHneqk|KMu?$jzhoH;hpTkv!N3_UY5BbBTi{h@ zhvSUo-;tg__gHL2bul{3Yo{_b~LMnkpPVJPgpsRnhaV;POJ zvZg}+gAp@Z!YskJmu(mqn;QR5?>LJ%XXc?}NVzI^p?Di%cXmUJktmP# zFmdu29HC-j#wy$RnTa9KS;i(NmM_AAFeZj$VZAR@?;Hw$GLne{!1BpVjM#@ukSZCshc!ZH3&RdziD)vwBH6eIHdk{jXC~k zxCkWIu3g=5+i^1M1BXb?Y+0!tlqdS@x?)NnIzIbC64(WD=q0cejHye@luYYYf zEAijF)+_?F0?GE~ENi)8d|-}4#;k8(#>R){PgMBffX26q~ zTMrC-BW}G+u=3ny{Gw#;+{H%bvW^?j46_U_o@0;H@K+@##kXrD2T zC{~VR9F6}c;L0ZwEMZT~li*NsPo9dLVM7y;%@(9G&wCPYKE><`vZ*yPO1l#b)a^h> z5}|Y+QZFE3zlEDrbw5#teL@n6XF{TwaTub`Hfy?4A~Re}$J?wKDTiB1Z@$nl@_}lP z#!YBU^8}L^Xm)-HYn~z)JoNi*1_g6J8aNfm)*)UAHZUX@QhGbjF&goIDXx5C8>K@* z>L{eF4Y)~7eNmG!jwo%~I>v?ge>tvvA{qGME0}s3$;@PqWh9D`a3*7x4`ZD$r~^(X zRa*l%CpAh>LUUgSqWv{)z8JuDm67p)*^Wgaw*4tKVwB#@)U&|vhMVC3i0m2sws^)x z1=nG2YYZF3+7ANUwr*^f z|HRD~bf_kxr_lGap2OIIE1%df#oy5MxJ>So9g!V(2H?Jw7^85ROcfMl-fp_a0PD9UL#2MB=>8(fd-|23q)nDnZ7}U-NqJ151J~dc;li@s3#5lniwjaVO z`)yL|)(5YR!Z?%J8+J}$<~8uWZE>MQwc$Q6bPHlZW7wBJp+xTUDDiI)&*@LZ)a0=k zkIw5g9}$i*Yy+z~goWDROpQ=)k7*RCXXbi2U66AcyyJw+@cv?Vsx_E&CLFv!UWr;^ z^~`;owLeQjx3nU}Vo^dQtq7G`gIQJ)Dzkc$YQfr%L3OA#vnNOQ6+az$<$lg5cCBT@E$Ahcfo(xC!UI zsE>rh&}7)TWMc3OAo=ixhH)gBm!K9#+@wL^H55}+;Sbjar{|EC3 zwEDamlK(bSX|*r4`m(9CTG}40oeiS)rML;t`@`!S!_H$5dWN<6PVY)Yo6bP1gdGR! zSjva-vP@U{@>(2|1G4p@N97uEtt9Y92gmpk|Nn_ApGZdO5vO7i@kO9_!A&Y%0Q8W9 zAnroMYo&niiYuSkM(MjJ8^%PWtQolZ<&1GenTBfqg8$XH@`+@8WS%)4jhHIyGm~Z- z#{E!|d12p|ak|~S9HEjuHH+cFsMTmMuD_XANoGe*2&#~AFs?>^3Bs<(AmS!GpU=FN z4?-0ca{ljIJb!}gG_!W`Qe^fZ;e6e+YW$b%woA2?e_D^U5GO0v)t$ZuG~*jZZXTvY9$uSA)HzQKoofsVL}j3{obWq96)aaQ?}z@hAl*CSC2oPtzS7Ds63u0|B(!8?~$D=c- z!;xR&u!3n%GW#6?b!1~B-R=_SWZ*e8@ljljFHx0UC2yCthS42Y;~N;{?GcGX(J3e5 zc{HxmOn%bR-aV6>cxNJG0}=PY5|2GL&Q0g1@cbCAPt1Zs!+7%_I60__bkAauuL#05 zoZV;hCTe;X@a#VA@?L?a??-OOqp<3NEB{tJls!(Ilo!21%+^W>Yi|?#2M2z$4b%Y# zTe#=pzuj}-sie~rMTdgMVA9FQLkS%TvDBTo?l)Gy{6=Kw&%fxuq3Y3|E022az0OC2gnQgl1Hm|2%T9GnumwV-F&@g5W{|zxcq}>f8Aa@~JRm+w!3M%^vI8_LV^yJDI&cMsKf=#`N1qb98 z;0$v9UdYX25Vjd5Z^E??gE8V+g6Ax0lXW<9z60oUTyrIk1{mv8Ami+5<-YhjNWA|H z)~DCOui(mJ2wjcDbX;@KM}Upv@4n zQAWHYw73r?4e=w>k&CH4T4I;9+mFTRN8U!!H*qOHGK)ANKeD$u5~Zo;LjVE4EL}G9 zRFb#ov6Bug{bO%k2Q?FaVZV27sS&*8TOzw zya>QLT%zIAk=TGsH2kz^nD=og?`wD~;P-e1UPfXYuHsj0Hg3ML+Y>Ol?ae!Kyoqj8CXe-bk95DWpF2|A+ShXB71mnir%B;Lm* z3T6Qa2zO7xIV?m4k2xN{?82oKY+NabpzJGn9{~5nB?>+aiKVzi!I@VPnfGxh?<@F9 zz&GKN0$Y*Tf~&aTDxjeYAB&0u1y4e5RKW${0K+xzo`N4Ct5onipz}7a@*+T$f{7PV z@bGH*7Q!tfyAzbPYffK83|WUF_eT`{7T4+KT0HdyG#{Wd%yoDwTn|2Q8D+DsG31Sr zbS=w}QM`5&=G5O{>j%il3?ehL%qTtyz>Szl9H@X6f}vs#1fw{-Ov zk&V8IV(jXNqnvd0{h+?RsX`9f(#4602m|*x3UIjo4y;KRUkSt&xKtN^QxI2zqTj_& z1#kl{>9MyWaU(A2;_sk0pyS~l8KqwU{CTgyCrEsRtN3G}v5VJ&OWl2{vk@VvbhMj) zC+*_h0b^|2b!;2E`R}0h8?N%709Db! zZL_#|_X%Jh;o65QqJ+m4{O6o3E{XmQ&~LbA9|Xrua6;~^G%;^{7MGKAPeki+&E^_8 zQIbAN>gY~cTqy4gaBp1lcOWPF)xbkUg?l#s+hdE(55X{J{JQ~fG_H|c2wfm(>W&&m zSVjA@VO;8*4V-;Qb0k+(iGp1|K?mY+tL^zj90O1zkQU*}D#yb*B-Zj_Up!od#5uT( z5-x+Xup{?OWFPC^MUWCehG;eaFs7Z$+IyA@UMi6vdmC-W+l3s z8M2W3DUd(LHJdBz#IfWqI0s~9$zuFTc)~TCyAnjPeU#LOE?L}~=m>BD(fD`ZXKATDeEUEralgd%POihB1!Wa3SZRoVdrs zL3{-(@ZBR3v6YE?90lkebBW9d=t3Z#k4w47n*{LyQ1sp7tpMJLOWfltNW6ec+~dC2 zkSgyH_xK~=-+KkxoQxO|SMec0lL!bE( z;VOR`P~{$p7j=(}f(XY>Ek!!9ZOO+d&M0UkitdU_MM3KU?F^8Lf(}Oh{9s`N@cPp|A!YWh+D+MziBN)6Kmu^TA* zYFGha3ocQ^`AD3NOVqGfs^>kThAn_^_6j_Q#51^xR|1V{*p7-RdIay)mm*K4qiU!Y z!n}Lkt3PBSYWM)O-p5tG08pg{;ziUTgXRw8ng;KB&>Z#!NN~{n1;u~DC4=U7KtNxT zI~+O&&68La2hDa^gwMuh$e>9Sd?4CG#Gv^s5jkk~2U1^LGH8xPVmCf;(A*D+eQ~Kl zlZA1_0{2X0`GaN?5E^jFph>73;9$^v>~mDZLGw7^9D_>+&5Mz^kPjR*??GYP)ZyWKJdkpj&fC`I@&LW*nYIb;u0&-+1 zF3@?mhVmxqyvKCj5x|SX%X50Vy%pg>#0I*euo4;Wwn?YHRW7F(}Jt3YMX7MYJ z0(%@6NAKO+GLFK3E&=-mWNlPdNsZEG?A~!9*ya>XC_T->r3Ybek}Kraws1*7;Fe@s zRV=*KvW(C1|Hp6vS!I{?Xrpxd=im)>YWjC$LFvmFU<)}buJNOZmBmR&jzej)$`>qA*;c>=Z)@>f<)6rcyQuqqnY>(hSXF&PHHdgZ+u<E^GEc^n zbt`UCAIt8!)UfKUBJOEYKs>2zHL7dmh>uUydED3Ai!0e>(*b!D z*nF1$#$5ajyKy>t>)pVY&ED7;v+I6)g7abT((>LwzJIs^Cb-myebh%bgNNOb3HZMN zNA_YPc6sMzDE6f}cW%8A+mtJ3c!upqoF1rk#;6a`yy{L(z?s2c6~(FtGi`ijvJ)MR zaAx}=HLjZ%@|0H=yU!{#^DtaH%q%>adl_e%vorAeU0hQ>djq<{wIsV}N@fjSUWjW+ zp*iJ)f8ekft|jBmDXHn$yT`TUKy%9ZhuQ|OC3~4u-o^3I%WzV*%aO4u+p;lR#H^@g>vl@b8MlVH7YgQ z9hqv%nwmSNusYWShLa8$obo_!TO*Ysl~`ZH&MHbFN*QW2Wlcd&+%*Q}TKRWQ$j1oN z22e$KYVO#=F@;5`hQe;ZPG;-!soug&W(S3s8YxuU=yLKn0{B@zE65^`0V{3e25LZd z0V>Zf1s(F0gG8K(cIhR(Cgi$;N(tnVWduMzst6*eqC>bDBQT=npSTVkvf%Uy1(+wc zH>ZlY3L{uxx?`?sXQfh#I|{T@i8&>=I=5Sj4@JT^Y9imAeN8fP~ zOg6AviIJ{8Y$8XSLYLOSGbDME z9FCd|){F={y|}wSN{#eeBdrg#H7W|ACQdYU2OI5^68?nH7+;;f7!k($L?A2GMK_o! zCCuF;eFerjwl%U}<2b)Y-FDPTVUG9nJx-WA!IL-6vXn`GVo#r>Bt@O?;a4RZQaYSG zG;jb@qJ4s8%EM*S+A=lD1{8*If&v*+*pwxPhg=8{zTH!H z7WQ+8Mmo>_K2IRh1WQ%=J3wOzWmVaM;remh#nc|=;FLKVUiA=PN`V2BgE^fccro`t zxrXrw(p6C=S)e*B`4K6qwkCz%*$#fB zHjIvKPa#V+Nz23DdqKFVV+*M!Z;Yr9gVviVRmVcQAmx!fPr4|K7}!8VdbUTnF`XSH zlcrqlKbn0hgxK}_+hR=?(&U(?IL6p}JUj%o-hu=?6Q#CPjfu3=Whmv_DeY&u>RUux zv9tQB0XWnFq1{s)X_f4Vz0&7io3`TqFh5%}?b+AiQR)i&2<6XkxG&rZ^r*dR6h~B0 z=g71=%s7SXNpVfC>5Xko(%Q9V&{MI2XR?E++SZwBG-lsA+Klp}jKOzM$0%^f{Zhbe z_pzqtL^_IL9A_#C;w5M(BQ^nuXA|qqzy#@JRL432n4TN)#>5kW$+%^M>6l?zt45s! zD82s4SS}irJ3F78oI={ZGWm-i4sNP9pN8lv7%{a#Pe-X>tYQ!xl>t>{7-t5#zGgj_ z^;fSs+Un?%&JuZhm3cuCX8aL4Q*+rR#}%A2L8N$&$Geu|xdF1ao3N)muN9PDRJsD@ zp_uJ@!bG4+_4uKJ7)l%Ei!W>iQTZ2{s;6M_F{lRZQ|i7XqHfjqFNKOi9Rj#i$7N8B zQq1LE<3vhY_#3GaUt2nJlbP>ZFKJxi$yWg_MMTINL4XK zaI>jLa*P>wiB#Am&vR{QMUU0_uHtSfpgdI|+>H9q9 zlroWXe}sZk&jZL)@oS_vJ!r0nPLyvpjE8_UCEDE{_AFAUbJ%=DQ>TfjreaPTsZkk^ z*Yh7UNBSnjRy=MZ@b=BwFrLsN>;lJ(ABK9ZX{FVtJW->CPout|uTrSWdHvn13#D1t zGiKo9`TT6)ail%;LeHtZG>45{Z`G!>e6Lm8JPkncFQ689M>iPaUewOkFkX_B3Mz0A zoPi}|_)1i&YOeWeh?}SEBW!DCN?WQAdNb0>bn&hDf`S0(9Z!AWj zHqZHZ8va20+(6bJg1!o+KhoRv0lUYg>J(1H2P~uTPpVc zO);x2FH*rjL4p}1{kzG)pHG;y>WSOGym-TRFl()p%(#!Tf(S@ev(5^4do_(e8hLbV zkxGxTa?D;?xtPRs%9@>@V`gL0ajc~$HgSYr7JL##D?&Qn(j&jHpvDXA`GYXmCA?lY zR3c?1mlHHhNyPJaI;=R+LRg{oCd2K902?(lWgTx~grGc5!Uy;4tZ3Imq?U$GCv{3% zo*FI?xdr*qxtf#V+_4p&+bK&p-SUH5X*k`*8EK{2oo5t;9n6`Ypg>*wq`z9>r5;3a zmhRuM__G6o($Y|Dj3Xc9D(;2cimP)~0nHHw$sR{1YZ&JV$DRZ5U5X3*I40IE&%b7 zN^7+EAiNJ56MdWwwt9n`>#g><-w@%zx6>O#QYO`#q{A>gE5Wnb=0sD%*mpo2Xj$-d+DW+OERWJ3vB0^>0 z^(uvm@d$Ge3e`Z;8z)#f#|dwkz%XrxSCg@w5DXx)eSpmaZx!Jr(Wk6o00-_0Y!msAvfxS>XYR_SM!~LCf~my>h~XqjEy+qEo`$FcIt#coVAj z(U`b{CL}smgz`~RdmJ?fD~L>6HIv?Ufk;2-3LP1Zbn+JDi@Y_d&VekkIglPOcMbE( z4T^3N7Ld_>IHJ6?4FJkE(jRu&$=XHFaQk#O>BT(hHn54_$|TgHe4o(9NM8?N82!Tb z-6z_4`+KXIDe@9THUmQYNCUlv#bUJ@Q{tBi_kvQjJX#j9(Ls39EBAvHfEF?YEeQIQ zGX0@Rv`Y2g9E>o#O8scyu+Vz;aJ5r30;syUEd6`s`e1X5_dB zlY`)Z%&O*2(an|GvBDo_2HTI}HgG-P4=+4%P16OW4`EH84WxPD=bsuGkf6Gm3|S+F zyJtw{l>aP0SffHk0DDEUKo4vBkt}5FGYp%0{}Z>S+?cpE?1*~a?T_4Ay6eh}^kneV z#&ca+p6hB$@pv9ud7SL1>&gie!4|0Jx^kngD^C*&xvusRzk%vI?96rLd!Dx-Tv6b| z3R^qtj#31Us1yBLk>}q!d;YCU*uQm6_iuD(ev|3nx<~j#Mi1rRc3~`{WJ68%jQX84 zcgM}mbSKa|EEAIGgN$^fzL7j2^kgah(Lf(+`vNc$3jQzV@=OMXU|NP~2-z)9&0 z&q=9bbW-VVtVg)5bYr{triVglrq?svAHBdUSPY6fDiy)>@p`-;da-@|LO!Q|;ArTV zbYL`4<%%7%1fneIE7B4=!9R|-yk*%zA#;ag@<@22{E%>i@Rqf3CE}BU0$yM-EGnP0 zF0Bt`=Ail+`a)RbndLcZJE~y_QPABboLDl@z>3qhHl zfC`_Hab#L6zlH!!O}A(Kn<#On3e)#Y2kS-4S$@73zT?bA#6NV^DaeaP=d|zz@Svb zVLb@Uy;0XYb|_u5Tl&z(fZTU49NIY61$=U>OLsut%7T^>$C+Nfjc5-Yv69}}@%v>VF2_`;*L^lBcr3$shHjy??e$; zj|hvzFn0HK0(h(8XDpBdxhNjTweG*;BU$3gCq%Mf$p86ZvRdk<*c`PlhhHdYyYqX9 zcRVQ;J{Fu2ZiBZKq84%E-Yh-g9Z62A$T}7EDVgecASUEKE!62PqLZhrkht5jabj44 z#Qi3O%2JZj(wRYfa-u|o;|%T8$tk!99|LMoTV|>OSeOhfm=2+R$p3cmOZj||)qJvw zqsvh*Sm?VtAQR1toW(GBz%PiMkwpx~&g}Lmpd6UDPAM5Iq7E|qIBMUitB5Bg35us% z_&{`bpK-srtgnZ6#&;KAz&<=Y-4~8kU2=q3ttR34auDT&Ro5rl4D#LA-viW5?dP2; z?jIJoa>@g|!^4q7&A}N@PW7=?uGRqjVA`d3QwyG$_pAL0)gyg30w)rjCmoE6wanCk zHg$+*i0A9Qh*}!27>msGJ;V17VIaEpPIC|UBC^Oy=@GsRv_XvY(E`?~mQkv6@OnG zILV{WOD^yQqlpG*YwE)w#nnQDO$JXuYYU?rrvGZtW{$|KF%S@D#%hdi+F8`ttocK| za`IxaU!ArT?g=kR=UesK7IlgiFWgqkiOamDq~)475gQIW>*AouQ2o%LN*rxYCtakE zBpwzn6h4u7c$hdfU!+eK9uXWYJTi!>)yc|L(Pk;zpaHDbhk3x8w{5zHHW64ovDOBs zbwn)eb^f8)qr6jS010*7pg7=lT;!17@x+aGZ7rwu zp+kNrcn8N|0VjGTG)z~@raXe zklN%<*Qfd@mNS6h$EG;=>`(X%?gL&oJJ$B@Pv!01~?x0AY z7G^m+veey5AU*Cxy2uf~OD9T@g7vcV$H3Y!VAz6_|`PiY9Zl z9G<(zQ$3E!U8|4fv&7$`htrhj!G}fVS1i}#zdp$9+cJOh%09?=((8dYiK*b6Oz5zI zcPQ-^woUAe)%i!7#iG4~XgtoWV$;^gmqQ)*4xW?NjEM8QGtjIUnSY#Tv$?ZlXFR?f z4lXI3&;e%OPU%8T&QWls@ks<+~b zW6GgiUzg7ZA`o}IO*#k7g}cvkGC6WI>qUTh)j>wR=~tO~>9Y*#4==!4)l3!HC$sLQEIj(6Tz)t|P? z$YaOh?!+N@T!CJ+`9xd@Ip$&G;QXzk%cI6SIjjG<3_mRNg``LkAOB&~w3RX*`AQd7 z_34F}9nv7K`WROa;oC93!uu>N^H-cRGVzCOTxRL=r7flPO;ruct7}TD1`H@2Q98eV z*;2f0y;XkA%4Ivrj%HQ1G!{41H!WXTT-UU`rgDD$g4%yewRv$(Q`L&WrB%%>HBl;x zkLsHF%j*=Np?-d8T~$@-&d87O*pJfK8EUJRMT>+PDqT?75QY9bf~Ct2TU?_BMm`s= zXe?b=xuUXo(4b;cTv)xR7-b;{Ps}2qpke>90N$Xncv$^;Et;z;8*1iKYRi_EETHi(UDhynMNQSR z=9b{Os<{at4_#ihOl4IzpxoSLEtTjKDyOOD(7BRZsmkHq1mQ=Jt!!zjJdCfJQF3Q$ zR((}vW5vv=B~^YEx$7N9n`w)&Go*3fSsoLW%ZQ}^@rC~tD3c_mQ~?hDwstssBDP{2HJ#~H44i?5=_-s&Bb$lQ=KBC za_XD4JgXM8G&eP~6tV&eQlR!wU3C?NfHo70N$8qMTA5}+YDGg9SJrF!(Mal-i5|i& zoJ%Rq75h}|h?hYUZk43bgQb=M17HcY_2d~Mrg&TGmn~@YIjUJ%RkL_meRETwF<1tR zHqf>q6punN(+G*Su0*FwwOhI(`u(uIB(C<4`U z@m+h>5VmrD*qk9xX{`cR9a_a!vzV51iPof&`h0v!7cf-eX|ZZqeWT#RH0p&Jd`fp| z#Q13}Xje@&r4X*Hxv3h~1L>@&Y^krDuZ$fQ)(B$=>{Mm2+M1S@=9anA`6`>Ft3m3u z%a<+3&_J%5mqPMPEv{^V{+gCI&aY|F4Tq`LHn%j+g;mV02LGzPWGLKk(ep&@kxa_0 zc6k$8+T5gy$&*s9%Fx0B^`$i}nzpZe;RwyIsjY8<5SkZzPGWguO$(apGk|`E##JqE zX~CGst|%RkHjQ+KGG&&!PFMbCC`Xz zs7x;n9mB)TW!BQgHB}lxMu}pj&tk8Kpng4mgmP3rDXwj3hNJO#M7729m)2CaR4wrG zbf*WGC{fwM&V;s(nZLZgVHp~@J6++SRGa2;?%c-tOP5tH^BGNhoI7{&)aiRDc6A$q zj36a_4OmjIYH6b?r23u$vGppY?efs(7P=c49=^x5xOwTYp&nmUNwdOTdf3vrFjjU& zWN7UWh9vTvG#Y!TDp0ior9Dr)7)Fbd$_A8kR=q)`QEH`!s>SUCynOA~yhm144C{jj zS4>E`xzs5}0AaynP2JtfVXAgC0eO*%}1|*^i)x`~!%h+p?)mCRUG}qOs zQ36$Qphx+}M(LP%O^{@GHt0Q*f|#I}0WVft!x6yCfWH7&=psv7Qwzg@)KaMky~25Y=!?&Ra52F8q}%P z+SG)wOZnUmc!5VaM$m&2hMJaQMslEsA81H9nm$H&D3mQgLE)ynrh(lGIry7j)hKZ# zo;dMwGYr?_`>pJ|^oMK#7xI_-I)Cs zWD_rDKWCVBj_F#l_Kw5ni_HqhwXa%by16ksVU_?ZD`p>TIx#oH9%2GEP0HHaZ4TBrq@Ka!kjO#AV<|(MAh&dCRo~b~j;euKmpFihtKCG^HbOGb$=-l_=w2 z-?diGqL@vzt>WTXE$+BgI0?5jc9(1C;a|2Br|j-tQ(+%sI!U*G45BI_hCNK4ZB!{w zC4}N>O9_f}w`V}wDJoIaNHh6E{;Z(9PBu$Pp$nfB3ZJmL=; zpq`0FCCTd^_Mj5Q{E2I5SddlBzDT&wv2Ua%Z7^y#u(Y)Cvp-@R#S;TXI%Se1pJl8K zY>@Q~dm>wuW3P{y_ML~D_Stx=%g3Y`!wb_;MW)*>W_Mx=lvGelK zVyM)OmAd`V0YD2f`2BDb{h$pJw&Lg%a?~CKP5Ts=#gO>&2wnaZhvlb%TP3+Kk6_gU z>@ysgXcqPS?%}4}f#ONHgJS4+WA;YBI}TFP4gV_Ia8|RJzq&rmn`|c1jrFCEf&fsOZ-wgPy!%X}4)h6sM_hL2No?)Bz z8F?NHQW zIFeZV5;cNjD-k7cf@kX&vokrkcD3Ju^=8AZUxN0!Za@2|)erxvpzp`*FEK7)%wA}^JxZJ$cZiKGP&Z|tkO5Zh z5fyG{`z$fAlzsh?R9hL4O#5e)8WPI`;wx6gI+VHwGKa0K&$!s_7_&zrgd&ylk`m?) z1IKwNYhswhaLL9$u+qf+S(t;Hmz$RhVnRabmAElbqRY%{4#S`$oZmPu1!u@48 z3*<{cs0{J|>48X==89}`>wsDTtAa->cHI)ULkS&&{UdyM2XX*ymbm*3bTdj_x71Ay zaLa4mRE4`=sasy`W|X;I2cpxIxI;~MA}Y>xyP&D2JDurVH&N#1fHD=64WtB|Iz~0n zpYA3WsHVLS+2mkET?0X)UOdL^tKi;q>>nIasX}{CpB?olS8N z*PH>D$YJD94En-W1qP!6d&?0f{6lffJ}zFtnOSx$w^(-;=`^|EycSle4H~`6w_^0J zKQ!PNXD;pR*H(!QgU)#pmL_6$=lE%EkCcsX1|FFGwjD!BYNQDT?k$DBWxG345ly0xCPOjW1oUhG8C)Ox-I*DW+F(rpFxUr z?Ry#i1S=GbZ-NyHAay{rxE~~f7DG}9WN2y}bx;>?wT@qWwz>T08v)n#_4Y1pkVCuiL1e(c$@y)bb z5Md(ecClM9SA-!J0j=j?x2V57^+b?SG{EgSh<7psM_0-K(d}ukAgN@n+ppLyMY+Ll z>13wI4u-{)x;cIqc(cfnZSV<3{Hx~T}2b^!)CWBUl`EC0(l!pO7wU*;8<=|Xs_ zsV0I?828OJaU13=aEPt3pvycGsKOSItBKFh`t8K3fy*6IZYU6-^HK~ z(@|9K6k;{#uMVT)KKAFBD;07`I}@=|cgz%+i*+dr5Yy>M$Q4el{p67*){P*GT;?pK za4fqkI#+BFy4L5?wSsPfav0^ZWCo#Pe$>j^+M8S0l&26VjYIR+u_8MD+uezLB&@N* zo#3SpuE=#K#mtM5zn5zJ&0gD|_1b>3Zu_%A+pmqZeU$xtTHAkl?u@i#lKpU6OHR;Q{L$0m`gAS+=xOo% z|Gk!U)51C5*`f^t=FstfWEn67(=ImMg7R8A8nL@mof3~c&3haIjsW<&9RZGt*<}`@ zb32z^e^e~H!tFl2#2uAQZ#0TN2~uxoUvHIM3{sQrS60VBojkqSWtiqj)_2?~-aBsT}S~WRl^(~}rO^)SY%qw*#7rWWh z;I=m_M5z|gqxLspEc#Da@>V>*LSQddIyCNiGG{gncb;b+>ntO-ZgRLI!xkTFCcgfA1q?d^XY$?$mqGWHbL4I7#6=wvf45oUco97O4 zdk?7PKdh`~mb!K^!i7<|1{b@duvk)|6VnmMz_sB*mUad)Y8ht;u2aSVYT zm(D=8j7w*`V2V}hW(a-U?NVTO0IzW@1#!hJPT4Qu%oM95y?1rH00+wJ4bTL|!~oYE zR7bXbCW=dhj@KjqX%q05-p^d6mfk^)rJ?K4?m{_r-M0?9zFl&qDAP7?0-eLhH_OKPtkauWHe~W_;P7ZBnp=zHwD8_OO;?%fn7_ zc^Ylnx@w(gzq_(c2DXarM^u|!nDDN#EFg}s&s@zRbypkj@D-KZEi&HKegrbk;)3}Z z*eBv{BYYuxEQ|aVy%&!1euG2ldvJf)YTDVtDv@J$x$5Ru%eIN4OVy(usD2tn!iqpo z_KYyhUJi+3yoJXl09(bJ?8yKOA8aQ%m5a$rIacvFTkcQ+GhV3IK)HCCcO2$=TObfd z)j+~*^qwQlT4ct@r02SBv73*{a;e+aei&{6o}OcGTl*0{V9JP+ei`g95(wmcESt!k zix*x+;3Xyapy}fz(9_ZpK)C~UqSzOT?2QEiA+8`fnhYvX40oJNE+tDRavO;7)ft+P?r+D6o|MFw(M)qcT9~A+9aQY=0f6 z3wH7jLm+7X4phCMa~v|T5bDOeyNT&C+_%NDdBAy3TL)5|usSU|hgSB-8auR% zJq^srp;dKPx~0;=9d--QDYioMO4HaSQo79$qxg4v7G>B}Y?oM;>kbB2|8FRmitUD$ z%CgIc5O}B$wCYvBWjA9FgaXjV*dbN-`yKh70H+G?B0zC*k3zV5h~6C=Ep$#0>qbQQ zFd>G;|3}tB?To^S7}Lt*85Zo|!+VzV49j}@y+7RdN5yrp<+g72pb{K*L~-yUsp!5nrR_(@ccLo6hnE1+&0{Uc7zMKsDjeOpXLBeVeV}xf`jX?iFBNj{t@G+Zl zu+tf~w+`bdd)Dt5G1Rl_Y5xy-?;af4b>0W|pr&!)XVY8F2~tKWrw0)RnG4I;i^?Oj^eFy zZ7H!+>vg%xURlYivfe~n(WYvvT-wB&ja|w9e&2cAbMHMDj}f&_YH178eedmi&pqcm z-}Co<-+$p8Q$Hl*EF877LZ_p`?`#q5Vb4VUu^w~aA{m-aK z8>b2zK)a^@fpSfM=?ow@4oico@ek@W1g z-o(S;i##)Q^R``M2&}kDefM}-0)d{56=>3;BWO^2GWA= zmw%;0v`^B-qN2Bj2>`5c{S#zyefah$M~ZK&`kVeLRM?;YVY=q)r>K75vWK1pZGLdx zej4V*4-F7>)t`Tap^G#5zl$L3kxxIB{|;W|M*e3p6&S=gZgV4lAfFfTL`3I~yvuPf zQ@1AZ|EYOo-?P{ze|ny|I{zI|sOemtM6QH|{z@9im1E?2sB{rGwI?g9C7D2R<)~~B z-jwMt?@*eKn^mLpW>Q0P-v4{aCpkLJ2cX|W9!_kc%1Mdfkqv?olR#IX<>gQWbOlc_ zkXB%D2{Ya%Fj|n`(E)?}#*sJ(6hsmSfdcZ2n*eSJ{38+?H|e!07hj z_|L{4jVD8=_+RD8`M>%G)V;q8-6MYiKw)Y$jPJt7a0X9-$wr{e6^uj_|FOhLoLl?e z&r$2q4=fB3F!Ng&&c*!KpVo{$>D{64hL8Jzk3-`otG~cF0ZZ8XG!EV&CUFeeoao|k(_Mcc?6Vv zs{b46>xX9e?^mE)@hreI{rUe=->*O4yo}otjfz{r90QgC^87gj>}e4~hgZXU7CEi5 zj&u3<^bK>u3v+b(z%>MFn}a3_PvYEj_&bjyGx~LB@ldg1;9cd?U!fv{=v#s2%{hD} zK^6M9a2T<W zA1b_v*xI`ME%$GW$(~0{np6*}gS$y?k-xl3#gq_j4CW=dBL*xdHi8gB$ntu<}PCw=JP)ZBwrqH zoBzkKgib%IPX2wEM|r^f{>fj1Hp~~we+~K2Jo#|`--Dhl7eVav3{6zI=8J%Q@(Q54 zPCrJfzzqo`i>??|7u?Rg0D1QVtNI6hC+oE`5HH>xblWb)vfJoETI0!4A5}`1dIUh{4>h6fQrHMZ0ntEQad} zj|E6jVhos)x!5rh29MEVQrAIkkAK5+RdiI%9z#f1!0FV`{#%*5{`{}vm3-&_8R3-p z{jWsl@xxQhl)&+a2tbvWlsU`)6Rgol{)w|aZt)TIE+Zh&D+T!r3Le2``=LCXr6c*B z%Y}&s>9Uzb5p-sbUm`%AtGgg{HewGt7@)4Y|hF| zzen2d;7YomUW3=RNQPWMn|KAElf_knn3I$mW|2QBDvRJqD zwmthpn$pd--&foI8{%2GCpORj;I(=FvW=BPZLXtD2bLT-p)G@?yW`n%qS+r}nC$(3 zZx!7}`u=c2J#EkyGFFJBm%C<8bikN7I1)E=pv=b292ynI%mLBF%p5U+l4cHUA+0;p z;PEE9;;9KUM@DAvv?u9{xRI+$;}UE7;LdT=hrc(b4^GM`orFE3hDX*Qh7S8Ep28Oy zMkblgrtrc3@ul$Lu(FvjOV(z>XR(=#iDH%m8!v7%nFH2lG6#%ZWWH;=$b5C}B6G~x zMdrJ4ULlxH<RWg1PB~H|}ff?K`|DjbeJg9&*i~^R=zwaAb zdx6q>_NMxr|M+*+hkvKPzgvIjZS&pl<{#DH;mrG&ulHTU-61`nfP_9%#<*J;|HFk3 z7YjE5k%MdeQsKixg>#n+H)jezEYa4F^q+l7w3d%3N&gY8wY2cUxWT3VD{Js@zhCBJ zmLCDi$F#&hK34cZ14oPHH5zkJou5}zuztC4JO2TtNlTg%m*F;ynz}A@b$EIm7eg_mBM?W zm{0>(m|w1?PXiwjRg5aUTIq`Dg8BZlALjwye1st!-sb}51ghPTo(@bT=7Sg_UNwX_ zf6T1?$7w!4(DxybsM199?-O(FHNDs}Ju^llSKri?`G;_!n!VIFxS4+(kyvWwH#q}qg`1dxS^UMtjQhw}%m?iZHH&4H zM?!s^%70;iOyNqIuVe1pQ#RRZ;W}VjXJ5hX@#$TKbF*(@OBD+rK^6y?$_0G5pMxKT zHO#rf126LluugCe!}g$IO2uFMJ%;5VCc>WNvRn;vN5z?CcI=$z23ghqK{P5#dc5Qx*rx9Z1iN5@vzVCanY>E4Vu{!sCI`h8g^1xIRl7J!QKe38g%s&Ct(}h{Q zZds-k9t$R&V};yX%}! z{cbDj*k0j5`G85lzld!?ew}-x{|)V`cq{*yl3;IrTn_5d~p*3pWnp6tHMeUo$$V=+!z%5d|f*28d;dJ{esQ zI(|wQic|dni%DQX1w!^p-dx zYPPegqJ={P-fOJ4!Zj4NkpePMmgRBrY8|j+SI%3sB8~-W!5aRrnymsPK7oW(q$z%T&WBh6;~SNx1kD{$=E$f0)`A{)6-wz}E_X zbCLL+4?^dg0~-0+!XVk#yU5}IS{_uw>i4bkn=)H^Iyc)`Oi#Yp32YHzleFI zPYr??N5oA&Pd7QnTT~h;^H`u-L9;6KkI>h9>NRrKomHg7)6aeCaem!j6`(35KE>%{ zM1Da7IJH2;zyUwK_cGq~*W^LS!Qmsy_Ca*QLrW~bQxBREaOR_h8TFtU`yf#sE*ECr zsRzyL2c@Qt>iRo2Z!gMIlsfq$l_+R9@1a~p(m?@O{BwZ7oqF^#)RO!|I7M{@*uc5M zGgL~-fEEHB4o^Rcx+p)xstpw;B%c>oizP9^`= zd$v$4fjfYX=L$c_LA9Wf>X=DUbjNoi8h5#XzaT{9Rb#eJjpMpN07f5%Id!FQ>GqYv zhhfew@H1tdA{Sd4KbE@#( z-{!p^lvgC{t2|HESSc0Wx5m#fOW${^@NWD?WCnwMw;KCdXsKim?}pM{g1)N0Q4JSJ ze}DNipHUBbd!|t3Q-0!S%^QGoKUSzdTll~%&4CX*SGYLL_XiPt;F-evM}fE(`>#kQ z|8W1q#sq(ubN9dKc`0Kx^5;0wxagyxn=_TdN1wr8zzv@(eDo5lKyjvNZs9n@1Pw}V z<#YWDV#z>hJ#V9jyvt))-ZQd0`hOC?gB7OyIy8P%3c_>n7+gldlM?gzz!%|L;3*o$ z_y`&U_e3a9U!ts9|(Za$dVdfxF`S(rD)Ilh?&8KF_ zpMhAlS3MwCeN$aEj3~&%i$} za+?4{lf530#4Cl1&tkOmB4N*uB=-6h2$#3*UFQ$E>opL(dHS_OIL$nSzC3*%Pyg_2 z0r&jyEZ8Cc1(cvz_^@I12{&~t?!EM6*{9W6YAAks^P;<;% zjHB=rEL8dY?vcV%LdW<^tw&A96{Nv~axbHlhk`tSeUXl}bSRwq%nZVWxclJW)OTml z5KDXEIm8WBQ2h!jN8pkC$24v;GQH{fi~b@HIh)sk~f1iTUT zmKXXu9-03tk}s%`l*rm!h0=2rUk~Bco-LdQb%0{wRluG)r+6^Fz<59MGb~YMq~m(` zGkuYAhTxD3_)NmVnqX)T;lB1a_$+Le4|jj>K6_668l#ml+3Ru5Pnv77*s>`3W>fuia4ZXr-MBRLx64kS$br+T#wOv zvkG?*7X0Gh#_azl3r1Z4G-O%+g~R9xZk?5x!bfP<;}f`4p@et`G#M{PWoUJUtk4l!8aXgH&(c^>M7OA-) zI=+xHiuI1{X!Xul5bWEAcQ)&%WGU*vJ3B_e#VK$HQF-NBRWf zk*8yO8&2pzh&&HA0(c@^aDHjzZ>vMfigC*R= z>h|US78%2#T^#;0Al?7zq9ndI48$StC42NRm#L=>!4-{<@BnT-eC;Uz=6^CM2?q=g zN33(;0kqNBq>C6|lWy8! z$dt2hL1g^z;!cDeh;-iP3m30I`XV=%t|LnqN{_UT=S%i7S^8#(dztw*V zH5*3|!-6)qD>n9d$HrD{`s{~LyCMJ9kDvWE1*Sx_XA2V1hN`HrvqLgS3~}PhaXjkR%D{p{ZCwJaa0P5A5PF^<>$89lQrW&T+bW!8uIU+?wC4fi z!!Tik5v-cOu(l3M63D}6`VmxroEU)T`akm~76;(fA=E9A=PSR(uK`C(r)GB#Kj*rHj1ak^U+|`Tsq<7q5Qp zRR7mdfsLvHDrMt}(y6cIANVeUbNb*4EQtR6zsdCh$;yB@qSJWVY~drKbi*a}ltOpF zk@o>{=ix7>PP^8{{)Gzi6sXxHw-rFuXV63)dkHkddor$zP zfMyUlnP@kZY)AzCkZn!SkU`lxid852{-}5<)&yrEWZl*~v1*w#0Hsm*wx zHvDJVjK}Rkq*f%}PU*PKdeCvBqq{7n`}0I?a(tb7Y||-k%N~S`kJnho*AOSwHD~8I zO>sb}39`fy(5=%ZM~GQt1;DtCT@2+f9{-OHnE1avqA5JyCP!2?)82*Fy7`TMQF4I6^(BZLKxhE9f2~2dI9> zdfZ?bLI%>~2ER`9xWQ@L!Su2^itqE zk@Q6cwG8*oDfrD1On?TCA~2HE#Yln_41bX6WfxRilDxF;_>*73ogSyw^(geyhYL4~ zg@NbzcXY0BgRXFV!c#`pPz?-Nicyu_GQxZF04l1#JO5=AwaFvlh7Ak&9SsZceIWm@ zevBIGHUj{tR|+r89~4&e{~MAcKLq#%YKQ&V>u=%KIQ}o-MH{H<_Yl?h-TE)2O#gB2UdaD0iX;CLDnovj6MMR!^@IL~)SO36 zy6>Jk^#+D8mj8FCO(;+N9sR_|^M4_wTrmh$1T8A0CO`NV3e`*Jn73uDPxa>)PQAg2 zdVd~SGZ*roMURH}=l`7b6LE`QMjljD^6m@|9j92|Y1}ALtWSzO{|?I2!QPQ&`7G)# z<_kmlKmRe-BpbquqAdkNuP7y#2U_7j;>Bc~Uk0-7{R|3lY)rL$$HxX5DKio8x%?ZS zeoMyoAM&gE`zpS}g!q5(WIeR2xQau&kpIQgyy|NH+d^oVn(MH3Y<>4DiNVCFNe+@)_cy+8KWiD{}1O$515(PVi2 z?VbOxdMIL_#~&EX7r5c19MJz5tFrMR7y>GV(3+JCq*91_HlKty{xi_Y!!Qo-*jHJZ^D@S@nk%-5BwB_Clmpn0=Ez* z=huJiRGEaD|JQjhugG2v?7jP04fL20+WhxwBuCTcrRND(Cg;BdI;Ky6K{sEC9K6w~ z{7?QExD!?w9Vbqs(hJbFifVt|Qf)+>-%xuN%=jCbM0euXWR@q^=QBvCSG(l<{5-rh z2<4AKJ{0cx{(p+R zS^oQ`oIf=r=;<~~;hoC=9jpi%6#uedpl5$+0zI?myx`#6~_naQ-3rPECmo-k@r; z37!1Mrf!4yG&ykg&Au<4l1^|u!R~7}<@h6Sp8hNRQ265MpUVGrJheLT6Q}Y&+IMc? zNg3mL^^+V+Wx-I(UDDrkAJ64}9tS1|2H!mU*)yN(|9s&Kr@x5GS6@0cIqdL2~`zpsEzT`z$3TJDoq}8k<1S}5b{6POZ_VTy)|(9OQ)s>9@!f>ZE5lso4MSJ zI9FA4bY~#<_1`zY`xegOr}lTBaDMmVD$F39TUNiD;qRWrcmDTPea@MmO_#RJTC=w2 zH*x*sz!Ptt`E38^3ZFmyh5Q#~m7eaKKR58iCfdq zFV{a&sGcdj)IT%ubl-RQ6Pc< z`P?Z*;n(!<&VCa68lRo{T($E#V?WK?PyC(!?YHpTv#?U{MEe|DS+N65u`mU$H^=ww zF8EfQcjTVX=T7fpU*faoH+_@meqUIHIsbb&|1F%K960|b%Egh+2KyEV&XXp1Z&n}p zX*qBCQpX*yxo&h{-RF+E4@SFwZs7dngLmccdECS0!TjBuFq4__`b~My7+pNww|Q;= zbRhK3>%Q|T#rGz;7cilJ1vG8$ap%WyGrYeuSJ>2MyD5Ibd))an?t|;_ib?)b9@y#Y zX?7v}nb!}!u6U^7)sN~izm4NB;`AU$ho&Y z=eUNv=O5tQS$sC%znS>{C-{EaIsa{Ze-YmY@jw3l$u}_OQ?d2JJ7M}k)z|bjqn`mk z!cDyLWOCrEXD0`K^Q_r%U=WlnNgCtxz5|)W3=m+Z%zA;7_JJtR+PUU6fAIygE_NSW z#6AQ4LS?{xp4Rtb*2Ayj^Sq|R>bZf_lMj~V?*cylKKwl9+V!70{qJ=cg0zLq5lQd=uw36ZcrfugzK!@BX&@ zHYQ8@?pW!N6Q0U@5x@S6?!D#*1`lvAGY%rp!D=vG*^kv7%)|UJTSBZzQ^_8dlL`LedEYNus|U73ojLJ4GeDceU+XxX&5)y zo<4-%nQ;;1yV%G3IM13Mc(Lzai@eyzBjtVhOhQt>Ds$~zJ2`NmWeao^NEmPe${BP2 z-}`bdw=Tc2@~%2CxIx}z#+BkT=P|x2{ty<&dB+gsJ5g}Ig|U{kuFvaS8OZCtfP;iS zkk*Y(eMuj`gyWm?u3nvbr|;W}@0siW_S@=tUY>bt;2KCv6mX7_&t3eLlx+9D+ogvh zTZzBrcRG>p;Ip%yLgPF~x9}y*zjqwd1MB(!MwtSAKc@yXsP9QD^tbUD4BFUPpn*M+ z3+9^B70f5Dai04zwJ?ZCd~E*e%zP=>-V3kaZuVyCd-c0>LA82SeF}L&tv9X$Xr=k# z#@^UMeS57L)as>LF${w7);3)4yr>56xQQ^E+=`Ey#REo{=IXs`o%X(ZP^*;-=fX~Nvsv#pb73v4 z!)cF8c_l79D7DJ1;h@|q2Eo*5&`SKL#$O!W-bK^-Rs&DlLY1J>Mo=8xYHf$j165(N zI26d^@v172d~IbH14rBR(m|~^CLc@XgJOXH4Gj$iL9o3R>}A}%6%>n|_U`sdh`>#| zW3DrkxQ?k?$6$wXLIr>s=0nt1g&S`&etl^W!IT>}oKUtLenB6%VQF=A@CAGxz+C63)>ykom8VASJ#(%oV{NB7-s2us~grg_v?sG zG2{}icACu~_j)W4&L7RzdRTQXez7?0hP6u#Jh$k)NU1^EX#~Mob8Dw}&&*Eos{5;O zuhrZyO}CQ2oo>l0S7)bN8)~e@q3}+#z7op&mN$x|uTfNGt?zF3!WB?WuUR4mt4c)U zVXas1HG`nMtmp+-kJ;G_5lReuID~18qPjzTkY{r1!S&Ty5D1{70YksQE5KyqZnu(^Uk%!MoUUOn9Db#Cr%tD}P?G}#TaNAV-Pwb_v^ z5F`jISZQ(w!>#&j&2X!|hecZjBg2F>cY1cAe9yWM;_s}sKsMFc#zqcAx>W-&%!Sk7 zh4t+QK1FPK_$nuFzP-KI>hyN&o0IJ}SmCys%Ak5J+-NUvG#kC@)o`P+S?_kM*b*CC zGSj8$Pl01jg%h<`=cn#0ROTy7wXjslxojY;H$F-Bnlb0tamAtadKY_%JYCkF>wAq{ zdK&Xz9PMEvPqlYi%@rOqRGi|ut>79~uX#{!^yDs}p!5P?ZSHhio9%7fh0Hyi+uf`P zySH0d?UT^(=de-lVsW;1Hg9T{394@2xM9xU#LdzrHxQpX4CO+K_g5oe~ zI0Vi0!uBd?dAhr?A@B$6QBZN%+-Wz~bM@_QaDg6RAAsoL3<+HXMp{~pZnozWd&I77XWbqWi$^41yYimo0}+y)rp0Pxp3m;$+^mO5LRy8%25mG z?sl3ocI?2dop5Uxqs=w9rLGz{LKaK9CoHMeY>bUv4|26;PjAnOPN#lvp}7VPLYQB) zf9>$^avD6$8n@JPWo0F}mzoUx$YE`x5cr#r%wexnr(z?bwGj*tK~dW2w0G)jocZ>4 z*xj%1kV2*bqU*Hp#kttCLeg>4DP!N9gml0YMzCeEJr^7T)vOgdTvCr5ZS1bp$8YcK zl4oGpwP7fS_;sZ=Dq81#XcVJb2&Oa%QIm?}q1peAI$}?O69}(-rBV&%!&j!3!n?sj ztyGzJs3uqp7Q%`7#Zv9g#B8AODxjAh6iYB(sKL3F*6Jz&K)H1&CD3jaxzB-uy07J+ zjzC^v&w#Yj^C8TW6LDW^^+Ii2E9=Q^weHf>x{sdh!e3iZYIaTZ(J9E%uCNV|3|Lxq zR(1hb_n1oZP8TGHO&T^=S0SQ8sg=@I6MDBa9aO?#eu}$rVJhTqEQgDRHym3XEM65Z zwA$)`4S~~;6^V8Txwm*{A()sBYZJGE@Yd4&)FPI%mYdqsuX$^CyP=;qR_BH-t&}&$ zp*}HcisQFho6UKk zvP#-`+S-C%B=nLT2}G)56|ge0w76qWB=#QlYCZ{j**gqsMyZAQ*E9Je;+ES6~M0+$)JW!qrvh)IrXtQbVm3 zy&i}Sy*LyuhS>16F~ur5xnv(#*;}B#(}WqEyE|2>g>y@b!7FxCCA5aIRj5j$uQ}jD zS*+~Y-U_a5)enTNVQcrc!fsQx5ZOw27kj+jQKp#IOroPy(eQ0fB#~(DV6Vd&JgXk; z>?qQRcoT#xIg%q;gKDt|rPmy6waB69xPXDX7VfOKd(@h{kilW6-rZ@12Ka|j_iF3y z-OUx~t@ozdo9#}n-c=x9*=U*_q!g|4#z+vr0utjhrUqZ5797)m6I?@H2^+|(`aqp3 z4nsSRZ0x<9u^6>z_epHC?%2BUd(79uqL9H-7d!ISW_^uR2R2v^?gr&zI6XBnbtix^ zP^(NSYK&G#%x5jEqobK?hV2idMRs;HM`RmR0jzJRI7U8!sc*t7L52}jxt)_H@lESF z0^dw}j&4GY8x(-OVW!F##p5Y&2vxp8`M>DBM??3ujj62O|D=|-Q80u?%x+4(_AsVE z5y;8y!cj2`VHASep();KH8)psaLhRp*}HURyN%E)Zi-4sKSy<424XkS$b54jgx~4O zE>b(p+3X%|l5eM7ekeB`2E$jAnk5++)gPGU$^?PKOi5FG5ItIUO~h?PzKrWPqPhse zy=H`-@JWwW3_G-5gJ9QhpJcPEu5l?ogplxdsJbw0!?hyhRK3$18RpL^(tT3VYvh>C zZl-W}469M?(2dyIYsxfEb?_M?A)pB^Z(d!egoL9KG|wkGQ=E`qoLqHgp3=_Sdo-NxCH0x9rP^XeEZy+-1e~B8tAA&0mDJ9{V~d!Al@;g_-S#SUtLkF7 zP#emS(py1$A=uJWa7>dx`3T9Rl#4dnB%YzckS(VCmix{6Yr#T;e&v{(fXW2+rpEvm zYL9F9R`pTrpa{JSroPDEl3`m=^Op@rOKRSY0COgqk7w9h0enAZUYyWLTsU6Cc3N$1 zB1mGj!C*rvvbSI(PSKZ_TGGn=t(N;98@;Q*R*E zL%o4#l-AF10P7*`XISYVS_0?wW^M-rL66o}tI=sg-)nELK=RLF+>K5y8oUbS+-&UK zxFL}n<0eb!K^wFQAeCsIElf-WVQKzOuuy`=9qxCUt6g!I)WoP3Nu_)cdY32ewFRw- z5ur`Uo-LHq404E1&^*D-YqiqHpyyA#!kwnDc^7oZ}Fm`l^^^Nx8m z?Jb6Uw-Ax-^_tUNm6D_PGCjP<)+dT19mL=eTj=htu8MMjwk422O|`ni;Jh|vpHwo8>>2u2#P}qm9htKR!BFO1QDrEjai=?GA2>2!7J9r zc4%gRA+3TK_l@0{R904l@y+%=+?3>8*vNOs!*X@9bepbP{G;XxG_5_EVSV>N+0S@| z73JM5RS{s_gNcmoB+u$%7tuK5k2BQ2eF{ISCT3Ud2f@`wXBj?R>b2YO@?q5wOI?A_ zhgorY=1l+&M1c%M}L!p3E|NHGb#hlf6)^o;dd z+xNC1zQg4v%4k5>lU&rB!j1XrX_vx|_QII0QXGbrU`_4FLlfsC#i6xkk8`@vT-Dc{ zoby55fGW`HZom`Q@{Kgw*rJXw#CH7X4_}WQ);gH5!GXn=5 z4fw!XZ&W-z-W8zBSNU{Cg=Ty0P*EbuEDBnP`+54+`H8vGRJbrPe>(`LDs$C^0J1LT zr?%7d@}1IRFj<*cnC3ethNY!dipy;V<14K-L=$9oJI^ z#c>h1oT!s+ofJKabByw@wGHnGRoeKZ!&RcTsBCY&?Xl}eOlVw=x1vya&eex-FTC9_ z#4a6f%6VCxMVus|$^?s{OUU5fNsJS`v9!@Nm3mzabkfI!3;`{O#@1j?3p@j>suv_F z7NP6m@iVDq3YfCm^MUV{Q+6hdJ;t(`cY=!0;NI(tV+(p|W z0KqU07Hll%unl&WJ0O3dd2?OLg*Mutw-5{pkfJ&y8Dua5{Q%p@4G#w( z^G&#K1Es>&@V4oF%b2H2L|x>!Bfw#Xn=}G}k4idixf~*8WBj7zaqr?v&vdRHHl5-u z@`X)DCAzyHk<&#{O~UQX=4y}juze>TjTYZUbFBk(p3!13j{DpGQ==uQSbKr;>&iwN z(HsZX3D8t94-xf)yBz?fdtnzAX){hC+D-uPuh2DYeBLTV)`7Cs-U2|SL4C%Y3w!mo zOM~>@Tp|ZnAK@J4k*C}ku8H4ftjR`@0XM+)Mt#G$pt^ay>aH+tSl69r<@XPH3g$gw z(Dv-DxF+8dvdv2O5Wx>18KGwFwGdQH!Wn_cg!VClZ4K)g+`OABbtlA|OC9W1r>z|s zshtl}O=BpdXiTm)y?9sRY=W_Hgu0GH_yxN5HJdoNgKRkx(bd3)I;m1^Kwp_6*k=|f zCq4X4hF5#VFHLgeq>Ky$&z|3i^sR-7S``}GD~MT0oHD*yG*fn>5E*)dA2?YYaU$h9 zO8&aBiqf=r-~^Wef{jZI`hVK1P-VoViiD-zIW`D{ErcKY-PN#VR0Pl{4a1|3mF@!F z?q*o(wH}m91pJ61=45$fAw;YRCSo8->3fxsfhJ~SVOCZ%V@AD#Br%_cATq~*ElK<= zq+tjXnZq^jT`a=nDs5}S#RNIhlZIfovH~;SwV_^B8RM7|)-SrbuWSh&Eptp`;9TY}9ev-UCROimpV}zDm=_w^5zH?xyc*t`S0QdJZ&E#J z1lN=;qY>Vu<5--U1e@SFVw76NSy2V9qW_RKJfHy9%%@+`8up`r*9r=c+R(L7=#hd1 zzjJ{NSV0X^=UknD-V%W6v5;6^KvNmthALDXiGLl!7VSVYS1uPk>g3!JcmlLzYBY~V z_cx$>K$2V!)&KL&Fx3g^)^#`vgKaS#lwg8S0cVl3Jdhqxtx%qnt&d66`2@ojqZ2Om z;FT)Jp1Euue>Yr4%DI9cfpkjS#?x9Xwz^pRyMl_KGV9g&s6f-WG5FdJkh@5Jh}M=K z(G^4(+uQZcn+k?%!%^JKPd$~0lTis0!aC`!NxZ(X-UQBnv$?(2TX${DID#HT41{h3 zr^LKfY5>* zd?TBf7c|EJ1mFb5->zRTvAT15IoaAP7!IFBusu96{6t zBH(P~_`fT=wOT5Lm0IbLp~#lYV6Z;DE`lhiJuA)t320GEN}){{>Ea0ypF%4t2D;hH zNE$l8vIoJk0z4Rix{mDPmFMx!rNv^n$gA{g#f6o&mQ0>Sn(FIr)Jg`iQ(2DchEXLIhu1ENFTqHg*t=Evb$Hc4|Ig_5$)<_aQV|j5W zPsCot@i|isZif?#ivTf&@GfTDhWQGqz0D`Kr}eWz5U$@LA^ff9!K+JdGI%Me63$&T zYZx;QWRmT)pbxd0SHNaJvchLMge_I>r@# zCaKdiLSU>C&kXx~pWGn6j3jtbkFl4R0|+qx4u(DNDx3T)k|}aSZ;)Z^<-mHmxf8tC zqhi7n7y(|vMUyIos18#=_v3%T!i0kQlXz;J?1(81Lw7QMECk=+>V`l<+yGJT5*RQ* z8c83q4R0|J&g3*jel8(-UC}-WoHBXvdL~G)84DeycXiA7+Zm}(<9s1k0e#+K;uHdM zE4y1;_b@uyf-$G&3S5|UvdI3+3N+H0x6I^4NwE@*CBfxw-dlHfIVy^5uItl%v`1@xTj(8_@#9(fxxlX6Uh>r=J>Sc8*Zgx`564ER=y zsNPD^7gW^!l{#nFquut1hSBD5`q^EJ1BO-BV-g(G7I~)(0p+*h9rl!_lPyCh%t%a+ z9>K7Vj6DWiy-tB!*`8DBAsLgB3B%b+J;tauM4=c#1%3s2kN_bNgFt8I)jRDjLIf(c zEd5d&ROE!Ed6uh3q)pbGH&YUYPN;>6mk~Xjnhh3f;+;flOw2opyqR9dp~TRtwqzuw z`P-u6&P^;XloYfiVk<=txKHUhS2d=JiVe0uFlR^%KJns5?j#YSAe=*S7vnZ~&G(+T zTfOsY4J`3?Alwi$4b|)@*Wgg-q&*`s4*wxhas*PX7iTGVQvQ zo#-+yFGC-dNQO~j60Gqk`6Mr{-xmd>eQz0DgL%Z9BBa<;iQ;?We>^~X@$7+hhh=%v zdoUmK)rHCwg2a`D8Un`iw>1As&I%Yin7>M-mDR-nk_LY}G;*$Cg%+oc;8Cd{xEQ;tOg)HN?}>K2RD_ z%086sl-k@q7YeR)1xfN784gvrp6`%g2t6Tv1+xq6NN?ItKVm-_--<8VC>m*U$3Q!F z-0mhpt*hLM4ncw+CIiY)=CJ~nQ696dLJ)v_1ZE}ka|oFg4}qZi=N66=V8J*}pg}F% z-+e?(+jF)6R?MiLMp^4x{lK^y6y8Q7c$M*#mA3q;Wb&`#TTTH0EVBodw~xcIB?8Qg z(;#lIAc9n!bk?n_RA3oM>Q{N}nnT8(2t9OM``1juop+Z|1Q z3kI>FtNP&Oe69f;PV?nu(HXLyvq$Vv<@V+zV6Ue3OlsB}?yT2(%}+)GXt;&K0K`^O zpDBlBpx*@B9qz*Hg}WL>2$1H_Jn&{di>?(7V~uX`7@X%JXYnwgom;UPF=6xdqfs^o@|^S62(a7reo zm8M-xm2Wbz6QWuM8|k-)tpzTC@;#C#7H0YDQ3fOCm*}gs#*^X)N7xRLo_DBW z7&pXHyAXDBY_^5Wjf~fdBewtX%6_dAUE){d)`ek^wWd?vOPS2|o~z!)hNgMfh=z`l z5lA_+uy}nMNaDu&)NZE(C&;3ZoLx6S{}lC6YvOXv*2FpG;!P5UJ)+7M*#%d;iE;G541+}Z52*8|GcTQhJ>Lcq{9R)wVkacYnpEvN_n1q!*}{AnmK-j@s}U~M z;2{W+3x694GQ*Qh%$Zi(OLNI_@nx)<`7?ZS!)kM4sKeZoi3Hb&gBuue5->MtJT72Z zuZ4>gN2nWE5Se<4V=WmB%!;jegM0e7p0IN&oyc0ehZLc8kq#+Yehm*)$%F!(9&QoN2~n^)+7b4?GnkSKXl2HlXatno((!;<04|A@W{K6XhCW^}5he zYUSuwa8L}m66uf2u$h5Q=E?!-1W2PBNYpxje*@Wz3WuXK|2^n`}(jJ^Wcx4Px zhvRe(P7IpkI?D_`e>xDaZJ7yP)0L&kazNg)WF92}Ojjjb$=u>v%nnmK!eJ5l z8t*Y3)D{<(rWPv;h?K#@uL^olCy*TXVV&!(pk+8ZQ<NuJ>!r9cN;0igFaYwpEx(t!c7T*D3J#Y>;R=`WA=Kv5Flo5*O61`D-Bm8nQj)FWSk2B&;w z6i$%v*xV`#tn_gm0gw_!P)k~yq>+p_SV`$PsTt|I=CoR_+^E^G}$_Goe5q0 zQ_O6o1T?DQAQEk)e?}P5bwl_E2PIP%NsUSpK+GSiw>oao$YM_#W!%IrpMUPJEV*{JJbRX&}TkPOi4edVTJ0Yuh#t=XB_ zYqwT_P-^D3+W-P@OS;A(1cK+OJbU%F)E=~YQC%oiY(Ba&3M5BDbvcB0VS~{h&bwdExv$DpdC*i1K{u5Y)u z?`^eryMx<6xk*CDGdFHHbrPSBxz~`Efpzo!!LM#^B2{>${`4~hP)S=yc5x3?^LHjh zp~gxEgY3zEiTk0AS~WZj`c<4amdm3u!cIl)9wu6=1Ps4O8G+}`Qo|M^5KuT!<9 zGsXidcKvbC~ZxleXMaHy1~@@2!~WVM<@dOj>Qz!N}x(zm6mLFBMh${r0u#tdeY0lbaKC+ ztL!_F04{MHX#cuqyf5U6;}O_?DwxO0@Y&gFiq*B8#9~uu#4}=Q#4#+hVuj+#j+e7L zavN}59@-m4!a(GKO)9|aZa6`wkmkoUK7`?JAIWrHd#$b>&<$Z5cgky=#_+Eg`DITuo0 zJUb(mrKY1a4P6gSenVdka_8awTe+lTl9okJI4s(;f#9~d~=B!8;vSJ&FIChAO6voar z8>R-g&%?3-56gz|7vsq%Ujup$CH0eyaAWjyoC@$)K{F;=9gaA;yznlW1rv+Y$pATg>l&8FTb4hk;~7$n<++ zOF}_{mk|&vNuVPaP+Z@`S@&arFRTQv@#z5&9Mvtg)g9+lMp@Its7V-;3Yvx;@aLo5 zjfSiQJm@I3+FvT}QWKttKRE_3fjEY0LA-rpX_fB=6)-!kHF8C%su@qYV(kbON4krj z$HUSJkD!~67)KE%^6&)%-bk&IZYtFLBwCtam5hGiEp{CDGM&_rH2YYvU0Y5ABmloZ z8KS<2BI%Te722z>jZ^BnW(;(tNGYwJ#MT5 z)2_2B{r6x!UK$(`quuhE;#?bQ0@6qh;2DivNt^;_;d~yg`@|yRRn?oWBZCQLTk#;W zAe)Pbo-m5GsG&|IE1RW+RzI*fg!Czw;mr=+}W!_IT6FO=yE+sm?obTVUiqT3~rflXns;f zG{P2VJy|qh4=;ogkZ{E(k*GICX%hRC_U?@vs%=N2A~(%f_jJmrOI`r?hH72rke-Lh zZv|UNgCAf^)M!kEb0xQ9N8|!U+ys5m^&TH5?8NNRun)lrIp>$3==)D#gCoW}q>=uQP?<@5+lgkd9@rOp2!9Izh7i7}3=`r~k> zD%oq9%tTP_qExF9m1s@rAjib3 z89@JRce@<2UOJqPS$Sl_k!#;f%E^|-U~e;+h0imqjn942M;)H|&WdZZ#7O}K#m$>o zeLU;Wk|f^SJmCl}NxT|x&xDIRNkEuq^&uL4!=n^6J9RnBWlsKLH3t&DvMG#71Fod1 z(J9>}MhfF9)&^n$UB#0eb)+-$L=j+E(q?FMRQyvmIVvlL>Wk#Z$82;O-9ZXyXhb>E zk?=H^L*jplsJ8pso4)K86x3t5M#_{UVSk}Ci8eGMOfceOx(Y@RGX|kBU#1>*(R$QW zn(}FC{#;qBdKv_kE>4iv5?w%SoE6|6)!CKEMK2z`lvHy%1>hXp3f{OOJ~(UtMoXm? zQ?}}9c3`2(X14md)W0GM%E0&h(cVuvQ4Wc#pq-uSX@o_$6xbwzc^dVUAZYqp+W>7c&3*c@pI zabU5l8Rz!UK8p!>;xkksYezrv*mRAcf#4v#bx`89H(9)>nhPa$56pH9yPgu*3E`($ zzri!%YL6XtkhErE>Tx3&6$fIq!ICQRwb3j*(RcX-id=DAQbMJ3s?G>Suw9-KbB@4! zA$rBQc995^10z&#>t;5m*JYpO_z=K{ATC$tZ-;{97eA*TEpGyoP33IilkZ}y2L9<3bTpp5xUq7g7U8b_q6`n8Tc($# zSRS_--EBZlxVRoNwdOvHzj#_VK;G+4FBvyL!xc&MOLd!x6SbXsqxBlU>5+~>jzY}7MC-KSi^>0hKHhNV>Uo!8ya|G?K?W!=6MlFV<$OJROmQP#Dp@zLl7U3^5mLi6gMc2#2Cdf zfC(&s7DFZkaK`qoH@BtTLuGa&YwK;sKkks(ldifs{DS2M-9PPAFRF%)kY6A zDd9F@z7i`Fl~l_y3)A-Mi;@6DcZDYG))XCGY1P*((WN05iUZK8=9B`d%$I>k3Rjog zVQa+{P4fO02Kxm21*oxSn5agzlX8y;CNZY8+FC{9s=gy zs6Qzm-95^=ds+i$DO8k-N9XG`*jKu92zz9}>Oq3~5@KP~6N?kTIZ-P&!6t)dej$5o zcg@&hnj&3%^EOj4;XIV8UYj{6Rm-L@&E&+wLP=L6gTzkK09bvr{KiR=xa&r64JZh- zp;?3JhpD92{VsFfszk|Gm0 zC2Fv~&>*FcIUfR|6lj&gaTpkmia#Ufpg&kwyVnNw1#<&c?m(2F#I&y4WG=@$kQNd) zxQ!`Jt6XxEJ=HT{cT*>8nJLv+Ld8m4g+4{mw!I3Ib275djZ3SpvMvD&jvC)+QcY4< z&sHGg;?1E{>%yxc*uf&IF0g$JUdefP=gbhP zBVl$Vuoj+iY?^8U-ckV37SYpxNOp;Lk3*&(g3_99rKLQB&_c|KRY@2(n6z;xLqiIN zl%OdB5*5o_VXk}C*h|TI-gFfX?*wQkPt@5X-0Ml(c#}42=-$LuKsKqI*Icaci}&r! zE;Pg(cifHxf5HM>OuuZkmL=iKvzAelYRpb@w;lMPd*N%KC_XdmZieY6?*^_PFZ*!} z>pHV2Cw8<-=g?E5oK>ZG6-sUsPfXkwmT7`2B#R6cTD0^_imn6#!|5qt}LX;$OTX7V_M&Xme6DPzi;YLAvjh`pHuL z;M^Exa^ntynS$S35pC8(Bm0N#?tQLJTpjSTbO-A0p&XT@z08N)4k9F2~YR@KJ+5J3;Iy4{VVXr09H(uyJ0 z4dwk*Pck4d?(G9ERfSj%09_vN=-(Yiu##J`79~t z4vtzFIF*?QXn?(|T9tVYvmc1s{-7Ag^g&-!Kr2?DQw6LG4|gcq9fKJ_-8YGTdO)#_ zzYib;ppA%LNPGcW`37l;h=rwYeXS|gPBPx4;pUaM*vlf;cq_ReV5n@fT%A~$n3D*v z+2O;|{x7QDFPmLsNgd#!?I;i{PZCRJRZ=yvmF`0ldZ?M|a#n+JpR%m9nGo=h9Xgp1 zPmXGt#Z~}*=!o|MKV;o^+Kr=BF57>HYhfl%y06+g7{QQOvDI} zk8&w6yS8nVS}<^RmG~Z|Bg5<%8y}OEMwE>(jDkv4;ZG&d5J)CKl3jK_f=w-pvH#!YP?<^CFiD!?npw%3!GPShh%!WNwD z>nK#PRfC(iC;^LF4}Hs|o4Wd>wf-aD3(IeMp-(Z|6Q5VjaLl}79elhJH;{&PCyxk0 zaTSv)gW&zP;An&+1SuvfLLq*#y|N97D^Uoy=!XrA#Dfp_7<`a2f*!)OrZ&UIX;T}L z$fqK+lIEz?dC-ts()jFp9X|V8p@J=l3(IHlm z>`NQ23An%Txv12nyo$84&w7O?;7^&S5?_BYaY5YbtORKe!JYl>#(tCA&I+SE19Fi}J ziUZ|fT_=O7=+~veaq1vxD_r}~tfJ33NGUV1v!FDw+F_$i;bK*-jJ_xZH1noGK~fe+ zBAp6Kmo6bt8<&Xz;UrC8W&DE4Xm>MgFXd2Ed0}Z=WfRGVgYpOGh^f^xp41uPY4^FX zM9fCBZ2dOWY;2A%7R=7OQF%wueNmZRc#CT!|7p}3MXzWya*)-{;CDVH$9TeYQ!Wpm zMtd7wMKbH8rYIv2qc|ePp9-6KehNz{s_=)@;!3^NHPG!bXGt}OC zln+;)dJM($YgRBy=GA3tvp!|iSo^YAQE+CfRRVnQK0Dq9(~GD?ySdU^-3e9A4E1G5 ze*@`qf;`zDa1E2k@cg7eWNOpY?2zl)G27D;Hnu=jJvh0%w&w|B;wiP-L4OcViS|k;9flgX z=3X*RlVZ#gBxcW9r4+F8q^*MuUk7GO_3{MGn7Pm!&}5d96n*!1L2OYLA_4F7rU+3) zCzws;u+<(_8Zhetih~gW2{g-2eGPtH3zj`Z$oNcvLlbGtYjKHVywNy66(db-H#AwX zFqAZRi30#i+i36ATSw2cc$7c5h z!wK$XK{-*2r@6elmZRk|tV4lGD!rHOPP})|$AcXTi1`oUg(V@YzT^`7PIEj6P^bk+ ze4Z}Vs&fD%ZpEvCX%;=*>^3^BWfn)c=QMHWWO!_MAGb@! zAry2uJ;bOX9pZhdPH|jq*C*v+WC*~gHlACW$%{#V<$uE3+af5m#+qhzMyvC1FZ+VD zvb--C4PRST=5FcPT4u7T*rT2&0j)kCXpo+}Wn&GijLkn>kJ>sVHts$hvW9>7&h6(Q z2M)sN)?P)b#yFfWJvEL+i}y+D1ZbVn>(pU3NsS5k?j*^~^K$4TIj;ktBMl&-(Py#M zT``pzjN))FD6+1st{fp6_iCrv406RWTTn?tqBPSg8S;!s|u?hg818D^y3A0wl zd1O~7(zcY1jlZ-j464ALGw&ipQK``JhFqFD9KRwMZ7y@vcmy71M238J6ZR(nQ`1A- zfbdM$iNk5{Ys;H{W!uFS_jY81r*M}Lw1p&iCM;?NO(n;o?-h7Dp{DwD$m%SrkD4jb za5T$1vYw|IOIEZhQD%Z{H|x@P;lNB?+-G!oAs0#BghsD%M3sjXpnDB97U?Dh+6~3` zg8+nhoRc?fM#Tmr%2~R;RrM*{%AjBmqlm z7>Cx&a~kowx22U7>vcHc0wdhw-qqRh4at8wG|@QbFpFm!$4hs)HPrE<9%df(vZnB0 zkM7`Lr(-;0MCeSS#AmsRVn>x*w^U3M6m=ZP4{8mxu>DbO`X>B(Licv2qbhji<~G`w z$$Y?Rp{p@-EU^IIb*ow_l@`0>q}(e~J|y<(nG3|mt*M*BXlY^K@p^2OH;~Jv)0XsQ z9!|mp!`5~KecdBR_Q*6EFYzaM-*K&Q2@_2+F5MuVJ$*}3C5JOa&ET5x$E$hKN3oLu zG^*~&nKc3@TniK2Ugjp|Vu1A*=#os`XYxmfGr z@x4ofv7;)-8-q@mkPUkC5E;efvRj1)g{3y`IOdv6Mf@m~X>qg)z5*#D@hFxnCJ}Gg zE zIvw&;l%|a1pMolpe2lY5PwkS1`5~Rrp#1Qjn3-cr>F7EgPhvX{O+8*ONhF#9l+bD+ zv>NDXrlPlD%fm%VD%JVRN!N24Lb|dlRhndKqPn<*mh3=YFS7r9Eshf$if&FNPg$EA9f2NM15QQ>*7DHe%(!ILs3*;rjbk*vauc@m*PpsGUs!Q*P& zn@P5_6-Qok@F#e0I8L#XZ<|85CX?AVI8$g-$q|(*%d$B}Hrs35T>yvR(`v514aX>V z-o|dX*IKh6IkMgdBw zqu_vU^jCtU0e)qH;$%cBmWI?1QOU6M3UceQIC8KwGra?hIj+)0<3x!v?KAR3(Xe;4t&VPzI$MYI5*LX&9+ws5 zlEn>bDp_V?X}VNFp6B*TdkcM$8^{rl!`netk+KYv*J=YM>L*dctGeh^X+`1XtlAB4 zo~kUXgNc%+4ZjC;9WYobm1xV1{++8LpwjOmLfNN^XT4n*qJg^Lc4a*<_LzY*uJCu3 zp{L~GAv^itfK%-jOt#+TBu9u6JK=9gCw7*)HK1U1LZITcNy)NqYd6N)!5M{0$4*?3 zGJ0}h9lNU7Zp18y5lJ=HuJ*J*FYDS2t_eid;NmS0L6p$PXFr@rFaw<(#NS z>&X~mK?>o*4 z#F9iOrQ1d$9mz8dfIFpK%t8xBCvt%`uZL<2NM?i)+;J%ynS%@>3qp~ObtoF1@~d29 z1B@Hr-8RrT2y<&%=y$his!j(ilAmX1`EyCF(nsN=+tQ)!v5N00W%b4lcu!ywXqaPM z_wik*Lmj?-Kx5Lwdp^a2;_FG;0HQ8j`lq5+9Dlo^Yt-IE7^v?aj{{bLl}mZ+9NcGJLt5sqS^}R>)HZtXv zggYeu3{8Tq+j6ff#aeT)#J)w&LsrtWgv0mKb^$%Z!Ymyq4lqG4&?^ z0!;h@3|*_r{A9b~qJ}nbLKA#=bY-R8V;oNTgVI9xgcUp>{iK11M0uc(OC531abnI& zxQDKDw#^b7cLcYJ=r3-)c~eB)h(+UM2GGeA)Ql7&e{9zStC8Y3N(eUYh248w%ckGB zWhv6DRY^-d`wR^b5!L)8=M28LsNWkf(Wt-#$BYh}Vv&0t#TMuaTB@1mB}Za_?ys4u zbZ`^H#!PHtsVQ+B|z_iRXpw4)bMJOn=(jF1}zpvD??BY|7 z91$KeQNCSSC@tQZv%T$?YG`K=PL#`)sfk6n+Rz9AJw#NEALWd#Ru;f>SloXBOeeP? z^q6CbF|f{7Ln-G5`%TkY3Br@rcvA$aBxLY?FZO1&_hSaCqqGQwL+eoSHC;HB-?88} z<5ke3mMf29s+>u3BXv>50%008Ae7)>qDM7>FL*LmSD|+4ktIa6fU9B7RKa<<2GPv(de3yaXl$=$gCL%Z ziIHm(4|Sykk~{XJ0;Qf6s+7vr36x{uc+%AF)T$953+)nVqZb%2HI>Qx%T+X`F?oly zE}T$NBvmx3sR5PB&GpKd%mXKKoN}h<7e48RyJo7rVhCJ!@pYcOVy`dp3~KSA*lDWG z^xk`FQhF#!Dg*52n8ZDWKB<-EZkr9NRgpCmoJM%B*J*Ex$pFd>ZK`xPCm%zlF?EO( z5Q97t!0Xll?o;76Val?HjMM3gb8SW1A!*_PR!YbOH?JU=MdUoEX^-fpe@}hPsABXxODeqF9r_{lr)3|*QFw7 z2GuSf=H6dUrIOMv^X}cKJT(}is_61c^)^y{+^-|?ucLVJ<=qz2E>IS{*FluZ(S4Ez z%g3}AFX@V6Rgdfdg}1JU(8o#F@VM}ZhRv&nqB*Xd4zc1i#si*I3Frrm*Y~)ual(xb zVmky~5cA3H2ihgKuS$|*wNU62jcQryv)gEHH&HDXD~>1xbQ^{B@NECC!}~lg#6(r( zBwQC8@d(6jT%(90#}ZAPFlkH~B(7UHBbNxZ?-9_DUQ(4G9jS=Hp86MiIcV4@bV4+0Hmu$h_wCECx*xp##FxaHW zszt6UA5Ott-x2lLs&FGwnBGlIznc-Mk5}-CflO38_+Wl5#& z-7#GU(9FU3*rV04?B9{tDS{2chp0v*<8Bl>%11S>TvR~-qf-MvynfhLR`9>O*=+8F zC=qguNFo94*tWxAb+Q&tOifjmC`4`p(6otIC|m@rT*R$GTD#TSY|aD0qUZz`{BSY2 zT@Gzh(aWXz>B`Hfm`nnQ!xc5(_sKDzo7^>BOk`9QDvH%L(C9=WPNBRR&{rGh%>Mmf=SNHdYb?%AJiK?SzQ0lhCId2-q>%}b@hppN)YIs zh<}FrNRmO$B39rKrGT#;S%W%w5kr>Z#|ceb;^G^}+xgHX7l^FD6!B4Z;}>HpU!dZ~ z-JpuGZ*;9Hh#K?^P?$hFKRcQC$#Eg8zvN41N-Et1M;do7rwA*Hx}4z6I+|qogHBIy z8bmM5W>o?PtRq`FNCP{JdV{SZeD#_!xPqz#cpOKYCx;XDn~!c?DTa@46ZuiykzVBz zgmw>TG2&2F#&$tV%`7MGRz@OQdKEKok&Yd67&PIG!?3Z3+&-gaXC;9o!`1(}?`y?BS*cCXg_@13zvVdr(sRF3=U7Z1$(#KHl#x497d7>1ORVu@ zrq;LheDX`?9EKSvNR=bwx_DqKSa9Q3P8Y#osYmsn?1*S#DU1{RFIIqu3E>jKf$a?C zEZ$Q=y+`)anqY=qkP`wPNNpnjZD%@Ks73x6&Mit3n;HUeyvkoGX)-0~Yskh`69(Y7z9L#upXT-ICuU_yvINb^y&`|OA>YbL^qW9sP zNt6QzTSMy?*{;+AB#I zQD)bXItd4O%W-=PZ;hx!3q(&n5}176=qc)vVBPpctK?qICVg1AQE_T-h$3$5icm=F z6DAX0vB~6lQ$N^II+RxE$rwW87f@s<{8;U$xK|&mX0y>8Jc$(2Fwo~IXd%t*uGRMM zXOj?w8uN(b)yT_5KgXVT_(5DS@v7K<#+6X(O?=IzO)e4^F*#l07)zF0_FT6b!vTT% zZ!y=>iE?^$$K=SeoOAFpx;mn~dklQQ9f$&Xamu=jByY`9VLa^uyD8YSjYvtA{c|mNGVLgt)F6mYf=8Yj zW`#=dR@slr7I0WjicC-g$&}#o*yB+bWAKLKptw}98d$EaG8W1xmI zE`^m^332zu8k}&fVyw1+F?<2RxN##A!i~KfH>h=98Z@7<$jJENI+Ye6-BAvpLJ9}4 zT-FY-9@QC?P0thz+ezd}3~rOz1t!-y4P;?UFk<%r`bTC*F%WU3d{q<|Xr9LM-m=}s zu$OC};u7E`Yr$LywDnS802*H5!kSUCS4g%Ip~Nt3kv^}kG4{HaCc?7;;*B>K!W|6$ zb6j`C8;KGWQoI25I>r*96TBl{WAP61&!*YoXbRC-jfvo3J;ZY#DGf$;6pItID3wz* z@`mz3zIoH^#9&DdY$(ews}5AjN(oFEm=ErpEh+g>6DoE)tYc3Lka(JOCDq zx`7-?7QG6Qqz)j_N+`Hp6f1WeHaa)SDR;=XP4NUvl}RYbyGQ7(xKEuoheb$67J3?QZKx>BIXnuY_eBm2(Mo z9FZ$+VD_q#Rxm$RnP&1HFj)9d4yPvZ6l~0-PbsXcm~*UjV>A)UFO&>RCceLb=ALxI zh<6ccUdjh!ls@B!xvy+Z(-b(;ffDm%FnGqvhn={%3lz7Y{ZF1I=(fBb(>V+olRI-4 zy9k0-+Vv10U`4HzQW;8oAI^y;(1Z*zR#ifyJ)s^(ce6BYOyG%@JIpTJW(QccQQ`(@ z#1-n7sk|EH7||#(%xC^m9%PpRFvIO z^o@or9b}NJUu||;C?Sd}Tqr{f%%fh}#5iG7tV>*g?gWsG zapZ2Ad$Qa0|D?;&r@nsDJZ zMf3KsA*KWw_tGf_ijk%5k5rClQtB?S-0(b1U_L9-Ewqq@QU#h#t5WOAh#pq`V<4;N z)Xxv?ur6+rC4&**52)_Cjs|gxMT1CssEO|(Oed;oOB_mh;?-D9+k}P`^VnG&RV>)d zxRRbgIBcBOb){%5uGRs#4to*=3lk%uQ&jUvx01>XG|!4l9Z}}oKn`D)XirQ~x_977 z_mwR!zZ04Nyn08g|6hiL^%uM3lC8l02l%AR9Lu- zBn^>lvR=fj^H6w)HXuWBP`8TQP{%-miPux@2UhCAa#c&EuvVFx4HVca3dOmII}XTo z4J0BZDJqL~_KNqk9lJVi%(UZ@DwRWp5rp7rck1jyuXa{ujFFASVsQ;lk4e$r{C}By z`=&OMY~7cS;``6U?6Z6JwRmg0!_yHMgsm|~+6dg!bK~9$A%qbPh(-d;jvMpY?{BS@ znU$H9C6K4*#GSKGw;KypRaWMDdDgR@H6@^*_i)<<)!iknZ?!3{&0XLJ@AeP+Cr9sh z=<(R?=2-{>&v*R1^TLaLjOQlEZcG#qbn(kOw~R(P-!Jooo&Cw4e31ZgUeQcLuzz`5 z$v!Uyb1M!{lwhuW^PKm1EJVnL-#VCJa3`-9$s)xHyx@<5q-ul*4^zZ3c44SYZ|-OJ zn3d|bC9r!6ah=bJ#V*N!ZhS~{9u4=)=gRa8c^L6arFv;VwDAkiT6;B})VX@!NF%&l z0qlLGRt$D$4uj~av|dm#^x4;|?e{uKQa>nL&bMo;Me$KfPG9nB3E9Wx(J~%M{R!#r z<-cguejMGZkRAXj+eGvjMbuvOv>D1#T}@4V+rQC{PVc-+~n)|@cGYN+2=i#pWPki21p`5dOS5{EE{GeDl1-P7aGW9 zJb9cl$+HH7HFz)FG(34xQ|Dntg2iv}G)01EPp3|T zR~rshroMOR26u}wii2d$U?ab_f6yZ+INJHr@9kAvuRs37ZMe>y;xTh*1$6HH&6gAq z7}uHfX_!#T1&hNK9G#`$8gbH&Vl6^=dd!;6k!KMby2T*0+m7+zTFz-fUPrq6F4rFB zkMr^9Mje6tZg#E~^mo}!@^`OCXBY%sf!xt||BkSM2oDMn=uD2>n#Hp!YSPegionQ- zIuUY;=FPAs7Q#^=7ID%uH{<~KVQ}_3Lgsg8&@uJ2`1X2^T&O&yoCLqW^7+Ye2pHSm zP^wCeu%4O}ig*mi?CA06(<5{r>BobzEn;5IVVBuK3vtX;h*9mjf~Wot)%-t?Ze}-6 z*ZAyLH}DbXx1;goKYsdYa`XHB_Ge(4|lRy|%DRHL+9^7f*m?Twe7 zd+`YHAqhrHy#xxaapkmwAUa!qmuO93AHBC<`s7b*V})k~1$JPSiv~8B^VeCAdq3X> zg#-2a3_Peu1d5Of;mPuj!@xrzd2|oDYF3kLOCgYF#kD%SRWn!2KBbjrweqf$`|Z2H z&>i`>Ji|dLU?4~$uh)S)@AOCMN&4~`nOq8EeG_0ErnrsHBtI(}u5ANX|YYU4DhMhSrlFUs?b3zlY!AqS8ck6QFm3Q(s3oWK5 zVCMdtayNkGT>?p$x;$mOhEVj7Q1s}J>6^9#3?jR|7!@QXdpYJX?<7|b|OfQ7PX&mXj@B-wFmkUt!O z2SKFQ^U~f^_K0FF|9%C`>r?GR7Jz1lB7mBe&lNot8mLEZsnx_rlhmB83`KuQVCA6& ztqiSr;|I*gswYRg#)m}O`l5|W16Xgv$V1nOfm<`GLIm&kg1HkrJ=(HoFu6iyR#W65 z9i`NGfGO9)hb$ds(Z)$)BJU9gD2b|v|NXZ_)H#hR(E|COR5A&9cZKKt?{~I2S@s1? zYY>gnC{WTxZpLp66MQ(u#Dq)lq-#+~IFt{iy{C2UNUG58E#^EtH#8w!;ETJH5=S?x z?z7~@JJ^0Hijy`4)ZlP!hI~`%~;9728 z;It(5du+;L8m}hJT{4LCA|iuZn_u(2K1tQ?Y0bvXRMYc!)^)7(%oXcxuGm%r(nezT z=#w5w0wPN~A`YG|wB}myv!i7mYc%31lCY%4-8ynwZ=bM$&_)kVVMW4Vr>$eVUCCCo zPVIN-8|n_2Ya_}JjOW$bKoQeU=85}48>890W!I=CGZLh`WIc=LIe|8~-p{R%tfmX* zLs#Q;Zk;WwY{y0c+;2o5F1?YZ5MsKO^yRyQ)z}n=*}HKwDigj=Y_ggx{}A9s^=p4& zvFCY=m`Te;Yv4*xp1P=8ja$y!Svs%jT}Jbq9;)Dpv-iRA1>Cz}VhZD^XSB$NOc^?P z*hAH5UAK{&IRIaTIirLbX2pC|F6I=(tve8ymb&}@NT%mrOYWi3L`!8+Gz<`3K^hBp z`va86G{aKwi6?dQW8U`=LEPWxU-G?$Ba_Vk<`FcerkwD=tSM@D^(!zF6xkz86bY3T zwr&t13IS!*3#dD~0kn;tt77R*X@DC=@`+&^dl8MXq+%`4_SAi2Bbq@|iqk=56A5A= zMsqU$&CUhIxKnL`#f&BUcpVq>;c9j|y2ATqo{v1x)HC6;OqQ4FvxEZGxf$*y3< zBVuH2wNjR^f}wT&={Pt{eL{yisUeTK!TgqG5=;i}4)%|RvtgwnaAB{wG3nt!20I6D zs{Z?7|A0tTmMS`N;@9QEK_;W_wRDBJzaRHBl0uuR`rJE|-{WK{5r%*#EwO5s}3FO70^t> ziMi3Att3Ero>K2drskH(<=8E=0G^GMHEQT6fFEAzzuc>)SCzR>6Uq(LfguBQHj@AJ ztUKupY3k&zB{KVhnCS)erzJ_+|K&d5)ea1tD}6GABZU*dROVn&;I(J(u673)V0~sqtp7!^;MaJIT zbBir}0)2ZOrwQ)ps$19D{QQ99{Gp5kFaOHv-qWFC<$t76Doq; zU~W$@Vv;@|dC7{~2D4`_-20=5-*x}X`!ETQ#4BONB5$Y2j&no4AJ^;KFJ2V;HXlbe5k+^_gmwDz=Ma2;i0wTP8 zL6dgjsD!8^p>RBtudxnsBt;a!em zH#w!W-<(VGol4bF1&@<()G8Ztt%NC3 z^u4}H!>2d3?Jl&KvKpsri;L+ziX}CYa$_YatW>)@HkN$#wGMkQvN+GTG_#$Cq_@gX zftmthK?{Pqifo_17E4z*(U}yFIU9aIGmEzbkI+&F$N;F$^h_O{iRLbBxcq7Q!86^W=>e`QRf7!)_biEL{)>rnqxm_VK< zz=LNdNcecgvcrouoVa2(tQH$K*g|owq2Qnctw8Ku({Ltl-?2Kj&hH?NnJZ18b1w_r ze59wY*3jytA*4+ocaC>I%8S#4x8db_P`A;G7(YC5y{NbnN#XFTyxxSvv2{k~aDnwK zTyTi`{ZSwxM(5+D^)(%grR(wnxHf=e2HHvr>fl=KC^|pCx}W>;5^je&JK3;N%aw3s zUZ?iCi!t>Hjj?P3=2C2tlFw^eV|`MEEg~|Shh4<>0>U3e9O`q$s<^pu`F2(-$DW1DVNk+$`W58v=UzJO1}F{#GD3r=3a~@Dm&P{eit*g0#}Rnz-Q4& zI~^XB#m_0@%E!GL4W%Z=9e9l%B-Jh^rBWo#blNG`1C~cXO!5LsM2J+|=B3%%h7)d> zLkU#&lHFkez2y;zCoiuji;LM=Z;yO;a`Q07j1HM6Vgk4z>gTS$J%)6yWobej&xj|G6@`ml=wGv62ANQael&3&(p7pRr!e9zcW`O z&`l6E?8%CF)Sw*_27_?z4MUl{=T^IYm$_2jb7uKF8>z%;Az;Xq>@!kQ8p9^LGV{Rw z%$Jl)rN1Iru&zVpM7~L8%Fz|^x5M6n)S_GkRQ_97v$`vj8g6pt@{J|5%|zu~O-@A1 zg(!L;Q>@_U)|l>o{|NmCW|#MlYeO9;Jdrb0%k|-?+dZth|7}0t?SCHh4@LZ8aMb%E zb4-qfhw8#_mxTE(p?0)%j0@&;v)!DMn5<22&=$R$-J%)BT-oW2Eojp8Ml1{2Msn#S zVZdMd+{OoU9qkBLo`>oEM2LJ=)HaKeMPMtppb0$!loR+y!kFya=54aVcJ2K2)7lz! zZ1i9WuANTLrlQ5qYEbB`dpk#8^_n$~q&3lH{u5(e5Nr{u*^y?~)OY^vjRTJJi3?DL|Lzj&s1r zJ%;`z-M=!S@K$*1LK?M!x^la5Q*R-3^Aq8Vj{7M%u-_1oyaBi6>o?XZZ(Q;Rc~XC# z+Gofl72D^tqkmcwhWpKhB(3LPF3JIV1|j0ahdu6ZvGa!L)V}@Xc>iE>gE)wu`uT!- ztezA9(RDAR(SU?ZNJD6=YB&eqlpa(cFQx>Q>vwkB`AG%?OAWbwtk^VAho;an_^p6q zA90#Qw7ji{iSe(o_$nowfY$h_8N@j2qL=YVN7cvF@0ivokVkQP918 zdgsuRA70h4N$A0oYJpZ;UQkT=;gt|W^yvF{)7eaujM#8Ls|UnV5VU!w+VKoGe1+AV zoP~U)J;}ruS(2&mXjT3fbKdfPa3Q)D;#i$AA}^+}^s9El=&kzN@`^r7G6QupI23`{ z+{t?`q|+K|TIjdTR?7XJe-Q|4zUZMEK{Ze6D?Y&y;Mb%S0OoY{BohTDOunOcf##Fg zBRTkF{WYaNe=M|DR5l|#gn|k%z6aG%1WLBsvKGMZ79=)o#dQdifht+vh~M;xp(!U5 zy?Q`OGGc(k%KxoZJ9l5DgN7Sq)&UI(vqz9CGzWMkAAdq#EG%ya%1UaG~j`VF4&Y7kb_URCcQFhdi#*JCl{f zbt6)pZW{QF2rBS+TlypCC{{LM;2s3u5Z%NT!}k#O%^$rsGzxDGf&6lN8` zZW#waWFd6!#}Tye$?x}dK`?*aFz*fl=rgcq=kQP(nDyrBi(OCU8k!G$kyr(ru zXBxJB>|sqj(Z!r0k(8ui?O2Ow!4TI2*29CW_vS+q3(uJjGR0#0C%iR8`odH-cLVu} zIE&lQ6_>bI45GdURz#vXjbF+h2m)-Z)b`FuG-C?bcXeAs0nMZxh>#~pqG;It(rRKY zQUzEl&sNHM1s23~NYbR8%^du|0`wV7#sdmiO?Nm~1F+r8r)l!g%&kr+tcf%aW9EHa~}wOpgC^x0hbptv5zO1Xu!8orN+e^wqWf z239Vv{G6hMbLA3@>VA6Joh|_A3;IDEruawZvxaa(*>Jdnci@K=cA zpR2u{sj zpBVLQ4L&zFhS=6!Uv@BanvYN*UN$8R{@3aL9YF^^-$X)qUnjfF8;@8i`74IhtOmlj zC3U4bV6DE);r@!j$0o^Gy4iVkHoF!mppJU0onPM9tpmj^^v#F$B`wH1Kh%uXVLh(s zW!En$LSV?T7j!dVSHPXs>{-+UIKMpf@jqgTYT0W-Y}G7R4u%^e?k<+E2rSwHEVpvL zByfbAjRaMc-KRa;ni6`1k9ghM-y{dW+N+QLhQqA1br?k zpeIkF;1Lq~HZIYV2wni>`A{teBn;K|kpM3R$GjnWpOVfehx*ZukxYl0vBj@}p&xhx zrG68X-z}=T_vLvzqzF}vSv+gG!f!a=(Eb!J9Xf0HiYW?2V3_}67p*8N7MNN!${fop z@&>8L34zTIKa;qj>Hp@kcl_xpz>eimvr{Udm!gsvOCk~ybT;F$xt-UVE!Tw{ACL#I z>cwO-zp6(L)r&lJsR~u> zvU8J!hh~+@@7%?*{ zrP7sWRAd6`-#FN%aZP%K*t`a*uucURQ%v1&IE~$G43lau885>%{I42&z1U?~3N>D1 z%-iga*4?`^%I9~Js}aetyrIZ2JE!bVzi>@!HgI&yU)-C`bKyXw6Y8zM$TX^@=pikdrGOM$e-{IZo zdm30IZJSgB9$z;BZN2jDQV!Ik&ni9~p1j)q&;RWF`0CAnZT#2kSAV%azrFvf?0Wg5 zP)GhUI-UL%vvS4{7FYAXz#$dK_gCs`{A6@@t^XWf{FOgGZ2#x^?W@0h<^R5(o!TE> z{iQD`*sH$~1OIibm-@>&J=3rLa!w97`HNMl*!<1)EIt>>e63&?1}E#9wYTK!havD zFwD?wZWqSwB^2H|j0&W1(~z}om4z+z9ei@3QM-`$ zI*k{GUlx2^X>@mxa3KGl2{x!9!3&btBU_WN z66DhT`mN3)0b~Af&`0N2RP|4*UNx9viC{eb*Z5XzvA7T;FHN2V+jF>kR;;PX^ezTV zCzA!FcQTN4NFU>x@ zyJq4R=?2F$TcPgZ&U>_5_XhhiTgS!n-T~I3s~C!$6M+h?eI2~+3`OK zsr3*_(k3!qySTeJA1MxgR=$iBIHfom>{Ce29Qi^nnnE>N$q?g44tjMpue_ni0v@*c zHOX`pY>Wp&6-p}DpdVg6Fn_bm{qWTj;<3(a*EUVpe@}R+hDxEGqZ(*@AcxWb!HUNo{1pK$V_K7s*yK=Ez?PHR})~3R{0RMU<1B+RsENHeUk3sFb`F9IL z)@bCBWPP%>v86}BO_%z}%t!pCRd0ra?rv`%?HQMWuNvfkN1@~pWT-cAb(8lkv>|;2 z?}wY_*vGO|&yj{lvK^jd+8S@1i6hDmE5IJKrru z(197l!JWW7!aeA+bK!&y0*O_70OC-sjvjZ8j{AKt8q=oJ%mL(OuGbRA)xt+!&27(0 zLjUp*)~Y)hXm*^tjNva;-HBK+Xhl4TGg7JZX8fv8D8Ry>Gv*v;9qfMhWA6YI(ptu&ura#< zAIT2JR_bND|440fh>W-A__-f-zun&P!Urt{5B5uUNsnoFZS~X709F^70^&Q2D>S)J&?nkz--rJ#gT&m~e-gKaA`8 zuw(L7yuZBg%X_r=F3OGKz@fJg5~3PFep_Dfu4v0Y%pd8Nx>=CR26@R5y+JfwYTi|< z-yn(BD!z=h%l8GOl6+r8QHnfD(t#C8tQNjZA<2k68-f5G16JD^?Ua~L)86W zc-vP24Dogfc1_ zo@)+U@2c}sdn1Ulq1RPsXYOiN86RSnKXMt|#1dwbDKgYg8P zG}8+^o6bj2bL6?iW@k5lP1la-ojZ9o(p>++?@J>$$Rhc=`R{k$?(zcr_lw*6g%-?M z@1w?%kV_U0(n`sttXjh^YSM4*RL-LYv@<%~A-B)e)L#8;f;NR)W6K*8Qi>JDf*Gc4 zd#G@sJhFlwBUgz&A6-xB*I~&){%&s}Xf%o`1@I~&I+RkVvg5UDTY_QJRO2uko7 z2-v)kDB8+;E-ylU>pfXk)U&PT(=@r7MORK!&$D{d8!FZUUR{%j<^k5Myd7l#k*n0ddJw&jHODgjq4)CuCF!YS|X7j4=MEnHeSw z_*Dzqk83Nd=;nTZ_hiVh#t#g<8p=usBemU|@92P9u|NBFv+LSaxjnWzMQhs^gcPRs zms)>ad$gWML}{&kzM)nhrm6Hh#I9EF(Y)f{wtG_A1)YXh3y!sPBPP$>!7y_NYMaXq z2Wy=zKP=wBXKyG|3ZAAQ`FrTnUPaN?9qP)SW1?Ldt{^{f}n2t%mdA z4-sIG3j?0!S9%QvM&uq4EvswhmmfR=?qNc-G#tGmbMwXkx{kg0DE)Y)~Sf2dcit#lbp?EZ%$+8xl*w-_P^49gfL1| z$&65;*YVLkcgb_OxBvVeWIJz4rxCyL&mJg29SK{GBGN;poz4zxUyNyiPErfM{5m)q zystLjy!I8=a$#=!{zi~&ZtTN>$XL7k$n9>Ozs(m<@cRluX;MJQp&IKX_l~V2eXz!& zi~87tTdOBr6M8_HMaGGLna2J^pXl46+0dQX$~!b;JF%Y+U#BI;5Hn_RwS zqHin>Q@l&a?Ir$gOE~q&u}rW?hJtur4h;e4MsR5P<+A4qnzwH3ZrBRSJXAtuofJkP zPQ4e@_;Jlut)J&~l2RUj1auvKlF$|20?m+f6E@k{RAZQyt8^Y@RITDyz%K4@U0UNA z3H1R=xnVK$=8Jll!viE+kDI7350n9@6svgGt3GH~ig0R@bZdukrtyr6g3(7Jv-c0H zi_|9q0)~WYtKWmz4_;Drb2Z#JW844xq`=czR?L`tF_dDC>Tz{f!-=W_+Fr3WjV#|=XL_#}o7=0SZFSH0owT8T;E z0aHa|?Fu=WMF*J>#pnAgCqz+rWl!xc@~I8OSccw^iG;jb#$LtbM$9;dz`S`m?gYbPKHFGgXlmYwY!NyA(YK6N&B zALK8FKx?C~6Mpd8eju2eZ$Hd8qc;5~^|$2MlzWfSRmjYdV1owk^Xn3KM0n4J%U=z7 zW!X{&gD-l7pNjsqW>tyy#+(MAGx7&EtWFPcFKE@1lfi*Jh|?-*h$Ci=ny)3p$liQm<#A-|L4cgagve1T4F_tx<&n=bW!plxFXQ^Quc@YIE+%U*YK+%Up z(MS%)#=0|VSw6oooW=<#oN4<+ZG3ZG!*K!9<#tNnNmN9%1pwRqd&OATAvmmi^L_`q z$|Ji99;6K8N+x|2B88A(35HjY2r1$bml7`NA&MTW!0)~2QrHo)M;pS#qI%Yh&G!zr zhoM-T$xy8NlsT5Dh#`30`a04R?GM`9#&d}x#}nEE?H!pal0|uW(W7wZu|vjIwXu|= ze0kfb;yjTYdR|}wfGk1sIbp(nxvoRdTHjKK=x$BE!u+%=a=}JulSekj_b%UBDX0z{ zGxtQzhAg*t_7L+*2Eu|l7*~dE(Ai-ii|eoe%hc8xt~Y$A^##H z_%afL3<*J2XTHbZM+>weq(geJ_%o&w;V#(<&r=h`VYXGDFwB7=BZrsea5gr19IljDHLpFu3 zd*^S-i)u-Jn}9CHI#tLhG%ZjS5W>&=adb<7BhexekJO<0!(O#}a6FVd2%D~!z*Tl@ zl#4nylO1*CChHwa1S-rtUY77feY<(LteUMpYt`ubJ6QQ51FpbWi>lL?{x9?i*s~RP zouw5#Tr|*)M^wXDM^K8+B)r6z7qW1_IH+z{^e!_D&-FAYNW;s{*8WtgLwIgG7~En) zQ|Ird11z*S5dJy3yBj@u8lLe+e|WX+&7!%#o<2qiWU>qS5Wycn+)s`2Nf6>!u=RUZ z?l<6cDmO*AHGzubaw>g(9nK{OA&Xk@LCrH~ky8FqnnGU;+^!>st`iz%M5qduNoOLp zz3x$SjFtW9_^*qGEI!{p4^ykte3Q1*HB;Fqj?^R-^KJY18_qTJ zE~G<(MfrPw!1R)%?#{t+?{k9dc2H*RX~*(-(vN3x2RfCVDgPuczj15@*5dT(H*$6lD$M1H%^RNZ`O`Uh_z%K@7=FN ztIMdn3GETz8Cm+3!pC~@^ex8-?5(KUosX_C9-nKohUz0p!AV(5kVM*+cQ*8b!*N6pqKj3)w)N$jg%Ds!V6{yVkj#B+nvv={#Bi z!|Q272?Lu)r*jFQ>`&zO?oaY)_Oq+C3-VB!z$z?}+-vhBKc~6V4xcA%*_G6)Gyt+Y z{1#0Fj1*erUJL80_+ALrc$gx#FQN^BPa1zZ_rTZb+zmnKn4F0xG6AZ^Lq(G9xNG@) zxD;NSLXB*{Rd>;*bkhaM>4ktCTaTiky~R~8Xxlbm+=~0xE$VAQQdhp+Co$`tn$fyT z-OlQ%FQT;SPV*+o!J?rW_R_e+VpZN>h?iY>?Xl#%>9%3OE;XvvLI)nZp3vr-wX!?Z z4t7&&*7Jg)P#H!$S)0;O5dBelx6~Qn9vDvX*q_y^)$-h$XR@$$2t^d6p?dl&bQVGwCvW;h)!MKR`=Rv=3jJ21l{%U zMI|l--6@5sI*{sH!1FXq^h395R>9Q>)fychj%cVl@9vfs#A&0Frc* z%ezC$l$KMC5kCL7iYNO1OOQsW|20~hxl#rzwkHU4q< z4;(t-bRyKVy(zyWTS~KZO4`5woj2jr!y-=Yg(_k` zhDGdxb?azXBWB#olvC~MFqefU3^z0~D(89c^HyBRVsg~)!B~%hJ^8OhL{gQhjPUqI z0c2(q$?p4OvP7Z01f_Yq>3kJcWL*P|C>zhUFf^`e<15IV7+-H8JSq|l=>VtFQ=inV zZJLUcV5GEtPwhbnC26bHd=pjzn)_}0Sp=5GkOs&etsq34ov6x&iF(ov`i77(X zAuU>aL;{kKNhZF?J1f8EN8kG+bwnw#G+Cj$2aH|ag<0H2YING;`Y*MsC&Q0N$36y$ z&D9_0I-$?bHIQK9o$=<~{e^CHVt9XAa?>WGj&HQWD>K&B5;d&uY0@HH{tQlF+b~J| zNzp)llV+K3LW!z*r}ELrgePQly3|x0SlfaLKSdY(x5>NLdJGB%I7rTjku6Hj@JjQ? zr-iJ6Jo^$Xu%~EgQi4Sc!&=QXo^4qr!Mn5hD!Np$5lWR4RxUMg|3N7+!ti0`!PD*g^jP9T?_@RQa^dBBBNx#82wqkl{excFjgW|C2GLZ z#>2f6s*-#@v!$7N&gid=_Xe%48E7xAtEaQkQ&hvL1Rfk7?|dFqI>_K3-6N%=bMZE- zT*IBgc-e4KGK}%^HWqy>4A!<)60_23;`Uymu*0d<%2F!7s_p)vLnaCrR>u->2Rl~; z7uCfSq(?x4ambmY*W<}a=$Q!Gwp|{)BUJ&8L-#V_~osIh>`ZbgMGK9(6t!q zhFiMfFn^u`%JOEENqXv97=I2vLzXg^JNnw-TXx^ax8 zjq1yKXWd4LRwUWu-#VR$R)JzhR^#2>862M+2`PWjAIcwO8oD!-MU=3Cl&4a!Ivj|U z%7$-fb^pbCGzYBQ*;_HA?@w!OnKq0Gl1z~N2E?&8y`F3SUPG*ldB3OQ>*|7X4!&0= zT#AJ32x*LlQpIvoPTeu+UMwl`A2yKCx{{+9B1;2>Fc`PrdV))1Hv+uhjm}65)}*iI zbPDV=HRea0%A`Fx_GMUn_3NA9IrEHq@$5Fz6k;U^+!x{V+$)rPMb)ENNh<_Rgl!&q zNh?7m1M0^un77ZbZ(r3GL&~5a&Fe&1PR6S9Uo#!&)?zx##3@bNR3k>mD}t?DF~j2= zxze?Z^Q)8$^IE$8HZmaf>FIg4?%k6}kOF(i{Qttg%Fd z5Q3z?QqqsSCwc3~ZF0bhw~cuE;|P%=;82@sC=^G=O$kuTu$0r$__zC8O-cDYwtjmP z@S---p>KWv;G}=l9qx9~r)N!Narkthi6otEDd%$uq_}o3g-pA$ARL+ zP;6|cSZc?*cDut$TXpr-^GcI*$wp=i*QM;dw~s3nj9-+d*mlb7!$o8tihTrJ(NMef z=^3|h9dBA6O=#XhXTz@t{lgD#+kPKYypB_otE$Ca$%tl_!kDL@cRrxjYkkw2ovj*o zHog__cs)XV`hl^U5_8viOmw<3cijxFSXZ8qa0<4E$P53%G%Wsg(BJ*!LaSA8G>{lo zA4A{#^M?x(r>#G8-RY6Z%N`Q8rc;-n4QDNKDQwHq%=HFT=lT5P`jMe_xkKp0$~H7E zI#T{pH`4HVZ8xObtnim1>=2q(G3@ZZZ~ZmckM&um)j|Sht5y1P;U`D#Y>`0_evLtW z>RS~j#~r%~fUuPmdz2ps1Z@1^3~AvB+;Df>2=?02sq{xq@JXyrQic_?gV*1feZAU# zuXB3!h6;9Xo~1%59h5u2+-CMKH9j(XrcG>DpU%{KKZh88DzxgIxvFB}QNOj5ufBcb zw$t69FuVp6#Vb4fh758Qv7RIAxir+_F(0I8`nPgCi zF>F|f81oQY==4b~SK`QS&hD8)xz_z~FeEt5hM>pfh={im1%WXh-Zlck(8d)TJHJzI z;=m3RYeAn5aa`zc6X2Pf4b%XORSNrViN4LW0o7_K8rO6JX2>067VS!^Zb9|&<+1Wc zG#dt;0$ku+@RA~oAy{LhW-5XXGBx{Kn3Uv42-13|Yy?VW58!G@XNS;+PHI&xf@=P{ zs+;+pfYHg#9SX&B*bb&bFkeHkj^UU5i!A&;BukX0qnB_EJ)q^rWsH)qrNwuVm#k|p zhz|lCPbL-S$d+EEkvuW6a7d)YmCu+jeT6v|31G6nyH)5k*dD(&Hey8smx_B_tEUDTko)Oa$ zKuR?rNq~?D%ImqJOk&QeU=24o1rnQwE{>>i9QWz#Wpe*<059KEN9$yE<+FNqlJ}p>&vM5PxjuHmS26&mhb2lNk(o*)Yo&z z((WWmkP}se?bjdwL4aypUCpZf#3o&|@5?=kdA@VnPHQP60_jD458fY%__Y{2^!}Sx zI*IAzZ6)RImy*7{op4v)_68o^gT?gr>S?Ko&y20J^%cbfV?;;Tkd{)U)zDz=xPa0K z3EZ=6NVjwgDY3ILzn~NWO>RaHuLv8Pf6L5lKq{ne+C(bsV3uI0l5GgB-{!>c=M!ma zks6c43U&j*O1)IqFey{{EO@1}8*#XK9$C9OU-0sSb7e&BI#vpDmoOP|*Ct_6;jNg4pyKX?8&cHcn+I35e z7b`>J)mKg5gwx4KS)&{!644TgxB@f5eXg;VE}Ip?Ml*dWf42nAKgyR&28nnVrMg36 zNV!5tRM(}_WGHPcF~2NC=T!%;l8>TdFBG6tkPPcy***GopkP-0hTJcBIcrviSjIQ} zSp6Ilt1ZT=r^rV|q6zv42k82g?$!k*5Ar3}!UkMwD$RS_IGZhamE^Vw%;vM(X1z7B zt93or>6Zj}xez7={Gg>%?Pvn1uf#Tmg{vdqj_X(1of?7(AIJIk7=i7YXgOWuLI<}j zX#`5OsAuRyYP<4t3Lv`mJRRc6p)#(0x?mIt72DeNi@+s&SOyaL1O8IuoFQ}?3)NAC z*TZI}<3acE!|_Lj*Zf+>V;9_D81JRRdN!O?y|bH<5~j?oT#Zj7K=b!E{7J4hC2`q@&uTZuCpxnZYt=3j39WcY88rD_g0(-iO{X zYo#Mzv?2xSV7%6_W*Il)3ls4CqSbnPt;;uLo-Lt88h<0x&Ip3ehE;{A%~DIb?v0Nt zQP&Pl9{y}JOun}Q@ovYGWU(6(az5rM+93YYOhJi#%qy|;ZVg1dIboq*&A!SzWb^xb zbLTeAF$)=dDa;7hu!EL@cCsgqKAmzCa^m(TH@$gZN=-#q1I8b`j1Q1miS>;&kpLcI5Wy|XZs%&78wlR_{7X!N~2$29o(@VvF=zqHlJ>})LS|q-|&%rry}qjgdaCKP)fPhrxjl5R!W(v4G?ej84Hxm%?V!^?GdeC zn>l-FXIDV#t%1xV^WbwIS1ETmmcJc!gHE9R4RzfdRR>i3(vaCd>E+OPA3pqmRJLGZ=i#l^=1m zR~%o3{VR{DAecA{B+|%kV0n`mo~}`gbu_u>V|j{PF=FTgn6ysn_d=(pMGEO}d2q#< zUK$>U?r|Qb5G0P`x>b>Xp1zJG9K|NEi<*(Ncro)-W&!dQUX*Ip_UdeXqmUqspZq{$ zy1r}+@(;Qnc6NV_&FtG?d@(MIHt1G_$Ql_Ci@0jk@01YKGPDIsb@?V5+NDR8O&U+V z;`-isH(giVH>(HFZ^&&M*O$?vB(c!_dJ-C?(3+PXzIPo=t0k0e{SK^63)0i@gFM=X zEMw?j)6*mlrnwzXyAfGP4x>N>q0^NW1j3}EW7zyJIEUHevGlgf$+nk$a@hO3`JH5$ zN~YoEaafRF5p|mSTHV8sRj>2rP>KUzuYnTIshFK|SD{$)9lJ%Fgn zHj%bh=w0JO;ue4U31Kl*{I&64PnKT|-+jA5#fY#~U?C!A3*cGsqU`Ad$?E*u`JHRc z@+N8Fs`0G7cCKw!yF0rdyU2F`!(Op`Us9{xzL_AMs8wLeEf|+*7;rFWI#;fD6DE?^ z{;`nP)b3kwt+)g)l;u{!P(C@{KbYKnUFd}GunN-9tDZeA(F2>$rF+L$=;vXB{2za{yIpGD z1Nu>n!ReYUHBPit|CCBAB#XlfCQjb3599Nx^fu zncz_09!Ga)@BTcxncX~HlMTG0vNxHd;6C|}pMIL${C+>-%v_Hae-7tKXlVfGdaRoN z;J4mgA*6XW`tyJM{3qr)nqauwI$1omTveiQ+iub~D=Wsb5XP4z*j$CgGvK`eX#4uM zbjwQ?=MqP`e@3Fw(GI-d0&eEwW9-jn5iYYJgfTTX8p`~ z#4D_H=f|ji?X>nu{x8=&uMinQl$*jKeWg}BiLu|EGTyf&8vHMoH@pGjY1&U+9PWuT zcD?|9D2U{A0qmhl$aPHNj-j4qgQPpJ7t?F3_>7~0=w8*N{fp&$O|CeIOA%0q(%+QsusWl{K7DTE{m+Lv{w{;1-tbDRGC^ zrR13vo9XUEbEwm>Rs|Jm1or)hBf($mWL4^2)j4clc-r$3YHPlX=ko&!!}E*LE&aaJ z0p%)v2p^<>->bduVZS%*)&}BupTVNX>S~x$_FDT0Lxqx&L?SjJ(?Vp3f%F*icmJAB zp%W?uJbO5j?e^&Yi@jO|=dhiO;&H-{1);FwrGW zOVeU11b5y;T9<(xTthZ*>%SxY@|7D*O7cF(U1A@qJPCCUU%0A|i4k>4Zjxk}5JQN| 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 jZhy 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 gNV9Dv9KPA;%oz. + */ + +package org.photonvision.vision.frame.provider; + +import java.io.IOException; +import org.junit.jupiter.api.Test; +import org.opencv.imgcodecs.Imgcodecs; +import org.photonvision.common.configuration.CameraConfiguration; +import org.photonvision.common.util.TestUtils; +import org.photonvision.raspi.PicamJNI; +import org.photonvision.vision.camera.ZeroCopyPicamSource; + +public class AcceleratedPicamFrameProviderTest { + @Test + public void testGrabFrame() throws IOException { + PicamJNI.forceLoad(); + if (!PicamJNI.isSupported()) return; + + TestUtils.loadLibraries(); + + var frameProvider = + new AcceleratedPicamFrameProvider( + new ZeroCopyPicamSource.PicamSettables(new CameraConfiguration("f", "f", "f", "f"))); + + long lastTime = System.currentTimeMillis(); + for (int i = 0; i < 10; i++) { + var frame = frameProvider.get(); + System.out.println(frame.image.getMat().get(0, 0)[0]); + + long time = System.currentTimeMillis(); + System.out.println("dt (ms): " + (time - lastTime)); + lastTime = time; + } + var mat = frameProvider.get().image.getMat(); + Imgcodecs.imwrite("out.png", mat); + } +} diff --git a/photon-server/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java b/photon-server/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java index 1fbe2bade..5c4054d3e 100644 --- a/photon-server/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java +++ b/photon-server/src/test/java/org/photonvision/vision/pipeline/CirclePNPTest.java @@ -111,7 +111,9 @@ public class CirclePNPTest { var frameProvider = new FileFrameProvider( TestUtils.getPowercellImagePath(TestUtils.PowercellTestImages.kPowercell_test_6, false), - TestUtils.WPI2020Image.FOV); + TestUtils.WPI2020Image.FOV, + new Rotation2d(), + TestUtils.get2020LifeCamCoeffs(true)); CVPipelineResult pipelineResult = pipeline.run(frameProvider.get()); printTestResults(pipelineResult); diff --git a/photon-server/src/test/java/org/photonvision/vision/pipeline/PipelineProfilerTest.java b/photon-server/src/test/java/org/photonvision/vision/pipeline/PipelineProfilerTest.java index ddcdffec6..8e6f2bfcf 100644 --- a/photon-server/src/test/java/org/photonvision/vision/pipeline/PipelineProfilerTest.java +++ b/photon-server/src/test/java/org/photonvision/vision/pipeline/PipelineProfilerTest.java @@ -24,7 +24,7 @@ public class PipelineProfilerTest { @Test public void reflectiveProfile() { - long[] invalidNanos = new long[10]; + long[] invalidNanos = new long[20]; long[] validNanos = new long[PipelineProfiler.ReflectivePipeCount]; for (int i = 0; i < validNanos.length; i++) { @@ -34,8 +34,9 @@ public class PipelineProfilerTest { var invalidResult = PipelineProfiler.getReflectiveProfileString(invalidNanos); var validResult = PipelineProfiler.getReflectiveProfileString(validNanos); - Assertions.assertEquals("Invalid data", invalidResult); - Assertions.assertTrue(validResult.contains("Total: 153.0ms")); System.out.println(validResult); + + Assertions.assertEquals("Invalid data", invalidResult); + Assertions.assertTrue(validResult.contains("Total: 45.0ms")); } } diff --git a/photon-server/src/test/resources/hardware/HardwareConfig.json b/photon-server/src/test/resources/hardware/HardwareConfig.json index acfc790fd..f6e92332e 100644 --- a/photon-server/src/test/resources/hardware/HardwareConfig.json +++ b/photon-server/src/test/resources/hardware/HardwareConfig.json @@ -6,9 +6,6 @@ "statusRGBPins" : [-1, -1, -1], "ledSetCommand" : "", "ledsCanDim" : true, - "ledPWMRange" : [0, 100], - "ledPWMSetRange" : "", - "ledPWMFrequency" : 800, "ledDimCommand" : "echo 10", "ledBlinkCommand" : "echo 10", "cpuTempCommand" : "echo 10", diff --git a/photon-server/versioningHelper.gradle b/photon-server/versioningHelper.gradle index 017239f9a..5c37dbc37 100644 --- a/photon-server/versioningHelper.gradle +++ b/photon-server/versioningHelper.gradle @@ -28,7 +28,6 @@ task writeCurrentVersionJava { File versionFile = new File(Path.of("$projectDir", "src", "main", "java", "org", "photonvision", "PhotonVersion.java") .toAbsolutePath().toString()) versionFile.delete() - boolean success = versionFile.createNewFile() versionFile << "package org.photonvision;\n" + "\n" + "/*\n" + @@ -44,4 +43,4 @@ task writeCurrentVersionJava { "}" } -build.dependsOn writeCurrentVersionJava \ No newline at end of file +build.dependsOn writeCurrentVersionJava