From e1f3c61946b11aac6d0adc535410051f977ab9f5 Mon Sep 17 00:00:00 2001 From: Matthew Wilson Date: Tue, 29 Nov 2005 18:52:56 +0000 Subject: [PATCH] Adding new files for Dashboard and ancillary wobjects. --- lib/WebGUI/Asset/Field.pm | 224 ++++++++ lib/WebGUI/Asset/Wobject/Dashboard.pm | 257 +++++++++ lib/WebGUI/Asset/Wobject/MultiSearch.pm | 94 ++++ lib/WebGUI/Asset/Wobject/StockData.pm | 476 ++++++++++++++++ lib/WebGUI/Asset/Wobject/WeatherData.pm | 221 ++++++++ lib/WebGUI/Help/Asset_Dashboard.pm | 1 + lib/WebGUI/Help/Asset_StockData.pm | 116 ++++ lib/WebGUI/i18n/English/Asset_Dashboard.pm | 69 +++ lib/WebGUI/i18n/English/Asset_StockData.pm | 512 ++++++++++++++++++ www/extras/assets/small/stockData.gif | Bin 0 -> 597 bytes www/extras/assets/small/weatherData.GIF | Bin 0 -> 960 bytes www/extras/assets/stockData.gif | Bin 0 -> 1711 bytes www/extras/assets/weatherData.GIF | Bin 0 -> 1718 bytes www/extras/wobject/Dashboard/draggable.css | 57 ++ www/extras/wobject/Dashboard/draggable.js | 462 ++++++++++++++++ www/extras/wobject/StockData/down.gif | Bin 0 -> 79 bytes www/extras/wobject/StockData/nc.gif | Bin 0 -> 59 bytes www/extras/wobject/StockData/tools.css | 262 +++++++++ www/extras/wobject/StockData/up.gif | Bin 0 -> 81 bytes www/extras/wobject/WeatherData/bkn.jpg | Bin 0 -> 1359 bytes www/extras/wobject/WeatherData/blizzard.jpg | Bin 0 -> 1105 bytes .../wobject/WeatherData/blowingsnow.jpg | Bin 0 -> 1638 bytes www/extras/wobject/WeatherData/br.jpg | Bin 0 -> 1961 bytes www/extras/wobject/WeatherData/cloudy.jpg | Bin 0 -> 1454 bytes .../wobject/WeatherData/cloudynight.jpg | Bin 0 -> 1734 bytes www/extras/wobject/WeatherData/cold.jpg | Bin 0 -> 1579 bytes www/extras/wobject/WeatherData/cold1.jpg | Bin 0 -> 1522 bytes www/extras/wobject/WeatherData/cold2.jpg | Bin 0 -> 1319 bytes www/extras/wobject/WeatherData/drizzle.jpg | Bin 0 -> 1873 bytes www/extras/wobject/WeatherData/du.jpg | Bin 0 -> 1779 bytes www/extras/wobject/WeatherData/fair.png | Bin 0 -> 1330 bytes www/extras/wobject/WeatherData/fdrizzle.jpg | Bin 0 -> 1816 bytes www/extras/wobject/WeatherData/few.jpg | Bin 0 -> 4919 bytes www/extras/wobject/WeatherData/fg.jpg | Bin 0 -> 1019 bytes www/extras/wobject/WeatherData/flurries.jpg | Bin 0 -> 1361 bytes www/extras/wobject/WeatherData/fog.jpg | Bin 0 -> 1753 bytes www/extras/wobject/WeatherData/fogn.jpg | Bin 0 -> 1497 bytes .../wobject/WeatherData/freezingrain.jpg | Bin 0 -> 1707 bytes www/extras/wobject/WeatherData/fu.jpg | Bin 0 -> 1698 bytes www/extras/wobject/WeatherData/fzra.jpg | Bin 0 -> 1669 bytes www/extras/wobject/WeatherData/fzrara.jpg | Bin 0 -> 1639 bytes www/extras/wobject/WeatherData/hazy.jpg | Bin 0 -> 1150 bytes www/extras/wobject/WeatherData/hi_bkn.jpg | Bin 0 -> 2180 bytes www/extras/wobject/WeatherData/hi_clr.jpg | Bin 0 -> 1406 bytes www/extras/wobject/WeatherData/hi_few.jpg | Bin 0 -> 1997 bytes www/extras/wobject/WeatherData/hi_mocldy.jpg | Bin 0 -> 2180 bytes www/extras/wobject/WeatherData/hi_moclr.jpg | Bin 0 -> 1997 bytes www/extras/wobject/WeatherData/hi_nbkn.jpg | Bin 0 -> 1884 bytes www/extras/wobject/WeatherData/hi_nclr.jpg | Bin 0 -> 1267 bytes www/extras/wobject/WeatherData/hi_nfew.jpg | Bin 0 -> 1789 bytes www/extras/wobject/WeatherData/hi_nmocldy.jpg | Bin 0 -> 1884 bytes www/extras/wobject/WeatherData/hi_nmoclr.jpg | Bin 0 -> 1789 bytes www/extras/wobject/WeatherData/hi_nptcldy.jpg | Bin 0 -> 2054 bytes www/extras/wobject/WeatherData/hi_nsct.jpg | Bin 0 -> 2054 bytes www/extras/wobject/WeatherData/hi_nshwrs.jpg | Bin 0 -> 2146 bytes www/extras/wobject/WeatherData/hi_nskc.jpg | Bin 0 -> 1267 bytes www/extras/wobject/WeatherData/hi_ntsra.jpg | Bin 0 -> 2192 bytes www/extras/wobject/WeatherData/hi_ptcldy.jpg | Bin 0 -> 2472 bytes www/extras/wobject/WeatherData/hi_sct.jpg | Bin 0 -> 2472 bytes www/extras/wobject/WeatherData/hi_shwrs.jpg | Bin 0 -> 2124 bytes www/extras/wobject/WeatherData/hi_skc.jpg | Bin 0 -> 1406 bytes www/extras/wobject/WeatherData/hi_tsra.jpg | Bin 0 -> 2281 bytes www/extras/wobject/WeatherData/hiclouds.jpg | Bin 0 -> 1200 bytes www/extras/wobject/WeatherData/hot.jpg | Bin 0 -> 1578 bytes www/extras/wobject/WeatherData/hurr.jpg | Bin 0 -> 1841 bytes www/extras/wobject/WeatherData/ip.jpg | Bin 0 -> 3017 bytes www/extras/wobject/WeatherData/mcloudy.jpg | Bin 0 -> 1847 bytes www/extras/wobject/WeatherData/mcloudyn.jpg | Bin 0 -> 2346 bytes www/extras/wobject/WeatherData/mist.jpg | Bin 0 -> 1840 bytes www/extras/wobject/WeatherData/mix.jpg | Bin 0 -> 1554 bytes www/extras/wobject/WeatherData/nbkn.jpg | Bin 0 -> 1273 bytes www/extras/wobject/WeatherData/nfew.jpg | Bin 0 -> 1320 bytes www/extras/wobject/WeatherData/nfg.jpg | Bin 0 -> 764 bytes www/extras/wobject/WeatherData/nhiclouds.jpg | Bin 0 -> 1210 bytes www/extras/wobject/WeatherData/nmix.jpg | Bin 0 -> 1643 bytes www/extras/wobject/WeatherData/novc.jpg | Bin 0 -> 811 bytes www/extras/wobject/WeatherData/nra.jpg | Bin 0 -> 1873 bytes www/extras/wobject/WeatherData/nrasn.jpg | Bin 0 -> 1490 bytes www/extras/wobject/WeatherData/nsct.jpg | Bin 0 -> 1364 bytes www/extras/wobject/WeatherData/nscttsra.jpg | Bin 0 -> 1619 bytes www/extras/wobject/WeatherData/nskc.jpg | Bin 0 -> 1776 bytes www/extras/wobject/WeatherData/nsn.jpg | Bin 0 -> 1275 bytes www/extras/wobject/WeatherData/nsvrtsra.jpg | Bin 0 -> 1602 bytes www/extras/wobject/WeatherData/ntor.jpg | Bin 0 -> 1278 bytes www/extras/wobject/WeatherData/ntsra.jpg | Bin 0 -> 1671 bytes www/extras/wobject/WeatherData/ntsra1.jpg | Bin 0 -> 1628 bytes www/extras/wobject/WeatherData/ntsra3.jpg | Bin 0 -> 1579 bytes www/extras/wobject/WeatherData/nwind.jpg | Bin 0 -> 2141 bytes www/extras/wobject/WeatherData/ovc.jpg | Bin 0 -> 1191 bytes www/extras/wobject/WeatherData/pcloudy.jpg | Bin 0 -> 1982 bytes www/extras/wobject/WeatherData/pcloudyn.jpg | Bin 0 -> 2867 bytes www/extras/wobject/WeatherData/ra.jpg | Bin 0 -> 1839 bytes www/extras/wobject/WeatherData/ra1.jpg | Bin 0 -> 1650 bytes www/extras/wobject/WeatherData/ra2.jpg | Bin 0 -> 1506 bytes www/extras/wobject/WeatherData/ra30.jpg | Bin 0 -> 1720 bytes www/extras/wobject/WeatherData/ra4.jpg | Bin 0 -> 1506 bytes www/extras/wobject/WeatherData/ra40.jpg | Bin 0 -> 1710 bytes www/extras/wobject/WeatherData/ra50.jpg | Bin 0 -> 1711 bytes www/extras/wobject/WeatherData/ra60.jpg | Bin 0 -> 1712 bytes www/extras/wobject/WeatherData/ra70.jpg | Bin 0 -> 1705 bytes www/extras/wobject/WeatherData/ra90.jpg | Bin 0 -> 1727 bytes www/extras/wobject/WeatherData/rain.jpg | Bin 0 -> 769 bytes .../wobject/WeatherData/rainandsnow.jpg | Bin 0 -> 1787 bytes www/extras/wobject/WeatherData/raip.jpg | Bin 0 -> 2611 bytes www/extras/wobject/WeatherData/rasn.jpg | Bin 0 -> 1379 bytes www/extras/wobject/WeatherData/sct.jpg | Bin 0 -> 1333 bytes www/extras/wobject/WeatherData/sctfg.jpg | Bin 0 -> 1630 bytes www/extras/wobject/WeatherData/scttsra.jpg | Bin 0 -> 1750 bytes www/extras/wobject/WeatherData/showers.jpg | Bin 0 -> 1580 bytes www/extras/wobject/WeatherData/shra.jpg | Bin 0 -> 1576 bytes www/extras/wobject/WeatherData/shra1.jpg | Bin 0 -> 1458 bytes www/extras/wobject/WeatherData/shra2.jpg | Bin 0 -> 1580 bytes www/extras/wobject/WeatherData/shra20.jpg | Bin 0 -> 1503 bytes www/extras/wobject/WeatherData/shra30.jpg | Bin 0 -> 1493 bytes www/extras/wobject/WeatherData/shra40.jpg | Bin 0 -> 1491 bytes www/extras/wobject/WeatherData/shra50.jpg | Bin 0 -> 1500 bytes www/extras/wobject/WeatherData/shra60.jpg | Bin 0 -> 1497 bytes www/extras/wobject/WeatherData/shsn.jpg | Bin 0 -> 1228 bytes www/extras/wobject/WeatherData/skc.jpg | Bin 0 -> 1167 bytes www/extras/wobject/WeatherData/sleet.jpg | Bin 0 -> 1618 bytes www/extras/wobject/WeatherData/smoke.jpg | Bin 0 -> 1698 bytes www/extras/wobject/WeatherData/sn.jpg | Bin 0 -> 1196 bytes www/extras/wobject/WeatherData/snow.jpg | Bin 0 -> 928 bytes .../wobject/WeatherData/snowshowers.jpg | Bin 0 -> 844 bytes www/extras/wobject/WeatherData/snowshwrs.jpg | Bin 0 -> 1436 bytes www/extras/wobject/WeatherData/sunny.jpg | Bin 0 -> 1167 bytes www/extras/wobject/WeatherData/sunnyn.jpg | Bin 0 -> 1776 bytes www/extras/wobject/WeatherData/tcu.jpg | Bin 0 -> 1546 bytes www/extras/wobject/WeatherData/tor.jpg | Bin 0 -> 1362 bytes www/extras/wobject/WeatherData/tsra.jpg | Bin 0 -> 1869 bytes www/extras/wobject/WeatherData/tstorm.jpg | Bin 0 -> 1364 bytes www/extras/wobject/WeatherData/tstormn.jpg | Bin 0 -> 1533 bytes www/extras/wobject/WeatherData/wind.jpg | Bin 0 -> 1940 bytes www/extras/wobject/WeatherData/wind1.jpg | Bin 0 -> 1969 bytes www/extras/wobject/WeatherData/wind2.jpg | Bin 0 -> 1815 bytes www/extras/wobject/WeatherData/wswarning.jpg | Bin 0 -> 1671 bytes 136 files changed, 2751 insertions(+) create mode 100644 lib/WebGUI/Asset/Field.pm create mode 100644 lib/WebGUI/Asset/Wobject/Dashboard.pm create mode 100644 lib/WebGUI/Asset/Wobject/MultiSearch.pm create mode 100644 lib/WebGUI/Asset/Wobject/StockData.pm create mode 100644 lib/WebGUI/Asset/Wobject/WeatherData.pm create mode 100644 lib/WebGUI/Help/Asset_Dashboard.pm create mode 100644 lib/WebGUI/Help/Asset_StockData.pm create mode 100644 lib/WebGUI/i18n/English/Asset_Dashboard.pm create mode 100644 lib/WebGUI/i18n/English/Asset_StockData.pm create mode 100644 www/extras/assets/small/stockData.gif create mode 100644 www/extras/assets/small/weatherData.GIF create mode 100644 www/extras/assets/stockData.gif create mode 100644 www/extras/assets/weatherData.GIF create mode 100644 www/extras/wobject/Dashboard/draggable.css create mode 100644 www/extras/wobject/Dashboard/draggable.js create mode 100644 www/extras/wobject/StockData/down.gif create mode 100644 www/extras/wobject/StockData/nc.gif create mode 100644 www/extras/wobject/StockData/tools.css create mode 100644 www/extras/wobject/StockData/up.gif create mode 100644 www/extras/wobject/WeatherData/bkn.jpg create mode 100644 www/extras/wobject/WeatherData/blizzard.jpg create mode 100644 www/extras/wobject/WeatherData/blowingsnow.jpg create mode 100644 www/extras/wobject/WeatherData/br.jpg create mode 100644 www/extras/wobject/WeatherData/cloudy.jpg create mode 100644 www/extras/wobject/WeatherData/cloudynight.jpg create mode 100644 www/extras/wobject/WeatherData/cold.jpg create mode 100644 www/extras/wobject/WeatherData/cold1.jpg create mode 100644 www/extras/wobject/WeatherData/cold2.jpg create mode 100644 www/extras/wobject/WeatherData/drizzle.jpg create mode 100644 www/extras/wobject/WeatherData/du.jpg create mode 100644 www/extras/wobject/WeatherData/fair.png create mode 100644 www/extras/wobject/WeatherData/fdrizzle.jpg create mode 100644 www/extras/wobject/WeatherData/few.jpg create mode 100644 www/extras/wobject/WeatherData/fg.jpg create mode 100644 www/extras/wobject/WeatherData/flurries.jpg create mode 100644 www/extras/wobject/WeatherData/fog.jpg create mode 100644 www/extras/wobject/WeatherData/fogn.jpg create mode 100644 www/extras/wobject/WeatherData/freezingrain.jpg create mode 100644 www/extras/wobject/WeatherData/fu.jpg create mode 100644 www/extras/wobject/WeatherData/fzra.jpg create mode 100644 www/extras/wobject/WeatherData/fzrara.jpg create mode 100644 www/extras/wobject/WeatherData/hazy.jpg create mode 100644 www/extras/wobject/WeatherData/hi_bkn.jpg create mode 100644 www/extras/wobject/WeatherData/hi_clr.jpg create mode 100644 www/extras/wobject/WeatherData/hi_few.jpg create mode 100644 www/extras/wobject/WeatherData/hi_mocldy.jpg create mode 100644 www/extras/wobject/WeatherData/hi_moclr.jpg create mode 100644 www/extras/wobject/WeatherData/hi_nbkn.jpg create mode 100644 www/extras/wobject/WeatherData/hi_nclr.jpg create mode 100644 www/extras/wobject/WeatherData/hi_nfew.jpg create mode 100644 www/extras/wobject/WeatherData/hi_nmocldy.jpg create mode 100644 www/extras/wobject/WeatherData/hi_nmoclr.jpg create mode 100644 www/extras/wobject/WeatherData/hi_nptcldy.jpg create mode 100644 www/extras/wobject/WeatherData/hi_nsct.jpg create mode 100644 www/extras/wobject/WeatherData/hi_nshwrs.jpg create mode 100644 www/extras/wobject/WeatherData/hi_nskc.jpg create mode 100644 www/extras/wobject/WeatherData/hi_ntsra.jpg create mode 100644 www/extras/wobject/WeatherData/hi_ptcldy.jpg create mode 100644 www/extras/wobject/WeatherData/hi_sct.jpg create mode 100644 www/extras/wobject/WeatherData/hi_shwrs.jpg create mode 100644 www/extras/wobject/WeatherData/hi_skc.jpg create mode 100644 www/extras/wobject/WeatherData/hi_tsra.jpg create mode 100644 www/extras/wobject/WeatherData/hiclouds.jpg create mode 100644 www/extras/wobject/WeatherData/hot.jpg create mode 100644 www/extras/wobject/WeatherData/hurr.jpg create mode 100644 www/extras/wobject/WeatherData/ip.jpg create mode 100644 www/extras/wobject/WeatherData/mcloudy.jpg create mode 100644 www/extras/wobject/WeatherData/mcloudyn.jpg create mode 100644 www/extras/wobject/WeatherData/mist.jpg create mode 100644 www/extras/wobject/WeatherData/mix.jpg create mode 100644 www/extras/wobject/WeatherData/nbkn.jpg create mode 100644 www/extras/wobject/WeatherData/nfew.jpg create mode 100644 www/extras/wobject/WeatherData/nfg.jpg create mode 100644 www/extras/wobject/WeatherData/nhiclouds.jpg create mode 100644 www/extras/wobject/WeatherData/nmix.jpg create mode 100644 www/extras/wobject/WeatherData/novc.jpg create mode 100644 www/extras/wobject/WeatherData/nra.jpg create mode 100644 www/extras/wobject/WeatherData/nrasn.jpg create mode 100644 www/extras/wobject/WeatherData/nsct.jpg create mode 100644 www/extras/wobject/WeatherData/nscttsra.jpg create mode 100644 www/extras/wobject/WeatherData/nskc.jpg create mode 100644 www/extras/wobject/WeatherData/nsn.jpg create mode 100644 www/extras/wobject/WeatherData/nsvrtsra.jpg create mode 100644 www/extras/wobject/WeatherData/ntor.jpg create mode 100644 www/extras/wobject/WeatherData/ntsra.jpg create mode 100644 www/extras/wobject/WeatherData/ntsra1.jpg create mode 100644 www/extras/wobject/WeatherData/ntsra3.jpg create mode 100644 www/extras/wobject/WeatherData/nwind.jpg create mode 100644 www/extras/wobject/WeatherData/ovc.jpg create mode 100644 www/extras/wobject/WeatherData/pcloudy.jpg create mode 100644 www/extras/wobject/WeatherData/pcloudyn.jpg create mode 100644 www/extras/wobject/WeatherData/ra.jpg create mode 100644 www/extras/wobject/WeatherData/ra1.jpg create mode 100644 www/extras/wobject/WeatherData/ra2.jpg create mode 100644 www/extras/wobject/WeatherData/ra30.jpg create mode 100644 www/extras/wobject/WeatherData/ra4.jpg create mode 100644 www/extras/wobject/WeatherData/ra40.jpg create mode 100644 www/extras/wobject/WeatherData/ra50.jpg create mode 100644 www/extras/wobject/WeatherData/ra60.jpg create mode 100644 www/extras/wobject/WeatherData/ra70.jpg create mode 100644 www/extras/wobject/WeatherData/ra90.jpg create mode 100644 www/extras/wobject/WeatherData/rain.jpg create mode 100644 www/extras/wobject/WeatherData/rainandsnow.jpg create mode 100644 www/extras/wobject/WeatherData/raip.jpg create mode 100644 www/extras/wobject/WeatherData/rasn.jpg create mode 100644 www/extras/wobject/WeatherData/sct.jpg create mode 100644 www/extras/wobject/WeatherData/sctfg.jpg create mode 100644 www/extras/wobject/WeatherData/scttsra.jpg create mode 100644 www/extras/wobject/WeatherData/showers.jpg create mode 100644 www/extras/wobject/WeatherData/shra.jpg create mode 100644 www/extras/wobject/WeatherData/shra1.jpg create mode 100644 www/extras/wobject/WeatherData/shra2.jpg create mode 100644 www/extras/wobject/WeatherData/shra20.jpg create mode 100644 www/extras/wobject/WeatherData/shra30.jpg create mode 100644 www/extras/wobject/WeatherData/shra40.jpg create mode 100644 www/extras/wobject/WeatherData/shra50.jpg create mode 100644 www/extras/wobject/WeatherData/shra60.jpg create mode 100644 www/extras/wobject/WeatherData/shsn.jpg create mode 100644 www/extras/wobject/WeatherData/skc.jpg create mode 100644 www/extras/wobject/WeatherData/sleet.jpg create mode 100644 www/extras/wobject/WeatherData/smoke.jpg create mode 100644 www/extras/wobject/WeatherData/sn.jpg create mode 100644 www/extras/wobject/WeatherData/snow.jpg create mode 100644 www/extras/wobject/WeatherData/snowshowers.jpg create mode 100644 www/extras/wobject/WeatherData/snowshwrs.jpg create mode 100644 www/extras/wobject/WeatherData/sunny.jpg create mode 100644 www/extras/wobject/WeatherData/sunnyn.jpg create mode 100644 www/extras/wobject/WeatherData/tcu.jpg create mode 100644 www/extras/wobject/WeatherData/tor.jpg create mode 100644 www/extras/wobject/WeatherData/tsra.jpg create mode 100644 www/extras/wobject/WeatherData/tstorm.jpg create mode 100644 www/extras/wobject/WeatherData/tstormn.jpg create mode 100644 www/extras/wobject/WeatherData/wind.jpg create mode 100644 www/extras/wobject/WeatherData/wind1.jpg create mode 100644 www/extras/wobject/WeatherData/wind2.jpg create mode 100644 www/extras/wobject/WeatherData/wswarning.jpg diff --git a/lib/WebGUI/Asset/Field.pm b/lib/WebGUI/Asset/Field.pm new file mode 100644 index 000000000..90e06accc --- /dev/null +++ b/lib/WebGUI/Asset/Field.pm @@ -0,0 +1,224 @@ +package WebGUI::Asset::Field; + +=head1 LEGAL + + ------------------------------------------------------------------- + WebGUI is Copyright 2001-2005 Plain Black Corporation. + ------------------------------------------------------------------- + Please read the legal notices (docs/legal.txt) and the license + (docs/license.txt) that came with this distribution before using + this software. + ------------------------------------------------------------------- + http://www.plainblack.com info@plainblack.com + ------------------------------------------------------------------- + +=cut + +use strict; +use JSON; +use WebGUI::Asset; +use WebGUI::Asset::Template; +use WebGUI::Privilege; +use WebGUI::ErrorHandler; +use WebGUI::Form; +use Tie::IxHash; +use WebGUI::SQL; +use WebGUI::Macro; +use WebGUI::Session; + +our @ISA = qw(WebGUI::Asset); + + +#------------------------------------------------------------------- +sub canManage { + my $self = shift; + return 1 if ($self->canEdit || (ref $self->getParent eq 'WebGUI::Asset::Shortcut' && $self->getParent->canManage)); + return 0; +} + +#------------------------------------------------------------------- +sub canPersonalize { + my $self = shift; +return (ref $self->getParent->getParent eq 'WebGUI::Asset::Wobject::Dashboard' && WebGUI::Grouping::isInGroup($self->getParent->getParent->get("usersGroupId"))); +} + + +#------------------------------------------------------------------- + +=head2 definition ( definition ) + +Defines the properties of this asset. + +=head3 definition + +A hash reference passed in from a subclass definition. + +=cut + +sub definition { + my $class = shift; + my $definition = shift; + my $fieldName; + unless ($session{form}{isUserPref} eq '1') { + $fieldName = 'The unique name of the field in the asset that you are overriding.'; } else { $fieldName = 'The unique name of a user preference parameter you are inventing.';} + my %properties; + tie %properties, 'Tie::IxHash'; + %properties = ( + # formTemplateId=>{fieldType=>'template',defaultValue=>''}, + # valueTemplateId=>{fieldType=>'template',defaultValue=>''}, + isUserPref=>{fieldType=>'hidden',defaultValue=>$session{form}{isUserPref},label=>'Is This Field a User Preference?'}, + fieldName=>{fieldType=>'text',defaultValue=>'',label=>$fieldName}, + fieldLabel=>{fieldType=>'text',defaultValue=>'',label=>'Label for This Field.'}, + fieldDescription=>{fieldType=>'HTMLArea',defaultValue=>'',label=>'Hover Help (Description) for this Field.'}, + fieldType=>{fieldType=>'fieldType',defaultValue=>'',label=>'Type of Field'}, + # overrideForm=>{fieldType=>'yesNo',defaultValue=>0}, + # overrideValue=>{fieldType=>'yesNo',defaultValue=>0}, + possibleValues=>{fieldType=>'textarea',defaultValue=>'',label=>'Possible values for this Field. Only applies to selectList and checkList.'}, + defaultValue=>{fieldType=>'text',defaultValue=>'',label=>'Default Value for this field.'} + ); + + push(@{$definition}, { + assetName=>"Field", + tableName=>'wgField', + autoGenerateForms=>1, + className=>'WebGUI::Asset::Field', + properties=>\%properties + }); + return $class->SUPER::definition($definition); +} + +#------------------------------------------------------------------- + +=head2 getEditForm () + +Returns the TabForm object that will be used in generating the edit page for this wobject. + +=cut + +sub getEditForm { + my $self = shift; + my $tabform = $self->SUPER::getEditForm(); + foreach my $definition (reverse @{$self->definition}) { + my $properties = $definition->{properties}; + next unless ($definition->{autoGenerateForms}); + foreach my $fieldname (keys %{$properties}) { + my %params; + foreach my $key (keys %{$properties->{$fieldname}}) { + next if ($key eq "tab"); + $params{$key} = $properties->{$fieldname}{$key}; + } + $params{value} = $self->getValue($fieldname); + $params{name} = $fieldname; + my $tab = $properties->{$fieldname}{tab} || "properties"; + $tabform->getTab($tab)->dynamicField(%params); + } + } + return $tabform; +} + + +#------------------------------------------------------------------- +sub getFieldName { + my $self = shift; + my $name = $self->get("fieldName") || "blankPlaceHolderWillOverrideNothing"; + return $name; +} + +#------------------------------------------------------------------- +sub getFieldValue { + my $self = shift; + my $value; + if ($self->get("isUserPref")) { + + } else { + #is an override proper + $value = $self->get("defaultValue"); + } + #This returns the user preference value, whether it's an admin override or a user preference, + #and whether or not it's template processed. + #process for fieldNames so people don't have to type the FieldIds into the getUserPrefValue macro + my $dashlet = $self->getParent; + if (ref $dashlet eq 'WebGUI::Asset::Shortcut') { + my @fellowFields = $dashlet->getUserPrefs; + foreach my $field (@fellowFields) { + my $id = $field->getId; + my $fieldName = $field->getFieldName; + my $fieldValue = $self->getUserPref($id); + unless ($self->getId eq $id) { + $value =~ s/\/$fieldValue/g; + #prevent macro loops. A Field cannot be self referential. + } else { + $value =~ s/\//g; + } + } + } + $value = WebGUI::Asset::Template->processRaw($value); + return $value; +} + +#------------------------------------------------------------------- +sub getUserPref { + #This is a class method. Is called from the getDashletUserPref macro + my $class = shift; #ignored when called from within this package/module. + my $fieldId = shift; + my $userId = shift || 'autoDerive'; + my $field; + if ($userId eq 'autoDerive') { + $field = WebGUI::Asset->newByDynamicClass($fieldId); + $userId = ($field->canManage && WebGUI::Session::isAdminOn()) ? '1' : $session{user}{userId}; + } + my $returnDataType = shift || 'string'; + my $returnDataFormat = shift || 'raw'; + my $sql = "select userValue from wgFieldUserData where assetId=".quote($fieldId)." and userId=".quote($userId); + #WebGUI::ErrorHandler::warn($sql); + my ($userValue) = WebGUI::SQL->quickArray($sql); + unless ($userValue) { + return '' if $fieldId eq 'skipThisRequest'; + $field = WebGUI::Asset->newByDynamicClass($fieldId) unless $field; + return '' unless $field; + $userValue = $field->get("defaultValue"); + } + if ($returnDataType eq 'string' && $returnDataFormat eq 'raw') { + return $userValue; + } +} + +#------------------------------------------------------------------- +sub setUserPref { + #This is a class method. Is called from the getDashletUserPref macro + my $class = shift; #ignored when called from within this package/module. + my $fieldId = shift; + my $valueToSet = shift; + return 0 unless $valueToSet; + my $userId = shift || 'autoDerive'; + my $field; + if ($userId eq 'autoDerive') { + $field = WebGUI::Asset->newByDynamicClass($fieldId); + $userId = ($field->canManage && WebGUI::Session::isAdminOn()) ? '1' : $session{user}{userId}; + } + my $returnDataType = shift || 'string'; + my $returnDataFormat = shift || 'raw'; + my $sql = "delete from wgFieldUserData where assetId=".quote($fieldId)." and userId=".quote($userId); + #WebGUI::ErrorHandler::warn($sql); + WebGUI::SQL->write($sql); + my $sql2 = "insert into wgFieldUserData values (".quote($fieldId).",".quote($userId).",".quote($valueToSet).")"; + return WebGUI::SQL->write($sql2); +} + +#------------------------------------------------------------------- +sub www_edit { + my $self = shift; + return WebGUI::Privilege::insufficient() unless $self->canManage; + $self->getAdminConsole->setHelp("field add/edit","Asset_Shortcut"); + return $self->getAdminConsole->render($self->getEditForm->print,WebGUI::International::get(2,"Asset_Shortcut")); +} + +#------------------------------------------------------------------- +sub www_view { + my $self = shift; + return WebGUI::Privilege::noAccess() unless $self->canView; + $session{asset} = $self->getParent->getParent; + return $self->getParent->getParent->www_view; +} + +1; \ No newline at end of file diff --git a/lib/WebGUI/Asset/Wobject/Dashboard.pm b/lib/WebGUI/Asset/Wobject/Dashboard.pm new file mode 100644 index 000000000..bba342c36 --- /dev/null +++ b/lib/WebGUI/Asset/Wobject/Dashboard.pm @@ -0,0 +1,257 @@ +package WebGUI::Asset::Wobject::Dashboard; + +#------------------------------------------------------------------- +# WebGUI is Copyright 2001-2005 Plain Black Corporation. +#------------------------------------------------------------------- +# Please read the legal notices (docs/legal.txt) and the license +# (docs/license.txt) that came with this distribution before using +# this software. +#------------------------------------------------------------------- +# http://www.plainblack.com info@plainblack.com +#------------------------------------------------------------------- + +use strict; +use Tie::IxHash; +use WebGUI::International; +use WebGUI::Utility; +use WebGUI::Session; +use WebGUI::Grouping; +use WebGUI::Privilege; +use WebGUI::ErrorHandler; +use Time::HiRes; +use WebGUI::Asset::Field; +use WebGUI::Style; +use WebGUI::Asset::Wobject; + +our @ISA = qw(WebGUI::Asset::Wobject); + + +#------------------------------------------------------------------- +sub canManage { + my $self = shift; + return WebGUI::Grouping::isInGroup($self->get("adminsGroupId")); +} + +#------------------------------------------------------------------- +sub canPersonalize { + my $self = shift; + return WebGUI::Grouping::isInGroup($self->get("usersGroupId")); +} + + +#------------------------------------------------------------------- +sub definition { + my $class = shift; + my $definition = shift; + my %properties; + tie %properties, 'Tie::IxHash'; + %properties = ( + templateId =>{ + fieldType=>"template", + defaultValue=>'DashboardViewTmpl00001', + namespace=>"Dashboard" + }, + adminsGroupId =>{ + fieldType=>"group", + defaultValue=>4 + }, + usersGroupId =>{ + fieldType=>"group", + defaultValue=>2 + }, + mapFieldId =>{ + fieldType=>"text", + defaultValue=>'' + } + ); + push(@{$definition}, { + assetName=>WebGUI::International::get('assetName',"Asset_Dashboard"), + icon=>'dashboard.gif', + tableName=>'Dashboard', + className=>'WebGUI::Asset::Wobject::Dashboard', + properties=>\%properties + }); + return $class->SUPER::definition($definition); +} + +#------------------------------------------------------------------- +sub getContentPositions { + my $self = shift; + my $dummy = $self->initializeDashletFields unless $self->get("mapFieldId"); + return WebGUI::Asset::Field->getUserPref($self->get("mapFieldId")); +} + +#------------------------------------------------------------------- +sub getEditForm { + my $self = shift; + my $tabform = $self->SUPER::getEditForm; + my $i18n = WebGUI::International->new("Asset_Dashboard"); + $tabform->getTab("display")->template( + -value=>$self->getValue('templateId'), + -namespace=>"Dashboard", + -label=>$i18n->get('dashboard template field label'), + -hoverHelp=>$i18n->get('dashboard template description'), + ); + $tabform->getTab("security")->group( + -name=>"adminsGroupId", + -label=>$i18n->get('dashboard adminsGroupId field label'), + -hoverHelp=>$i18n->get('dashboard adminsGroupId description'), + -value=>[$self->get("adminsGroupId")] + ); + $tabform->getTab("security")->group( + -name=>"usersGroupId", + -label=>$i18n->get('dashboard usersGroupId field label'), + -hoverHelp=>$i18n->get('dashboard usersGroupId description'), + -value=>[$self->get("usersGroupId")] + ); + return $tabform; +} + +#------------------------------------------------------------------- +sub initializeDashletFields { + my $self = shift; + my $child = $self->addChild({ + className=>'WebGUI::Asset::Field', + title=>'Dashboard User Preference - Content Positions', + menuTitle=>'Dashboard User Preference - Content Positions', + isHidden=>1, + startDate=>$self->get("startDate"), + endDate=>$self->get("endDate"), + ownerUserId=>$self->get("ownerUserId"), + groupIdEdit=>$self->get("groupIdEdit"), + groupIdView=>$self->get("groupIdView"), + url=>'Dashboard User Preference - Content Positions', + isUserPref=>1, + fieldName=>'contentPositions' + }); + $self->update({mapFieldId=>$child->getId}); +} + + +#------------------------------------------------------------------- +sub isManaging { + my $self = shift; + return 1 if ($self->canManage && WebGUI::Session::isAdminOn()); + return 0; +} + +#------------------------------------------------------------------- +sub processPropertiesFromFormPost { + my $self = shift; + $self->SUPER::processPropertiesFromFormPost; + if ($session{form}{assetId} eq "new" && $session{form}{class} eq 'WebGUI::Asset::Wobject::Dashboard') { + $self->initializeDashletFields; + $self->update({styleTemplateId=>'PBtmplBlankStyle000001'}); + } +} + + +#------------------------------------------------------------------- +sub view { + my $self = shift; + my %vars = $self->get(); + my $templateId = $self->get("templateId"); + my $children = $self->getLineage( ["children"], { returnObjects=>1, excludeClasses=>["WebGUI::Asset::Field","WebGUI::Asset::Wobject::Layout","WebGUI::Asset::Wobject::Dashboard"] }); + my %vars; + # I'm sure there's a more efficient way to do this. We'll figure it out someday. + my @positions = split(/\./,$self->getContentPositions); + my @hidden = split("\n",$self->get("assetsToHide")); + foreach my $child (@{$children}) { + push(@hidden,$child->get('shortcutToAssetId')) if ref $child eq 'WebGUI::Asset::Shortcut'; + } + my $i = 1; + my $templateAsset = WebGUI::Asset->newByDynamicClass($templateId) || WebGUI::Asset->getImportNode; + my $template = $templateAsset->get("template"); + my $numPositions = 1; + foreach my $j (2..15) { + $numPositions = $j if $template =~ m/position${j}\_loop/; + } + + my @found; + my $showPerformance = WebGUI::ErrorHandler::canShowPerformanceIndicators(); + foreach my $position (@positions) { + my @assets = split(",",$position); + foreach my $asset (@assets) { + foreach my $child (@{$children}) { + if ($asset eq $child->getId) { + unless (isIn($asset,@hidden) || !($child->canView)) { + WebGUI::Style::setRawHeadTags($child->getExtraHeadTags); + my $t = [Time::HiRes::gettimeofday()] if ($showPerformance); + my $view = $child->view; + $view .= "Asset:".Time::HiRes::tv_interval($t) if ($showPerformance); + $child->{_properties}{title} = $child->getShortcut->get("title") if ref $child eq 'WebGUI::Asset::Shortcut'; + if ($i > $numPositions) { + push(@{$vars{"position1_loop"}},{ + id=>$child->getId, + content=>$view, + dashletTitle=>$child->get("title") + }); + } else { + push(@{$vars{"position".$i."_loop"}},{ + id=>$child->getId, + content=>$view, + dashletTitle=>$child->get("title") + }); + } + } + push(@found, $child->getId); + } + } + } + $i++; + } + # deal with unplaced children + foreach my $child (@{$children}) { + unless (isIn($child->getId, @found)||isIn($child->getId,@hidden)) { + if ($child->canView) { + my $t = [Time::HiRes::gettimeofday()] if ($showPerformance); + my $view = $child->view; + $view .= "Asset:".Time::HiRes::tv_interval($t) if ($showPerformance); + push(@{$vars{"position1_loop"}},{ + id=>$child->getId, + content=>$view, + dashletTitle=>$child->get("title") + }); + } + } + } + $vars{showAdmin} = ($session{var}{adminOn} && $self->canEdit); + WebGUI::Style::setScript($session{config}{extrasURL}."/wobject/Dashboard/draggable.js",{ type=>"text/javascript" }); + WebGUI::Style::setLink($session{config}{extrasURL}."/wobject/Dashboard/draggable.css",{ type=>"text/css", rel=>"stylesheet", media=>"all" }); + $vars{"dragger.init"} = ' + + '; + + return $self->processTemplate(\%vars, $templateId); +} + +#------------------------------------------------------------------- +sub www_setContentPositions { + my $self = shift; + return WebGUI::Privilege::insufficient() unless ($self->canPersonalize); + return '' unless $self->get("mapFieldId"); + my $success = WebGUI::Asset::Field->setUserPref($self->get("mapFieldId"),$session{form}{map}); + return "Map set: ".$session{form}{map} if $success; + return "Map failed to set."; +} + + +#------------------------------------------------------------------- + +=head2 www_view ( ) + +Returns the view() method of the asset object if the requestor canView. + +=cut + +sub www_view { + my $self = shift; + return $self->SUPER::www_view(1); +} + + + + +1; \ No newline at end of file diff --git a/lib/WebGUI/Asset/Wobject/MultiSearch.pm b/lib/WebGUI/Asset/Wobject/MultiSearch.pm new file mode 100644 index 000000000..8972d02a6 --- /dev/null +++ b/lib/WebGUI/Asset/Wobject/MultiSearch.pm @@ -0,0 +1,94 @@ +package WebGUI::Asset::Wobject::MultiSearch; + +=head1 LEGAL + + ------------------------------------------------------------------- + WebGUI is Copyright 2001-2005 Plain Black Corporation. + ------------------------------------------------------------------- + Please read the legal notices (docs/legal.txt) and the license + (docs/license.txt) that came with this distribution before using + this software. + ------------------------------------------------------------------- + http://www.plainblack.com info@plainblack.com + ------------------------------------------------------------------- + + Portions of the below are originally from Weather::Underground, + and are not included in this copyright. + +=cut + +use strict; + +use Tie::CPHash; +use Tie::IxHash; +use JSON; +use WebGUI::DateTime; +use WebGUI::International; +use WebGUI::Privilege; +use WebGUI::Session; +use WebGUI::SQL; +use WebGUI::Asset::Wobject; +use WebGUI::Utility; + +our @ISA = qw(WebGUI::Asset::Wobject); + + +#------------------------------------------------------------------- +=head2 definition + +defines wobject properties for MultiSearch instances + +=cut + +sub definition { + my $class = shift; + my $definition = shift; + my $properties = { + templateId =>{ + fieldType=>"template", + tab=>"display", + defaultValue=>'MultiSearchTmpl0000001', + namespace=>"MultiSearch", + hoverHelp=>WebGUI::International::get('article template description','Asset_Article'), + label=>WebGUI::International::get(72,"Asset_Article") + }, + predefinedSearches=>{ + fieldType=>"textarea", + defaultValue=>"WebGUI", + tab=>"properties", + hoverHelp=>WebGUI::International::get('article template description','Asset_Article'), + label=>WebGUI::International::get(72,"Asset_Article") + }, + }; + push(@{$definition}, { + tableName=>'MultiSearch', + className=>'WebGUI::Asset::Wobject::MultiSearch', + assetName=>'MultiSearch', + # icon=>'MultiSearch.gif', + autoGenerateForms=>1, + properties=>$properties + }); + return $class->SUPER::definition($definition); +} + +#------------------------------------------------------------------- +=head2 view ( ) + +method called by the www_view method. Returns a processed template +to be displayed within the page style + +=cut + +sub view { + my $self = shift; + my %var = $self->get(); + #Set some template variables + + #Build list of stocks as an array + my $defaults = $self->getValue("predefinedSearches"); + + return $self->processTemplate(\%var, $self->get("templateId")); +} + + +1; diff --git a/lib/WebGUI/Asset/Wobject/StockData.pm b/lib/WebGUI/Asset/Wobject/StockData.pm new file mode 100644 index 000000000..6d1d9d064 --- /dev/null +++ b/lib/WebGUI/Asset/Wobject/StockData.pm @@ -0,0 +1,476 @@ +package WebGUI::Asset::Wobject::StockData; + +#------------------------------------------------------------------- +# WebGUI is Copyright 2001-2005 Plain Black Corporation. +#------------------------------------------------------------------- +# Please read the legal notices (docs/legal.txt) and the license +# (docs/license.txt) that came with this distribution before using +# this software. +#------------------------------------------------------------------- +# http://www.plainblack.com info@plainblack.com +#------------------------------------------------------------------- + +use strict; +use WebGUI::ErrorHandler; +use WebGUI::Icon; +use WebGUI::International; +use WebGUI::Privilege; +use WebGUI::Session; +use WebGUI::SQL; +use WebGUI::URL; +use WebGUI::Utility; +use WebGUI::Asset::Wobject; + +use Finance::Quote; + +our @ISA = qw(WebGUI::Asset::Wobject); + +#------------------------------------------------------------------- +=head2 _appendStockVars ( hash, data, symbol ) + +Appends stock variables for the symbol passed in to the hash passed in + +=head3 hash + +hash to append stock variables to + +=head3 data + +hash reference in the format passed by the fetch method from Finance::Quote + +=head3 symbol + +stock symbol to append variables for + +=cut + +sub _appendStockVars { + my $self = shift; + my $hash = $_[0]; + my $data = $_[1]; + my $symbol = $_[2]; + $hash->{'stocks.symbol'} = _na($symbol); + $hash->{'stocks.name'} = _na($data->{$symbol,"name"}); + $hash->{'stocks.last'} = _na($data->{$symbol,"last"}); + $hash->{'stocks.high'} = _na($data->{$symbol,"high"}); + $hash->{'stocks.low'} = _na($data->{$symbol,"low"}); + $hash->{'stocks.date'} = _na($data->{$symbol,"date"}); + $hash->{'stocks.time'} = _na($data->{$symbol,"time"}); + + $hash->{'stocks.net'} = _na($data->{$symbol,"net"}); + $hash->{'stocks.net.isDown'} = $hash->{'stocks.net'} < 0; + $hash->{'stocks.net.isUp'} = $hash->{'stocks.net'} > 0; + $hash->{'stocks.net.noChange'} = $hash->{'stocks.net'} == 0; + + $hash->{'stocks.net.icon'} = "nc.gif"; + if($hash->{'stocks.net.isDown'}) { + $hash->{'stocks.net.icon'} = "down.gif"; + } elsif($hash->{'stocks.net.isUp'}) { + $hash->{'stocks.net.icon'} = "up.gif"; + } + $hash->{'stocks.p_change'} = _na($data->{$symbol,"p_change"}); + $hash->{'stocks.volume'} = _na($data->{$symbol,"volume"}); + $hash->{'stocks.volume.millions'} = _na(WebGUI::Utility::round(($hash->{'stocks.volume'}/1000000),2)); + $hash->{'stocks.avg_vol'} = _na($data->{$symbol,"avg_vol"}); + $hash->{'stocks.bid'} = _na($data->{$symbol,"bid"}); + $hash->{'stocks.ask'} = _na(WebGUI::Utility::commify($data->{$symbol,"ask"})); + $hash->{'stocks.close'} = _na($data->{$symbol,"close"}); + $hash->{'stocks.open'} = _na($data->{$symbol,"open"}); + $hash->{'stocks.day_range'} = _na($data->{$symbol,"day_range"}); + $hash->{'stocks.year_range'} = _na($data->{$symbol,"year_range"}); + my ($yrLo,$yrHi) = split("-",$hash->{'stocks.year_range'}); + + $hash->{'stocks.year_high'} = _na($self->_trim($yrHi)); + $hash->{'stocks.year_low'} = _na($self->_trim($yrLo)); + $hash->{'stocks.eps'} = _na($data->{$symbol,"eps"}); + $hash->{'stocks.pe'} = _na($data->{$symbol,"pe"}); + $hash->{'stocks.div_date'} = _na($data->{$symbol,"div_date"}); + $hash->{'stocks.div'} = _na($data->{$symbol,"div"}); + $hash->{'stocks.div_yield'} = _na($data->{$symbol,"div_yield"}); + $hash->{'stocks.cap'} = _na(lc($data->{$symbol,"cap"})); + $hash->{'stocks.ex_div'} = _na($data->{$symbol,"ex_div"}); + $hash->{'stocks.nav'} = _na($data->{$symbol,"nav"}); + $hash->{'stocks.yield'} = _na($data->{$symbol,"yield"}); + $hash->{'stocks.exchange'} = _na($data->{$symbol,"exchange"}); + $hash->{'stocks.success'} = _na($data->{$symbol,"success"}); + $hash->{'stocks.errormsg'} = _na($data->{$symbol,"errormsg"}); + $hash->{'stocks.method'} = _na($data->{$symbol,"method"}); +} + +#------------------------------------------------------------------- +=head2 _na( string ) + +If string passed in is empty, returns N/A + +=head3 string + +a string + +=cut + +sub _na { + my $str = $_[0]; + unless($str) { + $str = "N/A"; + } + return $str; +} + +#------------------------------------------------------------------- +=head2 _appendZero( intger ) + +Appends a zero to an integer if it is 0-9 + +=head3 integer + +an integer + +=cut + +sub _appendZero { + my $self = shift; + my $num = $_[0]; + if (length($num) == 1) { + $num = "0".$num; + } + return $num; +} + +#------------------------------------------------------------------- +=head2 _clearStockEditSession ( ) + +Clears the session variables from session used by the stock list edit form + +=cut + +sub _clearStockEditSession { + my $self = shift; + $session{form}{symbol} = ""; + $session{form}{stockId} = ""; +} + +#------------------------------------------------------------------- +=head2 _convertToEpoch (date,time) + +Converts the date and time returned by Finance::Quote to an epoch + +=head3 date + +date format returned by Finance::Quote + +=head3 time + +time format returned by Finance::Quote + +=cut + +sub _convertToEpoch { + my $self = shift; + my $date = $_[0]; + my $time = $_[1]; + + my ($month,$day,$year) = split("/",$date); + $month = $self->_appendZero($month); + $day = $self->_appendZero($day); + my $tfixed = substr($time,0,-2); + my ($hour,$minute) = split(":",$tfixed); + if($time =~ m/pm/i) { + $hour += 12; + } + $hour = $self->_appendZero($hour); + $minute - $self->_appendZero($minute); + return WebGUI::DateTime::humanToEpoch("$year-$month-$day $hour:$minute:00"); +} + +#------------------------------------------------------------------- +=head2 _getStocks ( stocks ) + +Private method which retrieves stock information from the Finance::Quote package + +=head3 stocks + +list of stock symbols to find passed in as an array reference. stock symbols should all be uppercase + +=cut + +sub _getStocks { + my $self = shift; + my $stocks = $_[0]; + #Create a new Finance::Quote object + my $q = Finance::Quote->new; + #Disable failover if specified + unless ($self->getValue("failover")) { + $q->failover(0); + } + #Fetch the stock information and return the results + return $q->fetch($self->getValue("source"),@{$stocks}); +} + +#------------------------------------------------------------------- +=head2 _getStockSources ( ) + +Private method which retrieves the list of available stock sources from Finance::Quote package +and returns the results as a hash reference for the selectList Form API + +=cut + +sub _getStockSources { + my $self = shift; + #Instantiate Finance::Quote + my $q = Finance::Quote->new; + #Retrieve array of available sources and sort them + my @srcs = sort $q->sources; + #Create a hash reference with the name referencing itself + my %sources; + #Tie to IxHash to preserve alphabetical order + tie %sources, "Tie::IxHash"; + foreach my $src (@srcs) { + $sources{$src} = $src; + } + return \%sources; +} + +#------------------------------------------------------------------- +=head2 _submenu + +renders the admin console view + +=cut + +sub _submenu { + my $self = shift; + my $workarea = shift; + my $title = shift; + my $help = shift; + my $ac = WebGUI::AdminConsole->new("editstocks"); + $ac->setHelp($help) if ($help); + $ac->setIcon($self->getIcon); + return $ac->render($workarea, $title); +} + +#------------------------------------------------------------------- +=head2 _trim (str) + + Trims whitespace form front and end of a string + +=head3 str + +a string to trim + +=cut + +sub _trim { + my $self = shift; + my $str = $_[0]; + $str =~ s/^\s//; + $str =~ s/\s$//; + return $str; +} + +#------------------------------------------------------------------- +=head2 definition + +defines wobject properties for Stock Data instances + +=cut + +sub definition { + my $class = shift; + my $definition = shift; + my $properties = { + templateId =>{ + fieldType=>"template", + defaultValue=>'StockDataTMPL000000001' + }, + displayTemplateId=>{ + fieldType=>"template", + defaultValue=>'StockDataTMPL000000002' + }, + defaultStocks=>{ + fieldType=>"textarea", + defaultValue=>"DELL\nMSFT\nORCL\nSUNW\nYHOO" + }, + source=>{ + fieldType=>"selectList", + defaultValue=>"usa" + }, + failover=>{ + fieldType=>"checkbox", + defaultValue=>undef + } + }; + push(@{$definition}, { + tableName=>'StockData', + className=>'WebGUI::Asset::Wobject::StockData', + icon=>'stockData.gif', + assetName=>WebGUI::International::get("app_name","Asset_StockData"), + properties=>$properties + }); + return $class->SUPER::definition($definition); +} + +#------------------------------------------------------------------- +=head2 getEditForm + +returns the tabform object that will be used in generating the edit page for Stock Lists + +=cut + +sub getEditForm { + my $self = shift; + my $tabform = $self->SUPER::getEditForm(); + + $tabform->getTab("display")->template( + -value=>$self->get("templateId"), + -label=>WebGUI::International::get("template_label","Asset_StockData"), + -namespace=>"StockData" + ); + + $tabform->getTab("display")->template( + -value=>$self->get("displayTemplateId"), + -label=>WebGUI::International::get("display_template_label","Asset_StockData"), + -namespace=>"StockData/Display" + ); + + $tabform->getTab("properties")->textarea( + -name => "defaultStocks", + -label=> WebGUI::International::get("default_stock_label","Asset_StockData"), + -value=> $self->getValue("defaultStocks") + ); + + $tabform->getTab("properties")->selectList( + -name => "source", + -label=> WebGUI::International::get("stock_source","Asset_StockData"), + -options=>$self->_getStockSources(), + -value=> [$self->getValue("source")], + -hoverHelp=>WebGUI::International::get("stock_source_description","Asset_StockData") + ); + + $tabform->getTab("properties")->yesNo( + -name=> "failover", + -label=> WebGUI::International::get("failover_label","Asset_StockData"), + -value=>$self->getValue("failover"), + -hoverHelp=> WebGUI::International::get("failover_description","Asset_StockData") + ); + + return $tabform; +} + +#------------------------------------------------------------------- +=head2 purge ( ) + +removes collateral data associated with a StockData when the system +purges it's data. + +=cut + +sub purge { + my $self = shift; + return $self->SUPER::purge; +} + +#------------------------------------------------------------------- +=head2 view ( ) + +method called by the www_view method. Returns a processed template +to be displayed within the page style + +=cut + +sub view { + my $self = shift; + my $var = {}; + #Set some template variables + $var->{'extrasFolder'} = $session{config}{extrasURL}."/wobject/StockData"; + $var->{'editUrl'} = $self->getUrl("func=editStocks"); + $var->{'isVisitor'} = $session{user}{userId} eq 1; + $var->{'stock.display.url'} = $self->getUrl("func=displayStock&symbol="); + + #Build list of stocks as an array + my $defaults = $self->getValue("defaultStocks"); + #replace any windows newlines + $defaults =~ s/\r//; + my @array = split("\n",$defaults); + #trim default stocks of whitespace + for (my $i = 0; $i < scalar(@array); $i++) { + $array[$i] = $self->_trim($array[$i]); + } + my $data = $self->_getStocks(\@array); + + my @stocks = (); + foreach my $symbol (@array) { + my $hash = {}; + + #Append Template Variables for stock symbol + $self->_appendStockVars($hash,$data,$symbol); + + #Create last update date formats + unless ($var->{'lastUpdate.default'}) { + my $luEpoch = $self->_convertToEpoch($hash->{'stocks.date'},$hash->{'stocks.time'}); + $var->{'lastUpdate.intl'} = WebGUI::DateTime::epochToHuman($luEpoch,"%y-%m-%d %j:%n"); + $var->{'lastUpdate.us'} = WebGUI::DateTime::epochToHuman($luEpoch,"%m/%d/%y %h:%n %p"); + $var->{'lastUpdate.default'} = WebGUI::DateTime::epochToHuman($luEpoch,"%C %d %H:%n %P"); + } + + push (@stocks, $hash); + } + $var->{'stocks.loop'} = \@stocks; + return $self->processTemplate($var, $self->get("templateId")); +} + +#------------------------------------------------------------------- +=head2 www_displayStock ( ) + +Web facing method which allows users to view details about their stocks + +=cut + +sub www_displayStock { + my $self = shift; + my $var = {}; + return WebGUI::Privilege::noAccess() unless $self->canView(); + + $var->{'extrasFolder'} = $session{config}{extrasURL}."/wobject/StockData"; + + my $symbol = $session{form}{symbol}; + my $data = $self->_getStocks([$symbol]); + #Append Template Variables for stock symbol + $self->_appendStockVars($var,$data,$symbol); + + #Configure last update dates + my $luEpoch = $self->_convertToEpoch($var->{'stocks.date'},$var->{'stocks.time'}); + $var->{'lastUpdate.intl'} = WebGUI::DateTime::epochToHuman($luEpoch,"%y-%m-%d"); + $var->{'lastUpdate.us'} = WebGUI::DateTime::epochToHuman($luEpoch,"%m/%d/%y"); + + $session{setting}{showDebug} = 0; + return $self->processTemplate($var, $self->get("displayTemplateId")); +} + +#------------------------------------------------------------------- +=head2 www_edit ( ) + +Web facing method which is the default edit page + +=cut + +sub www_edit { + my $self = shift; + return WebGUI::Privilege::insufficient() unless $self->canEdit; + $self->getAdminConsole->setHelp("stock_list_add_edit","Asset_StockData"); + return $self->getAdminConsole->render($self->getEditForm->print, + WebGUI::International::get("edit_title","Asset_StockData")); +} + +#------------------------------------------------------------------- +=head2 www_view ( ) + +Overwrite www_view method and call the superclass object, passing in a 1 to disable cache + +=cut + +sub www_view { + my $self = shift; + $self->SUPER::www_view(1); +} + +1; diff --git a/lib/WebGUI/Asset/Wobject/WeatherData.pm b/lib/WebGUI/Asset/Wobject/WeatherData.pm new file mode 100644 index 000000000..cb7c805d4 --- /dev/null +++ b/lib/WebGUI/Asset/Wobject/WeatherData.pm @@ -0,0 +1,221 @@ +package WebGUI::Asset::Wobject::WeatherData; + +=head1 LEGAL + + ------------------------------------------------------------------- + WebGUI is Copyright 2001-2005 Plain Black Corporation. + ------------------------------------------------------------------- + Please read the legal notices (docs/legal.txt) and the license + (docs/license.txt) that came with this distribution before using + this software. + ------------------------------------------------------------------- + http://www.plainblack.com info@plainblack.com + ------------------------------------------------------------------- + + Portions of the below are originally from Weather::Underground, + and are not included in this copyright. + +=cut + +use strict; + +use LWP::UserAgent qw($ua); +use Tie::CPHash; +use Tie::IxHash; +use JSON; +use WebGUI::Cache; +use WebGUI::DateTime; +use WebGUI::International; +use WebGUI::Privilege; +use WebGUI::Session; +use WebGUI::SQL; +use WebGUI::Asset::Wobject; +use WebGUI::Utility; + +our @ISA = qw(WebGUI::Asset::Wobject); + + +#------------------------------------------------------------------- +=head2 definition + +defines wobject properties for WeatherData instances + +=cut + +sub definition { + my $class = shift; + my $definition = shift; + my $properties = { + templateId =>{ + fieldType=>"template", + tab=>"display", + defaultValue=>'WeatherDataTmpl0000001', + namespace=>"WeatherData", + hoverHelp=>WebGUI::International::get('article template description','Asset_Article'), + label=>WebGUI::International::get(72,"Asset_Article") + }, + locations=>{ + fieldType=>"textarea", + defaultValue=>"Grayslake,IL", + tab=>"properties", + hoverHelp=>WebGUI::International::get('article template description','Asset_Article'), + label=>WebGUI::International::get(72,"Asset_Article") + }, + }; + push(@{$definition}, { + tableName=>'WeatherData', + className=>'WebGUI::Asset::Wobject::WeatherData', + assetName=>'WeatherData', + icon=>'weatherData.gif', + autoGenerateForms=>1, + properties=>$properties + }); + return $class->SUPER::definition($definition); +} + +#------------------------------------------------------------------- +=head2 _getLocationData + +Accepts an array ref of locations, and returns + +=cut + +sub _getLocationData { + my $self = shift; + my $location = shift; + my $cache = WebGUI::Cache->new(["weatherLocation",$location]); + my $locData = $cache->get; + unless ($locData->{cityState}) { + my $oldagent; + my $ua = LWP::UserAgent->new; + $ua->timeout(10); + $oldagent = $ua->agent(); + $ua->agent($session{env}{HTTP_USER_AGENT}); # Act as a proxy. + my $response = $ua->get('http://www.srh.noaa.gov/port/port_zc.php?inputstring='.$location); + my $document = $response->content; + $document =~ s/\n/ /g; + $document =~ s/\s+/ /g; + $document =~ m!
\s\s(.*?)
.*?
.*?
.*?
\s(.*?):\s(.*?) °F
!; + $locData = { + query => $location, + cityState => $1, + sky => $2, + tempF => $3, + iconUrl => $session{config}{extrasURL}.'/wobject/WeatherData/'.$self->_chooseWeatherConditionsIcon($2).'.jpg' + }; + $cache->set($locData, 60*60) if $locData->{cityState}; + } + return $locData; + +# return $cityState.'
'.$sky.'
'.$ftemp.'°F
'; +} + +#------------------------------------------------------------------- +=head2 _chooseWeatherConditionsIcon ( currentSkyConditionsEnglish ) + +Accepts a string that represents the current sky conditions. Taken +largely from http://www.weather.gov/data/current_obs/weather.php + +=cut + +sub _chooseWeatherConditionsIcon { + my $self = shift; + my $currCond = shift; +if (isIn($currCond,'Mostly Cloudy','Mostly Cloudy with Haze','Mostly Cloudy and Breezy')) {return 'bkn';} +if (isIn($currCond,'Fair','Clear','Fair with Haze','Clear with Haze','Fair and Breezy','Clear and Breezy')) {return 'skc';} +if (isIn($currCond,'A Few Clouds','A Few Clouds with Haze','A Few Clouds and Breezy')) {return 'few';} +if (isIn($currCond,'Partly Cloudy','Party Cloudy with Haze','Partly Cloudy and Breezy')) {return 'sct';} +if (isIn($currCond,'Overcast','Overcast with Haze','Overcast and Breezy')) {return 'ovc';} +if (isIn($currCond,'Fog/Mist','Fog','Freezing Fog','Shallow Fog','Partial Fog','Patches of Fog','Fog in Vicinity','Freezing Fog in Vicinity','Shallow Fog in Vicinity','Partial Fog in Vicinity','Patches of Fog in Vicinity','Showers in Vicinity Fog','Light Freezing Fog','Heavy Freezing Fog')) {return 'nfg';} +if (isIn($currCond,'Smoke')) {return 'smoke';} +if (isIn($currCond,'Freezing Rain','Freezing Drizzle','Light Freezing Rain','Light Freezing Drizzle','Heavy Freezing Rain','Heavy Freezing Drizzle','Freezing Rain in Vicinity','Freezing Drizzle in Vicinity')) {return 'fzra';} +if (isIn($currCond,'Ice Pellets','Light Ice Pellets','Heavy Ice Pellets','Ice Pellets in Vicinity','Showers Ice Pellets','Thunderstorm Ice Pellets','Ice Crystals','Hail','Small Hail/Snow Pellets','Light Small Hail/Snow Pellets','Heavy Small Hail/Snow Pellets','Showers Hail','Hail Showers')) {return 'ip';} +if (isIn($currCond,'Freezing Rain Snow','Light Freezing Rain Snow','Heavy Freezing Rain Snow','Freezing Drizzle Snow','Light Freezing Drizzle Snow','Heavy Freezing Drizzle Snow','Snow Freezing Rain| Light Snow Freezing Rain','Heavy Snow Freezing Rain','Snow Freezing Drizzle','Light Snow Freezing Drizzle','Heavy Snow Freezing Drizzle')) {return 'mix';} +if (isIn($currCond,'Rain Ice Pellets','Light Rain Ice Pellets','Heavy Rain Ice Pellets','Drizzle Ice Pellets','Light Drizzle Ice Pellets','Heavy Drizzle Ice Pellets','Ice Pellets Rain','Light Ice Pellets Rain','Heavy Ice Pellets Rain','Ice Pellets Drizzle','Light Ice Pellets Drizzle','Heavy Ice Pellets Drizzle')) {return 'raip';} +if (isIn($currCond,'Rain Snow','Light Rain Snow','Heavy Rain Snow','Snow Rain','Light Snow Rain','Heavy Snow Rain','Drizzle Snow','Light Drizzle Snow','Heavy Drizzle Snow','Snow Drizzle','Light Snow Drizzle','Heavy Snow Drizzle')) {return 'rasn';} +if (isIn($currCond,'Rain Showers','Light Rain Showers','Heavy Rain Showers','Rain Showers in Vicinity','Light Showers Rain','Heavy Showers Rain','Showers Rain','Showers Rain in Vicinity','Rain Showers Fog/Mist','Light Rain Showers Fog/Mist','Heavy Rain Showers Fog/Mist','Rain Showers in Vicinity Fog/Mist','Light Showers Rain Fog/Mist','Heavy Showers Rain Fog/Mist','Showers Rain Fog/Mist','Showers Rain in Vicinity Fog/Mist')) {return 'shra';} +if (isIn($currCond,'Thunderstorm','Light Thunderstorm Rain','Heavy Thunderstorm Rain','Thunderstorm Rain Fog/Mist','Light Thunderstorm Rain Fog/Mist','Heavy Thunderstorm Rain Fog/Mist','Thunderstorm Showers in Vicinity','| Light Thunderstorm Rain Haze','Heavy Thunderstorm Rain Haze','Thunderstorm Fog','Light Thunderstorm Rain Fog','Heavy Thunderstorm Rain Fog','Thunderstorm Light Rain','Thunderstorm Heavy Rain','Thunderstorm Rain Fog/Mist','Thunderstorm Light Rain Fog/Mist','Thunderstorm Heavy Rain Fog/Mist','Thunderstorm in Vicinity Fog/Mist','Thunderstorm Showers in Vicinity','Thunderstorm in Vicinity','Thunderstorm in Vicinity Haze','Thunderstorm Haze in Vicinity','Thunderstorm Light Rain Haze','Thunderstorm Heavy Rain Haze','Thunderstorm Fog','Thunderstorm Light Rain Fog','Thunderstorm Heavy Rain Fog','Thunderstorm Hail','Light Thunderstorm Rain Hail','Heavy Thunderstorm Rain Hail','Thunderstorm Rain Hail Fog/Mist','Light Thunderstorm Rain Hail Fog/Mist','Heavy Thunderstorm Rain Hail Fog/Mist','Thunderstorm Showers in Vicinity Hail','| Light Thunderstorm Rain Hail Haze','Heavy Thunderstorm Rain Hail Haze','Thunderstorm Hail Fog','Light Thunderstorm Rain Hail Fog','Heavy Thunderstorm Rain Hail Fog','Thunderstorm Light Rain Hail','Thunderstorm Heavy Rain Hail','Thunderstorm Rain Hail Fog/Mist','Thunderstorm Light Rain Hail Fog/Mist','Thunderstorm Heavy Rain Hail Fog/Mist','Thunderstorm in Vicinity Hail Fog/Mist','Thunderstorm Showers in Vicinity Hail','Thunderstorm in Vicinity Hail','Thunderstorm in Vicinity Hail Haze','Thunderstorm Haze in Vicinity Hail','Thunderstorm Light Rain Hail Haze','Thunderstorm Heavy Rain Hail Haze','Thunderstorm Hail Fog','Thunderstorm Light Rain Hail Fog','Thunderstorm Heavy Rain Hail Fog','Thunderstorm Small Hail/Snow Pellets','Thunderstorm Rain Small Hail/Snow Pellets','Light Thunderstorm Rain Small Hail/Snow Pellets','Heavy Thunderstorm Rain Small Hail/Snow Pellets')) {return 'tsra';} +if (isIn($currCond,'Snow','Light Snow','Heavy Snow','Snow Showers','Light Snow Showers','Heavy Snow Showers','Showers Snow','Light Showers Snow','Heavy Showers Snow','Snow Fog/Mist','Light Snow Fog/Mist','Heavy Snow Fog/Mist','Snow Showers Fog/Mist','Light Snow Showers Fog/Mist','Heavy Snow Showers Fog/Mist','Showers Snow Fog/Mist','Light Showers Snow Fog/Mist','Heavy Showers Snow Fog/Mist','Snow Fog','Light Snow Fog','Heavy Snow Fog','Snow Showers Fog','Light Snow Showers Fog','Heavy Snow Showers Fog','Showers Snow Fog','Light Showers Snow Fog','Heavy Showers Snow Fog','Showers in Vicinity Snow','Snow Showers in Vicinity','Snow Showers in Vicinity Fog/Mist','Snow Showers in Vicinity Fog','Low Drifting Snow','Blowing Snow','Snow Low Drifting Snow','Snow Blowing Snow','Light Snow Low Drifting Snow','Light Snow Blowing Snow','Heavy Snow Low Drifting Snow','Heavy Snow Blowing Snow','Thunderstorm Snow','Light Thunderstorm Snow','Heavy Thunderstorm Snow','Snow Grains','Light Snow Grains','Heavy Snow Grains','Heavy Blowing Snow','Blowing Snow in Vicinity')) {return 'sn';} +if (isIn($currCond,'Windy','Fair and Windy','A Few Clouds and Windy','Partly Cloudy and Windy','Mostly Cloudy and Windy','Overcast and Windy')) {return 'wind';} +if (isIn($currCond,'Showers in Vicinity','Showers in Vicinity Fog/Mist','Showers in Vicinity Fog','Showers in Vicinity Haze')) {return 'hi_shwrs';} +if (isIn($currCond,'Freezing Rain Rain','Light Freezing Rain Rain','Heavy Freezing Rain Rain','Rain Freezing Rain','Light Rain Freezing Rain','Heavy Rain Freezing Rain','Freezing Drizzle Rain','Light Freezing Drizzle Rain','Heavy Freezing Drizzle Rain','Rain Freezing Drizzle','Light Rain Freezing Drizzle','Heavy Rain Freezing Drizzle')) {return 'fzrara';} +if (isIn($currCond,'Thunderstorm in Vicinity','Thunderstorm in Vicinity Fog/Mist','Thunderstorm in Vicinity Fog','Thunderstorm Haze in Vicinity','Thunderstorm in Vicinity Haze')) {return 'hi_tsra';} +if (isIn($currCond,'Light Rain','Drizzle','Light Drizzle','Heavy Drizzle','Light Rain Fog/Mist','Drizzle Fog/Mist','Light Drizzle Fog/Mist','Heavy Drizzle Fog/Mist','Light Rain Fog','Drizzle Fog','Light Drizzle Fog','Heavy Drizzle Fog')) {return 'ra1';} +if (isIn($currCond,'Rain','Heavy Rain','Rain Fog/Mist','Heavy Rain Fog/Mist','Rain Fog','Heavy Rain Fog')) {return 'ra';} +if (isIn($currCond,'Funnel Cloud','Funnel Cloud in Vicinity','Tornado/Water Spout')) {return 'nsvrtsra';} +if (isIn($currCond,'Dust','Low Drifting Dust','Blowing Dust','Sand','Blowing Sand','Low Drifting Sand','Dust/Sand Whirls','Dust/Sand Whirls in Vicinity','Dust Storm','Heavy Dust Storm','Dust Storm in Vicinity','Sand Storm','Heavy Sand Storm','Sand Storm in Vicinity')) {return 'dust';} +if (isIn($currCond,'Haze')) {return 'mist.jpg';} +} + +#------------------------------------------------------------------- +=head2 _na( string ) + +If string passed in is empty, returns N/A + +=head3 string + +a string + +=cut + +sub _na { + my $str = $_[0]; + unless($str) { + $str = "N/A"; + } + return $str; +} + +#------------------------------------------------------------------- +=head2 _trim (str) + + Trims whitespace form front and end of a string + +=head3 str + +a string to trim + +=cut + +sub _trim { + my $self = shift; + my $str = $_[0]; + $str =~ s/^\s//; + $str =~ s/\s$//; + return $str; +} + +#------------------------------------------------------------------- +=head2 view ( ) + +method called by the www_view method. Returns a processed template +to be displayed within the page style + +=cut + +sub view { + my $self = shift; + my $var = $self->get(); + #Set some template variables + + #Build list of locations as an array + my $defaults = $self->getValue("locations"); + #replace any windows newlines + $defaults =~ s/\r//; + my @array = split("\n",$defaults); + #trim locations of whitespace + for (my $i = 0; $i < scalar(@array); $i++) { + $array[$i] = $self->_trim($array[$i]); + } + my $data = $self->_getLocationData(\@array); + + my @locs = (); + foreach my $location (@array) { + push (@locs, $self->_getLocationData($location)); + } + $var->{'locations.loop'} = \@locs; + return $self->processTemplate($var, $self->get("templateId")); +} + + +1; diff --git a/lib/WebGUI/Help/Asset_Dashboard.pm b/lib/WebGUI/Help/Asset_Dashboard.pm new file mode 100644 index 000000000..691261564 --- /dev/null +++ b/lib/WebGUI/Help/Asset_Dashboard.pm @@ -0,0 +1 @@ +1; \ No newline at end of file diff --git a/lib/WebGUI/Help/Asset_StockData.pm b/lib/WebGUI/Help/Asset_StockData.pm new file mode 100644 index 000000000..66aaf5fcc --- /dev/null +++ b/lib/WebGUI/Help/Asset_StockData.pm @@ -0,0 +1,116 @@ +package WebGUI::Help::StockList; + +our $HELP = { + 'stock_list_add_edit' => { + title => 'help_add_edit_stocklist_title', + body => 'help_add_edit_stocklist_body', + fields => [ + { + title => 'template_label', + description => 'template_label_description', + namespace => 'StockList', + }, + { + title => 'display_template_label', + description => 'display_template_label_description', + namespace => 'StockList', + }, + { + title => 'default_stock_label', + description => 'default_stock_label_description', + namespace => 'StockList', + }, + { + title => 'stock_source', + description => 'stock_source_description', + namespace => 'StockList', + }, + { + title => 'failover_label', + description => 'failover_label_description', + namespace => 'StockList', + }, + ], + related => [ + { + tag => 'stock list user edit', + namespace => 'StockList' + }, + { + tag => 'stock list template', + namespace => 'StockList' + }, + { + tag => 'stock list display template', + namespace => 'StockList' + }, + { + tag => 'wobjects using', + namespace => 'Wobject' + }, + { + tag => 'asset fields', + namespace => 'Asset' + }, + ], + }, + 'stock list user edit' => { + title => 'help_add_edit_stock_title', + body => 'help_add_edit_stock_description', + fields => [ + { + title => 'symbol_label', + description => 'symbol_label_description', + namespace => 'StockList', + }, + ], + related => [ + { + tag => 'stock list display template', + namespace => 'StockList' + }, + ] + }, + 'stock list template' => { + title => 'help_stock_list_template', + body => 'help_stock_list_template_description', + fields => [ + ], + related => [ + { + tag => 'stock list display template', + namespace => 'StockList' + }, + { + tag => 'pagination template variables', + namespace => 'WebGUI' + }, + { + tag => 'wobject template', + namespace => 'Wobject' + } + ] + }, + 'stock list display template' => { + title => 'help_stock_list_display_template', + body => 'help_stock_list_display_template_description', + fields => [ + ], + related => [ + { + tag => 'stock list template', + namespace => 'StockList' + }, + { + tag => 'pagination template variables', + namespace => 'WebGUI' + }, + { + tag => 'wobject template', + namespace => 'Wobject' + } + ] + }, +}; + +1; diff --git a/lib/WebGUI/i18n/English/Asset_Dashboard.pm b/lib/WebGUI/i18n/English/Asset_Dashboard.pm new file mode 100644 index 000000000..4134c046a --- /dev/null +++ b/lib/WebGUI/i18n/English/Asset_Dashboard.pm @@ -0,0 +1,69 @@ +package WebGUI::i18n::English::Asset_Dashboard; + +our $I18N = { + 'dashboard template field label' => { + message => q|Dashboard Template|, + lastUpdated => 1136008800 #Dec 31, 2005 + }, + 'dashboard template description' => { + message => q|Choose a Dashboard/Portal Layout template. The default is the Three Column Layout.|, + lastUpdated => 1136008800 #Dec 31, 2005 + }, + 'assetName' => { + message => q|Dashboard|, + lastUpdated => 1136008800 #Dec 31, 2005 + }, + 'dashboard adminsGroupId description' => { + message => q|Which group may administer this Dashboard: Add/Edit/Remove Available Dashlets, Preferences, and Templates|, + lastUpdated => 1136008800 #Dec 31, 2005 + }, + 'dashboard adminsGroupId field label' => { + message => q|Who can manage?|, + lastUpdated => 1136008800 #Dec 31, 2005 + }, + 'dashboard usersGroupId field label' => { + message => q|Who can personalize?|, + lastUpdated => 1136008800 #Dec 31, 2005 + }, + 'dashboard usersGroupId description' => { + message => q|The group whose users may save their personalizations/preferences to the site. If someone is in the "Who can view?" group but not in this group, they can personalize the arrangement of the Dashlets (whose positions will be saved in cookies), but they will not be able to edit the preferences of any particular Dashlet.|, + lastUpdated => 1136008800 #Dec 31, 2005 + }, + 'dashboard template field label' => { + message => q|Dashboard Template|, + lastUpdated => 1136008800 #Dec 31, 2005 + }, + 'dashboard template field label' => { + message => q|Dashboard Template|, + lastUpdated => 1136008800 #Dec 31, 2005 + }, + 'dashboard template field label' => { + message => q|Dashboard Template|, + lastUpdated => 1136008800 #Dec 31, 2005 + }, + 'dashboard template field label' => { + message => q|Dashboard Template|, + lastUpdated => 1136008800 #Dec 31, 2005 + }, + 'dashboard template field label' => { + message => q|Dashboard Template|, + lastUpdated => 1136008800 #Dec 31, 2005 + }, + 'dashboard template field label' => { + message => q|Dashboard Template|, + lastUpdated => 1136008800 #Dec 31, 2005 + }, + 'dashboard template field label' => { + message => q|Dashboard Template|, + lastUpdated => 1136008800 #Dec 31, 2005 + }, + 'dashboard template field label' => { + message => q|Dashboard Template|, + lastUpdated => 1136008800 #Dec 31, 2005 + }, + + + +}; + +1; diff --git a/lib/WebGUI/i18n/English/Asset_StockData.pm b/lib/WebGUI/i18n/English/Asset_StockData.pm new file mode 100644 index 000000000..1d6c4a030 --- /dev/null +++ b/lib/WebGUI/i18n/English/Asset_StockData.pm @@ -0,0 +1,512 @@ +package WebGUI::i18n::English::Asset_StockData; + +our $I18N = { + + 'template_label' => { + message => q|Stock List Template|, + lastUpdated => 1121703035, + }, + + 'display_template_label' => { + message => q|Stock Display Template|, + lastUpdated => 1121703035, + }, + + 'app_name' => { + message => q|Stock Data|, + lastUpdated => 1119068745 + }, + + 'default_stock_label' => { + message => q|Default Stocks|, + lastUpdate => 1119068745 + }, + + 'default_stock_description' => { + message => q|Enter the default stocks you wish to show visitors and users who do not have their stock lists personalized. One stock symbol per line|, + lastUpdate => 1119068745 + }, + + 'edit_title' => { + message => q|Edit Stock List|, + lastUpdate => 1119068745 + }, + + 'add_button_label' => { + message => q|Add >>|, + lastUpdate => 1119068745 + }, + + 'finish_button_label' => { + message => q|Finish|, + lastUpdate => 1119068745 + }, + + 'symbol_label' => { + message => q|Stock Symbol|, + lastUpdate => 1119068745 + }, + + 'symbol_header' => { + message => q|Stock Symbol List|, + lastUpdate => 1119068745 + }, + + 'symbol_edit_label' => { + message => q|Add/Edit Stock Symbols|, + lastUpdate => 1119068745 + }, + + 'stock_source' => { + message => q|Primary Source|, + lastUpdate => 1119068745 + }, + + 'stock_source_description' => { + message => q|The Stock List application gets stock quotes from various internet sources. Choose the primary source you wish to have stocks returned from. Choosing the market most of your users will choose stocks from greatly improves the performance of stock retrieval|, + lastUpdate => 1119068745 + }, + + 'failover_label' => { + message => q|Use Multiple Sources|, + lastUpdate => 1119068745 + }, + + 'failover_description' => { + message => q|If this option is marked yes, all available stock sources will be searched (starting with the primary source). If marked no, only the primary source selected will be searched. This will reduce the number of available stocks available to your users, but will greatly improve the performance of stock retrieval.|, + lastUpdate => 1119068745 + }, + + 'no_symbol' => { + message => q|Symbol %s could not be found from the list available market search sources.|, + lastUpdate => 1119068745 + }, + + 'no_symbol_error' => { + message => q|"You have not entered a stock symbol to add to your list"|, + lastUpdate => 1119068745 + }, + + 'symbol_exists' => { + message => q|Symbol %s is already in your Stock List.|, + lastUpdate => 1119068745 + }, + + 'delete_confirm' => { + message => q|Are you sure you wish to remove %s from your Stock List?|, + lastUpdate => 1119068745 + }, + + #Help Messages + 'help_add_edit_stocklist_title' => { + message => q|Stock List, Add/Edit|, + lastUpdated => 1066583066 + }, + + 'help_add_edit_stocklist_body' => { + message => q|

Stock Lists allow users to track stocks on your site. Data is retrieved from various sources on the internet and displayed in tabluar format. This application allows any registered user to configure stock lists as well as to set a default stock list for visitors or for users who have not configured one themselves

|, + lastUpdated => 1119066571, + }, + + 'template_label_description' => { + message => q|Select a template from the list to layout your Stock List. Each Stock List may only use templates with namespace "StockList".|, + lastUpdated => 1119066250 + }, + + 'display_template_label_description' => { + message => q|Select a template from the list to layout the display for individual Stocks. Stock List Display templates use templates with namespace "StockList/Display".|, + lastUpdated => 1119066250 + }, + + 'default_stock_label_description' => { + message => q|Enter a list of default stocks (one per line) to display in cases where the user is not logged in or the user has not personalized the Stock List|, + lastUpdated => 1119066250 + }, + + 'stock_source_description' => { + message => q|Choose the primary source from which to retrieve stocks. This is the first internet location the application will search. Choosing the source that contains stocks which the majority of your users will be watching greatly increases the performance of the Stock List.|, + lastUpdated => 1119066250 + }, + + 'failover_label_description' => { + message => q|Choosing yes indicates that all available internet sources will be searched to find each stock. Choosing no restricts the search to your primary source. This greatly improves the performance of searchs, but limits your users to stocks available from only once source.|, + lastUpdated => 1119066250 + }, + + 'help_add_edit_stock_title' => { + message => q|Stock List, Add/Edit Stocks|, + lastUpdated => 1119066250 + }, + + 'help_add_edit_stock_description' => { + message => q|

The stock edit page allows you to customize your stock lists. Add to, remove from, and order your personalized list of stocks to display on the site

|, + lastUpdated => 1119066250 + }, + + 'symbol_label_description' => { + message => q|Enter a valid stock symbol. If your symbol cannot be found, contact your administrator. It is likely that your site restricts stocks to a certain market (US market, European market, etc)|, + lastUpdated => 1119066250 + }, + + 'help_stock_list_template' => { + message => q|Stock List Template|, + lastUpdated => 1119066250 + }, + + 'help_stock_list_template_description' => { + message => q|

The following describes the list of available template variables for building StockList templates

+ extrasFolder
+The url to the extras folder containing css files and images used by the Stock List application +

+editUrl
+The url to the page where users can customize stocks +

+ +isVisitor
+Whether or not the current user is a visitor. This returns true if the users is authenticated against the system +

+ +stock.display.url
+General url to the page that displays details for individual stocks. A stock symbol must be added to the end of this url +

+ +lastUpdate.default
+default date and time format for the date and time stocks were updated by the returning sources +

+ +lastUpdate.intl
+international date and time format for the date and time stocks were updated by the returning sources +

+ +lastUpdate.us
+US date and time format for the date and time stocks were updated by the returning sources +

+ +stocks.loop
+Loop containing all default or personalized stocks +

+ +

stocks.symbol
+
Stock Symbol +

+ +

stocks.name
+
Company or Mutual Fund Name +

+ +

stocks.last
+
Last Price +

+ +

stocks.high
+
Highest trade today +

+ +

stocks.low
+
Lowest trade today +

+ +

stocks.date
+
Last Trade Date (MM/DD/YY format) +

+ +

stocks.time
+
Last Trade Time +

+ +

stocks.net
+
Net Change +

+ +

stocks.net.isDown
+
Net Change is negative +

+ +

stocks.net.isUp
+
Net Change is positive +

+ +

stocks.net.noChange
+
Net Change is zero +

+ +

stocks.net.icon
+
Icon associated with net change (up, down, even) +

+ +

stocks.p_change
+
Percent Change from previous day's close +

+ +

stocks.volume
+
Day's Volume +

+ +

stocks.volume.millions
+
Day's Volume In Millions +

+ +

stocks.avg_vol
+
Average Daily Vol +

+ +

stocks.bid
+
Bid +

+ +

stocks.ask
+
Ask +

+ +

stocks.close
+
Previous Close +

+ +

stocks.open
+
Today's Open +

+ +

stocks.day_range
+
Day's Range +

+ +

stocks.year_range
+
52-Week Range +

+ +

stocks.year_high
+
52-Week High +

+ +

stocks.year_low
+
52-Week Low +

+ +

stocks.eps
+
Earnings per Share +

+ +

stocks.pe
+
P/E Ratio +

+ +

stocks.div_date
+
Dividend Pay Date +

+ +

stocks.div
+
Dividend per Share +

+ +

stocks.div_yield
+
Dividend Yield +

+ +

stocks.cap
+
Market Capitalization +

+ +

stocks.ex_div
+
Ex-Dividend Date. +

+ +

stocks.nav
+
Net Asset Value +

+ +

stocks.yield
+
Yield (usually 30 day avg) +

+ +

stocks.exchange
+
The exchange the information was obtained from. +

+ +

stocks.success
+
Did the stock successfully return information? (true/false) +

+ +

stocks.errormsg
+
If success is false, this field may contain the reason why. +

+ +

stocks.method
+
The module (as could be passed to fetch) which found this information. +

+ |, + lastUpdated => 1119066250 + }, + + 'help_stock_list_display_template' => { + message => q|Stock List Display Template|, + lastUpdated => 1119066250 + }, + + 'help_stock_list_display_template_description' => { + message => q|

The following describes the list of available template variables for building StockList templates

+ extrasFolder
+The url to the extras folder containing css files and images used by the Stock List application +

+ +lastUpdate.intl
+international date and time format for the date and time stocks were updated by the returning sources +

+ +lastUpdate.us
+US date and time format for the date and time stocks were updated by the returning sources +

+ +stocks.symbol
+Stock Symbol +

+ +stocks.name
+Company or Mutual Fund Name +

+ +stocks.last
+Last Price +

+ +stocks.high
+Highest trade today +

+ +stocks.low
+Lowest trade today +

+ +stocks.date
+Last Trade Date (MM/DD/YY format) +

+ +stocks.time
+Last Trade Time +

+ +stocks.net
+Net Change +

+ +stocks.net.isDown
+Net Change is negative +

+ +stocks.net.isUp
+Net Change is positive +

+ +stocks.net.noChange
+Net Change is zero +

+ +stocks.net.icon
+Icon associated with net change (up, down, even) +

+ +stocks.p_change
+Percent Change from previous day's close +

+ +stocks.volume
+Day's Volume +

+ +stocks.volume.millions
+Day's Volume In Millions +

+ +stocks.avg_vol
+Average Daily Vol +

+ +stocks.bid
+Bid +

+ +stocks.ask
+Ask +

+ +stocks.close
+Previous Close +

+ +stocks.open
+Today's Open +

+ +stocks.day_range
+Day's Range +

+ +stocks.year_range
+52-Week Range +

+ +stocks.year_high
+52-Week High +

+ +stocks.year_low
+52-Week Low +

+ +stocks.eps
+Earnings per Share +

+ +stocks.pe
+P/E Ratio +

+ +stocks.div_date
+Dividend Pay Date +

+ +stocks.div
+Dividend per Share +

+ +stocks.div_yield
+Dividend Yield +

+ +stocks.cap
+Market Capitalization +

+ +stocks.ex_div
+Ex-Dividend Date. +

+ +stocks.nav
+Net Asset Value +

+ +stocks.yield
+Yield (usually 30 day avg) +

+ +stocks.exchange
+The exchange the information was obtained from. +

+ +stocks.success
+Did the stock successfully return information? (true/false) +

+ +stocks.errormsg
+If success is false, this field may contain the reason why. +

+ +stocks.method
+The module (as could be passed to fetch) which found this information. +

+ |, + lastUpdated => 1119066250 + }, + +}; + +1; \ No newline at end of file diff --git a/www/extras/assets/small/stockData.gif b/www/extras/assets/small/stockData.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfca8b519df05d7712193b3d4f8e5ed63a88966f GIT binary patch literal 597 zcmZ?wbhEHb6krfwc$Uxb;PL+lkN)4i|NqwA|MwsLzkTojqbL6#KKXzD;s5^Ai+vV( zK7RWD-lPASa-u;y<5xC!PDso2UFZ{2>rm$Fl2hs(P-+&tE&2MLAI|l9K1>CE-TjlWChgLr`+xubzk2aiLx}(SD<^sr({if?V~*(6AY8&1mRVPRlrGvL-WidIlx&>E5)+>*o-WNxmNzN%@qpsO55_92Ndp#XXQ)?9H-?erAq7-?S1nT%K6x%iwc z{LKdEQG2OkxS?SMc8ABXIa3JBz4wL11+-+ld~5perjD3c4-vkUtc} J#l^y44FF0~4gLTC literal 0 HcmV?d00001 diff --git a/www/extras/assets/small/weatherData.GIF b/www/extras/assets/small/weatherData.GIF new file mode 100644 index 0000000000000000000000000000000000000000..0913eab3b3a3cd6900fb6d0e2731a9418c3af22e GIT binary patch literal 960 zcmb`G&r6hX5XQ$W@)GSSBq9$*2zhEQMo3`LPr5~71);Ftiw6%y7dtE{UJOM#)aXHi zijpWg7=;Kc{W!!N@>D{HB7y?RE>e4%KJ)$!4J_}@&df8<^US-a&YbK$I#iRI{E>`C z^=VX(23aGc*=z>CheY+@$v1-E{$Hp_5it?ZO=PN~Mbt!HG_qJ!N|9nxTuNlGsaO#+ zF&B#*brmn-Chp?NR6-?+gh@EG6F8y4Vwmp8JsCySR9!W4Emo~W8f=9%V339-w5YKdY@oqnI8spNgq7l@MCxNLnOQL}7AY4N z6y1t@@jyMK=q+I-yae*_1DZ@@2l^p_LRbR^X;{(<4;F(BG+2?&Wtp6Cvq&S+$67LX z^T1c+!h)iOTi_#3V*tEp$7s}IC4NAYY3zU#f>8)-z#z>ewBW&Fuz`*|QFc=%CxVM% zB>GrO=G9A*^x)66edzdI&V_(NZ<;Z*MTcx9-3Iy zlW%kW7o_8Xbam|eD_yJO+oxJ17dP6vC$>Fq9eDBN)AI1!M|~f9YgeDwH~S~A@0{uE zpW6KV>RfBOQ>S;>`n7@4@5^(WU)D$V%&xy*=o#3nKV}D4=1?@ch~)Q8;gBU2dBQaAFf@vJht|7c%s!@IDXS_ aE!7X*`L+7Y=g!YRTU2ESa$Nm9+p{*$Z literal 0 HcmV?d00001 diff --git a/www/extras/assets/stockData.gif b/www/extras/assets/stockData.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c32ab4758ffed173fdbe560fcffe2b623902c26 GIT binary patch literal 1711 zcmV;g22lA&Nk%w1VK4wN0QdF)6RIE-sv+j;{}!tw-r@gr&3xtP|7ZaK>h1qz3j_Q7 z|7QgO-{Sx5@BicG|Ka8T8muQew?!STDj2LJ=j;E~)zx7W1zFob^&VS_R{$$5& zQo&r`2Aw*X~}Uxx=hp7^xfkBKv59b*w{K?6WZF^bwTBnV9tS^ctZcv$m#t zoM%xn3bC}C(%JKLy>xYNOOKCqBd{+PrXbtj|I_c)iHUA&VMfTy=UO%wt+2xF?d{Rh z&=sm8Ze2UR+S*vNTY%Arp4_8}(Uu;aA=usjvbM{borLxF|6v~twAsxqcNgH}|MvI) zht!Q$CkSLrFQ(n9LQfB`w8YKM%05^UwYk%%t+{!+i{sqqVip?a?T)G~(v`caCC_z>MJZ;`8BhO?$DgLP zkk^*X?a!yxz+*!spxLC@-TmO;;AluG+2+;G*U8t};@IB*-}K?OyUTsbgCwsr-s;;- zfiu|J(fs}UkkF*r>euS)^)GiAb8lB&zi^_XhTY-(Y^P;kT`gr&HO0rkHJUh2nM2#& z?(XpWV?QBMLKHTKDA?Nf7^@_Z&7#A|zo*N;x!KXWy|Lrv|CyeluHv#LiyZv^{K?zr z%gogD`}L2|p`WOstg*kr#Mfz7Gr`2VGI1B(;Q#;s{{R3000000000000000000000 z0000000000A^8LW008y?EC2ui05AYB000R80PP7JNU)&6g9sBUT*$DY!-o&UNP|d` zAuc69q*UB!@X!Pj7hG^0X%EQ;Gy$SeQ8=ic%a<@?%ADy^R{!N6cknrP870fYkuha3X{ zD5)gFrB9Lz*JLOF1TFvoAVuP3Xk;%GD{=n z(W6P1Hhmg(YSpU^@??0SXMvAuOBM_NBWn=1?(_AU?47X40-r9N-YkHZ9QDCg8CVRl zK&OWNhIni+06hnkBiMfm-4Ve6g>X}W76{q{%oqn{@d5c7( zAUdFsjSsIlB>)8iKrw&~2}q(1Rvv`ufdOR|q#}A%K%fH*Z$JW*C;C}n4G~Syq+CV0 zK#+zLP+S5AL3j-C%mH8=Xx|odJTXB8cF04JfGS*2L4<2SU`Yb0Opro19NLqG1W6pg z!%7Gi5Wpe{h!X<`$*>_15+wfrQGpi-8Zki-3DEHgFDz{Ei$*Vek-!c&RJ4LjWW-cO z0Ei^e$O)N10K+7SG;s`&U0p~@)a z3^4*F@n}GuR8_U$K$!#`>rx#!tP0CFE>!^l2o}JBTs`AhQ2;fLEOEd&Zs^8sL4?GR zh6EgxVvj6Nkg$LmH9%<3GAsb$N(5p^Y6?lUa4;G;5~L8z9RV<`NE`$a5&;0Ap5Y5g z>ZCA0X-@zU!xj;kOl(2T+*-&8a%eOXIuZo%!~tg5F~AXX&|tyO1|1Pd0(}%aQacd@ zu*3qpR1i$pSS;{^+XWqrg2)9m(8^Igs}P-l4}5UJgd+ghus|XY$3%t-ZIFT<0~@a+ z!51Tpa0?MV^dJK^2N=RgFGU)eF7zg>d|Qd^l}TC05lNO@YWeQ@zJJ4>bKdiNpZ9s5&-3|wp5N=@=Dc!MkOi_p zQ%FRz;*+d+Btw=g;>L{|9De7BD<1HKZxHa?{}&h`f)GWBiA|7Uj4(l%BFqrxqDU|z z1QCh|LxhW7iV-D`6?nj6zy@f*;=(ymh8%)X%7u}j57t7)7-bxM1-ZZiij*_T z!AEc!3;ROQ)?v6^3D3zr1(~Se{JXc69sss+MAB&9n;!^`}^x%r5+*+^)f)>49p>y%$Z@!8+fD zbTetk-mxdLL>JZCr@@m*U21c8(52*4ufoU$mS#b+i2joH!h%=5iCQ$gur>B+SAIl8 zW9)~Q@yOn4-_9d#s*eY*E%36L8=spnc=wLa)!uV*-H59CbhGNkJ^jr$YoE4|4N3KH zhG=?UbJ6`s&)}562ySEkv$gF%13&!c=ihDM5I$AdvPa4C+MD6&v60XK)1`IO<0l5S zz1A))TN3oFD8K)Z@&#wr4ej$zx=E5Wk8Jd8w~%JWC42g2ey`iD9=yM!r%ZpdQqlZC zBb`TeEbd*4YiW9fN{fG(*9P@WzuNe3eoZ?&=Xpk!p3=-GSyrQQ>T3;d@6?HqNsLbJ zm+9bu$qa1!`9eby&HZz4pkJES=ew{dMb5#liKnW!ZsR zNheDRl7BQdDz0*C(~^F$FeKYhhYU)KLLAnIW^cNb7bG#%H_7^PLZ_Y;A2w79r%}OY z0>T`vy&fEt%^x1FOf}|pESOs>dAnQ2%$z1WDZoe%&-RUswGJdi-b-z1 zH3*by&E^bSozWU8tywbFTb6E4R_@Mwsaal{vwZU1`8K-)e#=s}KAL#!^@+9mo$D?! z-Mg(8H!1gePMb^J16a(TYTjzw-;Ou@u_6yfTzTH~V_%M%}EiY-y>AyC2hFb7S4r-6=(We_WB|Ek0i9oUrFs z&en;(b=!O|+%xU8D&1ng>6K@ZwWibM91r`BQ<*1*ybKd3H12erkzb!w=}CJ3{C>{H StglSsH@;uvW1yji?EV8@87syB literal 0 HcmV?d00001 diff --git a/www/extras/wobject/Dashboard/draggable.css b/www/extras/wobject/Dashboard/draggable.css new file mode 100644 index 000000000..abca45db8 --- /dev/null +++ b/www/extras/wobject/Dashboard/draggable.css @@ -0,0 +1,57 @@ +div.dragable:hover { + border: 1px dashed #aaaaaa; +} +.dragable{ + position: relative; + border: 1px dotted #cccccc; +} +div.dragTrigger{ + position: relative; + top:0px; + left:0px; + cursor: move; + width:100%; +} +.dragging{ + position: relative; + width: auto; + opacity:0.6; + -moz-opacity:0.6; + filter: alpha(opacity=60); + cursor: hand; + z-index: 2000; + border: 1px dotted #cccccc; +} +.draggedOverTop{ + position: relative; + border: 1px dotted #aaaaaa; + border-top: 8px #aaaaaa dotted; +} +.draggedOverBottom { + position: relative; + border: 1px dotted #aaaaaa; + border-bottom: 8px #aaaaaa dotted; +} +.hidden{ + display: none; +} +.blank { + position: relative; + opacity:0.5; + -moz-opacity:0.5; + filter: alpha(opacity=50); + cursor: hand; + background-color: white; +} +.blankOver { + position: relative; + cursor: hand; + background-color: #eeeeee; +} +.empty { + position: relative; + padding: 0px; + margin: 3px; + width: 100%; + height: 250px; +} diff --git a/www/extras/wobject/Dashboard/draggable.js b/www/extras/wobject/Dashboard/draggable.js new file mode 100644 index 000000000..b8a94bdd2 --- /dev/null +++ b/www/extras/wobject/Dashboard/draggable.js @@ -0,0 +1,462 @@ +//Confugration +//sets the drag accruacy +//a value of 0 is most accurate. The number can be raised to improve performance. +var accuracy = 2; + +//list of the content item names. Could be searched for, but hard coded for performance +var draggableObjectList=new Array(); +var dragableList=new Array(); +//Internal Config (Do not Edit) + +//browser check +var dom=document.getElementById&&!document.all +var docElement = document.documentElement; +var pageURL = ""; +var dragging=false; +var z,x,y +var accuracyCount =0; +var startTD = null; +var endTD = null; +var topelement=dom? "HTML" : "BODY" +var currentDiv = null; +var clipboard = null; +var contra = ""; +var pageHeight=0; +var pageWidth=0; +var scrollJump=50; +var blankCount=1; + +//checks the key Events for copy and paste operations +//ctrlC ctrlV shiftP shiftY +function dragable_checkKeyEvent(e) { + e=dom? e : event; + + if (e.keyCode == 38 || e.keyCode == 40 || e.keyCode==37 || e.keyCode==39 || e.keyCode == 66 || e.keyCode == 65){ + contra+=e.keyCode; + if (contra.indexOf("38403840373937396665") != -1) { + alert("WebGUI was created by Plain Black Corporation"); + contra=""; + } + }else { + contra = ""; + } + + if (currentDiv == null) { + return; + } + + if ((e.keyCode == 67 && e.ctrlKey) || (e.keyCode==89 && e.shiftKey)) { + clipboard=currentDiv; + return; + }else if ((e.keyCode == 86 && e.ctrlKey) || (e.keyCode==80 && e.shiftKey)) { + if (clipboard != currentDiv && !dragable_isBlank(clipboard)) { + dragable_moveContent(clipboard,currentDiv); + } + } + +} + +//goes up the parent tree until class is found. If not found, returns null +function dragable_getObjectByClass(target,clazz) { + while (target.tagName!=topelement&&target.className!=clazz){ + target=dom? target.parentNode : target.parentElement + } + + if (target.className==clazz){ + return target; + }else { + return null; + } + +} + +//checks to see if the scroll bars need to be adjusted +function dragable_adjustScrollBars(e) { + + scrY=0; + scrX=0; + + if (e.clientY > docElement.clientHeight-scrollJump) { + if (e.clientY + docElement.scrollTop < pageHeight - (scrollJump + 60)) { + scrY=scrollJump; + window.scroll(docElement.scrollLeft,docElement.scrollTop + scrY); + y-=scrY; + } + }else if (e.clientY < scrollJump) { + if (docElement.scrollTop < scrollJump) { + scrY = docElement.scrollTop; + }else { + scrY=scrollJump; + } + window.scroll(docElement.scrollLeft,docElement.scrollTop - scrY); + y+=scrY; + } + + + if (e.clientX > docElement.clientWidth-scrollJump) { + if (e.clientX + docElement.scrollLeft < pageWidth - (scrollJump + 60)) { + scrX=scrollJump; + window.scroll(docElement.scrollLeft + scrX,docElement.scrollTop); + x-=scrX; + } + }else if (e.clientX < scrollJump) { + if (docElement.scrollLeft < scrollJump) { + scrX = docElement.scrollLeft; + }else { + scrX=scrollJump; + } + window.scroll(docElement.scrollLeft - scrX,docElement.scrollTop); + x+=scrX; + } +} + + +//initialization routine, must be called on load. Sets up event handlers +function dragable_init(url) { + + docElement = document.documentElement; + + if (document.compatMode == "BackCompat") { + docElement = document.body; + } + + pageURL = url; + //window.scroll(10,500); + //set up event handlers + document.onmouseup=dragable_dragStop; + document.onkeydown=dragable_checkKeyEvent; + document.onmousemove=dragable_move; + + //fill the draggableObject list + obj = document.getElementById("position1"); + contentCount=2; + while (obj != null) { + tbody = dragable_getElementChildren(obj); + children = dragable_getElementChildren(tbody[0]); + + if (children.length == 0) { + //stick in a blank + dragable_appendBlankRow(tbody[0]); + }else { + for (i = 0; i< children.length;i++) { + draggableObjectList[draggableObjectList.length] = children[i]; + dragableList[dragableList.length]=document.getElementById(children[i].id + "_div"); + } + } + obj = document.getElementById("position" + contentCount); + contentCount++; + } + + for (i=0;ix1 && x < (x1 + td.offsetWidth)) { + if (y> y1 && y< (y1 + (td.offsetHeight/2))) { + returnArray[0] = td; + returnArray[1] = "top"; + return returnArray; + }else if (y> y1 && y< (y1 + td.offsetHeight)) { + returnArray[0] = td; + returnArray[1] = "bottom"; + return returnArray; + } + } + } + + return returnArray; +} + +//Called when a content item is dragged over +function dragable_dragOver(obj,position) { + + if (endTD == obj && endTDPos == position ) { + return; + } + + + if(endTD != null && endTD != obj) { + if (dragable_isBlank(endTD)) { + document.getElementById(endTD.id).className="blank"; + }else { + document.getElementById(endTD.id + "_div").className="dragable"; + } + } + + if (dragable_isBlank(obj)) { + divName = td.id; + }else { + divName = td.id + "_div"; + } + + if (dragable_isBlank(obj)) { + document.getElementById(divName).className="blankOver"; + endTDPos=null; + }else if (position == "top") { + endTDPos=position; + document.getElementById(divName).className="draggedOverTop"; + }else { + endTDPos=position; + document.getElementById(divName).className="draggedOverBottom"; + } + + endTD=obj; +} + +//called on mouse up, If an element is being dragged, this method does the right thing. +function dragable_dragStop(e) { + dragging=false; + if (z) { + + if (endTD !=null && startTD!=null) { + dragable_moveContent(startTD,endTD,endTDPos); + startTD=null; + + if (dragable_isBlank(endTD)) { + divName = endTD.id; + }else { + divName=endTD.id + "_div"; + document.getElementById(divName).className="dragable"; + // document.getElementById(divName).style.opacity = null; + // document.getElementById(divName).style.filter = null; + } + AjaxRequest.get( + { + 'url':pageURL + ,'method':'POST' + ,'map':dragable_getContentMap() + ,'func':'setContentPositions' + } + ); + } + + for(i=0;iv%wis^ bHk?~*%j70dbhTjPwmAxB4w>^Dm>8@9fOHle literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/bkn.jpg b/www/extras/wobject/WeatherData/bkn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9ae5b40087a8d7d7d43a57fb0a1b1d34b18bd92d GIT binary patch literal 1359 zcmb7;`!|#c9Eac6JMYYh@Xjz=W0ZH$amjs*Le^k3rL7^wL`6oq3^j)lTj>yTnH{;a zmCI&aBk2rDtsTlSX)Te0-KtKoqRs8@N z03da&I`{KnEDi%{fOs`@)B`|B0|Vh82>u^yKo}SxfLJ1mI5^_;4NR$wfCzpe$vfT5 z*^52;NeBYaC*@}y0H}We7z^Um&>T@i4Gj(Ov+qAjfKj3&s83}ercMD7s%bzQ0@Z~O z0(b(_blPg*o3Rre%=Zm$(Yf7)BNAP0qe?02wolx%o~b1rI+<)#-DTDvJI+19;n^P* zuP5s+_%`PDmayv_IPI4oUuq0K5hrw8q4~>o3XtfY5a&{Pa`)AW1fw;pKGD@YXCE!n zVrSg^DEqbL3{|jXJAHWKt2o&|Zy(lkMFYdfq*;;qB8)w7tc=nF)D5(4Tn}{=M>E(`Wmthh`xu`fNGPRSHiP93P&nfV>;oY7h{j3m6yco^6JH&iG z7Y}E-zklZ1%6NL5LgwO%=N4Aqj#eeCco`Ti{>%z)smfj$h#8iEIPFUw@k?dw1`-PX7HtX(pu#2w(g3QGoMz`8WxPgvldAimqW&1ZZpBH#g?-kui z;zqF!Yo)uk`sSR~p|1QIrbD;ysQT?qwo`U!F3)AG$o-EN1!vaL=hmWCO-P8JL?$?8 zhkZ~nU#>0pWQWs|0J;#z#oa%Q{ICEWT-F=~L96inoct@T^lDsRLPDD%Y!>Xi*V zgYYG$<&HsmOx&S7a%yUm#RgYva$WQOcYTCjn$JUWZuUaG_Y2v@lVzD@1&K8=;u-`& z4C{|hjmE@Ig=DVrKTgx}ANYTB>gax|CHBwdVa+5P`VZBnY5#V z5fr{;=Wkl}{9fc3-*?47TL1fld`X?D==9T8e|h_vO2M>GwJ=t0m=IBNM`+W*(Y^la z#-_z^p1eu$Xxy6<_sz{oNj#&rbmq8iZFAI+w8B4Oo7`gPklhTSD^OX>5x~XQ??+|q zL}w&9iHdPv=!4>l?%Nzne(G@1_Phe|?osmP#zRp-N{1k38&1||!=kZ$*_~&Rumm}4 z<>;}WmOQfN(Ul+58;Vmkm-MF1WnI{E^)K+iDP{lw literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/blizzard.jpg b/www/extras/wobject/WeatherData/blizzard.jpg new file mode 100644 index 0000000000000000000000000000000000000000..160dd67bc85cf005d2474783ddbf57507f891828 GIT binary patch literal 1105 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxU}j=rWn^OqN{WNLfh@(qz{te> z{}uxeGb00&0J8v)|NFMmy_-Fe2W!f?TAP*~KX10@?hTKpU2-CyG-6)cvJ_W#C0omH z*`u;qIjwukb&cFzpSo}-SH|`5FH6_+2R$|v%S?LbIdgK7a$5X)qn|zXSG!-we7D&< z_h+$Hna9T0+@h~T9xvS}@NSxaVb~_^n@Sx17rpB0fwqeXqI!&h!2xU`Ffi;HL7tZq zWMF0h`V$E-3Ni^O8i18Cfs}pd6*yY#zvQYtP`NVDH;gPy4D1N?VC9AiO3X&a4vv9| zQ2(&mGkp)vnpACbc9xov#;d9}8#iB*l_qOfXr4d$GqW}`?TmJfs36oRfP3 zBlYfZt_tXA+Rr*IBl{*}bzZq9bNGskS8spJJ^ncBYZhY4N0Ac8i~VzTzLJ{4TfkXJ5#R!g`>s;MfN`jDbO5P2u0Bjfc{f+4D;m z105_W2ud#?88{GR6i_e(I~5eN0xtyxLwD^7UjbAs4GCbl-+)>e1qBoh10BK2K_M(~ zRMWewc>06+P5NxrMtqsPmq9_T016gh0t7}6)EZE*fJ5bA_DkD%*4aPOI(T>y$6BcvG@O?sb`)C$DDnRn6>L{bxmho8A%km&XsD44M$n z#K(AT-GMb7x~G>v;<+1nI+-OP^u~d9SMv`CF4~L77fj3u`0~5sMZU|)xr_@~_I7bO q?{9u(9`ZwAx!TpA&v5h)0kOM~TD zAWdLh59Er0YCv2;NTr3gBwSe*5RgO#CE{Y`PBgO6Y}%Rj|9#$>cix%jeSY)kpXg@+ zi{Lbs%V+{fZ;GZ3<0R#d>f)MHt7eoLsWNGitKw?i7kg43Z z7kVXN27!it5DfSLo9joudK=wG>nMV`C0(^wn=hbdD~+c+IX$1~6d8|^b3fLIefH=9 z!FmnpY1;G;4(k^ay1$UTJ(>74jd6ZBdPkJ7lNA*3*8$UDW^75j6>eIC_E)$(#;yc; zPkxp=&h{N^TgGscA{m6tq|^+bg2=^epDvK|(% zYsAViIV-<Gn4yPPIB6_%jtc}{2|J{kd6~O(3(%dN3 z(4fFEWtX$2D*Yj`Hz0RH#GV~9J1+e!iRB85GL96@zr<#<`+}Jr2dmZl=MfhIu?z1g zHRdcO!{m*v9VCgWBkO_NtzRrYq)sLEeS{dlj;(a(S7oDLFBe4ImCn%4>j8h|`E!!6 zvw@<0yGL^O=3lOp`+DueHFR#n3~~$P`~UmzE>AaY&duC0DQDqK-jI$uwX2!kRfR(G ztZ-D!VgVz0ur~z1oX1M`4ry}ofulYUXBsx{v`E{slg|F-5L_2C7FmIpTc>*ZI@)K^ zFHJO4d{i*Ds#W>e5pPgc?bw2!a!miJu8>1n8VshbN*qXaG zAs(Oqk4)jsnFZlYm#v}LyWR#>lG@9vh#s~K;PIn2%-d=+34JLN7c4I58(jrNGS;1<(j z>Q&0e351ZK5?_w159*n}E~)M{Nw2>2@xoqu{twilTYM8&ycp^TvR&Uiwo}pNwxBw9 zjJ|fC66E(aQujFz+)OMBH!1@{mHuKSdG%Ds3H6DqNrZQPt*K5QQPi{8N4WBVok9CY z#UI;A&EH%+Zim0>$r(z?jcB3XFm46gQAg;{L+P^Mf0jhvGm2-GzPf473zq6IX)1e{ zfp_vPe)K)fu;S2o%A?}FI?l5YvjbE?yQD9m@SB`XE>j&#In@21i-VO@N*^kxe)4;l zsGXAerxU8MXJpU6zx2K=G4E&n#QW7Rz0e3Cd5?y_l_n=QE;M!Y`P~q(yPVnC-%xqA z9AdruzzAAbf4_5O$$BE^@!paCtJZXPck1K+wu+}HGS(^gfvZPm1XcGa$!~K^9Gf$ChJ4}ou*niyJ#d` GKm9)-OT7&M literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/br.jpg b/www/extras/wobject/WeatherData/br.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3e6b95a98e8caaa16096385809edea3d4471bebe GIT binary patch literal 1961 zcmbV}cU03!9>9Mg2`RLMpdj_6DY9@#Z^9x?P+?ICNEHx)U^ddEL_mQhK|tC9QZ!h9_7d;R8Z|L}*AkE3Jb6SUbm26KL4@$=H}tj(?MFFU*Jz5PQk5CHzS)*oj7RggmOOJFCJv zRQs3NpA$>?zs&v+`>z)b5C((zp9e+*<^TuVFM|a$zpCTlK8%~riDlD$-_qUO@;U@F zN*$kF$o?hdgrdgFE*=ndqw2j1N7T2S%9s`m+$H$OmOm*}dg1&)GUpv(=Z$QfUa&2T zl+Om(o0_QI#JMXqz+Z>y&^eP@-^?l7zsBeC?D+oU_J9Ztop;BD5=)m`EE zGf_H^$`_2&8lP0Se0MgKuG18MyZst#pr;xc{8%`nS6*(cG}YVc{9=7eSjwUU(l%4d zgaMQCf_iK?u8P;NBkeyDB23Z)aW&6B{HCLPxBg9k(s0n3R?GoAe&Vk&0 zCyy!;W7%ACJU-Bs{>fS@^EKy{HhZmU)mo3_zu8k)wp^9ChViKG9gxJ;jJsRTz8hbu z$8*Gk6cEzp!UG2R(lm?2&!pYmlPzJ;T61>p z@qi=^y@D^~RzE_>ypo88hR^1LwGlmOy5PZ@mgA(Ui!JMNw<1epds#nu7kfQuYV_)3 zslSmK#fwH#QcA`9F8Q4tLvJ?OBPw+cMrPL3rUq_dnUpiPynl_1R0j3I%2%&`qdS#l zdj{7pziimRzW3zf?8}s@%F^1AYYjo)%t{t1Wq^T%(Dz?0V6q)Y$~JhwTzlKh@=2P8 zJi?cFr4SQ#ET2e}f3iiX5VPMLz_8t3cX3rSx?{-M3lqCjmZl=9MPv$jFfrFw%81e7 zkV`+mu{h@&R32Tn#8TEePFb-APgxZxm?VK>7J+MwdWofhhs<)U{-^C}VeW@GwZXOC z$~tI$^R#KXcG)z+!SM6RYE&aW>_Ss8vCVWXtodPAzcUw4Px(v?+fQT1XLH^1 zhixbGVyL}|EiZWh^1zPLy_0`*2`}3bc)_3JLZU4<(9ME>+zWQ2yEaDjdz4L1rj2=> zfZEDj9Ilk1W{4CzcbjxRI@%aO4K{w>(mP)py@(|3CTUKu%{okVH4{>3dQ)w)U3tPx zH>$!5r4`H?hstT5ygZ4kX?1$L@O8cARByvi>F_BYkRJY83@YkM&8zac^!(Gp!2Jk! zLp=A?(td1JQN+&A>e#}0Pq`bKf;-H8d7bbW>%%#*&EKv|nAXDXBL`FG&NRH5iiS~vu#B&Ht#Nd&MFkJ& z@$q%MvtFqUD~?iNu`;^lP94E|JhRpr^`3*A?pxn^tDU}OW9YNF$Zk&>ku)>N7B3?F zof|UPte_u9sf^Axsbso)WIWt9TgPgkrH_FXGgTQ%6F)l!{wk-N9xr~C9p6J+O|Gl3 z3<-%ZgA(n2W0HOM>iP`duLawCOW7|k##YS^nW%IJ9DJ!VUUIf_zarK)NOU&K%r@Nf zInC%eflC7TToGo H;Z6J#1Pz83 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/cloudy.jpg b/www/extras/wobject/WeatherData/cloudy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6830bb62d5e1483566296aec97d0ad24c345cc84 GIT binary patch literal 1454 zcmex=>ukC3pCfH06P05XITq?4J21E^7eo0A(TN+S4wfI*Oh z!HU70nNf*>Nsy6Qkn#T!26+YsMpmF}K@NrjMkZz!RyKAHPA+bsf~^7!OhCJtSeRK^ zSy+IoYk~3%EP|{;iiVDC!hwnGN`)dujT0AgC_8ODC>nI}gNkudQ4=SZn7D+bl&YG# zhNhN@shPQjrIoXbtDC!rr&n-DXjpheWK?oWYFc_mW>#@YX<2ziWmR)aYg>CqXV;|3 zQ>IRvK4a#rMT?g#UABD1%2k^-Z`rzS`;MKv4jn#n^w{weCr@3veC6u3>o;!Rdidz^ zlc&#~zj*oTM-f49#DHKz}i@0E3hrWKS#c@69{;yl(wme1fGL-^|! z0}nGJF!GoM8SEK;Z+etD?cub$DGA4u5vU6mSC0JEj6TA&iSRQ!ZBlXbKeD}_&w=Qq6l=z#y$b8yUt(*%xuDzQu z^Kp_<^=H@Qmu0(d#Ta|1Ki7IvnR~4E#j2XcPi^CFy?v5->%f|c$2>}n8Uh|S_I+)y zT%9eJuX4F;re_T(yHc|JmiIVN+nsZEFO}6i9-8MbRS*wLP@7|3s>pUV( zW^a64)!(aHZmr5^IOkevfA=l#6AyOISmg1*@SK6a=!J@I*AH9&?M-lsiv-#u-On6KNx^7YsC7@>^)m2$n+^&&wN`i==55uVf2+|_jYNLAeYVuR|W zhX;e6d^z#O^tp5JzBaSgRF(AJJ696d=lQ)oy76W7v1!fU_VPUr`Y5|a)wlOx0-OB2 z{|r&ueOuHdr+F4RvRl636_q;^^ZZiyudD0k=BQUrZIC!&u}(bhV@P<{3+7$szH2Y- zIQ?GwaBcCE)%H3JL3gB<7q5#p49uTDd#B|ZWyiILT_SeRt2frR{B-ghTao7VeJYpz zrhl`Zars<~)}|GA>h`2id# zUXj_ysOkGec6AAS%kq9K7k7EuchQ+kUlrcICA+rMLYZxL?W5{$h3Th@9)&sapD8@Q zHFnvJjENHqKHb{wuJoX}iC6So)~qwr&5gYGzn8fft0jA;^5VmM8 z=Y?68O?lcMeDZzFgxq)eCX+54-+5*6Ha87U^?lhguYTWcduKdr_3F)hjJDZ|ocFJM zU3cQB%=YwPxoyG>rx-+|!>*k@#c{Z4^<~j^Max%NGV_C@G?vJmT{zu*Q{D?#k(&pO Ldub@j|Gx4m!YYUT{A;SmP5)`G*c3{Lr5a- zWSO!v)zwW)?_kG@Tp7TD>bH1PV-5A_>14vntEJy$Z z0s+j03)pxKn2NHWfDa0C(oha(X%7y^YriireApwK8Wv?vh` z5e*P^3AdQA>s!fxIyRaBX)(Y6z=M$808||cIR)j3O#L!o82 z$;m6I?NQ&mPeWHvAAjhuf$6d1Br|gh%aaa{PR_r&xO#Yco%8nb^$QNU5E>SKG2(Lk zm8%JfNy*Hcx6*HC+{w(!%fDanpzvW)ad|~0`^nR)>YC=3*0%NzZf93-U;n@>-r&&i z7=L_X^6k{SX~F!$;?l?EPb;fyA}$C3{&@56VE^Ef7IHyhFc5|maY3MA!T_aV@Lf2B zjENoc3~kG9?O3s`M;W!a z_<5i-a0Hlt{rb`U`b^EYCXhd+OD_wzX4~l7lTx;DLtbi6?sJjGpt|E$-GkKkekkrGZydT zGS$>W`;r${)T$b5>)4?ZOryE%xXLdcCHX@oRNFG^lHeS^8x`5$|3bGkder86VU0{d zx8kOuc3L0N&?(%{t>z<9!boXhu#_(;QL+tx;5chzG9}b3X>x39uV7B$_92=AJoE5b(=O{ZCWpy%S)WYe*wYOZCPUJa%Dan( zhbbfV^>yVMwL$HuL(k2E{QDwlW0ZufXF3#LS#MJHx$gCw5cf1Xsyzn1s_xMDpuC?I zX!l3FJqF$|-w}-+Y3WOG!q@Sm9E)dUKe*#kEmR-x?;?kiOgff|6)33$V&3Se=4~x) zb9sqW+G9p)!WZl$jU`xqY~_~$A0NRrYQ`88s}7w1?V>lmUVrTpFaHE`F8yO`rBM>E zF4!aBjKT47^JLrs!rTivUFUe;XMsT;S=1NX_jM8>OS(>y;%B4E)>=x!S+*}VofgP< zCIJr(8s%_!3tv+q?}Xfz5pvn;Q6t7jH#N>jrBwQR zRUza%cgA763o|SY@7eD2@$(DIxEfF}q~AK_!&RBF_iHfdNlR!fXWe`HnLZ}{5;4wu zFQpy9+qu?O-%SW;WpFrc^iMn|L-WM;Tyyzo3zmJhd}-ox(MQ805-U{yc}B2Y@C|35 z_GtE?U*l%B_$AMq)=9&WfeZRdz2J!Q9ZXkv3?;7H<}@qicl3>@VkJrkFU$PN0CO#* z&L@*RWoS%LM89(oR6h!kOvm2Uo2{7c?cCHH&*3;JZNf}O@0>rzgv0QOFWkE=1&Ug%n?J|;wE5<3KAUkhX5)9=(mEifn5`*{w&s(3s0S@CsO`o!r% Wq74QkC>lyfrdevt1*^tv4E+VgOzl_z literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/cold.jpg b/www/extras/wobject/WeatherData/cold.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb44d0942cd0ea1f5b4a2f35b1479a6255ee73d5 GIT binary patch literal 1579 zcmb7;e>~H99LGQ3efKL{&HUPCBTP7rGc4--oSKj;E9O_f%#VwZM5#k4iCLD|r7jBP zX9y`9B`p1VBzAWsBFaViUEv`+-9LBt=RN;@zF*JBThXH!1j?=)7Y=|{U_cB26n(%6 zU{EMD3W-6Z(O3)yi&Mejl$3B91m)E#ni^D1iUx&D(=pPcX&Y#hDReV^1LO53rY2N9 za~6}qGGdr8zC|Dm7K>YjQ^(=d8Cn!A#{Wif9}ux%6R?6IJ%AuWFcDI;0V)6x3WC5t zAOVa*V-VjYOBo;_7)Bsb2qfn38wdddBoU>ei)O0oIeK8|`=gT7TQtnsHEQcDEV-h> zp_LhBr3e3~2}1}ZK&>ckB0wMz|CSH}5LI+xrlW_d;w8Yt(8_Nx5!izlu)TJ$0yGXq z1_W_yN%%fT|7yd&bH2<*KDV(ue8RHd(M5z57#Od@EGBkaKfG6Y;$V!oWx3?Zm4Ydg z4=_dUcP>}`u)~b$|HP#9lkS_en;J^vXwsfNWPovGhstLqw5y= zX#cB4eq`S)k5ti=`q=917}cO2Z)M)De?E>HskEJbZ{vu^?LPwE5g8Fr&*+5E>%C%B z31dgm_+#5zIzw!f36nb;@duV{8C3?Ys`td!cFXm#z{rf-oBqh?q98?oc+yo;U%QTf z;l~fRjP_w^fr+1ULV`&wV@;uLt8LL?-;4=}wTv*_Rcfnyqgd?D&duhCd1*HT1xv4TZQwa2YnmWFv^6}eqUDf5SoyTx z27YW-R>I&Y>+q@#x+E=+^Ioy*Np9~4dr}yxTgf*eHcgP9Aa5VYSuFa(Fx}@BE@`_- zGOV%dKUuKWsp+mX?~S+HMcQ44?Sg%TJ1M+-)>*G6*^0beI6hxeHo(ONRm2z`tg000 z2>t4&J!8%1dq?ovn0Gm=(E|4_X;vE+8Atx|s~Y8NL{_guTbhK{E?c{2S>bxxKQ{jZsRekw_ z48T1~o_m)Wr`PRx8C+14okZVkX8oKV>pa3OyKsOmat>Z??-@EZrh3t|((snZja^#Z zY&~nx*_QMi>6tKGIq5!P;TwZAe?Xsl=bZji!|dzOWN0z{(r=a~x<|%&n!B^2E%#L? znRABbu5H?kl1dw3<;~S^ZM?hdT}kM)mz2L4ol>#bCc=qQ_9(bYNQp)^CgLi?uZX-?d}F(%$z8Wj=LBVZ4H zA*(%aqrAQ3{6gxpXZuV>>@3qpOtHVL)R>v{nbMyx8qdUeZ?O_b72nKz))*#{q)l`d zjPNrb+VHhzjK(AK8swEvd_q5qJ^Y!G=z;zrYck$Kf)fbI+FOU!iAODOEg5%pxoCB6 z{>3Z6VIiCF0W2xy&qvGh&1i&a9|d?U39`5=HdfdcU9`9y99o($($MWDu8 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/cold1.jpg b/www/extras/wobject/WeatherData/cold1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..18fdb9ffa7ee199a17e6b67b04dbe706086fbd28 GIT binary patch literal 1522 zcmb7;dpOez7{`CJE7QrA&2_G`T(-p|R5BcQ$+EeZmP~9etx_%#CnYVS2vIUJ#%f6( zb#&F1gxs&GgUI3Nkz1$K&YVBaIscx|U+?>TzVG*WWrMQ!fQpBUy9)r4Lj(~4KsEw6 z0dOc328F<3Fc<<3M>U6yHRBWS`(|Kse#o{*VZ#O(AFX7sB0LS;|Zo_Br-|M zfMR7qv@#}=i0dUFI0AuGL}HLg3=yY+BmQq>PXH7G*bZz1gA4!#6bOt0$yxwy002Sd z&jSAd1r)##7#xI<+pQ{q0!RU>0D(YY;J*_fxkLd_w7vywlYs+`X-G-Sg{xw2S~?!# zrgw>-F37Jm*89N!sa#(aAW*r|L&+yO|62Ku(g!;jSU}J;rfe8cUeBVyD8L@DS7Zpw z4Sk@jP_-{5%5B0oPD$s6WVdDtrw8qNb?_yU{d5@KML-WXU zK|sov72Y0D2mfQ#zWu?cYZPh69}l3yx9HAv+s74YIT-dlv+qYxOK;lr;D)lN+ma)u zql#%nt}){hG9);ySxh}dFKQ9Zr;z*cCf;Fgrw^qe`o~y~F7xpd?4#0Y zKoDj~CB?bs|4QZI_I%<5+s>9_awt_E1?fsG(?*gW7Ahj!eUH0CNbbHzuaUZz>#4I@ zYIqcTqa!))j%4$$sRB`U=5ZrkpEK0%6DGqnVoq%&>0m{4EGOieO<6@QKS2dE+)o$@ zRj$rRvZZq+NwI-?rpfp<@DFh!pYX~kJ|dga**al#SA#W*qdWkDKnFI0vnG0=fD3k&H6oy5|Z8NVtGmAmg%8Q2L z;^O|wQt5{{PisH=lw0m=5qhD#Hj%1_9(#D*xm8j{VpO!33wpcmbxV|$2C{bq#@Mxs zykSdy+U5+FZ*QBnc@{ICbjobhbKx{?xpZsO620LVcdz}F!fao4N{ss;4;LMzLyHdH zx9~gmb$w=#1sa_XE<^$L12AwZxF;yllp5 zI;MNCpnO=RR#&T{HHGHU_+QwWy0Ih5XU~ypg@Us5@$tg+iIxnw29mutl zG^&3ku!L1JT^gYV*-fo_HrL!6ML*(4X3{V?Eks3PHFqh2+Bf2ZOm%2JFX`>-Edx(@ z0OBU=T_KmV_P!aopnjkhpSSHAbM=`TGnltlr0GT(yhx9zVmZzUW{eEViae15E@v$G z$bDP2@p~G?qKj63yFHAJ0I8itc=M-vfX{rnYeo7dzljx&2R|Uwx}CN1II+#*!rA0J zp@3UaQT0k+KsY=ZQTQN|alm8k(ZPwf5_aNM5n(j`{4J>DI7xvnR5Wd*)Q(|& z-0x2uO^G>mN8IyS=SKVX6J(&vv%0YE+e6dQd@3mk)X;%7S@>9VC}p=4GKXd@!~E#C z+~J>xGIu78tG2TtK~?;$9mYllH1=0+>Y{R6ATLW1&yIdn*q}(b>-_j!Pa97MEU2tq zg}0Y5r2OBy1xFXL!|zg#Xt5g59Tzr)Xzw3(hlKWz=!#4uc&@abGQ3H)qigQOPc!Ed zOb+AY$$xmnw2YQYuWtfax1Oie46ZZwdD7S#lPNs2Y&*y2b;^eR0=x`&DgXcg literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/cold2.jpg b/www/extras/wobject/WeatherData/cold2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2331f2cf1e3630bbd248c0e06f5698d96b0ef2d3 GIT binary patch literal 1319 zcmex=mvN>WTxLPkMDNk&dhPC`=IKt)YUTUSq4TFJ=NP{&k5M^^`A2qQZO2RA3TC^xsL zj;y4t4$0vE0R}-11}g@0W=16jCP7AKLB{__7-Se2n3$Lu85!V!m7Rf&k(q;q2`FnU zz`)4N#LCFV!paI!z{tcb$iTwNCZuR6%r0W&7?`M}T-YdT9JKMEiqphN3xS%X7#UDa z1gZyWV`BiyDGCCuV`5^2ng%qJk%>W(S&&7@QCP_^F!BE_1|DXhenFru_6)0TS{@SGRn?*-#wPOx+t%)wDzIdQkl(G0t&;>83sn{@@wk0%mx`$6_U6rU z&W8$@+C6eF+ZQP7-NGqk_Th}A$+|O=_F|{cYut%mTXy+FjDlB)dQ$QszuQtZkzeL| z$TDr2F@b&NqIE3Ob}7p9vqz=1pFQsW$2i7j`SEzAq79r%UW?yG->jTn%G&1qTDot2 z`(JnaV!t;hZ!Qz;xodQHQ()UYyVhw}ZnWq+DQMc)>%LI!Pq0|sw|allwKXOjoVp5Y z)?ZH+eCd6=?^TJOaa@?Ww5e!$`F8R1U-M#vS2L*i9aJb_kY;?N73^*KExRq%hjr_% z);lqp2PS$+p{%g&#_5j0?qqbo$7vH+ugIdJ~3_g8rN;J z5*Kh?iIL{~_IbH^X=F^M+x)2DZ(nCb9W1&W;hbVwUgg|szmU^f_^WkoubicuzD?jG zwY<&DUFW@aZrr`gbGsvt!R^!|YdR)4JQ1{u&h`Hzt{-zZQ76vEN_%InzSy0)8CTRj zZ%>SQKB2g4Q(DRPW9xK(A9fL&=l)&n>Pi0{o!=jy+s$?C(`BK<5&Je3@<+!ku(;ja zs?y1}A?9rQyPO+hjUUA;7S%Hy$&EWAlgs;MuBL`#;72nH;n)8evJOP;DEeS_cXKNz zqi57a&L&3bt8;x9ybIzf+%7to^RiL$pU`u$XZ{K(E#LBo_w||`)0s?5?s^6=On!Ob z*Ok?5IcLqnj57|slihveKZDP`z0&WEw|d(+p%{?Jqh)x9$L>K)6P+XT7pRWN6+npSjp{;|-u8{buT=S>g!-KSXP?V{2$ zW%XCD<@sK$Y-f_5JLwpyCs*ic_uRjm6z0FTHCl0ZnfJPh_vGd0Jh&{cAJU+CGqEk| zp&3u&HyyQm*X}Cvnlye`sC*(|4?F+v!v@jTtX3kk!w|(WDvEatj^X0kml8n(V7x&7VZJ#LWeb!vdIV-~JI-8Jy%H-gV zvP_@jt4@`r9i85`ZQlFK4v}-C^J;BZ1@OFz&AU6{QONQz(~MphKKuH6OAU0dE&A$r zIITpd^~X}91b?+n%Yv4^?o@DCvw~@5qe4!tmPx8o`MoK}K8HJMS86FA$iBkD^&@}s z*Y&$TPEw!tv7kx))XE(XUh&Py_12oWv14`UceT~i<>zShgckTbFBRLladE*dDPEB; pQx|&1w0PWeoZI&&WPN=`Cp%M>gT1Z&SucYfatawsx{Uwd1OP&h{Gk8< literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/drizzle.jpg b/www/extras/wobject/WeatherData/drizzle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e00d1076c34a2be6a3bc06d8b73e0080aa54c8cf GIT binary patch literal 1873 zcmb7NJl9b-n@D9{(YaF+1c6ees^{cJ{#L0hWRQ z4)}l>00AFzm>~k7aOfdOI2;B?A<<|Q5`{twiwUEJM1@c&5v+))7zTsIpoPUH#4!?r z8gsY=bm)XYkpd$|2qh%w{+}GQ16U+r0O&zL1OSW$L9n2ME z1SL?37yt}{fT0i=437Bs1PBa)!mz*zxVV-HLV`lj_MzwFBo(OlkVj53syj^WeIp`k zRs>cV5CDe!?_K}`13+LXT%ajq0l_<9n4t3?4u_#w@e}zHS|$`9oFoCJO{G^Kj03_D zfrN!%0V7~%;UX^8o+y%cU0$hbaQ)BufybO7cb~NMh;-pfuJ4lMjh)?SP*{EcR*1*j zf!Hx;P4Y}_2-o7YKa;7OpQiLJ!7n}PytLmaLU?+%wBP{_H|XeQ0X}6Wu_$I7GfExz zWwd3cn$AGiNXMFtE-Z!~l`YOd=dfmHr157sw%*2*7Yz!h=1QA&RMyE*xvDOV{`NK3 zzSF?Jh~dwYn;RvGk25h{>t{NA<4EgVYn!M`t2|2-URw*1|K+#h$AmdDKv|B4~ z(RbL0S^i}NV#SGFQR>*QK<51U$4jc8ydF6|J!q_aFPAkng(ju&6^(*R*RE#p?#PP_ z@=L!7n+u1PJxm5GWtc(qRf*%~e96tIIV-40g?kPZ@m?Tz9*sGgi{1{gU_3 zrDu00OGsfWyY*#DUbv&f{{EQS0dA9J$~U9}QOR)7YkRqPR2|>49Zf4`<~<6Tvo4Tx zZhji%rtY!S`VlqfGx=;J?uM~C#juKW`KajbhonhhQ_X>;C)|^_*Xt`CzdpP3evhs5!b)MK^c*U` zk^BDQ1>V{N8Aqp{4iL(cLyEDHwjm!^_+Wro)BWzYe(Gn+@-v&==8LOVPJHcPTGZ9$5&b zSK~0VO=&Q)C_J8^>$M#mSv~QUZZWWGE;}dQnXO&L>Dtvy=hR)6aiiT{5z+PjST{90 z>qNzTzJ9;uub&q}ZL{>BYRT-#rG)nw`z7tx=p7S_Hlg|TEMIxme>0PQHJRX%hzaEk z=$(|ihnO9u?CX4+TrT>&Y<(;0)H*#jA!;kKEq-%*m_9X#c2#fqZmAwK9yk?*KaSxa&V;nzTCu2Yje`4@sZn zA2PGp#iSr!&U%Xf^9B>OZj4>{+J%u}@qW`ZsWltXz<-2eO%R~gLb04pJYUJSEDY^u7J}7VWHSmZ>82HWcGAW`4Bu0`i&u<(q&wm^*l|gzfnVS{fxbyAqZG#0{_a@wpbaic z)OotM_9Z7+L%gEOp62joL&EtdWmV-9S28#XgA1cBHoqt`jYPk~iPE+!dnh@tG^5S1 zjE#}TZ*8%oofAl>OygsB;hq_|5M%5<~mK~{w2)!Es*?jfshoQ(S%b=w(!F1@HAHax9^;rH;`DS7ypyHKR zh;#FJmghJ-*+<6LI(9;D`J<%)i#FcYT#-vud2ubHh<3Y&VcNZl$xa!KlgUg!5?)!f zT%YPRoIWGL_Xue^{bW*dj8!SoArccfeO1MU0pEs1&g&GhKK1`J5LD>uLBhR-6VGkM Tsp*GEsJ5={7pa@aAB_DC6Zj!0 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/du.jpg b/www/extras/wobject/WeatherData/du.jpg new file mode 100644 index 0000000000000000000000000000000000000000..81a636e22fce15ab82c8dcf23764b785764d0053 GIT binary patch literal 1779 zcmbV}do1OQNJ z+bswJe@Zb4rlbs4cv4X$)M)?^5DJCBpbEb*MRvU69e`n!uttX*lr^cJ!1rF*VU>_s zgupr0v}<`iUBnaV;fY9;_D&sLy?w^}O-#*5*6)yQY$;Ahon2hr+&xa7^7ipP?MM4G zAn@F0p9h`47!es29rIP}l+%I zxE-Bck9gfZj|T>y4LuhO3q>!*lT)vLo|eqaN|%;@S$Vsp9l95)5I)J8ce@RI}3WwPkj3SU0CmTzN=YWMov;wI))Eh6n}A)MjpO z^`z)t56le+GR^ZvxkOeHjdo?ye^*1Z`@|Ypk3x8<5A$Hpm-0p-4 zESt$;efYXBuvlk$I^S%#eRq=JXsw~Ci{867Cq)hOp46n6kXM&g(;KEYi)j4}jZbqn zgMD?sCN+;sqP|AQbVvgqmT%r#r8zf!JbGs=XHWxEc%NYqE67^wn@ulKyYNd!?KrI} zbM}KU?YF~aNL3dVQy@Wt;8`zNR5<_YInr`O@TBRUfmP-ezN2|7Iwf1*pIpy=Vb&1j zot|H_M7UOb^|0-al32Pkp)g3S)Oi0}(cbRf~A9S$KIy{(_sZSSEnUh#U+U$DHP8mjMz|(9cZt(B$yZBgbFv$#|6JHh1ps){i zwQ4AJ=k35>*r=5QUB10h^<;FE(;2spT`E~~PCd9>vK_g%;6!{-m9|!V()+asj@L83 zn!gx#M2auO66yr4Nq7<6&+4kaosUbFJws$&DE3U*Z8XH`E{P}(^JMSCn;6U9elk!sP^s$|OU96TkVfB00;yxdAC&moCeiQbh4cM=< f@gQo;F?D%kAN@AAS))wPqe7W#92FVa1 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/fair.png b/www/extras/wobject/WeatherData/fair.png new file mode 100644 index 0000000000000000000000000000000000000000..5841603f155c96224c686c1f6cf91b99b43b4692 GIT binary patch literal 1330 zcmWlYe@xX@6vvBZ0}&k(bpD!CaS`^96g6A@HSHkqo`Bfk^i^eSU*@txljM3I#%TH*}%Ifz`pNAXtYpb|~y>)YWW@T{$`Dp6~s9@5%k+<{nE+ zO`H-sI}|~XDXye=!s+ihwIXDqvqqgpYn>Ln*OihGd~?#Q$&t(RqYlS8Xwse}4}&0+ zBgQMJ=WgMD2r>~#OHNO)ZTpoCE!&2+ZCOrQ&IVeR>F6iW{#&sv*>H$Mtttqi384X< z31RG!VUM2CoiWIpCe)z)3<~xbYnUUp$!Vsonzmt>s%iBP-|4&er)}f`(;7Ce7`g!m z%k6&efbN6=3`^4u#jv{iMl@X?{IyHh4Cl&j&CoPm(==JP>@Gsp^vn7KNw-AZQdPZ6 zbwU#yt2@MQUky~Pt)pK9phB}MG#I$`JEubcG+wiK%@N>wtD*p{1*kGGI1N^}4+BM2 z6qQq<+}zouG_xvvF3)S1Yb#rNA2fWxwg17WP>})c9FW2O_J{RygCqk6KpH?%2C}4_ ztkre`v$dw00#K3^Ns>efkd7n zXL*)od4^eBaSM?QniVKk*t?Ho7(VRe9V$;mL<13Zj;3jb+rgCO<}#jrm588|3{TS> zMUOjq6t#)w30fc=La_*^x@hi=0zgtsqPJ|1ha@xDcXl_pDGp%)NisOa;S}p3y#&d; zN!Q~fhm&k}DnSqoLC_e(cY@+$~?=^RJEUTvEPlaqRR(+4DoT`PU`Sttly~!pm1J-yFZx z)pOo8y=KD3&AnM)yq!6a{?m~0)?WXzv0ol1TkM__)?apA^va&h6ZZ>dAFs?CEtq># z-_hDTCv4!~GfyF~*7$rdMUhwTr$#H(pYwxfe_nJn0~Yy5`wFHOr<~1H2FD)Nm4jU; z$QW&Aa4+`b=7|DhFSQ$X6dd|qZQjjZ|ABh zWg9As>+l2rd^>dLMdc!Peae7X+Maticm1<38|Q=uTMds})2e#vqXQS7Py6n1X~^P? zs{2{Kr~ZhlCESu#+cSC(ef;ue8M`|5$Hx8nH@BSfE}YOk+F4SNET!aFu{+b5KRxz|4hl|#uV4YT8$oSAXip1{SYX%TG~1$Whhw8(+eH`3$8 zNHDOhBQE%(!NSwmGfKLHKeR6NX4PIf8-27W_4O^DsSkI~X&Sq>CW<9AC69X56kKb) YHnu1|sX05l+j&>Sm5>_WfM*{0A7F;fHvj+t literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/fdrizzle.jpg b/www/extras/wobject/WeatherData/fdrizzle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..289d68afdf1b93ebb0dcf6d690f568a383184850 GIT binary patch literal 1816 zcmb7x>a0Gv9lXZEH5X;5UMK{P-H zYU3j5t?HvnZcL%7F(bS@=OYSIQfs zz#2~nT!46++bV1KLwJRk()hxrO10i!u4Vvl6 zn6<08d)!&AuN#R`yuvBNK>BcQV7GuT%15VmvrqZ8v^X#=9%`O*`9Nu`_y)I!N>j zoT*ydK^dTqI`+M>duN=3=#~6|&w#Sz*E*y@HW|CX(_P+lXnIej8O|4Rb)zZTVeX`pj6^ua-7^- zWwK{Uf-&DfedXhnr7UH}AlCb+VC%)h;JZ1`k(R>XelUCmxXqmLGD-I()L39zO1QoS zO$H9|l-AswqJERp{&D$!bv7+?N1T?! zJp+54ZvObxqX1KKZq8zew|mQXa|z`~_l7=liW;Te97yd&e!@0Kk*b)>t07lXB?VfM zt4}(wHof|s=+*8L&d6R2;4V5PyoxcMW{C@T0(DpGsa`t%zq)X?51WiBbd+^>E=#5h zlr{uoA7J0S{qQ7?XJtLBO?y~yfo+$TK1hdR9jv_ykTJX1=u0xIedxvfwGIt%Z)PGKU{6cL`_vO?h{p5 z?>IdDXU_FC#4qiatP_*i50mvf66h6%j#ZB+l@I>--M8*4^j3KRb?JrqB zt)iypmjs?cukJM;$X70on78sxy6)Y@>>|>zgdT48CV{@B-f-EA=UgOauA9$Mwrya>$z_W;** zE!&TGIVP3=K8y3Y7G(C;kv5!?kHkn=B+ZkzeVYHWYazx@)e5%T!cGj-jID%V?lkZa zbc6UVX6A-&&pl2yDI2n;`}4)jf==4`{msC=ESk=3A+51DcadXiFEu+v;zHQM**Jf?f{(cYn_I>3OOh(0dgd>HY zDjPE&%{$1`XJ#U6aCkT6;+-j>(+6vSF6xfNL_ z)1y|l+P!HlVfo6f)Ti#%HU%4(hM2mSED@Awz0=|u(sG~NY)6J2`7z(zX^#UkgrYdp({ss%9md-NPDB*|>)?O{nooZ8I`X`GG|L zHh0f@WN1(eOKnN4P4QxHUC-w7&Mnq(?iNa4oa_4X*~L`fsXJD$MRY-E@4d<)Ud6L* zjp0DN&-uoP#7w>@T$tuwkI3~ps^oXcS*bvfBNE6`-r@XShYBaKeaebt^N}=jjt7Gi5|DITFjux({u^1>{L_bxQ>-Wt|bH#b^8Ny!EtN zc#Nv7Xtp(`6?1Vm#3?Io<$D~!PfQh3Z_#bFr1%=8w%M|0YgG%=2P&h%qlPR_M^Fp8 zfC0n>+Si*5eawC`nuvVAsYR5Jj7Gajaa5lJ!K;Gc-yLyEPHe9V8O&9$V2X$gJ+yD1 z*_{n>S1;N9&G>R;dHKhcj%<++HkP4n?-n)kqIX5VsBA~ok4)5llX1zGuKbJ-d_v=u za2;DsaB3Fp-R6beP|Y@V*Jl1ICVE%V^HRbE_aV$;wba3shWi;{VC{-|K5S!N#W49W zKu~p0fL^VUyZgJTu%-sTmeQ{ter8Q&w9N{k3-R>LmN_~>=lL^R#4Xr_v+p$R&7!tw zo7Dm}p|9=nO_qy~bv?WYbIQ4IQ`xgH={xTsLt~8W4+`tI zj@qJIJ&{(IZF7n}dd!tR!pzk&`MIERFQ|bB;V){jf+u*ykHEc10!jLO}=8Nw`8LXdZTvDhdGbKJzk$2HqX-frk3jOqMK*Fz=#;od( zP|*(>j(j6#4BYI0i@15EQlkjU18f&_TorgPjl4#cQO6fDG~}Z4!)(7wj3l{+IE37w zL~+J0ic&h}oY!Dni|Br5i4L(VU9lGWB@xFDIw=Q&X`j=d5GCu$D~o#+eDA69)^0?B zYJKSrgZGW>LBm@u)?LA*F_PSR@Am9InvrRrpUJGCCICHkY!GMVr+Y%;e_@>8eFg}h zv~qMZ`DjE;)Aq;jIc`PN6@p}!2Ub&DoXF>9PyZ}*GOQo(IS*>Lan;-% zf2ecaTE?8kqd|##0ya~yr=dNseB!d2weHRx&-c7l@7h28z|p5}GSk`3WbQJw)u4)T zn#vq+$L+}2efdkJ&}V5qf`MjMpR*Ggto9Si{zREOu5z8tq1(d%YP-z0=`eb(%RBgDOxo86TC`iLnxNds?W6F7eeamfINKE};4S>E$P!<0QCE~QZ~8at)UV=|){1&DLb~^z z{76(z1oRHg3{pH(^Zpuz^Xo)Paz7%bSp!w`9kM-&*B zBecXv)cuhAG!!#)b>pP?*(P^|U25{7EuRrb_rYxLmirQ7hy?v@fj9G=3|njn={=4L z%h#VFGgVo)N)5?n(bJ}3+2Kl(%Y(HggWC(KBKk4+ke5bhXMVQN?6o2+NJi@Qd;Vt2 zcJb{JD{Z6M50~0{nS#TskhP-FyaP&Xez?DWSsQO^+3IF2^9cEP0z9wJ&KnYvkUZZnhb27Upv1l>&=*ZSBOK|;~;Ab7O_2NnQB-$mC z(9AiIyL7(wC`)UmI^}so6X3Y;(MQoMOZY+FEvlduf|<+8@SBE|O_%pPo4N44H{r^}rIb`fWQ4-Dgv4+|NnNHG^n5_<`xzWV{}gr4eSetx%X-*bii z<9VYZoO+TFzV}D}Th`o=)wquw6N;Yo-Rzw?`7gNRXuMHjX&SZ2V3_~FNyuLLE@cTF zlFYGA&-u?`S7I&Q9J6P~%1vL@=d#%Vj!U6O9ssg<^r?n2eb19&6w#nXDMTGGI6}^l zyOM#+K7bhXH6S(%ked*6HKcf(QmqOZJ=b1=9wciC2H=85V1*#wc@Kv#7(>G~`2mf| zKbPAdiu6GG{d`9QAr3bUVE@$ZJvFHkAw=LkgN4I1H-pJ-ZT@G$w5x0kGvKbP$_&jn z=Fy1SeWD5~!X1|-xTe^Hx+&N-CYpRS&Eni;#hC~#)D`@qEHPYBhBDTe^nb@A*g2)U zw?5bSqPKD-pkz3pW#Unh#~o>2YsE_I+E3!rj|D8U{+54A!ziO-{FhO6PR_jt&GX&y zEO%e!=%fOug3%qSnRbmHl5#`HBpVb42=6>W9s_ttW2wa=KJc2Zt z2v6m)jG2^4u^_#&sgd;rvy{{!TWbYXwHJ^{a+}v3wc%`n;>@v5AN4Hx zG$9)uvp%hdn0h7SZo|tr+3G#_4daP5cj_985m8bI?Y zPsgNemUG&L*Iw9rwR3eccHz#|5t(NtJsz6(m z^Y)0;(T&D6U803A!Y?eSMcIyvLe?}>dGD}*ya&kl76dre%JEk?U_P+uP$Op|Q-*T5 zK=m~ty_P`JfO`SU2f^b61H{*?#Fxd$R zd#cYaF22iao}ktipJQ1V*?hoRz#%W>{kX*M(xyx?L)G^*%|fbJvl+b1iAu$xy$FMm zsCGXW^XJcWVL~ZEuXS1PPg&Nw6~ELE<3ra?3yl77H}h$uvino=kL&Q8Ioxu>%mmLH z(_i__gjRQwz=O5@qK<8}m8Y~6j;=7Io)l%EG^>WqFE+%waLhD~qnRa^h8pt%lYeWJ z{G&kyYKxd-pjKDEQngWD)6|VY#R22B*3r?!!PnBs+zHt35$dkgnU9p5yll}BP;zig zDD7m-Bd&nnFE}wd4jLIB0U6zLY%D#?5AvM{i5!f-TX&I9b`=L0J?0Z6M90%k^S}GO zAnMx3vdiSfaNSlQiwo;1n2K?@)GBDz(b*bQPYqcqROFBS9CA(mZPIlRN9?N0QGO=b z;UHVA24eT?BPsj9otM_tt`UrHWgyGyOF|X>&0x5|_S<&tkRU@iXpp z+&A4Mgt$^l%Jnzn)DJ8KQV6*8KOi$4P{D{@${ac@R!4J+EPcr&>FA|0sBs$_bUeq} zm$6;r!J%Y(R>;~I{Vp7eRHf2_xjnLfNG=vdJ&GJKU_F-8zW>5`xSY1o&p=UgvE=ZF zcKif`{;;*0LtMindiO&9U36cMGnPtZm)iS$_{?9o!MJYRKxn z!;<&$)s#-D04U3}n^ThLkZwT#-qIxaxzEh69x<*PXg5tbEO0IUwW(#}n-L}<^50c9 zhZ}G14Gm&8-{~h*^!wg^R2015tmY6w1M~XY=vWr>qtN3pBHnF%B3y;N#(Tx2;o-}; z5lpnOZg4)2IX_%#h*?Lj4a%u9WW&QGBX~s!DcC&47>%v|x@qRJbemH1sST=?aRdsqH z_7bHK%D&dedQlcZ^OJ8!pZ04X^y~GPt??u(?jHuOTC6U2+-ik`GQpwi$yBJn5TK2* zh79}B;-Q98ZcgT8rx)UrZFC1%2p@Sos!2X-&?p+KA34sbpmm+1tRk#LmteW9INddC zF+?UbO5f89RbIVz=oE0GF&h`mQt+zeo};NOXsl+y?)VJIM@!?;%1@lKj8T*4cucy-Dqnv+khkB!q!e}HDRa-wa~L%65r>;J z#W_V79~$EIMT=%<{-qI>tP~LRO=AU5#Gg}aocc|rJPPYJG91QAdK{95JhYmY?VbdP zQbjffrEt$W>`IAXq62FaB4wG^~HT?ITb?kn!GkVhQ!U)g=`%f-1 zmy350r6&EkzITE&t;bXd0R+wXw~ls{0v5377QU;u0i>pfTdV7&q!S|#!+9>V=->8v zNSO{xr9}ROO#b?J2CV3xMj>l!=)|a1q@MxRXc6IC z#KN)~d`y{{x1Hqj?zSI??TS*0>;C!mNh)#{nanthC_TT%|GxWYmL5}HMxV(JP?6!Y zppC(eg<}UNj*jlH8)WJ$yOWCqo+jjFG-J3k-hgOgAUZdfA8B<4L?1J8uNdnngk!J> zC#^qpaX05olB8`O7wboyddqN;scBLlck|R;?nCCoFu};^RT;x8qA?x*Lx)T(uO%EL zuBKVWFfa!z(aiDeZSPg~6Q8H_zP~clkTtz!G@atL6}H%WT%eW4%lMbCEVV-snP=Hr zqDhAs+QPo*6Th2C)G~5uwVJ~lj#CJe1X_MB>FB0*X+ruwlW6Z5Fk=tE+y%S%m~2TT kJJ1uUil_4~>DMHw1;#GW-V}3UQo{;(EwPzJM4pZR56&aJ)&Kwi literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/fg.jpg b/www/extras/wobject/WeatherData/fg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2be8ee4c9d87ee6ae619404e874dd6a7a4729b28 GIT binary patch literal 1019 zcmex=Dfe5{wKeh5y%7b6>d-rBMET-TI4vt)drRH%%~b zaqkJ6zpH71yZ>4}{Xq7W2i`~g_%OBR@k`S=%iHwp+KyzoW(rTReOAZ4u;A`KesdPS)D@-K#>tddJ zQxw+vZDHVi@yPSU#K!w4-rm#d&c2~y#Jy?jp92#gE!CY{YVnNy*UFG+!3WEOcR4aF z?>JW%6W+Fc?_0s;);Vh}ufM+&oR#*#me;5+VarOvGyXbqiUI}cqNl4j_oW`PsP>ul zHN9NLPel17)6V=uo$<=w=I_Z7-1dG(xkv3^&*RcRqNnT#Y74N~anM2L$ftu7fqGfq zlnYJGx-M1W>G6o`h}4>MzrP$46P7c|(ylICRWW7h#5-rXE>|wurCYd*$wOh;-nP#H zeJTI4mgSe|9vflB26B@UsK|g z#y+Wv@x9wu-lFS?E6b+&E&CqUQS~Nuck*3bzE}SllE1C%PRggYAOz|nYeW6-kO Kira7gzX literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/flurries.jpg b/www/extras/wobject/WeatherData/flurries.jpg new file mode 100644 index 0000000000000000000000000000000000000000..18c3d30eb47197d0f189d19d8dcdb1717b9a79fa GIT binary patch literal 1361 zcmb78do+}J82)|VH@7A--(1RN3?^OBDuj+~6P4V;xD~T)hf!qNajD$0DX=Lp7XrV^Smm#Y7~%Mom`v% z1VO-AT|hMq_5dt`!C(-qx?!Qx%37MYA{p(tf7eI13WOG8m@BW+!M zeFFmn$~vYolVMC}7%=`Zfz(nw4!?##Si_*ARL1{?stce5UKChFj%q?4o|V5I@5+kG-qZ!m;laB9j3RYyUX|Aav>Ku`?Xf^Ecfz*1BSprMw+s5*fK>bD4n8$Lyw;8 zASNN)yHc^UROT-T2y&0M=3KQNtS=9)Lp1Y#4Z*P}kuS`B^8{JPog|%;hHU@Xx7_nL z#ADY*gQDStsd>_5|87i0)7mb@F?!TY^HLl$LneHpJ0hg`8I(8s>s+d1kQQ@F?M>zk ztXT^Qu;H@7d|7ChS)Y0q@Sd8jaD}(WJcSFD5}s~8tHWwMO4ivMID|)>UcIy$@OEGC z-PHT>$Ddjgj%3;kJhtdX;+`dTgl>+&}&Ll`ls~*tbu1A@J6$BTP8oIk#Cec!drEg$_bqus4%tKE)Vdn!5V=-@)ckV2J6dlK7+ zes8Qf>NGFEXQ-wzB7M)L^8-~?gh0psto^Z9&D_iX+-IYBF3%25RZeQmR@1K-3(hKO zKgc|lEb6qyW@adFIcL7WIch?q(&W3wo2FiF4;?dh7hkm4bvJcXLk5Suh?OPT>LiPX z_$`XNeZpcdORb;lYE@uge9Y9l8~&CK?>6pYCJ_bJiD$~I+5#)HUvNKsJz_ULlUl9M z=A5f;<%g)i$pLXfPuQI(jy$tLFlFMc?d*{5Lo~sWo$ebZ`xrV5hey2Xfw=WMqKBts zC)(T2nOj#7`*VehA^N6^9xLOKq66a$Dvu)7QrJ)nvy1eI{m!m!n$0U|4vB9zHok)b zZ?-32uy+!@50JH2NrKE;zEBcKxd23fX?y|g@xtLd%_T`oMdqbiM!6)icWRkyzAdKa4ds6Ax&w?(i!UdUn-NP{tCb5aX z=?(td+@vImSHN6j-u;eKd`G`k9(~TR@lv@8JUD)(;w!&kNj~fXTy~Kl e<-vUUV*g(0>6v{_Y?otY^q2Pznr_>q8u}Zelrk>> literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/fog.jpg b/www/extras/wobject/WeatherData/fog.jpg new file mode 100644 index 0000000000000000000000000000000000000000..78458813df1572168e4bf786f887125548ab1d52 GIT binary patch literal 1753 zcmbV}c~sI_6vuz?`@v707BTl-!L6*^m$b4)!pux64Hqg+t;_`}x3W}POjC2g(#jSx z$~4n7%WT0?F-HuSEK3W~RA^(w5uKEQrZY2V{+gNZJMWx(-@EU7-sfKFE9rYcc|G0( z404xI>L4+}Y#2`QnLi!9a000E)4{zXy5J(V0pJnG0w@vzJt^QXo>`(cMM=Fl*y7IYk>awU3tqt93+oq;!Yi+LPg^{4^&{!r~@1230}-VwPIjP$B$-EhJrkkj|f29N$Fq z$@HRmzPJ_CPyd|F#BE|gZ~bOSIKCd*S?IpQ^X48Ep;QWt+m~yIu#vI*HZ2lLY+oI>-JwEJUxL~tLuf$u4&r%d` zg%ho^-c(!B=pT~u5-Kn5Q}G^Dq#}4@OR1+ zLN;^7ndinL#r?qnW&xf>gGyl;&V;^Byh(aB?KCbh=d53By~LXRC`3KlGA*FwrWEL9 zYUdW$+rQSoYCq{`5${lj&3>)DiLkWc5!!jIvpjGwaRUc6PzI`VLiwXH5v>Q3$*vw% zs$mMv8ngAj3_*IE)2pMF&JZR0G0&fh=XHD7Yt)IV-Ss|lTPRoYOVm=H9<5!p^9jmT!ze3Zs$J)CcHHu$eh#bBIcqOIqN4>`@A4!3b z`F(Js6oBn3RV0NiEsGeEw8aiCIyx6zwq+ZcRJ2klx|!^lfekncebN0G*0#g&Zb5}o z)K-_?4{Tv?h2P7lTNMEw>b;KYgPujMEU3vb*r7QlQ4rDivyrzI>-njddEDtBZC<#g zsmVqc#`JlS<0mP=lLDF&q5&MCkFDuxu$WisdRr1rA`GA4kgPb|yRo3@Fl?woV1-;f zWgmT#JZ~AjyFQA6dUQ4%-Dwf!_=&h;G^7Op|E(OCyujX9b;uc`PTAhr`7^~Cbn=YSrsNLk>)!#_vhODV literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/fogn.jpg b/www/extras/wobject/WeatherData/fogn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8707882d4fabedb02d06cce2a7084dc2fce75617 GIT binary patch literal 1497 zcmex=>wt{5U2q_UCeAO%q$>b(!l=%41ydCRt)CMj7khlf{e_9jQ@`? z$TKi7vO>&efC5G)W)@a9b`DN1ZlHp#0t`%y%*;$I%&b5c0#(-nR;@QBE$5`HGdR zHf`Rrb=&qGJ9iyAeB|h{<0np@x^(%<)oa&p+`RSh(c>pipFMx^^3}&rpTB(l_Wj4t zUm$-mGB87f3>Xz)faWhjpud=aq0hn&@)sjhIS?}oval)|vI#i`vL_Y_D;YI%h&WAL zxbYyTvT@J{(WIh_Tw*FF4^=;cyax6eaUN?T%V%(pA^dfVfrpt97Y|- z&Kpm<+4vx->y7&5D<@7lr_^sM{8zDP;pMbd>t@e;&DXO-GR{9SDllX5xY z;!RJXqtIFH&!5+yV$HpMvtoYG#!2~HKm0>K#;wfHEiEoyk`dNls8bfU?Y-^Q!&*#- zG!ol9Wj8n}ZI;oRWLxfL*n98z$u(umwPtCY=l=S$V!2({Qjbte=2ahxW7}JkKKkuk z;`&I|`@pYf%@1#%zTNGse?)wnk?P#LPj~dL(|tH~g7!(FnCQ)`CI$FPCNQt7(ll8R zx-ZV}@}CtUQ>M+DPkY)%=o22DAZME0#327D+7-lNV$8CLE)z`Pc zLNM1_e9?b~t&!ok3^*%lHg3&5c~W*mmaOoydAj8`j9(t)Df!6Xi`GuQQtVn*Hmxr8 z*sOPp^%otvul4I$*U{j#_rj;%lx=oSHTihDcx8lxAREhdEk1kU_|@_seD-(C^Zyh4 zG5Jw>huTNew)u~v*Yicb+$XckH^S{wgwLmw^#TsJBQ{6h*yf?LFD{^e#`OnkQ#ulZ zLOl~d3+=5mtq#~R@4l0r%V)>^N6Z%fnaTB}QoKecJS?|y>FlSM51)3`)?Od-pFwV) z`{9IQt{px>E2iH1&!GHk_K*3$OMb8)+sD86L)+F>nN{~&a<|?-@ySd;-u-j#jy>0fXZTuvv0JzM+80gciRC=aGH(j1|7P=jkH73>b?jU@lhMZi3{gL} zJ$v=clB4fY32U2^k9*Zp)2}a@l=Sr)pHD2f`LFcV+10FClkNKEy*hU7)y?Zn941FP mt&5hwbgfzRYu*xR<$!(cvaYx5dqvOO+WBJDq-oFp-vj{3F?2To literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/freezingrain.jpg b/www/extras/wobject/WeatherData/freezingrain.jpg new file mode 100644 index 0000000000000000000000000000000000000000..189a5b31aed449befbe3cc19a2b63eccd485eb31 GIT binary patch literal 1707 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 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/fzra.jpg b/www/extras/wobject/WeatherData/fzra.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb89c0956ac809a23d9e24160cff9dfd33553ffb GIT binary patch literal 1669 zcmb7DdpMMN6#l+%ZZ0$9`}jsAml=)7rQA|V6QYF4U>>xZmfXsAv1Pl^K8;F>7+qws zA&F`$Dnynr>$Ygg7P%#2BXXatjs1<1XaC&uod3>q-t(UKyl1Xu?lpvNvv;tEU=Rkd z0R+vpLADS9L8J+S2$Cd2A`yusISPd=LzSaa<>ln%X>>)DM#t##@~AS3Dd7wTgQ~DZ zMHyF7#2L601SWtUB1x7+lErEAH2i zmhgS*pR6b}{s5*g2jFCgL|WtqBVaxm!W40)5=-0Igbj$u0PZjev2jAf*wr?Y%EZnk z!2uK(Wj@EPN#}sBuz)98x6gdQEU5!;(ez}OUuC`JxVkLk-!Xl9qsewgDeIHWNR#b} zjYk6;^tjNZ=PlZmSh?`AglIy?8r_l6#I?UM!tY#X-Oe)?77t}w+Z?C$4Hce^aZ8O) z@p4QQD{#3l*c&eRbaR{WW|xZ4*d#wXHnjfb`hHRHDUa;fqY6Q{si{c~mD9MKUVK0Qq076|{mW{S9z6cQ7OS3AV)<`aHHt{wxE5Y< zzvz6h*FUq)>gLB7N`lT23bl;K3ZTP>=pJ%`1y7A6&Qnjoa!eE~gCOvtZ(s-r%nPwb zeT3<`@e7{eFh}<#RJ&9qW>a0GeRDFs&KmS)eya5hUG-zcq4TA!$@kwfbcx=j8#Svv zLdyDb>V8<7O*fy+R>%o|Nbrx8kd#c5Ld7})TKl`rjG&)QG9oeq__$Gm8+){meLI@^ zs9M=B*vs>Bi>SAcDd^tsp>lGfy`|{QE)NHFK752InC*6Y9(X$GSIwm0@xQPNm9%EC z&HO7uQcI!Ea&^7Dac7dk_5NHS#WGC#*@XGp=SzQ<0u4!@S3znvbW=`$WAILPy=33> z_fyFeY+*jTb$o<*)&l@&VL(gpf(teQZi6sj5+J59w{dhHMCv%yz39`q@RGM7?zQlP zZ4+CqVoY_mR3(15nzvPj*^-n6ptL`q1zcvq{PSF_c|PgF+>o;P#_q3&LGRun?$S@S zAh^7A?lLKs%evteEo`gy4e(btn`8`Tf0M>Ke#Wm5vv1yuS@)GR)zya9Mhtjg9~O*V z%&*Pp<$OPpDf%J#V_b}{LY?-SB3q3ZtIh+ie+*qCxizXei#Hn>^4CnK=(&4ejT7gM zZR##bC*~)61>nJcYtc5;Qp0$dAFb8bm999TifoTP2amgu;z`?`gIA+op*v{YL0CQE6c(Kh?~M*<4FLL^j3@ zUE$i3QKDD9O{MQ2%L<;AQ_gU8PHpIB+V2_3IQ);HjngLiuqc%x-<3%HWvkzJ%II3z zzx%1kzQ@nbd^7BF%6w_ivvJ%PJ*?Ky{{-GKOxUjJP@)!a%ob<0Y+p^(bs^_*=34&+ DP)$`` literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/fzrara.jpg b/www/extras/wobject/WeatherData/fzrara.jpg new file mode 100644 index 0000000000000000000000000000000000000000..12bb8a9c7d2d48834b2d94906285a73eea388c97 GIT binary patch literal 1639 zcmb7@dpJ~i9LCROT*sJmrd*nFnK3R?ScWod(L~>hNHe`s>)9e{5{k`Ak{Bh3tKF@pJ^LgK&q(?FcAWrs<_5g^D z5oiPel0IN7pdc$JFDI)YFDI|4sDLM^5(!F51j)2O-y>-RPM0{|>F3#<-|la+x$0Nbg9(%tGpdILf*PVx#+f%#G#vGJpU4?a9={RHBgPh0!h2rBu{ zjn70YANW0|E!XqxoKuRrYHs?^A198#b#u>-5vPI-bLl&S*mJWs5-B%Lj4uQO@K>Kw zYycHua!^zEWrG-1TTrY-&Ra(o#+&Z%+F=FcHI}(>cfL!F==FS!NoZjbAnx0*{)e8* z$jMLf|&hRIy;jOw(9c#lA| zZA!DVx+m-9E)iO@%fd=#_ubkr^2a843;qdwoqk`js@p|9L8Lq7xR#d(@(goJN3ecD zAS|<5KM+7^Opd!xG{V1LKGPxm8ni8qDbAYhYFTilCRE(MryMI#=8g=&RRgq3`VLFg zW*Jr$j6)+waFYumMYWYfrHi(RmEd~Zpljx^!IE80EM$|~@dfh%R?yyJURmK6^Qif-)+l5%i$mM~Mk zt&m%))@i!y8!d@H(E>f0-QGl{5U)JL!5QAJP@1_AiZw`PmU81g(v!;; z6$jy`uo#kWqjxKuEg(iW^_7IU@A-#v zGq*owopq-fy#LkIQ|p6 zP{8E}Bkb~+P-FPc&gX7DCoILZYsMDpX; zIQuxHvTXF45)-XBul>FK_Q?*u6F%hRJ`dY^!6fNj~&hq-r)9sgd4CmDSFENmJ| z3a$@2f2qo=%HQ;A&TJv)Mt=F2?nU{*gKbGE>+h*I#QP(g`#u50Tg^qBiB48KE007 e3SG{dQd%U4A0K{C6qB>cnIDGZBtUAer1xKqE?ye| literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/hazy.jpg b/www/extras/wobject/WeatherData/hazy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7f87c64836e10f999f10326473da38fd875f3f66 GIT binary patch literal 1150 zcmex=7Y6XJ-RSstPhN zGBdHV0s{vMfT{(V66|$%?W6rynRX4ZE;3BxYumtVisn0OP1bw_jKv_gNRxvUtlkUMr_`lgU}YtpRYIqAG*3$1WxUDud*Ddfs+cI_;Arr6Aee>u4YFm1BzTTCa z*B{wb^=E3AgdH|n6rFsp=J))7tyyw12fk`@p6cFmYRi-O1Gnfe|?!$#ixk+KzYR& zi#Ln35QDhw@dv-uCv16M@Mf+yt6}geLxZnD3pT9uOc9zV?OeLvuV%mDca|KBb8%(m zLgy_WcWCBbHMvyE$l?R@3rk0+Bm21 zdA(8gde)?*vzJ-U@$9Tu0i}LBmWQvJw&uvhoqM7-hRkvbxSfAPB~n@8LRpu{S*72C z-!sl%HU0eikky2OCb6=x(*>cAw{}f1^En{@Xl{*bVc``!wV>dm+~-7>wLepmT=rA& z#=%z;uUJd8UCJ(#7q;42_Re#DZoZG^)oo#0CoR>wzSF>YZ;(}cGD{ktg43F)LusM< zlIPY76wZ0|QSz*+vTlR)8$~gBCf(@PfJwsKuccQXseC1VrJ5t?z$L?0!$VG==7YIk jeDsS}{}mK`&~!)RO3~z3p?~)-=(yk#-D=er|NkZcv*xvT literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/hi_bkn.jpg b/www/extras/wobject/WeatherData/hi_bkn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ee435fe1a175735e604012da6c61321b8ee909c GIT binary patch literal 2180 zcmbVLdpK0<9$qtR#{JGnwmt5-?+ywniCkib1_x0(xz)^^Fb#5PXHzINA#|Z^<4z^i zgeI4Y$$i(3VaApj)G>#{xQ+XqwL03*d7ksnIp_^iHw@is3#GBCJ)=f`s%NtD*Q?4b~bc zM(y;%Dh?6et7In+*T3xzt0+Vfh-Eu@_gj0cVKp^15YTI)BBHWlVzL?- z1q?>xe}(WZf(m_VG~z3u$-e@D1X0j9V&W2#asUzmf=CpIhNgr%e}ZZNN*=ACX=*2; zh&wB)MN%?L$}Seuwy$f)c)p+4F%PKa_aM!zfJS_3yVw3D}vRvbp!zZ z%MP^uhaY*!4-$m}QKGOP1o9F@P#%TWG!;>>!-<|HDQcM|i7DA<7uU6mYnyw{V}dTe zmr&N($I<1(mcBar?+hjXUylAT^oJiI3y=a4(6s^O0b5|n19jQpY5+YcJZf6+>7u!A zk3#w|ILW@9foH~v`$!^Fo@bZY-8BX>PIveEPCVDwp|#$;pnKlF&dSsM{nB(_ zlwduVWMudbl*#KQ-2a)KcQK$v`dn&;f87xNp8qQbE8~q}n*9~N8YLm#cW>qD-lIcd zxqWJ3TyIv6tK^!q%0atux)dpC&YxMIGirPx!f{6~VTx@294PFd5- z`Bn}yjjne|ccbq@TqO`+yvzY3wk{bEDy1NflV{TPKLm`~-##8~S@1p6nkojA3=3;6Es@V)15)5o)ta z8zELbQfSd~LI?A@@!_}Bgi@I|zxRVWKa+X}z|9A4?32$1X$boC7IWhIEXphIi z1T*|GwMUarH>ztoue9V@6qAUR4s#LFQVuJ*;al;{g9#M`&s_`QQJ+WSpKW+Bvrp%a zle?W#%4Q2A@+snXrI0;+mN*I<=beMMjYWVanZBk!6mdawXY_M=uhs8LasM>}VxXQKYHh)P{Y;XY=aT3R0z0;|rYLg1H2>Vk10a5Jul*F2cP zC5CzNWD@iAHg#A2rWO(m^6Q1%ZjmU*f1kKG+*fwi>TB|?|MZUn2NjLkFk;H z_F7x6RmB<&J)2hkF;SjJ8jo~bYIQ$am=HDV63y+I^}*RJchL)_sV)nXvhH-Br&NLN zyX7iQ%7hn6z;}3a^>c)Dzqkn1Lay63u9DYQbd0=3?DFbZr`)|3Kwv7He$hQ!*jdpM zDPtI5lF*^(AXAjc#g}+SUU(R{%NCdIGtG{18*m{WJknvZUz#*&62CDmTtbrZT#s{r|Q&<39*J4f14VL6)!g`#AcT4ww()M9*PbK&b5C} zp;rOh-W<2XB{m+8%-T)o7Ly+$Ed17pac2Z~x92^$*oiW{5C~gs*iK?>Z>ICV%NUNd z6uA;>)oG|sV+#RNt95NyO7QSMF57Ts_1R|v3HLK;Ir@1jW9<=NGQVgWriCN=KQOW> zbh71`)_hs1AWPaTV8!mmK+fti%bXIhdR1+9Qr2~FUOBC7VB&XogDAEoMLaR;CNdkV z5`3Pao)W=6)kh_$()~j|_%Wu~GW_EI69@%jcC zi<*-Gb&aR65?!}~e~p7RK;<72*JBcZAGjG&%G>U->oZ3?yXHjr5 zr1`<-E5i2$rFs#Y$0hjF3;ZSSlk@!ym!WgU$7^i*nFGDHOswpn_cr)}mXcsJY?DuG z8n^Jd&ls7^F|k-D#->gf$IS44mMWZ8>9isAs>>d7telhNY`KaD9T~CcElwphh5(H0 zHXAb{YhQ90|1l@)ju5y}AY1Sd6K=76`jwIOY3p8EmUJm9@XTITYm9B;M#qK_7~90t zy{R+VMOue)1~_-FhsKqY@fGdi?9is>J6(QV(}J|4SqGOf!P}Tw!In(mcS4{&Cov_y uCA%0O?EMmStAE{HkQhlP?R7UIZzvvzeuC(tt<^L070bMo1f4|T$UgziCWM^; literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/hi_clr.jpg b/www/extras/wobject/WeatherData/hi_clr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0c0c2e3add5b996c64dfc57a692f5298325e3615 GIT binary patch literal 1406 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 I2jG$a0%j~tm;e9( literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/hi_mocldy.jpg b/www/extras/wobject/WeatherData/hi_mocldy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..425ad901524cfe0ded6b5b0c20578d87c736d073 GIT binary patch literal 2180 zcmbVLdpK0<9$qtR#{JGnwmt5-?+ywniCkib1_x0(xz)^^Fb#5PXHzINA#|Z^<4z^i zgeI4Y$$i(3VaApj)G>#{xQ+XqwL03*d7ksnIp_^iHw@is3#GBCJ)=f`s%NtD*Q?4b~bc zM(y;%Dh?6et7In+*T3xzt0+Vfh-Eu@_gj0cVKp^15YTI)BBHWlVzL?- z1q?>xe}(WZf(m_VG~z3u$-e@D1X0j9V&W2#asUzmf=CpIhNgr%e}ZZNN*=ACX=*2; zh&wB)MN%?L$}Seuwy$f)c)p+4F%PKa_aM!zfJS_3yVw3D}vRvbp!zZ z%MP^uhaY*!4-$m}QKGOP1o9F@P#%TWG!;>>!-<|HDQcM|i7DA<7uU6mYnyw{V}dTe zmr&N($I<1(mcBar?+hjXUylAT^oJiI3y=a4(6s^O0b5|n19jQpY5+YcJZf6+>7u!A zk3#w|ILW@9foH~v`$!^Fo@bZY-8BX>PIveEPCVDwp|#$;pnKlF&dSsM{nB(_ zlwduVWMudbl*#KQ-2a)KcQK$v`dn&;f87xNp8qQbE8~q}n*9~N8YLm#cW>qD-lIcd zxqWJ3TyIv6tK^!q%0atux)dpC&YxMIGirPx!f{6~VTx@294PFd5- z`Bn}yjjne|ccbq@TqO`+yvzY3wk{bEDy1NflV{TPKLm`~-##8~S@1p6nkojA3=3;6Es@V)15)5o)ta z8zELbQfSd~LI?A@@!_}Bgi@I|zxRVWKa+X}z|9A4?32$1X$boC7IWhIEXphIi z1T*|GwMUarH>ztoue9V@6qAUR4s#LFQVuJ*;al;{g9#M`&s_`QQJ+WSpKW+Bvrp%a zle?W#%4Q2A@+snXrI0;+mN*I<=beMMjYWVanZBk!6mdawXY_M=uhs8LasM>}VxXQKYHh)P{Y;XY=aT3R0z0;|rYLg1H2>Vk10a5Jul*F2cP zC5CzNWD@iAHg#A2rWO(m^6Q1%ZjmU*f1kKG+*fwi>TB|?|MZUn2NjLkFk;H z_F7x6RmB<&J)2hkF;SjJ8jo~bYIQ$am=HDV63y+I^}*RJchL)_sV)nXvhH-Br&NLN zyX7iQ%7hn6z;}3a^>c)Dzqkn1Lay63u9DYQbd0=3?DFbZr`)|3Kwv7He$hQ!*jdpM zDPtI5lF*^(AXAjc#g}+SUU(R{%NCdIGtG{18*m{WJknvZUz#*&62CDmTtbrZT#s{r|Q&<39*J4f14VL6)!g`#AcT4ww()M9*PbK&b5C} zp;rOh-W<2XB{m+8%-T)o7Ly+$Ed17pac2Z~x92^$*oiW{5C~gs*iK?>Z>ICV%NUNd z6uA;>)oG|sV+#RNt95NyO7QSMF57Ts_1R|v3HLK;Ir@1jW9<=NGQVgWriCN=KQOW> zbh71`)_hs1AWPaTV8!mmK+fti%bXIhdR1+9Qr2~FUOBC7VB&XogDAEoMLaR;CNdkV z5`3Pao)W=6)kh_$()~j|_%Wu~GW_EI69@%jcC zi<*-Gb&aR65?!}~e~p7RK;<72*JBcZAGjG&%G>U->oZ3?yXHjr5 zr1`<-E5i2$rFs#Y$0hjF3;ZSSlk@!ym!WgU$7^i*nFGDHOswpn_cr)}mXcsJY?DuG z8n^Jd&ls7^F|k-D#->gf$IS44mMWZ8>9isAs>>d7telhNY`KaD9T~CcElwphh5(H0 zHXAb{YhQ90|1l@)ju5y}AY1Sd6K=76`jwIOY3p8EmUJm9@XTITYm9B;M#qK_7~90t zy{R+VMOue)1~_-FhsKqY@fGdi?9is>J6(QV(}J|4SqGOf!P}Tw!In(mcS4{&Cov_y uCA%0O?EMmStAE{HkQhlP?R7UIZzvvzeuC(tt<^L070bMo1f4|T$Ugxl9fOtt literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/hi_moclr.jpg b/www/extras/wobject/WeatherData/hi_moclr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3aedfeb913c41714d50a682d468cb39456e862f2 GIT binary patch literal 1997 zcmbVKdsGuw9=^#W1Vkzc5EcZ&8^J0^o-5XJY6S#D6a*S5*z&0Il8Rt}R_Hv?>oC|?rMWl^0N@>jzsC(EX@ey2YsqFLM*ARysJ0*r7SXq4 zBJtZAsw^bNt@Wa6fDqlQVJ(l=-|men0ihnk#u8JuRdfc_&-JzZTYvCvK-33*z!$>U11u2(5izhBlmI*g;UEZ)!{P9FydJ?w zpMb#FaJ_+%iLt2($(TekGq9DRdzhQ0(V1LZiqv%4tzQeAzJ7y96uN*xSvx^PZk=TvdPuW%iG8IuiO1T z+#L`Yv?n+u@?cbS%tzGNq~w&(4j)NPJD!t!f|i$G@KwpF)1_z5mQ`N7#JF7bO?Az+ zhVL4iny&T8?Q%(!0r8kcLH$%mL%F%Cze)9v5g7pvv`E4K~@COPd`?)q@j*%(W z2$p3TK6PT<+!O7oPObcM&$4=8>kfZadR%bN)lj##_n2RcuMkyoq3qfYa+JEWHDMr! zCqFvH;hcL^BZ(?=wEn4csM&S*^+ju&QpvfUdJ>CFa{P_c213tw`P9NF@zTDDTAf;F zxk9*W<5)2-9Lta!&A2gpPRJfD(a(){eHFV*kS^Pv!j}BWa~`awaj&qP*oE1!+6_XcuvB`}@4F)syMk<~?^448Wmosm<4T)x(p#O6tD-#QDYO@MbfuLe}cP9NR;I!9PxMwaNsqe=!ne4^n^3&pKO( zAF+T>vQ6}3J$>(j_SK2JMg;M8$} zUwvM)uP@*K2L%jrV$xHmANd)z3!m`0!u@xiQF7TAVNfw-6n?+JTOk0hwCPPZ8V9I}T^z>WPlxw3(z`s1YG%E((bECEI1yDC zGBPf>t?YI$f31yn(xe4R-B>=t$qKUp*5kdr(3aU~8;HhAF0 z;$sPg${jkQQJjwc3J6zNFbC^OG6%YC4bi5ezsH-ZP)e6!WoxI`@mSOjgo$7_28x zj7g`E(NYhJnkM$t*1i;NmGh$= zsxtQW9%rtKbjTN0MaAdr3=ACOhOZuNJfv-i44TqLhq0^*zM!*J&tWj_ZS&$#T>WbQ z)_mh{&Q$)A%>0R%-tB19&>b`r00aLP7!)t=g+WQy!4lb#*O%UJj!c2UsFz^a@9NTP z`szlC&NFmuL+cY=lJj=UoqXg%QriVu#y<8@HElOb*EgZPTp#tZFC<9o7pNOJTOKOR zZ)&8sbp478o0;k~Y6A><(qyfyFoimUHOJ>hIcZqBMf%U7F*mLSQMvZtx?5Pg2G{H| z;8!J8?4VaCR{Ex>X#u>d<(>=}ykri_J2JV7v09-<)J>&dU0qk-28lkb*qbe_HGgP@ zFN~Dw77vzGzZ>a1yFaOK;u2p4gQ715j8G{>E~ZZ$8#Hjx*3qvBhI+?Y`RBE&)fe{p I2jG$a0%j~tm;e9( literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/hi_nbkn.jpg b/www/extras/wobject/WeatherData/hi_nbkn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..98d971362fd94a41ffad345ab959a5c8a636fd98 GIT binary patch literal 1884 zcmbVKdpJ~i7(QptjJcSM8D_+aVMf%T6}g2{5#3xeh)SXxwPr?gn-+jWN zh@u;E%{3DhxfhmdC^D4Hp3|ylpJ)Hs-S<52?|r_@`F`Jfo+EiF=>udpSle0yAPNL* z;0KV*fhbpE1R4YYKnCXDkqakP-~?tqnFYs49|RN89QZ)N`kgo6_RkEd5s6oD zj5P%nRL9nFrv7f;F+72$uuxG+W3i^zlBEVK42_IUOxLcnvR-dvyJ4#n+u6l+o12&S zp1u3_AMo)%9B?EsC^#hYcvSR>n3J(*&L$zP^EIX4P#7Zu;RTT*)O zab;C?O>Nzidf~IS_UA8Nc69a+ynZt{H2lZN=!cIJlb@!<(=(qz0Q$=geE!1^8TNxh zqaidF@dKg)VM1gyMomwOV(EbOVNxV`}foJGDj#GE@S_w3!LBGZa#L_oM z|IW~{|K;e1p&x!Eod6L6;ok-#1FL{>)f014cGQt2{=R_$hj>iyv^SPTrZ#znHSWP( z0RApPf5?VpB{5(3(Oz2(M?{mUj3PT_ zV$BO&#W=6a{7hElQa&XKdr4-bL;cZm zJMH$Ejn{Y{&s`cNe_O9>HRhGJwL6nY>;qPM7{2&2)hn*Z+uO5AX8BS-0|^k+7HZ&O zBD@gY6{Y!-AkdhpsM>rtlWSjn#4FBQYueADJV&EVr;)*rNYQ&z8MS@f z@-@}5|9ujL$&3#t@P$^(&nm~3zN=hyYhQyO&$fe!wGhO%GYlKZn+cbaoy|?;Uqvh` zCk_uO^L$PE%6c3aaS1m{vQy2ig7ipV-mzUzrRr^qK9pnNV{Wtf`dss>39-W0abH|l zcX_Xwx2paAxz>`&u;z3YwJA&=fA^j6D1WG87Js8KcRMX6d+K1A>6@}*-S;mSev*!e zsF-*)qhuRko9Et`YG?8xyrs!4=A!8ZG9m8Fme^2H^RG$IP{uQPy8d$_-*Y>hLpkdL z?FgS9TeNN+5#;*lSNiShyfns&8E`#yXUGgpues?EK&|G0-IiEkju8m6bg<-A*d16}vFT2abo29297_1?t>P2^jX|TbOgZ z*y)8ny%Ue^zKoU(UodXAduY_0@bp`JG#c$IIdJ9po()r#s#ZiYzt7xL-I z#u=MBEd6W?HR0yyBU=8ssrrUZN@v2!%QEh9Y>6_19+^&qq26qB8DY<6H}4?zJ#q2n z_OcJ+(~^bLA)JlU! Fe*!!}#y|i7 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/hi_nclr.jpg b/www/extras/wobject/WeatherData/hi_nclr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4017e566a07b4355fcdc137aa3228e43a8b1fb5e GIT binary patch literal 1267 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 F`6sg?$43AF literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/hi_nmoclr.jpg b/www/extras/wobject/WeatherData/hi_nmoclr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6ae17e6614f7b90666ed353021610c4371830520 GIT binary patch literal 1789 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 ZVn(NYtp8TO)GGtt-*NxFC4wy*_$LsIEn)xw literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/hi_nsct.jpg b/www/extras/wobject/WeatherData/hi_nsct.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1f165f95f288328ce10948a4d7d64ba687789b7c GIT binary patch literal 2054 zcmbVKc~nz(8huG#R!|@iWfKx0qKr^kHK0(Sfn_RKl+&&=F+?(d#&dEf85?>t$*>@}e1 z?BL`8Adm>)AoKvTbp+B|J{m*-0I(V2zvCX1)PfS|jbt$t!+j`-u=1b-3F#N!h2k$Y zSWBT8+~|cB4-uYqXCn{Szs!ae3lRgca3c@j563WIg$ef*ZRFuP9K(PWo&nzh?+M3n z9gbnZ3hw~>DcQ(>@h58llyHD0V1YvD07xYSN(mtw0^$HP3I(E2Xb=R^Xfy`935SKC zC?}8Kq^zi-OjINiNn5qlNLw_w5Q*x#>YCbQiVj6ZjjFFl*4Ls?$Oz~)EC#E9!zqwS zL=uVoze3iG$cH{P8u1y>=AVH;qCjXJ9G)Pj2p|zC6cR+Cp)H}#D5wU2N@ya**cPLF z^dwe?sbUhHl84i^d(cR7>zvm!Jrx>*Cv4fOs-{leuD@faftk6*p1m|n`)>|7I39Fz zcK0~u>E-QnoPOFrAn*+1Y}k(%!dVw1F2%;hUrD%{_)}`yjr5G0nOWKScM1xNic5HR zAO2ciQCam{b7vqURjk$5di96 zcA)b={3t`A7wj!865#V#f9K_gz*)NP)0DzuZZ zMbB)Ex&T}H?C8HU6!U*M`qR*#eq@7yJPHB*HYg>)29Qkex3nCfJP`|hD( z11nxIN!}i$zq1u!v4t!PZNl<4BiypnGLFt2-g<@#|oJqDdpj) z`J(&R?HCSkxJ7A9e|fL#o2h7x5KTpP$COKr3|Qj`z39AEuM?RxZ@q!(DR9?r2g_cC zRr`ujiMUP%JdO`K_2^z??u`}Zj5O*|QngjHOKNGO>b)6$!MO!TQ_@G#3wddmH{)h@ zZ)-WL?_7D*zJ?N*-FMVCe9;WkajgNydgWek$z zS9YF1%zh-AIX;*i%eXWhSsgf%5~FXRB5s&*Dq`&Mv?#;ZQDXhW0lS56%8WUS-#ge`}I##x0M!eYS zyQXvE{Go<8fvw=BO_D!#Bq`4Bl}px@fhr>>cW$oZ*?RxG0|PB8#fo{~C*(F&O{{vR z2SzCl=T>-Ghys%X{NnsW2~xia>9OP}w4XLB=*9EVrh>2*({*Akd#-9tYJSti z_-M9g)tC$bn>zOeZF`7doiyv(A<^@2b>!2eZpDd#HMNX6!_mEipos~SYpK4dAaWve zm_7EIQKQDu9Yr?kTtnAZp-ztxHC%)XXtb_wF}j#L_fsI>eD*J)?}IFg6?dtUZqk<9 zXS?Zr6>=88IGQctlSSR%;N4f%7q>3BUYqiL_Qo$nh{3JAvz<=g=gu?@_AUz8U-$bh zA%QmjRq3699Ixc@k+F=%%6LI*|L8g?)=WP#ic2}0HKyk}p`F1#zLa&rm*>ivm6*_m zMHG~Tz+>Kz`|C1!djwvCXrtLv!;7~x;0nqZD_&wHe|=Zq5*H?C+Mq-Hs#pf>ACdtG zfeavhZ*ZYR7ibF%Y4|`@RahhBtku(HfVKPOLo%SnO?;K_AN6hCnZ5; z{)lAK=1KhRN?PZb@T-C_1|^5lc%Y}6^~!+vciew(31`a&{t4>lEL#8o literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/hi_nshwrs.jpg b/www/extras/wobject/WeatherData/hi_nshwrs.jpg new file mode 100644 index 0000000000000000000000000000000000000000..effecf18e79876e2a5ef00a52f8a399675570c13 GIT binary patch literal 2146 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 q*WEurfZ7%DQWq$b53)KveH{SC0t58G z4`A-WSj;)e2p9kW2SENiiov8Pm_Y6)pMo*e2L}mh0l2V$`jdrV{IdpW5f~%(dm%-G zg!ana&qMW}dqau>$qF)mKM$P`#SkEc2=zSK&qH-6h5#wF2XqEBClo_Cp#=imldU~o7K0*(Zy1Um!48i3$IVk8vLvhrTBMd3X7 zl*kD=Y?9~7Td>9ht5V8#q!2Vazkr~Su=Ej`qsNY)I<2C5Mh$=d*9$tjdin-eO-!$u znOj)e6NnCux14U@_4M-g@%8h+{~$E%VR%I3qr{|SO3Lr4X^(UB@}E3?R!~^+qOz*G zrnauWwXOYiM`zcYw}V5&Bco&E6V%UNrlx0R=jIn^^tJU3#^$%J?e8!E{x3V=`X7FH zKtC)91RQ~a{J>azK*D(tNC`z&%-Jg_TMu5G5}A$fTtZHH3tCdycol0$8er#_I`vta z4q5u)=)W@*@_#w{+tA;Bm{foh4g;SJoCnYb)(p8=R<71Yj#585r%vC|#c=g>mSHts ziKPwFtgITGY-%H_-|!WMU0s%??s4qOR??5UxKtT71VkMQz4d6gFdk1>7MaU-EAeIm zLK4didR z223tmsmlhd&}NBY2!!06{clRXBHzmHz0-DZ320NGZc%pH`QLpszpp%T0Zlx%t4EN@ zC__aDG2c$a+MAHKcb$#l2XIN|}zgY+}5J2-(U77Q%TN;@a6~Fn;rLEmP z@z#2;kJ3%YuhtSi&7ADd-jh$i6wrE%fTO@q$a=Vl13Km#*EH3~C`~O5wHxGT);A|k z3_aN@X+D`eha!cjeO2u9AA4u{MY{WgQ?;c$6~~jD<+F{8VEe3V{TIrhe^vhB;AC4X zze!Vy6YuZc$g>k>@9d(rj+^_7uB-$OXO?bm{w6gM{(CeL0?a>G3*+dD;vPZQ=4{F@uirBUXq4k-m{b;HC4 zIfa(dr7085=YLFThwA3cn|%+=wUm22@Z7G;9+rFt;1r<`Z|)wiTGc3R9;BPElJm$k)Vbln7h<>Dmk5y!p z99C`@_Ri!KI7FeUT#mcns4ut>>)YpH^~K|WbAtSqjFvFZlkL=z@f(vpal#6$D&nPh zlI}*479sefSTaeTe(<8=Hr`pOOE5D6t#-H{J{;GV%LE>*x#=^3mA2qe4~tEFvX$)3 z?>l{lt$*?l_HxrKrI&i>G35sFI_z_0y$v!|Mq;t948zg-#-Z6iU)b!NTH%JP3AOaz zOJD+MY;OjO8U1KdJX_onMs_Y%F_EUWVD@$Qg7k2FNliFIJ%RwAd1035qzU_I_GhC% z*JtbpCcx_O`FdVlF|n~)wc>PWUy~~b+9Yq1%s}X8F+{X*qm?!FdUEn|l$n}`^<@2+ zdixpM7BPcuyip|j&P9(!%b2f`?HYz_^<;8Zo~Z8><7p>dX^+19?9)p>!Fay+6u0){ zk7SR`pY#frAeript@}pboalA-%5V7NQk_m`I?YeUZPA)IlJUy9B<7{RXFzS_EsBkf z=DE4DCjV{fRC|3)&xHf`wXP;g4P921Dm zTPI9QE7J!B@0CcAj%r`jJJz(CHJ`nKPFYJ~0x=iP4foipG4SG&P<&+vo4mr5>xwW^K`JjcVhe96uXbtn1H;Dy4Lxj z!O|0PoB8UKE3r(#VC{q7;RAPa^L!1zCKeC9aa1No{aUWtI|P^VTx0@cC9`#DJ^1T4 zti~r_IKB)ex2AcBDY6L+M%Aq!C-Rf)eSvw#YEv zv{IlZztlF?LD?(eyx3@CP+7n2ZQgFIa%BQ!RY&H;KLIn`42}Q* literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/hi_sct.jpg b/www/extras/wobject/WeatherData/hi_sct.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ef088d36e7303dde4cbf152fbc1521cd8b71ef42 GIT binary patch literal 2472 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 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/hi_skc.jpg b/www/extras/wobject/WeatherData/hi_skc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcf125f4b160be9ccf2749249aa7ea8b41abb3a9 GIT binary patch literal 1406 zcmex=+=+!_z3sfzL<^*DpS&O0KAbFVCAetSB*?@Q{R2*bKhz|lF z8iYY=mO;fq@*qA4fM}2zAUivGcywlGb_-QK$W#XIR+L%Rv|@0M>gTWM0TY@5u?V53ptdX zHXalWy7)oGIH{I3zSIJR&kGIVCkM zJtH%#xTLhKyrQzIxuvzOy`!^h(&Q;qr%j(RbJn88OO`HMzGCI7O`ErD-L`$l&RvHN zA31vL_=%IJE?vHI_1g6tH*Yt^wFIV4 zT>M$c>|xh)$>U2S4*zE;Ts3cYdTPChx!=UvMSQYTCagMA#J>IP@oVe<&b$5lL;d}< zjfX|TuhW)yi*|l8d*{QQS5owzrS`A4c<{Kffnjyv z$-ncHSDdb2Y#jTF^--Y2ozr3#r^`(KYWsQ5=9PMPPBCL+^ur6qd*tJ*e!PPOy?O#ljPlfE3f4lzEe}=DD?gd@H z7TBD5w50w+y;@~)zx6YdKf7#p6}-yKdY9(@v@6qV!e!~T+I>grBF>vSyKVh#H)q>_ zhR-MOx?iq5nlWp2`nAXZ_DTN=GpgU?e`V{3P1?_+17+TS7u-7+bF}#CljOp!8lhXPR{xv7@Me39I`@|P|2F~j-{!9X literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/hi_tsra.jpg b/www/extras/wobject/WeatherData/hi_tsra.jpg new file mode 100644 index 0000000000000000000000000000000000000000..88ff78f41d91518730267d6b0b6752a5d0bfaa31 GIT binary patch literal 2281 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 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/mcloudy.jpg b/www/extras/wobject/WeatherData/mcloudy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..325270fddec92372f16c78437e801e6ebfa760fc GIT binary patch literal 1847 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 E1+^Gn6aWAK literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/mist.jpg b/www/extras/wobject/WeatherData/mist.jpg new file mode 100644 index 0000000000000000000000000000000000000000..475acaf9a2dce15d125ba53323365aa257da1ef9 GIT binary patch literal 1840 zcmbW!e>~Is9tZI6ewyF=;m7>w>=B|k$6;|YKPGl<#`XJG6YD6JtmP~fhJ+(>l~SA7 z%tMIiRMu9|fCB&!Op|sa@V^QKhG;@+A+&XLH4PFZ00#Y$9tML#HQhOydjN`pp*K7G zz%gM7T2^c$eBQZQgtc#LhjIAOvd#9rhx4^{Of(AfEw*-Bx7oY6ez(Jo;7~I}w7TH} z0g!*P{*?WP3#D;^p->1^Yr_Qsr)xF@1%+*PhNFGLv=Z1DD|{Zp$oE`rYlpV=_V8un zy@!W%Ol(}9Zc%Q~{*e85u>Ai^_9yJ$t_eU70@8dQ1O<2ltN9ad2;8@Gv1|$s8_*|~ z`oirOU$&UkGz6ww_4fX)x6Ih#WvZ#>!g8wKAxpC$PkaP7p4(VQn((4nBR>iHI zOW)&jU{S)Y4}yPx&WZUkgWv6L(x~VfRhHw*ZFySW zfh#()w!j~k_+(+rX-N)f+3S{d&$CWcqUw`{sXgWDBn3$rUk!`1pQa>0IbQv-^B%XZUV9uFt>C@ps6Grtibs5a zR9tn0ba<&zxD3zQz_Dxi)bD9a}Yg{!0B(LbX;@h0IiW;P!F+ zjmlKS8P~$~5!!KvN1ho-M2P5-WKPRdKT=F-6`>(W*>`fQMb^x?Re>NOok0>hg^=W| zj2W`2wthof$wHWY5;M~#`O+x^!h^JPdHICFh9B73IO#~&#NCpWBC+_dhRzJT0qi%w zR$e@-h5f2g!f2wtI(Ist*?s#(qQh|g^6$eTdc2C(PWselwgdwK@(O#Na4)461vC8i8@ykrKi@4e5G{^{a?jzE|EdPNd+12e>8eSReG>^i+V9+bOnb~AC&(@%N*QBM&d1dS0 z<$QPUo$97}QHm*&$J=SN{#=jqz2!0EyqO^PoCsMVD-fk~{(TbbQk?3m%7Gv+6$?%L z@+&Mz|JgUCZ6W$$|GPN(QOo1IzgF13#`LVkhY&|*b5Zo+!S_YW@$wcM!`wR-MZvo0CnQ`h zA6LkUi?m5DsXT)2NIXW&XD3U7gDkC?K z4-f&Sth?k78hbFyMc2lcz7bMY>u94 zY97a0C!?uvg5OATPN2&HHL#~lw#hz<9C^iW`$N8*U4L*oIs3{BEht;427FVt{Su($ z%H`Ad-A$|opS@$BrsJnblH$H>#j1%sD5d$Hy(k|l0K5N?@@br(Pd?Mis$Ym*5!U5c z{zi`lM&DT!Mc@cCmis+NW|a`pCt>#emhmKl8t`HYsv{B0fI>**hAI#GD;9%m-jtk4 xw0!m)efmoxMt3Y&VK=$Y`+)MYMnSB$ zi?J13sS(+3Zed-bq}&oFDVKFEBx?4svGwP^f1daJzR&0Ve&1Kwtn37+tIJ9k0AXbW z83CYt2Alv1PaqQTBqD)GCX-aD8Z;_}Le*lZqZ&LmpU-1+xjK4gMmk>!mvFhpcE&<; zOB)*-fuX&#y_J)hwTA5D361f?^+Xdy12t?>jU)*ITz6UZO4y z5Az5)4zW-ohl*c-Us(s}IjaZeIhw|FjIpNJg9_u^bP8Z!s+d#Q8*kEf-N?tiR zwEdeYDy2>#KE@`7y?=eFE=9fXmoOF*-^O_wloMMDFqS1KfDo*3$Q&vRAvi!^sDf&% zF--Xap_z`z5kn(l#E=TC85-JmyvDvJ!Mn1^$2CGz+W26j>gZ?-p_LV7BW;bo{Dc;uIKh9$Z zOW~FkL~(CT@+L%DSLhth>6;#n%JWe+u%SL-G}Fg2w3 z@gK@O*2n)L&{`H$pICssXJhZbi~@oI%F`B#=_a!R@QeVT`0RR$xvf?hJ@sdcE{eNj zv%Fw|^S17bw!?k{gE#ncACvGhbE{Mi1V@^le{svOC6nQQGrcrHZY^`% zmYiO@zcI7c7Oy@Y%Xp#RKg3tWc}l+LR5p4K7={eQj@fz!KklK|V>mh}wkvi4xJ|sAG--X-YMHT9 z{wqDHowN*f2n+%r%;eQkuF<#STMf=jkDk5T+l0ddbMPv z^kI01;v+9^F%O$v3yT$t{__iiP;7WHZ+xY+f&XF4Q zo0{G2w8&$}BSqOqlS#{%3Src>L`;-BvuiWkHlHu}S9HWg5+I-77BpYgeM`J-TA*F6 zV;sLl!i0@+oI;YU7BXeb7xj~_xKhdr5>*d`Y$(C8ymCbyzC~*vjZ#5KWanRPD^@RR z;0&^ymwV|d7BdF;n!D4Q+FTN%ntdO)Gmqd?vtM?U1yZ11_n~vEjQt#|(|zu#sXJeO zbnRUq_F7sL8~Jolq-^;ITE#Mn literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/nbkn.jpg b/www/extras/wobject/WeatherData/nbkn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0b4bbddc931ce3ac531b172b8b4a06fcd00780cb GIT binary patch literal 1273 zcmex=swfrpt9=ptr82787ROdDC}zUY-ToVYyFHInz%3NE(;#oIGa zs81_e%u>vDCXMOqm5fUl-__rf`y2ImmZkN~#icPJMK@CJ@FjmdAz^cjUq>Kxfp)2R zK`5twwUE%cm>kW<#_f{liqG5o#cY*Ycj-b{*zr(RQI*e2RotrD+LRt?d=jrtKD9Gd z(q@yx*Q;wpstgAmhm*!CtB* zF`sxIh8P}S5jcOr1xfcK=FzpwmfiJ?*1B+I@!|sor_5)Zp2}`5xm)94>OsWVy zzouK?91l-1=Q_1&_E{U@pwq$*))_$#3wjKt8xPk?Fr4mbGLcg1I-KlfyX8yCrbDm$ zJ9eM0pVqv^#@;h~-QE1SV@5_7`+qJ7JZ>ZCd2CzXQ=M*>VBx^()i$HGq?0 zc5zvE*tQ)k-ghPRVoYl1YxT;xDGaNoscztqlldahb$rd@*|{#c+_|5&HQ(y{a9UdL zS=i5Lhw@ixeRAiw@hT!2Vkuea|*fL4(sQbwGG|=yU*-aDfu-iqM zGb6*xpX_2Y37hry^sdm*KU;)nvtH8{xxK8Uey6>nzt; zmP!4c3Tx*mOy4A3UYem`&LxqQI>~qU?028d8mvy6nv}d&t~ZP>I{xf}L)ME0i+7rb z-0iL`uiW-RDk>xQeW-MZ-)X5oYj#iFA~e6W;MCn&5-O82%Dx(#z1`o}6zHG(aDTC< zD2w2?GrL1qDZjcPnzf*{`0k6uG-cZ*Mi~Nke$A4-^K1I?PZx^*UR2dPH^2SmX~(!b oo$vY2Kf6%5uHjexqx$U*pX3tK=leBfXT9tb+S7MlaKZnZ0EI^O=l}o! literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/nfew.jpg b/www/extras/wobject/WeatherData/nfew.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bba1d84fcd38cac726b1caa8949cb7225c838b7e GIT binary patch literal 1320 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 b@w0weK7an)VRK3R5%1~e8msR+{=W$TVQuV9 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/nmix.jpg b/www/extras/wobject/WeatherData/nmix.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d21400caafcb5898c50f3fb5bf37696d5e8b257b GIT binary patch literal 1643 zcmb7@do+}39LJyceaGF@JB>SIF2*%t#~h=% zAZ!dFLjaav0b3v=DJ3l>DI+Z+Ju^eP4nvnr zHnKKim|L<~EUnEpb~aYFW?Na7D-cLlRu(UhSKGKz%~G4JZTY`vxgHRt0Sj0n5COmh z2q8erjX(_m7=a-0&)_5=L=pzrP6Yy=uK<8x1h?D=fvUwcqtQ({J8dy>(%5q#2{`fVjMhq%C5N}w2kuU~3&zYMeDA#EF&{ZJi|@d` zKT=2bM{tF`?G0hd8|p%H>Eg@=|9q5aU!_=o{S$nC7uyP7-f#S}H4VFfX9Zx7J#?Prbqrnk$I^GB_v$p-@*L@CxKh zyUKigvVG>S1pSD5?fXvk@djf?>D|uU(%E*$&WR_iLxrp(l^D+m^ACY=(vrwp)L4WB z6xl?j5gAO5i>q%4j-q9{^Gb|paMeUf8#p+!gI^%G``A~1danDGd|;j3&il!Sv=rN$rb5FSotLNe@mD z$Xs%|F(zLd#pFUb2)Euy2oR_Yj*BlE5_3g#yKK5+O*UjhWz6M%2x3~hi3y=wvtvZY zdAAjwErA3-$4s_Z)hWMR&lA+Z5ME$hH%TA1Jv6XH32nWs6~mtE(-qrgD|RhC?&&!a z>OcGxr!c=yL&=&zo#8E#oS&wBL()}mOB_G{t|>v`wJAGFcqaH`&3M!34d-vmUhfEC zt3Umvt6_^*P*q!rxTr3-Y%zeTR-pRxZ>8x>z9&wlDtwf-_gQf#-1rUQMoW|$xU z{=N`OpmG?LkoB6O2Q35xV(#`pnjfiS94}W^TQxS|e0`+EiI|oe@6l#M)8KlQ$Ptqa zJmY3CCTX>IYc0V}j7ecoIWB)gS89j;Am@Di@|LX|I`mE$?Ycj{o!dRGfHQS)cyrh# z$dJXpq^qoWQSnW;=d@n~#-y!;2g8uWx>ATh1uNlU*(1J_2J9q9w+J`^3 zImUgYbQZ_PHzN_pHS12~WWQC+XmgBj*V%K!s->ZV)T7Gd4pdmb53Ox`%Y&KHYcv#e2dB(Z)^su1BudCTPLiv&pegB<_)E*fZFncc34P>|& zOm&VjdcskDQr6JD1<@0a&}2??SF!uO^lOiET&UP@Y7ModgWM?qOlT~kX_QeM|USHnP6LsJ7}2qQZ?I~NC+Fc+7w zhLo6;2Fc+60R}-11}g@0W=25#gXxw_9yfKH9lK=>)n-M$^AoXTw7To)XV!Pdr0hcu@9)NQ87f&ZyelR7{Jhim zZ)MBbYI&jKWbBRu!B?3!omZT|#sPe}-GUN?t}WOpBVr7TnbFRGi);#aW!(Cb=N#>eMIkSIpipu+@o(JekT; zomj&CgxO)+bS5wJ*gO_Far?Wh6_+OnXt93K5Z$*U#bMR`qb$+W%g;}$G-2G<`BatZ z$*0Okjjf%@58YRM%V5^bn6gPo+JyD;($s>>hAy(RxP@YmedsUxX*-KWZHoBmug@B% zZj0?YBG5iZ_%6e}5WyWS4DRf*7ku~4ImD<^{G={JH72X`+9N}Uw^xLhu>O59ncX^k zvxBzx(|)ceU0eaa2WB(`6gOp9{aSRwBmEZ_YwNEi^Ey7=i+=2|Ze!VWG3kJ}Nsj6w za%SH`-43d5yvwTct>M(eW|rR<^ov)loPAmA!RPrR(o#DNWv_EB;S*Qr;+&ijd`Ai Pc-;yhGPoO1|NkZc8wUzr literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/nra.jpg b/www/extras/wobject/WeatherData/nra.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e00d1076c34a2be6a3bc06d8b73e0080aa54c8cf GIT binary patch literal 1873 zcmb7NJl9b-n@D9{(YaF+1c6ees^{cJ{#L0hWRQ z4)}l>00AFzm>~k7aOfdOI2;B?A<<|Q5`{twiwUEJM1@c&5v+))7zTsIpoPUH#4!?r z8gsY=bm)XYkpd$|2qh%w{+}GQ16U+r0O&zL1OSW$L9n2ME z1SL?37yt}{fT0i=437Bs1PBa)!mz*zxVV-HLV`lj_MzwFBo(OlkVj53syj^WeIp`k zRs>cV5CDe!?_K}`13+LXT%ajq0l_<9n4t3?4u_#w@e}zHS|$`9oFoCJO{G^Kj03_D zfrN!%0V7~%;UX^8o+y%cU0$hbaQ)BufybO7cb~NMh;-pfuJ4lMjh)?SP*{EcR*1*j zf!Hx;P4Y}_2-o7YKa;7OpQiLJ!7n}PytLmaLU?+%wBP{_H|XeQ0X}6Wu_$I7GfExz zWwd3cn$AGiNXMFtE-Z!~l`YOd=dfmHr157sw%*2*7Yz!h=1QA&RMyE*xvDOV{`NK3 zzSF?Jh~dwYn;RvGk25h{>t{NA<4EgVYn!M`t2|2-URw*1|K+#h$AmdDKv|B4~ z(RbL0S^i}NV#SGFQR>*QK<51U$4jc8ydF6|J!q_aFPAkng(ju&6^(*R*RE#p?#PP_ z@=L!7n+u1PJxm5GWtc(qRf*%~e96tIIV-40g?kPZ@m?Tz9*sGgi{1{gU_3 zrDu00OGsfWyY*#DUbv&f{{EQS0dA9J$~U9}QOR)7YkRqPR2|>49Zf4`<~<6Tvo4Tx zZhji%rtY!S`VlqfGx=;J?uM~C#juKW`KajbhonhhQ_X>;C)|^_*Xt`CzdpP3evhs5!b)MK^c*U` zk^BDQ1>V{N8Aqp{4iL(cLyEDHwjm!^_+Wro)BWzYe(Gn+@-v&==8LOVPJHcPTGZ9$5&b zSK~0VO=&Q)C_J8^>$M#mSv~QUZZWWGE;}dQnXO&L>Dtvy=hR)6aiiT{5z+PjST{90 z>qNzTzJ9;uub&q}ZL{>BYRT-#rG)nw`z7tx=p7S_Hlg|TEMIxme>0PQHJRX%hzaEk z=$(|ihnO9u?CX4+TrT>&Y<(;0)H*#jA!;kKEq-%*m_9X#c2#fqZmAwK9yk?*KaSxa&V;nzTCu2Yje`4@sZn zA2PGp#iSr!&U%Xf^9B>OZj4>{+J%u}@qW`ZsWltXz<-2eO%R~gLb04pJYUJSEDY^u7J}7VWHSmZ>82HWcGAW`4Bu0`i&u<(q&wm^*l|gzfnVS{fxbyAqZG#0{_a@wpbaic z)OotM_9Z7+L%gEOp62joL&EtdWmV-9S28#XgA1cBHoqt`jYPk~iPE+!dnh@tG^5S1 zjE#}TZ*8%oofAl>OygsB;hq_|5M%5<~mK~{w2)!Es*?jfshoQ(S%b=w(!F1@HAHax9^;rH;`DS7ypyHKR zh;#FJmghJ-*+<6LI(9;D`J<%)i#FcYT#-vud2ubHh<3Y&VcNZl$xa!KlgUg!5?)!f zT%YPRoIWGL_Xue^{bW*dj8!SoArccfeO1MU0pEs1&g&GhKK1`J5LD>uLBhR-6VGkM Tsp*GEsJ5={7pa@aAB_DC6Zj!0 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/nrasn.jpg b/www/extras/wobject/WeatherData/nrasn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..198d857d9f4aebca479d6a8f4ca16e6598820b13 GIT binary patch literal 1490 zcmex=W3kC&HER#Z$- zLRnr_MM+*sQBB)iUrp0QQ&Gvl(a^-w+Rn~SRnNuK*~Y`%*3KGa2qPCaHy`25wAOzLI1k&>SaMF~#j>U&u?1AdF z1Q-~ZSeaOvSz)#?G6*s;3n&^283`*n1_miOZB#C7oVW-YCT#Xh%T`&7E|Xa&(=l_i z#CLVZl}q0&Dz57|y~9r7U7+{W>m|;Q7Ke#nKBO}Hn;U0jn)>zy&Az$k#Xt28K_ z78qQJ$*!iftXet^Z8z2YvV4crg=61F7wDHd$CJfk~h z{R&=(uOBitG>UHOjXStNX%&SfS(+(7BGog9Cs9{*d*D;HR0 zeX~xlR=w)~sP+`=JDs&Qdh#Lj8pSl%PVo&7Uw>xXw&|{Q+wY`oQ$3?_;yUML`8S@4 zep}b2CVR-RbX>VSd98*=`L|!)A1_@vy5FC>;nir!ybO*>`z$IeTjMC%@c| zoVj_DX+W*2z|aPTH48>)1Jl96jRFTBe)tFvZ-Is3zqq#U>QhWEdVPw;cdzV`S$D)8 ziqD&8JF7o>&iV7a-#VHe~03e_N4`2-(Bmgi12q%D=X21*p zU@*A0?GGU!I0`_bL70|0 zC(r{_&^O6#vtQBBBc{0`=uJuIjm|mh{E6W*{;24h&HlOy`&i{(HOgsLZoD>o$x2^V zYDMV_i&A3f6(X@?d%VGe2jeoH=)<*Wx9+H&Jwl%p7st7WT1% zOQVx5lGJZ3T~N`isQ&8FAn9Va<4kGZ={8L8B1OLYV?1Xb)&l4TBuaF#hg`-@uvJ%c z%cd)u`ZR#VKeIZ0h)(El>{s2kKj(rqw2T8^Z*A#0-F$YHFp@`Yrb18Wjt!U9L$&KQ zfMeIYHX~`9Fe7;Q$(cblvs{%_8Cr0EE<#Z3?&Rlko$aRpMaweWW)`iQSPkYatgD;+ z;$KiF>0=4=;`uo825xpOgQskNMblY<(GkSv-hez%o(|9M2Jxc&KUa31H5u&8d~{(C z%6s?1AJURjM)qQ?9z$n&o07AMJ!7dhiJTHv&lgQ+%nX)xz5NtXT)#BZfyK%Cob8$C zb(`MkRKRiH^3wcN`2uV1N^Oj1itR?Rju}3`bz@F^iLGk*?|{4mE<-ni;`j^eLZ;K1 z-7RqR2z%ViR*l$YMs$+P{i!gf^Q-tlB)^wH#c)|&&u{PfXs3T+Zmwv32#z9r5u z|Mjr7(ks%Wr)C$uXZdmSTDKmf3+dO3s~!_O&pgJDc&;SJ)Ot%Be~(Q}=eFB=%iCyj|M!4P|KC2}SD3oahR9tu4n8yNK-<9DEqAN>^b zG`;}x+bph6m#cdj5jj^yq6D%AD2FR18kFo0+yC0>Y|z^JwMMz@!~s>CxL0!Ms!dBU zvnoC(MJ9MMeXCM-K3vtEpNA{58y`8c^oWvEwT1rvGKsP-Us<()-|MnUB}qYP<7K%{F+Wb$}Ex2Tmf7LGOS z+W_Tx4$guXlL~eaRbf3U4d9U~zmz4qGemQrES%3hL+2H`UbidZlsM#exX&n8-=`17 d>iv?STrbWX6!3&dB;{ZnM!^`Prl2%^{{YoyGGhP$ literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/nscttsra.jpg b/www/extras/wobject/WeatherData/nscttsra.jpg new file mode 100644 index 0000000000000000000000000000000000000000..87ec037e0d5a072c8505491e40198125306af534 GIT binary patch literal 1619 zcmb7;dpOez7{`CxZ=37b=5pq;lvOC_C|R*cE}2oS4KdfI<9b4iDM~_Vl}A@14TZ5S zOD0iKM*)}kj9W)ZDrLU#)3sz50 zPZMK+Gr;0>v3l5_CJ==b0Y|7I5NcQy5{3QW$R7h}Wq=550U^c!6b%8<5P1_|002<% zXWD;3C;@O~7^tE+TA%Ow|d)%x*4seq?MP&ezoJLq5amMuLSQ%ww7^Izde1L{4?^=2{tF+=CvLQ&^FG5t7=R zZjA)p6<;ONX{*_aBb!7~udJj2(V0U2s!P(Tkvl~=(Y}(q())Ci;$kr|N8-sBCdzPK zfu+tEeos&7RnVNWY;WQgI+UTd2Yt+BX2u^$9h}L<{1)Ht)x#3_qgu)<^LBq~;3~N7^X? z>jY^9aR&g>s7x~A;j5cnX zJas{I8#eZIF3=fOe;wm=v@vP6R+yK1?O6@CHXxjC%crjcJ1QW{s+1i8Yo&`{g@oi7 zu<3kL#k~JYYw6_?-X^q-lhcHiTL2bZVk z3we9BSGGNq3i7z4rMG$6>89^cj_&IVTk(am^oTM)v?X8@>e9kn_uFALKT$jQa82@1 z(aq)95>swq>3h8X%dNp( zA%oi8ev;J;ZRRPNO?%AOWMW&kpR}ccNr>;yS{-8AaDjLsS;^WSwlA~qb@t4_&7>|e z`N*a15o00dDwFx6f8;;b>2dT`d5F$4DL^{XX0zxmPBn{0#JTd)R6Zd^;MC-zPOa$t zKEC(rU>pC+0|$NQw9YeRAfNL*E#fn#@v>)cR9}zM51Ya)*VaiQ=}|EQ*BJ1q#^XR> zk#2w338$$kGXBo;*6^kHz|GZTqM|p0X8evOv=9PzgJy8HVzs*-4*J*ZM@W1ZED6b z$uLu?g?lD?!63ep>tbQK``Ltem^7y3;eC7EMVqPg_s5^yn_|Ts?6sA8n4kiUha9Vk znVh)h%IUo9VYZXwi`Jb*P@N!(thk&rY*Ff#H4TPnDT_WW0-Oval^>oPM7C>x(@=P%r4Cnf87;?+0#=5ve}Ys8(M4zQ*!-N z@cB12W#FGF97|1qS#LqcrFN4ugDJmX98zIJG7myC!gF=%NQUQ#d0D5s=6BK@#UYV8 d3FG(5j^B@r%)+wCFmduUw-iUtjR}+Y{{`zSwLky> literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/nskc.jpg b/www/extras/wobject/WeatherData/nskc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0fdc7891dddfb983993f3c57561c13119f5743bd GIT binary patch literal 1776 zcmbV}c~sL!9>9M&NkW7K2u86)5>h~*$c;gZTmeDkYAGfw3M5ECB60-eSmlzGDn~FN zw4xkAP*D=YDX%3E5L~PcB4BK+5|KmEV3kIok4?J!-1qjcwx4-3Z{E!JJM;a_Y)o%F z1uy~BeN+Gh0s;P-25dYAya5PUi*|%)fWo0#5O6pQjzpkPNCXmzLhGYZx_Y`uCb%-a7 z9P%pa5hO361Q#Y#nLEa$70zrlUW6YMQ4h+UzhMI&-1IQFVxgFG&TvEue7vY72Ohdbar+3 z^bQP4hlcNrjNTo8F!6A5YWk7<*^Kh}?2Ebig~jE!zrK6F@|*g@s@4kxK>nlk(d_@c zuo^EgRP&@dS}zbdL(?HxD9p?rZr~ZJ6Me#v=#Ymn@~Ws8N{}SSFcmH)MTRmqcX~!% z)~fws_UFX%|CZTDvHy9=0W<`p`8)^~@Br5Pf?{B*=id`3dbJPs<$f}=$YiWB5`?{Y zqvE&g%{KV_qAqGT)1)A7@)Gy`9=oq5ik_4`Q#;X_9i69XgHF8s<$;P(D;CndDV>E! zTOKvr8v+QJNw!N95#^UzpB^dMb05rO?{m3M#+gjZRe37H`hh#8$|)1dp8G3~tW=+G zorBN!v!UF_OX}psqQiW%?(M(6U#)zmuO@p89&+!mDqp8gIWOeU(_=pw`nf9QddR`C zMZEVm2Emn`eDDIJ;522bpCI;-B!#b>QVXx;I6S;D^k#Z@Pupug`c!-;-&?BoNaK@8 z!jU;#L}#NLJlA5)j6_cqwtiE6^upNpo&^a@p{5GS;Bj&n#uE}RA+JUi+<18+!Ejz~ z`};aAsQ!l^vgt?pNw(fiajbxX*Jt}?ke@zI&W$^vD-qBdFF*JA^c3Hg(ykn)4=Is)sd5P zYRuQjy?qr+9RC4h%Yd3mxzX&so*!ktMx&I&(3e>*MFei#L&E0GS>$`AbvNtf385WQ z0p|6ZxBjgdM=LtFAkd`H5+3-O@uduM(JNP>ejVJv&h2^H)u)WSa>tjnDDqEsebzIZ z{06hmccv&<)ef|OkuOeU>~uGi#Lu2RUlAN~*PnQ$#wz8P5Ra%F=M4bnr8ZOs7p>;b zm31WE)0GP81HH|4Rm0)Cxo{<K$_*8}5id8iG!ydahzTo5z8M5=&5ui}LvAVt(UgbwP+q@v3_D zScE~KZQtZ|yR^0J>6L&YJa^7-uR6A)A6<+VM1mb#fHqt9DZK-eeuK4a0i%_PifViR zE`v&M@2>K{>uWqx(-S$u*~_WUVec9#BSFvU+Rp={&f+Ho(fDrPtC`tD@)l99{qbm4 z+8c|o(!h~WX{dQc05P+U>ElT1EsQ08y%U%BNdDrVSFSC}6$4R;l#7b>Wx6Dur`SK< zD}e^0?ZMLWilMF4Z)Bmky#Oev=fP};SloAV>7rez!q~d-B*vOg^a-Om1n?k$|MpUZ zbF7bQrFBN z)-6lBX&9NAKZ$>uHeut9U^sa39M1J`Yut72Hk&FTL1$zEKmOK@DxH_eO4{c=B~1+_ zv9~*lZFodcqo^2vL=R;8PHuVGFQ`>r8GIPLV2b&v_ASZ$e#^_pXDj^DGs|o^*V^~X f#@hQ|hlOuTv5xvj^A@jLxG`B!mu)0Zxbf)U$iMC} literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/nsn.jpg b/www/extras/wobject/WeatherData/nsn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e086e6c062da8c7754c679a47b917ec2a11ddf25 GIT binary patch literal 1275 zcmex=#1MjYwPfd&qSH3QM`f+l2)H2s) zxd)dZD%f{73uNZrk*T>BIuHm%5r&p&j>GobOz!EcjLRch!SaUW#u| zd{}<#>i1~7$+4YN&8G3W6@FyMVow)H%Cg?mrYA0OLD}fge+H}Qzaphx9y$3o%)8my zk1$6qx_!xT%P!tme2ZTf`Yu?h+q6``F7Q>|oU2@)U&rz;{POF~x5xmV<%u4%^Y~Yq zb7W4I^VE`G!eANY72aUHLsR`!%hvYvk4wJ4?nzfU7SlH2kJ&pf#h+YSk;R;xceW;K zsxvdJo*edR)l2*6&1Ok#WW1H}(DQxlIhWS$GOMdOj=lOMQ>C(5tdfa(N zlOnuka|NGMn6gkMMYy5XHLH6%PreKPD{248FK1@-+eV*5lIlW1xVNOxaIqe0xd|8D{ zlXkQoHovOb_F&smmi_a)GaUU7Ey=liYJb(UvbjOi=Um*M7WK@v>4(}K=F5v)ma0yA z=@E8Mh|luCs^obq=6SrivfDrH)wLGB+2OMhhnjnhVzoH^Z2eXE*K!*y`@Mgvk!?@rx~UryJfm&ONqYGlhx2U*zw->g@p&+QN^kFwUCkq$3%7|J>A&7}*a{dj^?( z`L!y1`i)u*#of&_pUjyr>>uZF@X@O1zxh>6PlY(2^;b(=7wc8~^E6i1bC!x}+X;p# u6Tg33b9cR9(2S1@q^<==O)Z;fI?YOV*Tbl2_NOP8`o!(?uL@!Re-i*^d;28- literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/nsvrtsra.jpg b/www/extras/wobject/WeatherData/nsvrtsra.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2a249335f9f072cb825cf3919516bca4fa62cf49 GIT binary patch literal 1602 zcmb7;dpOg39LK-E{kGpOA={)@Ziz?{s*}6Th)sB03Q3L-Cq|l-u2iRl(nv~D%G#7` z&D>KbPCba+b15>4N<}93ovrhn{y*>M`M#g;=Xt+BukTm#S~36>ncEoK00cqsG&~J} zq!-WuN;*Q2%uzC-VVPslXc&!P5aj2<;&BKTk3|sN5*(f&lk_IHgdisyWRQPXQ5YD; z5U>dLXXSsHAONBxs z0Q<8eP0#>CM6e|CY9kyCucT?bY>lgbBu81x#x3sjJL%FYND76aUq}F8GztL_1}hD9 zh_V*}2FCnXfKbw$D8tb({*h8%9Os*)2gpeYC?ZS*)?l(G^vHAVjccx1hcqW>w+b6w zmahVHo^suLJj1V=$7tr;KQg<`yfN;(&pGu%9q1R_&j_q&u%jlOw%Dm}+$o}RL!PQv zn~o{ltNp<^axjbs>5XSB&x`KZrkk!{Tx2yA_tnwRkC;<@C5mXnpDuWDcDENer8@F? zj+|88=I&+s6v^`u%=X#b9Kbp7)7sbjWkd7H=-9laGh1{&bskoVJsL2*MUUp3W4hQf z-xMD&Z1ToVX%^JAD1W&gF|5e=-ji{W71WhZY9`NWx$2tJ_4}(+teJ4&ZNGZl8gjdx zg%hk!!7-6zYvXksR9!6XcpFY`?Rm9G1J%}L}H>w z*{OT}?xBRTUpwh_&HC%MyF6#D89lI|;W}dOw=R+FRE)6;zio1dyg&#Tb>d$yKbEGy z;hEk(^N&9DHVgpIxeqEd)u`#tgz8eMc(l+yBH(Sp4D&3!x#MeX+r6p!fChcb2sZ~c zkBqc3V`0n(*L2oc&WC2=Tdu=CK1qfDF}c)0jB^L@{7$>Qz1x%p`C$j)CX#&M)zPWM z`)_P@6z@E{&w3|HIA8p7h0v+QzVt>)U~!wgiJ*)ZOT(l2S&Ogl`viF*CHjepyVM2L z^s%z@)4|@?;vl51Ua#$QSdP=y#ihMG z?`RYyoF242+n}l{GSX3Fn4Vrd&hc*CZ}d33izPa7{&7{Ktxv%)@@nGP$?O`Y+L@@G z&qvapT@$?7NG=-d8JeRnVK4BTd*T*Sz3<(foV&-{JV<7_s6^u&>Nbnsu<{J~jbNQ%aab(uQgLlL8nB_#+3qy)QIYMI%ajm8qX!QfM zv7|-uIUxyz) zsooUw*4Lw>@{VZV%J5dDek{an6YI(;I29CTb)S+i6C`Of8LrGL<|4q! zcp3euOL=kjc*1AZ8-2M`!&bWuHgMN7-n%!b+NPd)YFX)aa&T@!%fv4xbambD`L?3+ zh5dJH-|1M1c?Fe7Cd%^tdSlhx_HJEk(y92Y!TnysL~Fh!W35QjerAQRHk+H@YDl`= zv`;a89G+U)A8)^N qH2PUUTD~eNtVLyrN2uVmvU~eAxyEJF15vbjMVq-peG(8X>HY_@gq&;u literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/ntor.jpg b/www/extras/wobject/WeatherData/ntor.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e8e3080512a853c1ef3521a6947955debd8a086f GIT binary patch literal 1278 zcmex=r6P6xY`gGyJgU)O_f2+=8I;LFKwb$tL#8pf> zZqLqrDY@i)^P^?XlQS>Emo=_g>G|N~x$K#DwlCZLM0o0gr=9^v%C33Na1v;-2imD3 zz`(@B$i&JDcMt;;BQuMzBCCL)h_aA^lA#gM0USVQF|sn5i+G4}GzPC&BB0ZKYU|A~ z55MJ?bvnX!i$0F{FeB{Dv&Xhvec@`V+NrjCv!mQDTHoZ(_1P63s>c08`s2zEU%#08 zscc*sJfrN#){fIVJn`)2Am_s>3Y}Z{5FI!MXJMymUS1ZBNhC9ktxgCM9eo zy~6Sy`;v<%#8#gAusvKv%xzxX`DSo%0u2ON0S`|`20=wb$H2r!frTFo3O62n2n$Yo zMeYV8?;|UlFXtLFDc(wYRI^I;nRxxpE!LMUgxU)eHB(vKU?taY*yzPW!!j@Oe7Hb=5|{F`spXUervKgHo@ zv((||236iiLa)_MX}-MQAaiHrHlBWWLTIMKr3U2t{IDXyqj!7Fo{RBH}KznFRB@cI>Nj@}RSI=CiH%iw*O zf#k-7iy5UZ+RktPdA(`uUi$w0eW3?k{}}=cEJS+VX-reR?~yBBpyF5(EPnc0!pcUs zcPgi)vwkZqx;7>BqT}a>)4urjtDcX~S&@-;;~LW!1GeoE?_E!EZ~k4ktbloo(i{T~ z5tGOr(|0tLIW@S-6+C(s=li&0+r_KT0)6j?F640CsC?nf=H&v159~Y{R-YW;yETxj zXWU%y#{Dq=0;#C_HN{dBE>76EW1@?~1p~(H K#UJYb-vj`S0IgU6 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/ntsra.jpg b/www/extras/wobject/WeatherData/ntsra.jpg new file mode 100644 index 0000000000000000000000000000000000000000..afdcf4c5865c9f461fcadfc332c2f5fcc16f4308 GIT binary patch literal 1671 zcmb7Ac~sM97X5ztWoMC)V3DmMh#(MIgjkhDP*$N~-)$#hSO<}%&M1s59hE7g7$gCi zAd3iuAP~yhS~fu#0!SLdmLQu5Rq9f(5DPXFI?I`V=f3mZ^WJ&y-uKR@m{BYO4KFuO zHvmBp@K6R&$iQiUP?iw1$A~>3;XOtnkuVaCLZg3s7#tRj!C}y7tO^!~--9w!Rl%$7 z6?-QCk|IzrjKX8knBPYJFH-aZ0v4PA$6$y85CjM&K#BpN2LOap9tQpk3_zi=I3xrs zyH*+if)OZXVE#PZ?#OCf0)9kgK-^i?VqIuL*X{6BU;DNs7@ z?V=C>0s$eF{r@b35CA41l~zPQ2FdxYLJCxsS_A@{j0^2Yid zGd}C)eWSGZ;N^?%U2%pXm@gfzvL+%s9}M@@=~A;;sv(#)^TLpcDOoo@S;+%jJM1~} z-8q)ioLxdEu$cKv`W*N86?tf4(^;3G-`8`OnD0)v z+ozfDKUe>7)tJ`fU>#*|>mNIr@Ygz;Jb%EUahP3wUbTYovM19udxgtvj1Dif^oT#4 zI^US}UBo$cLR~sN@_|p;tWds2QbdRUz7$6&l4IDzZisNBxT*dABhuDF$V0zc`#1rn5?3 ziC?O9^B#x5mz<4{9S&-m*%}x{+#kuGPBSJH4fA`7O1;0OAuSB-pOYfoGwXvPuRDOu}ohMaE5?eh}`oXJ>k5+&?W$nN^ zpOe=WCRYzixE*c&w(jJ8$7=2y%5LG0U)w-M@HN$}FqMX){SCbfxa>va!< zg10_dzZKx)#_xCbv;BUY@0b(4`whC-pecag&5OHf9e1^&Yu*!|x-JOesVp>ZURX}i zdrN%AHI1V+^zx$h9tYeL@h3`lcO|+p5&4D< JTTBU37yoKv)pWFk>FC0VH7Jg-j zzcSo1*k|>NNN{b|!w)0h?wh%l`Z~t`;^xkeBTZk=#hf3SGEQT?b)Tfwz<6!XTvwr#Xs=K@#byq+OYn024~s-g+#c&EU! zGugs0d-vvJ;qvy9gLSzb|9L{AEHS8FvzkJgnhW$`RbTf_yvIfnTa)}bjK>msx6bFQ z+iw)W$~>*c!|L`lO!+J?cgnGr2Isqo2E$p;YTsUW``t-(C!p%>EOLdb*zg literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/ntsra1.jpg b/www/extras/wobject/WeatherData/ntsra1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..79012eaf82b197cb3dbc5a9f1124e22360f5b70d GIT binary patch literal 1628 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 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/nwind.jpg b/www/extras/wobject/WeatherData/nwind.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a2952dbcea26e43235571872b6dd96253f0a362a GIT binary patch literal 2141 zcmb7=`#;l*AICqt%ca@eH;zm0rr6vLx#b>}X|%#ATW(3ry`-WqTWCVD=(sa;UnP>F zS(Mx4R&FU;MV+RoP#tII`+f8Wd|&VPZ?DJu`F=fKThF&%0ngG(adV##cil#oQq$jTyRklRsm%JL|*5_&sQK~+IXMFoq+%F3&$ zt6|iYF<8vM5D*jwgTvs`2!u2Sg+yWgZ*6r0C<(wCu!Mk602l>=pg>!EKotNW{~h3$ z!~p>?1cZv4*yAB zfsnhS{N~m)APoVD14B@NJ+RS7M@!hJwYM1vidE1XTTsl2G?J+O|jOcNN2Z#mc@Pw?8-8z!9l}-J1<9{2BV-4G8S+W zXsbDG>EZ3w+!fImQKqL9SgUBv+j1W8g22Xx!_s(i>IoF-cZsfoSHNso3 zup__W#H^#55>of5uVE``f>N&NFU6O?koftol>i4Bm{7}iL@*mwCY{_sTxeiIRMP6B zp!6DQfSU9Z)}cugW}02Rb0L{CUaMWoD~tP$_2+VMcEE?IB-hXaAK}C{Pi>~I;}7B< zWf#5Ih|R{4l5gDy>yx6QkNJ!$HeGUG;Wuj9v3d6I5ydCY78|;$3vN5{NPC(YgexJL zYV2!8J`Os84C1jwidl}2bv!Su#pl4KFU92VcQCA%h#!}HiMX-O$groCm#Ke{jMR8p z;JDP-xyw(MJsurq-w?z$WGx!%pB~S_86GdFc06WQ;A4sPZ1MgtCC1(glB5pKW?Z{oWlLtZkNANp zCb%Gj;Zn=mN-Bu$PPuAEGl{KjxrL4lD$5OeV{?id!%y6&#P-r^dEp_fzW>fDnj@9uxnTeUiCC~VNv}ji* z+%Zn}(k%;@b??ksq@<~q91qULR5OAj(!fmmVp{E~L#0mU(Gn!9m1Q0FEh7>@*2)7> zb_LDDV+MIm`}2DPSvp9J-)jStJn25&b42F|Pc!`Ecat_*747TUp?9|cotmGL)U~PN zc2+aKYN#l)V(*#FlMlRmu9DDg6YUAHBb?_j3qwon+!uoX@yB7+z_a-Fjn%U@xH!&2 z=dcw^PFlXUhufJkPo$#>xiXxB8a96|&pxzYXZRMrd#XG)r+Gfx*d=xMPp^8pub_dE zy&djP->pv48r=Lzy?uzq9$Uf(Dp4{0LxS69ut)0ICyZ-y-*ud2OXqtn)z`;kM^cBazY%I6o$H?pE5 zM>fyAnuuB(^n>9S_WB*a zA)4iRmljx?Lz0ud3Qly$m@py9Qd5AWkDjjcPfl3tF``Tz(%(o4g-gA^?(4}P4|n_1 zc>rIuu^f^)5dHhbh|LAmwC|XM<}T_)%I8=Hq3A>>o6cEkjpa;N4XPxxdn4Y_%AGL7 z3HLe}^bg<4X??SM@2+logsmoe#NBrZ@af@5tZeuFcm~OP?({WJu|=-yj_++J|Lac$ zy?K5k0_m&iWpJ0s^x6DRGYZla8S+_mRt?X}yE0qY7r)ke+SsT2rV5;9R-T6EKmMtT zCFe(-)ANd&oXQC>t#Wc6H&c*}FgmPls-!p}fpcgTEAaRb{z@t> zHe3jiH8!_3Ia9+JYe>ybycd|-GJBM>5hNUPwXwY4_C!unzc{}ma(fVwBsn&i+i+~| z4YkQ}zOhdL9w(XyC9lldkDE39Rk0*kg)!ZV>VVOz$54J)$MjOnDYs`M3t3QC4f4|a zaJWv^&2OSP8z0iad$8J?)8v!p`v%ubW!1fOE377tyzpDvS>~u{c>dm(bf3N45IGFF z57*$YHB(C!ig<3fsg~p+_n<5gWlmFZ5iFC`}9n6Ohs|?#1AxH#Z3F~=yyTk g;id>8uEG@8^irnP)Gk!r+qDy0t`%y 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 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/ra2.jpg b/www/extras/wobject/WeatherData/ra2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..82deb112456804e4da98b715e0167a24a62730e1 GIT binary patch literal 1506 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 bl<~+Q^#<&_KFnc>vx@fv$8@r6qj369WFF|~ literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/ra4.jpg b/www/extras/wobject/WeatherData/ra4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..82deb112456804e4da98b715e0167a24a62730e1 GIT binary patch literal 1506 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 O^COMWMGC$_HSr(QQPTAQ literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/ra50.jpg b/www/extras/wobject/WeatherData/ra50.jpg new file mode 100644 index 0000000000000000000000000000000000000000..955f6103c3d0dd6560ea42a17e66144e78fa4610 GIT binary patch literal 1711 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 P{4I#>S)&n@t{ndtYX0_< literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/ra70.jpg b/www/extras/wobject/WeatherData/ra70.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1aaff52175c2ac303547f998d189e2a582d7d208 GIT binary patch literal 1705 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 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/rain.jpg b/www/extras/wobject/WeatherData/rain.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d3186d82f1e54daf4472fa3305d21167475af3d6 GIT binary patch literal 769 zcmex=KGB7c-2(l^~3b6?*IR+MrCN_$QsTdhMO=}M>yI;S}+Z5g2P^q0B@wQ-Ef3bk9OG1yHxNn=HO6j915fdNCwWZ8?Y{RfS zR(o@KY@B6}=q-Pq>OIc)H4I+74trFoZlQPLOZ3#OzkL!^cm7P5zjUeFImOuY+VgdP z@-EzCjNH5WEw8Q8afckeGP4^p3NK8urS`70l8-oauxIbTc$d7z^$!caZ&&Luwm5OF zzP0(LuGha6tTWS70;YX67ix?YBRr}Ip5`)-EE0U zX1kZ(-jJ-)A2N+^_J_MxJKCn6Ou1e6@$er{_PK$pWiwkllG3C3j{Ma1-xIYY!E{{) zbAy0xnfEMPui45cA2NQtvAd%EZ06ga<|$@-mzrJiF=jg#Rm9!)V%6fM3s{`zZeqyT zAJAkdW5$xpEUUOjyJ54U-sU{_-!hu^%%zc)UmdM)@BSPOR@dO@ U3)?31RCRvJy!VqP@&CUG0GVLcIm|d}%pmtLgUX1;x$cqHT~ub4QFi61&|riHNwiy;+*jFk>==xU z7~{yXZCD)$jS(3oOG~aCMT;`e?DKj(ujl#q`Fvlm??0dK=l%VNUx}vxd3R?wX8;62 zz*RDUcmg;Iz@ac03<{SlI2t+-E9}!yR!~$^LZel1Dr%aV zT3T8P%6MHoR#yY7h5ZKtN}>oU#9kzFFIEw)i2c7M?gY?Cz#8}l3gQ6>8ib-jaSxyY z01yaN()PcSf+L_XBnXkX#_|9Jgu*}=2!SE~eFH+EFgO~J!r%}Jc;h1{6-|^J&(e{~ zI+k%MIgOHt8VE>m{|l5P01z%E@pRFWXa4}9|M><&04N%B1cyHfQ*dONoTZCJfE*N* z^n;=S62LVJKk%y<$YH-oel{i;k_r-*-CT}s-l=k5jOD90`FdaK|OnngbjUvQuCFhiur6kpPP)-~g(UTb<7D+Wl~!Pj`3#g6ss zn3Y=ITj$BFXhY7%B?@`ud5bDR=TlO`-9QdQHm|3gUUbs|d*iAob)8lozHj+nMKzmw zBOb@B@v}@_tqRrI8~FW!G}+?dD~l|HNOSYkXK38Yw)tg2*B(kRJ!&K1!GLZ~#q~+= zkrNGVP*NLD`u(Mq+@HsdmP%y}DIre$QnRYc+*&bE-N)VrQ*!Aqc12~vyoTrHt3+hs z5OY(BHWw_SIh%1<9k@32^sv(3Oxdot6%zStcl+gumU-(}%`U7u^~ff{M%$6eCnK5P zKBR1)J?9(!T?u+!Hu}63LL2$C3%Z}vT)Q{c_+^cfDyCGiQw->jr50=a>E(jhna`X# z7J86C$Z9>RZUvoVm0Vc%#kP;WEW zdbApQ4zEuTBspYcj`OT3OS#s<@8>4m%=0N{s@0gE^7E_SD3OTk6y(o-g~54x*;rCj z2t6Iufww{?i`RUA)dj z&5y$q7GHAP74l7b=OK(4=y=x92fMGKgr&}u&i!`Xb<*!rw2g=@&mw08PwE{Sc6qu? zqGh2$_Ul^#q;PcEW&g$LKYpP8P8;F6xZ?b_7W6{n^=(56Zp&qJ(!iuPpg{AySE;wi z_=Dzy7=D*+6aS@IpcPNU`T7Z9a2=WHacED3`-{wfC^VtCP*FUHPlC$cz2OrGW z9}aABkFfZ3nPq5m>;q!?rx`F4rAG+>tW;E>5B>7jPWf95`#6R`M;YTY5r?%iPjL>p z#2cq3tWd;2;pStSkmes+EB~?P-VL*F^?V47k4purPZDK_b1>d>hy(>HlZehKKkS_9%eW$KT2PO(QS*YcYA)>ehnZMNtx2gj(#&Y>Z z4u?FY62V)8o-v`{P`TNh3Ytd&{HE{cZA%lR1JdgK9!etW>75;~lF#<*ZDxiS>wX$e zPiwO>S}Rt1>PvpQyLThv!Z5duD~HgLFRhH0o|+9zV3aWUe?@x|jVJT3{NX~kC%z`W z(%vvq5HuN=w;sERJI!~1=?8rj1CP`$30N+I>x>^4`8l(C3{Rnd*jmJ7dHa*V`^@4d z?sH>!(Jy=xXov|Mi^u;303iF< literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/raip.jpg b/www/extras/wobject/WeatherData/raip.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c2d6f7b470bda80c5a809a257440d79e1027a70d GIT binary patch literal 2611 zcmbW1c{J4T9>>39h8f$~YqG{DV&bA~4f9jK2tP#0t|Chb!(?A0>SsHaGCv}P3}xR2 zC4`xwkaeu{vkNmB`>1foz4!d?Irp!7@B3NKbDq!V^E~g@dCqwbM-Qg~K@&q`LjVK< z0aw@!IGg}30USpH9Zg_%2XjHdY(Y6WAzUyhHw*@a!MJ(&dAWJ`cwjJI0bV|SI9veE z%_}G*2p3|n;YWvn*o8+`5C{~`4dZ6-{*O9r1%zOLE}#Vl$pIWfAg~bVumg|*01zkJ z?UCVsiG341MStkCEtnB=P!q-KF;*vMjHMMp1#D>PE zkL?|uBr>I|dth*Ac!WASHa;^uH@~pB^mTbe(R*g&8z!G}fPee}rAx!jQ+N-KIZls14Q_RJ`pXZqTxtUYz zM`-^b`|rSF{x7n>!2ZoO4)B3N?8gHO0T|#?|XD_G=vf;+2U& z#tBHVV~&UXka6MUWUz^XufW89{$g-J{2l0Rw5vaUwdopZE_b+t^@F5)2*e)(-Vw(; zq-AP#xe&KU7TOa9w&CkLWnL)XwP^1hl zB^Z4@yCtT#VD`yET1(Ar$_76vfF>&U%?)`nN*^fKYPDbMya`OK=8fy3{cLaAPw7o& zCs}?vRS7HnV>kXm7e)oaG1j`+JlDwx31DuT4%H4e?YMan+*-9g6LN5=R}?03j@z}) z%Z0*bj;lYNn5L~X>Gk7r_X+DLVs=W^0@^0+*CGT$T`}l$7DB$Vm0|lqn^~SXz4rU+ z^d}D|E7}mZ^Gt#4RG~{7(515%O)jZ`GS^}c-;eto^1f1WacwUz;B&3`xi_2E#)i7#-LdhH^__E(FS) zB=@8@FCQSA3GKdg5m%WkZ@H6C8%DdEgTMDXHyJA<|6sLzbmn4G6QjJM;GMH))%i`v zb#@VwKE`nOGzq0(kl^YSNgrjMnT`U}z8+}ctp<@)XK%Rx!O2fcd-65H?Sb6# z_qRy`=CQFOwQsNV*T;l(s~c=FeCTQS0KG^5oGTJMku`M#fGlr|*|I80Fnjo|>oHT_jpYT-AELkv`1yu%sN#hoT|fLtxtY`xkz<^@5s_|3 zyOPy`jAZ;7yqOL{Z-^SSF7&p{ivxae|;C7l*Urne!>;67q4k(7x^qdRi*`CkDbfnS9dH z^#j{2;@(89dp%xm$m9|cHP6MTvC#x2F$>4}X?O&l+~ihQqUJd>-uulG7l!pve~f)8 z=cA*CXpx_9A&Sv!y-h9ESBb^u31vH3Q6Zn(Y%buU!){>#3SGOen(C%S6#3JTXgOIK zMzP?*ZSwh%`YC$V%EQUpZFYjsJw)q+2H%W7<}gCZyWq%C^T#*ey3-B;<6-aD#B9^B z7pcwf#M1mVqj@%SgfSw{Su-s>`fn?yRy1v@$}{`V#N&ii43=f@bq{d1D! zk^+`TqN!bBx41%!l~`eSImkEP-uStcs*vjb`3yvmUd_apTynE0h>35-jL|m9p|2|v z>dX`<%+l<)Z60?v5Sa%vK~?b3CtnQd9e1X^uNsSekIQGNZT*l)K8-m0a+p4#Q?``c z-SP0@^>JYDmyNMNMl0_iG-uyMu{OeH2A)@F*km33Uf#j3I3ATDp7#u^BdopLKQTnL zDRgwiFr;RSr9;F;YoDOpx~xHRCqZx!2{2XXgP2-9g~C*bbdD~&V_ zcPp2xrnufql{$3t&`7=_%l9KqZ6MsOcv&uZV5)2`bH{eg`CLGFoLZ$sdrS%l$ZYYlQ+AG^&*nxlSItYf>@}pT~yCKVkJ6Vjp~ZSF~S&zU)a=uPg4) z5X^$N#d6E2nxo0&AB+{Rgvue+h5eMD7Jg^9JMdh4sok4u-W8}Y5-vw`k+RmXRPqvT zLBjC=biyQftGZMY1BX>44ZM7V!JVhuPm|Bq8H|_v^9nrOq;xq%iEigQ4^HFTS69t$ iY>e#DZ`^2zUl=gNN&eD!%ijS$r-$uX@q8(8IQDnpQN`f^ literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/rasn.jpg b/www/extras/wobject/WeatherData/rasn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..77e31d51204c1adb8b9a43c8193ee87a5d529d90 GIT binary patch literal 1379 zcmex=W3kC&HER#Z$- zLRnr_MM+*sQBB)iUrp0QQ&Gvl(a^-w+Rn~SRnNuK*~Y`%*3KGa2qPCaHyD{fyJG>d6yRpz&$~3`|Un%*;Rwp@5Nzfmw(}P*_08NKx6) z*u>Gv8E6{^&<%{NOzMjk-jbUZrPaGp!ROSfa?#kfh1XX86yPjsowDxj${isRlleZl zN*`xSJtD0(qpV9Lm@VSf`UmT7>+RqREhu){CfD_BWB!i3l_FQVPbaO&f4pmfRL_k5 z=%se$a_=t(es@3C-)(cre&R2Apwq+z8JJ;?g3y8r24JTE!^)nq5Tr&z5EvLJiUbuH z7zMzpm_Vws+qwTU02OKg{mID0!o~>qCj+A(lYo$-W21tSVPImRkyFvcg&UzhWwU46 zrfZ?-y#7bgZO++EJp1y$c<*yx=vMmj!L(l=&R<=m`c+_cY4pi^+ZS5I9n-O&xM|HT z-`m1BWsVvwR`j@Z(sO6m+UZ5w)i{JS6M3T2=xn1K#q0mdB^FbXOf zIwlGP7H<5|IC0@aSWw$5illf>(MLo%R(WSOjlw-D(&6hb< zi*}b;-OCU5Dh_qX)|i>qZJNmCsj9lQ{EkUf#Kz8p{I5>s^th$+S>8S8oB!^`h08Cb zCa(6LboNQ0^mT8Ml}b7c?>LWL`nLE-`^M!Dj_;MKUO%4`=wNV41jm(turVBlUy8L3pqVtd`nX zUv*;UjDxFdPM?V8<>_CpeO=SQ$RemO0+(#q*af)mpdB^@Kb+d}>ZCswMk`&<(7g6-Z`gw%A#*;YJ_(t*oGTy=L|D=ae2mT!LFuw}ZeJ@ d+G(HNJC|h^E`NG#Q_R_S(wp;Y7u)~82>=xX;H&@u literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/sct.jpg b/www/extras/wobject/WeatherData/sct.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4f813f811f1876b9ec64b321408ed80ae3c93734 GIT binary patch literal 1333 zcmb7;e>l?#9LK-k{bJQHTYjWA+qANaOd?{ke$KNCA(u#MjX8>;u!Jr=6=Kt(#?|%f zs9Doud8{M9X7eNK%8>k6(Q4_(?Yif9vg5hu>7V=S-k(2T&*$}io3y5Jz$$PDV+R0& zAh2uU0MiJt6@bHFa2OO0hrtmDIKtclX>Mj_j$VdZVu3|3$70YJjEx=M!NwM6i@`Xo zUWs!gkVvHEE6C1dqBEXIA}&fm1Oj1hW^RQ0Vn`j_=bL~T5zEWRG2jeP7J}ChJj@Z2!e*90e`^TzU~wE zun@Y`m(0D6N>yLLmuIf7H>vQ=e^B`Tbi{VmI*fKXK#xGT6;>kHxlXtW2#k~)U zm88GL!Y@TESqo)c^W3}0EfUd*6?I6XZ1!-vc~;8vg@uyw208t?s=d@bvi!3&+|{oC zY{I?<+_F%5bVuGMic$R$hEaX3LXfC_ypRCa#qD|1`}5o$GCJP$rCquV=jZhLlPU;R{# ziXjcdi#>XmGM`ls1|D~xb~>IpcQ;DDoaISnr^4A|?d-qW&u3{i#pe|jyjhR`Fe4Gz z-pIOU@a-Eqa&G4F{>mesA5YaGzq&E}ohAi$WU>m**_TGw!Dhc(_gi^KAFnNdN!Ne{ zJUl{Ds8;?K(QP}?!IcwMVHnZQG5x8@C8=^LS=@KxK$*z({f zs`;v}cwIdwhb)M4z|p+i1Rj~w_h=y(H6Ap{P6aDeT-;-|{?DaUic1q;ToT^*OFXWnHc$=kk-T!UK$Yhuru;HlddEm%9@@}*)dytsjfxW zrjKdDYsd6u+pzlaAX_89!u#t5N6kiWFYOn>{s4UNA0yo1?Z}k8JmsC5AB8H9y)!Zt zZHgQBu+;0`fkK0Ge&xF}mQyC+#!ac_J$BvG7d`JjX4EF=-xJ3e7saB{s4a#9&8plK zMG4~T>-Y98BIVG-Oy4e|0#ylkb+GpukXXA9e@kb>y zfxe<&QNqNz-&sli`?duVM_=5CaJ{EG;Fi5EgDl?gpnH9;RWtX6B{f$!RQn;n#U(Tg z$Kel;L{`=%Zk11Z_a%4H#$U1X1VajPBsoq-O=2cAF~1aJH;1v3{mkYHN0-EQ7!+@x z^C`t>i!j6*T3LzyHJjJ2dZ6~ybQ=Rs#7_u0@uagGJ8VO_ zS?}FNGg1uYUJ55p2(X*_Y!AHtzWHZWHdB|d-@6?-P_qDVBrlEfT D2%;-+ literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/sctfg.jpg b/www/extras/wobject/WeatherData/sctfg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..513f5a9dcb2e34ac080c10920a122a231216edfa GIT binary patch literal 1630 zcmb7^do+}39LL}Hoq1=*T=dSkhcZL7#wdd@w(KNADXgNfnkFr&ITA@(xt2?A2U~0% z3Av_GvK3lVAqYl+ z*zbWt;3)zT0f)*kg!|7K1Wq7C@)DxrUvaP#XSNcy*DeTkS8|%i|ZfKhFM%%lwi7QBpyIhfF9>fh4JzSrD z@Q?V=Te=0Dzredp3_^fk5Lk-=b}$~LGvqK$Cd(KIAOT%4ia58|^ye?UbYZ}yr;NtnfE6bwbG#tVwvs@BlII2AMz0KU1tqT2`1as)7oV1ky;`%K zo`yuSI6qVrcjQM_$e`mIb*)$2;nn#*vyY0^?VGj59xbEzf#c}|XY%`3SlX6&r6xoV ztbxQs9i~yszrb!OR=DqjxjWtEbf9<;GzXw=PI7R?B{e+PWJpn+uH(o z%ZePOqu08y{l2_*JE9toC{y1VVpSS(!@V!pc|(EeF^JU*U)p z-s+>b!4R!@+ur0YOdK6ic||F+PD&2cJ9|pK)c9WCh`aF@qL*^B*T{6&iP*f+_W;hp zAQ-`+MBFzzs40%lWM~-h9r1E3?nWm8cKET;&%*GsMaKyi$nNrs{^SU|wpN1k%{Dmm zxlfS!TnM`3u2!61T3VRad8A@+Sky2+JvGTNvMRda_8`m2Z{@*|H}p%f4aUM{+f$F= zIdxedj7Ls!gtXJMvD*8(80E$r4SV7~t{oWYR5FikFt42cr;&YA1vC5Vpr!^Q&td?K2HT9>@8SnUT6J=qe7su4|s>q>&V^XA+Ya zk_-zQKg~1oLoAQnAYa(jUFS{rOWpfBnyT$@h2~t6?{ltl44?em>#DL_{660DDaj=I zb=I2VME`i9We$lp-n%NdkQP`uZnEd<(Q+cuThxZcJrR_M*?4x<$LOg9&e5nJBJ;hk zE3M5a0kRiH3zBAr$$43U+4R-Hf_BT(h-c;xUFTb!W*L`fE!4{nSZln}xz;qN~8vK;( zp0Nd{w85~l*ihfJogK9Kn9gB=dBVgolau>5cz7nt_)QiL4KRkXDdCaV0Z~(08xY{H zvRItO+6WGZr)1YYUSxvlwZMw28Mp6Oi=DTk9oMRchMc(D0b%sdUQ7v&Kt z-UsG{zM5M;WRN;ehbH$`v>s4BE*v}Imq_U6+1z9Yx}3vI)izhIzgwiCcL?_=wXqe^ zAx9TCwFI~?pP;fm{a)NEZXI?@i<WURX$AfH8E!Gpb%?Cj!I3xzvxbJbVOo?8O)m0kjmm!cFjUp5 z#>k4Q#YN)D6=y1gcWpDhNM2o|_<6X$hxP=2@>pC{ErYE8%sS#(PQ|L<&l%GjUE4VY MQ|rtc3?-fa0wEhg3jhEB literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/scttsra.jpg b/www/extras/wobject/WeatherData/scttsra.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1feecb6f61734159de184ec5531b6d403aaaac6f GIT binary patch literal 1750 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 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/shra.jpg b/www/extras/wobject/WeatherData/shra.jpg new file mode 100644 index 0000000000000000000000000000000000000000..412afc83693a2109fda6849d933ac1aeac124c82 GIT binary patch literal 1576 zcmbV}cTm%37{`BEkc43Z1QE_6BU(W~fixn&-*;j`+VM)|BgQkpv(zo1ONmA z0j2^2_>+JU009dn^bmodB2b~=A|fym1RRM(z!3d;BGJ!0)s)Jg6wd?IRHh&q?Aq=h)7$ziz@rcXy2k|!Bq^a zUSMnnH&t~mlW!xCvis!@$YT#5`TnSyF75~X$y29|jL#8FOwG(~?d%;Kot#~+T=gK5 zJiUJQ4+spR+z1Z26B!kKHzqdje$s>FhbfO9r)KBm=H(X@78O_5)YjEEG(Ky3*}-_# z`MRt7&Cu}3=-BwX_Y)uH<`)*1mVf)W!u-tI+TLOBa`uE=AOP|w);F?$aG?cUV5s0p zMTJ}-Fh#H+XednSgou=ZwWzzFw6gXsxQrn^tLgZQtmrPYRk?`V4Nw5q4)9KH_uE~=zus5bN?iIB<#pWWoiFY7)x zm?SPa4g1c!iaOO)Ht2-s)a+ksEN;-CjYv+s>{p<0^0g(VGUC*O)MKo{D(ux%rbS}R z;Kt{tjR1*NUeO^RT~cAxs#L9?wsa+tHP$k*>szPdq)O@ZA=;9Ub7upytB!4{b1u*L z7v++6{RU(lkJJ=Qjnfq~W0|%LE$uhTj`t0J9PL`=SyCbtm|F3g=57~V)QorCTMe3d zoC-tg%^7i=Sj@DKuTP#GXku*P>8Vb*cv(VDo?X&T(57qa)>z#$xE^6OnG?MIx&XIv z?EKl$SEsGk9?7>Q1k&&UYd;~wWEbb1NVfxSv=4;5soyo5?J9S0#6Rw6?Rks(=-YSj9DWy5!hs1JzRlQ~3y38)grB-L7dJjanvD{4VX}Z($ z5@h@5N}lk686(~v?uF&E=aw#uC#R{_+7_6m?TC!t0X{HR`p$W3s#_hL;n>Xzo6*6U z%pG<1J@2`I2{cOL8tt~F6JP0VoQTG@^hHWWg=p%#Y#%L?^j-;&RgzL(o7bu{X`u4d zif`OBzz(D+M_NrA8mv#JZ58jZVwV~?{hX`BFEjq!MQ^Zq zrELGY2mhE4ta78ssOjn8Dn5|g!~Ll#rz&v10$ zjaJp2y?rAOf1!3Hmf5FXZ0BuvPn1qEo1x3RJ;gGIB;Hw^FB{7T-mb_|=NVK%gBq-H e`XZV3NHY=*(}>@*cJ}Hm%KS8FoRM9{fB!r9=){-+ literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/shra1.jpg b/www/extras/wobject/WeatherData/shra1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b9077d79d9d0f886fa9deaa744eb0de275271adc GIT binary patch literal 1458 zcmex=p_Bnt}*D;pOZ8!Iat4+keZ7atEl zA0H1dFTbFeFu#DPATO`5l(49{gruY-zmT-7w1ljfgro$>5JsR@HdZ!nHa2bv0bT(K zlEME241ydCRt)CMj7khlf{e_9jQ@`?$TKi7vI1QTaxfGyGBE=k$RO;Y1B)Q5kfNa@n{Z$vyHcTuQRBpg9Li1`4~hm|{Gei-RMf=DB?k0` zl&YG#hNhN@shPQjrIoXbtDC!rr&n-DXjpheWK?oWYFc_mW>#@YX<2ziWmR)aYg>Cq zXV;|3Q>IRvK4a#rMT?g#UABD1%2k^-Z`rzS`;MKv4jn#n^w{weCr@3veC6u3>o;!R zdidz^lc&#~zj*oTM-f49#DHKz}i@urRZ*gZ#zFR1U<< zf-J0xhHOHPf$WKe!b(Ps93oB=7j8VrscandK{To8BA1wo$wSqTAg_UaMx4i*$nqK7 zV+eoUV&GwB1V$dSAcH+a#Mbg&N6Dkn{gHdhIQcxki1L_;d220Z`Vp{0ZQI*x=Wfq< z95~Nl@#G)ZU-~Y7A`+SI-yA!2!b}I2FKWAP%i2AC9;|wSrBrsc*r~UDcP4cAAKTKm zFh4sl<#V;ro$I=8_l~Vn56sS&@juggtkRZYZOSxLhgElfJ=?P{UVPc#iCzrnpU1Lw zm)EXx-pO|5`LpEy&)0UWy720((!}eMWzC8+5pH#tvR<6-<$J5DlILlxOXnyz z33NXm|6yKMBfyoD+({xjIVUUbxah@(hhm5B z+3&f*VZq$^>-s{g8G7EqLHXxSf4KhH=xO#!@57&63#(N2%>U8IP#m{5d7W!+mY|x< zFS)A+Zr!@|^o+qG(U=bl(pJZLeA~G4bHtyeef&>jguVQZYV1Alx#wd+#MQ7O+sZ|I z&Pmo?Dw}Q@*i?M2>-Dx6b1Rmt-LpVt+utR8EhQ3vv-fd3bHB=oW{v0;lgwd! zd;d??zEw)qbNiUqpOj?ZUR3YZrs=ZT`Lpb~CtrW>f3CDL_LQD}%A`yVr#GI*A257* zw(8r|Q~Rc=ZEz~z@hak?XTtA9p5@Ate_kv+^``ma{Lsb|PIVs{=FE?J{(dXVv`+?x zM`r(L_**|=U6JLpb2TrGjQeN&k}8^%w^RMy_D`Z`-(2y2zLRCTw%wA;KH)tl+&s=( zt_s-L_cm}wQx7nDkK12bU~}5gcCp1@O~v0!e)Iq32>W>9%-;Ocr)Pv)KLt#>>#08f z!{gVXPimS!Z?s_fe5}B)-tgBIqmQL48*f<1f4}M~|EIa}egCVieBtFfm%9>W96gWK UYOE40E@}8==qgmzb5OPiHD97eD z&J9J5k|X0TVq6*bG@*vsncaQb=h?q@_x*jopXc*@zn|;%{c=aR?*X(4(U=H;Kp?<~ zw*c-qU;seCeDN)WCny}s7Xl84!I20Q3W-1>Q9>d@C_!OCBytaCkFW?DjX|S?u%cMB zD9=api-7o<5GaC|h!#W&@=pJwxGew%0T2L92#agTO&AF}1M79E6;H#WQj9 z{xx~^E8gKql*BiCC8ZP&DJp%dd`#oGCSHqRaLSN)+Q`_%!qUpx#@6nF<5j0?&MvNQ zKE8hb0f9l}h+C1j??gq%BqiTZNlkl@o{^iE|LAc+VNr2qRW+@qwywV6d28E?_Kwc3 zmv08>gG0k3qhnLkjG5WF`GpUQ>l>_(>`$9p+n@PdAOP|w)>pEBaA9~{U?}fN1^8Sb zZ~$*ZFi_Zmqj0PqNx;EN^q^W8LQFp~r{Wn>PThP>{EBx!N<#kFl)^e6?GLhl2NwRn z$i9O8%{2xHK|s9EgJ1w%U|Cyp9nLVTvDKa*lkDtTGS;Xn2{8?-9vY>{%I@nB%QWV= zcls_XyGMLs&Oi!)Wc#GR%de{fRSsp?r^5-M^p()2=G}&!a7)+A>3J-sM0Ky^WQFSf z&3XJ?EbPWO$LMJ-D5S`CUfL_-;Uk;=6>Zh2LgAzuuq&QrH^RU#BIdV44;K!wSB3T@ z>|{fogbkEHVO$`%jA=nCo2e(H`cfpflGtqqM)yTlwOUFiP3anTq_f?m7tNCz$?l8< zVYMjg3At*=xj5vG+r}b+_*mB~U^a1VpVAI2$Zv2nGA^fR$iTmXD2R7t=a#GZ+K)#% z?v%}TaFpdHD54!3xxbBC6omFfUY~#YiI5#e(OT{k9Tq;x2`hcv(Oy1c`^v*5s+b}F zBWuNsvP<)nkg)EmUABSNGpiZmL$>1!RP(f0@30+KD(6>bMuJ6BujBr?FXso#F1gTW zvYg`kbW%zjf0^jLT~F6n^+e)JGLJ~>1!3Jg^J^|OLJL&c^D&K-CxNPZttI6T;$u}J z({vbk-MBNw{)X)jeFC0Oh}1L~#nmKg40k1}&k#qnIUNA&!$mLpPaML8)pEXdrQ<-B z^FDICh(`33nHaN4mQtOsW^mocGxb!9!}xVF7f=p}4N;&>r(2b=GlSjjL$)2_owQa= zg5z%vXPSHT43MRZ-Nta|G8v7gNmp*Bjp-~3WgNb@wwvbhe%uR3txWT-o%B1SIZwTB zjcwIGw{}6QU1~pM>IP~n!tx%nWVfdk;@fi5y-($5NhYTFwPKWtRprU}@478;pFtN> zALbp~kTq@F%TT!!Gt|`Yv2^5atL5D~9Q0Z(Rbiql&fL^Dh_)F)6+1$ic9r=)Hv#Ii z`h(7+DSL^!*0=9oryHMl(hYd?RIx3oq}njQ-cG%xojfca;2DQk8hvq5%hdmsoAL>% z3`+FsM?t@88qLyBnkY@XprgEgsJJdxxgg%1nmTJoXQK$@;j>eNW~x3)T1zfP$5WQj z1rkdSQir70w==ft<#KWxjE+0^Inu;?m*@O~@i=&Lsli@FxBc0R&C%LsQg$gY;OgmGmOj)(>zTYW~Q|R_F$*V}77Qu1>m&x+e-J~^O!K~z}G}{g&PoA#- z6d51u0k@`ZUa7TX!$F;do literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/shra20.jpg b/www/extras/wobject/WeatherData/shra20.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5749ed75cf4bd7f99db447f5c6abfaf8f0b9ebeb GIT binary patch literal 1503 zcmb78c{J1s9RJO2n8A!O<7(YQheVskIT%Ogm0d$Q)|PwdMa@iv*sX}xeao5KAjvJ# zvN;yTrXeOmBT|kTM_B94j@Rz~zn|}W-+w-*a6&i>NKYyc1l1e_5aAbbl@04Nv& zfqkV0uoUG3iV=|ir1V#WKjSC5a1v2*USS4 z2#yeOM2x5m48S0;f7?J{00U8lV)Yz6Ws2)@7BmK5$OTX$KNthS0AzsvI=prwHOk#O z5N74`MI%=$e4NVU);45`A+!TSwLYKkZI?)Tz)4FnVnTC|bP#vqf{rGU*87Zp;%uAE zkoW7(kOb2lUiI}KPT|V2WkJp+b3lsr(@0OvBANPLC0@`8)_SeMjVmpFC=8DD%-ynt zksl0Y{T0F9dbZ@Nc%GlAQZ}y*h>^{Hot8-5nHpc%Gb?#&=VE?qR(Ze{oEyko)IsX1 zqF1+HO2$_O!c@hryl*G@+mWY(E8LM$n==!(etg8{5v7tpYi*A6By^(<#50h)oMLI6 z(L;7*<@!Tun6~}zbbG1yN-nvq+{i%5*Hd@m0#pjy93abRIa_)(xGx?P`QIty^2CwYjS2iK>LBX-KT(`HjWFcKXz}D|O)^K94KgKtVr#8qVrt3~`tyA1`KfPCcsOX*M?v z*i+)|!Le89b?+O-TI8KuEi$k9#>fwM*}EIAQX~7#FKcqdb_LSl1aLKE5kCvXA=%b|$AC6U@tZQjf+T%KKegU2gKZ(0ja=P*w%0XKCd}x?pl5-s*xJ z@;ZzT&G+!|ez}d~F}HmGF#bYDaOJx)OaILHM4WEgbXo2Q3ei{gA$2n}O>9Q2D@`rB z7YvzoF}tDp4~Vq%p@Ng4o&IB|PZy4lu8^hZZf=-d$)f6GUIveG6UHfN8S5H=ePqB5 z`)K|;P4cEf6^m7AP!g%4P?m^a+Dj-Yv8B)w>s!sD4pm=>xsWvPvNvbb5mnw(N$@}0 zKd+%;q`@BwSVd%Pk@m!&JBB7+jS6m^Ud9t^8&umXm8LcAW4q;4=26Tkvu5WmTAO#y z(q~GrekOl7ESWOHP2Fruvh2CCOUBTR@3P;#uZ&Mw50*MJbaEypv+b({OxTRY+2%%iSYE-n28lJ}bgLr7Mx*>(sXWZ~kzM~~ z$HteI(#a=q(cOkhBjLJ8>N}JEHP>XUH&i?4Q=_8(Z`Qp<`HQCxyF&T>Cuwof$5~|I Flq literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/shra30.jpg b/www/extras/wobject/WeatherData/shra30.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9d2132d537b7d69feaf946880c44c167f881f405 GIT binary patch literal 1493 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 D=zChu literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/shra50.jpg b/www/extras/wobject/WeatherData/shra50.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f4c0330bb1764af9002ad045e49708ac699305f1 GIT binary patch literal 1500 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 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/shsn.jpg b/www/extras/wobject/WeatherData/shsn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cfbde1d78ca563f491d708d96e6a26e5586edcd5 GIT binary patch literal 1228 zcmex= zJZzEDDf?IcX9)e8+^@H=V}aGK;^jqaJ1rA)>O%eXYWMzU=u*oQ&E2~3Y1s0hCx&ya zZp@e|CcJTPt%KB)7v0`D_q;Ol^%J%5>@$1c6# zHoUKG>8hfjbA32NKFHN_azF1-Yv-b&=4=NXXuATI=V_KQc(=Q9F=Wbc$*VdTl8yp+%XBOMBn7ihi zcEz>g3ck9TJn38h)thSWd;G}dQi+VM?I(d_*Ul{PT9DEB&h~rIl7P^oj4F%f7<}8f z`>6De-q@zi@;{ntUK;b6_sf8T$AC3*VdA zyL)?@vCG{qkxmBNCFT>QnVZk8tUH#OtNt-z;^Mk%aZjzR5<>b@SHq)kByHZI-5IV~sL*v!yZz@T z?gLx~+)`!JWR_pO<^MAA*mh4_<*O0DZAy>sE4%bwO-`(f<>Q%bj-=fRePz||c5@dL z?-SotX?^?l%zM$dJHyhYjrQGantc22`57$#877Amd7b=m@`9bU+r%BumP#FVT7GV+ z%LX=0r*jO~)vvtTmXrPbxPSDntt(GY>(mvTp|ktfZYR-Sk=E8b^FK#8c|>mCmG#1I z?QGs@;^B*;cQ~z@(bMW&_F=*6xm@prj>`C1n#k?zSC;qaRO}PWRJ!`J_jK8|+q;kG zK5>4d5q$pMX3_0QyO;B9sr8?C>nPJdgM!MyEm_0&x- zgWDsnPT#)yNZOZw?6;;0ef)mX+AeL)$)8d(^LPJTz@>BKv!6Woul3TGH{IRlET?zm w;!6&Osmee91liP0t+6X%t@SUNE~&Y0ara?QnN17qm!~Zao$}XIga7|c0BQvA!vFvP literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/skc.jpg b/www/extras/wobject/WeatherData/skc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6ebbbf0b89fba520368cc415ae299b864945dddf GIT binary patch literal 1167 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 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/sn.jpg b/www/extras/wobject/WeatherData/sn.jpg new file mode 100644 index 0000000000000000000000000000000000000000..74119b93f1d9c129e313166cd864052fca013592 GIT binary patch literal 1196 zcmex=sR_JHd(x-wIJs!9v)SCzYU#|fPmba_Y?0C` z`>*_GIQ2Dgxp=^l0NGf}%exk5x`&EAf7^Z-#9lspqc)8@~n%|q8RgZ3%c#XphD#>o`abAg>b`wlR=Cm8wHlmiB99l}a(ge5_sF!2>r8!y`dQT% zXEz1TkGfzYYxV5I8dWKU0Ktnp|VJi|tR;r8gy$^R}7mYfkknP2=5u zzf1JPa&N2lfbVCIcz&9HCu3>R>?!H05zHsP1H*6gnv&Z)BzrDybmekskX>TlWW>%s zC+Kg_rCYvto7{T8ZF(2n+{WthyUG3D_D^4qf7x(-*JKx~(^1hkDrbH zuRg}c=XD$x`fk>7W$HPO=W{B5DhynMmX?CnZ}KqkY0o6i}& zKAhfMu6}>kVdV*%(@m~k*c)v(apj-04`)5oZ7j>bJ$H|WeGJ!%QyV(nj{n;g>t;74 zz02aXr<{J-zBh8^dFsdH6&-ATUrXC|F5KktYW3jkT_L-gB$Y26X75v0%+a&;SK+UU z@0`5#%i7r+S+4s@TU)MEd%NJDZ*+a4?rgs23iGsHThE`o_uZ-{{&`w&y*~N6Xhh8J z^I$e*opWuv?8IkF`Swgse6*B7?yNbV=4a>W4t|}J?mc5Q&z(~^d4BxY{|uV)o}V!EG%ry z5P6^+1B)Q5BAbw*qp(t7qli&rp{SVC#DyD`Rg8f;#DE@0HI0Fh2`DZh2$DdNVH6Zn z{C|sqhnW%R8fHNTdxkqEdy7J+oRk&~z7ewb-OiQq(Q6DBPjHVrw%W>N!r4mRwR`*p z6Bx_oVjjORj^dlSI6`+xuHItxF83MhENk121cd57xT-WEFIc$bT(DvHyg9%f}I)P%sI_}-|Cto@k#Mm?TbRa zjoFJ2tmT>H^ZwH@X-oOLjs?C)e3|aX-#Kwf^nBYX2It>%uFP9pe|S;)yo%%b-wA{4OnvF5Y+Y%ff(-uYbjBcxPuU;4(8@%Ej`}X-A*HhjW&{-}VIF z{vfv2cJpboWl9M(s~8pjGlVX7TC!bJ;;3Hge+H>VZzoR#3zjHtzeK za%J1%0|lltx-|WJ*oyl#O!HeU*WLJKT6$7a(6~fBD|5SKjt%E(&BG$xb5iWHUiLS> zOE}Z3VzY0#%KS%LA_Vpw$=My4WypT0!C?2_mCHkC-FtEQ#$;uqQ*#Z3B^HL=Q)qOX zw0>Ju+J8mav7Wc?!o%v#(d`iVSrFpMq zfv4nKr$aJq#g|&nNp4^})EGF`<-jYpLf@DPMuu~`tV1o*>{s@`bvO9@JE%&*V$QUS z*Av*g>i(_>+OdXlvBuX4^PdE)w^@-(ggLIcanc~i_VOw?C zY-XAIw(@n^o9YzX{4B$B{=Q!B`_tE@q(LMhht=4SdB$Y-B0sC^wh!$D?|-@49T*d< iR43Bmao*6jDo-OsUCg+K^RxVn@?RHL9o@J8|4jg`^hO;3 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/snowshowers.jpg b/www/extras/wobject/WeatherData/snowshowers.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9d1d1041fb93c09c092b361569e1191823ab9563 GIT binary patch literal 844 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 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/tcu.jpg b/www/extras/wobject/WeatherData/tcu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..37cc4a62bb1749a1c61f9c561c0dcad87e04a20e GIT binary patch literal 1546 zcmb7Ado{AW_8hdGOGynua zz*QB1QUUr9t%M@bsS!eKu{-Oa2iAn z0#VfyR!u;aa8-pspa~cVqniFtD4zmE2yg&w;h+HkBZ6=usB8w-0|1Czz4l+A00a^Z zVc;;;)fp8cCjzpp0e=}5PAdo~rAGJo4Vz7gO#%LXj(AJ^uOsIwotq!J3pAFBf zx`HYl@;{~k9Ekux7zz!kw#G!&M^v^b_&*E~2Ed63eF}1owgGhq;}}XaJwn+J;8g?| z5l#f0fyTriBI&M@yNy|SqgVD`BtR{Tofmm={G`GK{(Ichb!=-pi>1Yr(wIq|M{VB+ zcYLgDe7eYI$V#&l@D`RVBU(w_vh}>SR+X1Qs%;iCoak+Kpw#i>QUB38A0F3tvw8Kw zb{4)>7wi}%yj^+3VLkRAE3ddyQJUm1)OV$M-|K--mMI^9bWVGS_qvm;CoU@8@YLer zQcka=X>FTmK_(A&&@9wBcR4Vdk$1{9-8B`(V$C+l|C zc)W1hZTNgZn$WIA89#X7Zt?Mmul(9~V0<-x!eK|)k;diC2&TY6q*raJKVV+-W?G~( zDO|GNnnz7~Q)8J%r&@`sg6jNB8rpnJ7?pk$y;rRd84vUpPn{Mer|QE^epPJ#;Oc18 zLwWYRZZ7kB1vk+!giJd!U!Gat<5zyExKK?}n?Y=Mon1WHE8qy!JTou37jtsrnK#2^ zZ3lWw?`j7Nh0S@@X*M$^U+k8+hi_C44Cgxg_A^CZMH`qd&GjW-JeKgrb(Gy(&wJvt z9<$PUHQ7{G6KPk9#L;9DgC1X0w^-_$vmP6H5ViYtnGl}VqHdZp?|j(jG(WXaMhd7g z+b`UgH>Cs~2h(cir>0sgXErhXChXhKY~RTDkqLwNn@snqb*{wmOid=MQakcboWr?yjyjCQD4ULrhBk4fxj6ol5=8mCZa6Z)!RWOWVYr;gyF^Lg2iC`}e$CtNa_@3^DZ zQC1mIA>Pl+mgUR)XM?ULC&qTZdil2gOYg)|CE4A6+=w9lxv9eY@|dRt^gSHzc04dd zuE^O?vc*h5(fibxdoC;9+^c?~dt?}-c?4dOV)kzkT(^hm2bBkl)mO*d^_ z<^8#0#2?}6b}fTX?oE?`yfANFo}t(JipSs(De1h?)LMzXG+5rhr`)H?neDSSdi>N~ z{T0VwsscaU;-{7lHl>U8BSSrJI^tQGwGE2cujqX~w6dk-B{lQCq%FJl+}w$Xv>f0l G-~0t#9ip{p;I`Zx8 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 Nml{*4@6F|p{SGdRH0J;S literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/tstorm.jpg b/www/extras/wobject/WeatherData/tstorm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce9348c243be73581f14703ef0e1b768bf2804a0 GIT binary patch literal 1364 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 literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/wind.jpg b/www/extras/wobject/WeatherData/wind.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a9834efdbc1d422f5956f8595d5b98a556e1c635 GIT binary patch literal 1940 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 PbmSYbWA;38oKOD%8y;QY literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/wind2.jpg b/www/extras/wobject/WeatherData/wind2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fbbf662ac471e404c90ce0da5595899850e993d7 GIT binary patch literal 1815 zcmbW!e>~H990&04?3Xc{Wi-jq$dyiq{76Hqj8tOtKd{|8$&?Sr!Xi?9tM-gDJm%9{&Puq07e!t2TZ}BZGa301jc|Q z9e@S^fS}T}8-f2UkPKKF5-y97lb1HI6#*I0@9CjX2t?W)E4>FG80aP~0}@Qh;am8& zV60(ccCjqsK-~jnN5Q0aJGzJC6U(6I1`Naney^T{a}QZIh@ea_`8xp_Za&A)cDr1Vx9>vnlX{oMxk zJr1|=e*43YN1gnx?w-E>f#-ui4-E^)CtkgNGdVRq^H%)fXLy#z!3O`3nUXM-Czs^s$~G%L~?+C8?3a=Fi{qJAiKEk0fJ!UIInyvL?EZ4 zy=PoUyg~b2_U~Xx|4a54>~EJ4K!QQi&jVusE1*VetPz_L$PNAJ)-gs63g=UE^;ITe zS4~}Ka~?gxvaIdsVxHB$#Yn?5CD9h<0T;&&n**9W-_Nd~;^jC#0@^S?6rr#+?GmYS z&`~({Xwvm@GcrOmJ^hoFYY!)x8Q+n{;*PKw$YYiG>|^N-9=uGdSiMq}dY7`QMo#H> z9uO$LV%up>RE;%ni6}H)cpUh>jwpCw74-Hn4?kH{rqbG1+{ElSGn=9bYf77sBg(EULL9eMMD%M{1aikB3dsL5o+PoI3uNwVLHX4J^Uuvak&6 z;Numg*P_+uODFnmo>H$HahFNsYjb*Y@j}lru&{^JNtRuxWrx`(yg(8i%4y3*9b@>|1Jm7!Q=`3a(qlU2 zMl-AXS?seCK&chIu50T>lYbB)I7ze1i!gXd6nwXxo}vvKkE(n1u6)`$Cc?;|&^$BQ zt^Su-%gu1agA)N%QRjT>#i?cXt(i!Ho0^;a*Oo&~iKAiIGq~A05;Sz6ZOwQVzxFSAU@+>>L>?79Dy zsEVa|{#h1db*sKs&(=PX*kBLV+piia0q%arIv3?wHCczP(a~PPCLA!K#h-6@N$*Kj z^GS7HMzzD_CPe~9|HJD~a&X7kO8OD;mxJXd#ex21V`>?D3wLYg?cOmr{1wjZH2wDK zYijPULwQq`TQJcYHcUs6^~*I+65h`rg+gmffTPr1M0H}E@sBP8$e=)9L>lGmVVxJ2 zUR72pNpqxyOH0aw{@Eu<m*L2ugRTv zdqpC;MT_3-*>{e~?$LyYwYc)`BaJhWrolp2i^q?M6<2%QI=wdv^*dW*(i6Vjit2WZ0EnpUPU-7gJMWtg26XFgZ3Y z_p`cWy4?1m^#ge;1?IW!NoKV{Srb9L?N_={X*GH@PY1ZtDNr-Kv_efimSev!}BEQP_OsY_0{$4BG=8oG;>o&(Uw#VjtS$zJ-#5osEn^G&1 zCR1C=Y=4RGjW=E3*5>}A>=oQ{FuvJ{>JG_{$Y`VJ6_)Fkn52t1mWdjQacVOH8X7fy zeRqAp4HciPE*}l3%vbJ7ea3_Z7KYx(;0liAeZg4Glc(f zu~OE4xcfa7NsEenbBRS!>a*=*w~51|er;J8tM>6s&x>Y08-LnHyb)6(EtDd literal 0 HcmV?d00001 diff --git a/www/extras/wobject/WeatherData/wswarning.jpg b/www/extras/wobject/WeatherData/wswarning.jpg new file mode 100644 index 0000000000000000000000000000000000000000..562c3e51d76d83e8293f729250d3cba53697044a GIT binary patch literal 1671 zcmb7pGpEsL1{6yx3+hf&DvkP=1h!GdVz78D7EdMVk*NPSnjV11fW5#G0W$+|JPd({ zY5D*K05}{0gMt47p#Tz&Kx6(&?R5bhhCslfjR%nbo`As-5E2gvrYIYtnMW|%Jd&%Y zpZnOrHl*S@m1ckA+l>|(1~!cUqXaMn1V@66h>G73LNEx9_|HBV93b!n8&k;4)`J+V z=Q*O80NM!H#)Swxa03fkOEZ~gvrcl(1>Tl9rT*<_t=Qb;B-iXKPHSH*vXg|O`{Bys z3$#dQ3#-p0Wi{Ngvl07)Kt*l_xEJWbf&LD2Iu7^#XUSF?j-` z6qAa-W4=L!LQ$D>lT#b1}blN6vVSvAgM4L^Uk} zcH0us&yf4ipte&eas90%{ZyVphCN+9J`_3QQr}K}B@L`?DpdaH5@<92?5^s1$phKt zP4oROK0C9dHTJiP;s-y(GK=#PR&yTDW|a!h3so!e)$@6P<+qxUsR3UuibPkf=P^en zE*kEtZF=yNASRe0qr|g@CEHNDZ*p_M7qouI1!m(hQd5J{T&i&W3PwJ6b z>d56c9lLi7qSBv3ZaDSgBc2B@Z^o6`S^tASKt_LmkG@!~^t^k6V7aa~iBZZ(?Q$KD63=^EPhVKg!x9yA>mWqNCjQ zQG>0w?O>1JJH3}z^{?B-w>iQ|6%Q{ziT3s-Y;#;K6&tT6mAnl4LDl7zP|<6GHgdR`7QSkvc$OsFiOWi}Qwx!jR1KJ#+HEdlAqs_{Pq=7iv*=_!+xy z<{gHzDJrVn)9$+UP~FXnXog|kRY_xKrFSc*w{z$)96pwsN^Ww}d@>=?$#Q9UlGEVwFH4-dXy>l~) zqiR5mFxi?O0@E>8s1XTcw_L6%jsr9+{9y5ncCeM&M oe#df_^Lt$HJ19?lQ^bz7-B