aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSelene ToyKeeper2019-04-08 11:59:18 -0600
committerSelene ToyKeeper2019-04-08 11:59:18 -0600
commit942dee30adce308ea9177712cfaaea4a26603aaa (patch)
treeb1319ee6ac6eec1fbdb7f0d5027656c0035aa18f
parentconfigured lantern stepped ramp and button LED mode, set default tint to 128 ... (diff)
parentlevel_calc.py: Combined log_2 and log_e into just log, because all logs have ... (diff)
downloadanduril-942dee30adce308ea9177712cfaaea4a26603aaa.tar.gz
anduril-942dee30adce308ea9177712cfaaea4a26603aaa.tar.bz2
anduril-942dee30adce308ea9177712cfaaea4a26603aaa.zip
merged trunk
-rw-r--r--README11
-rwxr-xr-xbin/level_calc.py9
-rw-r--r--spaghetti-monster/anduril/anduril-manual.txt358
-rw-r--r--spaghetti-monster/anduril/anduril.c23
-rw-r--r--spaghetti-monster/anduril/anduril.svg906
-rw-r--r--spaghetti-monster/darkhorse/darkhorse.c1
-rw-r--r--spaghetti-monster/fsm-adc.c2
-rw-r--r--spaghetti-monster/rampingios/rampingiosv3.c13
8 files changed, 986 insertions, 337 deletions
diff --git a/README b/README
index 6d2cf24..3cb27e9 100644
--- a/README
+++ b/README
@@ -84,7 +84,7 @@ To test if you can flash firmware correctly, or to restore a light to something
like a default state, try flashing the NLITE driver from DrJones. It's similar
to the default nanjg / qlite firmware, but better.
- ./bin/flash.sh DrJones/NLITE/nlite.hex
+ ./bin/flash-tiny13.sh DrJones/NLITE/nlite.hex
For a quick test to make sure your tool chain works and your flashing tools
are working, try the 'hello world' program:
@@ -95,3 +95,12 @@ are working, try the 'hello world' program:
If that works, you should be ready to start making changes to the code, or
flashing any of the pre-built firmwares.
+
+Most projects can be compiled with the bin/build.sh script. For example, to
+build Crescendo for an attiny25-based driver and then flash it:
+
+ cd ToyKeeper/crescendo
+ ../../bin/build.sh 25 crescendo
+ ../../bin/flash-tiny25.sh crescendo.hex
+
+Other useful tools are in bin/ too, so they might be worth a look.
diff --git a/bin/level_calc.py b/bin/level_calc.py
index c903800..2edd5fd 100755
--- a/bin/level_calc.py
+++ b/bin/level_calc.py
@@ -5,7 +5,7 @@ from __future__ import print_function
import math
interactive = False
-# supported shapes: ninth, fifth, cube, square, log_e, log_2
+# supported shapes: ninth, fifth, cube, square, log
#ramp_shape = 'cube'
@@ -14,7 +14,7 @@ def main(args):
"""
# Get parameters from the user
questions_main = [
- (str, 'ramp_shape', 'cube', 'Ramp shape? [cube, square, fifth, ninth, log_e, log_2]'),
+ (str, 'ramp_shape', 'cube', 'Ramp shape? [cube, square, fifth, ninth, log]'),
(int, 'num_channels', 1, 'How many power channels?'),
(int, 'num_levels', 4, 'How many total levels do you want?'),
]
@@ -172,8 +172,9 @@ shapes = dict(
fifth = (lambda x: x**5, lambda x: math.pow(x, 1/5.0)),
cube = (lambda x: x**3, lambda x: math.pow(x, 1/3.0)),
square = (lambda x: x**2, lambda x: math.pow(x, 1/2.0)),
- log_e = (lambda x: math.e**x, lambda x: math.log(x, math.e)),
- log_2 = (lambda x: 2.0**x, lambda x: math.log(x, 2.0)),
+ log = (lambda x: math.e**x, lambda x: math.log(x, math.e)),
+ # makes no difference; all logs have the same curve
+ #log_2 = (lambda x: 2.0**x, lambda x: math.log(x, 2.0)),
)
def power(x):
diff --git a/spaghetti-monster/anduril/anduril-manual.txt b/spaghetti-monster/anduril/anduril-manual.txt
new file mode 100644
index 0000000..cd4fe3e
--- /dev/null
+++ b/spaghetti-monster/anduril/anduril-manual.txt
@@ -0,0 +1,358 @@
+Anduril User Manual
+-------------------
+
+Anduril is an open-source firmware for flashlights, distributed under
+the terms of the GPL v3. The sources can be obtained here:
+
+ http://tiny.cc/TKAnduril
+ https://bazaar.launchpad.net/~toykeeper/flashlight-firmware/trunk/files/head:/ToyKeeper/spaghetti-monster/anduril/
+
+
+Quick Start
+-----------
+
+After putting a battery in the light and tightening the parts together,
+the light should quickly blink once to confirm it has power and is now
+operational. After that, basic usage is simple:
+
+ - Click to turn the light on or off.
+ - Hold the button to change brightness.
+ - Release and hold again to change brightness the other way.
+
+That is all the user needs to know for basic use, but there are many
+more modes and features available for people who want more.
+
+Before reading the rest of this manual, it is recommended that users
+look at the Anduril UI diagram, which should be provided along with the
+flashlight.
+
+
+Ramping / Stepped Ramping Modes
+-------------------------------
+
+Anduril's normal operation mode uses a smooth ramp or a stepped ramp,
+depending on which style the user prefers.
+
+Each ramp has its own settings -- floor (lowest level), ceiling (highest
+level), and the stepped ramp can also have a configurable number of
+steps.
+
+There are four ways to access this mode when the light is off:
+
+ - Click: Turn on at the memorized brightness.
+ - Hold: Turn on at the floor level. The light should give a very
+ subtle dark blink when the user can let go of the button to stay at
+ the floor, or keep holding the button to ramp up.
+ - 2 clicks: Turn on at the ceiling level.
+ - Click, hold: Turn on at the ceiling level, then ramp down.
+
+While the light is on, a few basic actions are available:
+
+ - Click: Turn off.
+ - 2 clicks: Go to or from turbo (full power).
+ - Hold: Change brightness (up). If the button was released less than
+ a second ago, or if it's already at the ceiling, it goes down
+ instead.
+ - Click, hold: Change brightness (down).
+ - 3 clicks: Switch to the other ramp.
+ - 4 clicks: Go to ramp config mode.
+
+
+Other Modes
+-----------
+
+Anduril has several other modes too. To access these, press the button
+more than 2 times when the light is off:
+
+ - 3 clicks: Access the blinky / utility modes.
+ - Click, click, hold: Access the strobe modes.
+ - 4 clicks: Lockout mode.
+ - 5 clicks: Momentary mode.
+ - 6 clicks: Muggle mode.
+
+
+Blinky / Utility Modes
+----------------------
+
+Click 3 times from Off to access Anduril's blinky / utility modes. This
+always starts at battery check and the user can proceed to other blinky
+modes from there. The sequence is:
+
+ 1. Battery check.
+ 2. Sunset mode.
+ 3. Beacon mode.
+ 4. Temperature check.
+
+In all of these modes, some basic actions are available:
+
+ - Click: Turn off.
+ - 2 clicks: Next blinky mode.
+
+Additionally, in beacon and temperature check modes:
+
+ - 4 clicks: Go to the beacon config mode or thermal config mode.
+
+In more detail, this is what each blinky / utility mode does:
+
+ 1. Battery check.
+
+ Blinks out the battery voltage per cell. Full is 4.2V, empty is
+ about 3.0V. The light blinks the whole-number digit first, pauses,
+ then blinks out the "tenths" digit. Then a longer pause, and it
+ repeats.
+ So for 4.2V, it would be "blink-blink-blink-blink .. blink-blink".
+
+ A "zero" digit is represented by a very quick blink.
+
+ 2. Sunset mode.
+
+ This starts at a low level, then dims gradually for an hour, and
+ then shuts off. It is intended for use when going to bed.
+
+ 3. Beacon mode.
+
+ Blinks at a slow speed. The light stays on for half a second, and
+ then stays off until the next blink. The brightness and the number
+ of seconds between pulses are configurable:
+
+ - Brightness is the user's last-ramped level, so set this in
+ ramping mode before starting beacon mode.
+
+ - Speed is configured in beacon config mode. Click 4 times to
+ enter beacon config mode, wait for the light to stutter, then
+ click to enter the number of seconds per blink. For example,
+ to do a 10-second alpine beacon, click 10 times.
+
+ 4. Temperature check.
+
+ Blinks out the current temperature in degrees C. This number
+ should be pretty close to what a real thermometer says. If not, it
+ would be a good idea to click 4 times to enter thermal config mode,
+ and calibrate the sensor.
+
+ Thermal config mode has two settings:
+
+ - Current temperature. Click once per degree C to calibrate the
+ sensor. For example, if the ambient temperature is 21 C, then
+ click 21 times.
+
+ - Temperature limit. This sets the maximum temperature the light
+ can reach before it will start doing thermal regulation to keep
+ itself from overheating. Click once per degree C above 30. For
+ example, to set the limit to 50 C, click 20 times. The default
+ is 45 C.
+
+
+Strobe / Mood Modes
+-------------------
+
+Anduril includes a few extra modes for a variety of purposes:
+
+ - Candle mode
+ - Bike flasher
+ - Party strobe
+ - Tactical strobe
+ - Lightning storm mode
+
+Click 3 times from Off to access these, but hold the third click for a
+moment. Click, click, hold. The last-used strobe mode is remembered,
+so it will return to whichever one you used last.
+
+In all of these modes, a few actions are available:
+
+ - Click: Turn off.
+ - 2 Clicks: Next strobe / mood mode.
+ - Hold: Increase brightness, or strobe faster. (except lightning)
+ - Click, hold: Decrease brightness, or strobe slower. (except lightning)
+
+Additionally, candle mode has one more action:
+
+ - 3 clicks: Add 30 minutes to the timer.
+
+In more detail, here is what each mode does:
+
+ - Candle mode
+
+ Brightness changes randomly in a pattern resembling a candle flame.
+ If a timer is set, it will run until the timer expires, then get
+ dimmer for one minute, then sputter and turn itself off. Without a
+ timer, candle mode runs until the user turns it off. Brightness is
+ configurable.
+
+ - Bike flasher
+
+ Runs at a medium level, but stutters to a brighter level once per
+ second. Designed to be more visible than a normal ramping mode, but
+ otherwise works mostly the same. Brightness is configurable.
+
+ - Party strobe
+
+ Motion-freezing strobe light. Can be used to freeze spinning fans
+ and falling water. Speed is configurable.
+
+ - Tactical strobe
+
+ Disorienting strobe light. Can be used to irritate people. Speed
+ is configurable, and the duty cycle is always 33%.
+
+ - Lightning storm mode
+
+ Flashes at random brightness and random speed to simulate lightning
+ strikes during a busy lightning storm. Do not look directly at the
+ flashlight when this mode is running, because it may suddenly go to
+ full power without warning.
+
+
+Lockout Mode
+------------
+
+Click 4 times from Off to enter Lockout mode. This makes the light safe
+to carry in a pocket or a bag or anywhere else the button might be
+pressed by accident.
+
+To exit lockout mode, click 4 times. The light should blink briefly and
+then return to the regular "off" mode.
+
+Lockout mode also doubles as a momentary moon mode, so the user can do
+quick tasks without having to unlock the light. The brightness in
+lockout mode is determined by the floor setting of the current ramp.
+
+
+Momentary Mode
+--------------
+
+Click 5 times from Off to enter Momentary mode. This locks the
+flashlight into a single-mode interface where the LEDs are only on when
+the button is held down. It is intended for Morse code and other
+signalling tasks.
+
+Brightness is the last-ramped level, so adjust that before entering
+momentary mode.
+
+To exit this mode, physically disconnect power by unscrewing the tailcap
+or battery tube.
+
+
+Muggle Mode
+-----------
+
+Click 6 times from Off to enter Muggle mode. This is a simpler and
+less-bright interface which makes the light relatively safe to lend to
+children or other people who could use the light unsafely.
+
+In Muggle mode, there are only a few available actions:
+
+ - Click: Turn the light on or off.
+ - Hold: Change brightness.
+ - 6 clicks: Exit Muggle mode.
+
+The brightness in this mode usually goes from about 10 lm to 300 lm.
+
+Muggle mode is remembered even after changing the battery. This helps
+prevent children from exiting the mode by unscrewing the tailcap.
+However, be sure to supervise children whenever they are using any
+powerful tools, including a bright flashlight.
+
+
+Configuration Modes
+-------------------
+
+Every config mode has the same interface. The menu has one or more
+options the user can configure, and it will go through them in order.
+For each menu item, the light will follow the same pattern:
+
+ - Blink one or more times, corresponding to the item number.
+
+ - Stutter or "buzz" quickly between two brightness levels for a few
+ seconds. This indicates that the user can click one or more times
+ to enter a number. It will keep buzzing until the user stops
+ clicking, so there is no need to hurry.
+
+ - Pause, and then go to the next option.
+
+After the light has gone through all of the menu options, it should
+return to whatever mode the light was in before entering the config
+mode.
+
+If the user doesn't press a button during a menu item's "buzz" phase,
+that item remains unchanged from its previous value.
+
+
+Ramp Config Mode
+----------------
+
+While the light is on in a ramping mode, click 4 times to enter the
+config mode for the current ramp.
+
+For smooth ramping mode, there are two menu options:
+
+ 1. Floor. (default = 1/150)
+ 2. Ceiling. (default = 120/150)
+
+For the stepped ramping mode, there are three menu options:
+
+ 1. Floor. (default = 20/150)
+ 2. Ceiling. (default = 120/150)
+ 3. Number of steps. (default = 7)
+
+To configure the floor level, click the button equal to the number of
+ramp levels (out of 150) at which the floor should be. To set the
+lowest possible level, click once.
+
+To configure the ceiling level, each click goes one level lower. So 1
+click sets the highest possible level, 2 clicks is the 2nd-highest, 3
+clicks is the 3rd-highest level, etc. To set the default of 120/150,
+click 31 times.
+
+When configuring the number of steps, the value can be anything from 2
+to 150.
+
+
+Protection Features
+-------------------
+
+Anduril includes low voltage protection (LVP) and thermal regulation.
+
+LVP makes the light step down to a lower level when the battery is low,
+and if the light is already at the lowest level, it shuts itself off.
+This activates at 2.8V. LVP adjustments happen suddenly, in large
+steps.
+
+Thermal regulation attempts to keep the light from overheating, and
+otherwise adjusts output to stay as close as possible to the
+user-configured temperature limit. Thermal adjustments happen
+gradually, in steps so small they are difficult for humans to perceive.
+
+
+Aux LEDs / Button LEDs
+----------------------
+
+Some lights have aux LEDs or button LEDs. These can be configured to do
+different things while the main emitters are off. There is one aux LED
+mode for the regular "off" mode, and another aux LED mode for "lockout"
+mode. This allows the user to see at a glance whether the light is
+locked.
+
+Aux LED modes typically include:
+
+ - Off
+ - Low
+ - High
+ - Blinking
+
+To configure the aux LEDs, go to the mode you want to configure and then
+click the button a few times:
+
+ - Off mode: 7 clicks.
+ - Lockout mode: 3 clicks.
+
+This should change the aux LEDs to the next mode supported on this
+light.
+
+For lights with a button LED, the button LED typically stays on while
+the main emitters are on. Its brightness level is set in a way which
+mirrors the main LED -- off, low, or high.
+
+For lights with front-facing aux LEDs, the aux LEDs typically stay off
+when the main emitters are on, and when the light is otherwise awake.
+The aux LEDs on most lights only turn on when the light is asleep.
diff --git a/spaghetti-monster/anduril/anduril.c b/spaghetti-monster/anduril/anduril.c
index c99ea82..0d35fb0 100644
--- a/spaghetti-monster/anduril/anduril.c
+++ b/spaghetti-monster/anduril/anduril.c
@@ -199,6 +199,8 @@ uint8_t beacon_state(Event event, uint16_t arg);
uint8_t beacon_config_state(Event event, uint16_t arg);
// soft lockout
#define MOON_DURING_LOCKOUT_MODE
+// if enabled, 2nd lockout click goes to the other ramp's floor level
+//#define LOCKOUT_MOON_FANCY
uint8_t lockout_state(Event event, uint16_t arg);
// momentary / signalling mode
uint8_t momentary_state(Event event, uint16_t arg);
@@ -401,11 +403,6 @@ uint8_t off_state(Event event, uint16_t arg) {
set_state(steady_state, memorized_level);
return MISCHIEF_MANAGED;
}
- // 2 clicks (initial press): off, to prep for later events
- else if (event == EV_click2_press) {
- set_level(0);
- return MISCHIEF_MANAGED;
- }
// click, hold: go to highest level (ceiling) (for ramping down)
else if (event == EV_click2_hold) {
set_state(steady_state, MAX_LEVEL);
@@ -416,6 +413,11 @@ uint8_t off_state(Event event, uint16_t arg) {
set_state(steady_state, MAX_LEVEL);
return MISCHIEF_MANAGED;
}
+ // 3 clicks (initial press): off, to prep for later events
+ else if (event == EV_click3_press) {
+ set_level(0);
+ return MISCHIEF_MANAGED;
+ }
#ifdef USE_BATTCHECK
// 3 clicks: battcheck mode / blinky mode group 1
else if (event == EV_3clicks) {
@@ -1151,6 +1153,13 @@ uint8_t lockout_state(Event event, uint16_t arg) {
uint8_t lvl = ramp_smooth_floor;
if (ramp_discrete_floor < lvl) lvl = ramp_discrete_floor;
set_level(lvl);
+ #elif defined(LOCKOUT_MOON_FANCY)
+ uint8_t levels[] = { ramp_smooth_floor, ramp_discrete_floor };
+ if ((event & 0x0f) == 2) {
+ set_level(levels[ramp_style^1]);
+ } else {
+ set_level(levels[ramp_style]);
+ }
#else
// Use moon from current ramp
set_level(nearest_level(1));
@@ -1868,9 +1877,6 @@ void loop() {
StatePtr state = current_state;
- #ifdef USE_DYNAMIC_UNDERCLOCKING
- auto_clock_speed();
- #endif
if (0) {}
#ifdef USE_STROBE_STATE
@@ -1889,7 +1895,6 @@ void loop() {
uint8_t del = strobe_delays[st];
// TODO: make tac strobe brightness configurable?
set_level(STROBE_BRIGHTNESS);
- CLKPR = 1<<CLKPCE; CLKPR = 0; // run at full speed
if (st == party_strobe_e) { // party strobe
if (del < 42) delay_zero();
else nice_delay_ms(1);
diff --git a/spaghetti-monster/anduril/anduril.svg b/spaghetti-monster/anduril/anduril.svg
index 9fbb7d1..ab2926d 100644
--- a/spaghetti-monster/anduril/anduril.svg
+++ b/spaghetti-monster/anduril/anduril.svg
@@ -18,8 +18,8 @@
inkscape:version="0.92.1 r15371"
sodipodi:docname="anduril.svg"
inkscape:export-filename="/tmp/anduril-ui.png"
- inkscape:export-xdpi="114.26005"
- inkscape:export-ydpi="114.26005">
+ inkscape:export-xdpi="342.78015"
+ inkscape:export-ydpi="342.78015">
<defs
id="defs4">
<linearGradient
@@ -2469,6 +2469,188 @@
x2="1314.9019"
y2="761.10052"
gradientUnits="userSpaceOnUse" />
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-367-9-6"
+ style="overflow:visible">
+ <path
+ id="path3856-53-2-1"
+ d="M -4.2666667,0 -6.4,2.1333333 1.0666667,0 -6.4,-2.1333333 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:0.42666668pt"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-367-9-2"
+ style="overflow:visible">
+ <path
+ id="path3856-53-2-99"
+ d="M -4.2666667,0 -6.4,2.1333333 1.0666667,0 -6.4,-2.1333333 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:0.42666668pt"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-367-6-0-0"
+ style="overflow:visible">
+ <path
+ id="path3856-53-1-2-2"
+ d="M -4.2666667,0 -6.4,2.1333333 1.0666667,0 -6.4,-2.1333333 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:0.42666668pt"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-79-0-6"
+ style="overflow:visible">
+ <path
+ id="path3856-20-7-1"
+ d="M -4.2666667,0 -6.4,2.1333333 1.0666667,0 -6.4,-2.1333333 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:0.42666668pt"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-367-9-8-2"
+ style="overflow:visible">
+ <path
+ id="path3856-53-2-9-1"
+ d="M -4.2666667,0 -6.4,2.1333333 1.0666667,0 -6.4,-2.1333333 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:0.42666668pt"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-62-70-9"
+ style="overflow:visible">
+ <path
+ id="path3856-91-4-9"
+ d="M -4.2666667,0 -6.4,2.1333333 1.0666667,0 -6.4,-2.1333333 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:0.42666668pt"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-31-1-0-9-9-9"
+ style="overflow:visible">
+ <path
+ id="path3856-103-9-0-1-7-1"
+ d="M -4.2666667,0 -6.4,2.1333333 1.0666667,0 -6.4,-2.1333333 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:0.42666668pt"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-367-3-5-7-0"
+ style="overflow:visible">
+ <path
+ id="path3856-53-8-86-9-4"
+ d="M -4.2666667,0 -6.4,2.1333333 1.0666667,0 -6.4,-2.1333333 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:0.42666668pt"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-367-3-5-6-0"
+ style="overflow:visible">
+ <path
+ id="path3856-53-8-86-1-4"
+ d="M -4.2666667,0 -6.4,2.1333333 1.0666667,0 -6.4,-2.1333333 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:0.42666668pt"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-367-3-8-4-9"
+ style="overflow:visible">
+ <path
+ id="path3856-53-8-8-0-6"
+ d="M -4.2666667,0 -6.4,2.1333333 1.0666667,0 -6.4,-2.1333333 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:0.42666668pt"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-367-3-5-2-0"
+ style="overflow:visible">
+ <path
+ id="path3856-53-8-86-3-4"
+ d="M -4.2666667,0 -6.4,2.1333333 1.0666667,0 -6.4,-2.1333333 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:0.42666668pt"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-367-3-5-2-2"
+ style="overflow:visible">
+ <path
+ id="path3856-53-8-86-3-2"
+ d="M -4.2666667,0 -6.4,2.1333333 1.0666667,0 -6.4,-2.1333333 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:0.42666668pt"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-367-3-5-2-5"
+ style="overflow:visible">
+ <path
+ id="path3856-53-8-86-3-5"
+ d="M -4.2666667,0 -6.4,2.1333333 1.0666667,0 -6.4,-2.1333333 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:0.42666668pt"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend-367-3-5-0-0"
+ style="overflow:visible">
+ <path
+ id="path3856-53-8-86-6-2"
+ d="M -4.2666667,0 -6.4,2.1333333 1.0666667,0 -6.4,-2.1333333 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:0.42666668pt"
+ inkscape:connector-curvature="0" />
+ </marker>
</defs>
<sodipodi:namedview
id="base"
@@ -2477,7 +2659,7 @@
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
- inkscape:zoom="1.2050864"
+ inkscape:zoom="1.2021109"
inkscape:cx="341.22418"
inkscape:cy="504.11322"
inkscape:document-units="px"
@@ -2485,7 +2667,7 @@
showgrid="false"
showguides="true"
gridtolerance="1"
- inkscape:window-width="2459"
+ inkscape:window-width="2548"
inkscape:window-height="1415"
inkscape:window-x="0"
inkscape:window-y="0"
@@ -2495,7 +2677,7 @@
fit-margin-right="0.5"
fit-margin-bottom="0.5"
units="cm"
- inkscape:snap-global="false"
+ inkscape:snap-global="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
@@ -2607,6 +2789,32 @@
height="310.40146"
x="1058.2677"
y="758.40918" />
+ <path
+ style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-02)"
+ d="m 1597.9772,563.34418 c 0.4636,-0.36597 -0.021,1.8809 -0.045,6.26246"
+ id="path5213-6-8-4-9-9-56-6-0"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-51)"
+ d="m 1577.5842,684.90662 c 0.4636,-0.36597 -1.5747,0.4784 -6.1098,2.54774"
+ id="path5213-6-8-4-9-9-56-6-8"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-50)"
+ d="m 1405.234,654.99099 c 0.4636,-0.36597 0.5015,-1.74928 0.3311,-4.86628"
+ id="path5213-6-8-4-9-9-56-6-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.00000004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect14693-4"
+ width="192.66586"
+ height="169.39575"
+ x="1405.2867"
+ y="520.16724"
+ rx="37" />
<g
id="g14799"
transform="translate(-1.0079016)">
@@ -3017,10 +3225,11 @@
style="opacity:1;fill:#c0c0c0;fill-opacity:1;stroke:#040000;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<path
- style="opacity:1;fill:#c0c0c0;fill-opacity:1;stroke:#040000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4, 4;stroke-dashoffset:0;stroke-opacity:1"
- d="m 1319.7047,180.764 h 37.7525"
+ style="opacity:1;fill:#c0c0c0;fill-opacity:1;stroke:#040000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4,4;stroke-dashoffset:6.1;stroke-opacity:1"
+ d="m 1319.7047,180.764 69.7795,0"
id="path15687-2-6"
- inkscape:connector-curvature="0" />
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:12.8, 2.13333333;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-6-0)"
d="m 1131.0344,258.42719 c 48.1809,-3.99296 64.2076,-2.68523 79.9712,-42.47521 42.8072,-108.05255 133.489,-146.16407 131.2384,-34.5044"
@@ -3028,10 +3237,11 @@
inkscape:connector-curvature="0"
sodipodi:nodetypes="csc" />
<path
- style="opacity:1;fill:#c0c0c0;fill-opacity:1;stroke:#040000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4, 4;stroke-dashoffset:0;stroke-opacity:1"
- d="m 1319.7047,381.98134 h 37.7525"
+ style="opacity:1;fill:#c0c0c0;fill-opacity:1;stroke:#040000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4,4;stroke-dashoffset:3.5;stroke-opacity:1"
+ d="m 1319.7047,381.98134 64.5803,0"
id="path15687-9-5"
- inkscape:connector-curvature="0" />
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:24px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
@@ -3387,28 +3597,6 @@
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<g
- transform="translate(980.51459,-148.00986)"
- id="g23629-5-4">
- <ellipse
- style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.26666689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path3639-2-0-8"
- cx="140.59442"
- cy="435.21741"
- rx="48.48732"
- ry="29.092394" />
- <text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.80000019px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672"
- x="112.51038"
- y="444.62402"
- id="text3021-8-9-7"><tspan
- sodipodi:role="line"
- id="tspan3023-4-6-0"
- x="112.51038"
- y="444.62402"
- style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672">OFF</tspan></text>
- </g>
- <g
transform="translate(969.27179,76.164687)"
id="g23629-5-4-8">
<ellipse
@@ -3592,198 +3780,6 @@
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<g
- id="g14659"
- transform="translate(0,-45.458105)">
- <path
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path5213-6-8-4-9-9-56-6-28-20"
- d="m 1293.1165,914.73803 c 22.9934,5.0006 51.8174,18.31502 72.3787,39.21347"
- style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-5-7)" />
- <path
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path5213-6-8-4-9-9-56-6-28-2"
- d="m 1094.1498,960.95909 c 17.8272,-22.80331 42.9724,-34.59893 64.3085,-42.39665"
- style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-5-0)" />
- <path
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path5213-6-8-4-9-9-56-6-28-7"
- d="m 1099.1838,1048.3297 c -10.8263,-13.3296 -17.2825,-22.994 -19.3174,-41.9076"
- style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-5-2)" />
- <path
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path5213-6-8-4-9-9-56-6-28-8"
- d="m 1386.1562,998.74948 c -0.01,16.47992 -3.5377,27.95532 -16.4966,45.71352"
- style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-5-6)" />
- <path
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path5213-6-8-4-9-9-56-6-9-6"
- d="m 1286.1122,1090.3622 c -32.6374,7.6868 -68.0318,7.3275 -98.7961,1.9808"
- style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-8-4)" />
- <g
- transform="translate(0.00410028,9.005851)"
- id="g7243">
- <g
- id="g28835"
- transform="translate(81.09879,-12.221496)">
- <text
- id="text3021-8-4-1-8-8-2-7"
- y="981.17542"
- x="1222.7643"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.80000019px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
- xml:space="preserve"><tspan
- style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672"
- y="981.17542"
- x="1222.7643"
- id="tspan3023-4-0-1-9-63-8-7"
- sodipodi:role="line">Bike</tspan></text>
- <ellipse
- ry="29.092394"
- rx="67.643234"
- cy="986.1272"
- cx="1248.0287"
- id="path3639-4-4-9-5"
- style="fill:none;stroke:#000000;stroke-width:3.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <text
- id="text3021-8-4-1-8-8-2-7-4"
- y="1005.0751"
- x="1202.3188"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.80000019px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
- xml:space="preserve"><tspan
- style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672"
- y="1005.0751"
- x="1202.3188"
- id="tspan3023-4-0-1-9-63-8-7-8"
- sodipodi:role="line">Flasher</tspan></text>
- </g>
- <g
- id="g28877"
- transform="translate(-82.541209,-37.878365)">
- <text
- id="text3021-8-4-1-8-8-2-7-2"
- y="1087.1008"
- x="1357.3134"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.80000019px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
- xml:space="preserve"><tspan
- style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672"
- y="1087.1008"
- x="1357.3134"
- id="tspan3023-4-0-1-9-63-8-7-89"
- sodipodi:role="line">Party</tspan></text>
- <ellipse
- ry="29.092394"
- rx="67.643234"
- cy="1091.3002"
- cx="1388.598"
- id="path3639-4-4-9-5-3"
- style="fill:none;stroke:#000000;stroke-width:3.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <text
- id="text3021-8-4-1-8-8-2-7-4-6"
- y="1111.7531"
- x="1345.8983"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.80000019px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
- xml:space="preserve"><tspan
- style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672"
- y="1111.7531"
- x="1345.8983"
- id="tspan3023-4-0-1-9-63-8-7-8-8"
- sodipodi:role="line">Strobe</tspan></text>
- </g>
- <g
- id="g28919"
- transform="translate(-88.581451,-166.13611)">
- <text
- id="text3021-8-4-1-8-8-2-7-2-2"
- y="1219.2247"
- x="1200.4392"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.80000019px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
- xml:space="preserve"><tspan
- style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672"
- y="1219.2247"
- x="1200.4392"
- id="tspan3023-4-0-1-9-63-8-7-89-1"
- sodipodi:role="line">Tactical</tspan></text>
- <ellipse
- ry="29.092394"
- rx="67.643234"
- cy="1218.9089"
- cx="1247.527"
- id="path3639-4-4-9-5-3-0"
- style="fill:none;stroke:#000000;stroke-width:3.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <text
- id="text3021-8-4-1-8-8-2-7-4-6-5"
- y="1239.3618"
- x="1204.8273"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.80000019px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
- xml:space="preserve"><tspan
- style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672"
- y="1239.3618"
- x="1204.8273"
- id="tspan3023-4-0-1-9-63-8-7-8-8-1"
- sodipodi:role="line">Strobe</tspan></text>
- </g>
- <g
- id="g28961"
- transform="translate(-2.2028768,-134.13011)">
- <text
- id="text3021-8-4-1-8-8-2-7-2-2-0"
- y="1109.4977"
- x="1088.8826"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.33333397px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
- xml:space="preserve"><tspan
- style="font-size:21.33333397px;line-height:1.25;stroke-width:1.06666672"
- y="1109.4977"
- x="1088.8826"
- id="tspan3023-4-0-1-9-63-8-7-89-1-8"
- sodipodi:role="line">Lightning</tspan></text>
- <ellipse
- ry="29.092394"
- rx="67.643234"
- cy="1109.5366"
- cx="1139.1631"
- id="path3639-4-4-9-5-3-0-5"
- style="fill:none;stroke:#000000;stroke-width:3.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <text
- id="text3021-8-4-1-8-8-2-7-4-6-5-0"
- y="1131.0537"
- x="1106.3962"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.33333397px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
- xml:space="preserve"><tspan
- style="font-size:21.33333397px;line-height:1.25;stroke-width:1.06666672"
- y="1131.0537"
- x="1106.3962"
- id="tspan3023-4-0-1-9-63-8-7-8-8-1-6"
- sodipodi:role="line">Storm</tspan></text>
- </g>
- <g
- id="g5944"
- transform="translate(2.1928969,2.1881554)">
- <text
- id="text3021-8-4-1-8-8-2-7-2-2-0-6"
- y="923.39539"
- x="1182.9138"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:25.60000038px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
- xml:space="preserve"><tspan
- style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672"
- y="923.39539"
- x="1182.9138"
- id="tspan3023-4-0-1-9-63-8-7-89-1-8-7"
- sodipodi:role="line">Candle</tspan></text>
- <ellipse
- ry="29.092394"
- rx="67.643234"
- cy="913.85162"
- cx="1227.4263"
- id="path3639-4-4-9-5-3-0-5-5"
- style="fill:none;stroke:#000000;stroke-width:3.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
- </g>
- </g>
- <g
id="g14617"
transform="translate(-13.294351,-32.815344)">
<path
@@ -3837,24 +3833,6 @@
d="m 1298.1704,855.8694 c 75.92,10.10449 72.6994,-54.50393 12.2633,-55.89492 -51.6628,-1.18906 -74.3675,75.06672 15.6104,66.18339"
style="fill:none;stroke:#009d00;stroke-width:2.1329999;stroke-miterlimit:4;stroke-dasharray:12.798, 2.133;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-31-1-0-9-9)" />
</g>
- <path
- style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-02)"
- d="m 1597.9772,563.34418 c 0.4636,-0.36597 -0.021,1.8809 -0.045,6.26246"
- id="path5213-6-8-4-9-9-56-6-0"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-51)"
- d="m 1577.5842,684.90662 c 0.4636,-0.36597 -1.5747,0.4784 -6.1098,2.54774"
- id="path5213-6-8-4-9-9-56-6-8"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-50)"
- d="m 1405.234,654.99099 c 0.4636,-0.36597 0.5015,-1.74928 0.3311,-4.86628"
- id="path5213-6-8-4-9-9-56-6-6"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.80000019px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
@@ -4038,94 +4016,394 @@
id="path5213-6-8-4-9-9-1-3-0-0-3-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:4.26666689, 4.26666689;stroke-dashoffset:2.13333344;stroke-opacity:1;marker-end:url(#Arrow1Mend-88-1)"
- d="m 1262.9626,853.74322 c 45.3646,10.29118 76.432,-7.96445 88.9489,-15.20313"
- id="path5213-6-8-4-9-9-8-3-5"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.66666698px;line-height:110.00000238%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="1342.4323"
- y="857.24713"
- id="text39623-3"><tspan
- sodipodi:role="line"
- x="1342.4323"
- y="857.24713"
- id="tspan39625-1">+30 min</tspan></text>
<g
- id="g7705">
- <circle
- r="22.470001"
- cy="821.88452"
- cx="1375.8579"
- id="path7491"
- style="opacity:1;fill:url(#linearGradient7569);fill-opacity:1;stroke:url(#linearGradient7692);stroke-width:1.715;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <ellipse
- ry="20.7346"
- rx="20.29092"
- cy="821.88452"
- cx="1375.8579"
- id="path7491-8"
- style="opacity:1;fill:#fcfcfd;fill-opacity:1;stroke:none;stroke-width:1.83983243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- transform="rotate(-90)"
- d="m -801.14121,1375.8579 a 20.743311,20.29092 0 0 1 -10.37166,17.5725 20.743311,20.29092 0 0 1 -20.74331,0 20.743311,20.29092 0 0 1 -10.37165,-17.5725"
- sodipodi:open="true"
- sodipodi:end="3.1415927"
- sodipodi:start="0"
- sodipodi:ry="20.29092"
- sodipodi:rx="20.743311"
- sodipodi:cy="1375.8579"
- sodipodi:cx="-821.88452"
- sodipodi:type="arc"
- id="path7491-5"
- style="opacity:1;fill:url(#linearGradient7538);fill-opacity:1;stroke:none;stroke-width:1.84021866;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ id="g25629">
<path
+ sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
- id="path7493"
- d="m 1355.307,821.88451 h 3.8436"
- style="opacity:1;fill:none;fill-opacity:1;stroke:#7b7b7b;stroke-width:1.3436662;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ id="path5213-6-8-4-9-9-56-6-28-20"
+ d="m 1293.1165,869.27992 c 22.9934,5.0006 51.8174,18.31502 72.3787,39.21347"
+ style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-5-7)" />
<path
+ sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
- id="path7495"
- d="m 1396.1468,821.88451 h -3.3507"
- style="opacity:1;fill:none;fill-opacity:1;stroke:#7b7b7b;stroke-width:1.3436662;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ id="path5213-6-8-4-9-9-56-6-28-2"
+ d="m 1094.1498,915.50098 c 17.8272,-22.80331 42.9724,-34.59893 64.3085,-42.39665"
+ style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-5-0)" />
<path
+ style="fill:none;stroke:#ffffff;stroke-width:1.00000004;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-5-0-0)"
+ d="m 1094.1498,915.50098 c 17.8272,-22.80331 42.9724,-34.59893 64.3085,-42.39665"
+ id="path5213-6-8-4-9-9-56-6-28-2-8"
inkscape:connector-curvature="0"
- id="path7497"
- d="m 1375.8579,801.14199 v 3.54788"
- style="opacity:1;fill:none;fill-opacity:1;stroke:#7b7b7b;stroke-width:1.3436662;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ sodipodi:nodetypes="cc" />
<path
+ sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
- id="path7499"
- d="m 1375.8579,842.61913 v -3.64646"
- style="opacity:1;fill:none;fill-opacity:1;stroke:#7b7b7b;stroke-width:1.3436662;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ id="path5213-6-8-4-9-9-56-6-28-7"
+ d="m 1099.1838,1002.8716 c -10.8263,-13.32961 -17.2825,-22.994 -19.3174,-41.90761"
+ style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-5-2)" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path5213-6-8-4-9-9-56-6-28-8"
+ d="m 1386.1562,953.29137 c -0.01,16.47992 -3.5377,27.95532 -16.4966,45.71352"
+ style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-5-6)" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path5213-6-8-4-9-9-56-6-9-6"
+ d="m 1286.1122,1044.9041 c -32.6374,7.6868 -68.0318,7.3275 -98.7961,1.9808"
+ style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-8-4)" />
<path
- sodipodi:nodetypes="ccccc"
+ style="fill:none;stroke:#ffffff;stroke-width:1.00000004;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-5-7-0)"
+ d="m 1293.1165,869.27993 c 22.9934,5.0006 51.8174,18.31502 72.3787,39.21347"
+ id="path5213-6-8-4-9-9-56-6-28-20-8"
inkscape:connector-curvature="0"
- id="path7505"
- d="m 1374.5713,821.88451 1.1658,17.72796 h 0.34 l 1.0673,-17.72796 z"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#010109;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.01549935;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ sodipodi:nodetypes="cc" />
<path
- sodipodi:nodetypes="ccccc"
+ style="fill:none;stroke:#ffffff;stroke-width:1.00000004;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-5-6-0)"
+ d="m 1386.1562,953.29137 c -0.01,16.47992 -3.5377,27.95532 -16.4966,45.71352"
+ id="path5213-6-8-4-9-9-56-6-28-8-2"
inkscape:connector-curvature="0"
- id="path7594"
- d="m 1392.31,822.12981 c 0,7.79405 -7.5434,14.85118 -14.018,14.85118 v 1.34367 c 7.4212,0 14.1074,-7.62913 14.1074,-16.19485 z"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#0b0b0b;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.3436662;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ sodipodi:nodetypes="cc" />
<path
- sodipodi:nodetypes="ccccc"
+ style="fill:none;stroke:#ffffff;stroke-width:1.00000004;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-8-4-9)"
+ d="m 1286.1122,1044.9041 c -32.6374,7.6868 -68.0318,7.3275 -98.7961,1.9808"
+ id="path5213-6-8-4-9-9-56-6-9-6-1"
inkscape:connector-curvature="0"
- id="path7594-3"
- d="m 1388.7657,822.05276 c 0,5.76689 -5.5816,10.98852 -10.3722,10.98852 v 0.9942 c 5.4909,0 10.4382,-5.64487 10.4382,-11.98272 z"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#0b0b0b;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99419165;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ sodipodi:nodetypes="cc" />
<path
- sodipodi:nodetypes="ccccc"
+ style="fill:none;stroke:#f6fcf6;stroke-width:1.00000004;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-5-2-0)"
+ d="m 1099.1838,1002.8716 c -10.8263,-13.3296 -17.2825,-22.994 -19.3174,-41.9076"
+ id="path5213-6-8-4-9-9-56-6-28-7-2"
inkscape:connector-curvature="0"
- id="path7594-36"
- d="m 1385.327,822.06555 c 0,3.80652 -3.6842,7.25313 -6.8462,7.25313 v 0.65624 c 3.6244,0 6.8899,-3.72599 6.8899,-7.90937 z"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#0b0b0b;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.65623033;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ sodipodi:nodetypes="cc" />
+ <g
+ transform="translate(0.00410028,-36.452254)"
+ id="g7243">
+ <g
+ id="g28835"
+ transform="translate(81.09879,-12.221496)">
+ <text
+ id="text3021-8-4-1-8-8-2-7"
+ y="981.17542"
+ x="1222.7643"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.80000019px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
+ xml:space="preserve"><tspan
+ style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672"
+ y="981.17542"
+ x="1222.7643"
+ id="tspan3023-4-0-1-9-63-8-7"
+ sodipodi:role="line">Bike</tspan></text>
+ <ellipse
+ ry="29.092394"
+ rx="67.643234"
+ cy="986.1272"
+ cx="1248.0287"
+ id="path3639-4-4-9-5"
+ style="fill:none;stroke:#000000;stroke-width:3.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ id="text3021-8-4-1-8-8-2-7-4"
+ y="1005.0751"
+ x="1202.3188"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.80000019px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
+ xml:space="preserve"><tspan
+ style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672"
+ y="1005.0751"
+ x="1202.3188"
+ id="tspan3023-4-0-1-9-63-8-7-8"
+ sodipodi:role="line">Flasher</tspan></text>
+ </g>
+ <g
+ id="g28877"
+ transform="translate(-82.541209,-37.878365)">
+ <text
+ id="text3021-8-4-1-8-8-2-7-2"
+ y="1087.1008"
+ x="1357.3134"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.80000019px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
+ xml:space="preserve"><tspan
+ style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672"
+ y="1087.1008"
+ x="1357.3134"
+ id="tspan3023-4-0-1-9-63-8-7-89"
+ sodipodi:role="line">Party</tspan></text>
+ <ellipse
+ ry="29.092394"
+ rx="67.643234"
+ cy="1091.3002"
+ cx="1388.598"
+ id="path3639-4-4-9-5-3"
+ style="fill:none;stroke:#000000;stroke-width:3.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ id="text3021-8-4-1-8-8-2-7-4-6"
+ y="1111.7531"
+ x="1345.8983"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.80000019px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
+ xml:space="preserve"><tspan
+ style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672"
+ y="1111.7531"
+ x="1345.8983"
+ id="tspan3023-4-0-1-9-63-8-7-8-8"
+ sodipodi:role="line">Strobe</tspan></text>
+ </g>
+ <g
+ id="g28919"
+ transform="translate(-88.581451,-166.13611)">
+ <text
+ id="text3021-8-4-1-8-8-2-7-2-2"
+ y="1219.2247"
+ x="1200.4392"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.80000019px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
+ xml:space="preserve"><tspan
+ style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672"
+ y="1219.2247"
+ x="1200.4392"
+ id="tspan3023-4-0-1-9-63-8-7-89-1"
+ sodipodi:role="line">Tactical</tspan></text>
+ <ellipse
+ ry="29.092394"
+ rx="67.643234"
+ cy="1218.9089"
+ cx="1247.527"
+ id="path3639-4-4-9-5-3-0"
+ style="fill:none;stroke:#000000;stroke-width:3.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ id="text3021-8-4-1-8-8-2-7-4-6-5"
+ y="1239.3618"
+ x="1204.8273"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.80000019px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
+ xml:space="preserve"><tspan
+ style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672"
+ y="1239.3618"
+ x="1204.8273"
+ id="tspan3023-4-0-1-9-63-8-7-8-8-1"
+ sodipodi:role="line">Strobe</tspan></text>
+ </g>
+ <g
+ id="g28961"
+ transform="translate(-2.2028768,-134.13011)">
+ <text
+ id="text3021-8-4-1-8-8-2-7-2-2-0"
+ y="1109.4977"
+ x="1088.8826"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.33333397px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
+ xml:space="preserve"><tspan
+ style="font-size:21.33333397px;line-height:1.25;stroke-width:1.06666672"
+ y="1109.4977"
+ x="1088.8826"
+ id="tspan3023-4-0-1-9-63-8-7-89-1-8"
+ sodipodi:role="line">Lightning</tspan></text>
+ <ellipse
+ ry="29.092394"
+ rx="67.643234"
+ cy="1109.5366"
+ cx="1139.1631"
+ id="path3639-4-4-9-5-3-0-5"
+ style="fill:none;stroke:#000000;stroke-width:3.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ id="text3021-8-4-1-8-8-2-7-4-6-5-0"
+ y="1131.0537"
+ x="1106.3962"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.33333397px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
+ xml:space="preserve"><tspan
+ style="font-size:21.33333397px;line-height:1.25;stroke-width:1.06666672"
+ y="1131.0537"
+ x="1106.3962"
+ id="tspan3023-4-0-1-9-63-8-7-8-8-1-6"
+ sodipodi:role="line">Storm</tspan></text>
+ </g>
+ <g
+ id="g5944"
+ transform="translate(2.1928969,2.1881554)">
+ <text
+ id="text3021-8-4-1-8-8-2-7-2-2-0-6"
+ y="923.39539"
+ x="1182.9138"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:25.60000038px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.06666672"
+ xml:space="preserve"><tspan
+ style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672"
+ y="923.39539"
+ x="1182.9138"
+ id="tspan3023-4-0-1-9-63-8-7-89-1-8-7"
+ sodipodi:role="line">Candle</tspan></text>
+ <ellipse
+ ry="29.092394"
+ rx="67.643234"
+ cy="913.85162"
+ cx="1227.4263"
+ id="path3639-4-4-9-5-3-0-5-5"
+ style="fill:none;stroke:#000000;stroke-width:3.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path5213-6-8-4-9-9-8-3-5"
+ d="m 1262.9626,853.74322 c 45.3646,10.29118 76.432,-7.96445 88.9489,-15.20313"
+ style="fill:none;stroke:#000000;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:4.26666689, 4.26666689;stroke-dashoffset:2.13333344;stroke-opacity:1;marker-end:url(#Arrow1Mend-88-1)" />
+ <text
+ id="text39623-3"
+ y="857.24713"
+ x="1342.4323"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.66666698px;line-height:110.00000238%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ id="tspan39625-1"
+ y="857.24713"
+ x="1342.4323"
+ sodipodi:role="line">+30 min</tspan></text>
+ <g
+ id="g7705">
+ <circle
+ style="opacity:1;fill:url(#linearGradient7569);fill-opacity:1;stroke:url(#linearGradient7692);stroke-width:1.715;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path7491"
+ cx="1375.8579"
+ cy="821.88452"
+ r="22.470001" />
+ <ellipse
+ style="opacity:1;fill:#fcfcfd;fill-opacity:1;stroke:none;stroke-width:1.83983243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path7491-8"
+ cx="1375.8579"
+ cy="821.88452"
+ rx="20.29092"
+ ry="20.7346" />
+ <path
+ style="opacity:1;fill:url(#linearGradient7538);fill-opacity:1;stroke:none;stroke-width:1.84021866;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path7491-5"
+ sodipodi:type="arc"
+ sodipodi:cx="-821.88452"
+ sodipodi:cy="1375.8579"
+ sodipodi:rx="20.743311"
+ sodipodi:ry="20.29092"
+ sodipodi:start="0"
+ sodipodi:end="3.1415927"
+ sodipodi:open="true"
+ d="m -801.14121,1375.8579 a 20.743311,20.29092 0 0 1 -10.37166,17.5725 20.743311,20.29092 0 0 1 -20.74331,0 20.743311,20.29092 0 0 1 -10.37165,-17.5725"
+ transform="rotate(-90)" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#7b7b7b;stroke-width:1.3436662;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 1355.307,821.88451 h 3.8436"
+ id="path7493"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#7b7b7b;stroke-width:1.3436662;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 1396.1468,821.88451 h -3.3507"
+ id="path7495"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#7b7b7b;stroke-width:1.3436662;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 1375.8579,801.14199 v 3.54788"
+ id="path7497"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#7b7b7b;stroke-width:1.3436662;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 1375.8579,842.61913 v -3.64646"
+ id="path7499"
+ inkscape:connector-curvature="0" />
+ <path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#010109;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.01549935;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 1374.5713,821.88451 1.1658,17.72796 h 0.34 l 1.0673,-17.72796 z"
+ id="path7505"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#0b0b0b;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.3436662;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 1392.31,822.12981 c 0,7.79405 -7.5434,14.85118 -14.018,14.85118 v 1.34367 c 7.4212,0 14.1074,-7.62913 14.1074,-16.19485 z"
+ id="path7594"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#0b0b0b;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99419165;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 1388.7657,822.05276 c 0,5.76689 -5.5816,10.98852 -10.3722,10.98852 v 0.9942 c 5.4909,0 10.4382,-5.64487 10.4382,-11.98272 z"
+ id="path7594-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#0b0b0b;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.65623033;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ d="m 1385.327,822.06555 c 0,3.80652 -3.6842,7.25313 -6.8462,7.25313 v 0.65624 c 3.6244,0 6.8899,-3.72599 6.8899,-7.90937 z"
+ id="path7594-36"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ </g>
</g>
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:1.00000004;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-9-6)"
+ d="m 1499.2534,277.65781 c 49.5295,21.01119 54.6565,-32.82142 113.6548,0"
+ id="path5213-6-8-4-9-9-56-7-15"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#fcfffc;stroke-width:1.00000004;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:2.9862002;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-9-2)"
+ d="m 1498.1078,321.38191 c 49.5295,21.0112 54.6565,-32.82141 113.6548,0"
+ id="path5213-6-8-4-9-9-9-29-90-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:1.00000004;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-6-0-0)"
+ d="m 1131.0344,258.42719 c 48.1809,-3.99296 64.2076,-2.68523 79.9712,-42.47521 42.8072,-108.05255 133.489,-146.164071 131.2384,-34.5044"
+ id="path5213-6-8-4-9-9-9-29-5-2-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="csc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:1.00000004;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-79-0-6)"
+ d="m 1159.4045,270.23739 c 108.4581,4.22547 23.1574,-88.17063 154.3238,-89.5992"
+ id="path5213-6-8-4-9-9-8-2-0-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <g
+ transform="translate(980.51459,-148.00986)"
+ id="g23629-5-4">
+ <ellipse
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:4.26666689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path3639-2-0-8"
+ cx="140.59442"
+ cy="435.21741"
+ rx="48.48732"
+ ry="29.092394" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.80000019px;line-height:0%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.06666672"
+ x="112.51038"
+ y="444.62402"
+ id="text3021-8-9-7"><tspan
+ sodipodi:role="line"
+ id="tspan3023-4-6-0"
+ x="112.51038"
+ y="444.62402"
+ style="font-size:25.60000038px;line-height:1.25;stroke-width:1.06666672">OFF</tspan></text>
+ </g>
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:1.00000004;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-9-8-2)"
+ d="m 1364.0175,147.54301 c 29.3791,49.77199 28.7391,140.19451 -0.7576,180.57634"
+ id="path5213-6-8-4-9-9-56-7-1-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:1.00000004;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-62-70-9)"
+ d="M 1419.75,188.60753 V 372.1669"
+ id="path5213-6-8-2-4-1"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <g
+ id="g25632">
+ <path
+ sodipodi:nodetypes="csc"
+ inkscape:connector-curvature="0"
+ id="path5213-6-8-4-9-9-9-4-6-4-2-3-7"
+ d="m 1284.876,826.56171 c 75.92,10.10449 72.6994,-54.50393 12.2633,-55.89492 -51.6628,-1.18906 -74.3675,75.06672 15.6104,66.18339"
+ style="fill:none;stroke:#ffffff;stroke-width:1.00000004;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-31-1-0-9-9-9)" />
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path5213-6-8-4-9-9-56-6-28-7-0"
+ d="M 23.378604,46.366264 C 12.552304,33.036664 6.0961038,23.372264 4.0612038,4.458664"
+ style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-5-2-2)" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path5213-6-8-4-9-9-56-6-28-7-29"
+ d="M 23.378604,46.366264 C 12.552304,33.036664 6.0961038,23.372264 4.0612038,4.458664"
+ style="fill:none;stroke:#009d00;stroke-width:2.13333344;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend-367-3-5-2-5)" />
</g>
</svg>
diff --git a/spaghetti-monster/darkhorse/darkhorse.c b/spaghetti-monster/darkhorse/darkhorse.c
index ce1db2b..e613f55 100644
--- a/spaghetti-monster/darkhorse/darkhorse.c
+++ b/spaghetti-monster/darkhorse/darkhorse.c
@@ -263,6 +263,7 @@ uint8_t strobe_beacon_state(Event event, uint16_t arg) {
return MISCHIEF_MANAGED;
}
// 1 click (initially): cancel current blink
+ // FIXME: this is no longer necessary; FSM does this automatically now
if (event == EV_click1_release) {
interrupt_nice_delays();
return MISCHIEF_MANAGED;
diff --git a/spaghetti-monster/fsm-adc.c b/spaghetti-monster/fsm-adc.c
index 2ec630c..8decd9d 100644
--- a/spaghetti-monster/fsm-adc.c
+++ b/spaghetti-monster/fsm-adc.c
@@ -51,7 +51,7 @@ inline void ADC_off() {
static inline uint8_t calc_voltage_divider(uint16_t value) {
// use 9.7 fixed-point to get sufficient precision
uint16_t adc_per_volt = ((ADC_44<<7) - (ADC_22<<7)) / (44-22);
- // incoming value is 14.2 fixed-point, so shift it 2 bits less
+ // incoming value is 8.2 fixed-point, so shift it 2 bits less
uint8_t result = ((value<<5) / adc_per_volt) + VOLTAGE_FUDGE_FACTOR;
return result;
}
diff --git a/spaghetti-monster/rampingios/rampingiosv3.c b/spaghetti-monster/rampingios/rampingiosv3.c
index ff81f61..399bcf0 100644
--- a/spaghetti-monster/rampingios/rampingiosv3.c
+++ b/spaghetti-monster/rampingios/rampingiosv3.c
@@ -274,11 +274,6 @@ uint8_t off_state(Event event, uint16_t arg) {
set_state(steady_state, memorized_level);
return MISCHIEF_MANAGED;
}
- // 2 clicks (initial press): off, to prep for later events
- else if (event == EV_click2_press) {
- set_level(0);
- return MISCHIEF_MANAGED;
- }
// click, hold: go to highest level (ceiling) (for ramping down)
else if (event == EV_click2_hold) {
set_state(steady_state, MAX_LEVEL);
@@ -289,6 +284,11 @@ uint8_t off_state(Event event, uint16_t arg) {
set_state(steady_state, MAX_LEVEL);
return MISCHIEF_MANAGED;
}
+ // 3 clicks (initial press): off, to prep for later events
+ else if (event == EV_click3_press) {
+ set_level(0);
+ return MISCHIEF_MANAGED;
+ }
#ifdef USE_BATTCHECK
// 3 clicks: battcheck mode / blinky mode group 1
else if (event == EV_3clicks) {
@@ -1154,9 +1154,6 @@ void loop() {
StatePtr state = current_state;
- #ifdef USE_DYNAMIC_UNDERCLOCKING
- auto_clock_speed();
- #endif
if (0) {}
#ifdef USE_BATTCHECK