From 6a5a0d7d09dbf39c93b311733cbbb530d7414a03 Mon Sep 17 00:00:00 2001 From: Richard Peter Date: Wed, 9 Jan 2013 17:55:05 -0600 Subject: [PATCH] Issue #1408: Merge 13.1.2-6 into development Former-commit-id: 029ebaa63a701dad33a5d370c0accf61c8bcc657 [formerly 7f8ad9de743a19d21a6784fa7563a88c6bdd4d3c] Former-commit-id: 328be6ac2ba7c12844f1a3177b8de88774f0d05c --- .../etc/alertViz/configurations/Default.xml | 15 +- .../etc/gfe/userPython/gfeConfig/gfeConfig.py | 3 +- .../cave/etc/menus/ncepHydro/nco/baseNCO.xml | 2 +- .../cave/etc/menus/upperair/baseJapan.xml | 4 +- ...aytheon.uf.viz.collaboration.comm.xmpp.ecl | 0 ...com.raytheon.uf.viz.collaboration.comm.ecl | 0 ....raytheon.uf.viz.collaboration.core.ui.ecl | 0 ....raytheon.uf.viz.collaboration.display.ecl | 0 ....raytheon.uf.viz.collaboration.feature.ecl | 0 ...aytheon.uf.viz.collaboration.pointdata.ecl | 0 ...n.uf.viz.collaboration.product.feature.ecl | 0 ....raytheon.uf.viz.collaboration.product.ecl | 0 ...om.raytheon.uf.viz.collaboration.radar.ecl | 0 .../com.raytheon.uf.viz.collaboration.ui.ecl | 0 .../raytheon/uf/viz/core/IGraphicsTarget.java | 2 +- .../derivedParameters/definitions/DpD.xml | 2 +- .../derivedParameters/definitions/DpT.xml | 2 +- .../derivedParameters/definitions/DpTmean.xml | 2 +- .../derivedParameters/definitions/DpTsprd.xml | 2 +- .../com.raytheon.uf.viz.drawing.ecl | 0 ...com.raytheon.uf.viz.kml.export.feature.ecl | 0 .../com.raytheon.uf.viz.kml.export.ecl | 0 .../fog/ui/dialogs/FogZoneTableDlg.java | 4 + .../com.raytheon.uf.viz.npp.crimss.ecl | 0 .../com.raytheon.uf.viz.remote.graphics.ecl | 0 .../com.raytheon.uf.viz.truecolor.gl.ecl | 0 .../com.raytheon.uf.viz.truecolor.ecl | 0 .../common/stormtrack/StormTrackState.java | 29 ++ cave/com.raytheon.viz.gfe/icons/isc1.gif | Bin 0 -> 305 bytes .../viz/gfe/actions/ShowISCGridsAction.java | 66 ++- .../viz/gfe/dialogs/ProductScriptsDialog.java | 37 +- .../formatterlauncher/StyledTextComp.java | 89 ++-- .../pointdatacontrol/PointDataControlDlg.java | 3 + .../timeseries/TimeSeriesDisplayDlg.java | 10 +- .../hydrobase/dialogs/CountyZoneUgcDlg.java | 9 + .../datamanager/CountyZoneUgcDataManager.java | 3 +- .../mpe/ui/actions/OtherPrecipOptions.java | 8 + .../raytheon/viz/mpe/util/DailyQcUtils.java | 7 + .../alarmalert/dialogs/NewAlarmDlg.java | 86 +++- .../alarmalert/util/AlarmAlertFunctions.java | 392 +++++++++++++++++- .../dialogs/AWIPSHeaderBlockDlg.java | 130 ++++-- .../texteditor/dialogs/TextEditorDialog.java | 76 ++-- .../localization/menus/volume/index.xml | 4 +- .../localization/menus/xml/fieldsMenus.xml | 4 +- .../raytheon/viz/warngen/gis/PolygonUtil.java | 33 +- .../viz/warngen/gui/WarngenLayer.java | 39 +- .../viz/warngen/gui/WarngenUIState.java | 147 +++++++ .../viz/warngen/template/TemplateRunner.java | 51 ++- cots/com.google.guava/com.google.guava.ecl | 0 .../de.micromata.opengis.kml.ecl | 0 .../org.apache.tomcat.nativ.ecl | 0 cots/org.geotools/xml-apis-1.0.b2.jar | Bin 0 -> 109318 bytes cots/org.geotools/xml-apis-xerces-2.7.1.jar | Bin 0 -> 194205 bytes .../org.jivesoftware.openfire.ecl | 0 edexOsgi/build.edex/build.xml | 4 - .../base/ffmp/FFMPSourceConfig.xml | 42 +- .../plugin/gfe/config/GFESiteActivation.java | 36 +- .../gfe/config/IFPServerConfigManager.java | 28 +- .../GfeMissingConfigurationException.java | 59 +++ .../gfe/server/database/D2DGridDatabase.java | 2 +- .../plugin/gfe/svcbackup/SvcBackupUtil.java | 4 +- .../edex/plugin/shef/ShefSeparator.java | 8 +- .../edex/plugin/shef/database/PostTables.java | 11 +- .../edex/plugin/shef/ohdlib/GagePP.java | 8 + ...ytheon.uf.common.dataplugin.npp.crimss.ecl | 0 .../dataplugin/scan/data/ModelData.java | 8 +- .../uf/common/monitor/xml/SourceXML.java | 7 +- .../uf/edex/dat/utils/FreezingLevel.java | 132 +++++- .../com.raytheon.uf.edex.npp.feature.ecl | 0 .../edex/ohd/pproc/MpeRUCFreezingLevel.java | 38 +- ...com.raytheon.uf.edex.plugin.npp.crimss.ecl | 0 .../com.raytheon.uf.edex.plugin.npp.ecl | 0 .../uf/edex/site/SiteAwareRegistry.java | 37 +- .../cli/src/sendgfemessage/sendGfeMessage.py | 11 +- .../build.openfire.plugin.ecl | 0 .../build.wes2bridge.utility.ecl | 0 ...ire.plugin.configuration.collaboration.ecl | 0 ...ytheon.openfire.plugin.detailedfeedlog.ecl | 0 .../com.raytheon.wes2bridge.common.ecl | 0 .../com.raytheon.wes2bridge.configuration.ecl | 0 .../com.raytheon.wes2bridge.datalink.ecl | 0 .../com.raytheon.wes2bridge.manager.ecl | 0 ...om.raytheon.wes2bridge.utility.feature.ecl | 0 ...om.raytheon.wes2bridge.utility.product.ecl | 0 rpms/awips2.core/Installer.ldm/component.spec | 2 +- .../patch/etc/pqact.conf.template | 2 +- 86 files changed, 1371 insertions(+), 329 deletions(-) create mode 100644 cave/com.raytheon.uf.viz.collaboration.comm.xmpp/com.raytheon.uf.viz.collaboration.comm.xmpp.ecl create mode 100644 cave/com.raytheon.uf.viz.collaboration.comm/com.raytheon.uf.viz.collaboration.comm.ecl create mode 100644 cave/com.raytheon.uf.viz.collaboration.core.ui/com.raytheon.uf.viz.collaboration.core.ui.ecl create mode 100644 cave/com.raytheon.uf.viz.collaboration.display/com.raytheon.uf.viz.collaboration.display.ecl create mode 100644 cave/com.raytheon.uf.viz.collaboration.feature/com.raytheon.uf.viz.collaboration.feature.ecl create mode 100644 cave/com.raytheon.uf.viz.collaboration.pointdata/com.raytheon.uf.viz.collaboration.pointdata.ecl create mode 100644 cave/com.raytheon.uf.viz.collaboration.product.feature/com.raytheon.uf.viz.collaboration.product.feature.ecl create mode 100644 cave/com.raytheon.uf.viz.collaboration.product/com.raytheon.uf.viz.collaboration.product.ecl create mode 100644 cave/com.raytheon.uf.viz.collaboration.radar/com.raytheon.uf.viz.collaboration.radar.ecl create mode 100644 cave/com.raytheon.uf.viz.collaboration.ui/com.raytheon.uf.viz.collaboration.ui.ecl create mode 100644 cave/com.raytheon.uf.viz.drawing/com.raytheon.uf.viz.drawing.ecl create mode 100644 cave/com.raytheon.uf.viz.kml.export.feature/com.raytheon.uf.viz.kml.export.feature.ecl create mode 100644 cave/com.raytheon.uf.viz.kml.export/com.raytheon.uf.viz.kml.export.ecl create mode 100644 cave/com.raytheon.uf.viz.npp.crimss/com.raytheon.uf.viz.npp.crimss.ecl create mode 100644 cave/com.raytheon.uf.viz.remote.graphics/com.raytheon.uf.viz.remote.graphics.ecl create mode 100644 cave/com.raytheon.uf.viz.truecolor.gl/com.raytheon.uf.viz.truecolor.gl.ecl create mode 100644 cave/com.raytheon.uf.viz.truecolor/com.raytheon.uf.viz.truecolor.ecl create mode 100644 cave/com.raytheon.viz.gfe/icons/isc1.gif create mode 100644 cots/com.google.guava/com.google.guava.ecl create mode 100644 cots/de.micromata.opengis.kml/de.micromata.opengis.kml.ecl create mode 100644 cots/org.apache.tomcat.nativ/org.apache.tomcat.nativ.ecl create mode 100644 cots/org.geotools/xml-apis-1.0.b2.jar create mode 100644 cots/org.geotools/xml-apis-xerces-2.7.1.jar create mode 100644 cots/org.jivesoftware.openfire/org.jivesoftware.openfire.ecl create mode 100644 edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/exception/GfeMissingConfigurationException.java create mode 100644 edexOsgi/com.raytheon.uf.common.dataplugin.npp.crimss/com.raytheon.uf.common.dataplugin.npp.crimss.ecl create mode 100644 edexOsgi/com.raytheon.uf.edex.npp.feature/com.raytheon.uf.edex.npp.feature.ecl create mode 100644 edexOsgi/com.raytheon.uf.edex.plugin.npp.crimss/com.raytheon.uf.edex.plugin.npp.crimss.ecl create mode 100644 edexOsgi/com.raytheon.uf.edex.plugin.npp/com.raytheon.uf.edex.plugin.npp.ecl create mode 100644 javaUtilities/build.openfire.plugin/build.openfire.plugin.ecl create mode 100644 javaUtilities/build.wes2bridge.utility/build.wes2bridge.utility.ecl create mode 100644 javaUtilities/com.raytheon.openfire.plugin.configuration.collaboration/com.raytheon.openfire.plugin.configuration.collaboration.ecl create mode 100644 javaUtilities/com.raytheon.openfire.plugin.detailedfeedlog/com.raytheon.openfire.plugin.detailedfeedlog.ecl create mode 100644 javaUtilities/com.raytheon.wes2bridge.common/com.raytheon.wes2bridge.common.ecl create mode 100644 javaUtilities/com.raytheon.wes2bridge.configuration/com.raytheon.wes2bridge.configuration.ecl create mode 100644 javaUtilities/com.raytheon.wes2bridge.datalink/com.raytheon.wes2bridge.datalink.ecl create mode 100644 javaUtilities/com.raytheon.wes2bridge.manager/com.raytheon.wes2bridge.manager.ecl create mode 100644 javaUtilities/com.raytheon.wes2bridge.utility.feature/com.raytheon.wes2bridge.utility.feature.ecl create mode 100644 javaUtilities/com.raytheon.wes2bridge.utility.product/com.raytheon.wes2bridge.utility.product.ecl diff --git a/cave/build/static/common/cave/etc/alertViz/configurations/Default.xml b/cave/build/static/common/cave/etc/alertViz/configurations/Default.xml index dae7665e1d..949d3dac6e 100644 --- a/cave/build/static/common/cave/etc/alertViz/configurations/Default.xml +++ b/cave/build/static/common/cave/etc/alertViz/configurations/Default.xml @@ -5,7 +5,8 @@ 12/26/2011 Xiaochuan DR14236 (trac 11710) request to fix SCAN Alert Visualization BASE configuring file. Changed true or false setting on popup, text, blink and color items followed the A1 configuring master.gcf file. - 01/31/2012 dyninaj DR14427 added category NDFD + 01/31/2012 dyninaj DR14427 added category NDFD + 11/30/2012 jzeng DR14016 update GFE configuration --> @@ -125,12 +126,12 @@ - - - - - - + + + + + + diff --git a/cave/build/static/common/cave/etc/gfe/userPython/gfeConfig/gfeConfig.py b/cave/build/static/common/cave/etc/gfe/userPython/gfeConfig/gfeConfig.py index c5cad4ba33..8f3a42adc9 100644 --- a/cave/build/static/common/cave/etc/gfe/userPython/gfeConfig/gfeConfig.py +++ b/cave/build/static/common/cave/etc/gfe/userPython/gfeConfig/gfeConfig.py @@ -30,8 +30,7 @@ # Heading #----------------------------------------------------------------------------- -#import siteConfig -#GFESUITE_HOME = siteConfig.GFESUITE_HOME +GFESUITE_HOME = "/awips2/GFESuite" GFESUITE_PRDDIR = "/tmp/products" yes = True no = False diff --git a/cave/build/static/common/cave/etc/menus/ncepHydro/nco/baseNCO.xml b/cave/build/static/common/cave/etc/menus/ncepHydro/nco/baseNCO.xml index 00b8a3c466..81c8cd1199 100644 --- a/cave/build/static/common/cave/etc/menus/ncepHydro/nco/baseNCO.xml +++ b/cave/build/static/common/cave/etc/menus/ncepHydro/nco/baseNCO.xml @@ -42,7 +42,7 @@ - + diff --git a/cave/com.raytheon.uf.viz.collaboration.comm.xmpp/com.raytheon.uf.viz.collaboration.comm.xmpp.ecl b/cave/com.raytheon.uf.viz.collaboration.comm.xmpp/com.raytheon.uf.viz.collaboration.comm.xmpp.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.collaboration.comm/com.raytheon.uf.viz.collaboration.comm.ecl b/cave/com.raytheon.uf.viz.collaboration.comm/com.raytheon.uf.viz.collaboration.comm.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.collaboration.core.ui/com.raytheon.uf.viz.collaboration.core.ui.ecl b/cave/com.raytheon.uf.viz.collaboration.core.ui/com.raytheon.uf.viz.collaboration.core.ui.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.collaboration.display/com.raytheon.uf.viz.collaboration.display.ecl b/cave/com.raytheon.uf.viz.collaboration.display/com.raytheon.uf.viz.collaboration.display.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.collaboration.feature/com.raytheon.uf.viz.collaboration.feature.ecl b/cave/com.raytheon.uf.viz.collaboration.feature/com.raytheon.uf.viz.collaboration.feature.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.collaboration.pointdata/com.raytheon.uf.viz.collaboration.pointdata.ecl b/cave/com.raytheon.uf.viz.collaboration.pointdata/com.raytheon.uf.viz.collaboration.pointdata.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.collaboration.product.feature/com.raytheon.uf.viz.collaboration.product.feature.ecl b/cave/com.raytheon.uf.viz.collaboration.product.feature/com.raytheon.uf.viz.collaboration.product.feature.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.collaboration.product/com.raytheon.uf.viz.collaboration.product.ecl b/cave/com.raytheon.uf.viz.collaboration.product/com.raytheon.uf.viz.collaboration.product.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.collaboration.radar/com.raytheon.uf.viz.collaboration.radar.ecl b/cave/com.raytheon.uf.viz.collaboration.radar/com.raytheon.uf.viz.collaboration.radar.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/com.raytheon.uf.viz.collaboration.ui.ecl b/cave/com.raytheon.uf.viz.collaboration.ui/com.raytheon.uf.viz.collaboration.ui.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.core/src/com/raytheon/uf/viz/core/IGraphicsTarget.java b/cave/com.raytheon.uf.viz.core/src/com/raytheon/uf/viz/core/IGraphicsTarget.java index 462da293dc..8817f78d59 100644 --- a/cave/com.raytheon.uf.viz.core/src/com/raytheon/uf/viz/core/IGraphicsTarget.java +++ b/cave/com.raytheon.uf.viz.core/src/com/raytheon/uf/viz/core/IGraphicsTarget.java @@ -810,7 +810,7 @@ public interface IGraphicsTarget extends IImagingExtension { public IView getView(); /** - * /** Use drawStrings(DrawableString parameters) + * Use drawStrings(DrawableString parameters) */ @Deprecated public abstract void drawString(IFont font, String text, double x, diff --git a/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpD.xml b/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpD.xml index 004e6dd514..1b2be38d53 100644 --- a/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpD.xml +++ b/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpD.xml @@ -18,7 +18,7 @@ See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for further_licensing_information. --> - + diff --git a/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpT.xml b/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpT.xml index ff51ccef0b..cd075c5df0 100644 --- a/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpT.xml +++ b/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpT.xml @@ -18,7 +18,7 @@ See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for further_licensing_information. --> - + diff --git a/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpTmean.xml b/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpTmean.xml index 167ce9274d..ec41b25c5b 100644 --- a/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpTmean.xml +++ b/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpTmean.xml @@ -18,7 +18,7 @@ See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for further_licensing_information. --> - + diff --git a/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpTsprd.xml b/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpTsprd.xml index 4ad43d1288..f827ba8762 100644 --- a/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpTsprd.xml +++ b/cave/com.raytheon.uf.viz.derivparam/localization/derivedParameters/definitions/DpTsprd.xml @@ -18,7 +18,7 @@ See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for further_licensing_information. --> - + diff --git a/cave/com.raytheon.uf.viz.drawing/com.raytheon.uf.viz.drawing.ecl b/cave/com.raytheon.uf.viz.drawing/com.raytheon.uf.viz.drawing.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.kml.export.feature/com.raytheon.uf.viz.kml.export.feature.ecl b/cave/com.raytheon.uf.viz.kml.export.feature/com.raytheon.uf.viz.kml.export.feature.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.kml.export/com.raytheon.uf.viz.kml.export.ecl b/cave/com.raytheon.uf.viz.kml.export/com.raytheon.uf.viz.kml.export.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.monitor.fog/src/com/raytheon/uf/viz/monitor/fog/ui/dialogs/FogZoneTableDlg.java b/cave/com.raytheon.uf.viz.monitor.fog/src/com/raytheon/uf/viz/monitor/fog/ui/dialogs/FogZoneTableDlg.java index 6a6e694085..9f9a5b10fa 100644 --- a/cave/com.raytheon.uf.viz.monitor.fog/src/com/raytheon/uf/viz/monitor/fog/ui/dialogs/FogZoneTableDlg.java +++ b/cave/com.raytheon.uf.viz.monitor.fog/src/com/raytheon/uf/viz/monitor/fog/ui/dialogs/FogZoneTableDlg.java @@ -56,6 +56,7 @@ import com.raytheon.uf.viz.monitor.ui.dialogs.ZoneTableDlg; * Jun 16, 2012 14386 zhao Modified the notify method * Oct 30, 2012 skorolev Changed HashMap to Map * Nov 11, 2012 1297 skorolev Added initiateProdArray + * Dec 03, 2012 15216/15639 zhao fixed a bug related to Link-to-Frame * Dec 7, 2012 #1351 skorolev Changes for non-blocking dialogs. * * @@ -137,6 +138,9 @@ public class FogZoneTableDlg extends ZoneTableDlg { if (date != null) { Date nominalTime = date; ObMultiHrsReports obData = fog.getObData(); + if (!isLinkedToFrame()) { + nominalTime = obData.getLatestNominalTime(); + } FogDataGenerator fdg = new FogDataGenerator(); Map fogAlgCellType = fdg.getAlgCellTypes(fog .getAlgorithmData(nominalTime)); diff --git a/cave/com.raytheon.uf.viz.npp.crimss/com.raytheon.uf.viz.npp.crimss.ecl b/cave/com.raytheon.uf.viz.npp.crimss/com.raytheon.uf.viz.npp.crimss.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.remote.graphics/com.raytheon.uf.viz.remote.graphics.ecl b/cave/com.raytheon.uf.viz.remote.graphics/com.raytheon.uf.viz.remote.graphics.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.truecolor.gl/com.raytheon.uf.viz.truecolor.gl.ecl b/cave/com.raytheon.uf.viz.truecolor.gl/com.raytheon.uf.viz.truecolor.gl.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.uf.viz.truecolor/com.raytheon.uf.viz.truecolor.ecl b/cave/com.raytheon.uf.viz.truecolor/com.raytheon.uf.viz.truecolor.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cave/com.raytheon.viz.awipstools/src/com/raytheon/viz/awipstools/common/stormtrack/StormTrackState.java b/cave/com.raytheon.viz.awipstools/src/com/raytheon/viz/awipstools/common/stormtrack/StormTrackState.java index e2c9ef02dc..725a9f5e1e 100644 --- a/cave/com.raytheon.viz.awipstools/src/com/raytheon/viz/awipstools/common/stormtrack/StormTrackState.java +++ b/cave/com.raytheon.viz.awipstools/src/com/raytheon/viz/awipstools/common/stormtrack/StormTrackState.java @@ -44,6 +44,7 @@ import com.vividsolutions.jts.geom.Point; * has been created to calculate the pivot * indexes. * 10-27-2010 #6964 bkowal Added a public class member for the LineStyle. + * 11/29/2012 15571 Qinglu Lin Added compuateCurrentStormCenter(); * * * @@ -189,4 +190,32 @@ public class StormTrackState { /** Set if you the duration needs to be calculated from the end time */ public Calendar endTime = null; + + /** Compute the coordinate of the storm center at the time defined by dataTime via interpolation. */ + public boolean compuateCurrentStormCenter(Coordinate coord, DataTime dateTime) { + if (futurePoints == null) return false; + int length = futurePoints.length; + if (length <=1) return false; + DataTime[] dt = new DataTime[2]; + dt[0] = futurePoints[0].time; + dt[1] = futurePoints[length-1].time; + Coordinate[] cs = new Coordinate[] {futurePoints[0].coord,futurePoints[length-1].coord}; + boolean crossed180 = false; + if (cs[0].x>0 && cs[1].x<0 || cs[0].x<0 && cs[1].x>0) { + crossed180 = true; + if (cs[0].x>0) + cs[0].x = -360. + cs[0].x; + if (cs[1].x>0) + cs[1].x = -360. + cs[1].x; + } + StormTrackUtil trackUtil = new StormTrackUtil(); + coord.x = cs[0].x + (cs[1].x-cs[0].x)/trackUtil.timeBetweenDataTimes(dt[1],dt[0]) + *trackUtil.timeBetweenDataTimes(dateTime,dt[0]); + coord.y = cs[0].y + (cs[1].y-cs[0].y)/trackUtil.timeBetweenDataTimes(dt[1],dt[0]) + *trackUtil.timeBetweenDataTimes(dateTime,dt[0]); + if (crossed180) + if (coord.x<-180.0) + coord.x = 360. + coord.x; + return true; + } } diff --git a/cave/com.raytheon.viz.gfe/icons/isc1.gif b/cave/com.raytheon.viz.gfe/icons/isc1.gif new file mode 100644 index 0000000000000000000000000000000000000000..b8b37a03c06463a17a8cce8e2daede99f19443f9 GIT binary patch literal 305 zcmZ?wbhEHb6k`x$Xpv)J;D}^kPh{WW90E;WY1*eie%ymWa5fv;`RS#od3$H>6LT+?epQ! zuG)UQtqMen|3saOQWHy3QxwWGOEMHfGEx=XJ$(Zh6o0ZXaxus==r8~Q$T1A8Qxnws zQZnadtXk%4G?jUYkMOr?0+VHXIZ}oD12SIp>P_nPn4W0R7I64Q;e{S45hrG@rJ4%7 zo}EGuXSKTp9W8uTB&XiI@UE+^gs9blMT;D)0tEQjdAu~a{R4d3)XVvDx)|*>c!DG+ zIPow^a%M`hDhW@M6fKrx^YK;TSYxhi!n{s$p0=9FR?WpbRC#ypUcYI-GJ_(6H2~;; BR=5BF literal 0 HcmV?d00001 diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/actions/ShowISCGridsAction.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/actions/ShowISCGridsAction.java index 9815ede240..f3e0eef932 100644 --- a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/actions/ShowISCGridsAction.java +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/actions/ShowISCGridsAction.java @@ -20,13 +20,19 @@ package com.raytheon.viz.gfe.actions; +import com.raytheon.viz.gfe.Activator; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; +import org.eclipse.jface.resource.ImageDescriptor; import com.raytheon.viz.gfe.core.msgs.Message; import com.raytheon.viz.gfe.core.msgs.ShowISCGridsMsg; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.ToolItem; + /** * Action to show the ISC grids * @@ -37,20 +43,70 @@ import com.raytheon.viz.gfe.core.msgs.ShowISCGridsMsg; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * 07/20/09 1995 bphillip Initial release - * + * 12/06/12 DR 15574 jzeng Change the image of + * the icon when it is activated * * * @author bphillip * @version 1 */ public class ShowISCGridsAction extends AbstractHandler { - + /* + * non-active Image + */ + private static Image orgImg = null; + /* + * active Image + */ + private static Image actImg = null; + /* + * ImageDescriptor + */ + private static ImageDescriptor id = null; + /* + * Tool item + */ + private static ToolItem ti = null; + @Override public Object execute(ExecutionEvent arg0) throws ExecutionException { - boolean current = Message.inquireLastMessage(ShowISCGridsMsg.class) - .show(); + boolean current = Message.inquireLastMessage(ShowISCGridsMsg.class).show(); + /* + * Get toolItem + */ + if(ti == null) { + if (arg0.getTrigger() instanceof Event) { + Event e = (Event) arg0.getTrigger(); + if ( e.widget instanceof ToolItem) { + ti = (ToolItem) e.widget; + } + } + } + + /* + * Get Image when it is not activated + */ + if (orgImg == null) orgImg = ti.getImage(); + + /* + * Get Image when it is activated + */ + if ( actImg == null ){ + if (id == null) { + id = Activator.imageDescriptorFromPlugin( + Activator.PLUGIN_ID, "icons/isc1.gif" ); + } + actImg = id.createImage(); + } + + /* + * Change the image when it is active and + * change it back when it is not activated + */ + if (!current) ti.setImage(actImg); + else ti.setImage(orgImg); + new ShowISCGridsMsg(!current).send(); return null; } - } diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/ProductScriptsDialog.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/ProductScriptsDialog.java index 9b7d4e0fb7..e61b73d7b7 100644 --- a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/ProductScriptsDialog.java +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/ProductScriptsDialog.java @@ -1,19 +1,19 @@ /** * This software was developed and / or modified by Raytheon Company, * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * + * * U.S. EXPORT CONTROLLED TECHNICAL DATA * This software product contains export-restricted data whose * export/transfer/disclosure is restricted by U.S. law. Dissemination * to non-U.S. persons whether in the United States or abroad requires * an export license or other authorization. - * + * * Contractor Name: Raytheon Company * Contractor Address: 6825 Pine Street, Suite 340 * Mail Stop B8 * Omaha, NE 68106 * 402.291.0100 - * + * * See the AWIPS II Master Rights File ("Master Rights File.pdf") for * further licensing information. **/ @@ -45,6 +45,7 @@ import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.common.time.SimulatedTime; +import com.raytheon.uf.common.time.TimeRange; import com.raytheon.uf.viz.core.VizApp; import com.raytheon.viz.gfe.Activator; import com.raytheon.viz.gfe.core.DataManager; @@ -57,7 +58,7 @@ import com.raytheon.viz.ui.widgets.ToggleSelectList; /** * The product generation scripts dialog. - * + * *
  * SOFTWARE HISTORY
  * Date         Ticket#    Engineer    Description
@@ -65,10 +66,12 @@ import com.raytheon.viz.ui.widgets.ToggleSelectList;
  * 	Mar 7, 2008			   Eric Babin   Initial Creation
  * Oct 27, 2012 1287       rferrel     Code cleanup for non-blocking dialog.
  * Oct 25, 2012 1287       rferrel     Code changes for non-blocking PublishDialog.
+ * Nov 30, 2012 15575      ryu         Added variable replacement for SelectedStart,
+ *                                     SelectedEnd, and home
  * Nov 13, 2012 1298       rferrel     Code changes for non-blocking UserEntryDialog.
- * 
+ *
  * 
- * + * * @author ebabin * @version 1.0 */ @@ -85,6 +88,8 @@ public class ProductScriptsDialog extends CaveJFACEDialog { private Map scriptDict; + private String gfeHome; + private String prddir; private ToggleSelectList scriptsList; @@ -104,6 +109,8 @@ public class ProductScriptsDialog extends CaveJFACEDialog { this.setShellStyle(SWT.DIALOG_TRIM | SWT.MODELESS); this.dataManager = dataManager; + gfeHome = Activator.getDefault().getPreferenceStore() + .getString("GFESUITE_HOME"); prddir = Activator.getDefault().getPreferenceStore() .getString("GFESUITE_PRDDIR"); scripts = Activator.getDefault().getPreferenceStore() @@ -139,7 +146,7 @@ public class ProductScriptsDialog extends CaveJFACEDialog { } /** - * + * */ private void runScripts() { int[] idxs = scriptsList.getSelectionIndices(); @@ -171,6 +178,15 @@ public class ProductScriptsDialog extends CaveJFACEDialog { .getSpatialEditorTime(); Date seEnd = new Date(seStart.getTime() + 60 * 1000); + Date selStart = new Date(0); + Date selEnd = new Date(0); + TimeRange selectedTR = dataManager.getParmOp() + .getSelectionTimeRange(); + if (selectedTR != null) { + selStart = selectedTR.getStart(); + selEnd = selectedTR.getEnd(); + } + // The following variables are replaced by known values: cmd = cmd.replace("{host}", hostParts[0]); cmd = cmd.replace("{port}", hostParts[1]); @@ -178,8 +194,13 @@ public class ProductScriptsDialog extends CaveJFACEDialog { cmd = cmd.replace("{productDB}", productDB.toString()); cmd = cmd.replace("{SEstart}", gmtTime.format(seStart)); cmd = cmd.replace("{SEend}", gmtTime.format(seEnd)); + cmd = cmd.replace("{SelectedStart}", + gmtTime.format(selStart)); + cmd = cmd.replace("{SelectedEnd}", + gmtTime.format(selEnd)); cmd = cmd.replace("{time}", curLocalTime); cmd = cmd.replace("{ztime}", curGMTTime); + cmd = cmd.replace("{home}", gfeHome); cmd = cmd.replace("{prddir}", prddir); // The user is prompted to enter the value with which to replace @@ -404,7 +425,7 @@ public class ProductScriptsDialog extends CaveJFACEDialog { /* * (non-Javadoc) - * + * * @see * org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets * .Shell) diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/StyledTextComp.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/StyledTextComp.java index ee6beeec5f..9829f7ba9e 100644 --- a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/StyledTextComp.java +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/StyledTextComp.java @@ -23,8 +23,10 @@ import static com.raytheon.viz.gfe.product.StringUtil.stringJoin; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -76,6 +78,7 @@ import com.raytheon.viz.gfe.textformatter.TextFmtParserUtil; * 19 Feb 2010 4132 ryu Product correction. * 30 Jul 2010 6719 jnjanga Placed cursor at the end of inserted CTA * 26 Sep 2012 15423 ryu Avoid resetting text when possible. + * 03 Dec 2012 15620 ryu Unlock framed cities list for editing. * * * @@ -141,6 +144,10 @@ public class StyledTextComp extends Composite { private boolean highlight = Activator.getDefault().getPreferenceStore() .getBoolean("HighlightFramingCodes"); + private boolean newProduct = false; + + private Set unlockCitySegs; + private boolean autoWrapMode; private int wrapColumn = 80; // TODO: get from external @@ -312,6 +319,7 @@ public class StyledTextComp extends Composite { * The product text. */ public void setProductText(String text) { + newProduct = true; textEditorST.setText(EMPTY); textEditorST.setStyleRange(null); parseProductText(text); @@ -320,6 +328,7 @@ public class StyledTextComp extends Composite { lockText(); findFramingCodes(); textEditorST.getVerticalBar().setSelection(0); + newProduct = false; } /** @@ -339,10 +348,8 @@ public class StyledTextComp extends Composite { * Lock the parts of the text that needs to be uneditable. */ private void lockText() { - int strLen = 0; int startLine = 0; int endLine = 0; - StyleRange sr; // NOTE: For the endline variables we need to exclude the last line // in the for loop because the the parsed index is at line x @@ -360,71 +367,70 @@ public class StyledTextComp extends Composite { if (ciBlockTip != null) { startLine = ciBlockTip.getStartIndex().x; endLine = ciBlockTip.getEndIndex().x; - - for (int i = startLine; i < endLine; i++) { - // Add 1 to the length to account for the \n character - strLen += productTextArray[i].length() + 1; - } - - sr = new StyleRange(textEditorST.getOffsetAtLine(startLine), - strLen, lockColor, null); - textEditorST.setStyleRange(sr); + lockLines(productTextArray, startLine, endLine); } /* * Lock the mnd text. */ - strLen = 0; HashMap mndMap = prodDataStruct.getMndMap(); TextIndexPoints mndTip = mndMap.get("mnd"); if (mndTip != null) { startLine = mndTip.getStartIndex().x; endLine = mndTip.getEndIndex().x; - - for (int i = startLine; i < endLine; i++) { - // Add 1 to the length to account for the \n character - strLen += productTextArray[i].length() + 1; - } - - sr = new StyleRange(textEditorST.getOffsetAtLine(startLine), - strLen, lockColor, null); - textEditorST.setStyleRange(sr); + lockLines(productTextArray, startLine, endLine); } /* * Lock content in the UGC text. */ - strLen = 0; + if (newProduct) { + unlockCitySegs = new HashSet(); + } List segArray = prodDataStruct.getSegmentsArray(); - TextIndexPoints segTip; + TextIndexPoints segTip, cityTip; for (SegmentData segmentData : segArray) { /* * Lock header. */ - strLen = 0; segTip = segmentData.getSegmentDataIndexPoints("header"); + cityTip = segmentData.getSegmentDataIndexPoints("city"); if (segTip != null) { startLine = segTip.getStartIndex().x; endLine = segTip.getEndIndex().x; - for (int i = startLine; i < endLine; i++) { - // Add 1 to the length to account for the \n character - strLen += productTextArray[i].length() + 1; + String ugc = segTip.getText().substring(0, 6); + + // Check if this is a segment for which the cities list + // should be unlocked. Cities list is unlocked for editing + // when framing codes are present. + if (newProduct) { + if (cityTip != null && + cityTip.getText().indexOf("|*") > 0) { + unlockCitySegs.add(ugc); + } } - sr = new StyleRange(textEditorST.getOffsetAtLine(startLine), - strLen, lockColor, null); - textEditorST.setStyleRange(sr); + if (unlockCitySegs.contains(ugc)) { + // Lock the segment header but skip the cities list. + int cityStart = cityTip.getStartIndex().x; + int cityEnd = cityTip.getEndIndex().x; + + lockLines(productTextArray, startLine, cityStart); + lockLines(productTextArray, cityEnd, endLine); + } + else { + lockLines(productTextArray, startLine, endLine); + } } /* * Lock term. */ - strLen = 0; segTip = segmentData.getSegmentDataIndexPoints("term"); if (segTip != null) { @@ -447,18 +453,23 @@ public class StyledTextComp extends Composite { ++endLineOffset; } - for (int i = startLine; i < endLine + endLineOffset; i++) { - // Add 1 to the length to account for the \n character - strLen += productTextArray[i].length() + 1; - } - - sr = new StyleRange(textEditorST.getOffsetAtLine(startLine), - strLen, lockColor, null); - textEditorST.setStyleRange(sr); + lockLines(productTextArray, startLine, endLine + endLineOffset); } } } + private void lockLines(String[] productTextArray, int startLine, int endLine) { + int strLen = 0; + for (int i = startLine; i < endLine; i++) { + // Add 1 to the length to account for the \n character + strLen += productTextArray[i].length() + 1; + } + + StyleRange sr = new StyleRange(textEditorST.getOffsetAtLine(startLine), + strLen, lockColor, null); + textEditorST.setStyleRange(sr); + } + /** * Find the framing codes in the text. */ diff --git a/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/pointdatacontrol/PointDataControlDlg.java b/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/pointdatacontrol/PointDataControlDlg.java index 11e0b66700..2eba67ed59 100644 --- a/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/pointdatacontrol/PointDataControlDlg.java +++ b/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/pointdatacontrol/PointDataControlDlg.java @@ -102,6 +102,8 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog; * 09 OCT 2012 #15396 Fixed Instantaneous precip index so legend and map display * will change each time duration is incremented or decremented * for the "30 minutes Instantaneous" rainfall map . + * 04 Dec 2012 15602 wkwock Fix Hrs hour capped at 100. + * * * * @author lvenable @@ -1023,6 +1025,7 @@ public class PointDataControlDlg extends CaveSWTDialog { hoursSpnr.setPageIncrement(5); hoursSpnr.setSelection(24); hoursSpnr.setLayoutData(gd); + hoursSpnr.setMaximum(1000); // hoursSpnr.addSelectionListener(new SelectionAdapter() { // @Override // public void widgetSelected(SelectionEvent event) { diff --git a/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/timeseries/TimeSeriesDisplayDlg.java b/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/timeseries/TimeSeriesDisplayDlg.java index d034dafafe..941bc4704a 100644 --- a/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/timeseries/TimeSeriesDisplayDlg.java +++ b/cave/com.raytheon.viz.hydro/src/com/raytheon/viz/hydro/timeseries/TimeSeriesDisplayDlg.java @@ -21,10 +21,8 @@ package com.raytheon.viz.hydro.timeseries; import java.io.File; import java.util.ArrayList; -import java.util.Calendar; import java.util.Date; import java.util.List; -import java.util.TimeZone; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; @@ -89,7 +87,8 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog; * printable area of the page. * 04 Mar 2011 7644 lbousaid fixed Zoom in feature * 30 May 2012 14967 wkwock fix insert deleted data to rejecteddata table - * 23 Jul 2012 15195 mpduff Fix dates for displaying groups + * 23 Jul 2012 15195 mpduff Fix dates for displaying groups + * 06 Dec 2012 15066 wkwock Fix "ctrl+r" not work in group mode * * * @@ -973,7 +972,10 @@ public class TimeSeriesDisplayDlg extends CaveSWTDialog { setZoomAction(false); setSelectZoom(false); reset = true; - displayCanvas.redraw(); + for (TimeSeriesDisplayCanvas dc :canvasList){ + dc.setZoomed(false); + dc.redraw(); + } } else { displayCanvas.resetTS(); } diff --git a/cave/com.raytheon.viz.hydrobase/src/com/raytheon/viz/hydrobase/dialogs/CountyZoneUgcDlg.java b/cave/com.raytheon.viz.hydrobase/src/com/raytheon/viz/hydrobase/dialogs/CountyZoneUgcDlg.java index 7f82f6b1a0..686eefbfa6 100644 --- a/cave/com.raytheon.viz.hydrobase/src/com/raytheon/viz/hydrobase/dialogs/CountyZoneUgcDlg.java +++ b/cave/com.raytheon.viz.hydrobase/src/com/raytheon/viz/hydrobase/dialogs/CountyZoneUgcDlg.java @@ -50,6 +50,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog; * ------------ ---------- ----------- -------------------------- * 02 Sep 2008 lvenable Initial creation. * 30 Dec 2008 1802 askripsk Connect to database. + * 04 Dec 2012 15522 wkwock Fix incorrect zones and not able to add * * * @@ -94,6 +95,10 @@ public class CountyZoneUgcDlg extends CaveSWTDialog { */ private Button clearBtn; + /** + * for keep track whether selected zones are initialized. false is not initialized. + */ + private boolean zonesFlag = false; /** * Constructor. * @@ -157,6 +162,9 @@ public class CountyZoneUgcDlg extends CaveSWTDialog { selectionCbo.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { + if (!zonesFlag) { + getZoneData(); + } updateDisplay(); } }); @@ -328,6 +336,7 @@ public class CountyZoneUgcDlg extends CaveSWTDialog { private void getZoneData() { try { CountyZoneUgcDataManager.getInstance().getZonesSelected(true); + zonesFlag=true; } catch (VizException e) { e.printStackTrace(); } diff --git a/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/datamanager/CountyZoneUgcDataManager.java b/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/datamanager/CountyZoneUgcDataManager.java index 894ddd04f8..6c6ce4f661 100644 --- a/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/datamanager/CountyZoneUgcDataManager.java +++ b/cave/com.raytheon.viz.hydrocommon/src/com/raytheon/viz/hydrocommon/datamanager/CountyZoneUgcDataManager.java @@ -37,6 +37,7 @@ import com.raytheon.viz.hydrocommon.data.ZoneInfoData; * ------------ ---------- ----------- -------------------------- * Jan 5, 2009 1802 askripsky Initial Creation * Sep 11,2012 15362 wkwock Fix selected zones + * Dec 4, 2012 15522 wkwock Fix added zones * * * @@ -159,7 +160,7 @@ public class CountyZoneUgcDataManager { * @throws VizException */ public ArrayList getZonesSelected() throws VizException { - return getZonesSelected(true); + return getZonesSelected(false); } /** diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/OtherPrecipOptions.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/OtherPrecipOptions.java index 513924a450..adb13351c5 100644 --- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/OtherPrecipOptions.java +++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/OtherPrecipOptions.java @@ -350,6 +350,14 @@ public class OtherPrecipOptions { up_arrow.setEnabled(true); } } + Calendar currentTime = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + Calendar tmpDate = (Calendar) currentTime.clone(); + tmpDate.setTime(DailyQcUtils.pdata[DailyQcUtils.pcpn_day].data_time); + tmpDate.add(Calendar.HOUR_OF_DAY, (DailyQcUtils.pcpn_time-3)*6); + + if (currentTime.before(tmpDate)){ + up_arrow.setEnabled(false); + } } else { /* 24 hour mode. */ if (pcp_flag + 4 >= num_qc_days * 4) { diff --git a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DailyQcUtils.java b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DailyQcUtils.java index 3bf0cd5a19..f8a824234c 100644 --- a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DailyQcUtils.java +++ b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DailyQcUtils.java @@ -59,6 +59,7 @@ import com.vividsolutions.jts.geom.Coordinate; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Feb 16, 2009 snaples Initial creation + * Dec 04, 2012 15544 wkwock fix missing 12z-18z after 12 * * * @@ -1021,6 +1022,12 @@ public class DailyQcUtils { btime.set(Calendar.SECOND, 0); hrgt12z = 0; } + /* In order to allow user access the 12~18Z point data for the most recent day, + advance one more day from current day if the later than 18Z */ + Calendar currentTime = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + if (currentTime.get(Calendar.HOUR_OF_DAY)>=18) { + btime.add(Calendar.DAY_OF_MONTH, 1); + } emonth = btime.get(Calendar.MONTH); Calendar otime = Calendar.getInstance(TimeZone.getTimeZone("GMT")); diff --git a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/alarmalert/dialogs/NewAlarmDlg.java b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/alarmalert/dialogs/NewAlarmDlg.java index 749ece219b..03ebc713e6 100644 --- a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/alarmalert/dialogs/NewAlarmDlg.java +++ b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/alarmalert/dialogs/NewAlarmDlg.java @@ -56,6 +56,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog; * Jun 08, 2010 5851 cjeanbap Properly stop alarm/alert observer listener; shellComp is null. * Oct 31, 2011 8510 rferrel made PRIMARY_MODEL and add check for nonblank productID. * Sep 20, 2012 1196 rferrel No longer Blocks + * 12/07/2012 15555 m.gamazaychikov Fixed the implementation for New Proximity Alarm. * * * @author mnash @@ -330,15 +331,34 @@ public class NewAlarmDlg extends CaveSWTDialog { AOR = new Button(aor, SWT.CHECK); aorData = new GridData(SWT.DEFAULT, SWT.CENTER, false, false); AOR.setLayoutData(aorData); - if (prod != null) { + /* + * DR15555 - Set the AOR selection to: + * 1. true - for new alarm + * 2. product's state - for existing alarm + */ + if (prod.getProductId() != "") { AOR.setSelection(prod.isAor()); } + else { + AOR.setSelection(true); + AOR.setBackground(Display.getCurrent().getSystemColor( + SWT.COLOR_YELLOW)); + } AOR.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent event) { if (AOR.getSelection() == true) { + /* + * DR15555 - handle the AOR selection: + * - set the background yellow + * - set the AORDistance text to empty string + * - set the ugcList text to empty string + */ AOR.setBackground(Display.getCurrent().getSystemColor( SWT.COLOR_YELLOW)); + AORDistance.setText(""); + ugcList.setText(""); + } else { AOR.setBackground(Display.getCurrent().getSystemColor( SWT.COLOR_WIDGET_BACKGROUND)); @@ -355,22 +375,34 @@ public class NewAlarmDlg extends CaveSWTDialog { AORDistance = new Text(aor, SWT.SINGLE | SWT.BORDER); aorData = new GridData(SWT.END, SWT.DEFAULT, false, false); aorData.horizontalAlignment = SWT.RIGHT; - aorData.widthHint = 20; + aorData.widthHint = 60; AORDistance.setLayoutData(aorData); - if (prod != null) { + /* + * DR15555 - Set the AORDistance selection to: + * 1. empty string - for new alarm + * 2. product's distance - for existing alarm + */ + if (prod.getProductId() != "") { AORDistance.setText(prod.getAorDistance()); } + else { + AORDistance.setText(""); + } AORDistance.addListener(SWT.KeyDown, new Listener() { @Override - public void handleEvent(Event e) { - if (!"".equals(AORDistance.getText()) - || (e.character != 0x8 && e.character != 0x7f)) { - AOR.setSelection(true); - AOR.setBackground(Display.getCurrent().getSystemColor( - SWT.COLOR_YELLOW)); - } - } + public void handleEvent(Event e) { + /* + * DR15555 - handle the AOR selection: + * - set the AOR background gray + * - un-select the AOR + * - set the ugcList text to empty string + */ + AOR.setSelection(false); + AOR.setBackground(Display.getCurrent().getSystemColor( + SWT.COLOR_WIDGET_BACKGROUND)); + ugcList.setText(""); + } }); distanceLabel = new Combo(aor, SWT.READ_ONLY); @@ -378,7 +410,12 @@ public class NewAlarmDlg extends CaveSWTDialog { distanceLabel.setItems(new String[] { "mi", "km" }); aorData.horizontalAlignment = SWT.RIGHT; distanceLabel.setLayoutData(aorData); - if (prod != null) { + /* + * DR15555 - Set the distanceLabel selection to: + * 1. 'mi' - for new alarm + * 2. product's label - for existing alarm + */ + if (prod.getProductId() != "") { distanceLabel.setText(prod.getAorLabel()); } else { distanceLabel.select(0); @@ -394,9 +431,32 @@ public class NewAlarmDlg extends CaveSWTDialog { ugcLabel.setText("UGC List:"); ugcList = new Text(ugc, SWT.SINGLE | SWT.BORDER); ugcList.setLayoutData(gd); - if (prod != null) { + /* + * DR15555 - Set the ugcList selection to: + * 1. empty string - for new alarm + * 2. product's ugcList - for existing alarm + */ + if (prod.getProductId() != "") { ugcList.setText(prod.getUgcList()); } + else { + ugcList.setText(""); + } + ugcList.addListener(SWT.KeyDown, new Listener() { + @Override + public void handleEvent(Event e) { + /* + * DR15555 - handle the ugcList selection: + * - set the AOR background gray + * - un-select the AOR + * - set the AORDistance text to empty string + */ + AOR.setBackground(Display.getCurrent().getSystemColor( + SWT.COLOR_WIDGET_BACKGROUND)); + AOR.setSelection(false); + AORDistance.setText(""); + } + }); // separator GridData fullLayoutData = new GridData(SWT.FILL, SWT.DEFAULT, true, diff --git a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/alarmalert/util/AlarmAlertFunctions.java b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/alarmalert/util/AlarmAlertFunctions.java index 5092709723..0a1f547ff4 100644 --- a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/alarmalert/util/AlarmAlertFunctions.java +++ b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/alarmalert/util/AlarmAlertFunctions.java @@ -26,14 +26,25 @@ import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Scanner; +import java.util.StringTokenizer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.xml.bind.JAXB; import org.eclipse.swt.widgets.Shell; import com.raytheon.uf.common.dataplugin.text.alarms.AlarmAlertProduct; +import com.raytheon.uf.common.dataplugin.text.alarms.AlarmAlertProduct.ProductType; import com.raytheon.uf.common.dataplugin.text.db.StdTextProduct; +import com.raytheon.uf.common.dataquery.requests.RequestConstraint; +import com.raytheon.uf.common.geospatial.SpatialException; +import com.raytheon.uf.common.geospatial.SpatialQueryFactory; +import com.raytheon.uf.common.geospatial.SpatialQueryResult; import com.raytheon.uf.common.localization.ILocalizationFileObserver; import com.raytheon.uf.common.localization.IPathManager; import com.raytheon.uf.common.localization.LocalizationContext; @@ -45,11 +56,15 @@ import com.raytheon.uf.common.localization.exception.LocalizationOpFailedExcepti import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus.Priority; +import com.raytheon.uf.viz.core.localization.LocalizationManager; import com.raytheon.viz.texteditor.alarmalert.dialogs.AlarmAlertBell; import com.raytheon.viz.texteditor.command.CommandFactory; import com.raytheon.viz.texteditor.command.CommandFailedException; import com.raytheon.viz.texteditor.command.ICommand; import com.raytheon.viz.texteditor.util.TextEditorUtil; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryFactory; /** * This class is used for some of the calculation work used in the alarm/alert @@ -62,6 +77,8 @@ import com.raytheon.viz.texteditor.util.TextEditorUtil; * ------------ ---------- ----------- -------------------------- * Sep 18, 2009 mnash Initial creation * 03/19/2012 D. Friedman Fix determination of "Alarm" entries. + * 12/07/2012 15555 m.gamazaychikov Added methods and constants for + * the implementation of proximity alarm * * * @@ -69,6 +86,14 @@ import com.raytheon.viz.texteditor.util.TextEditorUtil; * @version 1.0 */ +/** + * @author michaelg + * + */ +/** + * @author michaelg + * + */ public class AlarmAlertFunctions { private static final AlarmAlertProduct.ProductType AA = AlarmAlertProduct.ProductType.Alarm_Alert; @@ -88,6 +113,23 @@ public class AlarmAlertFunctions { private static final transient IUFStatusHandler statusHandler = UFStatus .getHandler(AlarmAlertFunctions.class); + + private static final Pattern UGC_NEW_PATTERN = Pattern + .compile("^(([A-Z]{3})(\\d{3}))$"); + + private static final Pattern UGC_FOLLOW_PATTERN = Pattern + .compile("^(\\d{3})$"); + + private static String DEFAULT_DISTANCE="3000"; + + private static final String HYPHEN = Pattern.quote("-"); + + public static final Pattern UGC = Pattern + .compile("(^(\\w{2}[CZ]\\d{3}\\S*-\\d{6}-)$|((\\d{3}-)*\\d{6}-)$|((\\d{3}-)+))"); + + private static final double ONE_DEGREE_MI = 69.09; + + private static final double ONE_DEGREE_KM = 111.20; protected void getGIS() { @@ -105,7 +147,22 @@ public class AlarmAlertFunctions { string.append("AOR"); } if (!"".equals(prod.getAorDistance())) { - string.append("+" + prod.getAorDistance() + prod.getAorLabel()); + /* + * DR15555 - check the text content, + * if it is not a valid number set the + * text to default 3000 mi + */ + Scanner scn = new Scanner(prod.getAorDistance()); + while (scn.hasNext()){ + if (!scn.hasNextInt()){ + prod.setAorDistance(DEFAULT_DISTANCE); + break; + } + else { + scn.next(); + } + } + string.append("AOR+" + prod.getAorDistance() + prod.getAorLabel()); } else if (!"".equals(prod.getUgcList())) { string.append("UGC-" + prod.getUgcList()); } @@ -219,10 +276,11 @@ public class AlarmAlertFunctions { if (productId != null) { productId = productId.trim().toUpperCase(); for (AlarmAlertProduct a : currentAlarms) { - // ************** - // TODO : For now disable Proximity Alerts - // ************** - if (AA.equals(a.getProductType())) { + ProductType pt = a.getProductType(); + /* + * Alarm_Alert + */ + if (AA.equals(pt)) { String s = a.getProductId(); if (s != null) { s = s.trim().toUpperCase(); @@ -234,12 +292,334 @@ public class AlarmAlertFunctions { } } } + /* + * DR1555 - Proximity_Alarm + */ + else if (PA.equals(pt)) {; + String s = a.getProductId(); + if (s != null) { + s = s.trim().toUpperCase(); + if (s.equals(productId)) { + List productList = getProduct(a + .getProductId()); + if (productList.size() > 0) { + StdTextProduct stp = productList.get(0); + if (stp != null) { + Geometry messagePolygon = getMessagePolygon(stp); + if (a.isAor()) { + /* + * Check if polygon in the message + * is within the AOR + */ + if (matchAOR(messagePolygon)) { + prods.add(a); + } + } else if (!"".equals(a.getAorDistance())) { + /* + * Check if polygon in the message + * is within the AOR+distance + */ + if (matchAORExtention(a.getAorDistance(), + a.getAorLabel(), messagePolygon)) { + prods.add(a); + } + } else if (!"".equals(a.getUgcList())) { + /* + * Check if UGCs in the message + * match the UGCs in the alarm + */ + String messageUGCs = getMessageUGCs(stp + .getProduct()); + String alarmUGCs = a.getUgcList(); + if (matchUGCList(alarmUGCs, messageUGCs)) { + prods.add(a); + } + } + } + } + } + } + } } } return prods; } - /** + /** + * Return a String containing UGCs specified in the message + * + * @param productText + * @return + */ + private static String getMessageUGCs(String productText) { + String ugcLine = ""; + for (String line : productText.replaceAll("\r", "").trim().split("\n")) { + Matcher m = UGC.matcher(line); + if (m.find()) { + ugcLine += line; + continue; + } else if (ugcLine.length() > 0) { + break; + } + } + return ugcLine; + } + + /** + * Returns true if the polygon intersects the CWA + * + * @param polygon + * @return + */ + private static boolean matchAOR(Geometry polygon) { + Geometry cwa = null; + String site = LocalizationManager.getInstance().getCurrentSite(); + try { + cwa = readCountyWarningArea(site); + } catch (SpatialException e) { + e.printStackTrace(); + } + if (cwa!=null) { + if (polygon.intersects(cwa)) { + return true; + } + } + return false; + } + + /** + * Returns true if a UGC specified in the alarmUGCs is present in the + * messageUGCs + * + * @param alarmUGCs + * @param messageUGCs + * @return + */ + private static boolean matchUGCList(String alarmUGCs, String messageUGCs) { + List alarmUGCList = getUGCs(alarmUGCs); + for ( String alarmUGC: alarmUGCList) { + if (messageUGCs.contains(alarmUGC) ) { + return true; + } + } + return false; + } + + /** + * Return a List of strings of UGCs + * + * @param ugcString + * @return + */ + private static List getUGCs(String ugcString) { + String[] ugcList = ugcString.split(HYPHEN); + // Process the list of UGC lines into a list of UGCs in full form + // matching edit area names + List finalUGCList = new ArrayList(ugcList.length); + String state = null; + for (String ugc : ugcList) { + Matcher newGroup = UGC_NEW_PATTERN.matcher(ugc); + if (newGroup.matches()) { + state = newGroup.group(2); + finalUGCList.add(newGroup.group(1)); + } else { + Matcher followGroup = UGC_FOLLOW_PATTERN.matcher(ugc); + if (followGroup.matches()) { + finalUGCList.add(state + followGroup.group(1)); + } + } + } + return finalUGCList; + } + + /** + * Return Geometry representing the site's CWA + * + * @param site + * @return + * @throws SpatialException + */ + private static Geometry readCountyWarningArea(String site) + throws SpatialException { + Map map = new HashMap(); + map.put("cwa", new RequestConstraint(site)); + SpatialQueryResult[] result = SpatialQueryFactory.create().query("cwa", + null, null, map, null); + if (result == null || result.length == 0) { + return null; + } + return result[0].geometry; + } + + /** + * Returns true if the polygon intersects the CWA+distance + * + * @param distanceStr + * @param distanceUnits + * @param polygon + * @return + */ + private static boolean matchAORExtention(String distanceStr, + String distanceUnits, Geometry polygon) { + Geometry cwa = null; + String site = LocalizationManager.getInstance().getCurrentSite(); + try { + cwa = readCountyWarningArea(site); + } catch (SpatialException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + Geometry CWAConvex = cwa.convexHull(); + + double d0 = 0.0d; + if ("mi".equalsIgnoreCase(distanceUnits)) { + d0 = ONE_DEGREE_MI; + } else { + d0 = ONE_DEGREE_KM; + } + Double distance = Double.parseDouble(distanceStr); + double centerLat = Math.toRadians(CWAConvex.getCentroid().getY()); + Double deltaX = distance / (Math.cos(centerLat) * d0); + Double deltaY = distance / d0; + Geometry expandedCWA = expandCWABy(CWAConvex, deltaX, deltaY); + + if (expandedCWA != null) { + if (polygon.intersects(expandedCWA)) { + return true; + } + } + return false; + } + + /** + * Return expanded by deltaX-deltaY geometry + * + * @param CWAConvex + * @param deltaX + * @param deltaY + * @return + */ + private static Geometry expandCWABy(Geometry CWAConvex, Double deltaX, + Double deltaY) { + Coordinate[] coords = CWAConvex.getCoordinates(); + Coordinate[] coordsExpanded = new Coordinate[coords.length]; + Double centerLat = CWAConvex.getCentroid().getY(); + Double centerLon = CWAConvex.getCentroid().getX(); + for (int i = 0; i < coords.length; i++) { + double latE = coords[i].y; + double lonE = coords[i].x; + if (coords[i].x < centerLon) { + lonE = coords[i].x - deltaX; + ; + } else if (coords[i].x > centerLon) { + lonE = coords[i].x + deltaX; + } else if (coords[i].x == centerLon) { + lonE = coords[i].x; + } + if (coords[i].y < centerLat) { + latE = coords[i].y - deltaY; + } else if (coords[i].y > centerLat) { + latE = coords[i].y + deltaY; + } else if (coords[i].y == centerLat) { + latE = coords[i].y; + } + coordsExpanded[i] = new Coordinate(lonE, latE); + } + GeometryFactory gf = new GeometryFactory(); + return gf.createLinearRing(coordsExpanded).convexHull(); + } + + /** + * Return the polygon contained in message + * + * @param stp + * @return + */ + private static Geometry getMessagePolygon(StdTextProduct stp) { + String body = stp.getProduct(); + if (body.contains("LAT...LON")) { + Coordinate[] coords = getLatLonCoords(body); + GeometryFactory gf = new GeometryFactory(); + return gf.createLinearRing(coords); + } + return null; + } + + /** + * Return an array of Coordinate[] contained in the message + * + * @param body + * @return + */ + private static Coordinate[] getLatLonCoords(String body) { + String latLon = ""; + boolean insideLatLon = false; + ArrayList coordinates = new ArrayList(); + Pattern latLonPtrn = Pattern + .compile("LAT...LON+(\\s\\d{3,4}\\s\\d{3,5}){1,}"); + Pattern subLatLonPtrn = Pattern.compile("\\s(\\d{3,4})\\s(\\d{3,5})"); + String[] separatedLines = body.split("\n"); + for (String line : separatedLines) { + Matcher m = latLonPtrn.matcher(line); + if (m.find()) { + latLon = line; + insideLatLon = true; + continue; + } + if (insideLatLon) { + m = subLatLonPtrn.matcher(line); + if (!line.startsWith("TIME...") && m.find()) { + latLon += " " + line.trim(); + continue; + } else { + insideLatLon = false; + } + } + } + coordinates = processLatlons(latLon); + Coordinate[] coords = new Coordinate[coordinates.size()]; + coords = coordinates.toArray(coords); + return coords; + } + + /** + * Process the extracted from the message latlon coordinates + * @param latLon + * @return + */ + private static ArrayList processLatlons(String latLon) { + ArrayList coordinates = new ArrayList(); + String currentToken = null; + String latlon = "LAT...LON"; + String latitude = null; + String longitude = null; + boolean pair = false; + Double dlat, dlong; + StringTokenizer latlonTokens = new StringTokenizer(latLon); + while (latlonTokens.hasMoreTokens()) { + currentToken = latlonTokens.nextToken(); + if (!currentToken.equals(latlon)) { + if (pair) { + longitude = currentToken; + + pair = false; + + dlat = (double) (Integer.parseInt(latitude) / 100.0); + dlong = (double) ((Integer.parseInt(longitude) / 100.0) * (-1.0)); + coordinates.add(new Coordinate(dlong, dlat)); + } else { + latitude = currentToken; + pair = true; + } + } + } + Double dlong0 = coordinates.get(0).x; + Double dlat0 = coordinates.get(0).y; + coordinates.add(new Coordinate(dlong0, dlat0)); + return coordinates; + } + + /** * initialize the localization for user with the save/load functions * * @return the initialized localization diff --git a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/AWIPSHeaderBlockDlg.java b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/AWIPSHeaderBlockDlg.java index b93ccbcb25..ae60b38ee3 100644 --- a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/AWIPSHeaderBlockDlg.java +++ b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/AWIPSHeaderBlockDlg.java @@ -34,6 +34,8 @@ import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.TraverseEvent; +import org.eclipse.swt.events.TraverseListener; import org.eclipse.swt.events.VerifyEvent; import org.eclipse.swt.events.VerifyListener; import org.eclipse.swt.layout.GridData; @@ -94,6 +96,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback; * 07/26/2012 15171 rferrel Disable editor's send and clear AFOS PIL fields when * invalid product Id and user want to edit it anyway. * 09/20/2012 1196 rferrel Changing dialogs being called to not block. + * 11/26/2012 14526 mgamazaychikov Added traverse listener for RETURN key * * * @author lvenable @@ -221,6 +224,10 @@ public class AWIPSHeaderBlockDlg extends CaveSWTDialog implements // this was after shell.pack() before, any reason why? checkEnableEnter(); + /* + * 14526 - Add the traverse listener for RETURN key + */ + setTraverseListenerReturn(); } @Override @@ -608,49 +615,7 @@ public class AWIPSHeaderBlockDlg extends CaveSWTDialog implements enterBtn.setEnabled(true); enterBtn.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { - boolean sendEnabled = true; - if (!isProductValid()) { - // Notify the user that the product may not be valid. - // - // TODO cannot use a model MessageBox here. If displayed - // when an Alarm Alert Bell appears Cave freezes and - // nothing can be done. Need to change this to extend - // CaveSWTDialog in a similar manner to - // WarnGenConfirmationDlg. Better solution if possible - // change AlermAlertBell so modal MessagBox can be used.. - MessageBox mb = new MessageBox(shell, SWT.ICON_QUESTION - | SWT.YES | SWT.NO); - mb.setMessage("Product Designator " - + wsfoIdTF.getText() - + prodCatTF.getText() - + prodDesignatorTF.getText() - + " is not in the list of valid products. Use it anyway?"); - if (mb.open() == SWT.NO) { - return; - } - parentEditor.enableSend(false); - sendEnabled = false; - } else { - parentEditor.enableSend(true); - } - - // call the set methods - parentEditor.setCurrentWmoId(wmoTtaaiiTF.getText()); - parentEditor.setCurrentSiteId(ccccTF.getText()); - if (sendEnabled) { - parentEditor.setCurrentWsfoId(wsfoIdTF.getText()); - parentEditor.setCurrentProdCategory(prodCatTF.getText()); - parentEditor.setCurrentProdDesignator(prodDesignatorTF - .getText()); - } else { - parentEditor.setCurrentWsfoId(""); - parentEditor.setCurrentProdCategory(""); - parentEditor.setCurrentProdDesignator(""); - } - parentEditor.setAddressee(addresseeTF.getText()); - setBbbId(); - setReturnValue(true); - shell.dispose(); + enterBtnPressed(); } }); @@ -668,7 +633,58 @@ public class AWIPSHeaderBlockDlg extends CaveSWTDialog implements } - /** + protected void enterBtnPressed() { + /* + * 14526 - Added the check for when RETURN key is pressed + * but the "Enter" button is not enabled. + */ + if ( !enterBtn.getEnabled()) { + return; + } + boolean sendEnabled = true; + if (!isProductValid()) { + // Notify the user that the product may not be valid. + // + // TODO cannot use a model MessageBox here. If displayed + // when an Alarm Alert Bell appears Cave freezes and + // nothing can be done. Need to change this to extend + // CaveSWTDialog in a similar manner to + // WarnGenConfirmationDlg. Better solution if possible + // change AlermAlertBell so modal MessagBox can be used.. + MessageBox mb = new MessageBox(shell, SWT.ICON_QUESTION | SWT.YES + | SWT.NO); + mb.setMessage("Product Designator " + wsfoIdTF.getText() + + prodCatTF.getText() + prodDesignatorTF.getText() + + " is not in the list of valid products. Use it anyway?"); + if (mb.open() == SWT.NO) { + return; + } + parentEditor.enableSend(false); + sendEnabled = false; + } else { + parentEditor.enableSend(true); + } + + // call the set methods + parentEditor.setCurrentWmoId(wmoTtaaiiTF.getText()); + parentEditor.setCurrentSiteId(ccccTF.getText()); + if (sendEnabled) { + parentEditor.setCurrentWsfoId(wsfoIdTF.getText()); + parentEditor.setCurrentProdCategory(prodCatTF.getText()); + parentEditor.setCurrentProdDesignator(prodDesignatorTF.getText()); + } else { + parentEditor.setCurrentWsfoId(""); + parentEditor.setCurrentProdCategory(""); + parentEditor.setCurrentProdDesignator(""); + } + parentEditor.setAddressee(addresseeTF.getText()); + setBbbId(); + setReturnValue(true); + shell.dispose(); + } + + + /** * This is a convenience method that will center a label in a RowLayout. * When controls are placed in a RowLayout they are "aligned" at the top of * the cell. @@ -942,6 +958,17 @@ public class AWIPSHeaderBlockDlg extends CaveSWTDialog implements } } }); + + /* + * 14526 - Add the traverse listener for RETURN key + */ + tf.addTraverseListener(new TraverseListener() { + @Override + public void keyTraversed(TraverseEvent te) { + te.doit = true; + } + }); + } private void textFieldVerifyListener(final StyledText tf) { @@ -1005,4 +1032,19 @@ public class AWIPSHeaderBlockDlg extends CaveSWTDialog implements if (allBtn != null) allBtn.setSelection("ALL".equals(addressee)); } + + /* + * Adds the traverse listener for RETURN key + */ + private void setTraverseListenerReturn() { + shell.addTraverseListener(new TraverseListener() { + @Override + public void keyTraversed(TraverseEvent event) { + if (event.detail == SWT.TRAVERSE_RETURN) { + enterBtnPressed(); + } + } + + }); + } } diff --git a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/TextEditorDialog.java b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/TextEditorDialog.java index e681e992c0..20d9af7a96 100644 --- a/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/TextEditorDialog.java +++ b/cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/TextEditorDialog.java @@ -60,7 +60,6 @@ import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ExtendedModifyEvent; import org.eclipse.swt.custom.ExtendedModifyListener; -import org.eclipse.swt.custom.PopupList; import org.eclipse.swt.custom.ST; import org.eclipse.swt.custom.StyleRange; import org.eclipse.swt.custom.StyledText; @@ -99,9 +98,11 @@ import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Layout; +import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.MessageBox; @@ -303,6 +304,7 @@ import com.raytheon.viz.ui.dialogs.SWTMessageBox; * Do not use changed BBB from OUPResponse. * 17OCT2012 1229 rferrel Changes for non-blocking SWTMessageBox. * 05Nov2012 15560 S. Naples Added check to see if we are in edit mode before capturing keys. + * 28Nov2012 14842 M.Gamazaychikov Re-wrote processPopup method * 13Dec2012 1353 rferrel Change to make edit cancel message not * dispaly the red had kill job message. * @@ -1104,6 +1106,9 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener, private static final String[] popupItems = { "Select All", "Cut", "Copy", "Paste" }; + + private static final boolean[] isPopItemDefault = { true, false, true, + false }; private boolean warnGenFlag = false; @@ -3633,7 +3638,7 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener, } if (e.button == 3) { - processPopup(e.x, e.y); + processPopup(); } } @@ -3646,33 +3651,48 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener, /** * Process the user choice from the popup list. + * DR14842 - re-written */ - private void processPopup(int x, int y) { - PopupList popupList = new PopupList(shell); - popupList.setMinimumWidth(50); - if (isEditMode()) { - popupList.setItems(popupItems); - } else { - popupList.setItems(new String[] { "Select All", "Copy" }); - } - popupList.select(popupItems[0]); - - Point p = Display.getCurrent().map(textEditor, null, x, y); - String choice = popupList.open(new Rectangle(p.x + 10, p.y + 10, 100, - 200)); - if (choice != null) { - if (popupItems[0].equals(choice)) { - textEditor.selectAll(); - } else if (popupItems[1].equals(choice)) { - cutText(); - } else if (popupItems[2].equals(choice)) { - copyText(); - } else if (popupItems[3].equals(choice)) { - pasteText(); - } - textEditor.update(); - } - } + private void processPopup() { + Menu menu = new Menu(shell, SWT.POP_UP); + List items = Arrays.asList(popupItems); + for (String pi : popupItems) { + MenuItem mi = new MenuItem(menu, SWT.PUSH); + mi.setText(pi); + if (isEditMode()) { + mi.setEnabled(true); + } else { + mi.setEnabled(isPopItemDefault[items.indexOf(pi)]); + } + mi.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event event) { + handleSelection(event); + } + }); + } + menu.setVisible(true); + } + + /** + * Handle the selection from the popup menu + * @param event + */ + protected void handleSelection(Event event) { + MenuItem item = (MenuItem) event.widget; + String choice = item.getText(); + if (choice != null) { + if (popupItems[0].equals(choice)) { + textEditor.selectAll(); + } else if (popupItems[1].equals(choice)) { + cutText(); + } else if (popupItems[2].equals(choice)) { + copyText(); + } else if (popupItems[3].equals(choice)) { + pasteText(); + } + textEditor.update(); + } + } /** * creates the bar containing the script runner controls. diff --git a/cave/com.raytheon.viz.volumebrowser/localization/menus/volume/index.xml b/cave/com.raytheon.viz.volumebrowser/localization/menus/volume/index.xml index e832ad8001..7e23bec49f 100644 --- a/cave/com.raytheon.viz.volumebrowser/localization/menus/volume/index.xml +++ b/cave/com.raytheon.viz.volumebrowser/localization/menus/volume/index.xml @@ -25,8 +25,8 @@ - - + + diff --git a/cave/com.raytheon.viz.volumebrowser/localization/menus/xml/fieldsMenus.xml b/cave/com.raytheon.viz.volumebrowser/localization/menus/xml/fieldsMenus.xml index 7399ffd7c1..b57792b62d 100644 --- a/cave/com.raytheon.viz.volumebrowser/localization/menus/xml/fieldsMenus.xml +++ b/cave/com.raytheon.viz.volumebrowser/localization/menus/xml/fieldsMenus.xml @@ -1309,7 +1309,7 @@ key="PWmean" indentText="false" /> - @@ -1353,7 +1353,7 @@ key="PWsprd" indentText="false" /> - diff --git a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/PolygonUtil.java b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/PolygonUtil.java index a49215bf1f..1d65601dd9 100644 --- a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/PolygonUtil.java +++ b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gis/PolygonUtil.java @@ -56,7 +56,8 @@ import com.vividsolutions.jts.geom.prep.PreparedGeometryFactory; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Dec 1, 2010 mschenke Initial creation - * + * 12/06/2012 DR 15559 Qinglu Lin Added round() methods. + * * * * @author mschenke @@ -953,4 +954,34 @@ public class PolygonUtil { coordinate.x = x / Math.pow(10, decimalPlaces); coordinate.y = y / Math.pow(10, decimalPlaces); } + + public static void round(Listcoordinates, int decimalPlaces) { + for (Coordinate coordinate : coordinates) { + round(coordinate, decimalPlaces); + } + } + + public static void round(Coordinate[] coordinates, int decimalPlaces) { + for (Coordinate coordinate : coordinates) { + round(coordinate, decimalPlaces); + } + } + + /** + * round() + * Rounding coordinates, instead of truncating them. + * + * History + * 12/06/2012 DR 15559 Qinglu Lin Created. + */ + public static void round(Coordinate coordinate, int decimalPlaces) { + double x = coordinate.x * Math.pow(10, decimalPlaces); + double y = coordinate.y * Math.pow(10, decimalPlaces); + + x = Math.round(x); + y = Math.round(y); + + coordinate.x = x / Math.pow(10, decimalPlaces); + coordinate.y = y / Math.pow(10, decimalPlaces); + } } diff --git a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/WarngenLayer.java b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/WarngenLayer.java index 1ce3e3d2da..fbddbdb397 100644 --- a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/WarngenLayer.java +++ b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/WarngenLayer.java @@ -144,7 +144,16 @@ import com.vividsolutions.jts.io.WKTReader; * warningAction is neither null nor WarningAction.NEW, removed * some code from redrawBoxFromHatched(). * 11/15/2012 DR 15430 D. Friedman Use correct county/zone in createGeometryForWatches. - * + * 11/29/2012 DR 15571 Qinglu Lin Called compuateCurrentStormCenter() in getStormLocations(); + * For CON, CAN, and COR, calculate Coordinate array, cc, specifically in + * getStormLocations(). + * 12/10/2012 DR 15571 Qinglu Lin Change warningAction's initialization from null to WarningAction.NEW, and add code + * in getStormLocations() for handling case when warningAction equals WarningAction.NEW; + * 12/13/2012 DR 15559 Qinglu Lin Added code to call WarngenUIState's adjustPolygon(). + * 12/17/2012 DR 15571 Qinglu Lin For hydro products,futurePoints is null. Resolved an issue caused by trying to get + * Coordinate[] from futurePoints. + * 12/18/2012 DR 15571 Qinglu Lin Resolved coordinate issue in TML line caused by clicking Restart button. + * * * * @author mschenke @@ -229,7 +238,7 @@ public class WarngenLayer extends AbstractStormTrackResource { private GeospatialDataList geoData = null; - private WarningAction warningAction = null; + private WarningAction warningAction = WarningAction.NEW; static { for (int i = 0; i < 128; i++) { @@ -1600,8 +1609,17 @@ public class WarngenLayer extends AbstractStormTrackResource { .hatchWarningArea(state.getWarningPolygon(), state.getWarningArea()); if (hatched != null) { - state.setWarningPolygon(hatched); - state.snappedToArea = true; + // DR 15559 + Coordinate[] coords = hatched.getCoordinates(); + PolygonUtil.round(coords, 2); + state.adjustPolygon(coords); + GeometryFactory gf = new GeometryFactory(); + LinearRing lr = gf.createLinearRing(coords); + state.setWarningPolygon(gf.createPolygon(lr, null)); + updateWarnedAreas(true, true); + issueRefresh(); + // End of DR 15559 + state.snappedToArea = true; } System.out.println("Time to createWarningPolygon: " + (System.currentTimeMillis() - t0) + "ms"); @@ -1820,9 +1838,16 @@ public class WarngenLayer extends AbstractStormTrackResource { Coordinate[] cc = null; switch (stormTrackState.displayType) { case POINT: - cc = new Coordinate[] { stormTrackState.futurePoints == null ? stormTrackState.dragMePoint - .getCoordinate() : stormTrackState.futurePoints[0].coord }; - break; + cc = new Coordinate[] { stormTrackState.futurePoints == null ? stormTrackState.dragMePoint + .getCoordinate() : stormTrackState.futurePoints[0].coord }; + if (warningAction == null || warningAction == WarningAction.NEW || warningAction == WarningAction.CON + || warningAction == WarningAction.CAN) { + Coordinate coord = new Coordinate(stormTrackState.dragMePoint.getCoordinate()); + DataTime currentDataTime = new DataTime(SimulatedTime.getSystemTime().getTime()); + if (stormTrackState.compuateCurrentStormCenter(coord,currentDataTime)) + cc = new Coordinate[] {coord}; + } + break; case POLY: Coordinate[] polyPoints = stormTrackState.dragMeLine .getCoordinates(); diff --git a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/WarngenUIState.java b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/WarngenUIState.java index bb3090c986..ce3dcd4f4f 100644 --- a/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/WarngenUIState.java +++ b/cave/com.raytheon.viz.warngen/src/com/raytheon/viz/warngen/gui/WarngenUIState.java @@ -41,6 +41,8 @@ import com.vividsolutions.jts.geom.Polygon; * May 7, 2010 mschenke Initial creation * 03/14/2012 DR 14690 Qinglu Lin Add clear2(). * 10/26/2012 DR 15479 Qinglu Lin Added removeDuplicateCoordinate(). + * 12/06/2012 DR 15559 Qinglu Lin Added computeSlope(), computeCoordinate(), + * and adjustPolygon(). * * * @@ -145,6 +147,151 @@ public class WarngenUIState { warningPolygon = gf.createPolygon(gf.createLinearRing(vertices), null); } + /** + * computeSlope + * compute the slope of a line. + * + * History + * 12/06/2012 DR 15559 Qinglu Lin Created. + */ + private double computeSlope(Coordinate[] coords, int i) { + double min = 1.0E-08; + double dx = coords[i].x-coords[i+1].x; + double slope = 0.0; + if (Math.abs(dx)>min) { + slope = (coords[i].y-coords[i+1].y)/dx; + } + return slope; + } + + /** + * computeCoordinate + * Compute the x component of a coordinate after its y component + * is adjusted. + * + * History + * 12/06/2012 DR 15559 Qinglu Lin Created. + */ + private void computeCoordinate(Coordinate[] c, int i, int j) { + double slope; + slope = computeSlope(c,i); + int iPlus1 = i+1; + if (c[j].x>=c[i].x && c[j].x<=c[iPlus1].x || + c[j].x>=c[iPlus1].x && c[j].x<=c[i].x) { + + double x,y; + double min1 = 0.005d; + y = slope*(c[j].x-c[i].x) + c[i].y; + double d = Math.abs(y-c[j].y); + if (d>min1) + return; + + double min2 = 1.0E-8d; + double delta = 0.005d; // empirical value + double dyMin = 0.01d; + int jMinus1 = j-1; + if (jMinus1<0) + jMinus1 = c.length-2; + int jPlus1 = j+1; + if (Math.abs(y-c[j].y)=dy2 && (Math.abs(dy1)>dyMin || Math.abs(dy2)>dyMin)) { + // attempt to use l2 for computation + if (c[j].y==c[jMinus1].y && Math.abs(c[j].x-c[jMinus1].x)>min2) { + // l2 is a horizontal line, use l3 for computation + if (c[jPlus1].y min2) { + y = c[j].y+delta; + x = (y-c[jPlus1].y)/slope + c[jPlus1].x; + } else { + // l3 is a vertical line + y = c[j].y+delta; + x = c[j].x; + } + } else { + // use l2 for computation + if (c[jMinus1].y min2) { + y = c[j].y+delta; + x = (y-c[jMinus1].y)/slope + c[jMinus1].x; + } else { + // l2 is a vertical line + y = c[j].y+delta; + x = c[j].x; + } + } + } else { + if (Math.abs(dy1)>dyMin || Math.abs(dy2)>dyMin) { + // attempt to use l3 for computation + if (c[j].y==c[jPlus1].y && Math.abs(c[j].x-c[jPlus1].x)>min2) { + // l3 is a horizontal line, use l2 for computation + if (c[jMinus1].y min2) { + y = c[j].y+delta; + x = (y-c[jMinus1].y)/slope + c[jMinus1].x; + } else { + // l2 is a vertical line + y = c[j].y+delta; + x = c[j].x; + } + } else { + // use l3 for computation + if (c[jPlus1].y min2) { + y = c[j].y+delta; + x = (y-c[jPlus1].y)/slope + c[jPlus1].x; + } else { + // l3 is a vertical line + y = c[j].y+delta; + x = c[j].x; + } + } + } else { + x = c[j].x; + y = c[j].y; + } + } + c[j].x = x; + c[j].y = y; + if (j==0) + c[c.length-1] = c[j]; + } + } + } + + /** + * adjustPolygon + * When a point is very close to a line in the initial warning polygon, the resulting coordinates + * cause the failure of polygon drawing in follow-up. The method move that kind of points away from + * the line, and return a Polygon. + * + * History + * 12/06/2012 DR 15559 Qinglu Lin Created. + */ + public void adjustPolygon(Coordinate[] coords) { + int n = coords.length; + for (int i=0; i * * @author njensen @@ -368,8 +373,6 @@ public class TemplateRunner { // CAN and EXP products follow different rules as followups if (!(selectedAction == WarningAction.CAN || selectedAction == WarningAction.EXP)) { - Coordinate[] stormLocs = warngenLayer - .getStormLocations(stormTrackState); wx = new Wx(config, stormTrackState, warngenLayer.getStormLocations(stormTrackState), startTime.getTime(), DateUtil.roundDateTo15(endTime) @@ -391,7 +394,10 @@ public class TemplateRunner { context.put("duration", duration); context.put("event", eventTime); - context.put("TMLtime", eventTime); + if (selectedAction == WarningAction.COR) + context.put("TMLtime", eventTime); + else + context.put("TMLtime", simulatedTime); context.put("ugcline", FipsUtil.getUgcLine(areas, wx.getEndTime(), 15)); context.put("areaPoly", GisUtil.convertCoords(warngenLayer @@ -433,13 +439,25 @@ public class TemplateRunner { motionDirection -= 360; } context.put("movementDirection", motionDirection); + Coordinate[] stormLocs = warngenLayer + .getStormLocations(stormTrackState); // Convert to Point2D representation as Velocity requires // getX() and getY() methods which Coordinate does not have - Coordinate[] newStormLocs = GisUtil.d2dCoordinates(stormLocs); - Point2D.Double[] coords = new Point2D.Double[newStormLocs.length]; - for (int i = 0; i < newStormLocs.length; i++) { - coords[i] = new Point2D.Double(newStormLocs[i].x, - newStormLocs[i].y); + if (selectedAction == WarningAction.COR) { + AbstractWarningRecord oldWarn = CurrentWarnings.getInstance( + threeLetterSiteId).getNewestByTracking(etn, phenSig); + String loc = oldWarn.getLoc(); + if (loc != null) { + Geometry locGeom = wkt.read(loc); + stormLocs = locGeom.getCoordinates(); + } + } else { + stormLocs = GisUtil.d2dCoordinates(stormLocs); + } + Point2D.Double[] coords = new Point2D.Double[stormLocs.length]; + for (int i = 0; i < stormLocs.length; i++) { + coords[i] = new Point2D.Double(stormLocs[i].x, + stormLocs[i].y); } context.put("eventLocation", coords); t0 = System.currentTimeMillis(); @@ -453,6 +471,7 @@ public class TemplateRunner { threeLetterSiteId).getNewestByTracking(etn, phenSig); context.put("now", simulatedTime); context.put("event", eventTime); + context.put("TMLtime", eventTime); context.put("start", oldWarn.getStartTime().getTime()); context.put("expire", oldWarn.getEndTime().getTime()); Calendar canOrExpCal = Calendar.getInstance(); @@ -468,13 +487,21 @@ public class TemplateRunner { .getCoordinates())); // If there is no storm track if (oldWarn.getLoc() != null) { - Geometry locGeom = wkt.read(oldWarn.getLoc()); - Coordinate[] locs = locGeom.getCoordinates(); // Convert to Point2D representation as Velocity requires // getX() and getY() methods which Coordinate does not have - Point2D.Double[] coords = new Point2D.Double[locs.length]; + Point2D.Double[] coords; + Coordinate[] locs; + if (selectedAction == WarningAction.CAN) { + locs = warngenLayer.getStormLocations(stormTrackState); + locs = GisUtil.d2dCoordinates(locs); + coords = new Point2D.Double[locs.length]; + } else { + Geometry locGeom = wkt.read(oldWarn.getLoc()); + locs = locGeom.getCoordinates(); + coords = new Point2D.Double[locs.length]; + } for (int i = 0; i < locs.length; i++) { - coords[i] = new Point2D.Double(locs[i].x, locs[i].y); + coords[i] = new Point2D.Double(locs[i].x, locs[i].y); } context.put("eventLocation", coords); double motionDirection = oldWarn.getMotdir(); diff --git a/cots/com.google.guava/com.google.guava.ecl b/cots/com.google.guava/com.google.guava.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cots/de.micromata.opengis.kml/de.micromata.opengis.kml.ecl b/cots/de.micromata.opengis.kml/de.micromata.opengis.kml.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cots/org.apache.tomcat.nativ/org.apache.tomcat.nativ.ecl b/cots/org.apache.tomcat.nativ/org.apache.tomcat.nativ.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cots/org.geotools/xml-apis-1.0.b2.jar b/cots/org.geotools/xml-apis-1.0.b2.jar new file mode 100644 index 0000000000000000000000000000000000000000..ad33a5afa6ddae02f3ed0b42b1c7fcbf22a7d2ab GIT binary patch literal 109318 zcmbSy19Y8R*KQiywr#VqZ96-*8r!z5294b$jcqixZ52swdd~UoX?wqO{yY9;?EPkB z%=NA{J=ZhWQji7#g$DZZL#OXg_s1W9eL=lGWkpp4=_KXE7!+Q~P=O#{e}5-K{h3Tw zP)<@zR9S^yR_rWE-fo!@bKpY4EA*jB4O?#5wv}m$lzc{Ql)VM}8(5SPPaU36=hNv_ zgMWf`#$2{*BL}VwoKmRQ?H4NCKGKlP4=QocrVZY8 z@WsKcM!T+@nDFOieV`3XVhwrLq0@@{GSX$q(K(}EBc6ehr47h#j*gJom%AofiNl4U zxd4d@kk+mAQR^g51hh%$p@FTmj<95O4_8FgX-sK3*`Qi zx=73&4rpwU`p#u;c-Q26gUzBdLztVRA#}ZskRF&Wz&%Pdv5tFsx%-65x%LSR{UOGPLdw|fm~lQ!+c?5YcO#{= z+~@1XI}{{k<41ktyEF>NSZTY;#=n)h!Ql{E@w2{Q1_G0)9%NX1?H2pcOld#6o-2kFVk`m&mZhEeaz*o-95nH+~wd$ zMyg*P_m29#WIqndeFs*MhJfq|Tm)Zu0|aCU0R;5JF#fb3>fh`K{M9fl4P6c0{xF{Z zPV?ixf6}je0TmET_v`buTzX!b7@ zFn>`P+8Y|1|J$q3e-_V8-xq@P+W>RtUo7!=^55V8YFcK1e|!HA6ZwxgelY6f>~0Nk zG6w+ubyfcn{0|}i81-txuCFF<__LGz&iW50`FSQ+3&6XdSN2be`qlM*f9rn~^@HkH zv;JK)|54O`C;@KH|6%|?T=d6k|3hsKu(tn?Q~#N1eqS%e>xjRd`aeNH#Ln2o=2gc+ zE*91%07rUbYeOfeWEC4_WJOdT+W_g6j8Y3gx)H!{Q|n$15SEf;eza?{lS-rGkO@d# z(nWod<$HJyeka;A|mfcnWEX2~?<;2A>$;ErH`t)?Lf&iqfp~@6i6i|lfjAq7I zx!Dv!cwXA#hvoher-v_mmS|P|QXn|Q1QLPlt|0rEV*ly-`Iz1-NMyq4ZFnuoMa$QE|-S;pi~qOAw)VXZ%x+uJy) zbHWym-({>(m3dc>IpVHp?y7Ysagoq*!O8LOWRcy+EE~6=o-IBG7hLYEJ1!|Lq0aQ} zg<%p`VpS4R!3nnvG5Rq3eXxii=9rb6rr^it?6vRp8oXYuv$nIAj?zS%O=7))#o(c& zUxUG>Cn?wphCTId&alZhz>EXo1K?S%MYoRJH=#1L$Zo~5wf7YSda)wR`4x)rEWipT}!j@C=y?` ztUJ-oHG+w&ZBN-*$muZsu;>lXEt-nX_*o@3qqmT3c;b&5I-HdIH22# z*f=Ec9S8&c??7TFj54v@M=|-4>s>>;47Xl`>Cw+sAfP@z;`YYZKx?gT1>k%2xvs%) z*OFY(NZ$50a`&SmfkF2NfBatl#%JOj3Th!O>2Bks7jpf4vV_ae}vWjJ^ck>%fY9X*po1GST#P!l0S(!&S z7)1i(uy35+pI#QNs;xY$ zfcPv21(%ek&>9gDAfa8W+Ma(0-e``7<^nFh5woYz8x$njbH@KAkA*m9qIB|^a&Rq9 z!Y|Kx|1{^c`CB$$TjuS;MfJuT)GOXVcpVE-aCJ=`V~6a1&`2Cw+ors%Zo1WZ2k}8& zJY}qg{GM$eaPV^O5-{e98RmmxyJfgHS7MuCbg4G>`N=uL2^Icc-%qZ#c8OUrf+st;7OeKv@LYbqP%b1 z=`W9QrHoF}j;OZkY3bKVjn3R9og|<0+@YCfX)#s0@5zmRylBAzY*$w;e6F+OX2(k* zE8)ulCJ7~?J#izPI-+_x%7L+J<;b$)5p=5EhMjeazL1hvm1a`yuk}`{HUc}Qs6IZ& zrc$5gqgpa%3d#1k;!4&S=9aOu6I08})S=j`Psd0ZY zZ;19?jYG*>>T5fWcID3jz-h&U@|(}?&3 z1mj&nP-Ly14)G`_{UBWfxkWC~nwW3@!_+mz4>uGp722bDb;F*&%I5!`<(U4f8~){Y z!gjW%7G^GvhRzmtwxW)Xc7NqNoA^<=9tFgZ7iIcjCDHS+<`$-6w);1Xwvbi!fbC~c zE9F2su1fF?Xq4c-U};$|${pO&EhCQXmocxK$*i1<+y?|8GtQYfVLAjfmojYZjK$<~ zGF9pRoCxobb{2fj!XX&15UrOSeh1GX?}hWHVjkEfr^$x`n2@CDPlgij0<}ZUjlnu& zf)3j7G;OiN+3QTmQxm*d7s9Ku7sx8gj$%lSsx;(P>!1R1hD;wM^?z?eXU0T#*T zAY&I-$YH3k3td!KWI^)PcDhW?T}+Y1%z)f8@EUl`eVNS^yN?nTri4w{5`=m{fhMF$ z)+(Z5_XC@)SwAfs2hUp2VQAmfu$Mk_aV4|&2@K!{ZG?hNF^!m~mfS%e>~qU|5yf>< zl5|n5&L67t@XsvNdEN2E1OHnD<@`6*iCNgbmM5hDq`_c?ZmC`Y)U4DJ+1Vogb-Y($m?!8ub0dcyjN8a4J@A z1=0iEfREcFG<2-qCa?mDR#3H`DB6cUZ+^)8v!x;;^sBtP zUO)ewvB>^sdH5n6st?fHO@4Zun*|EF)JJ1UOEw(gd~XCYQE?bhT;L~#?7j$%oBXvrz>{kxd5h}ui%N9$ zBvni7NThzNDH-YXz>ZYA+=Jn#uHR`5qKHRT*SQp9;c+}AAlixy7 zz5E^slCFrr2=;Rc6fYI4wvDOZ#>i7Xk`j1H4ZKJ5A`i#8(ge#@zI4Yzs9>#gy9tY8 zC~d()!_rrAfcex1p}!Az_7V|L?f9g>GroZ4B|N|Z@RIIsR$Yw|MGL*c!`j#jytwLq zaK8Zo<5#(&^eHls>^6p`r*zX9KwWFC zL}aKvT8;ueiVCvr@%&`??H!I}y^N{jJU~pcXW!v%>YkG( z(Rp0ZZePIJB=ZKXR7-xN!&?^pT4vSWyR;L4SX9A93k*q#u8|0(Lxn}=vmumj$G7to zM4tU5%xTnixt5YM?WQ1`4kR0tx3ZJC+lM*Kl1R&gc*0@Q59iv_v>L=7$CqC5s;x|i zyErzk8>O6f@waR9g57AlB6}Nb-Z5z2$ap& zl)P$9YR=~{<$CFg(Bzs5Fe*-9=d5H9#8_y!Q8%St)b+kh7Hm0x>$Y$^?Cs1D;9M&M zosA}}edVG@>-E?)(OzYZ_!^#aivqQ*aTeeCaK|MPZA&!nB%gyTChwOiA2_?+2zjS$ zqi^34gGUuG>4j~!3brU(#0TWrc%vhkbEYp@zGqRo+^S?+h|xukW6n<-#k=bTO~?uv zr?8p|M=!BQr^`t;93+kJSL|}A&G5kNhkOqXdPaYfnoPGGkJosRRe;ED(PA2-i7~h}_h0FGi_T zfsvh|ihO8Mk|`+22v?AVQs*O_PU5J{!Ixd{&hl=k9@{5!1BobK@By7SSM|31L?!)% z;V|pGA;^l@S+jOO<5@_=MX7J)gR&vEPb|NJV2#Z3oYO>FHGFV^j9xt}(SUOuNr~tp z|F%4GQ$%Zqoz@Zx(qRmx^IX-uR~-rq^(vq5{3QmjI2y@jdwGXwrj)sl+x6k5xgn`^ zJd;^MWIgtC!~xrPxJl&+aP7<(LOy>GjU!T+QAH=Bg7#K)el{*B_Y z>pHX=k6TRc4ciWrh8k`1@3KOCuamsrs5BGp=wm-ezaSz+iu*`1w8@FuDNP`CpMUnF zh zPA*$B^s$7}it3_}f}WyPKKW4Y#kNmVxw`zHuec9Ak1|czu>083cB^3ERwtTWIxs&| z@7UtIrJs;#Ntowu^K_48WaG6|FJaZ51(iama1A{hdeBQOe)DD8Qru*M=IT8t=J*U1 zXK+(;;JFPa2vy64io4&zs2G(QwmPpBVNxVe6s{w1OL~))p=~1GVW8RbiAGtMBpjM% zSd$^Yx_*0NGJ}rJUV*mnLyxfCY6Df>w&>`UMq9Kn1KDB+TkrLJdwRw>H%N9)8JNei ziy?(xY~pQSX5KWojL_D@+vtrheIHhCJS?(9ad{Bz+~Vr-IpsCM_Gz`LV|l2oG-a(wXaNKhG)WlDHBgXj)VZsnd>>be35 z5H`>Pe86+cgZssw07Z}=_pq#WvGu#}%jRO9!K*%{VQla~JaSkp`{^!%z=<=4I9Q`R zSrmnLYae3lAn0t1H!BZa_+&&X`pUlmtV!{de2|8pKXF$LBg{FRB_MVNoRnZMCNJxT z%1L`zBCxsWFeIUK6En}j&O3nQgM&4~6`An320aP37eprn5KFxwI|5_=B=l5R)?pF{ zXlIsh_kamZt!XPW)hEn$A{^T6V*Z+fPK1Fzos7M?i8#cB(X}$CaKeIfI@YgdzoWuE z-}S7+i&wo<66#$j`ai{{}=$P0gh#a4yj#acr8B9)z zfgQ*QMumaX0&8QB73x?kS_;y)JFi2F*A@hk`M9zy*BH=iGQSdTa4Z2Lj?+Sdq2D*5 zQ_wiob!GoC@`iwXelEHQC3Py-!-iXN@C3g*r{qy_f@^v^3zCZ_O9A5xKg!*1wyb;% z7!T=r|Nb`T_+7QsF-E{pq9m*l|JS43b>tjEgigxhA{$OIgyIC&wuznF7WhE>YDgWz zevmlvcMGVJ?|1qcBHAN}=;s6HlI(>@u~HKTbrqifD2RarWuFpXi(yWLf6MZ$|24}i z{DA@gT1~kb1MGhk#(yS#o;$mRx8UI5eBgTY;OO9Th~51YUE>p7y+d85iRr1DMuS6L zAM&vVhPt-1auY^|2+Ow;lQmLGa}(22s|a+IlG0OcE3pQ8yGFXei8(Q`ZUwH}e4ABSP+9Zk+9N0e&^x777U|f3zNERdnRLh7`0XnDw z?cPuXFq~`xd?da6obVicADGU{a@Oox!e2hiH_TK=ml>DN+@S4Woe9vKyC1(q(c zylVLYE2FU23f8|Uehap{-AIenP7LEd$(t-6JKUX5zee3Uk)|~qtapqY-chSZ2_D%g zB4@gVt5U;DNFm4!VTRYPBE(iwLVAdiR9Ja{d@cZGTIjX++dCPi*4eGh zzI-jKh!RuO%#q0{Q$?NGyoOWZ5F8)7Lyh{Dj=@>>JsN-MMIz_<$WP~i_*KE9EfH3* zsj+Z383XkZ>;O|3uBw$im_GZ7*>YhE(FHh9^Gt*zFj*8e+%R|S|?uCLVJMW2;@%JM46n0L&xxw44JP9uAlXclxDchq8eroi{ErHs&EOE zpUQc2Lvd8BlzX>~9SM8`X4inKVC5-=_h**vr49Y45PXG+C(<@#=TdUYuaK;@wCk2z z&Hp8+b?_Z;Yp5jl$FoYo&xX|FedsMB1h+JZzS)prSism^6DS>|3EhiGi`6k8vdkh! z%^{3~Q!?jW{qddC&(N|sy5r)I-@ib2N5_*i6d7Gj6O&?a$h^=6MH=>PVbVFQ62}k@ zpFHF4_&*D@hbesESIDLD$?(#8;u=^d&*jz$|M(?{PsaxCxzOPn`dsZi1 z*p+LUBj!?0T^uPso|sz_bvpSg+**94KH(sVcDx9ZnG&&DmQgeW_NQR&7x@Nmvo_s` z`%;zMaK{FGBsw(_JIh-J*a30sh}`( zQlgROT0C~?5$pOk-dm0@f+%Q(;a`^s0PXdtI?HIYr@ZG}4-qav?o$AWj+%vQNt#+q+ihMO>l?O7tKcY^oa+FqY?cl^d$8qx;LHaT$#XRPmpr!FS*=0+f*28hu#nr1SqGR_PzN#DH zusN+X)%SjI1Yp5b=BLT7>H21~evhRE_&U0K;lNUv_4_&sr1g%8N?Pf;FMp4q7jG9Izd`y|X4vf*vNKGY zPRBx#;+-Zzyw5^_ILa%Ir!1DrG(SQa$_ikOp)twsGHFY`XFqevVDpe09eVl$jM#WH z_Y(CA{5XRB|6BOqE$1KII}v$V89QUcSLFQ9%xn|G1mDAmD*Tj>xQMt7%-G#SfT@WE zgU2Z-Av{+;o+{**6YURTPbm_KiAAf~l)Jm|?FzJJK*O*!4^=Fvtey!bn5I1@_#MPB zonezsF*5E3M~G8dt8{aaXqnx|t&%EE@G}N8sJrG3z&Dks7-Yyq+rH%cn0jRkS<p#7dO*VhMY2R|L#i9B{ql_$<&}(eK^&;# z#BkQd%YjKk^+l{a5I4FCWtu{KcM+_zCiE=x7$qf5nkwU9-sy!+Zg%cD(=LKtv}Yg( z+{!lF7Q3}oVE((oT0XxC3!^Mct# z^-DE4Mv+9CnjZ;2$5d0R6)-R9MQO%PkVy8k^w(Y#YY3{A()PX}MJC>__jGS!s8Y(P^ZwN(d z^FA6~bpJ50&z)FUo6Cf^7=;)DR`!RxsSN$h5c4+jky}-?sV^kqiYEC=*@d};Z=!88 z=Bq6XMiL4a^3&c^q+{(l-{GBNT_>F7+qQ|+fdW*UDn{)jzB2{Wv&e}gIQkB$sISMt zb{UzcTx0;sN2?{ko{&RG>e~tL=4@u&2Zv|1xlg^PP4i)p>6)^MESlt|Gf?8nRU?1-JnwZowL=wtI zJC*F;5PX00OnD_|UH+@u?Ip%GEVs$JgBT$smSPn)_Xgoado6Iv+f`;)-^RJ^ zTG;vX*?L$~L+tR?%IGmKJ+G<7QDOK{Dv`%5L7)Q#o~ElA5AOE{t0QE9TGQPp?q zOrR>?e(h;M!0Dc^4beQ|C#xh*3lW617&6xAi0;O@uy&cfT#&U6xB$Sj9`jk6%MYU_Z{$j#)DIz6m)p>;zui)b?`;yO@Kiq!|Vt{LZC2nMo14et$g>;rF8#LGA3%k`3UcntINc*Wfq^zJwQygN!sd% zs!8xnBf^RrE|`n&I7o#VH`qp9#+Zv6)r)$bDF=u(_2N8^8;(3*Rh{pZ@UyB-F8Hld zUR4eAzf$!dJq8&ICue}|e|qcDF?_GV3s#JOHdnxK6WSW!hwIm>O@`iwU#`$-sk|#T zRnKG(1RpFRNJxZvY1DZjpHkg?1J;F%;vX*{f=JO{!pLQa^uCz8T+Y>njE-jZ9H(k; zpUpz9F-h=qMR0KE{BEdn05c>6<=U`0@M*W>%A9?uD;`4DA;P`S;Te+`rT%e+RR_ z3X=a3w3mIgdPMKUSI}Op;`3BRKqz}et6PN|6dmL`=!J9}9LObO?M1-T@4w>FxE@3qhC1YP?~bDBRH$owsRI z-0E6OFhZ=W3Od?_&fHaZQMQn_36o?*62;ly?=WG-8)Ja*?}1sTuWRHvD_8+K^!1C_ z`H`ZwDOW0E*0yTO#RoIEWUYFox9ede{7mE=K|Xj`I+k>@3E>5CVEN6{K6H>)^X2TE z-`_#vUef7)qU$a*Js8`%oH89auh3Hp5R=7t*m5+3bg z>lLae+gW2?FWmG&TeZbUzsm%Pga+Aej)o+seF)Ltl)J>&0zCUxnS0nsW59AR_aM?Cm47 zo%xG8s#o&K3%1>-s!bf`PgFbF(4Q)|*=fr;gD!?1=?T1I5k5_35>P(oM+{z(fJsB= zDA?WybKGevF|J#A&qI$8Ut4G|mY!kC#<9Bb9hh=8Up_ z1GmyST2uZZQU(EP1qL^R+iDDpYP7~oDY2fOB?6f}_NEm!cNEeAf~=1M-P$+hi>YAG zU1ju5*_XQHYu(;^sTgg!XiTsT2MjTpwxKYkQ}kK(Ct>7|U+>q+h#cprn2D*=@ZQO; zG+RThd=>gi?v;_lH8jmfmOy+P%M*f_db-kAIrBHtP`z&R|9&)(UF)X7*=*SLSnO+9P8G}vr zqynqJy?e{DzF2(zb8aW{=>;~OJ~C+EHCL~WzO|~Y1vjmpl=*eU;EKBd<;DnLzHw(3 zN|+MCq&lH_J4#OxpW~AEPV9C&^zM4Sc2_*aq^yVQ0SEPUdJfspPETOjv)L*3s$ujr zD!Q}!kYzEEX_+n~GQAg95Y*5ql9?V8*f+_}!b!t4spNfWa;AL^kl)0=OZKQSso%-c zIPrq6A%(;&Czs2+8i}R19ZX_B2Vj(1f@Y~VHk&IGjl;>~V_}cSn(*#Vr0;G=g>-I< z!uj?_CN+1@myk%vZvv_Dc4L#3wIV95>qO>c;bJXMmVM9Wc*z4YFOXl>YgBU3Vg6R5 zYag+@+%)AO*vs#}{0X#tJ?@GD?q$F?EVSRavouxb{Ra*zvv7k4O96$jS+_(z#?z3* zexjkftq!u@x{~M~F7KEPNFAYziV~?p>maL4dwp$3sW=O>bxP$eRjMkdB(?!qxTYqw z3$e4pQbbHWaZ=oK1-!`*6)}cP<3%u}aV<1%Z(uOO5%>0==4JDbm{;s#R?@-hNsmWH z%koAxQQLV~bD-M2%Mr}poq4F57|@}E672MBn*Lx$TLoseFSsugGnJf?cn{)mQdP|kadUrm51j1d&|-c zFvOnF7&Y(hfNUl)jaChAY~xDHRxxJVdrOV=j8x@W-S_#kPHgh>?ewR8nf3uW9w@BK zev*{m@84f#eu0S-doNUo`E=+nu)}iOnC?-|8+N~dOcbgy70utF@*-CT`( znJ*SpfUP^ccItq7jW>0zab64!!*1Whgy6Gm2D<@(llN-+y@%Mb` z?}t8?mu<28#B&>b_E0#Ip-I{zUU{7%6^?;yIvu2a)teb*+^%G<3wg5%Ifun1Ay&aN zUg9DV8Tr^%By(|jP5w#NgE3;hK-Ct7MR|Tk0+Jr#QPm1BZbk@LCRhsxVe0xmhs3TN zpHJb6oZvyRuyw>9kGJ(U4ai;^g0@YQ5<6Z@jV3Q-Yrj{- z)$5LKxGJ%x#nSE`R~|OUtFG9(8^+AG^i{J(<`f`KxTX#)!Y!Es1>g)2%IJ-Vfino= zXbp5*n;;z%GPRQ7NQ%*KKa)StHz`+cBBtN56Q^IU zfMRtlmQWjsDbY@ZRk0Nvo8L_3ljIcB$T^6eg(g=T`8^lf^E#%4VlV&?`N7D^A!{F8 zjSLP_aCew9qy_=xHr5VGK0Z`G1$l-YxA?u1VutR4gNG4EfPL&McHjMfv3pU5u=WT- z>OZi1ogdhJZ}wl+ly3EmL*c00o zXDxOQ+KTjTw-H9%$ojrmk{DrddSZ_I?}sFVEFsyPx3i~Km?k;)AO~ZT7%r1oVv@%q zIVgScn{M4TTm7~kKGb!y3aTo zQD3{!>MU_Y_aoRBZo=!x>m$p@qD43^8p?+)^(5#jW9W-qrB%z-qDvk=q{s^LAb(I* zl&ZMsAp*aR?1J>v7=SK~GWR25;&?>A8rodxvjVS1vBUHVb(`I!+qMb3K)%5AigjDq z{MLs6yI#1KN5I=Zn6y+dL|K*f9rT-j|JOg-InIb-<=wBPU&g;4k|F#DllTQUi0hW? z5kM8asF0`#E0_lJdSia*~T@bmAZ*K5tZj33H}cy#;b#uOMnnE~I)PobR5DV{+Xhs#Wqj zN=C1aMQ?JtlO{9*Mo?2S=ni#gD0+T=aQH?8l4c9>s`HDsr;~JX=$uQlx=Z`b?AaoH z;uxyVQEL0pV*OMxYtZ~gk4Y_(wD#JW`^NP%!$tLc21C)|LGe;b3BzrIU1g5FwkV7$ z*a8&j;PZ?ij(F*kbGy7t=33xscNvnLJ@n#ISGvs=+>Z+SdU!49?o~ix|Emi6$MNjf z9?;K{3{F^)TM>9Y7&boK%|s_DIZ`H&2SFjRuGb6+MT963PaThb=PHekvdfv=Q8uRS zFA~`&N|1-3>N4NAj~JW47SlX~($FR%#igTteiR494z8WW zfCbaDZ6&u8_ndi-+iW{@Gv`uwT~%=79Y3?o1?-aols+Dm9qFif{I<#?pFB9MbhhE< zwfW|if=HGGnRlbFHd*D-FeN~ppoUqgouu%&_VWDE(G8!Pi}R2viT#_8z75mv**uc4 zq1j?0EX}<#2%C8b^Dvde1=*i7W8sPtPJcJBLZqfA2()L@Y=%j`vqaF7~XzH zr-jSeW)^puT=Z8&;N@AR?1F$Z7Aq8!0)T6IR#f>V9Muw4g7s(~D^EWPc%KO@@gD7C z5tqho!k(La)sDmfRZ4ii@ie!zW-@W1hP8g6t`Pr69fDLG(oscLm)4FenARYRA{m>p zq-7lbc==-nCJv@;=r55D?)Wg8*FwbleM%wiaYOosT+(_nyEGc(aTs=ckAFB=+H#WM z@T+Bv{<4+-J?8$?{^~F5_!+hFR?(D4QAB;Fr_(LzRhtK#lR4ZBQF`9BDRz~zR7QC0AyusRF?SYH!qOQZhZrwb=#X*KU4N>}o&>ar zwp3=J4IH&0f(~vvasj1bXMa-1?#^b;_6esjNQ^^ z=M`ec=%)`MnPzDaH8Qi;MIN-?20~g{TqBz2+-b3K3Sb{J#^QR!TkU8{wKL~w-12Nh zg}ct+yVFEz9gSC>UAB+<6hTXX66Gt%cnxwMJMGkvxB>bU7K8?cDIDYj{x_}E_z9<1;H;k79S)gXy+N6CiRm!(y&sYJkrUxWDWhKy&YD5}mlYH5b_ z2b?&gy;I3v;X~?17yh26EZ(weoWahyez#8t{-4)!3&ScH3}lDK-5 zQDqI|-kr^(EfG=?m0M|dyV8^o{zmNc*>K4aKImIlsPwr4;=+C(W#=T(;*i>2dpue_ zl(U%epkLZZpR;Si}1y`fzFiG_l^y0HZ4FFY-CdabnExXG4)> zqKP8FLUwYcs`hb6##7ytTd&g%`5CnZ49@k+CejTbueke9dfl>b?*zPiQFZP}ZPbqV zovV4B7#FF)X2H_bDkxf;4SHo~?-_;PfqpH?H$-=S^GQ53cqoitK5RcaAr6zsp)Tt5 zbc<#Y=1HKCr5D+MG)LIAUwj)y!U$H<$OTr?&<0qOK-BN`f)NCyZ@yVY{A*l&gXlr8qAEeVJwhg*R08#YfF#;P5#^&_YXvarD z3J0uPs8)acBjvD|E5x*Z{UykEN(Z=Y5ZVy`bfn$(L@J58CD)7~ukY9I4u}DzS6gnuJT<~l(6yk6GXrDX4$?*ZU^AX!$;ac^cAeANvy4>%A z4OFzcaErt34~U-@feN?v)yPr*wUl7|7dQCH2YwYxyr5h!Bcf<0(OiSSQr=krm_&_* z<|asu5Nfzoa-4bpdeMN?9_NsQVhc75d{;hVBI*oe97bXK%k$Xc^P`t1guVY;@lfO3 z9lxEp!qKU*q)zpv8MlzcZWAJX6Z-2u$cv)!9HrE-WG^l+1M{`rc#nGrOO_aXVTto2 zt9@1G9F|)(AH$;0M#s9=E=SNV*~jo9zDyzPg7vxSBTQM|PMr&7f+jpK2*agHy|%^K znFRndzK3&%eBzHcipS1J^t=mYcOzdT_^TqRAB+mFITK2Nzq%N(;;8l+TZmJch{`7~iy|m5)5ncs7 z`-`xDzhOi855oRACI5YDNzN7A)fF6G4E%h1E@5+IJ7G>|5>*Ub5ia*bU!BNPR$sgG z(`G`!Si7^;IAdP9vxzD(c1GF=CRUMv(VqvE$V9{4`z^kRwtnsYQY<=L76l6o3HL0i zSvE{&9R(W&D+5c|)z>rBHP+SB1yrPowJ0F;2RChF0gQgHYb|^I{OwP_bMsGi#-H5$ z((e?FmWF=qcZ%9IXf=kxulm)y8li7aDdv|>p%t;Eq<9g^7TJ#b!`Let9YbvFw!h@3a&lQB!^%u5=O{t*EPL-|CEwi5Vh|J*KEpJ4<A@uy(&=M`S%KOR39;x2#P zNTer*IUz%X(;tzN1tV=zr(u(p9GzjL&Hg$yRt~cbGXjCSR`g)XSh;>U`6E2;^%MT@1Ki1I{o!V_oB-y7uZG0 zi|^J?Ek^B0J#^nR={Ps(@=y#w8S;;vI(snWX z5yf$paWU-UjbT$!KRECT2JBGHqw(&z#lV4=I9P9k!EHOwBs-Fm@Tf35gWX_nDJ^ch zg@caQo6cgInyl8k>I_-+%tX2lG(czQ7FTke&W7ktz+jsc3RzwZEmF*yzu)BcIadfn zMk_Ny4w7t13sNSW))5%R{79+Y0NL*DHj$O`V9lbBK9E8WZy{_`Sfu@tv2r(G4ppeGg&EMZNP>dJdP>GCEg9nb$t@_De^4X zhgVJuZJ=JOU4rI?8{5@Ps{-G*G#it5!$~Wvzjj_=nziN6#~z??dOUu{5?Ma{?ss7| zj_0Cn1Eqev#Wdy$`TB536_suoB|K+#3#I=GY+WnC z$tq^hdHK%>yPd?SXy^YxfLiz`O8Re3Q?{K5^y*qx`eM{ zdE%KHXau-JwFAa`GA&l&GK2OVpruA~GzZp)TS88lO&Q6I;SJNPHXEX#qQY%N1^_zo z4rqzY^oBA$B~f%^BW{63K}k_Ir;LoE1N8Tp0hN{NBS#IKp-JS)=%_s%{hy*h#%9RM z2T?;Tx_Oi*uDOCwEW0Hz?%Iu1`V}p)iz5I}VO7B!=QZwb<#-Mu4it6ax%^x0BC_Ra zn1)8^L3GH=_`T=Lpv zzh<$lA#di8bS#u)er=~H3tp5=7^uI()9bv(dYV2i0Cp$AKCCv_L?I{c+*;ue268JvK^Vj2YdPBB+};mq8R4u<{#!2c>Oyu|L$@m|B##hZ;|^a<{B)= z^P{@;Mq#@Og=A+}V_$AbPA*=A(sJ`>vlb#<3K|!2VuwN4%*0bDf*|f_Afyw z5C5oVy+MKnsEPp_sVT*K0&nwP@iBM_3Bo2%N^)qRLDFSK$JxQ{?@p_$-|8!Qx@ z+^;g-StgCY-JCpubiHw{#~errP6%c;yq&t?^A^FZQn`RkPuvtl9B6d>e#xW&CsgV9 zyvxf&*Y-KiHMF@pP~x*F9h)mzkHm2XRT`hoXHjKOe*&#V@?D{P2E0AiAoPfu2j$h2 zn2Y5FE%#5_Cr0$=xgt;R6(-J*&PyOGo}_wIbfLvvl8A^V(QT_I7EK6qWh>8a@m%-% z;ID0k)T>k=prKe+&xvQoCG^YlsFLnMGc_!~#Wql!bpmnJ)$|f`$Tlq6F1{y5P1Mx` zhktly+1_YWw>G*7)l4PiuboScR_eqs*K@(0y=&l6w><#XEZ=rBsp8qsWx^=5C^6dp z<%wkvdYDJB6c*8?iZ=iD{o6#PmKa_&+d0Hf=cIrp#y*A-uSDwz8~WHX5&bk+H z54J1V?jFp<9nF=D;k+58WrcY04>k)jQ_D?)7;7$p!x2*8khpf$aG4ANX_dB&s#dwHZtV&)Vk# zSAbE0gYe=O^tMl502^QcR`i=zm4wc#K_ofQ6HCkt^vPZCH68GD$bP;0au2@=3&HLx zU9*L#BNRAAdaAkDJY~dKO^igg01I~Un3BI3|3D->d%|~ZhTo?X73fny%=D?K; zO~GLdAB@n*p~=$S5e#=n?4m?Y2~>>Pc$LIF1~W^{``tJSCAxBsmx_I#h?RIF)M&E^ zig?se-Qpr@V;q1`umaf}q)W)n2i3q_Dis{Nlak)caB%R8*mbFXB-*FIL+0+=nS}kA zPfmu1P&HnmUGyW+|^a+sJHoGXNg=9R{1GZ)|J6umCW-> z5e%%hoZ)X)x-fpILcS-9n)p=}3IB@s|I@bnCpQ%R_2Ndh+KDoXI_isVVvV6LXaHrY zIUN=hDjdB6Bs0xeP6>C8B|V#U2-?!BQti%lozEY_CQSp#Dw%V(cj zmZ!qyocg68IH=DSrjC;x2j3_7Iz1;^Ili1+Z1_M-MOIr)`(wDfN%qtbIAGyNNpS8D zI$*J3#zTn+BT|^OM=3%XGo!Zm94GSfG@@4R&GBhnL6kC@u?*&uH6(BS`Ov#vU+}&yoVmB^^ z)6H9QjW$)`L&M8tj*dJQ5hJO|n)$G`{mj$$k$@)PU6+LAZl=?h^J5R#h4VyUXi;aR zmBYRdMf((+ei@UBMavC2^b;hys#g_fO7*ec2nyhxgOR1BEME2E*yRUURJpP~=5qtu9&pLv13jD$|*o||2!A#1s z3j2Jz=U&CphgZNob92`EY_n7>HWpqYV2Zr?o07a_H8$zp3gm^wbFlq2tnaGfOFiDB zv6`~o5MLn5*zcj8LL@tQ27CS=&fYRA&um#2#oaAPAh^4`ySqbhcXxsZcMa|k+}$C# zyA#|AuHk%St=?;Oc6Z-<4r9E(`0>qIRkOUF>P#IrWm#KO))K8BH9~A%3V}HaMo*s_ zwOX#J%lGGilWfZ0WUPR)QcsN)dKi)z+p!ZvZwnOwSF@MtaR#^j@!eWm;R3;v(z|;~ zibHAy0e--LHs8Bjzr`818sD>xs;YsGUC-!Jqdj0uMn#cmE7V$$!$D5IjluS*Sd78gdQ1C*d zmkRPt@|gSXB<80n;TKVm^W$z%ABDzxxd;+j^6;6vNTIQOX$}5Kl>4N2Tj+#0#w<1Q z5XMDbW&QwxH=@P#kh{zLabjL2!Yckmb@0HLAzDUSDK;aSJ#WuJIlP9fPgQa85uNf# zhHFb(#xFo++N;pu-CaljE#(P6u%>FQ0?W*7z`Noy&ozCR*^wUh(lg1#PqvKl6EZm& zKDnNUS-seg)8XJhC-X!MdB9w@&9Sp`REQ)5rr$kceHX(ay`au?90gwf)L0B1*|yo+#BA`N-7)gqXU#oe2utgn?j1 zrnQ6U>TWh}!dd~(pwEPiuM;XTQ;zR^nDrnz59vHV zjDP1IGGFa!gqo_HVQbjAu?{?CkZ{s4&NM#I1&@Jl=#t_qPN9}OUk4W>Q%Dy^OW$* zNi^g7QeD#;ZNj1v7nAFF^WEqgm#gpV!!0O3FqL_Jtdu@&B=?zSlj&AR5TyC_R?dTG zf+$Kf%_tLbvi8=|JGl1dW}4u>(#~Ei2(VXmWXY9W(XU=MHii?tRfyps&XvUlG_w_S z$Ng;OSjopOGEbMqeKERRWk0-69|alU;2BOvjY$k&z6#q+4XqXTI%`mL?#1aBl}2+{@Y+>i-A-J;KSAfwV(%|as<0b34qcdW zl5khi?p!Oga@h5RB&}5Xfi0L4=iVM58|bP@*(>Z(B&@aHU?W}{9IG9%dY523tvp}1 zZe!*@Hqa%Qw6NmYRw$7WMAqlL+{9#0z&Qk`5!OsvK*y$C&`eL37CIq}Lpdlif4C`| z6&LB^00BBEpADpeZ?pxbanOc>k!e!(*_1|bfvb=H1EkeiMXN!`NQuhFlNMQ_<-J_+ zOU&T!5vgJLV_!4N6Pm%p_h$g$I05_F@pSr2@3S67SRXktF_&-_EA+NoXWQ&G2s!DtGHe*59@4iNABG_lq_8z zu}htwu+$!k-ws}}fFAX+`CvI~Uc2k#Q;=<>r#vXBdPb>QV3et8zKMud)gslBz{fYPg zx2XTwQT=bs7b!Ua=1b57O|)PMzHJ|*y`iM#$voJ0@Ft8J_8ojuA%v!53B)TpDNHDA za@u`fgkw%%$ePo5#>3v|>U!1&V79{4j9fe?JvbsvUIm=x1X|@?DXrnh0brqJyt|Wc zT{k?z4tL!i4WoX$944lzHVnjc+7s}!SO%I`Q3UI^=hnIPEYGBy75jC<&4nV%pX2ZV zQ)deAxtbcph(>bsNy;Cx4CF%(%V_1-vQC?lLsyXlw zMn7q-7oT6{xVI{^cGh_KO?+JLSa8iCvwndK^m0r{@R45rC%#eq})Yp)$4K*i3{uM{558Tws zuGP|{x_Rl4RoIs-P0dotq!(qwu@Grbu!5W@nD?o&NOBRwNM10Y~g3{eOZ2n_rz^g+-m zD>%4c$!~<0uS017$vg*q|4A_X4)phS**{*VHC zuD0T^GKlPLivF4-wM!|bf<&&d4r$J&^Vf6!BehS04;+NCOlTf(fa=bI4Nn z7U%97XtRIaC|=S^ij;Q7`_bv{aL+RKV_^%qlQ{%m_&bJ}N>$Z@LC9@0OxeAhti$h& zGv+#j(=cD14p-EqY;#Ydex6dT!|FUOT%R2st!*B8*abwhxh}A|o^L2~C~9C!l#mnCQ0c5rEiaF)=~b=Syqrc>ex1{UDsHJMrG+qT2ANd0bxG7L zKgA1ZZtG}oZ};%M(J_2JG`WY3EbQ$!WS1~wl=<|hsQT;xacdF(Jr!^HA(;&w0{MxA8Ng|9k>7mbs}HHtkSRq5w&3qz%%2PxuTbm53J#Pv$Dq)i4foI=$lscb8?Du_R9t zRi$IRdTM{gZ%l93c!}uA_I8j+HUh@hAi0krrj+<1+4<=-BGdJ3tAl(~bRTO{UgtaC zon6V5wyjF@5#@LhSYxE_G7ZiQdZeap!U=2KV|%Q2sUm}W@VMB}pf=KUo)QUlx=o@E zn;R>mid16Qo(yZl^k!}Xc?iaGnz!{+Sg{CD@}13CTFrFC)s-+hM zAy~+X01@j$#fD>SrUO(vd4wm^obkM!(>_WF$m#^z)5P`A)w4w?O(9;Q z?%S$O8L-B2MfpwRtV%U`53Pi^xA zUmdR+<;D||;_;)=LB#lnY|zAhr=4Y>87U1FZS-P2lovd{65!f6Hx># zyk_~)eL&>uj13fRg&3on){i{;UpkDA#X^ct3uKAg1Mpk1r?rQnWH1J)lHCewIqUc2 zmne3?Q$_Dmv1#V!>inw)U-l*;`qmsNp^D&lmYd9TD?;9DpvuTt_qZKbPA%v>ht|L6tE>3h6z=V8^j(Hx_sg>QBkQ$Roc&33g$s@al@3l z>y~?G!;h)QAl2XBSNV+RL%yv5H2mCqAgHM_2zuc%X=hZGhd(S%P&z|jUban*R32B0 zgqLSCyF-xn0fW>lvwwz9EYD8Z6cFpJr)p&d&n)e;KiN9NfDW@f>C3s+!%IG73%@z<6`r8bLJ z0BIbW<>Hi^@$`V(-U6i!K%8Qi_^1X1Jbs@8>zkH5oA>@jjyG8~)ForY}8e z(ql}-XDePOYhF;@yU-U3Xd%6U=C*t{o>v;|5&jHX5R>lrGax|s1LSUSy#9CiQF}mA zGa@|%)v5j5`N8DW61YlHVKFB9aJJFiV1lzIj|uTg9ULik9-UdHB);&Q1lClsLxRd5 zwR`bMwHlYu4fg#5we@T4Y6S)unaQz7WQ+!5wFns?)P>8tXuo|4=S{?5gDvMk$+F=& zxaEv)Ko56^_ExfT>HMx2q|Ew_HhXQy7P+N??{+hZLREX-a-r^ktIK@($4dEJto?)U z^Ni2j_brWm&!HgYHkP$E)8W=igNbQxEL4gScvT!Y4dKk0IoD^NLyT=8PkK~}Y2}5s zl=_u4;~NWc9Td7zJgkT_!8U6bk+NQD>D}Rb=HxMiT|r*Id5sk_pym4f^BD;DYkjjM zDd1vtO9uC&Bm5e$NN3VC+ol~-ybeXVZM)Nr&Ow4p%NU)J5D5S48irx1Yi^%5QDwJRXh&LJBcfA&|tIWBPW z^BL}dLc!IaI<$Yc<@kSN%N=b^oLu!CjNi<7f!d1AwkV1>S(h(4CWHYfvvD-!V&5Qy zl+<+!S53aWVp~8zp;;_ViD6v%sg36R#)+lwWh95l(H_=>!KcwN;?~xq*^*Kv9y(+D z*u$FH#M5WeOcAjTc5_Mvr$-4kyohc3h25Yz$3_g%;IsZI^SF)41=Rr47MRL|wcXv; z@m-aD?C1qHwFNeS1y{v+E}`(zm?}B{aXzG|L8(kiMMZ&Hkl#GD3r~}wwdTZme8Z{z zF=UyVQwL~vprqyGdKct^v3(h{UcIILDg5gPpZlMew&%23E71#Ud}iEjU${lhr31FW zK2u;{yG(jlwlWEHqKzY#nfYF-#{Z?6l_cp^YkTcSQL&51({6q8LUC69bk1PUhU&#N zG97dIY%Q~DGsK#^xPpTG@U^C7LE@gqUe39ajLjOwg%V0T#q{ro=Ctmy$_V^!;q zb`@(?Y@Jnz$+HY1y)vA3Svn8M8%jJ<+_a+&&PY7;Q@o2U0NaTsfp z)aPBbN*kWw=`R&crCspnEQ%ALoC#C*nB>_3Pm0__Um8HRIz{2R#0`#-fvuc{Rfvlx zPu)FK9cWB~RxfR=W-1~k2SK+u3l$Gp1)_ryvE;SeEUQp+0>_cn$qJN|5H*pjP{Rj96@~5Vy~6l_|q^5nOWn)gk6EeTkPN>AP>%-oX|u z&j!_#ucksF8_UDV3Ncf5XITiaH>s1a$c`-gRe(2bO0gA1DY#mryH2LIsx;-umNxnz z=e706p|+mD)96Zt69DdKsq^h1$>5bvE_+j3BfMA#n@oKBt~bfmeZh^Q@kqI(0ae_( z5nOBrTcmwf1Y$rUnT73Q25(=01hYgiXwMNj?$5aE?|2!)hHa2!ZSbJ3?2iegAI`{} z_)hM=J4qu>iDix@4CFE6ol8fUr=XM-P3gt;ZGZai`-9QACP!h+Yo*-_(?J(8QCR+XsxC|7*l*VMLaR}KmBYW z2boD`J{$fa_u3Hk2}xGbVxgzeZKbt264}{lCHhYPI*$2FHYM{k{yb95o-Opzsu|X0 zJF5t&>x0LX&^0ieh&iJPVF*47K~1Vq9s6s&9bgDX)yvfo*a0F)4d!b0^L4UP1KJme zJ6R^>prQD@taJ+#$`Kcy-dSPK>Uk@%vkLjUuufct4pTM8ZPo64#xf~%N$u*y7iKu~ zTy3gxNbX2kitsBjru;*};?Qxl4MN@M9usQR!p6;1Agl(naz#6!v503v)tIYew&&$_ zXLYwD1FqJ+)#Ht&3{|GOH5zx)FP=4n*e|mecyr;)oGl&`$&2R#$by@CDnn!AGTIe- zu7xmrb={BpvyfCW&yfk;WDyIZ%eVeLlC@-oH(pLZx*8>ga_{Fq5yjkMz(uKAd9a0+ z1)8ZMB&Vp|Hi4P2dvK#Gd)krIkO9NPnp3af@C)ryIouCSNmnF7)QqvN$#_>O64(<& z!ccT2?mmfGAJFTZ%MR+Dv0D@3aR;z*HEX z6yjSKPlrRQL#9CjfD&!J2c| zo>? zA{AxXrB6h_Yr2pl>xg5)r_APgmi2@!zw)T`>)=CPxBSI)lLp+_>$Aj=eHob|f!)g`c( zlYnTzo!(lLv(spHA%7U#*_fz?_H*H_L#!>PL3_#sR4Nx(v%;U56-07|J@y9+llBT~bamt5mL+&TNZU!&u?6{57}1>WDl&I49E^vhVpA1n2QY0*7cLXyfi0S7OI#rd`uvdmKrabCbiD4dN<@=vF^uyz)5&v}_ma#nt))kw^nMLU@rAPKIj2YKJE(i;f>dEJ~ z;2shv4QJ%*Rz_t~`q%Hpjb&)AZlpjrQNw^6(C4gk;YUiZolw=r&d?nqJGvU;_j!KG z$A(uB8f$k2NEF!`bdhbm<6;<(_K3pE*WEgxDG2{cS?1ydD^06RyMU`QVkD3@Vq9G*6jp(J_fqFbU{sg z?dsfhWG#}*vhsUpyAgLf_QO-|Buk|$uq)*Q(#Hzz@jVEzYQNK}+nvAMKMv?ntlvL-1;*K_sj-mjnhg2J1mJ zMY@OIMewioO*GqSf1z7?F9vrPleS26C5Xb-aGW-JJM3b|b)a(}%ho7#<{4we??yiO zqn&gT3TNPNz?fIo;r}Ha~U=e25l8w0`z{ z686^^L|YC9(%U30+6(jj%2D`K!I~M1fcUbht2CLJ zg011?+Izt}nS`@%WgYq{K$bmiz8fqCHIQg*r`j_4Bh!Sw$LxZ*t9BJ?LLw}WpKHmv z)lOtjhmsRZca`V+`YK}!SucUx=cF&Xr=)o*U>l8d>+g{{*q#_uz<oB#Z6@*Po}3hjNBXC%?8zY~Y`SECaf5U;*2N{ytayw#eoW)u<>U zAT0AMRs3dK+m*Czzt97AwB$dBFqJ5N1VN}GTdzSg&zP2x%#-yjeeVcT5rMn3H|^VL zXx5lNT~{6t!To8=i_I4I}g`$2iKI{tuBqKfkt(qQA9h9^fn-5F^;U@H%KpdQunZ3Zua7UZmQW0v(W%)-}8n0BYS zvj#GA4s{_`RLph}--fhIvp=+K(B=Oqr2v}qzWmTgf{8^lfipAT#%8{MzjeyzI@e)T zGzFm?R94lem`{Y1uq4Prs^qKvsa^u3w_6+@4qJ&BrjLzi%*E%PeLu_tOrK_jaTpV; z{zqx)tR6HS`I$2*bLau}(6joGTH%j49MMm&%~+oo8RG6d>9`2DdK$GO(eKfgYqwe~ z+=DIzjuf)xX9?bmWWb=brQVW~ zb58(q6h6;Kjy}CznP`AvRAUfp@;bm~_ig3vDO~1n*Ih7ZM`rVCH$Ph0JH{>Ec_22s zf=V6{S=v}RC2Ff%uxs&3&1xI~x~`)JWw?bs@38)+fUf-y zm6sOX2M-pHYcqL>Hp;-xUq#S+!w#fyfZsIor>fcS?0nl;^_y}4Cgbi&WV1q~s$eN**peS_5iu%F=0Z?Yf>YQ|E!E46?>odTPt63RTCmWkSL z)|v8R^cvylUTZ}(qwyTnCbc4*Uy7tY(5f|t&z<643_Py!ug}qk=2c~0S|Lt6pbczV zxbdd=%Z?J#)9_=iD;I~xGGpgMP!@oO*W1TMcn1LO6pDm{VAD(rzGs+}alX!>;2+Gr z$V%gvh+58(3TD*WhJq=XjC5bq2(K(Nrf>;VWlHp+LJ{t72o3?Yt+cJynKk?@GisoAv@!Ni`fA5F` ztm*n=^_wbSP1paREL$tC09qxHcwhyk%KcZ-`k%_(a*nzmS8pxx>(GntN$E}3ue>8=BzRTmLNrTd%16YMZY7>ai6s*Fm~lXbU+ zfun~rQ0r@usxg-t$aJ@W1Q2-WwKn(;BC*042ge#J?80egJQ<(WTW>MuNA^hcw$zUn z?#_=nZq%+l`p7F?3fC+Bz#8xYFTxFZWKWWrF0*GLr%7-orWZKzJt|iEYA+`SVU7!K zMPCJus}af?TNwLJ_DY>S%5KHTt+6RjPwE?M7^k8*6}|I`Ub4QboAZo?Mk0>QI>(qK zK7+4K!ac5+%i888h{D&o?>340BbeXa@X^@|Xo@?a7=2qZHyXWVEuq2@ZpOhJv{Fb) zuS+tu5X_Z?rr{)|a!Hp);c68J2)+B*cS1i6$tX&r#L1D?;!Nm8e*|Y}PUf|q?8KM* ziJmiJ8t936NEjEPcp#9o81y))X6&QQVO3>J9-ZZEJh?TwH?21IZx1HxhX+cj#^a z-!I{hU3@~q0?GnP#)f|dH4d2A!*GF6b%9_Ng$RAlb$W5wHhM{T z*7i1i_YLXW=Il<~=rgw{gx~*+@Oi)HQ)iRQLuojRTZlkUf{8+q;+vQNf&MDTA1;C; zDFc4p2=M*=`9A!9J~Mp>z?v>&2Vs3D{eN{GSjV)=0)Xm7&QZv|u!Di@JV3exz)DIA z>Qlskg!&jpzZV;5m>=0*Q3UW3&7cd3`dhyRi|JWv?B2HH9l|DxV`z1sumL4L5hJW| zLf4>uver#*n{Ywwot{&==mN;?sTO~8Xl-3gO11nmwBbJeIWNq$+fLl{pcR;A)G;hv z*uL`*RPwRV?WeI3U@^#>2hs2?8^xJB#5=IC{g)Yelb`B&5O$>b6$1c2RO|M)7fekUnl>m^{v z;O{LQ|IO{K|K|4o^Xlqs8_I8tE}J#Vjv)@~iRjDi+liYcOzw*l&ZYp&Ve*fT0zv%Z zI9EWbiaOxO&Hlvk-*q$YZ^wIEi7903Yy;r=???QfDbn@pS(J%{*|xaRy3tueQ3zys zng2aVDhh#@&6qX%J#I5@I9(ZvjlCYf8USwpp;&^ulU%2Bm0g36ginpHxk-J4qm#K3 z%qShGhx#?YY<33)An*X$g+S6X(KpgF(bLxhnl6)1gBNB3j2OSYwcTaAsc68t-)1ZS zBg?`+^vHKrUB*Lt$W($2=R`Z`4EjA(A-Uo zJ$Yx<<*~+9HlKx2@l0^dwc1QR-DTfp0oyjwOs8%O6eZgrxG8zw(ct}vew@kqP+x>& zjv{=@WQ3@}<9U0TyHu-e^NiC5p^X7}zDe;*IjYhmy*1^4W+T++* z)MrJC>sO{Z$IU*6+4D^7Itg`3Ip8^e*BCof3Q@^Zq|bC^Zt+plg~dV+4|`#r&X8Yx5};3W zEgR6$h*QE?sRTP6n_b82R$phpDKcM;g-(pOSg$2#Ra`|@)oI-SwEY!zf^=;uCE>9^ zslYuo<#7OY9Pae#>w8Yeeh#O-urg+~c*V{-ZZ%Y;jm3j8}uW<{qD0o!0#vhhIW}!5jzGY$TcCnwqTKXnXb-t6&XZ$$!{96 znVX4MT9?6$I509HQaSzxwKP}UpizxXCdk*S%8_6$$S{x3q^dOr8EST9EMsk)*qf@z zcI|pyy%)4><4Yd(*zclRlKJB$!={CatS9E0$!1~69tju9u%6fCTddlV;kHw=Ey*H9;(+;IjV_EGdIJ(W&bKXfgNY=ij zWr6u5V65!>afCVNs7X1Z6{;>AWMe5YsG15_Mjk~ROt~c$n49<0i5$Iq7a;z=&S$DZ zjEU^&b6JfI)q1@1_oak2wKl?{Vq0z-*UB>|aFa99BklK>@h(V*j`{<6?wOrAWi?4( zZ-O2CtJ`{ggqkH-&MDUAT_U}$LXFG~iF{qw^8N9qEg^$FZdV=-$%@`jg`wL7o=~nZ zeom(ecM$&CZme5k>PB&B^N4(C+C-jkJuSbEgrpRK?yq7Sp{{tn=~L|?t$3}+sv4bI ze#Ai;7fH`sxUZ{h5j^7aHF0g!BG_GlhPd@o#o@TRXDqSEfl>E5MT$?Bx)fdK@p7RU z4bBAjNCK0Xsg&r8OkigadW$Ugm#U{x10I1F!B)UJo)hCer?jd#=iAvL!=Ow3x%~TG z%4X-WriX6qM1QMJfd({_r@7uz3ALRp5Rj*O%iYTih7GCfM50F3g-&(c*&8~_dYJUN za3ui`bb7=3G0Dl*2(Z}o!eYu)<9AJh5Ar%hFTC;#;?c^cLO!{+hq7>%q&(!$Crs_4 z1$v`S=}X6-`w(y1cS++5O`G4b%;2qu$IsH0AL-`EYJ@SFEgVr7CnIf9r&OmMmin@z zh5wXY?aep@vzSvyUpbVeGF`CXY98(XX16=q zlzW9H7k4w)O3UXE&bL^MR{WBYC;QZ}o`se5p6v9{u!yZl%igp_f|+N*EWIJUPsf>X z7L-Z%xw^yY{_}Gi&V_7EW9moFgx9SO&n}#civ1Gbg){66*$Wr<%;(p~b(>VgVW;Hh zPQrMCLHc;)LGpOY`~f34#_@cFR6R!MRD&8w2T)QnL0JO_p~1+MRZIs|QnsM<(H)bR zFHFtgJ4w5qy4y(hPLseO&w@= zprtdR+)?7M@b{VA8Fwh8Ghy7ZlS9>Gtdt#3VB`LpdNUy`Xe~7;ms?fUx9)wKwf^r~pI7qG9sY*tCFmex>NC`(At|5VbHdOBKA-6&>>yq0Gt8wWX{Xl57IxOACjpu?|ymFz@uyOp8<^~G4KB$EV~fE zS#>maQgpWZ14%r3495ShtvSJ6ib@l$-lF`=S+4PjgBld{=_zGlO7QYTZT$hTN3j`x zaW+P;AJay9@9KvIoKMg#Aif;3OWc_3 zdNe+P@3y0*&!oiK@hllu9Otp^xPnE{`Y;nS`PA36LadCgf4{#6 z9^JtP>v}^w109Ghmyz|=91I@*lS+tQ<50!GGDzl|bCXB-@Vy$~x&Z$vkoeuXdFz{f z3#tDIB!0PVN=l-(Hco)C2IK$G;6F{m0QZgck3Qk3YXA<&n_ngh;S6xz{>$Hd+4*kZ zy}zkfRVHQOAZwst0B8u#WC3&oV;I{!xRcm~4wVQL;MaoHpp2m0IHFul-@L@vD8@@+ zV)a#InuhFv;G=)WF12$5i*D{+Byy{$MK<1UPji;QM>0?T=K!Z}*b0wzGBk z6KDSor(@={4NDD11q&;H(^yqkryvh@2Wy~hD2NxQgYG-lgLskGCxI7(Owg8FLu`F6zB(B~afw?xfTP=3FAp(C43i;t*RO5N%Y6{A z&XH$+FTb9pMtDA_y39#kL8K@wivIbBm*I|J30=?lCSsN3xQ2~uvN~$Z#!SPL_)}ZM zs~E*5r=R>*$z`KT$YwT#-8{jt)6^!!hc^zF*-=xz!Ra9VBZmq9n!_^2M&|neVXw11 zAR3d0;|ZSB(!>h_#*9gci3{SQccF%hRa7BF@f0tMp(G~n;C{4(^8)%1WTyy*PT8AS zInn#=@(n%e6YP8J6RZ=Q2&k9zwS-zig7hZ=WwvJTW@&3xK6U%>xZTX9&{JXs0vl<} zQe#4gt9UegWCEJ(m;y|1Q!ayRvG_r|Mns~~_YRfRn4?vO2=D#HgL-1d z&gw8^GT_kS!^$v%rs}bLEbd7K;lBc|HsYDALjYMU|B-M6e@!@febc{u7QikLcrFmS zE)cw;5I^6Z#cVntw0_QwnGFL3U4I$cWcL_21?6I=95MG|Vl`<~0dO278LzIwmay)z zu-N%k6O{Mz85xT~$HwU-7wFhz=jDbb=HzH;=UovHAVym9N%x5{Nc^vX%i{-fsqq8HKolig9*Yyj9e z5O6$N?XhaNQwbqheu*NJPH)|d*HZq`XQ0T^!d+xk21F7u@Q4wPkbDM`UcyK!4aGFY zeo~TccV2VCB!M(#EwnL4d&#M>ccB!(5(XOXoa-W)WHfpa#0+`Cx4f~878x(VrX>`0 zQvHn9mEQ*q$4Uy_I<%^H&#o*~*UFLJfk_X3B{v8ut}2d-zw=(|BboE=Em`@QT{%Me zJuNuBh7g}bhZa+IE;dyKI8_yC&f|33WtJEA`2(5XCt+5xyNVCO1+t5nt6XheWopB? zn-XK^W1GYl+Zl6R-P*^mt7h{fi5HpQo#>A0TWM524tvby4QL3RGq=!q)7J^X7HSC% z1zDXLD0ac^MO@V3fb*bhf74sEJltsb^0;uJZhQOGBB{q4!nEZxf$fG4lj zBa2DbZm*#!VmGiCWX*Hl7H$zb+G%Om@qSCzEm*3s|J$~Z$T!Y&#-Ews5u04VmQ^r$ z^uZh74(UL!IfuCYGL13?i&BcF%=fUIg55EAzHvwE>gfv8G0^3yrKtU=A83nO*X!`_ z81{nq&TvQd4tOAa#JIA)#@%Z@pms#?j(*^M1iliw#;A?*>3ha}33SJKNqE3|F8yuh09w*2{ha@Q;$16Xn7 zASi(aq0tfwj_qf5m1dUcfnWIXr6RxiVK;dN=@mMVMVD9vYWnk6@V!6W7Du7CFLrry zC?wmX*!%ASd@4m z1XPT$?eEc1< z45Tj9FUSvAyq2-bFYuQNB`$rg^#&-&WWe|LehS53t578;cPnFIV?!%I+Vnp;-AIKu z3<#v3s#NGPAHdOW%nXKu@VK#}H~qjstAn33+3NG_j9dlWSP*$XAsVM!^YeS!(Z#>~ zG%>w>Lj>W+dB-|##f$~xH;G%2*(b;}o1yAEy1yFf_P!}IN&o$7tf;j)_V`B$OX1w7 zAi6?MX#?Z!^c=}nw7sn7rX(O}A+~sVzMl7A50V%jU6rFV6`8yd;xXSSY&@C7kq>hadG#L@U zEA~CwV@!QcmfhnICcaUD*gZ5RZt00`+A(>kyO+u8zEZ!xHXXAzbiKH^QsICI=1Ebi zIvA@0DuoCE{d3W!$$ogCT=DghdOLVe+0bcH@GHG^c9b8SlV zh4S!gSA0dJs^49|-ZRuZ*MzpKEIFL(ve$|VW*-Q;AZ>M(=LXVp8&?E(^Qn0=9Gl{| z>XX*9kFI)km4u0-)jG$xtS=H6Dz@YC{b|vJ%(~Lgy<<<~dW;?G$s|aM@6CToEfcU0 z0;Sg?mF=lJv+rwAWDla#zEKAZTYYOBAcw;LXzc&Sqy9x5B{O5=f4@8D7zQ~&r8Fpu zV0IFN91Z|kLtJRo4QlwU2Z@3lC23K}1E$13z#+Kjqu~MKrWnDvvOgTX`o8D6=YBjN z?}i!>tzB_-QFSGQ0;bx|RRI74xtSm+o_%P!f^lSIdUQohiSbKneRn!#1Xw0RNEG_` zPt)48_KV(S24^3hNAhuuekuL59+iQ|3YR%%8O5B6k5V3&&d2K8{Er+gJLVZ--3yl|gX`l@eF2;rT z06n(a7>cdx+Z99!V;MG90)2d=U0Ysx>oI_K_Www`zeyph*jU=wy4w6lw*C`j{dXF_ z`G1F1o0DxPZO@l&ZyM@^zV@HznrrX_AJJM{H+Po_!|>e)t5f~X2Yt6yIHtbILxaRcc>z(7-kN$5%M zQq(8sa;m6^327AtDU#98FlcNyO0-^5FbpR(5+UO3uA>k8v1yT4bBajTZVEXLDG{Xz zOD1S7BdT{3y{oG0Y1+39nb*k8Mh@zCjgMYj<20_{H$u;b~BK;vR$or=4h=YvB7MTqBG8?%*F)V{P`vvpIPqJWHjxZG@ zw2PMAjwV%MRvKVQ%M8A!70! z&@Z_rrv!_8TL6vuk8(}*7nBhB7ZCvWm$0!iw=w=@Eq-^<0J=`~S9SXTKAS|@!nlw= z`&QS?wwP#3A8i9P%KR@cjUN^ZD+QDPQ*2PIU#cH?AJ{LMreri0^a30?3Gn^BOk@AW zr4#{m_J0d=1OtLUpoaZQUZZEcg)UuZ4=crGEy1jJqNcq-vWcz!!{*HqzzPW*HeVl+ z`svkC$@Yn403?=Q8Y=P@(v@sehNw}aq0-v8-TFo$5wV?Am|MKO z*+X!&#eTgt41W>TdyDhsHSQ?=Dqp@luAl|0nF~E#5Jdmeng1tx;VwbU8#vFfs4m1e zP2`KG|C|Uoddojv?yoexqL`qNt<@h}LH}cr0Qv{OCjj(s10c7NJ&Ps^q4Jjrzs*m% zqpPEFqcyXCs2+rDh`Zd`SwM?{3;ql=Ibf@~Uj@_P+7JgHS?A|i0eq@zY6U(r20EP$ zJ_;(9=D=Txicny%6hPiD1(5jzs3NKa6VR!D;{h0iS7yHzZA<_0YJU~eshS(R{?AL) znWzNlAtZ2qQfv(W~?3N`i5mS?b3`hOUp`Mu=Y>DKztXzXe>FqNuc)aD{*=!vS2u|F;! zSv_nUK~e8N>(r=BL(x^auoBTfnSRr}i5)o38W&n34+Y!XXbPvVlEIpU4Xsp{{M3a% zPTwJj0s=ePt+6P7&67_U`?W|DhA-q%K3!@Wi#ShB&#YzTOo%q5E32@S;-FBapUgfFJo0bF5P-G^5UK zU+Vx`_z-6v#wo1Y^~A#mJckX^E}Pq)kD8xZWL%|n0uHJ+8qxt7BMT~2^vZ@U(aXyw zT{ft>|HIo`MrFAM`@=LycXtU$BS=YicS(0Q3W9WZBV8gO5-LhccSs8eNQV-Fl$8AM z2iyv5;p}tPdfyMv2iD@lJ#$UZZ)RTK>n=4O2^;-Ae-S%`1>o0 zo*H$`QV2L;28L%cQyURyO6~@zaD~pt)9MSUQ7gtf!0VZ$wS_;YH&E;DnN3YhZud>p zY>8c9FcK{SU})Vh=W7xVd@={$3--y@pPl6}Y%l3q1*~<(rNYNmk+~X){39}Ajs|A` z6SgGzLQwi7>3CrfWP~enTAWdPJ4mAwG!hFk2}uiHhc@S$O66ljbLX%)ix-VeCv-kavn)B{Vb{P@&T+fti$CC$}H zTB$OfDWhVqIi=}vvPGLKlb=SWWpiQtRj$^ou1t1UuV+FEef;wX)70pJu&EHYPr3-! z{eFW~#y+26#hu$?sl$#eeZf zUiQlNLYr6{yCG)O_CBkM5}k?r1H}*A@S}9_x)F4Jqr>MFrERpW^Cw&}M0Hf5ZEoS? zZN7E&iFR#-oe?Hu#E?WHk3m1(@Oo6YeXv~mjUQ|V71>H5@PsZtOWo%-7AL7f2Bn!Y zgb0Q?eBa`2A8b3fh6M6{eaT}oqIRbKtH z$ofH$X%!bng~+3ZF09>oOtuf77jDo*Fyvzo`7u9~wON&s5q)gOct%MWk{h?fXk%#* z-3M7p_)927V*%RW(P*A8lItLp_~1VLJgd)cPr=E61RdLc$((M}Haki|QSF(<+?NHxc$N~El9%WjkI`Bc z4`UnD)KNYMkO(jHhMPsoG3C1Md3c3m7;`pq^ZMqyX!IaIPuKpCCf`T>LDO+|ru@fp z=gt#+Di)t9Hy9VJ{DIbC^aoR?Hel|qI$at)_|f$IB@eTFy&$^BC$mGf-?&0o**ZX0 zS!~gLPibB4Ai%aGpDwEms5RN*aGaPU@_59sK{{Rj1N*y8*f-MYx2`A$8Lj&QGVpES@#y<6;xLJMOU4-aFiS2D1p-{O1toBi10EML<~0FO7y>6_~4;Ja7v9a=3c# zG9n^tkby!+;HiP;ey~)o*gU2b1NyCTD8-e?d1Ey9POS=cWmhm1DpP_-Ar{mJ)TbV& zi;uY>&9n5$t;oeY=og+BnN%X(&DL5iU62cX>ukdU@0Vv)!6*4dil)$8xO%;?ICsk4 zV~30H_|DHogJ}foS9WwP`-EG^Z(5;wVDnDwzf=)mxCzaU$UHqZJ1P8OYv!~V@W3x) zzSPAzPLV)pi|m!@o#IOA0|v)$8I-7o!PK^>bIf3$Z&4BFrM586xMhD9%c}?! z+jRh%^yWrQx(c!T6}|rQpvv8Hzyj9$xe{1tUCJJF82te{l>;kc6g>XWZ2>h9aq!v2 z*;xPNyzlVohgh=0mY(ltI4$)gC+`Eh0>H#+?u@CHO_Y&)Z0A)(q6^lNeX#VxRlFWMzyc~Z!1<)DUU33c-hyyTcn|3p@f|* z58};Ah;t)-j$f`-!BhX~Eo|VP^W;bFcZF_HuZy@@ZQ*DZO`(GHcIc}L_o_M>MyovV zT0J-iV#G^bh?3$ljCd?r(`0aR*96cbvs}0n5_!MISDFk;hi#pp6Qx?kmbJbXH)*TcKxkL7-E3_>I;YakI5Bb z0`U$_zc>`31;QCQc|;Yyaj+~)Ac;1=m;nvDIhUW*&vD9E;QY;?(zhi>Yw|-o@~;- zr@*(@0KY$J$W@gk`zv)yCZ;BiCbs_^JpV)H#p=KGWnOkO4a}{o}DkL4RI-62^ZLi;abx z;g(pH(bs1v)%$;qF0w55Z0eNgEep;PHRqUMXAgTz2T77gC6rSx2ur}c*= zBhXRray2EDFx2kx;PU$EbOJg(?|rATe@4d72|~5IY-)Dq=c{|Kz9HsIdvii{sdZoo zR^bkinrO<9LBR*|I7A4Ru1b*!XBi^PzNwc?uuSw`VwtTI4;Oep^`-Ai>{sx`jE&&2 z<C1V)svI+Y)OA-%_VON}wL2o7k8c z6IJPT=0?)UdA8MMuE=KuE}ASL$+3^qgXWAzI|NBghGt;gZXj}>?l}6+6MqD;SNJQ5 z@B8mIyo1g>DyoCRU$5_uXlE@xm=>$-vg;ah{$NTT1sfDzOIW_S$owg0G=R75lUi+< zgTWm}Ar^6c6e+L{Ru#-5tB?A6TVTjot5(E~uM8nmLW|kuXE2MJ&T?B-?4({bz#fp^ zSj@lLo4)u$SHmOu`_hntz{&J9t~l+x@N||5j4(hV@7G%;Bp_572CLTYs2Q1HtR5@7 zW2YIcKZ~*{9ujv~i?g+79;r5}^c%3W5NFJeRG=u5?xE0HpgD$blk8m|rKZjkW};44 zd!FcfRXq##X;CC%tVxnW=B*zXYhUvz59O7-CWL!i_o__~1G(nQRIU~+i|RYf!c2k( zy6GnLByT+YVfM(av&B{_-DoqI5Lg`8veiEw21Kt?=)s>XM7$wfP^Z(>vNJvG+s-=5 z#NgJZn^C}uY!wTSMEg!Q>jCo6>%unhnBm8=qmg!CB54h1gysudIO24+VaItmf6v zzgl*`C<7`6j%L4m7LoPHjS84;^}@8GrZz&l z(l~^m#%3%^*YVebkU^Xyp)Mv2*k2#vc_C9A!`+Up+O%Zr?Li{ z9NB7tA4($)&3{z&Bl#e8E2V!Z%@nwuz@r#Tl6UJ7Q)WL&!rbvz;7o5H8HsFc;iPCP zGmTa0v&eCXnrSbbiTgnx@e^(M)&LYxWY>ymm zZEB~9VN@-Q%Syhvt)Fr<#%jSZ-Pr;$kOwf;&CjkO5v?`E=J%Zx_>09@cJ#&&{W=K?uew zx+`K%Nz~&l7K|va@Dvg9{q+HD1Lpi(Nz^K%2pC~DY)d*d?T~;>MkwKYyQm@hhYue) znZ=Y4>AcTh?bv@BQfq#)uJt{Q=MJOMZ52&&BS-d*#V{RRkDLNQYMpHwlPnCJVn$>nR=7Q=iu-T-F2kZ_mqxrhGS`tZx`p87gqb&U+W>QV zT$=!kx|81yv&Fyj9;IHjZ~gn+D3?@Xlcg71D0R;#poE&!m+N*@{He9PyE!z{iJYf= z&lbp-_vog*11P*1^+$7s2jomogihnDbCYesR!IQLzzW4vC4D zpvL}7C@w~DK?v%;FrJnqlQE2fZf^j}j4+;jK5W>4sMF7HnWt%0J0M^I7~`x^kTTH+ zXU@^Al}*W^cUAF^JW2$|t)0cJ+vua9BS+GMlNzep;*S$vJoOTeFhlyzxz=U^F$Cv$ z%W*&oH`GUj0i!r~8r>sUic!U<)|@+5`#H^Ng9q`lQG)2V5O`z zm1JJV<;qdJ6OG>W7SXH(>#p@J(y8k!hFn;fk=3Cx&dzC{J!INLRI9(q2BZW=BpaB^ zZ)NN%aDH4(ut5@XdTFTd9SfYoHigqbm-ksNZQ z?N5A=jjmi1?GsZ-`V1KwMj=_&kgL$K(6FeM01~A^m~3rNJ_Jg5;gpAuPcaP?u8>#f z)Jfk@`k+&-uaYDb6{}$y{>g9FxD97g-j({qOs6HemW9Z2Y5?!p23HP`tDEc-R6u`O z0(tOU0J8#CrRg#wij9(qWzNIygoGDeZ0<&A-5oN!DpV8IDcb^Bk=D!n-!ZqI!F_kamj@CMvEY-eP5XcIrv=!yw}@Mh?U4_&YOR?{Y~0eu#vqsn|PD zrUDP?Z_`ekv&@F&1{t#3R@Llc?4QV4i-b2Ei<^ljy;C#;ndhneDv8<~(7D5n> z^Qrb?RXFBrtyd8T0-@rRs>ARFU?hN`PwN*6NVIFg%6?T-(mGB*Sa^sMR zz4xjxZ)R=qX0OHnF{Fc`2mTRUfuZazM<>t1y^e~GicY)OXA4cvTHdmWB>#q=gq>a2_gWg1#(0nb0-#q*#jV4 zQ8~kRugTZ5d<~yMC?d(Y^)idW$Yr6Cg@_8EcQA^TVSNu9-0hBt+g1MVw96*t=(KZR z$m2;GdYH0~laiD2wzm`%D$F5hGc{y@aoJbjujf0dLHKiV4UKdBIe;4DfO*K=3%=;& z`{P$LO1xJ^CI>LJ+raO7s;~Blf6Ez&Y7o@^8p=H{K#GChDEjho+VOQ`l3AgKmGA)R z&?yGth-(7Eljw2EJ}(V95ooZ}G@-Hl%2cjp!PNI{DeW^hNP#wVC!THSKI4P`1wQPL zo%7)rG~nry_jj&r4@R0yf)+D<5cRNdJ=n>FAlHO(D1n@W$4(MHi9*#Q$xl08SZf+Q21*X+Eo3nmaQ}y( z$x&b=7E$fJ0@3+JQh^>sXATUYR)7F`2NE*c)JPvT^w$7s>qaLW2;VmV{H}lg>xJIV z*zMBO+w|ASK?nkt-3t?Ufjp~UQ9-B~Gf_=Qf+kTzVr6uy(|$Z%@}YXa`kNWhfV<`% z6uXwplE*SDS8`O}K7}{SWAuCI73exXF9yc_DqivUY}hZ@oV+h3pT^&fry{W0D5SXm zXeZE%K;r%#?^@R@0njh6woCEO@0S2MUjvZ8c}aeqo* z7iHv3XVQjS{*%r)9*BN9Tx{z+q&=uQ#G|U>IwU5m6QG9skW~Ayzk5yO7#e5E>r$3*&<)QPV)SF13KzarH;CrN*QRb z@SO7Kj4ceA=;c`K#(m*SFMC#U2~oOaDq1qt+E4Z1A4AEyj4uk5aW2ye_M#lpVbrs= ze_PG*T)Ka!($R3~F5xRqdgY&%Gn)h%W|1TxX3T-j6~a}--M2r5lDL=KuZM-it6JdP zHt)r84G!W}9GDgQfbIg}OXXtuweP<8eVA_VL2m6_q?folqC*8i?76EC>kO6|tnsIs z-VMAGO@kLJHbY-2HBSxtQOvPWo~ZG zRR5J9MQ#|SD(s05gsjg_Otjc(ZzC`f6doW7Yge_PTLqd2Dr+SdLpPF(mY99YJjf0u zn1Tgmuj$<)9RQI?3sZQq2V2MQy6N@*+rSP-#RIK)_a(L}2 zCTSa4CmviHC2gu`=_u)`m}eztX=_QWP<6ScL)QU?_fjkSf&#GuptC24FA)(1 zQX+haXqwLT=Q;6wW;j4(`HlK>?W2lVJiMeleb^vtB-~Gr%xBC6BCW0~9 zp!zGJtV)7MsBUVP!WGceO0_hqzzR!Cz&mSXpHNuM>FhyCNT^ zV51%8f)ekTpSU~(H@C6_%z(R%5$!XiAr-uzDX^db+~I-m2-Trp;I3`SJdzv*Vv^W_U85gu-tX78LM9_qs#4-Tg8k z{`F}1c66&wP)*=GnuL+ZC;(r=Ew5y!QfOwKta#fQQm8pO0^`$N-u?5f=Z6C6_h8a= zhKwaeURKRt4c^}wEh{AL|Iu69iO89Ll+!pmWprs3aP_kI-JP zhpwE9gp1SfW$-*DiL!^W5YmK1aySC7jI76P0Xj6i&p6CF9Fr-!noucWOFxRgxnk#W zYL-9OX%=10_1dnP%&Ddj^84E4=3IGz`52w1P3<0va2ncA|592flN2x?D(zdxB8!xD z#7bZtcWKbr95WMoB$o`h=HM~OON3Yqf!&&pI?IjBiF$7f!Gh}F4*mfOxk-M-70lc|CKf%~ z*EyP;<~`&`hmJ=QW_R4~!GnC5b?l-%?aOpKQ*kYl$eR1!;GfWuLY|9AXJHcX>)hhq zKO7MAvM_PME_#%CTa)+M*hy>p=hO02GKJ@d4hA{ z)OhZV(k2K!3YxMZF8Y>~r)8u3cCS#iG)(jED{A&+9CPhHx1-6YRGRA(FibEI5GXtF zJKIuU}Aaks8qYJt=6A-g7u{Kt| zlIZ_2S#lRWWw}N#Af%iMKjV?daT-^|M1-yss$%S0BjfGSSF8`ij0mU-h z7frDU=mrlE%a8(_(m)~oK<*1_FMzDKH|p@U5$^wA$qnXTlbgxQi4FFj#O7jxH~K#( zHYiI<^&kK&D8~3d#Q9=&jy9Jxz$WI`?xWat!=NA^e=~SW{F+8+Dy&ceQZ5D50iF+C z4;RE2bOes^p-CFV$=bSoV`7`ColKWMe2C<)|I81TX4K)(;?U#J)E^d5{Xv8go(k`S zHWN+JnAiK@W6k8FkS?~uc>p3_Kjt>7=u7m##MLPl`>x5LD*YAZAh#dr zhngBKKXYFUl2aoj)k8x*I+%1fv@d8?#S96+r!o*-jE|M3l~x~dQlL*AE6G$8`D!Dm zKK7ktIP#T(B-fF{acg|0zv|1HF6xc0Ws3~D6IT2pd?eWtO z77q}c6By@LSeaiAjONtOmE(O{0ehxnU%XmY{%OTxin-RpwR`iOLHlOptWL9g;87rK z;J!oFZkgH)0Z0m6W3ZIy0p9=bT7JJh34mv_xtvql#MFcK`L!{XQwm7qXDyyKCDQLU zbOeIANQ8-?NlXa=6|`85*9_5z=0pGp6y8A+MG8UKdH-nR&9}JiEiNxuZ@x4x`?ZD; z$b9Td-&7tftYfVg{&x_nJyGRyM}rp?X~)J2USg`R3|ZA>oQ`7iYW6oF2y2EClo(N- zq;hi-h)EeQdYh567p%Cno^0`&g-GJ0szbpNQONkF|J-;{OmWcQ!Xa$=qtW=4dm;OY zBvxreo5M@v3?qG!_r4F=Ri6%j9M+bg8k;cbLDwuB#^fU4MQ%Q%vUSqkM5l1?4yyD@ z{*Ifs?G-g}YXSm+W7BHp+h)pBBo6ShPcy?VVXmpJL6xGD)SsyyhVZlyuZ_5nAb2YS$SiFRDK-YBfZZ!JW+cXf{ueWJe>pDPn!|=K&>`z@M7)|hCu@&_# zYNFI%DSC}5r}b<1-wJ!n-rj&B+<{cV{t*x)rk);z7OlaJE< z19XG_GAl7i49J+yauJ)P>JU#2bGJLz;l^HZQC7_z9Ws4Gbvln~MVHv6yLOhBu$o(2 zDAatrKBywRSG0!D+k_5&2%T;@q7NQPrN|xB!e6j3sPu;|9715lTkTBc!A$1C=$<%m zcjidGn-}5Sw(7%c&t{WsZur87a`-;_)=$*UXmL&@m#qSMJLQe+k>h>bbY>)Gedv0K zpZ#KJ%YLe0FR3-E6N9^3tXi;ut|ii(>>R@!-4@3d@)n~5(%0&Z#<~*Na!-j>q&bQ? z>MfS7TMl7A;wy`BXU3-RSci8 ze952FiHT-D4*gYsQrfo=kaE(y8VHR59oCt4l4ofPXms2%?@p{6rA@ z&Z$$y6zgo1R2yq&WhNJ+D-M)nJj*DRUPJXqy@jWFKgB zyun_5EY*`bB&xL&uliUk`TfLPIaM4p!I<#9Fy!ahcXXW`KbMj(u~a{93g6AZJed-S zKv-2uK9<{oJb-4ic{G@1K7l^pkM-VkFeyJkxG-G!5pQhkN}a_xcCMi_hHao<4SO?q z@s3Kyr)K+!k!FKvtD4+caFiGL1vH!w&F7o$SW)NlHm7rytMDaFeU4$!t0_aoVh__Nv-n_`zQn-TZxW^+T@hSMwPLbT)IXY~o~52$+Pn|rVJ9^0 zTPOR7zGOfrY+u2PWOub=THq&S3kiAMtrNJ%2%b^1%VeLy_yj*IubA~u9J3MZ_%L}h zA)%j~6=O-iSVztQVzUK#lb^jdq>yxyv^6$yy``b%yW29>(Jz-nj5zJQr8 z5x9}YwvL952B?-Efhg8D%&cY1Wvt9#7H6%&#)ez*2ItkwpM4b8pcPdJ04J`GHm+43 z83RL;%YM{G;cQh^+HTBtalk_k-vAC>0}GREsBjIMJr-icPDn?=tx@`8Fn*~?fA3K2 zZsr=cH{E=o*-^9<2zH-p0Y6f0tiI-s+dHtrcfz&Z@OT_a4!@%wW!$|deFv|Pcd>{x z1J%;{DR<=H*kmb8UDkBYBO+TwzLVbeHe7$;O{FOAH1%3(X*eD^Gx` z2R|i4z{ju>EG+Q0M2PlZv#zN8^Mcb^zGeJ75W5(I?w}zc^pgXXCBGOSpvo`f#BA?t z!3blU1%D2_e&5jpSpv|14E(NFm}@gG84FvhOB}F?{uPc{gro*$DrtF!wLAqi%b=bi z7e6E>d8-C0gkk-^rb%<#%e!4&Wb8h!Vj-!thk$ z|5%-({z*}! z{a{q!Jwia%P;d0^*S1$=4eT$m`|l?DEFS`3{Xk-Ga$T_!$ooN?(tu0=fbu`gf~jwr z1PN%?;qQgyCo{1*J+;o!7sb=<<+~r$*p*AqmYy#qFtfsu?i}1U0be&Yj&6K$>w@AD z8-tcV8|a$=%b%?g*Ys2Td@yJLJp+}M=u#AxK+Orr8&&RFk&`vCb-9KISCV`Hxp7Sg zP3W)cWM`>c_^bDlceVHO22t%&euD}0Ug-YSdudrj(Fp=b1G%6-+I02U#SNr6Uj;zj zM*$Z^4V>P6`>2k}8J;SFAzmtm1{r#w^i37TzR!c>djY^Hg%GkkaIMCl&6d(TjY}%F zp#^Z*BU!}*a=W7U>c7n;C3KFU|66u3d{!R)tTsK-P!@R zNMCyOtE{7|~#A9BEV!6U4FJu+w+xT}3>#AOOpv9>~HMlv7hWRN}a$DmH`w2c3J;_r^uJ?yKSf2hxjSsc5a zmAgu_%!`;ZC_-Dl5r)0ZdD#EB=nl5in*_zjMFgGb^;^~)v;sjTZ^Rh34o-PRdquwO zNXf~z_t&>-iahuNSK+JoIx$4Se58Ig^y9}v>oS(V1 zN$DE;e4AVNja#}OKZ+N4Eu1a{lb?D+eM3=s;;74~j#cX8=}jVgtXk-wkUtSVf0Wrd zGx*B6fe3|w%;#K+%dg7)wGpZO4ZY@zB`~0}bFI09gjLYAmo!8ZiMg$ih0EBGGkZ&^ z30VbQNi!N)3z3ukCGPj&IEl7Wd~%X4l8OSNGU*E+S`=0xmcN$2rf|N$*YYe4v`pg+S)sx58uuJo0Wd0C-cZRBnZhqP z@VWezV6>WDL6k*10LWG#qRHs~S}XktO|>CDWL)a_@nd6WrQ&J$`~z5Y9iMo5i-i&a4_6Z$ zjkZ9z2ze^4&0j^%7aix&8j%+aC7_H*IHp5C{mK5+lfC7>(tQ*#bSx+^MC%vBX21?b<(;HP)lC4NLGq~qSGq#1lsnTZ=?A|q1 zdVx>bo$fYN-REBn)hMv1*{}Z9DdqN0jd+WUj>$-RxbIJkowZ0qz9yAT3Yc)daM2nF zF4E6GbXVGo76VSyz9FhUeQ-iqTv|}8+?DilFJ)bHo>`2EoWYR|+4nQICnke2aid#q zALl11C<4c~3-Znk2Y0O@&?m~+AC~1g5Ja{SIkRsV${Y0!ucubm74kF)%=fPZ1@bHL zZX$vFlPY{@At*3AzLDeCf_oHzm4RlC2KMHcnEod`yBM0Bg=ha2{qo|kf(9NU8uCRn z1RC#xq)q*nv`a7_+rQW4J1Xz?fIyUk!0-A{-dgeh190%)-?QNgE?Dk&PJ0RX#PWAs@XRh) zS1dr{WmwnM=eyQuDjPXk*k6gXqVI#&DhBEep$9?a33Laww8Vq5S^pelQN%*r>Hz&g zwSxk}qJa9g2GCkX#tp@2{j!aWn*F!mj?bs^^3lc7+tF`Bu#P-@ruS0d9$e5HSF|E} zMkOpwHip4F=ql5`x|KpRqys{Bkk4CtQcSqyK6io8;gp2D3 z`chs-kP?<^Yn#K&AF@PI#z@i>ayk&yeqfLK`g(itnWbBDK|ZTG2EI6w*rR3|mZ7S3 zGww%D&Yth8ywbk-OPQS>j?LbJv+lR(XL^@<7o7tpbUrj(T&r5dkiBhLhlK|>^jDUu=0{Fd2 zFm~;p##~qwMk-ZOSQ_L>2t45eNgf%AU5&_n!VqN?M%!Zk&a_c3kesrgp(t5UnQe7*KF8XK;y8v@EbeE9FUZfJTVG z8*_{)1<_3i?s=Asx0@EA2LkVk@P7+W&o;|ldRiNK9(Z73N7`;&gctO>^;&Ej1HBCv zJtjgc`IKcM?zjj`*xU#`uXhl7W+RFD*3)~dTP-FON%&-lL&tVF^x59@7@GkLv+>I7yJKAg za0}o<2)v>M0hnPlc^aPIyZj&@fdYaku4A`Wz?$5-QR*3i|M)BRPQ}2`+C46aJvu|K>qfLF2Wa(319w>On^3E5=#MS0`;P=4-2jh zgU+covA$A7j|D~@6;K279cfAF=v-TC%!@*RtqgfBQ0Va@aFlCWkIki}q(6zda^Re; zPEotfR&5)TvU@3d7vg&3c{Bl+=09 zJH`&paebgfMQspwAL%%`^bKk$&bWSrsS8;QWaz; zd9{&8Ps+Okq@(8uCUBcMO`-0=`i;d=X14o$)YzXpfY#4zbB=>H&`uUsQz7h*R0xvB z-!ApM*WW(p``E!HQIhWdPs_=@-b{MrG)TR&k^Odh-Dt{t>;2I7HOWg;I_=?Wm8r(9 zDD*at)1xw8&&CHjMl9Ep#2(z!ZsQ+*(=FE1tcnn3Wrr{Pv0de0S}{dJnzRv~@76I} zWZVyqXo!ZVFq$oh#-crqFM{39CLodKAV3q4TO1BCl_Ism%j<(~?kdyyhd`Ux0WVU7 zHxL6&-r{HYQeWYz?;%sjofh?$(X?NhZtq8J1;A{;FmKfKYjdpgm$kd{u+jV=|Ja)O zC6iLY+y^Lw1Oi)!DU?;o6bpg0g0-f2^_e63u*Oae%O>~_gIb{epQ$FtuvJL2ZVN=tjk3U<;^zbigb9hUSSS|h zZ8^Uw%&*!h;Bi-tAA-weaoB3^wbyQgGS=8s7IY}+u1qpspW}|~p71bR_~}VC>PBaj zq;+uDE2C#*@T;ONNwJ*E64c|Mi2UwiUB%UZ^G8l~_4;-6ct2o3mI2MZGWa{7AE29>*Xzi&q4OChFWJn9_z5`z z7SzD@#j;yu@k%uPLSzD80)>-?h}5C66mJcOiY$IIE;fmI6!8!TwX_WyG+x@a*D{+W zz?9>~=PsA*;P}YP2?2~>zuV6Rg@bp@m>D(1Feww~l@#8~AG?qVqKzY_ci>df)38Gj z_fmskWj)EEt4?Cc(JWp?ygJAoQ$0NuUOmN)FSB>j+uSUEjWqCB>s@?Jhk6(vg0tv; zJRMCK`+eT~O6pvG2e#>JbhI|rHau^ZBH@iFd28g?q_LnVd*TEh4%ZkknsgaDxlw|3$|cMK(9^Hi|rCaIUF0C9xV=f`ui$j+<7Nn zw6s|a1Lj?=JWm+J&$IckUZGC!H4qNL6pk9%w0vI=fEVBrQI?>iG`iK+C%(_G?&e90@mm36(_`HmOp2#F<-UP;fe88s}r+mqB;}A(z2-2OjJTHGQ#Y zGgUK3msUktu?uXC)}67TuehJ@X|rpydFcP>-;9|xYQD`mq9uO>euj&ohxhE10NyA4 zQd8z?;&8L8|8)lT(i=Tdkd=pE!Azs;*V%%^+L>#0)nwe88HgjJe5x3EgjTWpo4Y7rjlZ>A}~c`5;3ZmL4$6;r6q6aFjKvZG8u!FfUG5kK#T< z+OcKwGd70yku-fX^L0Jml;SV3vrF|pNHBqr+(A2|z4#F#M5NZnM-fqIvP;=@Zm;tdA;oVoQYJc zdglej?*1I?SLwnOZ=$07Hfc>1CcGn#~Av!MwtVj5_ECkw0Mq;|< zZ9lo}*7+X#!**&nJ^@D2_$yk{*^Xlh&l~k0txTkE@ ziQsSMQ}0cQufIHAr4;`F21&iyIaAM+S_y3oj_Rau(bN2_jrJ=}fu6rb1e?MjCxR3H zvVq_{`IjV#dYNt3UiFT8sh{j~t1WjHrb#ECr7?_stQ4*+LOtKi{Zd_y-yV3w%V(so zYRUC(&%)XIztl$n2tn*k*PAZ3BmZ7Si0+9679fG9i+Qtj!TtYtMFfq)S<8RVhW%$M zRd1-*U#vslSg+?%(3CI{q`R&PEyyC{15}}TJK+9KzXEW#7yTFgHV|;>pt>L_Y=`~` z%taK_!>V~|l8`
    YLJJ+HJ2}?_!7PMewIX6NgD5>L;=Y8qFZI99YjNBnXBf!jP z2HcfKWdhRwE~M^<>Z6V0^s^H_lSUgxUya0YrLr+}gXsrzNGAifB1t&i7xRn>bQbfp z84Xn>_x7S+%V5zfCTrm9P3@&4x*WpveJdPW)lPUDMbK1$9>5(e7N5lPG)U1*V49vV zOzA65lUrploZuUw*JQj8_rXGeSAOX-t=QXdH3OMrKuE8tx`|E zEOFAb#tiAccpq5YT7kaJI)nRuYF}y|#No|!^&&g0GdFb1{%GN0k@5qN1ToKYR0&}V z#Jo!mAf&aLeJA(Lj&NLg92g;umP(M@9k$<*qwS2p;mW^X!#q@43kW9mr)Iq}j z1(OV-csNF^4Epe1{%$sZ7XOQ(`?p!3nueB+9=$>c2qf=EqrT|Nj8^&se-D=3vt+!rXi?A3i&+6Pb5E>!a6B68IV-c1&fKkNuGHU8efI#Q+6fpKJ$L4Ew; zP-B5gUBf%SNuMR9Fn0*>cN4U_wyUl0rWjZs-h%^f7r*H(6W2Ep(dgYgW-d3Z)I}vR zFSS6^Hip)DY%q3To<&XuGpOB%HdozKq>Pe^BrkKvL(T3gkk1G)`iTnBUp|XmX(lvXn?4NLB9vLUT zT;d$I465(Vu+a4wuFN;8#jmz_aCc0R(TkT=zU}o?i79@)@A~Tqf{Z~Y!iim4)6aws zjACh+FFE@5d?@w^txLuW3^(*`^4qXH-B0Z5bRLZM%p9|BZM|ne>=t>Ur^v^Z&pk2H zkhAdExpr#~9oGm4T8#{PKA3t;89Xj{h=n(R6Qg-3_zg?X&&-Hfu9j_l zc+JwmPAs+IKhzLQNp&M;CxSm3x)P~v4O9aYNb@cz3_eF|RKiDK$w8au!ET81u4^#X zj;TQq74pKz^yPiRN95%X6c+ZVYUlRYtx-%oOOUlPJm46)%7HD|Lm{) zbxca}$|a5`plzA}vgHHN@4I|`3e8#d?>9N9&KFN0k~XwJ4EF%1`oNxP;*ALiormz7 zijEHfeGLJA*XMly{`&LHV^_bP@%-!0)@A}7$^W_#wJhgC7X+X%wgrUW0WHutL*Xx= zXQ966idW${JHSqA3d8Lm0<8WHIBy5|nEx6zP^^K3^aIGqy+q2@hq&s;fxGKQCQeSk z*omaAle43X(VqiZCh|3)$ zQD$;;=+RN1Vb-vHN`8{=i7XEGq!#WjbOw}`znDQ&l4IJfQq6Bhh3}+FR8%`G>`hc_ z(V)Vr;6sz^Uq9TN9#2J!oz+d1rLkFr&bXzs3SUKFUR7qr<)B9JZTv|0V5V+&TwLOm zI$~Km_aJtsZheRmG22P6t37uj2j6G20d31kQ6_i`j`<@aje^CO&T6UM0bo{mS5R5x(e}Vz#*Zn$ zR>rV2X-`KBTT9(r!%#kF{W3yQ@$(xEQ0B0}T3bjs=GVX`Rkkwkr)QE$ZR*Wz0et+; zl6lop|N8g~AMFx%1``jQ&U;&&ry$Uvh1S^Df|4`W4y_(AhsY*D^yv%qy`B_ntK_>A zx!l@vWV?FcZPgrq z<>FupmZH)EVRqF?dbVR6Qoz$a_Bx#bM(W|+wxrHQqp|m$<~f}M^}f*6vzn8_ffd*8i@*#1Z+IqQeS85qnSu-9muF;~I42#<@IsRy9`Vv=nN$ zg~Z=OTqEElU6EvwzlDh!37bfSRO>$a?s&X~plXQJ(Ic~;7~3(=u&~MXl^pwXav`&Y zKp+VeFEQg8aOQBJvv+xk_O+s_XN1UU&v#4s7&AaA{)gW?G|vG#l7i=}y8NvZ8}-}tGV4<4lJSY$~B*C^v^ z-} zSFaZ3oj}(Noj^C@{urs7F9Fp7t_XBjdUz&$csLe7k1|}bQ-;yTEE-BA+5I5&4`8jZ zlBCX$Q1Av1{CmuuN+9)bCxEgdQ1x5@gOz#7|NKuG)V6DePBh zm;(`L7_I%vlQ|ek&8)X0D_A-~-c*-E1Aw4khJ6An#ruKtU;o;Jd+R{h!Up(yP@ecF z7`XZ#S4I6I1!s4l|HL&mkwB6pfa<^8Fh+?B2S=&JT{8<0x}?D+1)jsdHnK>*Y`usL zS1Q&Bxv4;7C4DS1n=M6qchXGUSne^2jkY~_ z(kH#V9#Pp8xXL@hu^0v4T%#(#!pb{V0CUOfi>rWEp^P6EIfEveE)r;_foykUh zM^G3HUhDC3D*se&|6ung_zZqCt{<+Mf2HwJnVU(ITZ*jOciB*>k9i%%YA#&l&gu3= z;o2(NsCz@!8(;=Ssh-(+tgVL#z8b7x*DXviEK8`t!Nt zZ98ey*tTsuX>8lJ&89u858l0>zTe*8Ip?~v{;cFj=8btzjWJA&sI|9m;RnKD*?)bzeino z|E}G)>z^_HS3&82B?&P#ti&M6mckAe{Ng4)I*gw{*a6V>Hmn@E|C#;!gAbcYP7Fys z(NV-e-oQcJB39BsoQOC8v@Rq38~r-)|AgCZ3BRT(E@(^@7w0&pzmVr;HYo)KScgYe}D6*y_K?@P{8~M6*pMbd=cOM(m4Ef zil`v)M*IoL_Lf81E{D(EIwrb5K2zAM+yFDy#TS*Am6uN???Li`2uI<7#PkwmiR%f|^1sPO?&#QfKXsLsEWbz-IQxu{Y(?p+0LqjRzT+f5%A~ZJtl9VD zE*Sjeq#WK*NG7fl+TzO$A6Fz7L!+iKojEj(Ei7K$tp5% z)W}I^)+W=Rvn7fY13MIOL!gJ$X_Ki3B?)y{N1Wz6Q0E|@qSnBxtY$qZ?9=VaLY>_5$*@Ej>TW+P)XrO^u!F=K1dS}zSOOc5 zTC;VcZyh&tua^}(eY8Hfs3>iCoeGONA_r&=t-OM`?!yMzu!pE-wRN!*#9XuxtDdxV zHW~1`bQIwu=Zo}z^m7gY2N@4r^T%+|+68q`*hO)`IxOOj&WKgprx&BStw*9KIwH{# z&`IKm?jZW5s?&e=Y$K+{x0&Du?XJ0tyPwzJKJ1Bf1=6E?@&PV(8~xW-!##f;NCs^4 z>px0kzi;*LufRXIS{$&^`T!=iKktFFEPy(l55c>fbxoyQ*>k$w&5ZtVd!`%_$|5(+ zznK*?KA{Dh%@XV99~@N@8CLv4_H^)@9nk>x#%9+KJO;}54u)1PuaV<|HI0T2dpQWm?z&r9a5X0&s0ng03f7zk!eB>mOE~s8&%Lsb zfAS(O*Ti9{e-B>isfm31qs78|M3VUvaDV*&f8HM@2V-MZeJjhq?~gTL?hW8tf=p34 zyL#YJDrjhOZlEM3`}>7Rfrvsk9N2Nf&n}H^U#_dwpFzIM54P?J1=!q;cQ9WWx$yFC zZ31lr%iwa@=K!Xfrym=eV4^fGK3N01x}UUm`Pkz(M61G#&NHMre3}m^)nQt;ZnVYR z7w<%z&C|E*GHwW>pBB<0BVN>IDG^V)q}m_7qM|;x#3whCbH^YR%*IeE$!BIKSzQ(v zXds=}{Gw|0nTf(l6)#A|43%@bfP4RQQLj+SuuGA^YeUO^dJ7ho76eZ;xB<;qC=3+T zs&g`G@1-S22YY+mtoNT=x%@cxFF3k|Y>#>>{+>@=r-S7w4W~7B~39Imi?X+ znVn#VKOj62q)+>4^>U*iq0M&?b%evzrZ$tk&x=f|2;tb9aZQ8P)c;9=QjY9SM&{?e(5Iu{;>V4obYRm{V(}95pdGqLfpFX z`C9|;6fcYzKzK_KT-wW6+EPHlh*{zPzn^4KGx+~QQ9%_beAyOopdtaEf4#;3?+o}` zcjmtu07x~ElII)xXEWkz#^)XWw+&1=X0=_03ijgi225&^ti%C0MNog`8YPtfTWqu( zpj!FA#74CU?**Lz7R3C+ir*s&e86viJ-luJu69R#H+p_2CkJx_XQzLwJ6cCg0Hi7a zI*x^}!Tp21&|>ZO_}vl)#O7)UZ{g|X(wfqr0#)m;Kj2A3WY_4iZDowO#AjXtqEn@S9k^55e4kO$xG>5==)B^wAisskZ?c(Nlhi}H$(Ii{x|Y@l9j)7{ z+h^8&?%n7rGj;tQf8f)vL&#zcrc(>B?N{&hUwinw^*H~@ddEKxUu2B54S=#g@CZoy z84@988zRQ))Vi=rO++B4se9Acn2%6Nugs1W4aZkd+4(qLEe34UYwyM_>)`C_1$Z0P z8oetVEjKR_vrH%*H5Vfgv8Q(OelAP~;cH*y_gJE&P&8eWZ!-6vdd8~G(U|Z?Dv1&< z9`|(HRAgkftR{`Tj4(+h6Omqf47c);H%*S-Y^PZFdD@dzQ_;^aA2kZr)NqWbzz0|F z^5sAJe}Rt%i0d-I`N{D$b;P}YPWUi}&cWU`&Q#x9!DM-z;>>Hyke*@5kiHV~`PTyJ zQu?DT0nG3GuM0%*+X4v!n4G;Wax4Ur{saXHB3 z4h=dgN{dsm2eNzj!v^gsfPu*`^(1sl(B%=`1oIJGZu{A)_3NctTFI;=sY^$qpPQc_ zWusV)oZqVWInuDJ6ony+)gdN-Qi@^MLMkUhih%sqLJCHgg~r{}%7+V{SLL`AyNR!) z))?GBF9=~A*Ch-}S?~+*nZ#)T43!STOqHORd;PgADpSIjSvw}#t?w7F3FZ#zxr}|z zGe5WXqqU+G9p0?0ptvK8NY)WD^YoTIwdrfdyX}0x<0P;9$OCI}3#`~r&BTSjOpU;m z=Clc0l-R~9W?07#!f}e$i>+H9xODviUyJ2Z?qC2cKhJ+%{@;~T?Th63eH;;R$^V1!n1RqQ`mGi%>NrJcJ`>b>W;7r}fo1Ctm*Ijl>B zZ+p`JNF4*H)d5n+zFsN>@Iv)K!poQ(F~S&sLMBXeO^biw;zj>I`G!B`?-Yz3ZLI*g z+n)~9IFbi25RD;pbVpt;&tHQmn-l5ji((K@#0v4B zo7iK#bKAW9u!zA7gAo)M8e2$5H>=84ui9&ZdALjDMyNDuXvvi5@zV&^BL4PN?OH*J zTduf1@?nK!mbk?yaX5aWfeKSA2vPsWl3lj_a1o(s>)|+NtRLy{n@`6^b9ms&&?F0d zUJ@6mz{e}O=xO2V%l9@;R_AWtKO%J0(5CcXIruZ+^Pk_1zZ(jFzna1h4z>>ew@rV% z?a%7~V9I|z_kRdeg{|Yf@AgBz>kWkfuspj;e@n`7TmB*hq2p*y$@EK)^6;5uQhU$7w}cF}JfwF3BNExf~G(Z4jn=81lF2JwDDXnwIsLmI*ML?K?w85kPr z8R;2(0Qv=5HUUQ?$VTl4nYH3W1QbnJ5M^Lk0SslsM1LtQ_=P)n&H&bC`XATeKgEH6 zpM_uRBW3JnZm9pCmgq0&DuB9eH?BVqDH#F%|Ly`LnC|YvRxkrGFqakX6uN_$EPV@F zdz$`q1WZgJ2DK0cVaO$rMM2ONeJcZu{fNh6IiLw6SsB^s>3}!N$Xw`?r-%Rj$iMrF zVwHsBw*nO-GV;TJ^BEO)e=yISCh;vIpJM>Ie*P0+1p-l1|6yaQ8+gAS*qtB^mZEpE z+mEbwr28vbZzN%FKyEm?U|_T#zIxzae1;e3zHS$Q<*WY3^8NmJ;R62R-viLUj@2)j zia%XQrlK}LNf@P5W(`bYtm{~Xjdy5h6_%pf41#4*LP-fL4d9eN1ItMQJ%z|{wW)( z*F(1d&lCa2xg;9io!)zrd=V<(hrw|V@|Qr}g`lzu|87#cpt+K`oXnWwojvaIs@txf zeFC-)bhG&5WO@4X>VtW55*Hy<;~;A3Zd)(zV;5@=Rt(6}V}kvwXy86)AxxJJG|G{d zMYVO*)smEzLxkn5>bsJ&FGUi1e0r8HhOckT3@{uX{4Jb1Se)%SI1XW44f;rni+7|wV&pw1z}9TnkQsr~nY#-l zF*UMh8rbd#wTzqiT43>XT8O$x)jr@~Z4)816MRo*)EJE2R$G06+s9u12oI@LGv1rb zNVR<&TMel)P#waVt{YewDwg)Ow414dLvG}&%1#)FJDrlCst$N8<^E(F8@xI0DS$df zwham!Ze)zyx|cOrX`Ea;JJ<=tChO`%WwyqV+j>HDtuXI3hOaYl6g(q`~4`ZJ&hp__@1`?s? zqriuQLJ^Q>sxmFO0?1sl_<17%Kg*v2>{aV6-Bhq&Rn)8AVLl6WvY!M7^D%}yde~$; zw!dv&>VD~Z|G?mn?gPqDraumkE@Ekq+KgetynchcUfIVQad(UtO@={+X@HY%u*T8{ z)8`%Z5vCr-5$lkZrp7Lgut;CNPY^a5v?D1t*4^*0KdIJQ2wG+}qH5Hc+;Yflc4gwG zz;=xRy0AxSRpJvf@a6P&nXf5tdIE4}uF#^4uq%@Zi|x6PDejO=H7ZW3*ik0N8P?q_ zCmQN>q){CfQVK-k5<4t4s<*g4HEO$9U_JXXQ~XAfXkBAgTx8;=vm#a#pS1)RqVZe_%Nq_|@hn)*Y`+|@MpM#R9m zebW`z*zNYzl&&gJlcR%LO?sqv;h)Z!jtc6N_rP$rqvDU$Wib}fm<$z3+$a<=Kbh@fo0RJ>msU+Rp-c|O5?v&7#+Fi?m}z|2pR+B| zY`m58&YPfO_BeJ2B{18_5q#?;q}$7&_=l7 zqO?9DgSuTIcEjlPk2b7e_H)rQ;6jQ1V}j}TVBzo5<$t_Tj{mw%jVcq4Yf1=Prjkj! zWzutO;@WEi*5;ODG6Ep9xi2~5=HZ0+4K^Sr=qfY=EJOnsawCEqZWvx|0Ul%5dME0JCJ? z!Ecb&-;UIQ9^|7Ivt0z*Owuwzpu|`vT;A_%j0w?ZVh#hhnbuXju@pq5(a4cdk9A;S zk3u^%x=_d3Ly#ghk$*9eX2TFdR%{u$J3Z=PJUp)wL`KV^Yo!syDIuaQ+?RF;gb+k1 zP||7-OWrwRHA){L5Tn6gK5j8~tUGw1Y)Z9r|7wv*ebgusFI%s?p{8%g)w;H2BRv{* zQH_5x9)N$L=tK7oGaxW9jRo_V7PP=iJFYqB>^iY6BdYWxGss5dCdkx|J@x&|o-=#I z!K!y3vO+g-cVx^6blz07KzLa*(YT9nip{T|bLKLWdVQ_=Q;l4!%H7SpqB|r=T@6YM z=W?y`G$@ko6kx^>YC9AiIXw&+3cHV&RCYmZI)U*pk5?oG-IN@ad~rfyff7X0yUrN$ z+rSZG*ImHw-Mpu3p;;Dmw3u#B0d6pZ4jU3`jr|VN^z@Zv4U0Y7H1btS5qT=&384=! zfxzK%1i93D-ADmOYd1#uxs|Ic6Ref3g{2zxW$89a2}ZF!_O{_k5fU3_DOoBLbW7B0 z4w;%ArYJO0-QOB-W+UL!GzQjZ#Nn)1oE_hKD$`PEy1=mHY3EPfNXy`9&hj0ogvys9 z%O(ltXXv-(60Gq2{RJ7Ql7sN;hj3z?fXF!s{C#=hmWO}@HbKOlK@mF<8i~b* zp~YQ6V>@DCVC;rb14B5X;u^KmAhM7b358R1^f96pzr(`P7z~;r(X67Tb5tKBfQDH7Jh0@BXtX#S0_% z9@`89eXyd@cjSJ5!!x+A6k|MkG^Z`PYp;DaH7Z*$?VS&lbr8GHwQWFztnVl!;Pasn zZ%|STem_4jv6Z{jaJ<=UWmNErCBDW+ZKBD8P|HYIe zh3O6se48&nDUNB)5ZxVK`Zmv@P_3??-=dP$OY>S%M)NBp(r9Hsg$R3YJL;h_#*RL3 z&-n2rZ!ZJ>Ed#43%6)K5O(ukUYk%jAh!VO}>pkwdYsLO-N@pnhgaht4hOFjLgX^sa ztmW)Zp~0&XvS_U8=c9#-qHoCTr@Krz$$VOYdmig^tC2Wo5R|V3L!ShKykd}X2@AD{ zKfL?y3?pq~KU`iMCqGj%t~P2=hYhV z@8~gBpS%A+^~ByCrK$sB9}(F9mdE}lcP(UWqVH_=TbVCj(-w&zWoXJyQ#+R^#GtcD z2ddKLVP@V8iy&5Pj!Hz@3o8kz$;Onez8>{kqBqkG|JJ+QAhV=4T7L~CD4FBr)fXG) zyR)Y!{0}v-vQlD#6TWRg>EKqF*VDeD;8w`PJdQ2-S;%5br&kb0Sb0+rC?t1ZJ;yb) zI8UMd&>JTSd5V%GU#3r~POf(*za@Ey4(GD+I?!fERkA$+FQEE0tiS=)vo@s`@;T2QVqydO@Q6&XU#uH=)3w-R0CX><07-(@%I?vAza>w%6SLy@t zy(V4Jn5*lmOf?VQ(|vFIZktVONp5Rg=wJQgm+S?^J=lLfb+w1i|450GWnm^D0+^f5tMl>8lFM(Kj+ z1P>Yrtfi$1aR?W=7UBn9%f)l3w8HsM2BxXBqWMb)reRxJJBl^MiyW~pX@VEy_|C-J z+S3c#J?*}5-V;DJAo9NwnNu`AI7a#ZQJTJIe6={M8=) zSDaxD01K`G0N6i~1%MwR{rD)pI#8PTh<`xW;0pIWvF zvq1Ou)~k?>}l3_?1%)j+e# zebyPPh@QX#xb9>{dngj$*hixZ6%R7P>_8Xz#IV{JYTVp;%Jyt2s`BGtqs~*B$ni_C zR&LY8^||%;2o)KoZs8+aJO?M$t9t(YVX>?%Ja{+xfFFy()-8@xd<@f{FwQdr`V_QNj{4u4 z9boR_c`;^1Ujua}<#mj-D7;4|bR&zX6{<(pjn<6TVHvXGHRo=?NW1$wpzjO_RSc#y zrT89L2dX03(+%EB5^06-5-OJR3WRnh#T{I2ykII*xYwhQ^A{c6PQ7P9%S{GyWc-NmRCUMK(t8*|dq1ZqlTo1j=71 zQdrZ%QjkOJ8;~qT&{&mdfpF7L@3010lV0B7JJo(cy&kcB*O(#{J}B`*oV*cr&sf=L zkjpDBDrT;aH_dW2*-V|#{qpnmlP^e1zCNg_!E&@Y8Z*sgU5YW|kbw^I4Wj0eT7r6p zsXhO|00o`-ao-RXo#pWmCakzt=q}ZnEDOw@qRW@T#UrY!QikVrFf>#&Wmu%}2z7&T zrtq||vx=#bmfT*HW9wyy+C?r~niK^BM#qg7W0W+T37QPH4CCYtQLsD!(H-AwA*E`; z!6X(nlidL9Qlllbv?}jGgz`b&49ms}6Ofn2Tul;`vA>37f2oS`fYV_SSU)OIW;V>4 zou%{GO2jo%D+RU9#vu)cV$v*92n$Sl96{1Z+rcQBy2nUe0gpLW6mjTIx73CXRfEd7 zzhMK^*sPV<8l|1TOkc^cL;Xz2+NBtR%sHZK>tTcxM8qXU9Ff6+@|bp#O{KuhkcG+w z4`Gb>6%DteJOPV(wL>}1$>hfeoOShQlT9h)s+8FpumqOR4=+IXN<$do zEa5OBU_nhtw5df}OyhNyEe>VMv9P@A0AaccMs`#u4r8_Q(nK!INP<+Q35gqwLaHAR zcD&RL%xl5w!C%`xII-9%2E&f73o8!Mt``M4Sv&l6$&Nx(arW|~SNAI1wZz@pPKdHq z_Zr&u{Lbg3?V^oYlVKC9-9Mom&yvuE(30 zZs#*+3H>3KY}>w_?K&fbv2dF3Gwn55kwW@wkl9-Q5A`< zJ+Qefzrx>?ycED)*k?ePISNUn2NC`>>v8gL1x1E5+2Q`=ceUF|a1Dp@3Swh=MeGFc z4L{?`*>wh_^BjN^>*<4O6qK!}`bhXn|GC>{l(U)tv(6sLnO!V zibQ+atNdfNs4ht@B1!BiFf_;W3zBvzN=AFt#=N?c{9(^Ypt4p`0Hzv3Qv zQQ-3mP0ewVB5rn%4T#Yp!fCH{>&ZvLlMw3=detaIROz#;cFS{|3ALY2ce%&QTEcLNn?4S0x+VL!n0*_7miCJQ-?j$Xgv`N-?=JTc5% zL#6v3qtxDw##%cit*;qw$Rmu<8k1+UROZm9UHGp##(NLQ4ckb;(?8*VHH^70=cBLz z5v3#4zekk67Xbc7GXGux_}%sXSx`$KIu&!N>ORnos(Il>+;2+dHW4L7Xw+*fJg-ynO|kXsw4ZTw-Rx9xm;}6K z&6H}}=_^>_9q{bHr@YjgpPL2<$el8=?}QgvT1U3K;-1qi(TuzVs<6UTY0_@ySBG!A z_R=SYevo8v8iexb@rdqWMba>gIUM609kI5HNA^)Iv^dn9`JU)d=zKhBUs;0XHL?v4 zwFaXq0;jvEFHJ$s7g;wbtvGFzV!qexqm~HUD3A0GYg0+5h?l(99k}Z56e}7~U*cp( z;$&3nMJpLJJacW$EgOF{G5E0mXz-#eUBJW5#wN0Tl4f(zsytmnZlEz!g@vV*8DNxp~J0w=5}ovBD~IE7zo zusx^21kvz#1w?HxO_`0GKoWZ4FyA|wdXKTm$SR*~PtuR!rz%rkAN z!6N2h^iU`3LGM;2YOBSx*R`l}qu9jK5?LF@U@Y4R9;2nV^;#yGL~+Rt5&eplr>HXHfd-rP2*O#s`+`&w>?KCpqh_d>M{9mJLgyU)%+Nq20o@)H1rV2WceD@Vr^l?K z?xgu2O$B}gE7DCYY7H{8rO_nBC(z&cL|fpNWD!1-4NfwK=FYKULO*GJ2bqOi*I$C; z>YFmZ%h;zYfN}S%`*d9-z6bjZ{DZ44O>9X+YzrYSe1EC;$+#kvf#1%7L-5my4oHjR z_Qwo-yCX_11+~_^DnH#B=`=MCDu@Ox$|8sts2<`MC!c6u{W+Ex2W00AvpUb>0h^?j zP;PR~ZRZTD=~2#xF2N-_4<>rM(=f6tM>ZlI?QhYfuLgyEL{f1twXr zbg_ggF^^LY8U0oJ4iS74_K_HC7B$hU29yMyo{21BZT=C~*r-``q8&I18-QLVgvUsO z#VY?7c|{<3QQf&f9sVfsYDJf~+f%oEb4E{+;Z&ZOC){|=gxnmgwE^|Ec)hsS;?EDn zK~+D3fP%i+*=U3X1}NYLxEywsEN2%Nqhn-!e}doW9w0kim!A*9Leuf$L&I$nj(*39 z@d3Bw&UCf1X$o7hjsGaau}(2huQ$QfDO{diAf(6=k@fSB(SWFL_q0s_Mw3#=|K<(< zQ;s5I?D`8xsBdHVSCh+INnLSH4&_G`Z2_zwumCEe7KDa|)c|gJOO9S)C3H9!@4)>m znqY4M&?)?N^K}@9B1R_SR?3YiXI46j81!=L{h`&?%cR5I(N(nWhd4KSLzE>F64C;r zj9zC<9oW4*xj4yoy2o>b+z7XVn8MXbOG|70-+Ei0x2TGLStR_KpL7~t^Qw@GLB5%eB1P1Y+=CNau( zkeoNJ>il?+U{pGk7~KSd#SpS#*9GioVD_=Cs`I9)aMiD4O4nGn7|`S$4s_9Y?aP)*1&?h(|UKp0VZjqDV9l9p)H&fMHb!+{%&C*#UXBGGTaL_4w)0w zvtm;Zj-zyK@a(fnm;nuDEAG~*2*!Ca`4$aCkUX$sO1dbg>j2v5q+U7rKZfFlM_(9wu zWCC$b^*>D~Edz~N6X3|s6C8+GLRhx}sjlaIXnowJ>YOoIn)w!|5@=~<0=>f{)OLW| z;QbtR4XzNDs zpIQd8f4WZ$)EOU^VhS16Zbp7|ErIA$o6ZdC67n&b78!s_fT1NaNxK=5zoEqiFn0S# zN21GjJB0y|2lD^dG6DC0$OQo$u8zhI{6+whI%5Zte~dl;_2pkZKV?bPIXQ$MHXwmP z%ZsCec!je>1xgfM2>ZDq)n?K3318dgF3tNOb4hwYJbwmCs@kX>bB68q;&0R6sFpac zO=l%ti^(vvGjDk@JDS?OzFh&z2xQkv{4l8uc^JsiRv)YMI&hH%4pF3b%ha@yqtBph zwu}5JBcS_ebJNkHF)^Es$H&z4%r-Rcxs!801InO|pRiRXSzR0o9LE=|qmQJQ(v8jT zB#J(9kHpycCblRaMx}e|bI`e>Ek)D~;ra(ByINQG^VIWIITl%apa2E|0&Gpb<{Fzj zMl$znU9#@?FqCA*6xzX}w@*oMh zD;4H_bX9W7lN825H(FO_^aTY`q9LN(%L*f1SB(`=5Y{lmD{%`EWx^|;z7bMm(VxL6 zlDXKj6O{BK6*R5USg=n2B$>3+mLbBRGWFx-l#5=juN`FVLM2V|;*!S&t8AnEk#Vtu zngz8;8gn@z6|JRRuvld@2jeTS>xq)oZ0qzC%er5Rhx)6?O5S$qoV*gy)+!rKvw2h5 z8(X@&h#Ef)hakZ${IM7KOVHL!?hh6NZr}=_*576kcYfbGrdtg_N$3yPc zP`|fSdX1#=C*(b)Jv}GrsOlKF>E4@b;yK_5dCSC)lOEJuWXTjzGa_2D-N#2=P!OiU!sC$mb?Z2U|i;8PHsOxyKns zdRi}mY62-Gr149^ci+YSP0vtLaNZwpiuvOD4V<9mOL<@maXj6vMH*2@VoMxYrzBBg zos*n1G;#8;`6f7A)6W0%Z8J(r;Xs#dP zL!Ysi>B_$_)<9RAKdXXxYK{Dm?)!!vviI5OCY$TWm@od%%DpdvcRx>`qk`C-{QYD) zs*ug+^>U!A?Sy^=FP$83KHw;!(J2=LsS&if>^mK z6YE1@&WzOP`@lKFp^il|*&xFw{5!sWEv|HElI}8asL{^H1&`We#XBa$bg^il7HT(- zrbz>{t(FT5F8Qiqyh5gXQMW`m=FN1ToU8a~gJ!%*)Te2D9JhnU*`i#$7HHV)C*P(W z1cJ4ZJC}L>k*j2G4aR7>e?EVPFw%pyExe{_$lhV39&89t>@YKnk@{?z(|;vfX03HI zA#rNW-QTCB`e^wk-S?+1AdF__~#p$!L_i6{$(WbG+ewGOkJKLay7z)+q5$iH(jgQG}MG zlctq{7d?#ReGZ3(9gTF0HHl+uobYC*Jntz{NyZdtS$xGpD2M%SaA$3YPCT#y>cWYz zDg$!|14lkd;jylZi6u0GU0O++fvFw^L9SbvE z;wE46U3lX?l=fG&z?M~=sWJvLYTGOC)g<)Tm3lUv&*`p&j>(wJgUyrm%TFFvGMPHe zj~r69Fg*+#QBX|{+CfH~W?SR8EjK;=r5DmM>(%SJ93elQk#IUdoTZuTdId zW*qf39iTWwv{$+3M$14pFv?dscAdH2&y%(QY~m;K2=CROc~v+tLJ|7S;Sy=R2`DeSwSgH_UZ8ndOU4kh%3H+vgrJcEIvxpcNu&|D+oGP zsn4fsw^cwO&S9jVLUT;IM8IXaJcckjOUbr()1%bG!ghlQdvrzNFtK{sKyk6prBw{U zrYhYoQ3dmavow%`Se${B?4rL<5Yx0p=^B=raQ9-p*%m+doBPS9f}pWHeP6?N+~+V;V+9+q)v zs8a9d_CB|aF6mHbPIA=V7#(oPEx(ff4wXA&V48=%(&B% zxM?~yOqJJ?JZ?|Cuw;zTOE9}x4M|ML+nCrR{QZ> zpLrQ0ve}WLi%~b*`!qkBDEfRS*D-^4qQ(s&#QF^KEabSCl*G}M#btN6d^N(Uqa{23 zd_%IXk6Yz4_Q=^o8KLxIMc;-&GIQP_7)}cI`y^Q`W-0kOtY_cveZ{W|n7!T@_E^$) z`ME9QgiWO-hF35$8Ap=zGg@S<@9W4_Tr|d6`CP~Q>GcN-#5)WW6k2#m)Zi6I`<=ZS zm29A7m=^5)(_^G23n(Sh69_L0n$~NKEbc?ZISo#5k|607dkREP7$YZBowD%QPqceq zHtqw(uMi8rh0v!y*TLu_nr9_+X7@IPW)DuKJcE7D6Td2as@1yp>GF*#9tZo3bx97RB1O{^Uvi>GW-DqXeJWojrdt6yup zDO3w}aj@H_81g+W0cby5{m8oFvOyWD=-Q1Rce=+fl`FWlky|i0*{t(2+~jNTOXA4F zRu;URnLX&JDx##W|fG3IyUM80=)?8gm{ zH|-U1VTbwZ@Z6%~C$Mp~J%O{Yg3Y~SYt-ZHVYktCMZ)dLqay+I#x(W!)y;|3fq9X3@ zB6=`Cr`!&+9zvVmWd%Evm1RAzXS#=SSIoMtY~*o>+&JHWbDp9c@DUkna;lyi9@UR` zHw+GrY9Qgc)jw*Rz*{o3JN(pQFTyC9aUt}`05hTe{KQ7{c&80mNnwu zH3re#Dc-64jUJx6dJ``BYSN5Sdf|OK`4B0ozQcx7;mMbnae`2dP1ZRtnbmgpReo<# zIbOwwA-f_stf=V5ZNoBk z6<+zldCOI`^h9U4ih@;e05H}y1)d->+pc{Fbf7Cp#}jDvmSU~V-a|a<+57iB5gBhs z_97D>*OJsNOpC+fptKj`yu)bsBiVAy*(t!61OR+|NZJc&o{3MybxWlCZGF%U9dHAb zk6Fjt#4`-mZWs0SKmdL37cf5#ZGJiMusel#X6>X%CJd%PBZfX|o$gV;XJ|FnfFg4* z13S2#8O{pK%$`-df)Hog@6-m~XE1D9xMkey$GAc4tq9h@GZ)p+bpv3buc%TvbmMI3 zCg8Q@8~lC{S20&(5ZeTB`S|4v+)*WIpCcwLeBd+}zEhv`ZHqo1nIeBpOywOQPKSJ| zX~lBmeJ+|nvDLrRQt>g18OjoUMqozn)uvslHGo?a?PH(NJ6doHm&@#h>OR9p@r( zu|GacPawVCwJ3btpvgsN+{2_l#k2(zHCdwgI87_Ou7L|nU*fduni}j7wsCOuB2#qS zPT)5+;*m~5{n4cvG(B3@pSHfG)34G@#_(a=6w$1ctH9yPk(X85!~%Q8)xHQtv^~wz z{dR3~ZkJ4U>>=*}sJ5RKEtUMxK@>#7;!Ca)R_%bIXCt)bC`gsDW@v0^Ew= zd!(v1F<4xhnvpv)EQh@06+geAHwKQYxjQfnjlAup(! z+2Z*H{g|e&!3o=X2{EnDe(|YaPII1Omp2)wyf|^kOBRe02?bYkttwZ0b|35Uxox=) z+h_(&f00~w@R&yCrm;$1XphM4b%nj_0?SIZW8er`o@L2_CTuXz%uh!DkPBOg(j$#` zGFK5-ggzPhM!f47nEPmhVD%hHR}+)FzGZ95Z?6v92?%a<{`Ac1!LO6$<%Fvo7RO_5h}huE`BS@dEai17YRYnRj8Y5oGE?&$x3-ZI^PTN$X9f@cJKI z>Nf|4H%JfHUH+=v9oAY}`)q1^yOm0A86<{XU}mtlx-qKwlh+bVuKmg*NfH->4syJv zjGF{5jE7GV>QW^F>LCiW@i3ldN+@NgeH*(FN zPrpSGYtrc{a*p6tb$nG&J-cwc6lW${?kd^BzvSd$LVEbvzs0RvHiLOP6;D10$CfbP z?_7nX(4dqbr{LE%tpRxNvKm)gEK#Jy>p&`g;E0F{M}sh@v=yKU!NM|&>E1g1^jP`q z>el?=)BM~#NvPQ6Sf8aLT}y;#o>)YuI?MB=Q6me+={pmJF{z? zqsQ+!X+QqxCP`FA9tyyH`0yD3FZmbF=J#&We@{zA06<||2lqeIQtx=(Uoe4z=p~oS zSu3lr&M1RPK-lJfL0@daNR(0nRT3rQW87FuDKX8p1}@FMp>kIOL%Ip>3KE_-5zUx| zCaASOxlZxaReyQ^aSIE;meMR!9N7=_DqAUPjTsIJptYkx+0mTuw7sn7w20Tr+Vjqi9Vm3TfZ0LHCG*?KJPGDn%E}eo`hN61NZU zEi92!g4Aku@0CeKuPZsjE$0Yndl1H&a{qkDtJq;^h-wKcJh8x{I;U0nd56MgttFrx z^i!yfB|?xjqEOh-7jFa(+MSF#yY5U^A{QjcV*GI4=!IdY(iOEKw6CUnc$aH#zQJ={ zN8b_83j?m)OGx)=+=snLcM*F$c25@8kT0n(h#*-7$c!aR1Q|oP%<~~{nPA+LzfO5& zOSXOpEij0MN*O7Lxp0ick}6Z;GQMylLA^pmY13*n_2jo>cq;e-iD)$m^3Z)gxt4?W zlY{mAOkHCRmV7hK-+4SMX~QX4Nurrj=wz1s68QROQE{={QoPReQx7*LP3jJC57>Ki zu4>+r)&tD`9jMw2NNp}*{N_@NcyhR;p;1)X=h|1)750I3%%pFsLpj-Gq{8p3!#hND z`ii=BvqDCeWCkk43K+!ImMT8o5~Jgp8A*vOPAh>w0cYqV#1a%2_fNoZNdJEw4*5@K zN=;hoPZo`TO%7$Myr?3(BK))xtBawb$N>%ubLB|TsC=kU4wMiUs-;@Bgq4H{vT9qQ zSS?ewylQ`}doqV#Gbo=HE4ThqbM+8?dNzJZMmEM?AiHU3Qor>w&U3f%U+^m37v6Q|DR+@*?))9@)v{=;4|5*e6nVVP=?(VTq~9 zC!(VWqj&85n-cfzz&N=*UdT-v;=(nlW_d9wa^uDu+fTVavnc1Ts2LkES!7Y`#=qugNNw1F zLOKe3^$3(s5WOulZJ$4CL=l}iJf%`ascIS(+7W5ZPnnOLxZ&&<|D=`pOaB>npjL?USI0oxRb&mFm=-4V~Pp(vUhRM(O~^RL2|HSQBp$% z_^`zy9|3m>mc{aX1PSfW>D;DCnWWMvk=?djyeRXxkNKcdCHgutkb>}*0D{`%2y$s+ z)WbH%xF{jyP^lHMDaM5m%^jNYDXXg_5FV}VbMOY7TlMq|FHAXU*2T;3IRb@9Ne%uk zP84dv4^V7+`To)^vOOm2)q2oPRAzl_V42Hwd#+&G%ar<|V`j}ZmovQ{BzQdhIwlcw zQ7+^*mKJ)xqP64d!)Mqi>)p~|U$$jk48{22U8t7>bQ~D#)zmHM@f5CM-Z(!%brf}X zQ*ijF`0Mwh9*a@90SEb$>`9SP;waliTtsZQ_#@Likz^^@#f?z%@=O%V?nU_5OHJ;; zTokYQITah!;_*nljSPo6i8OEOZT)}+X`5j{h@5Hl_g=0B1kaRiDAAN05jBBetyS;m7>p|Cfj&n};{o}XqXTQ$p-uL-FYp=cb+T*jf{^22> zZoXp64$ce9_xntn(AM4>2=&5^_N!VN-y3N>{YFoe?Ivby)tz3^B)q9xC})qQ;^F6& z1TDv*Zy&KL!Mi_*!-Mm}x@iDdYOZ1Wkjx&6GUBRqel-E|j`6ELG=P@52 z#usY6HFgI))99nRWGynrsz>D6YPr-#I)uK{{5*L63)?#lz0ugTb1rXXH(*AvBX%Q> z!Zx(OH~QRKWUY6A<(;9Yhsg)-U2?0pU0YqqxBOS0gQ{bzK<$e0%6Nra<1ROu+w$?c zUAltGPv~WKg_k@VwamBgwK}5-t2~$|^mP90i$9-KD-ah@W4K|sG0b^1X zt8zC}+zGhsHYh1pA_cepii)Yg7Y*$X%dk(U#oHFh3mR@!KgZCA0 zY4-C8%0~2Jk2D)Ym?I1wqjFYjLnPh`DKM)eK$D1TIxpDmg*s~GduA%W=#r7 zL(jPMoQvL8`5tUhetg=0Uus9pY=0P`u=v(3SoU{eqc+B(v_S^_p)nR?PiBt{kKQ1Q z*TZ$~gln4hc4a6?p9?&eH!Mf57k9%D!(G9dyWH!XUp;m&fY5+43{P6YS(g;l1A&UDtusalv8_}dy)pdxtFc^ zj!4r=fd?WO--BH%hxpGFvP)e~y_n1;a^&pFg7TyiC-H`9)7!nmYF+(5*qp^VUc?K3 z+&(GEa^Jk_!uE*4yx)q?F6k*$z4~$dh4nc1h)dCX+m4u~I!Alv9+%`}8HJrI^BlBb8-BxMYt)kA?dYPRc!Q7 z!jq}%^7#kCX;}!u{l*$I~u*>TSJ)R+J zG4=h0$M)u9IX`jg9o=fcz+4??GK`+a5R+ToqsTCFo!xp_l()d*(q7_Os8| zd|NlYe)UK55ceemOWc?+uZP&gQk|4?dD4!Wt8Q2HGE=qflw7)`V4^JkvQ>+G!}pzs z(qnnrM;2eVHHs|dYKbpoKXSO-N9%UUm_%{j_)j&1>rvi$%lF^~tTKg@SfZf zsbs2{lUJC zLy~%(Ah!Ilezn*N9fe=E{LSm`n8(&*mP}9TN$Ogi+59*(5}R7Sdr1iGC-`z9>i#3s zxOXRm5){rqm2VZ}uBiyx@{W_Xya2<%o?rya{Y%^iCNR0$I09`D0$ zzGPQ&@cksh$1pUaxP&Qdsm7PSzQlb}{0u{*OguZp6;54WWmUD3fx-INy*6ftw^2b` z$G);jOISR8&Mf_pQ5pY0H{I~_R;kA;McoUJJlk$S)5)8^BSXG`?q!(4bw_o%51}`1 zTKXKJA20CGo2ET^K3>l+{3cJw8U9C~dF@4}t!(J6175|*tNN=w_k419(GsPV%YE$d ziCfn9%Rk_~pVd}BE`~#a zzwcqNMb?wlcG-Bb;4G?@j zajLh}Zo3p+rdo(yX7h_3PD49wH$J`^)4TpghgK|}S6iCxQ2p9-e&<5^JcYyaPK~xnO~6$(@W?c9uOmh?7}^D%}!jAxNmD+tKQb- zC)}dFLp9fVNH4y#L;F^ym#z%k=EtY5NIbiGIwZlGQQnNM;lP3G!Q7AdA5J|g-Om#F zj)QrpG}|bGae2;>McdEIaD<5~IKO|Q=DegEqmjr> zHKQVH`QS%YJz|)BP6D6zFKXlKeCa29TO$IbMesM&LhOhIj(xvnRIXlIs_9t;^sVDL2tULF5=!NBwub%bg3(fMccW>$v=$Y8t z_^?havs&EV%(zkas837|=-mf18?Av9{|Cp?@NZLm>dBq?NI)6`RGn=$o4 z_P97%88uDwIvVBCrl4pIKj~5NJFHhkMwOGW%hs+JmdO#c<6u#E9T_g8Q50#B;K{i~ zqzM1b@E&8bjptxq_}P#W4ZpR+mMe#JzFOC^2p{7R?BTmr$M+`nxP`mrKu2eugIT9b zmYv0EOFDfAx28|>O#|)C+t^ueyIF)C-m}xj@1WXF5tn2g#dC_fA09d=Uw=@#2~V$E zcfqUNMCXlpOX|WU8)RO+EE?mfl@#RJG4;76Z&4oX-RF(PKli(SzNG1q@~hWN zR_U%4RW&gT(qARmy)4IJ@n(}l(fniKViE@)vdMO0-0EeXdL6?kCF~QI%-cWqihCQr z3nQ|M;nV@Khhaho1|2uO`snBH61BBxP`ZD(F5c|oQ4Ynf!V^d1PE1B^@vS`d%~m}B z9vem?U+DZ(H9wK3#)soirRew*x+K!n;;;|)wTuRCH+otHW_n!iF{4XrOL66tk9tvt(cV;NJb!E3%lmm%a|BDZ7xsFko3a zX?{cE?7Jt$j6J!XliRkr z^|jX_>C48u359_Uo@s0*--hj;=h9bubFaQWDcn$6rL;_wSKrdJ$$W2_=IM()yYq4` zZacI2Lh;dZxhYUFrFh&!a zqd5g9Ln>I?OVZ1me&I_8P9|RLx8r=_wC~8&&`yJ6>qam~){I(M``D|*D3cVtA^LQ9iyw2&UhXPXE?I-Labowxq$WU zCl+7wo=$KGldlnBi2oVE7{c}RF73H@w1Hng0`%I-)v#H3*9`qb*x4`peQiKyFZ zP0G^xTe9y+h6q1d&blEcr7aV{NHPSyTY+qf7G$rzr}>narYp2o8Smue~!x%;vee|?1YenjPJ)4VpGn9 zlyiu+Z(H)T{Q9LMM%_!#?Yb0MdwaCVDz{cMCiv;4{BF*OrE89#P;F){$z)B4;%UqJ z);bkEb8qBR8iCEGZ}o#26V#&AZt3RKU{2L2pIEfQeC3;{uY!i#cnQ;4_-=ODJ7@aG z%X_Z-_ic+&Z9BXpPPvj#)2r%c@9k)jC7o*)7e%MvuG;p#O|#=`%Jlg+^h&l2oS8$1 zoD}1htuo!6ZPPi`82f$c8Kt49JByoBFR=%HtI1y9_&CFVX_KDZhkZ#&%@@Y}_VGM; z;kXHNKeH&Q#k{vRns2?DT)eqi=N*05oR|82%duOpaUJ@ZR1~(q>w)0ww-d$7woH25 z+mU5lzscOYC^yG$ksiOIMORL4p%4A#5V%o#;hR;PRsXfmR&A9ped7kPwMwCf#s%K*3W(SvXYe!XhnZxF<0wPu z-PYQr%tP9FDfgn7ht4syjcA14ZM<{)+}qd91G|}rbUw?4Ca<~^b)Cn@H+pnt))6nu zp3nia4s)=N`7Hrb+u$KN&pG$G=j*Zv6O60d}C<~7Z z+^g1=5Em#Q_A=v)Nm@D+J6EgBuD+6nmJS*HqV_M12KthXOp(lj&0mm!Nz$14*izZf z%OrO)u3aRN=wNq%sf$lAZ7wEK`1WmwGNASM*F3&vPafBMQ>SYK#A!& zrv)P`yZqc4huq$~TBh^#i*A{=c(2XA?2!NP=+P^7L0S0vczuV^mn&KMs@B}q^axLD zoLqOULoV{v+JqDqjhg%H88;u+rbbDX{$A4d@m;&;zUzglMUEw3XYO9QzV?EVG}x6G zoPwmRbJCD*CMp&rS8@>1eZ-E~=xh3$~& ztBnnE2|uxmcMzWHL!Z%j?40-KL4->1>;9Mc!Kl46m#$5s=lOFnpLgUQTySs zGVbt4Ro*9?m_>fyi=0$X*5~e*UheYp_FZGf(<#*lX{EHVd-64_RnMv3Ph)1-Z0(kx zpPO^`B%{*yl#1Su$6P}{cdyR0ag63=C{{Sfk~C4nLqDZ;T7B~)6RQg*=~Fz|`ze7u zuNdyJ%Z@vH+;gg3oahp^HTdh&{$>a^6_;vPzDaZB!3%{&9brqn3<}v*c)%i)n3;!{S zUE*Uf|Jon#cLy0KeCYbH>7ud8Ok_qREE_kENPBnnd2SA#l)x3VwCfl(V;gtI^Ea^5 zcSi3_GjmZ~G^%--E>@n&bl>9qj3wIFoSkuw2Z9>p5OZW&TurdLdIcK%2vwIrI;@}7 z#N2nx|Nn}3zfcjomomSP+C`#=#5p}o(ah+f`hUpD!0hJX&Jzcr4I!h`$6v!;<&dcC%$GapDf>|?G8Ti zp)ukY%a)xKQOm48;N+yxd4TzxO#S$x3w<|P8?Fyo3P|D)-0;7~`!!|&7q9$Xf%%ot z)FD3e!X%yp_GBwo7 z3(G2!E*IQ-@nCgJ|L&7IrY_xSgndeuFJoe)w)c1x*|CW7W5bwy^6kzHubH|wtX|Jw zH2LtrLv?E{THnAr%L)t{bc8rU z!)&Srv>u;4tG{8FsB+w=x@G;Bt{ysDr1W6dN?Zt5C)da{sxctrR@^mR{gVnZleac} ze@!U4_c*$8RhnqTb*z76seE2TLnp`Hy`~o$TCPoKsQ=QlRmn&kiv7jb_}pTvT=K-K z`wfrU;wl9s#*6KLFd&Uf=vlHOJ-C>9)R=-agd;DBQT@9WOlDNE;?KaMbp)=it3BIY z3E?F-paXg?wmFmCU7Oe~41qke?|Fx)>MYme6X)Sk?+_W>gx_Tx#mz&1m92^G6Q1ou z=ck_uSB(>P%br$kJ}@(aptE(zwo8TZtQOoBJlx0Sc^4@fhS1LViikmib{GhYTo*yP zD8OZRO^Do2%`$Z}VYG zWBTTjzBOhqT-)<y;4*#G`IJNQmd%%SE^3zKPKU$9qK2lz+L|2vU}FeQmIMi zDBV{ci<8ce+}wLVb0bef-@21NZ$g=ac9m6!zFCoV)cx7=!H-{0yua4%Q1)3s)6mfD z!r=>CYbHP19+2AqL9ufc!;VbrvR>YIXG}6Y)@?{wav)P!Nnamh@_B<~bT+q53agb! zLl|Lyonaq`f4ar>k_YOG>r@TY}ZUaj|% zFftYYbJ^n0El!hPhtrzYx#7<+;7SuJ?SgK*7Wc5IN!yG6Q^HF(W&MPE>MFzf-0ig0 zi$`$lv}7YQz6+QH_&y&S7Q^we^WfM_cyOyjqqhVLXP1WTy@XHcyLtR-uZE=a{<_Fs zvm)pH^S>s&Na^Tn${6lO9^;@{4F4dH-3xxm*at`q6Ak=Z;)I-t`1dhA6@48| z4HHvoJ0n$VVsCo`dbHxr96y zje5>w<})rl>Uq-UJzrYndE{f5Sy_?y!fgZYcn6%98;U?$T4X>zn-Ibj1%f>eO(B&7 zO%Z|36>@SQQTU0qK}tbd_q;6oC{euO)^M~qq=%~(|KZG3M*@Ico$avhcr4Y|gF((E zL=`vSDWp55Ch*cf56rx0VD1SF#9?uw{wn0QquGSKiXPsKylU=2s60EIn;Xs@UH7Cl zhc2YT9OJMY#A}*qAG0<|sv1~fC3>?p(Nlk`W7aEr14bHZXX@%!hlE2O44w25nx0EjQ+qDDbi zygvzL{yH3D2B|91PU8v*WA?TY;^(Ow&hXsxq^^qet!Tqx0xyXu5P6EUS(Bs!-x(a8gNK+M0cHq3o*wjF$8@7#g|q&ol<)HbksDx%P~>H}lA?txEw| z3whgoJ;AT%>&Qdr>ga!H7RY82+f$)Vtqa!+99LcfuJ%q z8bu$5C_su=TdNgJ;sy9y)C7`-e+PLe+{1=UAWUZdP_wqDy$?0H!F-oO+eM=_RsRE; zk}43X+58;o%0UghP;G1HwFG<^i4FRVKgCSkFz7V!8~nd ztSRm7<4ubE6k>m)4D`GdzJ3xU(g%#*_LE2AaSq;xF{a9ju>QznPp{dUYy!`}fiKY2q)ny&KzV+|E`y%{Z$ z6XL7g9o8r)NfU6;j70YZ34auFxiOC95lAupI>aH^RF z5S$<*+w$}2#~~8IV5J7y#6k?B^ymE^9jD+~q|-xg1Da3ihtU{h`9uvzfGY^es0u;R zHa|8Dhvpg!ce07hbKn=jhYZTZWRsy64sLw$cE*w!?jgin;cp|z?i?*B4NWvSPL`+! zdc$MAjR~%Eq1}kvKSFf=hEod#VhLolmog3{OVorr7s1D3DI<$KB*l@T6DtUbHe2x^ zvPk&E4Zh$D8H+J7G4yhFbM|&Vgf+*w5-8M5m?ZONEXaok zFxm{w!^uJ^7gwb4$2EVDCK<92NsW{?b-FmFKNI?3ZqynS7< z$Q^Cagvt8?#1QFMTMV}XP94zbO16$BE9DH9a;YnGFWs61o+t3oR_J$bi>2Tg zGAtu-mIx3sy6siOkOi8#ySU>HyHghN4PK`VnO~fPjCQ41@IYh?hl;(hmgs6mfMiI+ zL#yw8EM*quT0Z=`)i@7WFCYs+o=;hE3weK*;?zt`$a_^War$^)?CM@J?%p!rNJ0j-4?f@&X5}!TdN4z?+a) zqrhH?3&C&(go4%BMwMhE-AN&2bR8Q2p0tjQwN%w`u9QZU`)YO8T>#Ew$Y`G+4&^6h zA$LBL)f+Mru&pm{o`kx{0-uF09v`>~V$`3iU8p96b80(FusMi>bh>D>Ge{-R(e%PN zlJ9*H-Upc*+}*$uTF@juQQ(>SdXRCU2y1%N3B~8Yaau&G`c>&9vKi=6nUWwZ)18-a z4ItMw;Gw;VX66DG+IGn+?t5#hIsssp=t)N_Hd$!koY5}CAYQXMN3bmggr9{4(xCKZ-g4L|-Z2!$NOLwDE` z=P0wNSO`*R&H#ZcE&zo-kfhKa=P5&}FLrXc+}5uI9&&#@y33IP-%Q*}=M*_pXj6=r zBc)D^GvV}UWc}h7WV9VCfoCB@)WZ?*SSq^oo!I?t1HjmzUeI-2kWU^+n4OGLVLCNi zXOu&+kpZM2{GCthz>Sg-(oBa6Ev(Z+cps3ifP`Z6DEK9Q5lx%fkkmHS(^YY|bHaI1 zZFmQ2AJz*1)ocN^zlajm1G+SCs??B&4r*(Fio}gTYtx{Z5)~H4s4}%$Om(4&(0qW5 zW>&+XpIDp!mLIw9lq$2CGnEgiAs&zu-JM^*OofTe9jJ2ePc<$^hN&Hp(JMdqVcJ7p zR#%*zizfl+Ohsedj&=CA*#rPJI-&z z0SA^z;_kmtL?V8fD)gB%+nJ+KOK+h4qaA5C48h6j^iMBGzLMB)ymv*+-V~t1@OM6C zL+4HwNL9d&+`@GM04alvZlcxDrI6)mI%8e!P5$DdSjLR+A|rXkOwkP~1t}wzbTd5Ba0TM6*Daqt$^5j6u8Z!-H|Fb>e9{8 z9zg1XZqZK9u9gy(y3_mR^qn3iYh(%^d7lyyjt)_ka=?8sT?`~#*gbpJQDEx8%;YcC z|6x0ak0DSmF0iRL^^~Y?uy#aMRKW??m=S=!TSRK8iH($?$QNi-p}*SJx*|(@$W}SJ z@|&QyBHQ|P@H%jC#D^+&@4EUDFdmw%fJHZ|4sh6HvAP&rEcLny&)+PLK>q&-+3x*3m?eHy1+}(K^r4qcxQJPs!Z`T z!!e{^S_E8lcjpD20a>OV#)B%d_BqS`6M#gjAMHyBos^JRcLGHwvhgG%KI{t?PO}@t zL^BP$C^Ee%k4q7zx#fgZ9xy*cMit4#yj zgD@(gT6nI)m?XrBBKCVKRI1|#MAUl6@TfC<8J42u9H)dd zqBk|rcn%H?cdr&vmdWU?rFd!mlxzHA{?kOcI78&eQt*BF5 zfB4>q!b<=dtpK_aN>pUspDL6ABcq9Ikt5>?X~^@5Zk|e$l0`ojQsfPa< zr^cnKVM*p=joJXsggy%`tm6bVs4?y^RqpYiJ7S3Gwn9eN9MdE1A1NX1zc3?KY6wM3h+)D$JIv-e+2_^n_=C`|TeI&d_U{S5`E z8P(1KS&u!~XT01p^~@0Z053DQE7;3hWx<@x%+v zNSX3SIFQLE%@VK@w9-G3a9~5-4vWXbqz1X+%!@$bFajdnI)~%3&HzOUi5}xHeL)L1 z_vOK#`Mfd4-I0vq5a!y(ro`=_d}{{MimWBiq{7O`JXek!me{kP(7NBr$~VLM%c^zu zNmd&I6!;8ew3oavjfN6`E%B%16!y=Mk}vtD=IjPgq`{%9hyWvUVzVO#>%w@M0u)(w z+8SgqJq*Bu3skV>CuQi&X#ny@i9n}S>TSTU(3}J)y1#V$MHxCHC6(RcVl~$35TIUy zED3o&mHhrMRPyp7#(&%WLCk5u)j{T*$HK3ZG_)wqnu1p(-w-V{g{A7@i5Mue6pGcG()78Rj_-8 zq9G?$DN2U8?7%3(?GE6yLmAO3qg{z+A>V%?2YM*t5W{`Vb=>DQ;7S08He4aLg*aWT zkFyV1N5#L^c9&3%s|A#k`*9h_T1!$;0oSP)4ky-I6p1()TgE$5>8rq>j z9{O+a3(7V}93L31=waBTASWqlOyKzoSJAdn5r+!nL0NOGB^pKX%O3{_%>ov+a8INfBaR@1uGA9;$bl(EPa@?K z2a#EeQsF7g0`80!sb~P{sENb4@S=dv?9jk}8zcE@Ar2FQ23@mX05YD5=Kcr70390* S%_I27RGo$rYnC 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

  1. jI49;(6q$m3qJ8wXBT?uX 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

    #^^JjUjfQa61kRfqG_szsuW4g1b;gzpddjH zKT59uh)J`Ha1?Q@BFoE=^yxP!t5G;t@V9>}Ol@|vJh_(_5v5709iu-F6lD5@-k-9M zn}~*-NJddI*WC>Fq@j{&5ZR$;74opq^|xfR7-d)<$8Jm4D-A2VKxfEd$7odc3N-51 z^o!g}CP)n>3U~aM2DPh$f_}HDh!2gTcnsN|O*lhIkVph7_$Mkvj6P%~8bfZjga|XF z$f_O=ly^Wut9xJ-ngVBUk&RPlEY$M0(3c^olmPJ15$0un5|*x;7i_|EvvY+hh|NF1 z(fyeY$S{IT)X_PPegQ17fww!dZ}y+uz?_%=DL};+fqkGIAGaV0_m>v`A*lL(>ilpJ zv=Pb*D03GfC_xAfgpjJwA(GAgN{hO765uXmT;%_KH)3N4Fz){256SGX_pG^8uL?EtXCO{BZ(m0$%wM=a zUrHu^wT9*6v`{BVc8^5DMtCFc?=Fti57}!=)?@tIS5Ot<2w^c*Jy^tARD~Z)V&QCY zFbK{P$y7S$IPKmSfP#%fL`Ys4QY6|%VjvOg5N;pbItWN)p+yiSr6PPPg}Bn%cs~bg z9OZfoHOKBd4W!FZ&~Ct44uj}sjl^dd(jht=Sd@Gb*_Yu8dK5rOC%=I_3#*AqO_<|1 z4+*qe;V6;6YdiPlNMa*NXkH%l4W!vgN9>q>k|F%IJ!Eo*CECnvB}vYPYcH6JIt%fH zQfUjeXurXp*i@u>S>0F+Y(dN$Lu0jt8Q_`eO2*b~giYS!JC39H#uIS}Qc zP5Xp0Hg$IR!4?#0>5>oObxcrwGe#;ZncppgxQ7H)Y$Wnt+OJ4-)?{KezA)-HdF%=4{f#; zr3!C-Y~;+SJp0L8!QXa)7~JfCVhjJEw(QhfI3yrcfOxJFX*7=~VME)kx$9w!rV<42 zjGh3MLDm_| - - - diff --git a/edexOsgi/build.edex/esb/data/utility/common_static/base/ffmp/FFMPSourceConfig.xml b/edexOsgi/build.edex/esb/data/utility/common_static/base/ffmp/FFMPSourceConfig.xml index 3780f841e7..08b5cba234 100644 --- a/edexOsgi/build.edex/esb/data/utility/common_static/base/ffmp/FFMPSourceConfig.xml +++ b/edexOsgi/build.edex/esb/data/utility/common_static/base/ffmp/FFMPSourceConfig.xml @@ -9,8 +9,7 @@ RADAR QPE rate - 10 - inches + 10 DPR @@ -21,8 +20,7 @@ RADAR QPE rate - 15 - inches + 15 DHRMOSAIC @@ -32,8 +30,7 @@ XMRG QPE rate - 15 - inches + 15 0.0003937 yyyyMMddHHmm 4 @@ -46,8 +43,7 @@ XMRG QPE rate - 15 - inches + 15 0.0003937 yyyyMMddHHmm 4 @@ -63,8 +59,7 @@ PDO QPF accum - 15 - inches + 15 true @@ -75,8 +70,7 @@ XMRG QPF accum - 15 - inches + 15 0.0003937 true yyyyMMddHHmm @@ -90,8 +84,7 @@ XMRG QPF accum - 15 - inches + 15 0.0003937 true yyyyMMddHHmm @@ -108,8 +101,7 @@ accum 2080 true - true - inches + true 0.03937 true RFC @@ -125,8 +117,7 @@ accum 2080 true - true - inches + true 0.03937 true RFC @@ -142,8 +133,7 @@ accum 2080 true - true - inches + true 0.03937 true RFC @@ -156,8 +146,7 @@ XMRG GAGE rate - 30 - inches + 30 0.0003937 4 @@ -169,8 +158,7 @@ XMRG GAGE rate - 30 - inches + 30 0.0003937 4 @@ -182,8 +170,7 @@ RADAR GAGE rate - 15 - inches + 15 VGBDPR @@ -193,8 +180,7 @@ RADAR GAGE rate - 15 - inches + 15 DHRMOSAIC diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/config/GFESiteActivation.java b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/config/GFESiteActivation.java index 8cdb67e5c9..6eba94d5ba 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/config/GFESiteActivation.java +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/config/GFESiteActivation.java @@ -1,19 +1,19 @@ /** * This software was developed and / or modified by Raytheon Company, * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * + * * U.S. EXPORT CONTROLLED TECHNICAL DATA * This software product contains export-restricted data whose * export/transfer/disclosure is restricted by U.S. law. Dissemination * to non-U.S. persons whether in the United States or abroad requires * an export license or other authorization. - * + * * Contractor Name: Raytheon Company * Contractor Address: 6825 Pine Street, Suite 340 * Mail Stop B8 * Omaha, NE 68106 * 402.291.0100 - * + * * See the AWIPS II Master Rights File ("Master Rights File.pdf") for * further licensing information. **/ @@ -33,6 +33,7 @@ import com.raytheon.edex.plugin.gfe.cache.ifpparms.IFPParmIdCache; import com.raytheon.edex.plugin.gfe.db.dao.GFEDao; import com.raytheon.edex.plugin.gfe.db.dao.IscSendRecordDao; import com.raytheon.edex.plugin.gfe.exception.GfeConfigurationException; +import com.raytheon.edex.plugin.gfe.exception.GfeMissingConfigurationException; import com.raytheon.edex.plugin.gfe.isc.IRTManager; import com.raytheon.edex.plugin.gfe.reference.MapManager; import com.raytheon.edex.plugin.gfe.server.GridParmManager; @@ -64,9 +65,9 @@ import com.raytheon.uf.edex.site.ISiteActivationListener; /** * Activates the GFE server capabilities for a site - * + * *

    - * 
    + *
      * SOFTWARE HISTORY
      * Date         Ticket#    Engineer    Description
      * ------------ ---------- ----------- --------------------------
    @@ -75,9 +76,11 @@ import com.raytheon.uf.edex.site.ISiteActivationListener;
      * Apr 06, 2012  #457     dgilling    Clear site's ISCSendRecords on
      *                                    site deactivation.
      * Jul 12, 2012  15162    ryu         added check for invalid db at activation
    - * 
    + * Dec 11, 2012  14360    ryu         log a clean message in case of
    + *                                    missing configuration (no stack trace).
    + *
      * 
    - * + * * @author njensen * @version 1.0 */ @@ -214,7 +217,7 @@ public class GFESiteActivation implements ISiteActivationListener { /** * Activates a site by reading its server config and generating maps, topo, * and text products for the site - * + * * @param siteID */ @Override @@ -237,6 +240,13 @@ public class GFESiteActivation implements ISiteActivationListener { "Error validating configuration for " + siteID); } internalActivateSite(siteID); + } catch (GfeMissingConfigurationException e) { + sendActivationFailedNotification(siteID); + // Stack trace is not printed per requirement for DR14360 + statusHandler.handle(Priority.PROBLEM, siteID + + " will not be activated: " + + e.getLocalizedMessage()); + throw e; } catch (Exception e) { sendActivationFailedNotification(siteID); statusHandler.handle(Priority.PROBLEM, siteID @@ -253,10 +263,10 @@ public class GFESiteActivation implements ISiteActivationListener { /** * Activate site routine for internal use. - * + * * Doesn't update the site list so it is preserved when loading sites at * start up - * + * * @param siteID * @throws PluginException * @throws GfeException @@ -478,7 +488,7 @@ public class GFESiteActivation implements ISiteActivationListener { /** * Deactivates a site's GFE services - * + * * @param siteID */ @Override @@ -552,7 +562,7 @@ public class GFESiteActivation implements ISiteActivationListener { /** * Returns the currently active GFE sites the server is running - * + * * @return the active sites */ @Override @@ -562,7 +572,7 @@ public class GFESiteActivation implements ISiteActivationListener { /* * (non-Javadoc) - * + * * @see com.raytheon.uf.edex.site.ISiteActivationListener#validateConfig() */ @Override diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/config/IFPServerConfigManager.java b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/config/IFPServerConfigManager.java index 06664fea40..7580b04d3b 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/config/IFPServerConfigManager.java +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/config/IFPServerConfigManager.java @@ -1,19 +1,19 @@ /** * This software was developed and / or modified by Raytheon Company, * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * + * * U.S. EXPORT CONTROLLED TECHNICAL DATA * This software product contains export-restricted data whose * export/transfer/disclosure is restricted by U.S. law. Dissemination * to non-U.S. persons whether in the United States or abroad requires * an export license or other authorization. - * + * * Contractor Name: Raytheon Company * Contractor Address: 6825 Pine Street, Suite 340 * Mail Stop B8 * Omaha, NE 68106 * 402.291.0100 - * + * * See the AWIPS II Master Rights File ("Master Rights File.pdf") for * further licensing information. **/ @@ -31,6 +31,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.raytheon.edex.plugin.gfe.exception.GfeConfigurationException; +import com.raytheon.edex.plugin.gfe.exception.GfeMissingConfigurationException; import com.raytheon.uf.common.dataplugin.gfe.discrete.DiscreteDefinition; import com.raytheon.uf.common.dataplugin.gfe.discrete.DiscreteKey; import com.raytheon.uf.common.dataplugin.gfe.python.GfePyIncludeUtil; @@ -45,16 +46,17 @@ import com.raytheon.uf.common.util.FileUtil; /** * Manages the serverConfigs of active sites - * + * *
    - * 
    + *
      * SOFTWARE HISTORY
      * Date         Ticket#    Engineer    Description
      * ------------ ---------- ----------- --------------------------
      * Jul 9, 2009            njensen     Initial creation
    - * 
    + * Dec 11, 2012 14360     ryu         Throw specific exception for missing configuration.
    + *
      * 
    - * + * * @author njensen * @version 1.0 */ @@ -72,7 +74,7 @@ public class IFPServerConfigManager { /** * Returns the sites that have active configurations - * + * * @return */ protected static Set getActiveSites() { @@ -81,7 +83,7 @@ public class IFPServerConfigManager { /** * Gets the server configuration for a particular site - * + * * @param siteID * the site * @return the site's configuration @@ -100,7 +102,7 @@ public class IFPServerConfigManager { /** * Initializes a site's serverConfig by reading in the site's localConfig - * + * * @param siteID * the site * @return the site's configuration @@ -152,11 +154,11 @@ public class IFPServerConfigManager { } } if (!siteConfigFound) { - throw new GfeConfigurationException( + throw new GfeMissingConfigurationException( "No siteConfig.py file found for " + siteID); } } else { - throw new GfeConfigurationException( + throw new GfeMissingConfigurationException( "No site config directory found for " + siteID); } siteDir = siteDirFile.getPath(); @@ -186,7 +188,7 @@ public class IFPServerConfigManager { /** * Removes a site's configuration from the set of active configurations - * + * * @param siteID */ protected static void removeSite(String siteID) { diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/exception/GfeMissingConfigurationException.java b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/exception/GfeMissingConfigurationException.java new file mode 100644 index 0000000000..3dc22dd867 --- /dev/null +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/exception/GfeMissingConfigurationException.java @@ -0,0 +1,59 @@ +/** + * This software was developed and / or modified by Raytheon Company, + * pursuant to Contract DG133W-05-CQ-1067 with the US Government. + * + * U.S. EXPORT CONTROLLED TECHNICAL DATA + * This software product contains export-restricted data whose + * export/transfer/disclosure is restricted by U.S. law. Dissemination + * to non-U.S. persons whether in the United States or abroad requires + * an export license or other authorization. + * + * Contractor Name: Raytheon Company + * Contractor Address: 6825 Pine Street, Suite 340 + * Mail Stop B8 + * Omaha, NE 68106 + * 402.291.0100 + * + * See the AWIPS II Master Rights File ("Master Rights File.pdf") for + * further licensing information. + **/ + +package com.raytheon.edex.plugin.gfe.exception; + +/** + * Exception class for missing GFE server configuration + * + *
    + * SOFTWARE HISTORY
    + * Date         Ticket#    Engineer    Description
    + * ------------ ---------- ----------- --------------------------
    + * 12/11/12     #14360     ryu         Initial Creation
    + *
    + * 
    + * + * @author ryu + * @version 1.0 + */ +public class GfeMissingConfigurationException extends GfeConfigurationException { + + private static final long serialVersionUID = 1L; + + /** + * @param aCause + */ + public GfeMissingConfigurationException(String aCause) { + super(aCause); + } + + /** + * Parser exception set with a cause and an existing exception. Used for + * exception chaining to preserve state. + * + * @param aCause + * @param anException + */ + public GfeMissingConfigurationException(String aCause, Throwable anException) { + super(aCause, anException); + } + +} diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/D2DGridDatabase.java b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/D2DGridDatabase.java index 47b57e84b9..e27107244c 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/D2DGridDatabase.java +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/database/D2DGridDatabase.java @@ -935,7 +935,7 @@ public class D2DGridDatabase extends VGridDatabase { break; } } - return !isAccum && isDuration; + return isDuration; } return !isAccum; diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/svcbackup/SvcBackupUtil.java b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/svcbackup/SvcBackupUtil.java index 184bd69d71..125e5db984 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/svcbackup/SvcBackupUtil.java +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/svcbackup/SvcBackupUtil.java @@ -56,8 +56,8 @@ import com.raytheon.uf.edex.core.props.PropertiesFactory; * Oct 09, 2009 bphillip Initial creation * Sep 19, 2011 10955 rferrel make sure process destroy is called. * Jun 12, 2012 00609 djohnson Use EDEXUtil for EDEX_HOME. - * Nov 15,2012 15614 jdynina Added check for national center - * + * Nov 15, 2012 15614 jdynina Added check for national center + * * * * @author bphillip diff --git a/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/ShefSeparator.java b/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/ShefSeparator.java index 3e41aac8a2..bb4903bba3 100644 --- a/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/ShefSeparator.java +++ b/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/ShefSeparator.java @@ -56,6 +56,8 @@ import com.raytheon.uf.edex.wmo.message.WMOHeader; * correctly parse multiple SHEF formats * 12/03/2008 chammack Camel refactor * 12/xx/2010 jkorman Complete rewrite. + * 11/29/2012 lbousaidi fixed the decoding issue when the shef starts + * with : * * * @author bphillip @@ -615,9 +617,6 @@ public class ShefSeparator extends AbstractRecordSeparator { private static String removeInternalComments(String dataLine) { String s = null; if (dataLine != null) { - if (dataLine.startsWith(":")) { - s = new String(); - } else { StringBuilder buffer = new StringBuilder(dataLine.length()); boolean inComment = false; for (int i = 0; i < dataLine.length(); i++) { @@ -630,8 +629,7 @@ public class ShefSeparator extends AbstractRecordSeparator { inComment = !inComment; } } - s = buffer.toString(); - } + s = buffer.toString(); } else { s = new String(); } diff --git a/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/database/PostTables.java b/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/database/PostTables.java index 2c15ec8d28..c355d74a3d 100644 --- a/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/database/PostTables.java +++ b/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/database/PostTables.java @@ -78,6 +78,8 @@ import com.raytheon.uf.edex.database.dao.DaoConfig; * 02/02/2009 1943 J. Sanchez Add method postRiverStatus. * 05/29/2009 2410 J. Sanchez Posted data for unknstnvalue. * 02/24/2012 14535 W. Kwock Correct the duration value. + * 11/29/2012 15530 lbousaidi corrected posting and production time for + * latestobsvalue table. * * * @@ -1074,11 +1076,10 @@ public class PostTables { } cs.setString(11, productId); - cs.setTimestamp(12, new Timestamp(shefData.getObservationTimeObj() - .getTime())); - cs.setTimestamp(13, new Timestamp(shefData.getObservationTimeObj() - .getTime())); - + + cs.setTimestamp(12, new java.sql.Timestamp(productTime.getTime())); + cs.setTimestamp(13, new java.sql.Timestamp(postTime.getTime())); + int doOverwrite = PostTables.determineUpdateAction(duplicateOption, record.isRevisedRecord()); cs.setInt(14, doOverwrite); diff --git a/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/ohdlib/GagePP.java b/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/ohdlib/GagePP.java index a632a54ae7..ee1e26c27a 100644 --- a/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/ohdlib/GagePP.java +++ b/edexOsgi/com.raytheon.edex.plugin.shef/src/com/raytheon/edex/plugin/shef/ohdlib/GagePP.java @@ -49,6 +49,7 @@ import com.raytheon.uf.edex.decodertools.time.TimeTools; * 6/1/09 #2432 jsanchez Updated value magnitude for hourlypp/pc. * 26 Nov 2012 #15554 lbousaidi used obstime instead of system time in isNear12Z * routine. + * 4 Dec 2012 #15569 lbousaidi fixed daily pp value when token is set to USE_REVCODE * * * @author mnash @@ -408,6 +409,13 @@ public class GagePP { default: break; } + + } else { + if (rec.getDataDuration() == 24) { + dailyPP.setValue(Double.valueOf(rec.getValue())); + dailyPP.setQc(String.valueOf(rec.getQualCode())); + rev_24hour_code = rec.revision; + } } /* * Increment the count of total values. This should always diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.npp.crimss/com.raytheon.uf.common.dataplugin.npp.crimss.ecl b/edexOsgi/com.raytheon.uf.common.dataplugin.npp.crimss/com.raytheon.uf.common.dataplugin.npp.crimss.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/edexOsgi/com.raytheon.uf.common.dataplugin.scan/src/com/raytheon/uf/common/dataplugin/scan/data/ModelData.java b/edexOsgi/com.raytheon.uf.common.dataplugin.scan/src/com/raytheon/uf/common/dataplugin/scan/data/ModelData.java index 006f955220..00ec7b2631 100644 --- a/edexOsgi/com.raytheon.uf.common.dataplugin.scan/src/com/raytheon/uf/common/dataplugin/scan/data/ModelData.java +++ b/edexOsgi/com.raytheon.uf.common.dataplugin.scan/src/com/raytheon/uf/common/dataplugin/scan/data/ModelData.java @@ -159,15 +159,19 @@ public class ModelData implements ISerializableObject { public double getValue(String modelName, String prodType, Coordinate coor) { double value = -99999.0; try { + System.out.println("Freezing level---debug0 getValue "+modelName+" "+prodType+" "+coor+" "+gribMap.size()); Point point = getPoint(modelName, prodType, coor); GridRecord gribRec = getRecord(modelName, prodType); FloatDataRecord rec = (FloatDataRecord) getRecord(modelName, prodType).getMessageData(); - value = rec.getFloatData()[(gribRec.getSpatialObject().getNx() * point.x) - + point.y]; + System.out.println("Freezing level---debug1 getValue "+rec.getFloatData().length+" "+ + gribRec.getSpatialObject().getNx()+","+gribRec.getSpatialObject().getNy()+" "+point); + value = rec.getFloatData()[(gribRec.getSpatialObject().getNx() * + (gribRec.getSpatialObject().getNy()-point.y)) + point.x]; } catch (Exception e) { logger.error("No Grib value available....." + modelName + " " + prodType); + e.printStackTrace(); } return value; } diff --git a/edexOsgi/com.raytheon.uf.common.monitor/src/com/raytheon/uf/common/monitor/xml/SourceXML.java b/edexOsgi/com.raytheon.uf.common.monitor/src/com/raytheon/uf/common/monitor/xml/SourceXML.java index c4112d1a81..fc586bae7e 100644 --- a/edexOsgi/com.raytheon.uf.common.monitor/src/com/raytheon/uf/common/monitor/xml/SourceXML.java +++ b/edexOsgi/com.raytheon.uf.common.monitor/src/com/raytheon/uf/common/monitor/xml/SourceXML.java @@ -28,6 +28,7 @@ package com.raytheon.uf.common.monitor.xml; * ------------ ---------- ----------- -------------------------- * 29 Jan, 2010 3915 dhladky Initial creation * 18 Apr. 2012 DR 14619 dhladky Replace isOverride() + * 28 Nov. 2012 DR 14412 gzhang makes unit internal to this class * * @author dhladky * @version 1.0 @@ -86,8 +87,10 @@ public class SourceXML implements ISerializableObject { @XmlElement(name = "interpolatedGuidanceTransition") protected boolean interpolatedGuidanceTransition; - @XmlElement(name = "unit") + //@XmlElement(name = "unit") // DR 14412 protected String unit; + + public static final String UNIT_TXT = "inches"; // DR 14412 @XmlElement(name = "conversion") protected Double conversion = 1.0; @@ -285,6 +288,8 @@ public class SourceXML implements ISerializableObject { } public String getUnit() { + if( unit == null || unit.isEmpty()) // DR 14412 + unit = UNIT_TXT; return unit; } diff --git a/edexOsgi/com.raytheon.uf.edex.dat.utils/src/com/raytheon/uf/edex/dat/utils/FreezingLevel.java b/edexOsgi/com.raytheon.uf.edex.dat.utils/src/com/raytheon/uf/edex/dat/utils/FreezingLevel.java index 797ff6d8c0..900b8b37e1 100644 --- a/edexOsgi/com.raytheon.uf.edex.dat.utils/src/com/raytheon/uf/edex/dat/utils/FreezingLevel.java +++ b/edexOsgi/com.raytheon.uf.edex.dat.utils/src/com/raytheon/uf/edex/dat/utils/FreezingLevel.java @@ -24,10 +24,22 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map.Entry; +import java.util.TreeSet; + +import org.geotools.coverage.grid.GridGeometry2D; +import org.geotools.geometry.DirectPosition2D; +import org.opengis.referencing.crs.CoordinateReferenceSystem; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import com.raytheon.uf.common.dataplugin.grid.GridRecord; +import com.raytheon.uf.common.datastorage.records.FloatDataRecord; +import com.raytheon.uf.common.geospatial.ISpatialObject; +import com.raytheon.uf.common.geospatial.MapUtil; +import com.raytheon.uf.common.geospatial.PointUtil; import com.raytheon.uf.common.monitor.xml.SCANModelParameterXML; import com.vividsolutions.jts.geom.Coordinate; @@ -72,9 +84,9 @@ public class FreezingLevel { // reference time Calendar refTime = null; - + private transient final Log logger = LogFactory.getLog(getClass()); + public FreezingLevel(String modelName) { - this.modelName = modelName; times = new HashMap(); zeroCount = 0; @@ -96,6 +108,79 @@ public class FreezingLevel { } } + /** + * find (x,y) coordinate for lat,lon(coor) + * @param coors + */ + public DirectPosition2D findXYloc(Coordinate coor, String type){ + ScanDataCache cache = ScanDataCache.getInstance(); + + ISpatialObject iso = cache.getModelData().getGridRecord(modelName, type).getSpatialObject(); + CoordinateReferenceSystem crs=iso.getCrs(); + GridGeometry2D mapGeometry = MapUtil.getGridGeometry(iso); + DirectPosition2D resultPoint; + try { + resultPoint = PointUtil.determineExactIndex( + coor, crs, mapGeometry); + System.out.println("Freezing level -- lat,lon:"+coor+" = "+resultPoint); + return resultPoint; + } catch (Exception e) { + System.out.println("Error: Freezing level -- unable to find x,y coordinate for lat,lon:"+coor); + e.printStackTrace(); + } + return null; + } + + /** + * get the bi-linear interpolation value amount the nearest 4 points + * + * @param modelName, prodType, coor + * @return bi-linear interpolation amount the nearest 4 points + * @throws VizException + */ + public double getValue(String modelName, String prodType, Coordinate coor) { + double value = -99999.0; + try { + //xyLoc is the location in x,y + DirectPosition2D xyLoc = findXYloc(coor, prodType); + + //data from hdf5 + ScanDataCache cache = ScanDataCache.getInstance(); + GridRecord gribRec = cache.getModelData().getGridRecord(modelName, prodType); + FloatDataRecord rec = (FloatDataRecord) gribRec.getMessageData(); + + //dimension of the record from hdf5, recNx =151 and recNy=113 during development + int recNx = gribRec.getSpatialObject().getNx(); + int recNy = gribRec.getSpatialObject().getNy(); + + //get four nearest points/values form the record around xyLoc + int x0=(int)(xyLoc.x); + int x1=x0+1; + int y0=(int)(xyLoc.y); + int y1=y0+1; + + double p1=xyLoc.x-x0; + double p2=1-p1; + double p3=xyLoc.y-y0; + double p4=1-p3; + + double value2 = rec.getFloatData()[(recNx * y0) + x0]; + double value3 = rec.getFloatData()[(recNx * y0) + x1]; + double value0 = rec.getFloatData()[(recNx * y1) + x0]; + double value1 = rec.getFloatData()[(recNx * y1) + x1]; + + //do a bi-linear interpolation amount the nearest 4 points + value = (p1*p4*value1)+(p2*p4*value0)+(p1*p3*value3)+(p2*p3*value2); + logger.info("bi-linear interpolation value: "+value+" "+value0+" "+value1+ + " "+value2+" "+value3+" for coor:"+coor+" "+recNx+","+recNy); + } catch (Exception e) { + logger.error("No Grib value available....." + modelName + " " + + prodType+" lat,lon:"+coor); + e.printStackTrace(); + } + return value; + } + /** * Give me the freezing level for an array of points * @@ -107,6 +192,7 @@ public class FreezingLevel { HashMap freezingMap = new HashMap(); ScanDataCache cache = ScanDataCache.getInstance(); + //get data from hdf5 files for (Coordinate coor : coors) { HashMap ghValues = new HashMap(); @@ -114,34 +200,46 @@ public class FreezingLevel { for (Entry entry : getGHLevelMap().entrySet()) { if (cache.getModelData().isType(modelName, entry.getKey())) { - - ghValues.put(entry.getValue(), cache.getModelData() - .getValue(modelName, entry.getKey(), coor)); + ghValues.put(entry.getValue(), getValue(modelName, entry.getKey(), coor)); + } else { + ghValues.put(entry.getValue(),null); } } for (Entry entry : getTLevelMap().entrySet()) { if (cache.getModelData().isType(modelName, entry.getKey())) { - tValues.put(entry.getValue(), cache.getModelData() - .getValue(modelName, entry.getKey(), coor)); + tValues.put(entry.getValue(), getValue(modelName, entry.getKey(), coor)); } } - - Double fLevel = -99999.0; + + //here's the calculation + Double fLevel = 0.0; Integer jtopLevel = null; Integer ktopLevel = null; + int foundValFlag=-1;//-1=all ghValue and tValue are null, + //0=all ghValue<=-9000 and tValue<=273.16, 1=found a fLevel System.out .println("********** Starting Freezing Level Calculations *****************"); - for (Integer level : ghValues.keySet()) { + + TreeSet ts= new TreeSet(ghValues.keySet());//want an asc sorted list + Iterator it = ts.iterator(); + + //for (Integer level : ghValues.keySet()) { + while (it.hasNext()) { + Integer level = (Integer) it.next(); Double tValue = tValues.get(level); Double ghValue = ghValues.get(level); System.out.println("GH Value: " + ghValue + " TValue: " + tValue); - if (ghValue != null && ghValue > -9000) { - if (tValue != null && tValue > 273.16) { + if (ghValue != null && tValue != null && foundValFlag ==-1){ + foundValFlag=0; + } + + if (ghValue != null && ghValue.doubleValue() > -9000) { + if (tValue != null && tValue.doubleValue() > 273.16) { fLevel = (ghValues.get(ktopLevel) - ((ghValues .get(ktopLevel) - ghValue) * ((273.16 - tValues @@ -155,6 +253,7 @@ public class FreezingLevel { + " - " + tValues.get(jtopLevel) + ")))) * .00328"); System.out.println("*** FreezingLevel = " + fLevel); + foundValFlag=1; freezingMap.put(coor, fLevel.floatValue()); break; } else { @@ -163,6 +262,12 @@ public class FreezingLevel { } } } + + if (foundValFlag==0) {//this means all tValue are <= 273.16 + freezingMap.put(coor, 0.0f); + System.out.println("*** FreezingLevel = 0.0"); + } + System.out .println("********** Finished Freezing Level Calculations *****************"); } @@ -252,6 +357,7 @@ public class FreezingLevel { paramXML.setModelName(model); paramXML.setParameterName(param); String sql = getSQL(interval, model, param, refTime); + System.out.println("Freezing level sql="+sql); GridRecord modelRec = DATUtils.getMostRecentGridRecord(interval, sql, paramXML); @@ -358,7 +464,7 @@ public class FreezingLevel { + "\' and grid_info.datasetId = \'" + model + "\' and level.masterlevel_name = 'MB' and level.levelonevalue = '" - + level + "\' and reftime=\'" + refTimeStr + "\' order by grid.reftime desc, grid.forecasttime desc limit 1"; + + level + "\' and grid.reftime=\'" + refTimeStr + "\' and grid.forecasttime=0 order by grid.reftime desc limit 1"; return sql; } } diff --git a/edexOsgi/com.raytheon.uf.edex.npp.feature/com.raytheon.uf.edex.npp.feature.ecl b/edexOsgi/com.raytheon.uf.edex.npp.feature/com.raytheon.uf.edex.npp.feature.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/edexOsgi/com.raytheon.uf.edex.ohd/src/com/raytheon/uf/edex/ohd/pproc/MpeRUCFreezingLevel.java b/edexOsgi/com.raytheon.uf.edex.ohd/src/com/raytheon/uf/edex/ohd/pproc/MpeRUCFreezingLevel.java index 446538c0c2..954bae7509 100644 --- a/edexOsgi/com.raytheon.uf.edex.ohd/src/com/raytheon/uf/edex/ohd/pproc/MpeRUCFreezingLevel.java +++ b/edexOsgi/com.raytheon.uf.edex.ohd/src/com/raytheon/uf/edex/ohd/pproc/MpeRUCFreezingLevel.java @@ -83,7 +83,10 @@ public class MpeRUCFreezingLevel { .getToken("mpe_point_freezing_dir"); public static String dqcPreprocessorBasetime = AppsDefaults.getInstance() - .getToken("DQC_PREPROCESSOR_BASETIME"); + .getToken("dqc_preprocessor_basetime"); + + public static String mpeSiteId = AppsDefaults.getInstance() + .getToken("mpe_site_id"); public File stationFile = null; @@ -93,29 +96,11 @@ public class MpeRUCFreezingLevel { public static String[] models = new String[] { "RUC236" }; public MpeRUCFreezingLevel() { - try { - File directory = new File(stationFilePath); + this.stationFile = new File(stationFilePath+"/"+mpeSiteId+"_freezing_station_list"); - if (directory != null) { - for (File file : directory.listFiles()) { - if (file != null) { - if (file.isFile() - && file.getName().contains( - "freezing_station_list")) { - this.stationFile = file; - break; - } - } - } - } - } catch (Exception e) { - statusHandler - .handle(Priority.WARN, "No mpe_station_list_dir found"); - } - - // correct env vairiable dqcPreprocessorBasetime if needed + // correct env vairiable dqcPreprocessorBasetime if needed. Default to 12z if (dqcPreprocessorBasetime == null) { - dqcPreprocessorBasetime = "00z"; + dqcPreprocessorBasetime = "12z"; } dqcPreprocessorBasetime = dqcPreprocessorBasetime.toLowerCase(); @@ -123,7 +108,7 @@ public class MpeRUCFreezingLevel { && !dqcPreprocessorBasetime.equals("06z") && !dqcPreprocessorBasetime.equals("12z") && !dqcPreprocessorBasetime.equals("18z")) { - dqcPreprocessorBasetime = "00z"; + dqcPreprocessorBasetime = "12z"; } } @@ -227,10 +212,8 @@ public class MpeRUCFreezingLevel { // order try { - String site = PropertiesFactory.getInstance().getEnvProperties() - .getEnvValue("SITENAME"); ofstream = new FileOutputStream(getAbsoluteOutFileName( - dates[3].getTime(), site)); + dates[3].getTime(), mpeSiteId)); out = new DataOutputStream(ofstream); bw = new BufferedWriter(new OutputStreamWriter(out)); @@ -277,8 +260,7 @@ public class MpeRUCFreezingLevel { String fzlev = "M"; if (fle != null) { - fzlev = String.valueOf(fle.getFreezingLevel()) - .substring(0, 4) + "S"; + fzlev = String.format("%3.2f",fle. getFreezingLevel()) + "S"; } buf.append(" " + fzlev); diff --git a/edexOsgi/com.raytheon.uf.edex.plugin.npp.crimss/com.raytheon.uf.edex.plugin.npp.crimss.ecl b/edexOsgi/com.raytheon.uf.edex.plugin.npp.crimss/com.raytheon.uf.edex.plugin.npp.crimss.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/edexOsgi/com.raytheon.uf.edex.plugin.npp/com.raytheon.uf.edex.plugin.npp.ecl b/edexOsgi/com.raytheon.uf.edex.plugin.npp/com.raytheon.uf.edex.plugin.npp.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/edexOsgi/com.raytheon.uf.edex.site/src/com/raytheon/uf/edex/site/SiteAwareRegistry.java b/edexOsgi/com.raytheon.uf.edex.site/src/com/raytheon/uf/edex/site/SiteAwareRegistry.java index 70f2a9361b..20bceafac7 100644 --- a/edexOsgi/com.raytheon.uf.edex.site/src/com/raytheon/uf/edex/site/SiteAwareRegistry.java +++ b/edexOsgi/com.raytheon.uf.edex.site/src/com/raytheon/uf/edex/site/SiteAwareRegistry.java @@ -1,19 +1,19 @@ /** * This software was developed and / or modified by Raytheon Company, * pursuant to Contract DG133W-05-CQ-1067 with the US Government. - * + * * U.S. EXPORT CONTROLLED TECHNICAL DATA * This software product contains export-restricted data whose * export/transfer/disclosure is restricted by U.S. law. Dissemination * to non-U.S. persons whether in the United States or abroad requires * an export license or other authorization. - * + * * Contractor Name: Raytheon Company * Contractor Address: 6825 Pine Street, Suite 340 * Mail Stop B8 * Omaha, NE 68106 * 402.291.0100 - * + * * See the AWIPS II Master Rights File ("Master Rights File.pdf") for * further licensing information. **/ @@ -48,23 +48,24 @@ import com.raytheon.uf.edex.core.props.PropertiesFactory; import com.raytheon.uf.edex.site.SiteActivationMessage.Action; /** - * + * * Site Aware Registry - * + * *
    - * 
    + *
      * SOFTWARE HISTORY
    - * 
    + *
      * Date         Ticket#    Engineer    Description
      * ------------ ---------- ----------- --------------------------
      * Nov 30, 2010            rjpeter     Initial creation
    - * Jul 31, 2012  #965      dgilling    Force ordering of sites in 
    + * Jul 31, 2012  #965      dgilling    Force ordering of sites in
      *                                     getActiveSites().
      * Nov 1, 2012   15417     ryu         Modified getActiveSites to include
      *                                     home site only if activated.
    - * 
    + * Dec 11, 2012  14360     ryu         No printing stack trace on activation exception
    + *
      * 
    - * + * * @author rjpeter * @version 1.0 */ @@ -100,7 +101,7 @@ public class SiteAwareRegistry { /** * registers/adds site activation listeners - * + * * @param sa * the listener to register / add to the list */ @@ -115,8 +116,8 @@ public class SiteAwareRegistry { try { sa.activateSite(siteID); } catch (Exception e) { - statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), - e); + // Stack trace is not printed per requirement for DR14360 + statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage()); } } @@ -134,7 +135,7 @@ public class SiteAwareRegistry { /** * get the set of strings for the active sites - * + * * @return the requested array of Strings this is a string array to make it * work with dwr frontend, most of the other stuff is Set */ @@ -156,7 +157,7 @@ public class SiteAwareRegistry { /** * Checks to see if the given site is active - * + * * @param site * The site to check * @return True if the site is active, else false @@ -182,7 +183,7 @@ public class SiteAwareRegistry { /** * activate the site specified in each listener - * + * * @param siteID */ public void activateSite(String siteID) { @@ -203,7 +204,7 @@ public class SiteAwareRegistry { /** * deactivate the site specified in each listener - * + * * @param siteID */ public void deactivateSite(String siteID) { @@ -223,7 +224,7 @@ public class SiteAwareRegistry { /** * cycle the site specified in each listener - * + * * @param siteID */ public void cycleSite(String siteID) { diff --git a/edexOsgi/com.raytheon.uf.tools.gfesuite/cli/src/sendgfemessage/sendGfeMessage.py b/edexOsgi/com.raytheon.uf.tools.gfesuite/cli/src/sendgfemessage/sendGfeMessage.py index 5ad2abf5b0..149c6cbcde 100755 --- a/edexOsgi/com.raytheon.uf.tools.gfesuite/cli/src/sendgfemessage/sendGfeMessage.py +++ b/edexOsgi/com.raytheon.uf.tools.gfesuite/cli/src/sendgfemessage/sendGfeMessage.py @@ -35,7 +35,8 @@ import os, sys # 09/14/10 dgilling Initial Creation. # 11/04/10 5849 cjeanbap Updated Notification package location # 06/09/11 9841 rferrel fixed help and argument order -# for sendNotificationMsg. +# for sendNotificationMsg. +# 11/29/12 DR14016 jzeng change priority definition from 0-3 to 1-4 # # class PrintHelpOnErrorParser(ArgumentParser): @@ -55,13 +56,13 @@ def main(): help="Port upon which the alertViz server is running.", metavar="port") group = parser.add_mutually_exclusive_group() - group.add_argument("-r", action="store_const", const=3, dest="priority", + group.add_argument("-r", action="store_const", const=4, dest="priority", help="Send as a routine message. (default)") - group.add_argument("-s", action="store_const", const=1, dest="priority", + group.add_argument("-s", action="store_const", const=2, dest="priority", help="Send as a significant message.") - group.add_argument("-u", action="store_const", const=0, dest="priority", + group.add_argument("-u", action="store_const", const=1, dest="priority", help="Send as an urgent message.") - group.add_argument("-a", action="store_const", const=2, dest="priority", + group.add_argument("-a", action="store_const", const=3, dest="priority", help="Send as an alert message.") parser.add_argument("-c", action="store", dest="msgClass", help="Message class.", metavar="class", default="GFE") diff --git a/javaUtilities/build.openfire.plugin/build.openfire.plugin.ecl b/javaUtilities/build.openfire.plugin/build.openfire.plugin.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/javaUtilities/build.wes2bridge.utility/build.wes2bridge.utility.ecl b/javaUtilities/build.wes2bridge.utility/build.wes2bridge.utility.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/javaUtilities/com.raytheon.openfire.plugin.configuration.collaboration/com.raytheon.openfire.plugin.configuration.collaboration.ecl b/javaUtilities/com.raytheon.openfire.plugin.configuration.collaboration/com.raytheon.openfire.plugin.configuration.collaboration.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/javaUtilities/com.raytheon.openfire.plugin.detailedfeedlog/com.raytheon.openfire.plugin.detailedfeedlog.ecl b/javaUtilities/com.raytheon.openfire.plugin.detailedfeedlog/com.raytheon.openfire.plugin.detailedfeedlog.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/javaUtilities/com.raytheon.wes2bridge.common/com.raytheon.wes2bridge.common.ecl b/javaUtilities/com.raytheon.wes2bridge.common/com.raytheon.wes2bridge.common.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/javaUtilities/com.raytheon.wes2bridge.configuration/com.raytheon.wes2bridge.configuration.ecl b/javaUtilities/com.raytheon.wes2bridge.configuration/com.raytheon.wes2bridge.configuration.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/javaUtilities/com.raytheon.wes2bridge.datalink/com.raytheon.wes2bridge.datalink.ecl b/javaUtilities/com.raytheon.wes2bridge.datalink/com.raytheon.wes2bridge.datalink.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/javaUtilities/com.raytheon.wes2bridge.manager/com.raytheon.wes2bridge.manager.ecl b/javaUtilities/com.raytheon.wes2bridge.manager/com.raytheon.wes2bridge.manager.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/javaUtilities/com.raytheon.wes2bridge.utility.feature/com.raytheon.wes2bridge.utility.feature.ecl b/javaUtilities/com.raytheon.wes2bridge.utility.feature/com.raytheon.wes2bridge.utility.feature.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/javaUtilities/com.raytheon.wes2bridge.utility.product/com.raytheon.wes2bridge.utility.product.ecl b/javaUtilities/com.raytheon.wes2bridge.utility.product/com.raytheon.wes2bridge.utility.product.ecl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/rpms/awips2.core/Installer.ldm/component.spec b/rpms/awips2.core/Installer.ldm/component.spec index 1649a25145..bbedc5741b 100644 --- a/rpms/awips2.core/Installer.ldm/component.spec +++ b/rpms/awips2.core/Installer.ldm/component.spec @@ -5,7 +5,7 @@ Name: awips2-ldm Summary: AWIPS II LDM Distribution Version: 6.8.1 -Release: 26 +Release: 27 Group: AWIPSII BuildRoot: /tmp URL: N/A diff --git a/rpms/awips2.core/Installer.ldm/patch/etc/pqact.conf.template b/rpms/awips2.core/Installer.ldm/patch/etc/pqact.conf.template index e6b0ece45b..eaef03eb8a 100755 --- a/rpms/awips2.core/Installer.ldm/patch/etc/pqact.conf.template +++ b/rpms/awips2.core/Installer.ldm/patch/etc/pqact.conf.template @@ -411,7 +411,7 @@ IDS|DDPLUS ^(FOUS[67].) (....) (..)(..)(..) # FILE -overwrite -log -close -edex /data_store/misc_adm_messages/(\3:yyyy)(\3:mm)\3/\4/\1_\2_\3\4\5_(seq).%Y%m%d%H # # separate out svrwx lsr and GSM misc adm messages -IDS|DDPLUS ^(N[A-VYZ]....) (.{4}) (..)(..)(..) +IDS|DDPLUS|HDS ^(N[A-VYZ]....) (.{4}) (..)(..)(..) FILE -overwrite -log -close -edex /data_store/misc_adm_messages/(\3:yyyy)(\3:mm)\3/\4/\1_\2_\3\4\5_(seq).%Y%m%d%H IDS|DDPLUS ^(NWUS[01346-9].) (.{4}) (..)(..)(..) FILE -overwrite -log -close -edex /data_store/misc_adm_messages/(\3:yyyy)(\3:mm)\3/\4/\1_\2_\3\4\5_(seq).%Y%m%d%H