From b3283d8dccad0060fd6bb59a8ac12f8911884614 Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 27 Oct 2017 18:04:08 +0200 Subject: [PATCH 001/151] Boot sequence from both ends --- init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init.lua b/init.lua index 370e0c8..74d28a2 100644 --- a/init.lua +++ b/init.lua @@ -2,12 +2,12 @@ uart.setup(0, 115200, 8, 0, 1, 1 ) print("Autostart in 5 seconds...") ws2812.init() -- WS2812 LEDs initialized on GPIO2 - +MAXLEDS=110 counter1=0 ws2812.write(string.char(0,0,0):rep(114)) tmr.alarm(2, 85, 1, function() counter1=counter1+1 - ws2812.write(string.char(128,0,0):rep(counter1)) + ws2812.write(string.char(128,0,0):rep(counter1) .. string.char(0,0,0):rep(MAXLEDS - (counter1*2)) .. string.char(0,0,64):rep(counter1)) end) local blacklistfile="init.lua config.lua config.lua.new" From f2b625f0cbbb2ef950bb80acd391c507f7675f06 Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 29 Dec 2017 21:47:23 +0100 Subject: [PATCH 002/151] Secure, that the 'space' leds in the middle are only positive numbers --- init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 74d28a2..54c20bf 100644 --- a/init.lua +++ b/init.lua @@ -7,7 +7,8 @@ counter1=0 ws2812.write(string.char(0,0,0):rep(114)) tmr.alarm(2, 85, 1, function() counter1=counter1+1 - ws2812.write(string.char(128,0,0):rep(counter1) .. string.char(0,0,0):rep(MAXLEDS - (counter1*2)) .. string.char(0,0,64):rep(counter1)) + spaceLeds = math.max(MAXLEDS - (counter1*2), 0) + ws2812.write(string.char(128,0,0):rep(counter1) .. string.char(0,0,0):rep(spaceLeds) .. string.char(0,0,64):rep(counter1)) end) local blacklistfile="init.lua config.lua config.lua.new" @@ -54,3 +55,4 @@ tmr.alarm(1, 5000, 0, function() print("No Main file found") end end) +print("Init file end reached") From 34bec501caecd7127b50b5bccbee41a3df550dc8 Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 29 Dec 2017 21:49:17 +0100 Subject: [PATCH 003/151] Initial version of nodemcu Emulation project --- simulation/.classpath | 9 ++ simulation/.gitignore | 1 + simulation/.project | 17 +++ simulation/libs/.gitignore | 3 + simulation/libs/Readme.md | 7 + simulation/libs/luaj-jme-3.0.1.jar | Bin 0 -> 211223 bytes simulation/libs/luaj-jse-3.0.1.jar | Bin 0 -> 354104 bytes .../src/de/c3ma/ollo/LuaSimulation.java | 13 ++ simulation/src/de/c3ma/ollo/LuaThreadTmr.java | 54 ++++++++ .../src/de/c3ma/ollo/WS2812Simulation.java | 120 ++++++++++++++++++ .../de/c3ma/ollo/mockup/DoFileFunction.java | 46 +++++++ .../src/de/c3ma/ollo/mockup/ESP8266File.java | 101 +++++++++++++++ .../src/de/c3ma/ollo/mockup/ESP8266Node.java | 79 ++++++++++++ .../src/de/c3ma/ollo/mockup/ESP8266Tmr.java | 92 ++++++++++++++ .../src/de/c3ma/ollo/mockup/ESP8266Uart.java | 38 ++++++ .../src/de/c3ma/ollo/mockup/ESP8266Wifi.java | 69 ++++++++++ .../de/c3ma/ollo/mockup/ESP8266Ws2812.java | 61 +++++++++ 17 files changed, 710 insertions(+) create mode 100644 simulation/.classpath create mode 100644 simulation/.gitignore create mode 100644 simulation/.project create mode 100644 simulation/libs/.gitignore create mode 100644 simulation/libs/Readme.md create mode 100644 simulation/libs/luaj-jme-3.0.1.jar create mode 100644 simulation/libs/luaj-jse-3.0.1.jar create mode 100644 simulation/src/de/c3ma/ollo/LuaSimulation.java create mode 100644 simulation/src/de/c3ma/ollo/LuaThreadTmr.java create mode 100644 simulation/src/de/c3ma/ollo/WS2812Simulation.java create mode 100644 simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java create mode 100644 simulation/src/de/c3ma/ollo/mockup/ESP8266File.java create mode 100644 simulation/src/de/c3ma/ollo/mockup/ESP8266Node.java create mode 100644 simulation/src/de/c3ma/ollo/mockup/ESP8266Tmr.java create mode 100644 simulation/src/de/c3ma/ollo/mockup/ESP8266Uart.java create mode 100644 simulation/src/de/c3ma/ollo/mockup/ESP8266Wifi.java create mode 100644 simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java diff --git a/simulation/.classpath b/simulation/.classpath new file mode 100644 index 0000000..3717ff0 --- /dev/null +++ b/simulation/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/simulation/.gitignore b/simulation/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/simulation/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/simulation/.project b/simulation/.project new file mode 100644 index 0000000..eaad9a1 --- /dev/null +++ b/simulation/.project @@ -0,0 +1,17 @@ + + + WS2812Emulation + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/simulation/libs/.gitignore b/simulation/libs/.gitignore new file mode 100644 index 0000000..44794ca --- /dev/null +++ b/simulation/libs/.gitignore @@ -0,0 +1,3 @@ +luaj-3.0.1.zip +luaj-3.0.1/ +luaj-sources-3.0.1.jar diff --git a/simulation/libs/Readme.md b/simulation/libs/Readme.md new file mode 100644 index 0000000..c76c4af --- /dev/null +++ b/simulation/libs/Readme.md @@ -0,0 +1,7 @@ +# Dependencies + +The following file is expected here: +`luaj-3.0.1.zip` + +It can be downloaded here: +https://sourceforge.net/projects/luaj/files/latest/download diff --git a/simulation/libs/luaj-jme-3.0.1.jar b/simulation/libs/luaj-jme-3.0.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..4541df35ea28a3ed1a41fbc8822b5c7356881467 GIT binary patch literal 211223 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

hm`sGFmMyS=ITpPhT4g#Zi2 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 s!*WkQgXC^@ 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 F@L#!rWRU;> literal 0 HcmV?d00001 diff --git a/simulation/libs/luaj-jse-3.0.1.jar b/simulation/libs/luaj-jse-3.0.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..e1258605e4f05332759ec336bcff2f5b2a444fcf GIT binary patch literal 354104 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 z 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%0AJhVaYG}`8VR$ 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�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 z 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
!E8NP5V5Z6 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%0DG73ELl_d zt|gB{9==J&oJ@n1KAgT(a%1qobm*)~U?o)srRl4A*zjSOFpBV^1mmx-8Fi{ECPH|t z30VQ?IV#U(Y^p64CjJy;4+&N>DP)|el$L$Q`Wg5Htmm`r=C&4Na|!O!nJoKLh!@(e zI#_KHs_OkW31H^F41$;EXmqMw-vh8xc+gG4sDcIh?}c^H%KrDwj(BZNNHulv7gXH_ zB-TbrJFjwLU^u-2t02Ciu*d{&hJf4G@QS)hN)a`NeuoSE0$mjI&i}V4oVm8}wjIun zP^+g<9D0*WxcdKD6n68BGBZc!t)v0)N_5bD2X4JUHBTJ7Ac6hAJASm#7i(=*Pe6T<#`D=9X;Aj?T*0qCU^9(0IIZNsI5#^Ie%5lnb*5)yEYdu>sPC%yGF z6o6!CptqRYUW{Le16&nGVOWMSgTs)wGvRha8|O&NLLwtc1O{gGO!H~SxTRogr#-tk z=O`dKLHB5rn!aL1{(Vg)Tqa8n3uK~SHO`u$&HA$P5r52zQS8RX67yJJ6aF8M;~fqU zX*T%piiCLq#+!5hVv!exuK6_Ozn98FC^GUM-H{i>a+0v#r2C&(8!*3*%+QJ6t7~P- U4yHxcLW9^8!(q1+C?wMV0j=rEhyVZp literal 0 HcmV?d00001 diff --git a/simulation/src/de/c3ma/ollo/LuaSimulation.java b/simulation/src/de/c3ma/ollo/LuaSimulation.java new file mode 100644 index 0000000..7ea3476 --- /dev/null +++ b/simulation/src/de/c3ma/ollo/LuaSimulation.java @@ -0,0 +1,13 @@ +package de.c3ma.ollo; + +/** + * created at 29.12.2017 - 18:29:07
+ * creator: ollo
+ * project: WS2812Emulation
+ * $Id: $
+ * @author ollo
+ */ +public interface LuaSimulation { + + public void reboottriggered(); +} diff --git a/simulation/src/de/c3ma/ollo/LuaThreadTmr.java b/simulation/src/de/c3ma/ollo/LuaThreadTmr.java new file mode 100644 index 0000000..0a958fd --- /dev/null +++ b/simulation/src/de/c3ma/ollo/LuaThreadTmr.java @@ -0,0 +1,54 @@ +package de.c3ma.ollo; + +import org.luaj.vm2.LuaValue; + +/** + * created at 29.12.2017 - 18:48:27
+ * creator: ollo
+ * project: WS2812Emulation
+ * $Id: $
+ * @author ollo
+ */ +public class LuaThreadTmr extends Thread { + + + private boolean running = true; + + private boolean stopped = false; + + private LuaValue code; + + private final int delay; + + private final int timerNumber; + + public LuaThreadTmr(int timerNumber, LuaValue code, boolean endlessloop, int delay) { + this.code = code; + this.running = endlessloop; + this.delay = delay; + this.timerNumber = timerNumber; + } + + @Override + public void run() { + try { + do { + Thread.sleep(delay); + if (code != null) { + code.call(); + } + } while(running); + } catch(InterruptedException ie) { + System.err.println("[TMR] Timer" + timerNumber + " interrupted"); + } + stopped = true; + } + + public boolean isStopped() { return stopped; } + + public void stopThread() { + running = false; + code = null; + } + +} diff --git a/simulation/src/de/c3ma/ollo/WS2812Simulation.java b/simulation/src/de/c3ma/ollo/WS2812Simulation.java new file mode 100644 index 0000000..57c28f6 --- /dev/null +++ b/simulation/src/de/c3ma/ollo/WS2812Simulation.java @@ -0,0 +1,120 @@ +package de.c3ma.ollo; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +import org.luaj.vm2.Globals; +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.lib.jse.JsePlatform; + +import de.c3ma.ollo.mockup.DoFileFunction; +import de.c3ma.ollo.mockup.ESP8266File; +import de.c3ma.ollo.mockup.ESP8266Node; +import de.c3ma.ollo.mockup.ESP8266Tmr; +import de.c3ma.ollo.mockup.ESP8266Uart; +import de.c3ma.ollo.mockup.ESP8266Wifi; +import de.c3ma.ollo.mockup.ESP8266Ws2812; + +/** + * created at 28.12.2017 - 13:19:32
+ * creator: ollo
+ * project: WS2812Emulation
+ * $Id: $
+ * + * @author ollo
+ */ +public class WS2812Simulation implements LuaSimulation { + + private Globals globals = JsePlatform.standardGlobals(); + private ESP8266Tmr espTmr = new ESP8266Tmr(); + private ESP8266File espFile = new ESP8266File(); + private ESP8266Node espNode = new ESP8266Node(this); + private DoFileFunction doFile = new DoFileFunction(globals); + private String scriptName; + + public WS2812Simulation(File sourceFolder) { + globals.load(new ESP8266Uart()); + globals.load(new ESP8266Ws2812()); + globals.load(espTmr); + globals.load(espFile); + globals.load(espNode); + globals.load(new ESP8266Wifi()); + globals.set("dofile", doFile); + + try { + File tempFile = File.createTempFile("NodemcuSimuFile", ""); + File tempDir = new File(tempFile.getParent() + File.separator + "Nodemcu" + System.currentTimeMillis()); + tempDir.mkdir(); + + + System.out.println("[Nodemcu] Directory is " + tempDir.getAbsolutePath()); + + // Copy all files into the temporary folder + for (File f : sourceFolder.listFiles()) { + Files.copy(f.toPath(), new File(tempDir.getAbsolutePath() + File.separator + f.getName()).toPath()); + } + + espFile.setWorkingDirectory(tempDir); + espNode.setWorkingDirectory(tempDir); + doFile.setWorkingDirectory(tempDir); + } catch (IOException e) { + System.err.println("[Nodemcu] " + e.getMessage()); + espFile = null; + espNode = null; + } + } + + public static void main(String[] args) { + + if (args.length == 0) { + printUsage(); + return; + } + + if (args.length == 1) { + File f = new File(args[0]); + if (f.exists()) { + WS2812Simulation simu = new WS2812Simulation(f.getParentFile()); + System.out.println("File : " + f.getAbsolutePath()); + simu.callScript(f.getName()); + } + } else { + printUsage(); + } + + } + + private static void printUsage() { + System.out.println("Usage:"); + System.out.println("one argument required: file to execute."); + System.out.println(".e.g: init.lua"); + } + + @Override + public void reboottriggered() { + System.out.println("=================== Reboot in Simulation -> call it again ================="); + this.espTmr.stopAllTimer(); + try { + Thread.sleep(200); + if (this.scriptName != null) { + System.out.println("Reexecuting..."); + callScript(this.scriptName); + } + } catch (InterruptedException e) { + + } + + } + + private void callScript(String filename) { + this.scriptName=filename; + + if ((espFile != null) && (espFile.getFileInWorkingDir(filename) != null)) { + LuaValue chunk = globals.loadfile(espFile.getFileInWorkingDir(filename).getAbsolutePath()); + chunk.call(); + } else { + throw new RuntimeException("Copy into temporary folder failed; script not available"); + } + } +} diff --git a/simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java b/simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java new file mode 100644 index 0000000..56e5a63 --- /dev/null +++ b/simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java @@ -0,0 +1,46 @@ +package de.c3ma.ollo.mockup; + +import java.io.File; + +import org.luaj.vm2.Globals; +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.lib.OneArgFunction; + +/** + * created at 29.12.2017 - 20:23:48
+ * creator: ollo
+ * project: WS2812Emulation
+ * $Id: $
+ * @author ollo
+ */ +public class DoFileFunction extends OneArgFunction { + + private File workingDir = null; + private Globals globals; + + public DoFileFunction(Globals globals) { + this.globals = globals; + } + + @Override + public LuaValue call(LuaValue luaFilename) { + String filename = luaFilename.checkjstring(); + + System.out.println("[Nodemcu] dofile " + filename); + + File f = new File(workingDir.getAbsolutePath() + File.separator + filename); + + if (f.exists()) { + LuaValue chunk = this.globals.loadfile(f.getAbsolutePath()); + chunk.call(); + return LuaValue.valueOf(true); + } else { + return LuaValue.valueOf(false); + } + } + + public void setWorkingDirectory(File workingDir) { + this.workingDir = workingDir; + } + +} diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266File.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266File.java new file mode 100644 index 0000000..27ad122 --- /dev/null +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266File.java @@ -0,0 +1,101 @@ +package de.c3ma.ollo.mockup; + +import java.io.File; +import java.util.ArrayList; + +import org.luaj.vm2.LuaTable; +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.lib.OneArgFunction; +import org.luaj.vm2.lib.TwoArgFunction; + +/** + * created at 29.12.2017 - 01:08:53
+ * creator: ollo
+ * project: WS2812Emulation
+ * $Id: $
+ * @author ollo
+ */ +public class ESP8266File extends TwoArgFunction { + + private File workingDir = null; + + private File openedFile = null; + + @Override + public LuaValue call(LuaValue modname, LuaValue env) { + env.checkglobals(); + final LuaTable file = new LuaTable(); + file.set("open", new OpenFunction()); + file.set("list", new ListFunction()); + file.set("remove", new RemoveFunction()); + env.set("file", file); + env.get("package").get("loaded").set("file", file); + + return file; + } + + private class ListFunction extends TwoArgFunction { + + @Override + public LuaValue call(LuaValue arg1, LuaValue arg2) { + final LuaTable fileList = new LuaTable(); + + if ((workingDir != null) && (workingDir.exists())) { + File[] files = workingDir.listFiles(); + for (File file : files) { + fileList.set(file.getName(), file.getAbsolutePath()); + } + } + + return fileList; + } + + } + + private class OpenFunction extends OneArgFunction { + + @Override + public LuaValue call(LuaValue fileName) { + + final String codeFileName = fileName.checkjstring(); + final File f = new File( workingDir.getAbsolutePath() + File.separator + codeFileName); + //System.out.println("[FILE] Loading " + codeFileName); + if (f.exists()) { + ESP8266File.this.openedFile = f; + } + + return LuaValue.valueOf((f.exists())); + } + + } + + private class RemoveFunction extends OneArgFunction { + + @Override + public LuaValue call(LuaValue fileName) { + + final String luaFileName = fileName.checkjstring(); + System.out.println("[FILE] Removing " + luaFileName); + File f = new File(workingDir.getAbsolutePath() + File.separator + fileName); + if (f.exists()) { + return LuaValue.valueOf(f.delete()); + } else { + return LuaValue.valueOf(false); + } + } + + } + + public void setWorkingDirectory(File workingDir) { + this.workingDir = workingDir; + } + + public File getFileInWorkingDir(String filename) { + File f = new File (workingDir.getAbsolutePath() + File.separator + filename); + if (f.exists()) { + return f; + } else { + return null; + } + } +} diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Node.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Node.java new file mode 100644 index 0000000..ab4fb8a --- /dev/null +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Node.java @@ -0,0 +1,79 @@ +package de.c3ma.ollo.mockup; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +import org.luaj.vm2.LuaTable; +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.lib.OneArgFunction; +import org.luaj.vm2.lib.TwoArgFunction; +import org.luaj.vm2.lib.ZeroArgFunction; + +import de.c3ma.ollo.LuaSimulation; + +/** + * created at 29.12.2017 - 01:29:40
+ * creator: ollo
+ * project: WS2812Emulation
+ * $Id: $
+ * @author ollo
+ */ +public class ESP8266Node extends TwoArgFunction { + + private File workingDir = null; + private LuaSimulation nodemcuSimu; + + public ESP8266Node(LuaSimulation nodemcuSimu) { + this.nodemcuSimu = nodemcuSimu; + } + + @Override + public LuaValue call(LuaValue modname, LuaValue env) { + env.checkglobals(); + final LuaTable node = new LuaTable(); + node.set("compile", new CompileFunction()); + node.set("restart", new RestartFunction()); + env.set("node", node); + env.get("package").get("loaded").set("node", node); + return node; + } + + private class CompileFunction extends OneArgFunction { + + @Override + public LuaValue call(LuaValue fileName) { + final String codeFileName = fileName.checkjstring(); + final String compiledFileName = fileName.checkjstring().replace(".lua", ".lc"); + final File f = new File( workingDir.getAbsolutePath() + File.separator + codeFileName); + System.out.println("[Node] Compiling " + compiledFileName); + final File outf = new File( workingDir.getAbsolutePath() + File.separator + compiledFileName); + if (f.exists()) { + //Simply copy the file as .lc file + try { + Files.copy(f.toPath(), outf.toPath()); + } catch (IOException e) { + return LuaValue.valueOf(false); + } + } + + return LuaValue.valueOf(f.exists()); + } + + } + + private class RestartFunction extends ZeroArgFunction { + + @Override + public LuaValue call() { + System.out.println("[Node] Restart"); + nodemcuSimu.reboottriggered(); + return LuaValue.valueOf(false); + } + + } + + public void setWorkingDirectory(File workingDir) { + this.workingDir = workingDir; + } +} diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Tmr.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Tmr.java new file mode 100644 index 0000000..2b01e83 --- /dev/null +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Tmr.java @@ -0,0 +1,92 @@ +package de.c3ma.ollo.mockup; + +import org.luaj.vm2.LuaTable; +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.Varargs; +import org.luaj.vm2.lib.OneArgFunction; +import org.luaj.vm2.lib.TwoArgFunction; +import org.luaj.vm2.lib.VarArgFunction; + +import de.c3ma.ollo.LuaThreadTmr; + +/** + * created at 29.12.2017 - 00:07:22
+ * creator: ollo
+ * project: WS2812Emulation
+ * $Id: $
+ * @author ollo
+ */ +public class ESP8266Tmr extends TwoArgFunction { + + private static final int MAXTHREADS = 7; + + private static LuaThreadTmr[] allThreads = new LuaThreadTmr[MAXTHREADS]; + + @Override + public LuaValue call(LuaValue modname, LuaValue env) { + env.checkglobals(); + final LuaTable tmr = new LuaTable(); + tmr.set("stop", new stop()); + tmr.set("alarm", new alarm()); + env.set("tmr", tmr); + env.get("package").get("loaded").set("tmr", tmr); + + /* initialize the Threads */ + for (Thread t : allThreads) { + t = null; + } + + return tmr; + } + + private boolean stopTmr(int i) { + if (allThreads[i] != null) { + allThreads[i].stopThread(); + allThreads[i] = null; + return true; + } else { + return false; + } + } + + private class stop extends OneArgFunction { + + @Override + public LuaValue call(LuaValue arg) { + final int timerNumer = arg.toint(); + System.out.println("[TMR] Timer" + timerNumer + " stopped"); + return LuaValue.valueOf(stopTmr(timerNumer)); + } + + } + + private class alarm extends VarArgFunction { + public Varargs invoke(Varargs varargs) { + if (varargs.narg()== 4) { + final int timerNumer = varargs.arg(1).toint(); + final byte endlessloop = varargs.arg(3).tobyte(); + final int delay = varargs.arg(2).toint(); + final LuaValue code = varargs.arg(4); + System.out.println("[TMR] Timer" + timerNumer ); + + if ((timerNumer < 0) || (timerNumer > timerNumer)) { + return LuaValue.error("[TMR] Timer" + timerNumer + " is not available, choose 0 to 6"); + } + + if (stopTmr(timerNumer)) { + System.err.println("[TMR] Timer" + timerNumer + " stopped"); + } + + allThreads[timerNumer] = new LuaThreadTmr(timerNumer, code, (endlessloop == 1), delay); + allThreads[timerNumer].start(); + } + return LuaValue.valueOf(true); + } + } + + public void stopAllTimer() { + for (int i = 0; i < allThreads.length; i++) { + stopTmr(i); + } + } +} diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Uart.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Uart.java new file mode 100644 index 0000000..9cb59c4 --- /dev/null +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Uart.java @@ -0,0 +1,38 @@ +package de.c3ma.ollo.mockup; + +import org.luaj.vm2.LuaTable; +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.Varargs; +import org.luaj.vm2.lib.TwoArgFunction; +import org.luaj.vm2.lib.VarArgFunction; + +/** + * created at 28.12.2017 - 23:05:05
+ * creator: ollo
+ * project: WS2812Emulation
+ * $Id: $
+ * @author ollo
+ */ +public class ESP8266Uart extends TwoArgFunction { + + @Override + public LuaValue call(LuaValue modname, LuaValue env) { + env.checkglobals(); + final LuaTable uart = new LuaTable(); + uart.set("setup", new setup()); + env.set("uart", uart); + env.get("package").get("loaded").set("uart", uart); + return uart; + } + + private class setup extends VarArgFunction { + public Varargs invoke(Varargs varargs) { + if (varargs.narg()== 6) { + System.out.println("[UART] " + varargs.arg(2) + " " + varargs.arg(3) + + ((varargs.arg(4).checkint() > 0) ? "Y" : "N") + + varargs.arg(5)); + } + return LuaValue.valueOf(true); + } + } +} diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Wifi.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Wifi.java new file mode 100644 index 0000000..48bcb3b --- /dev/null +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Wifi.java @@ -0,0 +1,69 @@ +package de.c3ma.ollo.mockup; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +import org.luaj.vm2.LuaTable; +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.lib.OneArgFunction; +import org.luaj.vm2.lib.TwoArgFunction; +import org.luaj.vm2.lib.ZeroArgFunction; + +import de.c3ma.ollo.LuaSimulation; + +/** + * created at 29.12.2017 - 01:29:40
+ * creator: ollo
+ * project: WifiEmulation
+ * $Id: $
+ * @author ollo
+ */ +public class ESP8266Wifi extends TwoArgFunction { + + @Override + public LuaValue call(LuaValue modname, LuaValue env) { + env.checkglobals(); + final LuaTable wifi = new LuaTable(); + wifi.set("setmode", new SetModeFunction()); + wifi.set("ap", new ApFunction()); + wifi.set("SOFTAP", "SOFTAP"); + env.set("wifi", wifi); + env.get("package").get("loaded").set("wifi", wifi); + return wifi; + } + + private class SetModeFunction extends OneArgFunction { + + @Override + public LuaValue call(LuaValue apmode) { + final String APmodeString = apmode.checkjstring(); + System.out.println("[Wifi] set mode " + APmodeString); + return LuaValue.valueOf(true); + } + + } + + private class ApFunction extends TwoArgFunction { + + @Override + public LuaValue call(LuaValue modname, LuaValue env) { + final LuaTable ap = new LuaTable(); + ap.set("config", new ConfigFunction()); + env.set("ap", ap); + env.get("package").get("loaded").set("wifi.ap", ap); + return ap; + } + + } + + private class ConfigFunction extends OneArgFunction { + + @Override + public LuaValue call(LuaValue arg) { + System.out.println("[Wifi] config"); + return LuaValue.valueOf(true); + } + + } +} diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java new file mode 100644 index 0000000..97d015c --- /dev/null +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java @@ -0,0 +1,61 @@ +package de.c3ma.ollo.mockup; + +import org.luaj.vm2.LuaTable; +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.lib.OneArgFunction; +import org.luaj.vm2.lib.TwoArgFunction; +import org.luaj.vm2.lib.ZeroArgFunction; + +/** + * created at 28.12.2017 - 23:34:04
+ * creator: ollo
+ * project: WS2812Emulation
+ * $Id: $
+ * @author ollo
+ */ +public class ESP8266Ws2812 extends TwoArgFunction { + + @Override + public LuaValue call(LuaValue modname, LuaValue env) { + env.checkglobals(); + final LuaTable ws2812 = new LuaTable(); + ws2812.set("init", new init()); + ws2812.set("write", new write()); + env.set("ws2812", ws2812); + env.get("package").get("loaded").set("ws2812", ws2812); + return ws2812; + } + + private class init extends ZeroArgFunction { + + @Override + public LuaValue call() { + System.out.println("[WS2812] init"); + return LuaValue.valueOf(true); + } + + } + + private class write extends OneArgFunction { + + @Override + public LuaValue call(LuaValue arg) { + if (arg.isstring()) { + int length = arg.checkstring().rawlen(); + System.out.println("[WS2812] write length:" + length); + if ((length % 3) == 0) { + byte[] array = arg.toString().getBytes(); + for (int i = 0; i < length; i+=3) { + /*System.out.println( + array[i+0] + " " + + array[i+1] + " " + + array[i+2] + );*/ + } + } + } + return LuaValue.valueOf(true); + } + + } +} From 989d8b263a6db4e0e767a63613ac3db346c96d7b Mon Sep 17 00:00:00 2001 From: ollo Date: Tue, 2 Jan 2018 12:47:31 +0100 Subject: [PATCH 004/151] Wifi configured --- .../src/de/c3ma/ollo/WS2812Simulation.java | 4 ++ .../src/de/c3ma/ollo/mockup/ESP8266Wifi.java | 40 ++++++++++++------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/simulation/src/de/c3ma/ollo/WS2812Simulation.java b/simulation/src/de/c3ma/ollo/WS2812Simulation.java index 57c28f6..fc585de 100644 --- a/simulation/src/de/c3ma/ollo/WS2812Simulation.java +++ b/simulation/src/de/c3ma/ollo/WS2812Simulation.java @@ -10,7 +10,9 @@ import org.luaj.vm2.lib.jse.JsePlatform; import de.c3ma.ollo.mockup.DoFileFunction; import de.c3ma.ollo.mockup.ESP8266File; +import de.c3ma.ollo.mockup.ESP8266Net; import de.c3ma.ollo.mockup.ESP8266Node; +import de.c3ma.ollo.mockup.ESP8266Time; import de.c3ma.ollo.mockup.ESP8266Tmr; import de.c3ma.ollo.mockup.ESP8266Uart; import de.c3ma.ollo.mockup.ESP8266Wifi; @@ -40,6 +42,8 @@ public class WS2812Simulation implements LuaSimulation { globals.load(espFile); globals.load(espNode); globals.load(new ESP8266Wifi()); + globals.load(new ESP8266Net()); + globals.load(new ESP8266Time()); globals.set("dofile", doFile); try { diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Wifi.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Wifi.java index 48bcb3b..3f0d41d 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ESP8266Wifi.java +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Wifi.java @@ -26,8 +26,15 @@ public class ESP8266Wifi extends TwoArgFunction { env.checkglobals(); final LuaTable wifi = new LuaTable(); wifi.set("setmode", new SetModeFunction()); - wifi.set("ap", new ApFunction()); + final LuaTable ap = new LuaTable(); + ap.set("config", new ConfigFunction()); + wifi.set("ap", ap); + final LuaTable sta = new LuaTable(); + sta.set("status", new StatusFunction()); + sta.set("getip", new GetIpFunction()); + wifi.set("sta", sta); wifi.set("SOFTAP", "SOFTAP"); + wifi.set("STATION", "STATION"); env.set("wifi", wifi); env.get("package").get("loaded").set("wifi", wifi); return wifi; @@ -44,19 +51,6 @@ public class ESP8266Wifi extends TwoArgFunction { } - private class ApFunction extends TwoArgFunction { - - @Override - public LuaValue call(LuaValue modname, LuaValue env) { - final LuaTable ap = new LuaTable(); - ap.set("config", new ConfigFunction()); - env.set("ap", ap); - env.get("package").get("loaded").set("wifi.ap", ap); - return ap; - } - - } - private class ConfigFunction extends OneArgFunction { @Override @@ -66,4 +60,22 @@ public class ESP8266Wifi extends TwoArgFunction { } } + + private class StatusFunction extends ZeroArgFunction { + + @Override + public LuaValue call() { + return LuaValue.valueOf(5); + } + + } + + private class GetIpFunction extends ZeroArgFunction { + + @Override + public LuaValue call() { + return LuaValue.valueOf("127.0.0.1"); + } + + } } From 68c38fed52178d4717df3dc3111c9aec78cb648c Mon Sep 17 00:00:00 2001 From: ollo Date: Tue, 2 Jan 2018 12:54:25 +0100 Subject: [PATCH 005/151] Time and Net is also necessary --- .../src/de/c3ma/ollo/mockup/ESP8266Net.java | 83 +++++++++++++++++++ .../src/de/c3ma/ollo/mockup/ESP8266Time.java | 78 +++++++++++++++++ 2 files changed, 161 insertions(+) create mode 100644 simulation/src/de/c3ma/ollo/mockup/ESP8266Net.java create mode 100644 simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Net.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Net.java new file mode 100644 index 0000000..6bf43c5 --- /dev/null +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Net.java @@ -0,0 +1,83 @@ +package de.c3ma.ollo.mockup; + +import java.io.File; +import java.io.IOException; +import java.io.InterruptedIOException; +import java.net.ServerSocket; +import java.net.Socket; +import java.nio.file.Files; + +import org.luaj.vm2.LuaFunction; +import org.luaj.vm2.LuaTable; +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.lib.OneArgFunction; +import org.luaj.vm2.lib.TwoArgFunction; +import org.luaj.vm2.lib.ZeroArgFunction; + +import de.c3ma.ollo.LuaSimulation; + +/** + * created at 29.12.2017 - 01:29:40
+ * creator: ollo
+ * project: WS2812Emulation
+ * $Id: $
+ * @author ollo
+ */ +public class ESP8266Net extends TwoArgFunction { + + public static final int PORTNUMBER_OFFSET = 4000; + + @Override + public LuaValue call(LuaValue modname, LuaValue env) { + env.checkglobals(); + final LuaTable net = new LuaTable(); + net.set("createServer", new CreateServerFunction()); + + //FIXME net.set("send", new SendFunction()); + net.set("TCP", "TCP"); + env.set("net", net); + env.get("package").get("loaded").set("net", net); + return net; + } + + private class CreateServerFunction extends OneArgFunction { + + @Override + public LuaValue call(LuaValue arg) { + final LuaTable srv = new LuaTable(); + srv.set("listen", new ListenFunction()); + return srv; + } + + } + + private class ListenFunction extends TwoArgFunction { + + @Override + public LuaValue call(LuaValue port, LuaValue function) { + int portnumber = port.checkint(); + LuaFunction onListenFunction = function.checkfunction(); + + System.out.println("[Net] listening " + portnumber + "(simulating at " + (PORTNUMBER_OFFSET+ portnumber) + ")"); + + try + { + ServerSocket serverSocket = new ServerSocket(PORTNUMBER_OFFSET+portnumber); + serverSocket.setSoTimeout( 60000 ); // Timeout after one minute + + Socket client = serverSocket.accept(); + + } + catch ( InterruptedIOException iioe ) + { + System.err.println( "Timeout nach einer Minute!" ); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + System.out.println("[Net] server running"); + return LuaValue.valueOf(true); + } + + } +} diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java new file mode 100644 index 0000000..e8f5446 --- /dev/null +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java @@ -0,0 +1,78 @@ +package de.c3ma.ollo.mockup; + +import org.luaj.vm2.Globals; +import org.luaj.vm2.LuaFunction; +import org.luaj.vm2.LuaTable; +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.Varargs; +import org.luaj.vm2.lib.OneArgFunction; +import org.luaj.vm2.lib.ThreeArgFunction; +import org.luaj.vm2.lib.TwoArgFunction; +import org.luaj.vm2.lib.VarArgFunction; +import org.luaj.vm2.lib.ZeroArgFunction; + +import de.c3ma.ollo.LuaThreadTmr; + +/** + * created at 29.12.2017 - 00:07:22
+ * creator: ollo
+ * project: Time Emulation
+ * + * Simulating the following modules: + * Sntp + * rtctime + * + * $Id: $
+ * @author ollo
+ */ +public class ESP8266Time extends TwoArgFunction { + + @Override + public LuaValue call(LuaValue modname, LuaValue env) { + env.checkglobals(); + final LuaTable sntp = new LuaTable(); + sntp.set("sync", new SyncFunction()); + env.set("sntp", sntp); + final LuaTable rtctime = new LuaTable(); + rtctime.set("get", new GetFunction()); + env.set("rtctime", rtctime); + env.get("package").get("loaded").set("sntp", sntp); + env.get("package").get("loaded").set("rtctime", rtctime); + + return sntp; + } + + private class SyncFunction extends ThreeArgFunction { + + @Override + public LuaValue call(LuaValue server, LuaValue callbackSuccess, LuaValue callbackFailure) { + String serverName = server.checkjstring(); + LuaFunction cb = callbackSuccess.checkfunction(); + System.out.println("[SNTP] sync " + serverName); + + /*FIXME also make it possible to simulate the time */ + int seconds = (int) (System.currentTimeMillis() / 1000); + int useconds = (int) (System.currentTimeMillis() % 1000); + cb.call(LuaValue.valueOf(seconds), LuaValue.valueOf(useconds), LuaValue.valueOf(serverName)); + + return LuaValue.valueOf(true); + } + + } + + private class GetFunction extends ZeroArgFunction { + + @Override + public LuaValue call() { + LuaValue[] v = new LuaValue[2]; + /*FIXME also make it possible to simulate the time */ + int seconds = (int) (System.currentTimeMillis() / 1000); + int useconds = (int) (System.currentTimeMillis() % 1000); + v[0] = LuaValue.valueOf(seconds); + v[1] = LuaValue.valueOf(useconds); + return LuaValue.varargsOf(v).arg1(); + } + + } + +} From 36fea30afcdd1fbe6bdf3bf979bf26452126d493 Mon Sep 17 00:00:00 2001 From: ollo Date: Tue, 2 Jan 2018 14:29:49 +0100 Subject: [PATCH 006/151] UI is drawn --- .../src/de/c3ma/ollo/WS2812Simulation.java | 20 +- .../de/c3ma/ollo/mockup/ESP8266Ws2812.java | 29 ++- .../de/c3ma/ollo/mockup/ui/WS2812Layout.java | 195 ++++++++++++++++++ simulation/ws28128ClockLayout.txt | 17 ++ 4 files changed, 252 insertions(+), 9 deletions(-) create mode 100644 simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java create mode 100644 simulation/ws28128ClockLayout.txt diff --git a/simulation/src/de/c3ma/ollo/WS2812Simulation.java b/simulation/src/de/c3ma/ollo/WS2812Simulation.java index fc585de..9701eb3 100644 --- a/simulation/src/de/c3ma/ollo/WS2812Simulation.java +++ b/simulation/src/de/c3ma/ollo/WS2812Simulation.java @@ -4,6 +4,8 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; +import javax.management.RuntimeErrorException; + import org.luaj.vm2.Globals; import org.luaj.vm2.LuaValue; import org.luaj.vm2.lib.jse.JsePlatform; @@ -33,11 +35,12 @@ public class WS2812Simulation implements LuaSimulation { private ESP8266File espFile = new ESP8266File(); private ESP8266Node espNode = new ESP8266Node(this); private DoFileFunction doFile = new DoFileFunction(globals); + private ESP8266Ws2812 ws2812 = new ESP8266Ws2812(); private String scriptName; public WS2812Simulation(File sourceFolder) { globals.load(new ESP8266Uart()); - globals.load(new ESP8266Ws2812()); + globals.load(ws2812); globals.load(espTmr); globals.load(espFile); globals.load(espNode); @@ -76,11 +79,16 @@ public class WS2812Simulation implements LuaSimulation { return; } - if (args.length == 1) { + if (args.length >= 1) { File f = new File(args[0]); if (f.exists()) { WS2812Simulation simu = new WS2812Simulation(f.getParentFile()); System.out.println("File : " + f.getAbsolutePath()); + + if (args.length >= 2) { + simu.setWS2812Layout(new File(args[1])); + } + simu.callScript(f.getName()); } } else { @@ -89,6 +97,14 @@ public class WS2812Simulation implements LuaSimulation { } + private void setWS2812Layout(File file) { + if (file.exists()) { + ws2812.setLayout(file); + } else { + throw new RuntimeException("WS2812 Layout: " + file.getAbsolutePath() + " does not exists"); + } + } + private static void printUsage() { System.out.println("Usage:"); System.out.println("one argument required: file to execute."); diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java index 97d015c..f9df097 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java @@ -1,11 +1,15 @@ package de.c3ma.ollo.mockup; +import java.io.File; + import org.luaj.vm2.LuaTable; import org.luaj.vm2.LuaValue; import org.luaj.vm2.lib.OneArgFunction; import org.luaj.vm2.lib.TwoArgFunction; import org.luaj.vm2.lib.ZeroArgFunction; +import de.c3ma.ollo.mockup.ui.WS2812Layout; + /** * created at 28.12.2017 - 23:34:04
* creator: ollo
@@ -15,6 +19,8 @@ import org.luaj.vm2.lib.ZeroArgFunction; */ public class ESP8266Ws2812 extends TwoArgFunction { + private static WS2812Layout layout = null; + @Override public LuaValue call(LuaValue modname, LuaValue env) { env.checkglobals(); @@ -42,20 +48,29 @@ public class ESP8266Ws2812 extends TwoArgFunction { public LuaValue call(LuaValue arg) { if (arg.isstring()) { int length = arg.checkstring().rawlen(); - System.out.println("[WS2812] write length:" + length); if ((length % 3) == 0) { byte[] array = arg.toString().getBytes(); for (int i = 0; i < length; i+=3) { - /*System.out.println( - array[i+0] + " " - + array[i+1] + " " - + array[i+2] - );*/ + if (ESP8266Ws2812.layout != null) { + ESP8266Ws2812.layout.updateLED(i/3, array[i+0], array[i+1], array[i+2]); + } } } + + if (ESP8266Ws2812.layout == null) { + System.out.println("[WS2812] write length:" + length); + } else { + /*ESP8266Ws2812.layout.update(ESP8266Ws2812.layout.getGraphics());*/ + ESP8266Ws2812.layout.repaint(); + } } return LuaValue.valueOf(true); } - + } + + public void setLayout(File file) { + if (ESP8266Ws2812.layout == null) { + ESP8266Ws2812.layout = WS2812Layout.parse(file); + } } } diff --git a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java new file mode 100644 index 0000000..2d9f0bf --- /dev/null +++ b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java @@ -0,0 +1,195 @@ +package de.c3ma.ollo.mockup.ui; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Font; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; + +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; + +/** + * created at 02.01.2018 - 12:57:02
+ * creator: ollo
+ * project: WS2812Emulation
+ * $Id: $
+ * @author ollo
+ */ +public class WS2812Layout extends JFrame { + + /** + * + */ + private static final long serialVersionUID = -6815557232118826140L; + + private ArrayList mLines = new ArrayList(); + private int mColumn = 0; + private int mRow = 0; + private Element[][] mElements; + + public static WS2812Layout parse(File file) { + WS2812Layout layout = null; + try { + BufferedReader br = new BufferedReader(new FileReader(file)); + try { + String line = br.readLine(); + if (line != null) { + layout = new WS2812Layout(); + } + + while (line != null) { + if (!line.startsWith("#")) { + layout.mLines.add(line); + layout.mRow++; + layout.mColumn = Math.max(layout.mColumn, line.length()); + } + /* get the next line */ + line = br.readLine(); + } + + /* parse each line */ + layout.parse(); + layout.createAndDisplayGUI(); + } finally { + if (br != null) { + br.close(); + } + } + } catch (IOException ioe) { + + } + return layout; + } + + private void createAndDisplayGUI() { + setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + + JPanel contentPane = new JPanel(); + contentPane.setLayout(new BorderLayout()); + contentPane.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY, 2)); + + JPanel ledPanel = new JPanel(); + ledPanel.setLayout(new GridLayout(this.mRow, this.mColumn, 10, 10)); + for (int i = 0; i < this.mRow; i++) + { + for (int j = 0; j < this.mColumn; j++) + { + if (this.mElements[i][j] != null) { + ledPanel.add(this.mElements[i][j]); + } + } + } + contentPane.add(ledPanel, BorderLayout.CENTER); + JButton button = new JButton("Do something"); + button.setActionCommand("Do something"); + button.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent ae) + { + JButton but = (JButton) ae.getSource(); + //FIXME some clever logic + } + }); + contentPane.add(button, BorderLayout.SOUTH); + + + setContentPane(contentPane); + pack(); + setLocationByPlatform(true); + setVisible(true); + } + + private void parse() { + this.mElements = new Element[this.mRow][this.mColumn]; + int row=0; + for (String line : this.mLines) { + for (int i = 0; i < line.length(); i++) { + char c = line.charAt(i); + if ((('A' <= c) && (c <= 'Z')) || + (('0' <= c) && (c <= '9')) || + (c == 'Ä') || (c == 'Ö') || (c == 'Ü')) { + this.mElements[row][i] = new Element(c); + } else { + this.mElements[row][i] = new Element(); + } + this.mElements[row][i].setColor(0, 0, 0); + } + row++; + } + } + + public class Element extends JLabel { + + /** + * + */ + private static final long serialVersionUID = -3933903441113933637L; + + private boolean noText=false; + + /** + * Draw a simple rect + */ + public Element() { + super(); + this.noText = true; + this.setBackground(Color.BLACK); + } + + /** + * Draw a character + * @param character to show + */ + public Element(char character) { + super(""+character); + setFont(new Font("Dialog", Font.BOLD, 24)); + setHorizontalAlignment(CENTER); + this.setBackground(Color.BLACK); + } + + public void setColor(int red, int green, int blue) { + this.setForeground(new Color(red, green, blue)); + this.update(this.getGraphics()); + //this.repaint(); + System.out.println( this.toString()); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + if (noText) { + sb.append(" "); + } else { + sb.append("" + this.getText()); + } + sb.append(Integer.toHexString(this.getForeground().getRed()) + + " " + Integer.toHexString(this.getForeground().getGreen()) + + " " + Integer.toHexString(this.getForeground().getBlue())); + + return sb.toString(); + } + } + + public void updateLED(int index, byte red, byte green, byte blue) { + if (this.mElements != null) { + int i = (index / this.mColumn); + int j = (index % this.mColumn); + if ((i < this.mElements.length) && + (j < this.mElements[i].length) && + (this.mElements[i][j] != null)) { + this.mElements[i][j].setColor(red, green, blue); + } + } + } + +} diff --git a/simulation/ws28128ClockLayout.txt b/simulation/ws28128ClockLayout.txt new file mode 100644 index 0000000..2fda3e4 --- /dev/null +++ b/simulation/ws28128ClockLayout.txt @@ -0,0 +1,17 @@ +# This file describes the layout of the WS2812 LEDs. +# _ will only draw a rect +# A-Z or 1-9 will draw the text or number +# each element will be updated with its color with the known commands of the nodemcu firmware +# +# Here the configuration for the wordclock: +ESKISTLFÜNF +ZEHNZWANZIG +DREIVIERTEL +TGNACHVORJM +HALBXZWÖLFP +ZWEINSIEBEN +KDREIRHFÜNF +ELFNEUNVIER +WACHTZEHNRS +BSECHSFMUHR +____ From 225f4af842706273ad4bca38ce23ea03ec3c875c Mon Sep 17 00:00:00 2001 From: ollo Date: Tue, 2 Jan 2018 14:47:49 +0100 Subject: [PATCH 007/151] Special configuration file for the simulation can be set --- simulation/Readme.md | 5 +++++ simulation/config.lua | 13 ++++++++++++ .../src/de/c3ma/ollo/WS2812Simulation.java | 20 +++++++++++++++++-- .../de/c3ma/ollo/mockup/DoFileFunction.java | 8 ++++++++ .../de/c3ma/ollo/mockup/ui/WS2812Layout.java | 2 +- 5 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 simulation/Readme.md create mode 100644 simulation/config.lua diff --git a/simulation/Readme.md b/simulation/Readme.md new file mode 100644 index 0000000..e897c86 --- /dev/null +++ b/simulation/Readme.md @@ -0,0 +1,5 @@ +# Simulation + +The simualation should be started with the following arguments at this position: + `../init.lua ws28128ClockLayout.txt config.lua` + diff --git a/simulation/config.lua b/simulation/config.lua new file mode 100644 index 0000000..b15e0a7 --- /dev/null +++ b/simulation/config.lua @@ -0,0 +1,13 @@ +green=0 +red=60 +blue=0 + +color=string.char(green, red, blue) +color1=string.char(green, red, blue) +color2=string.char(green, red, blue) +color3=string.char(green, red, blue) +color4=string.char(green, red, blue) + +colorBg=string.char(0,0,0) -- black is the default background color +sntpserverhostname="ptbtime1.ptb.de" + diff --git a/simulation/src/de/c3ma/ollo/WS2812Simulation.java b/simulation/src/de/c3ma/ollo/WS2812Simulation.java index 9701eb3..c01d68c 100644 --- a/simulation/src/de/c3ma/ollo/WS2812Simulation.java +++ b/simulation/src/de/c3ma/ollo/WS2812Simulation.java @@ -88,8 +88,24 @@ public class WS2812Simulation implements LuaSimulation { if (args.length >= 2) { simu.setWS2812Layout(new File(args[1])); } - - simu.callScript(f.getName()); + try { + if (args.length >= 3) { + File additionalFile = new File(args[2]); + if (additionalFile.exists() && (simu.doFile != null)) { + + Files.copy(additionalFile.toPath(), + new File(simu.doFile.getWorkingDirectory() + File.separator + additionalFile.getName()).toPath()); + System.out.println("Integrate " + additionalFile.getName() + " into simulation"); + } else { + System.err.println("Script " + args[2] + " cannot be found"); + System.exit(1); + } + } + + simu.callScript(f.getName()); + } catch (IOException e) { + System.err.println("[Nodemcu] " + e.getMessage()); + } } } else { printUsage(); diff --git a/simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java b/simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java index 56e5a63..c9e6250 100644 --- a/simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java +++ b/simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java @@ -43,4 +43,12 @@ public class DoFileFunction extends OneArgFunction { this.workingDir = workingDir; } + public String getWorkingDirectory() { + if (workingDir != null) { + return workingDir.getAbsolutePath(); + } else { + return null; + } + } + } diff --git a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java index 2d9f0bf..8737040 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java +++ b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java @@ -172,7 +172,7 @@ public class WS2812Layout extends JFrame { } else { sb.append("" + this.getText()); } - sb.append(Integer.toHexString(this.getForeground().getRed()) + + sb.append("|" + Integer.toHexString(this.getForeground().getRed()) + " " + Integer.toHexString(this.getForeground().getGreen()) + " " + Integer.toHexString(this.getForeground().getBlue())); From a83600281d9add51968ed8e948e8ff8da94d6c9c Mon Sep 17 00:00:00 2001 From: ollo Date: Tue, 2 Jan 2018 15:06:18 +0100 Subject: [PATCH 008/151] Described the open points --- simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java index 8737040..17e7636 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java +++ b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java @@ -154,13 +154,14 @@ public class WS2812Layout extends JFrame { super(""+character); setFont(new Font("Dialog", Font.BOLD, 24)); setHorizontalAlignment(CENTER); + //FIXME: Background color is not updated: this.setBackground(Color.BLACK); } public void setColor(int red, int green, int blue) { this.setForeground(new Color(red, green, blue)); - this.update(this.getGraphics()); - //this.repaint(); + //FIXME changing the color is not working + this.repaint(); System.out.println( this.toString()); } From 78a9027ad7969ad30d085fbade4b9ff57c43ee77 Mon Sep 17 00:00:00 2001 From: C3MA Date: Fri, 12 Jan 2018 20:38:35 +0100 Subject: [PATCH 009/151] Kai did magic --- simulation/.classpath | 1 - .../src/de/c3ma/ollo/LuaSimulation.java | 2 +- .../src/de/c3ma/ollo/WS2812Simulation.java | 240 ++++++------- .../src/de/c3ma/ollo/mockup/ESP8266Node.java | 2 +- .../de/c3ma/ollo/mockup/ESP8266Ws2812.java | 107 +++--- .../de/c3ma/ollo/mockup/ui/WS2812Layout.java | 318 +++++++++--------- 6 files changed, 341 insertions(+), 329 deletions(-) diff --git a/simulation/.classpath b/simulation/.classpath index 3717ff0..33968ad 100644 --- a/simulation/.classpath +++ b/simulation/.classpath @@ -4,6 +4,5 @@ - diff --git a/simulation/src/de/c3ma/ollo/LuaSimulation.java b/simulation/src/de/c3ma/ollo/LuaSimulation.java index 7ea3476..35d7fb0 100644 --- a/simulation/src/de/c3ma/ollo/LuaSimulation.java +++ b/simulation/src/de/c3ma/ollo/LuaSimulation.java @@ -9,5 +9,5 @@ package de.c3ma.ollo; */ public interface LuaSimulation { - public void reboottriggered(); + public void rebootTriggered(); } diff --git a/simulation/src/de/c3ma/ollo/WS2812Simulation.java b/simulation/src/de/c3ma/ollo/WS2812Simulation.java index c01d68c..02a8557 100644 --- a/simulation/src/de/c3ma/ollo/WS2812Simulation.java +++ b/simulation/src/de/c3ma/ollo/WS2812Simulation.java @@ -5,6 +5,7 @@ import java.io.IOException; import java.nio.file.Files; import javax.management.RuntimeErrorException; +import javax.swing.SwingUtilities; import org.luaj.vm2.Globals; import org.luaj.vm2.LuaValue; @@ -30,127 +31,130 @@ import de.c3ma.ollo.mockup.ESP8266Ws2812; */ public class WS2812Simulation implements LuaSimulation { - private Globals globals = JsePlatform.standardGlobals(); - private ESP8266Tmr espTmr = new ESP8266Tmr(); - private ESP8266File espFile = new ESP8266File(); - private ESP8266Node espNode = new ESP8266Node(this); - private DoFileFunction doFile = new DoFileFunction(globals); - private ESP8266Ws2812 ws2812 = new ESP8266Ws2812(); - private String scriptName; - - public WS2812Simulation(File sourceFolder) { - globals.load(new ESP8266Uart()); - globals.load(ws2812); - globals.load(espTmr); - globals.load(espFile); - globals.load(espNode); - globals.load(new ESP8266Wifi()); - globals.load(new ESP8266Net()); - globals.load(new ESP8266Time()); - globals.set("dofile", doFile); - - try { - File tempFile = File.createTempFile("NodemcuSimuFile", ""); - File tempDir = new File(tempFile.getParent() + File.separator + "Nodemcu" + System.currentTimeMillis()); - tempDir.mkdir(); - - - System.out.println("[Nodemcu] Directory is " + tempDir.getAbsolutePath()); - - // Copy all files into the temporary folder - for (File f : sourceFolder.listFiles()) { - Files.copy(f.toPath(), new File(tempDir.getAbsolutePath() + File.separator + f.getName()).toPath()); - } + private Globals globals = JsePlatform.standardGlobals(); + private ESP8266Tmr espTmr = new ESP8266Tmr(); + private ESP8266File espFile = new ESP8266File(); + private ESP8266Node espNode = new ESP8266Node(this); + private DoFileFunction doFile = new DoFileFunction(globals); + private ESP8266Ws2812 ws2812 = new ESP8266Ws2812(); + private String scriptName; - espFile.setWorkingDirectory(tempDir); - espNode.setWorkingDirectory(tempDir); - doFile.setWorkingDirectory(tempDir); - } catch (IOException e) { - System.err.println("[Nodemcu] " + e.getMessage()); - espFile = null; - espNode = null; - } - } - - public static void main(String[] args) { - - if (args.length == 0) { - printUsage(); - return; - } - - if (args.length >= 1) { - File f = new File(args[0]); - if (f.exists()) { - WS2812Simulation simu = new WS2812Simulation(f.getParentFile()); - System.out.println("File : " + f.getAbsolutePath()); - - if (args.length >= 2) { - simu.setWS2812Layout(new File(args[1])); - } - try { - if (args.length >= 3) { - File additionalFile = new File(args[2]); - if (additionalFile.exists() && (simu.doFile != null)) { - - Files.copy(additionalFile.toPath(), - new File(simu.doFile.getWorkingDirectory() + File.separator + additionalFile.getName()).toPath()); - System.out.println("Integrate " + additionalFile.getName() + " into simulation"); - } else { - System.err.println("Script " + args[2] + " cannot be found"); - System.exit(1); - } - } - - simu.callScript(f.getName()); - } catch (IOException e) { - System.err.println("[Nodemcu] " + e.getMessage()); - } - } - } else { - printUsage(); - } - - } + public WS2812Simulation(File sourceFolder) { + globals.load(new ESP8266Uart()); + globals.load(ws2812); + globals.load(espTmr); + globals.load(espFile); + globals.load(espNode); + globals.load(new ESP8266Wifi()); + globals.load(new ESP8266Net()); + globals.load(new ESP8266Time()); + globals.set("dofile", doFile); - private void setWS2812Layout(File file) { - if (file.exists()) { - ws2812.setLayout(file); - } else { - throw new RuntimeException("WS2812 Layout: " + file.getAbsolutePath() + " does not exists"); - } - } + try { + File tempFile = File.createTempFile("NodemcuSimuFile", ""); + File tempDir = new File(tempFile.getParent() + File.separator + "Nodemcu" + System.currentTimeMillis()); + tempDir.mkdir(); - private static void printUsage() { - System.out.println("Usage:"); - System.out.println("one argument required: file to execute."); - System.out.println(".e.g: init.lua"); - } + System.out.println("[Nodemcu] Directory is " + tempDir.getAbsolutePath()); - @Override - public void reboottriggered() { - System.out.println("=================== Reboot in Simulation -> call it again ================="); - this.espTmr.stopAllTimer(); - try { - Thread.sleep(200); - if (this.scriptName != null) { - System.out.println("Reexecuting..."); - callScript(this.scriptName); - } - } catch (InterruptedException e) { - - } - - } + // Copy all files into the temporary folder + for (File f : sourceFolder.listFiles()) { + Files.copy(f.toPath(), new File(tempDir.getAbsolutePath() + File.separator + f.getName()).toPath()); + } - private void callScript(String filename) { - this.scriptName=filename; - - if ((espFile != null) && (espFile.getFileInWorkingDir(filename) != null)) { - LuaValue chunk = globals.loadfile(espFile.getFileInWorkingDir(filename).getAbsolutePath()); - chunk.call(); - } else { - throw new RuntimeException("Copy into temporary folder failed; script not available"); - } - } + espFile.setWorkingDirectory(tempDir); + espNode.setWorkingDirectory(tempDir); + doFile.setWorkingDirectory(tempDir); + } catch (IOException e) { + System.err.println("[Nodemcu] " + e.getMessage()); + espFile = null; + espNode = null; + } + } + + public static void main(String[] args) { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + if (args.length == 0) { + printUsage(); + return; + } + + if (args.length >= 1) { + File f = new File(args[0]); + if (f.exists()) { + WS2812Simulation simu = new WS2812Simulation(f.getParentFile()); + System.out.println("File : " + f.getAbsolutePath()); + + if (args.length >= 2) { + simu.setWS2812Layout(new File(args[1])); + } + try { + if (args.length >= 3) { + File additionalFile = new File(args[2]); + if (additionalFile.exists() && (simu.doFile != null)) { + + Files.copy(additionalFile.toPath(), new File(simu.doFile.getWorkingDirectory() + + File.separator + additionalFile.getName()).toPath()); + System.out.println("Integrate " + additionalFile.getName() + " into simulation"); + } else { + System.err.println("Script " + args[2] + " cannot be found"); + System.exit(1); + } + } + + simu.callScript(f.getName()); + } catch (IOException e) { + System.err.println("[Nodemcu] " + e.getMessage()); + } + } + } else { + printUsage(); + } + + } + }); + } + + private void setWS2812Layout(File file) { + if (file.exists()) { + ws2812.setLayout(file); + } else { + throw new RuntimeException("WS2812 Layout: " + file.getAbsolutePath() + " does not exists"); + } + } + + private static void printUsage() { + System.out.println("Usage:"); + System.out.println("one argument required: file to execute."); + System.out.println(".e.g: init.lua"); + } + + @Override + public void rebootTriggered() { + System.out.println("=================== Reboot in Simulation -> call it again ================="); + this.espTmr.stopAllTimer(); + try { + Thread.sleep(200); + if (this.scriptName != null) { + System.out.println("Reexecuting..."); + callScript(this.scriptName); + } + } catch (InterruptedException e) { + + } + + } + + private void callScript(String filename) { + this.scriptName = filename; + + if ((espFile != null) && (espFile.getFileInWorkingDir(filename) != null)) { + LuaValue chunk = globals.loadfile(espFile.getFileInWorkingDir(filename).getAbsolutePath()); + chunk.call(); + } else { + throw new RuntimeException("Copy into temporary folder failed; script not available"); + } + } } diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Node.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Node.java index ab4fb8a..1ff7824 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ESP8266Node.java +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Node.java @@ -67,7 +67,7 @@ public class ESP8266Node extends TwoArgFunction { @Override public LuaValue call() { System.out.println("[Node] Restart"); - nodemcuSimu.reboottriggered(); + nodemcuSimu.rebootTriggered(); return LuaValue.valueOf(false); } diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java index f9df097..eda22c7 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java @@ -2,6 +2,9 @@ package de.c3ma.ollo.mockup; import java.io.File; +import javax.swing.SwingUtilities; + +import org.luaj.vm2.LuaString; import org.luaj.vm2.LuaTable; import org.luaj.vm2.LuaValue; import org.luaj.vm2.lib.OneArgFunction; @@ -15,62 +18,70 @@ import de.c3ma.ollo.mockup.ui.WS2812Layout; * creator: ollo
* project: WS2812Emulation
* $Id: $
+ * * @author ollo
*/ public class ESP8266Ws2812 extends TwoArgFunction { - private static WS2812Layout layout = null; + private static WS2812Layout layout = null; - @Override - public LuaValue call(LuaValue modname, LuaValue env) { - env.checkglobals(); - final LuaTable ws2812 = new LuaTable(); - ws2812.set("init", new init()); - ws2812.set("write", new write()); - env.set("ws2812", ws2812); - env.get("package").get("loaded").set("ws2812", ws2812); - return ws2812; - } + @Override + public LuaValue call(LuaValue modname, LuaValue env) { + env.checkglobals(); + final LuaTable ws2812 = new LuaTable(); + ws2812.set("init", new init()); + ws2812.set("write", new write()); + env.set("ws2812", ws2812); + env.get("package").get("loaded").set("ws2812", ws2812); + return ws2812; + } - private class init extends ZeroArgFunction { + private class init extends ZeroArgFunction { - @Override - public LuaValue call() { - System.out.println("[WS2812] init"); - return LuaValue.valueOf(true); - } - - } - - private class write extends OneArgFunction { + @Override + public LuaValue call() { + System.out.println("[WS2812] init"); + return LuaValue.valueOf(true); + } - @Override - public LuaValue call(LuaValue arg) { - if (arg.isstring()) { - int length = arg.checkstring().rawlen(); - if ((length % 3) == 0) { - byte[] array = arg.toString().getBytes(); - for (int i = 0; i < length; i+=3) { - if (ESP8266Ws2812.layout != null) { - ESP8266Ws2812.layout.updateLED(i/3, array[i+0], array[i+1], array[i+2]); - } - } - } + } - if (ESP8266Ws2812.layout == null) { - System.out.println("[WS2812] write length:" + length); - } else { - /*ESP8266Ws2812.layout.update(ESP8266Ws2812.layout.getGraphics());*/ - ESP8266Ws2812.layout.repaint(); - } - } - return LuaValue.valueOf(true); - } - } + private class write extends OneArgFunction { - public void setLayout(File file) { - if (ESP8266Ws2812.layout == null) { - ESP8266Ws2812.layout = WS2812Layout.parse(file); - } - } + @Override + public LuaValue call(LuaValue arg) { + if (arg.isstring()) { + LuaString jstring = arg.checkstring(); + int length = jstring.rawlen(); + if ((length % 3) == 0) { + byte[] array = jstring.m_bytes; + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + for (int i = 0; i < length; i += 3) { + if (ESP8266Ws2812.layout != null) { + int r = array[i + 0]+(Byte.MIN_VALUE*-1); + int g = array[i + 1]+(Byte.MIN_VALUE*-1); + int b = array[i + 2]+(Byte.MIN_VALUE*-1); + ESP8266Ws2812.layout.updateLED(i / 3, r, g, b); + } + } + } + }); + } + + if (ESP8266Ws2812.layout == null) { + System.out.println("[WS2812] write length:" + length); + } else { + } + } + return LuaValue.valueOf(true); + } + } + + public void setLayout(File file) { + if (ESP8266Ws2812.layout == null) { + ESP8266Ws2812.layout = WS2812Layout.parse(file); + } + } } diff --git a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java index 17e7636..cf2a977 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java +++ b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java @@ -10,6 +10,7 @@ import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import javax.swing.BorderFactory; @@ -17,180 +18,177 @@ import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.SwingUtilities; /** * created at 02.01.2018 - 12:57:02
* creator: ollo
* project: WS2812Emulation
* $Id: $
+ * * @author ollo
*/ public class WS2812Layout extends JFrame { - - /** - * - */ - private static final long serialVersionUID = -6815557232118826140L; - - private ArrayList mLines = new ArrayList(); - private int mColumn = 0; - private int mRow = 0; - private Element[][] mElements; - public static WS2812Layout parse(File file) { - WS2812Layout layout = null; - try { - BufferedReader br = new BufferedReader(new FileReader(file)); - try { - String line = br.readLine(); - if (line != null) { - layout = new WS2812Layout(); - } - - while (line != null) { - if (!line.startsWith("#")) { - layout.mLines.add(line); - layout.mRow++; - layout.mColumn = Math.max(layout.mColumn, line.length()); - } - /* get the next line */ - line = br.readLine(); - } - - /* parse each line */ - layout.parse(); - layout.createAndDisplayGUI(); - } finally { - if (br != null) { - br.close(); - } - } - } catch (IOException ioe) { - - } - return layout; - } + /** + * + */ + private static final long serialVersionUID = -6815557232118826140L; - private void createAndDisplayGUI() { - setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + private ArrayList mLines = new ArrayList(); + private int mColumn = 0; + private int mRow = 0; + private Element[][] mElements; - JPanel contentPane = new JPanel(); - contentPane.setLayout(new BorderLayout()); - contentPane.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY, 2)); + public static WS2812Layout parse(File file) { + WS2812Layout layout = null; + try { + BufferedReader br = new BufferedReader(new FileReader(file)); + try { + String line = br.readLine(); + if (line != null) { + layout = new WS2812Layout(); + } - JPanel ledPanel = new JPanel(); - ledPanel.setLayout(new GridLayout(this.mRow, this.mColumn, 10, 10)); - for (int i = 0; i < this.mRow; i++) - { - for (int j = 0; j < this.mColumn; j++) - { - if (this.mElements[i][j] != null) { - ledPanel.add(this.mElements[i][j]); - } - } - } - contentPane.add(ledPanel, BorderLayout.CENTER); - JButton button = new JButton("Do something"); - button.setActionCommand("Do something"); - button.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent ae) - { - JButton but = (JButton) ae.getSource(); - //FIXME some clever logic - } - }); - contentPane.add(button, BorderLayout.SOUTH); - - - setContentPane(contentPane); - pack(); - setLocationByPlatform(true); - setVisible(true); - } + while (line != null) { + if (!line.startsWith("#")) { + layout.mLines.add(line); + layout.mRow++; + layout.mColumn = Math.max(layout.mColumn, line.length()); + } + /* get the next line */ + line = br.readLine(); + } - private void parse() { - this.mElements = new Element[this.mRow][this.mColumn]; - int row=0; - for (String line : this.mLines) { - for (int i = 0; i < line.length(); i++) { - char c = line.charAt(i); - if ((('A' <= c) && (c <= 'Z')) || - (('0' <= c) && (c <= '9')) || - (c == 'Ä') || (c == 'Ö') || (c == 'Ü')) { - this.mElements[row][i] = new Element(c); - } else { - this.mElements[row][i] = new Element(); - } - this.mElements[row][i].setColor(0, 0, 0); - } - row++; - } - } - - public class Element extends JLabel { - - /** - * - */ - private static final long serialVersionUID = -3933903441113933637L; - - private boolean noText=false; + /* parse each line */ + layout.parse(); + layout.createAndDisplayGUI(); + } finally { + if (br != null) { + br.close(); + } + } + } catch (IOException ioe) { - /** - * Draw a simple rect - */ - public Element() { - super(); - this.noText = true; - this.setBackground(Color.BLACK); - } - - /** - * Draw a character - * @param character to show - */ - public Element(char character) { - super(""+character); - setFont(new Font("Dialog", Font.BOLD, 24)); - setHorizontalAlignment(CENTER); - //FIXME: Background color is not updated: - this.setBackground(Color.BLACK); - } - - public void setColor(int red, int green, int blue) { - this.setForeground(new Color(red, green, blue)); - //FIXME changing the color is not working - this.repaint(); - System.out.println( this.toString()); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - if (noText) { - sb.append(" "); - } else { - sb.append("" + this.getText()); - } - sb.append("|" + Integer.toHexString(this.getForeground().getRed()) + - " " + Integer.toHexString(this.getForeground().getGreen()) + - " " + Integer.toHexString(this.getForeground().getBlue())); - - return sb.toString(); - } - } + } + return layout; + } + + private void createAndDisplayGUI() { + setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + + JPanel contentPane = new JPanel(); + contentPane.setLayout(new BorderLayout()); + contentPane.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY, 2)); + + JPanel ledPanel = new JPanel(); + ledPanel.setLayout(new GridLayout(this.mRow, this.mColumn, 10, 10)); + for (int i = 0; i < this.mRow; i++) { + for (int j = 0; j < this.mColumn; j++) { + if (this.mElements[i][j] != null) { + ledPanel.add(this.mElements[i][j]); + } + } + } + contentPane.add(ledPanel, BorderLayout.CENTER); + JButton button = new JButton("Do something"); + button.setActionCommand("Do something"); + button.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent ae) { + JButton but = (JButton) ae.getSource(); + // FIXME some clever logic + } + }); + contentPane.add(button, BorderLayout.SOUTH); + + setContentPane(contentPane); + pack(); + setLocationByPlatform(true); + setVisible(true); + } + + private void parse() { + this.mElements = new Element[this.mRow][this.mColumn]; + int row = 0; + for (String line : this.mLines) { + for (int i = 0; i < line.length(); i++) { + char c = line.charAt(i); + if ((('A' <= c) && (c <= 'Z')) || (('0' <= c) && (c <= '9')) || (c == 'Ä') || (c == 'Ö') + || (c == 'Ü')) { + this.mElements[row][i] = new Element(c); + } else { + this.mElements[row][i] = new Element(); + } + this.mElements[row][i].setColor(0, 0, 0); + } + row++; + } + } + + public class Element extends JLabel { + + /** + * + */ + private static final long serialVersionUID = -3933903441113933637L; + + private boolean noText = false; + + /** + * Draw a simple rect + */ + public Element() { + super(); + this.noText = true; + this.setBackground(Color.BLACK); + } + + /** + * Draw a character + * + * @param character + * to show + */ + public Element(char character) { + super("" + character); + setFont(new Font("Dialog", Font.BOLD, 24)); + setHorizontalAlignment(CENTER); + // FIXME: Background color is not updated: + this.setBackground(Color.BLACK); + } + + public void setColor(int red, int green, int blue) { + this.setForeground(new Color(red, green, blue)); + // FIXME changing the color is not working + this.repaint(); + System.out.println(this.toString()); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + if (noText) { + sb.append(" "); + } else { + sb.append("" + this.getText()); + } + sb.append("|" + Integer.toHexString(this.getForeground().getRed()) + " " + + Integer.toHexString(this.getForeground().getGreen()) + " " + + Integer.toHexString(this.getForeground().getBlue())); + + return sb.toString(); + } + } + + public void updateLED(int index, int r, int g, int b) { + if (mElements != null) { + int i = (index / mColumn); + int j = (index % mColumn); + if ((i < mElements.length) && (j < mElements[i].length) && (mElements[i][j] != null)) { + Element curlbl = mElements[i][j]; + curlbl.setColor(r, g, b); + } + } + } - public void updateLED(int index, byte red, byte green, byte blue) { - if (this.mElements != null) { - int i = (index / this.mColumn); - int j = (index % this.mColumn); - if ((i < this.mElements.length) && - (j < this.mElements[i].length) && - (this.mElements[i][j] != null)) { - this.mElements[i][j].setColor(red, green, blue); - } - } - } - } From f51613255b4bda1d812c6600584d46cb687481c0 Mon Sep 17 00:00:00 2001 From: C3MA Date: Fri, 12 Jan 2018 20:50:51 +0100 Subject: [PATCH 010/151] Invert each second row --- simulation/config.lua | 2 +- simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java | 4 ++-- simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/simulation/config.lua b/simulation/config.lua index b15e0a7..48e04ba 100644 --- a/simulation/config.lua +++ b/simulation/config.lua @@ -10,4 +10,4 @@ color4=string.char(green, red, blue) colorBg=string.char(0,0,0) -- black is the default background color sntpserverhostname="ptbtime1.ptb.de" - +timezoneoffset=1 \ No newline at end of file diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java index eda22c7..3cdbde1 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java @@ -61,8 +61,8 @@ public class ESP8266Ws2812 extends TwoArgFunction { for (int i = 0; i < length; i += 3) { if (ESP8266Ws2812.layout != null) { int r = array[i + 0]+(Byte.MIN_VALUE*-1); - int g = array[i + 1]+(Byte.MIN_VALUE*-1); - int b = array[i + 2]+(Byte.MIN_VALUE*-1); + int b = array[i + 1]+(Byte.MIN_VALUE*-1); + int g = array[i + 2]+(Byte.MIN_VALUE*-1); ESP8266Ws2812.layout.updateLED(i / 3, r, g, b); } } diff --git a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java index cf2a977..de630b4 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java +++ b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java @@ -184,6 +184,10 @@ public class WS2812Layout extends JFrame { if (mElements != null) { int i = (index / mColumn); int j = (index % mColumn); + // Swap each second row + if (i % 2 == 1) { + j = (mColumn-1) - j; + } if ((i < mElements.length) && (j < mElements[i].length) && (mElements[i][j] != null)) { Element curlbl = mElements[i][j]; curlbl.setColor(r, g, b); From 4522e40d52a8e54d9237879e6eb2f160defcf5bc Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 17 Jan 2018 21:11:42 +0100 Subject: [PATCH 011/151] Simulation speedup factor added --- simulation/config.lua | 3 ++- simulation/src/de/c3ma/ollo/WS2812Simulation.java | 13 +++++++++++-- simulation/src/de/c3ma/ollo/mockup/ESP8266Tmr.java | 7 +++++-- .../src/de/c3ma/ollo/mockup/ESP8266Ws2812.java | 4 ++-- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/simulation/config.lua b/simulation/config.lua index 48e04ba..07b77c9 100644 --- a/simulation/config.lua +++ b/simulation/config.lua @@ -10,4 +10,5 @@ color4=string.char(green, red, blue) colorBg=string.char(0,0,0) -- black is the default background color sntpserverhostname="ptbtime1.ptb.de" -timezoneoffset=1 \ No newline at end of file +timezoneoffset=1 + diff --git a/simulation/src/de/c3ma/ollo/WS2812Simulation.java b/simulation/src/de/c3ma/ollo/WS2812Simulation.java index 02a8557..073942d 100644 --- a/simulation/src/de/c3ma/ollo/WS2812Simulation.java +++ b/simulation/src/de/c3ma/ollo/WS2812Simulation.java @@ -72,7 +72,7 @@ public class WS2812Simulation implements LuaSimulation { } } - public static void main(String[] args) { + public static void main(final String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { @@ -100,9 +100,18 @@ public class WS2812Simulation implements LuaSimulation { System.out.println("Integrate " + additionalFile.getName() + " into simulation"); } else { System.err.println("Script " + args[2] + " cannot be found"); + printUsage(); System.exit(1); } } + if (args.length >= 4) { + try { + ESP8266Tmr.gTimingFactor = Integer.parseInt(args[3]); + } catch (NumberFormatException nfe) { + System.err.println("Timing factor not parsable: " + nfe.getMessage()); + printUsage(); + } + } simu.callScript(f.getName()); } catch (IOException e) { @@ -128,7 +137,7 @@ public class WS2812Simulation implements LuaSimulation { private static void printUsage() { System.out.println("Usage:"); System.out.println("one argument required: file to execute."); - System.out.println(".e.g: init.lua"); + System.out.println(".e.g: init.lua (ws2812 layout configuration) (additional LUA script) (timing speedup factor)"); } @Override diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Tmr.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Tmr.java index 2b01e83..4c1782a 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ESP8266Tmr.java +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Tmr.java @@ -21,6 +21,8 @@ public class ESP8266Tmr extends TwoArgFunction { private static final int MAXTHREADS = 7; private static LuaThreadTmr[] allThreads = new LuaThreadTmr[MAXTHREADS]; + + public static int gTimingFactor = 1; @Override public LuaValue call(LuaValue modname, LuaValue env) { @@ -77,13 +79,14 @@ public class ESP8266Tmr extends TwoArgFunction { System.err.println("[TMR] Timer" + timerNumer + " stopped"); } - allThreads[timerNumer] = new LuaThreadTmr(timerNumer, code, (endlessloop == 1), delay); + /* The cycletime is at least 1 ms */ + allThreads[timerNumer] = new LuaThreadTmr(timerNumer, code, (endlessloop == 1), Math.max(delay / gTimingFactor, 1)); allThreads[timerNumer].start(); } return LuaValue.valueOf(true); } } - + public void stopAllTimer() { for (int i = 0; i < allThreads.length; i++) { stopTmr(i); diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java index 3cdbde1..a6fc6c3 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java @@ -52,9 +52,9 @@ public class ESP8266Ws2812 extends TwoArgFunction { public LuaValue call(LuaValue arg) { if (arg.isstring()) { LuaString jstring = arg.checkstring(); - int length = jstring.rawlen(); + final int length = jstring.rawlen(); if ((length % 3) == 0) { - byte[] array = jstring.m_bytes; + final byte[] array = jstring.m_bytes; SwingUtilities.invokeLater(new Runnable() { @Override public void run() { From fc81ac63f7cfcd09c705e8bb5d2dacf836056bfe Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 17 Jan 2018 21:42:02 +0100 Subject: [PATCH 012/151] The time is also manipulated with the speedfactor --- .../src/de/c3ma/ollo/mockup/ESP8266Time.java | 39 ++++++++++++------- .../de/c3ma/ollo/mockup/ui/WS2812Layout.java | 3 +- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java index e8f5446..16e442c 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java @@ -1,18 +1,12 @@ package de.c3ma.ollo.mockup; -import org.luaj.vm2.Globals; import org.luaj.vm2.LuaFunction; import org.luaj.vm2.LuaTable; import org.luaj.vm2.LuaValue; -import org.luaj.vm2.Varargs; -import org.luaj.vm2.lib.OneArgFunction; import org.luaj.vm2.lib.ThreeArgFunction; import org.luaj.vm2.lib.TwoArgFunction; -import org.luaj.vm2.lib.VarArgFunction; import org.luaj.vm2.lib.ZeroArgFunction; -import de.c3ma.ollo.LuaThreadTmr; - /** * created at 29.12.2017 - 00:07:22
* creator: ollo
@@ -27,6 +21,8 @@ import de.c3ma.ollo.LuaThreadTmr; */ public class ESP8266Time extends TwoArgFunction { + private static long gSimulationStartTime = 0; + @Override public LuaValue call(LuaValue modname, LuaValue env) { env.checkglobals(); @@ -42,6 +38,23 @@ public class ESP8266Time extends TwoArgFunction { return sntp; } + /** + * Generate a time. If there is no speedup, it is simply the current system time. + * Otherwise the time is speedup by the given factor + * @return + */ + private long generateCurrenttime() { + if (gSimulationStartTime == 0) { + gSimulationStartTime = System.currentTimeMillis(); + } + + long time = System.currentTimeMillis(); + if (ESP8266Tmr.gTimingFactor > 1) { + time = gSimulationStartTime + ((time - gSimulationStartTime) * ESP8266Tmr.gTimingFactor); + } + return time; + } + private class SyncFunction extends ThreeArgFunction { @Override @@ -49,12 +62,11 @@ public class ESP8266Time extends TwoArgFunction { String serverName = server.checkjstring(); LuaFunction cb = callbackSuccess.checkfunction(); System.out.println("[SNTP] sync " + serverName); - /*FIXME also make it possible to simulate the time */ - int seconds = (int) (System.currentTimeMillis() / 1000); - int useconds = (int) (System.currentTimeMillis() % 1000); + long time = generateCurrenttime(); + int seconds = (int) (time / 1000); + int useconds = (int) (time % 1000); cb.call(LuaValue.valueOf(seconds), LuaValue.valueOf(useconds), LuaValue.valueOf(serverName)); - return LuaValue.valueOf(true); } @@ -64,10 +76,11 @@ public class ESP8266Time extends TwoArgFunction { @Override public LuaValue call() { - LuaValue[] v = new LuaValue[2]; + LuaValue[] v = new LuaValue[2]; /*FIXME also make it possible to simulate the time */ - int seconds = (int) (System.currentTimeMillis() / 1000); - int useconds = (int) (System.currentTimeMillis() % 1000); + long time = generateCurrenttime(); + int seconds = (int) (time / 1000); + int useconds = (int) (time % 1000); v[0] = LuaValue.valueOf(seconds); v[1] = LuaValue.valueOf(useconds); return LuaValue.varargsOf(v).arg1(); diff --git a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java index de630b4..bcf22c3 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java +++ b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java @@ -82,6 +82,7 @@ public class WS2812Layout extends JFrame { contentPane.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY, 2)); JPanel ledPanel = new JPanel(); + ledPanel.setBackground(Color.BLACK); ledPanel.setLayout(new GridLayout(this.mRow, this.mColumn, 10, 10)); for (int i = 0; i < this.mRow; i++) { for (int j = 0; j < this.mColumn; j++) { @@ -159,9 +160,7 @@ public class WS2812Layout extends JFrame { public void setColor(int red, int green, int blue) { this.setForeground(new Color(red, green, blue)); - // FIXME changing the color is not working this.repaint(); - System.out.println(this.toString()); } @Override From 238487929a62ca60c5fd872fa03a2fcfa67da72c Mon Sep 17 00:00:00 2001 From: ollo Date: Sun, 28 Jan 2018 14:05:07 +0100 Subject: [PATCH 013/151] Swapped colors --- simulation/config.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/simulation/config.lua b/simulation/config.lua index 07b77c9..463bcd0 100644 --- a/simulation/config.lua +++ b/simulation/config.lua @@ -1,5 +1,5 @@ -green=0 -red=60 +green=60 +red=0 blue=0 color=string.char(green, red, blue) From be8b8a99caa0a01d67bd28246fc6d39e28c34da9 Mon Sep 17 00:00:00 2001 From: ollo Date: Sun, 28 Jan 2018 14:08:54 +0100 Subject: [PATCH 014/151] Used different colors --- simulation/config.lua | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/simulation/config.lua b/simulation/config.lua index 463bcd0..68ddb97 100644 --- a/simulation/config.lua +++ b/simulation/config.lua @@ -1,12 +1,13 @@ -green=60 -red=0 +green=0 +green2=128 +red=128 blue=0 color=string.char(green, red, blue) -color1=string.char(green, red, blue) -color2=string.char(green, red, blue) -color3=string.char(green, red, blue) -color4=string.char(green, red, blue) +color1=string.char(tonumber(green2*0.8), red, blue) +color2=string.char(tonumber(green2*0.6), red, blue) +color3=string.char(tonumber(green2*0.4), red, blue) +color4=string.char(tonumber(green2*0.2), red, blue) colorBg=string.char(0,0,0) -- black is the default background color sntpserverhostname="ptbtime1.ptb.de" From cb5205d4af302bb6ae422ef30b2e33e412724468 Mon Sep 17 00:00:00 2001 From: ollo Date: Sun, 28 Jan 2018 14:11:14 +0100 Subject: [PATCH 015/151] Refactored character counting function --- main.lua | 2 +- wordclock.lua | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/main.lua b/main.lua index 1eb98a9..9c0f3df 100644 --- a/main.lua +++ b/main.lua @@ -50,7 +50,7 @@ function displayTime() time = getTime(sec, timezoneoffset) words = display_timestat(time.hour, time.minute) - local charactersOfTime = display_countwords_de(words) + local charactersOfTime = display_countcharacters_de(words) ledBuf = generateLEDs(words, color, color1, color2, color3, color4, charactersOfTime) diff --git a/wordclock.lua b/wordclock.lua index f99d815..a7e5be2 100755 --- a/wordclock.lua +++ b/wordclock.lua @@ -136,11 +136,11 @@ function display_timestat(hours, minutes, longmode) return ret end --- @fn display_countwords +-- @fn display_countcharacters_de -- Count the amount of characters, used to describe the current time in words -- @param words the same structure, as generated with the function @see display_timestat -- @return the amount of words, used to describe the time or 0 on errors -function display_countwords_de(words) +function display_countcharacters_de(words) local amount=0 if (words.itis == 1) then amount = amount + 5 From 0038a7997e90f37d7d6a12c6aaefb1a9765e5e1a Mon Sep 17 00:00:00 2001 From: ollo Date: Sun, 28 Jan 2018 14:23:01 +0100 Subject: [PATCH 016/151] Calculate the amount of words --- main.lua | 3 ++- wordclock.lua | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/main.lua b/main.lua index 9c0f3df..86d63ff 100644 --- a/main.lua +++ b/main.lua @@ -51,10 +51,11 @@ function displayTime() words = display_timestat(time.hour, time.minute) local charactersOfTime = display_countcharacters_de(words) + local wordsOfTime = display_countwords_de(words) ledBuf = generateLEDs(words, color, color1, color2, color3, color4, charactersOfTime) - print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " in " .. charactersOfTime .. " chars") + print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " in " .. charactersOfTime .. " chars " .. wordsOfTime .. " words") -- Write the buffer to the LEDs ws2812.write(ledBuf) diff --git a/wordclock.lua b/wordclock.lua index a7e5be2..e930f43 100755 --- a/wordclock.lua +++ b/wordclock.lua @@ -139,7 +139,7 @@ end -- @fn display_countcharacters_de -- Count the amount of characters, used to describe the current time in words -- @param words the same structure, as generated with the function @see display_timestat --- @return the amount of words, used to describe the time or 0 on errors +-- @return the amount of characters, used to describe the time or 0 on errors function display_countcharacters_de(words) local amount=0 if (words.itis == 1) then @@ -214,3 +214,17 @@ function display_countcharacters_de(words) return amount end + +-- @fn display_countcharacters_de +-- Count the amount of words, used to describe the current time in words +-- @param words the same structure, as generated with the function @see display_timestat +-- @return the amount of words, used to describe the time or 0 on errors +function display_countwords_de(words) + local amount = 0 + for k,v in pairs(words) do + if (v ~= nil and v == 1) then + amount = amount + 1 + end + end + return amount +end From d851964bc9a6e8c3e8979432d8d6748460137262 Mon Sep 17 00:00:00 2001 From: ollo Date: Sun, 28 Jan 2018 15:08:08 +0100 Subject: [PATCH 017/151] Started with word-wise coloring --- displayword.lua | 39 +++++++++++++++++++++++++++++++-------- wordclock.lua | 12 ++++++++---- 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/displayword.lua b/displayword.lua index 3d12716..3692981 100644 --- a/displayword.lua +++ b/displayword.lua @@ -1,25 +1,45 @@ -- Module filling a buffer, sent to the LEDs function updateColor(data) - if (data.usedCharacters <= data.charsPerMinute) then + -- special case, and there are exactly 4 words to display (so each word for each minute) + if (data.amountWords == 4) then + print ("Amount words are " .. tostring(data.amountWords)) + if (data.words.min1 == 1 and data.drawnWords == 0) then + print "Color1" + return data.colorMin1 + elseif (data.words.min2 == 1 and data.drawnWords == 1) then + print "Color2" + return data.colorMin2 + elseif (data.words.min3 == 1 and data.drawnWords == 2) then + print "Color3" + return data.colorMin3 + elseif (data.words.min4 == 1 and data.drawnWords == 3) then + print "Color4" + return data.colorMin4 + else + print "Color default" + return data.colorFg + end + else -- we must do some magic calculation + if (data.drawnCharacters <= data.charsPerMinute) then if (data.words.min1 == 1 or data.words.min2 == 1 or data.words.min3 == 1 or data.words.min4 == 1) then return data.colorMin1 else return data.colorFg end - elseif (data.usedCharacters <= data.charsPerMinute*2) then + elseif (data.drawnCharacters <= data.charsPerMinute*2) then if (data.words.min2 == 1 or data.words.min3 == 1 or data.words.min4 == 1) then return data.colorMin2 else return data.colorFg end - elseif (data.usedCharacters <= data.charsPerMinute*3) then + elseif (data.drawnCharacters <= data.charsPerMinute*3) then if (data.words.min3 == 1 or data.words.min4 == 1) then return data.colorMin3 else return data.colorFg end - elseif (data.usedCharacters > data.charsPerMinute*3) then + elseif (data.drawnCharacters > data.charsPerMinute*3) then if (data.words.min4 == 1) then return data.colorMin4 else @@ -28,6 +48,7 @@ function updateColor(data) else return data.colorFg end + end end function drawLEDs(data, numberNewChars) @@ -38,9 +59,9 @@ function drawLEDs(data, numberNewChars) else tmpBuf=tmpBuf .. updateColor(data) end - data.usedCharacters=data.usedCharacters+1 - + data.drawnCharacters=data.drawnCharacters+1 end + data.drawnWords=data.drawnWords+1 return tmpBuf end @@ -55,7 +76,9 @@ function generateLEDs(words, colorFg, colorMin1, colorMin2, colorMin3, colorMin4 data.colorMin2=colorMin2 data.colorMin3=colorMin3 data.colorMin4=colorMin4 - data.usedCharacters=0 + data.drawnCharacters=0 + data.drawnWords=0 + data.amountWords=display_countwords_de(words) local space=string.char(0,0,0) -- update the background color, if set if (colorBg ~= nil) then @@ -66,7 +89,7 @@ function generateLEDs(words, colorFg, colorMin1, colorMin2, colorMin3, colorMin4 local buf=colorFg -- line 1---------------------------------------------- - if (words.itis == 1) then + if (words.it==1 words.is == 1) then buf=drawLEDs(data,2) -- ES print(tostring(buf)) -- K fill character diff --git a/wordclock.lua b/wordclock.lua index e930f43..10f5da8 100755 --- a/wordclock.lua +++ b/wordclock.lua @@ -12,7 +12,7 @@ function display_timestat(hours, minutes, longmode) end -- generate an empty return type - local ret = { itis=0, fiveMin=0, tenMin=0, after=0, before=0, threeHour=0, quater=0, threequater=0, half=0, s=0, + local ret = { it=0, is=0, fiveMin=0, tenMin=0, after=0, before=0, threeHour=0, quater=0, threequater=0, half=0, s=0, one=0, oneLong=0, two=0, three=0, four=0, five=0, six=0, seven=0, eight=0, nine=0, ten=0, eleven=0, twelve=0, twenty=0, clock=0, sr_nc=0, min1=0, min2=0, min3=0, min4=0 } @@ -31,7 +31,8 @@ function display_timestat(hours, minutes, longmode) if ((longmode==1) or (minutes==0) or (minutes==6)) then - ret.itis=1 + ret.it=1 + ret.is=1 end -- Handle minutes @@ -142,8 +143,11 @@ end -- @return the amount of characters, used to describe the time or 0 on errors function display_countcharacters_de(words) local amount=0 - if (words.itis == 1) then - amount = amount + 5 + if (words.it == 1) then + amount = amount + 2 + end + if (words.is == 1) then + amount = amount + 3 end if (words.fiveMin == 1) then amount = amount + 4 From e25a36ba337f7eaec4bc42dfb47f4e688fcaf010 Mon Sep 17 00:00:00 2001 From: ollo Date: Tue, 30 Jan 2018 20:52:40 +0100 Subject: [PATCH 018/151] It is is seperated in two words --- displayword.lua | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/displayword.lua b/displayword.lua index 3692981..b989f66 100644 --- a/displayword.lua +++ b/displayword.lua @@ -89,18 +89,21 @@ function generateLEDs(words, colorFg, colorMin1, colorMin2, colorMin3, colorMin4 local buf=colorFg -- line 1---------------------------------------------- - if (words.it==1 words.is == 1) then + if (words.it==1) then buf=drawLEDs(data,2) -- ES - print(tostring(buf)) - -- K fill character - buf=buf .. space:rep(1) - buf=buf .. drawLEDs(data,3) -- IST - -- L fill character - buf=buf .. space:rep(1) - else - buf=space:rep(7) + else + buf=space:rep(2) end - if (words.fiveMin== 1) then +-- K fill character +buf=buf .. space:rep(1) + if (words.is == 1) then + buf=buf .. drawLEDs(data,3) -- IST + else + buf=buf .. space:rep(3) + end + -- L fill character +buf=buf .. space:rep(1) +if (words.fiveMin== 1) then buf= buf .. drawLEDs(data,4) -- FUENF else buf= buf .. space:rep(4) From 8dc7cf2af79bf61ced40071d5aded2481ff0af81 Mon Sep 17 00:00:00 2001 From: ollo Date: Tue, 30 Jan 2018 20:59:21 +0100 Subject: [PATCH 019/151] Integrated reboot button --- .../src/de/c3ma/ollo/WS2812Simulation.java | 3 +-- .../de/c3ma/ollo/mockup/ESP8266Ws2812.java | 5 ++-- .../de/c3ma/ollo/mockup/ui/WS2812Layout.java | 27 ++++++++++++------- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/simulation/src/de/c3ma/ollo/WS2812Simulation.java b/simulation/src/de/c3ma/ollo/WS2812Simulation.java index 073942d..148e20f 100644 --- a/simulation/src/de/c3ma/ollo/WS2812Simulation.java +++ b/simulation/src/de/c3ma/ollo/WS2812Simulation.java @@ -4,7 +4,6 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; -import javax.management.RuntimeErrorException; import javax.swing.SwingUtilities; import org.luaj.vm2.Globals; @@ -128,7 +127,7 @@ public class WS2812Simulation implements LuaSimulation { private void setWS2812Layout(File file) { if (file.exists()) { - ws2812.setLayout(file); + ws2812.setLayout(file, this); } else { throw new RuntimeException("WS2812 Layout: " + file.getAbsolutePath() + " does not exists"); } diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java index a6fc6c3..ee5e04e 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Ws2812.java @@ -11,6 +11,7 @@ import org.luaj.vm2.lib.OneArgFunction; import org.luaj.vm2.lib.TwoArgFunction; import org.luaj.vm2.lib.ZeroArgFunction; +import de.c3ma.ollo.LuaSimulation; import de.c3ma.ollo.mockup.ui.WS2812Layout; /** @@ -79,9 +80,9 @@ public class ESP8266Ws2812 extends TwoArgFunction { } } - public void setLayout(File file) { + public void setLayout(File file, LuaSimulation nodemcuSimu) { if (ESP8266Ws2812.layout == null) { - ESP8266Ws2812.layout = WS2812Layout.parse(file); + ESP8266Ws2812.layout = WS2812Layout.parse(file, nodemcuSimu); } } } diff --git a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java index bcf22c3..935b40d 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java +++ b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java @@ -10,7 +10,6 @@ import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import javax.swing.BorderFactory; @@ -18,7 +17,8 @@ import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; -import javax.swing.SwingUtilities; + +import de.c3ma.ollo.LuaSimulation; /** * created at 02.01.2018 - 12:57:02
@@ -40,14 +40,20 @@ public class WS2812Layout extends JFrame { private int mRow = 0; private Element[][] mElements; - public static WS2812Layout parse(File file) { + private LuaSimulation nodemcuSimu; + + public WS2812Layout(LuaSimulation nodemcuSimu) { + this.nodemcuSimu = nodemcuSimu; + } + + public static WS2812Layout parse(File file, LuaSimulation nodemcuSimu) { WS2812Layout layout = null; try { BufferedReader br = new BufferedReader(new FileReader(file)); try { String line = br.readLine(); if (line != null) { - layout = new WS2812Layout(); + layout = new WS2812Layout(nodemcuSimu); } while (line != null) { @@ -92,15 +98,18 @@ public class WS2812Layout extends JFrame { } } contentPane.add(ledPanel, BorderLayout.CENTER); - JButton button = new JButton("Do something"); - button.setActionCommand("Do something"); - button.addActionListener(new ActionListener() { + final JButton btnReboot = new JButton("Reboot"); + btnReboot.setActionCommand("Reboot simulation"); + btnReboot.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { JButton but = (JButton) ae.getSource(); - // FIXME some clever logic + if (but.equals(btnReboot)) { + System.out.println("[Node] Restart"); + nodemcuSimu.rebootTriggered(); + } } }); - contentPane.add(button, BorderLayout.SOUTH); + contentPane.add(btnReboot, BorderLayout.SOUTH); setContentPane(contentPane); pack(); From d3d15776dc1ae8b19a517956b9f68e1dfe98d225 Mon Sep 17 00:00:00 2001 From: ollo Date: Sat, 3 Feb 2018 15:38:38 +0100 Subject: [PATCH 020/151] GUI reworked --- simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java index 935b40d..44099b2 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java +++ b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java @@ -98,6 +98,8 @@ public class WS2812Layout extends JFrame { } } contentPane.add(ledPanel, BorderLayout.CENTER); + + JPanel bottomPanel = new JPanel(); final JButton btnReboot = new JButton("Reboot"); btnReboot.setActionCommand("Reboot simulation"); btnReboot.addActionListener(new ActionListener() { @@ -109,7 +111,9 @@ public class WS2812Layout extends JFrame { } } }); - contentPane.add(btnReboot, BorderLayout.SOUTH); + bottomPanel.add(btnReboot); + + contentPane.add(bottomPanel, BorderLayout.SOUTH); setContentPane(contentPane); pack(); From 28b7bbe04a55c08ef78c1fa09a2672f2962c1fa3 Mon Sep 17 00:00:00 2001 From: ollo Date: Sat, 3 Feb 2018 16:24:46 +0100 Subject: [PATCH 021/151] Time can be parsed from the GUI --- .../de/c3ma/ollo/mockup/ui/WS2812Layout.java | 69 ++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java index 44099b2..2200d60 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java +++ b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java @@ -2,6 +2,7 @@ package de.c3ma.ollo.mockup.ui; import java.awt.BorderLayout; import java.awt.Color; +import java.awt.Event; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; @@ -10,15 +11,22 @@ import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; +import java.time.LocalDate; import java.util.ArrayList; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; import de.c3ma.ollo.LuaSimulation; +import javafx.scene.control.DatePicker; /** * created at 02.01.2018 - 12:57:02
@@ -98,8 +106,67 @@ public class WS2812Layout extends JFrame { } } contentPane.add(ledPanel, BorderLayout.CENTER); - + JPanel bottomPanel = new JPanel(); + final JTextField dateTime = new JTextField("yyyy-mm-dd HH:MM:SS"); + dateTime.getDocument().addDocumentListener(new DocumentListener() { + public void changedUpdate(DocumentEvent e) { + warn(); + } + public void removeUpdate(DocumentEvent e) { + warn(); + } + public void insertUpdate(DocumentEvent e) { + warn(); + } + + public void warn() { + final String pattern = "(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})"; + final String current = dateTime.getText(); + + + + if (!current.matches(pattern)) { + dateTime.setForeground(Color.RED); + } else { + dateTime.setForeground(Color.BLACK); + Pattern dateTimePattern = Pattern.compile(pattern); + Matcher matcher = dateTimePattern.matcher(current); + int year=0; + int month=0; + int day=0; + int hour=0; + int minute=0; + int second=0; + matcher.find(); + for (int g = 1; g <= matcher.groupCount(); g++) { + switch(g) { + case 1: /* Year */ + year = Integer.parseInt(matcher.group(g)); + break; + case 2: /* Month */ + month = Integer.parseInt(matcher.group(g)); + break; + case 3: /* Day */ + day = Integer.parseInt(matcher.group(g)); + break; + case 4: /* Hour */ + hour = Integer.parseInt(matcher.group(g)); + break; + case 5: /* Minute */ + minute = Integer.parseInt(matcher.group(g)); + break; + case 6: /* Second */ + second = Integer.parseInt(matcher.group(g)); + break; + } + } + System.out.println("Set time to: " + year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second); + } + } + }); + bottomPanel.add(dateTime); + final JButton btnReboot = new JButton("Reboot"); btnReboot.setActionCommand("Reboot simulation"); btnReboot.addActionListener(new ActionListener() { From ca47018a32e1959191880d0455257f3ab2ebea8c Mon Sep 17 00:00:00 2001 From: ollo Date: Sat, 3 Feb 2018 16:51:00 +0100 Subject: [PATCH 022/151] The time can be set within the GUI --- .../src/de/c3ma/ollo/LuaSimulation.java | 2 ++ .../src/de/c3ma/ollo/WS2812Simulation.java | 5 +++++ .../src/de/c3ma/ollo/mockup/ESP8266Time.java | 19 +++++++++++++++---- .../de/c3ma/ollo/mockup/ui/WS2812Layout.java | 17 ++++++++++++----- 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/simulation/src/de/c3ma/ollo/LuaSimulation.java b/simulation/src/de/c3ma/ollo/LuaSimulation.java index 35d7fb0..5d3023d 100644 --- a/simulation/src/de/c3ma/ollo/LuaSimulation.java +++ b/simulation/src/de/c3ma/ollo/LuaSimulation.java @@ -10,4 +10,6 @@ package de.c3ma.ollo; public interface LuaSimulation { public void rebootTriggered(); + + public void setSimulationTime(long timeInMillis); } diff --git a/simulation/src/de/c3ma/ollo/WS2812Simulation.java b/simulation/src/de/c3ma/ollo/WS2812Simulation.java index 148e20f..08b80a2 100644 --- a/simulation/src/de/c3ma/ollo/WS2812Simulation.java +++ b/simulation/src/de/c3ma/ollo/WS2812Simulation.java @@ -165,4 +165,9 @@ public class WS2812Simulation implements LuaSimulation { throw new RuntimeException("Copy into temporary folder failed; script not available"); } } + + @Override + public void setSimulationTime(long timeInMillis) { + ESP8266Time.setOverwrittenTime(timeInMillis); + } } diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java index 16e442c..a8f48df 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Time.java @@ -23,6 +23,8 @@ public class ESP8266Time extends TwoArgFunction { private static long gSimulationStartTime = 0; + private static long gOverwrittenTime = 0; + @Override public LuaValue call(LuaValue modname, LuaValue env) { env.checkglobals(); @@ -48,11 +50,16 @@ public class ESP8266Time extends TwoArgFunction { gSimulationStartTime = System.currentTimeMillis(); } - long time = System.currentTimeMillis(); - if (ESP8266Tmr.gTimingFactor > 1) { - time = gSimulationStartTime + ((time - gSimulationStartTime) * ESP8266Tmr.gTimingFactor); + if (gOverwrittenTime == 0) { + /* Time simulation is disabled -> calculate something according to the speedup factor */ + long time = System.currentTimeMillis(); + if (ESP8266Tmr.gTimingFactor > 1) { + time = gSimulationStartTime + ((time - gSimulationStartTime) * ESP8266Tmr.gTimingFactor); + } + return time; + } else { + return gOverwrittenTime; } - return time; } private class SyncFunction extends ThreeArgFunction { @@ -87,5 +94,9 @@ public class ESP8266Time extends TwoArgFunction { } } + + public static void setOverwrittenTime(long timeInMillis) { + gOverwrittenTime = timeInMillis; + } } diff --git a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java index 2200d60..a68c4b9 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java +++ b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java @@ -2,7 +2,6 @@ package de.c3ma.ollo.mockup.ui; import java.awt.BorderLayout; import java.awt.Color; -import java.awt.Event; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; @@ -11,8 +10,8 @@ import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; -import java.time.LocalDate; import java.util.ArrayList; +import java.util.GregorianCalendar; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -26,7 +25,6 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import de.c3ma.ollo.LuaSimulation; -import javafx.scene.control.DatePicker; /** * created at 02.01.2018 - 12:57:02
@@ -124,7 +122,13 @@ public class WS2812Layout extends JFrame { final String pattern = "(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})"; final String current = dateTime.getText(); - + if (current.length() <=0) { + /* color "nothing" green */ + dateTime.setForeground(Color.GREEN); + /* disable the time simulation */ + nodemcuSimu.setSimulationTime(0); + return; + } if (!current.matches(pattern)) { dateTime.setForeground(Color.RED); @@ -161,7 +165,10 @@ public class WS2812Layout extends JFrame { break; } } - System.out.println("Set time to: " + year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second); + System.out.println("[GUI] Set time to: " + year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second); + GregorianCalendar gc = new GregorianCalendar(year, month, day, hour, minute, second); + + nodemcuSimu.setSimulationTime(gc.getTimeInMillis()); } } }); From a4b085054e18e099a3dbe4584c5e9d414ac77551 Mon Sep 17 00:00:00 2001 From: ollo Date: Sat, 3 Feb 2018 17:04:38 +0100 Subject: [PATCH 023/151] When there are four words, these are used for the minutes --- wordclock.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/wordclock.lua b/wordclock.lua index 10f5da8..3b5c021 100755 --- a/wordclock.lua +++ b/wordclock.lua @@ -220,15 +220,18 @@ function display_countcharacters_de(words) end -- @fn display_countcharacters_de --- Count the amount of words, used to describe the current time in words +-- Count the amount of words, used to describe the current time in words! +-- (min1 to min4 are ignored) -- @param words the same structure, as generated with the function @see display_timestat -- @return the amount of words, used to describe the time or 0 on errors function display_countwords_de(words) local amount = 0 for k,v in pairs(words) do if (v ~= nil and v == 1) then - amount = amount + 1 + if (k ~= "min1" and k ~= "min2" and k ~= "min3" and k ~= "min4") then + amount = amount + 1 + end end - end + end return amount end From 7965229dacaed9992a19492a1185da5c8f1d745e Mon Sep 17 00:00:00 2001 From: ollo Date: Tue, 13 Feb 2018 20:31:33 +0100 Subject: [PATCH 024/151] Inverted rows prepared in drawing --- displayword.lua | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/displayword.lua b/displayword.lua index b989f66..9f35bce 100644 --- a/displayword.lua +++ b/displayword.lua @@ -1,6 +1,6 @@ -- Module filling a buffer, sent to the LEDs -function updateColor(data) +function updateColor(data, inverseRow=false) -- special case, and there are exactly 4 words to display (so each word for each minute) if (data.amountWords == 4) then print ("Amount words are " .. tostring(data.amountWords)) @@ -20,14 +20,16 @@ function updateColor(data) print "Color default" return data.colorFg end - else -- we must do some magic calculation - if (data.drawnCharacters <= data.charsPerMinute) then + else -- we must do some magic calculation FIXME the magic should be improved + if (((data.drawnCharacters <= data.charsPerMinute) and not inverseRow) or + ((data.drawnCharacters > data.charsPerMinute) and inverseRow) ) then if (data.words.min1 == 1 or data.words.min2 == 1 or data.words.min3 == 1 or data.words.min4 == 1) then return data.colorMin1 else return data.colorFg end - elseif (data.drawnCharacters <= data.charsPerMinute*2) then + elseif ( ((data.drawnCharacters <= data.charsPerMinute*2) and not inverseRow) or + ((data.drawnCharacters <= data.charsPerMinute*2) and inverseRow)) then if (data.words.min2 == 1 or data.words.min3 == 1 or data.words.min4 == 1) then return data.colorMin2 else @@ -51,13 +53,13 @@ function updateColor(data) end end -function drawLEDs(data, numberNewChars) +function drawLEDs(data, numberNewChars, inverseRow=false) local tmpBuf=nil for i=1,numberNewChars do if (tmpBuf == nil) then - tmpBuf = updateColor(data) + tmpBuf = updateColor(data, inverseRow) else - tmpBuf=tmpBuf .. updateColor(data) + tmpBuf=tmpBuf .. updateColor(data, inverseRow) end data.drawnCharacters=data.drawnCharacters+1 end @@ -110,12 +112,12 @@ if (words.fiveMin== 1) then end -- line 2-- even row (so inverted) -------------------- if (words.twenty == 1) then - buf= buf .. drawLEDs(data,7) -- ZWANZIG + buf= buf .. drawLEDs(data,7,true) -- ZWANZIG else buf= buf .. space:rep(7) end if (words.tenMin == 1) then - buf= buf .. drawLEDs(data,4) -- ZEHN + buf= buf .. drawLEDs(data,4,true) -- ZEHN else buf= buf .. space:rep(4) end @@ -131,12 +133,12 @@ if (words.fiveMin== 1) then --line 4-------- even row (so inverted) ------------- if (words.before == 1) then buf=buf .. space:rep(2) - buf= buf .. drawLEDs(data,3) -- VOR + buf= buf .. drawLEDs(data,3,true) -- VOR else buf= buf .. space:rep(5) end if (words.after == 1) then - buf= buf .. drawLEDs(data,4) -- NACH + buf= buf .. drawLEDs(data,4,true) -- NACH buf= buf .. space:rep(2) -- TG else buf= buf .. space:rep(6) @@ -156,19 +158,19 @@ if (words.fiveMin== 1) then end ------------even row (so inverted) --------------------- if (words.seven == 1) then - buf= buf .. drawLEDs(data,6) -- SIEBEN + buf= buf .. drawLEDs(data,6,true) -- SIEBEN buf= buf .. space:rep(5) elseif (words.oneLong == 1) then buf= buf .. space:rep(5) - buf= buf .. drawLEDs(data,4) -- EINS + buf= buf .. drawLEDs(data,4,true) -- EINS buf= buf .. space:rep(2) elseif (words.one == 1) then buf= buf .. space:rep(6) - buf= buf .. drawLEDs(data,3) -- EIN + buf= buf .. drawLEDs(data,3,true) -- EIN buf= buf .. space:rep(2) elseif (words.two == 1) then buf= buf .. space:rep(7) - buf= buf .. drawLEDs(data,4) -- ZWEI + buf= buf .. drawLEDs(data,4,true) -- ZWEI else buf= buf .. space:rep(11) end @@ -185,15 +187,15 @@ if (words.fiveMin== 1) then end ------------even row (so inverted) --------------------- if (words.four == 1) then - buf= buf .. drawLEDs(data,4) -- VIER + buf= buf .. drawLEDs(data,4,true) -- VIER buf= buf .. space:rep(7) elseif (words.nine == 1) then buf= buf .. space:rep(4) - buf= buf .. drawLEDs(data,4) -- NEUN + buf= buf .. drawLEDs(data,4,true) -- NEUN buf= buf .. space:rep(3) elseif (words.eleven == 1) then buf= buf .. space:rep(8) - buf= buf .. drawLEDs(data,3) -- ELEVEN + buf= buf .. drawLEDs(data,3,true) -- ELEVEN else buf= buf .. space:rep(11) end @@ -211,13 +213,13 @@ if (words.fiveMin== 1) then end ------------even row (so inverted) --------------------- if (words.clock == 1) then - buf= buf .. drawLEDs(data,3) -- UHR + buf= buf .. drawLEDs(data,3,true) -- UHR else buf= buf .. space:rep(3) end if (words.six == 1) then buf= buf .. space:rep(2) - buf= buf .. drawLEDs(data,5) -- SECHS + buf= buf .. drawLEDs(data,5,true) -- SECHS buf= buf .. space:rep(1) else buf= buf .. space:rep(8) From 674835ae7378b00fddabb3f968c08ced71201af9 Mon Sep 17 00:00:00 2001 From: ollo Date: Sun, 18 Feb 2018 14:08:56 +0100 Subject: [PATCH 025/151] Default values fixed --- displayword.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/displayword.lua b/displayword.lua index 9f35bce..779385d 100644 --- a/displayword.lua +++ b/displayword.lua @@ -1,6 +1,9 @@ -- Module filling a buffer, sent to the LEDs -function updateColor(data, inverseRow=false) +function updateColor(data, inverseRow) + if (inverseRow == nil) then + inverseRow=false + end -- special case, and there are exactly 4 words to display (so each word for each minute) if (data.amountWords == 4) then print ("Amount words are " .. tostring(data.amountWords)) @@ -53,7 +56,10 @@ function updateColor(data, inverseRow=false) end end -function drawLEDs(data, numberNewChars, inverseRow=false) +function drawLEDs(data, numberNewChars, inverseRow) + if (inverseRow == nil) then + inverseRow=false + end local tmpBuf=nil for i=1,numberNewChars do if (tmpBuf == nil) then From e01d699e8af8a5ef4a1b2fe855f935ef89099116 Mon Sep 17 00:00:00 2001 From: ollo Date: Sun, 18 Feb 2018 15:40:54 +0100 Subject: [PATCH 026/151] Filling words in odd rows still open --- displayword.lua | 62 +++++++++++++++++++++++-------------------- simulation/config.lua | 6 ++--- 2 files changed, 36 insertions(+), 32 deletions(-) diff --git a/displayword.lua b/displayword.lua index 779385d..a9722fd 100644 --- a/displayword.lua +++ b/displayword.lua @@ -1,6 +1,6 @@ -- Module filling a buffer, sent to the LEDs -function updateColor(data, inverseRow) +function updateColor(data, inverseRow, characters2draw) if (inverseRow == nil) then inverseRow=false end @@ -24,48 +24,52 @@ function updateColor(data, inverseRow) return data.colorFg end else -- we must do some magic calculation FIXME the magic should be improved - if (((data.drawnCharacters <= data.charsPerMinute) and not inverseRow) or - ((data.drawnCharacters > data.charsPerMinute) and inverseRow) ) then - if (data.words.min1 == 1 or data.words.min2 == 1 or data.words.min3 == 1 or data.words.min4 == 1) then - return data.colorMin1 + if (not inverseRow) then -- nomral row + if (data.drawnCharacters < data.charsPerMinute) then + if (data.words.min1 == 1 or data.words.min2 == 1 or data.words.min3 == 1 or data.words.min4 == 1) then + return data.colorMin1 + else + return data.colorFg + end + elseif (data.drawnCharacters < data.charsPerMinute*2) then + if (data.words.min2 == 1 or data.words.min3 == 1 or data.words.min4 == 1) then + return data.colorMin2 + else + return data.colorFg + end + elseif (data.drawnCharacters < data.charsPerMinute*3) then + if (data.words.min3 == 1 or data.words.min4 == 1) then + return data.colorMin3 + else + return data.colorFg + end + elseif (data.drawnCharacters > data.charsPerMinute*3) then + if (data.words.min4 == 1) then + return data.colorMin4 + else + return data.colorFg + end else return data.colorFg end - elseif ( ((data.drawnCharacters <= data.charsPerMinute*2) and not inverseRow) or - ((data.drawnCharacters <= data.charsPerMinute*2) and inverseRow)) then - if (data.words.min2 == 1 or data.words.min3 == 1 or data.words.min4 == 1) then - return data.colorMin2 - else - return data.colorFg - end - elseif (data.drawnCharacters <= data.charsPerMinute*3) then - if (data.words.min3 == 1 or data.words.min4 == 1) then - return data.colorMin3 - else - return data.colorFg - end - elseif (data.drawnCharacters > data.charsPerMinute*3) then - if (data.words.min4 == 1) then - return data.colorMin4 - else - return data.colorFg - end - else + else -- inverse row + --FIXME magic missing return data.colorFg end - end + end end function drawLEDs(data, numberNewChars, inverseRow) if (inverseRow == nil) then inverseRow=false end + print("charactes " .. tostring(data.charsPerMinute) .. " per minute; " .. tonumber(data.drawnCharacters) .. " used characters") local tmpBuf=nil for i=1,numberNewChars do if (tmpBuf == nil) then - tmpBuf = updateColor(data, inverseRow) + tmpBuf = updateColor(data, inverseRow, numberNewChars) else - tmpBuf=tmpBuf .. updateColor(data, inverseRow) + tmpBuf=tmpBuf .. updateColor(data, inverseRow, numberNewChars) end data.drawnCharacters=data.drawnCharacters+1 end @@ -77,7 +81,7 @@ end function generateLEDs(words, colorFg, colorMin1, colorMin2, colorMin3, colorMin4, characters) -- Set the local variables needed for the colored progress bar data={} - data.charsPerMinute=math.floor(characters/3) -- devide by three (Minute 1 to Minute 3, Minute 4 takes the last chars) + data.charsPerMinute=math.floor(characters/4) -- devide by three (Minute 1 to Minute 3, Minute 4 takes the last chars) data.words=words data.colorFg=colorFg data.colorMin1=colorMin1 diff --git a/simulation/config.lua b/simulation/config.lua index 68ddb97..ed91742 100644 --- a/simulation/config.lua +++ b/simulation/config.lua @@ -5,9 +5,9 @@ blue=0 color=string.char(green, red, blue) color1=string.char(tonumber(green2*0.8), red, blue) -color2=string.char(tonumber(green2*0.6), red, blue) -color3=string.char(tonumber(green2*0.4), red, blue) -color4=string.char(tonumber(green2*0.2), red, blue) +color2=string.char(tonumber(green2*0.8), red, blue) +color3=string.char(tonumber(green2*0.8), red, blue) +color4=string.char(tonumber(green2*0.8), red, blue) colorBg=string.char(0,0,0) -- black is the default background color sntpserverhostname="ptbtime1.ptb.de" From 83934efeaa9593de1c669ef5dac054a3f0a8a1c1 Mon Sep 17 00:00:00 2001 From: C3MA Date: Wed, 2 May 2018 19:52:08 +0200 Subject: [PATCH 027/151] Removed the coloring from the code --- displayword.lua | 148 ++++++++++-------------------------------------- 1 file changed, 31 insertions(+), 117 deletions(-) diff --git a/displayword.lua b/displayword.lua index a9722fd..129d0a7 100644 --- a/displayword.lua +++ b/displayword.lua @@ -1,235 +1,146 @@ --- Module filling a buffer, sent to the LEDs - -function updateColor(data, inverseRow, characters2draw) - if (inverseRow == nil) then - inverseRow=false - end - -- special case, and there are exactly 4 words to display (so each word for each minute) - if (data.amountWords == 4) then - print ("Amount words are " .. tostring(data.amountWords)) - if (data.words.min1 == 1 and data.drawnWords == 0) then - print "Color1" - return data.colorMin1 - elseif (data.words.min2 == 1 and data.drawnWords == 1) then - print "Color2" - return data.colorMin2 - elseif (data.words.min3 == 1 and data.drawnWords == 2) then - print "Color3" - return data.colorMin3 - elseif (data.words.min4 == 1 and data.drawnWords == 3) then - print "Color4" - return data.colorMin4 - else - print "Color default" - return data.colorFg - end - else -- we must do some magic calculation FIXME the magic should be improved - if (not inverseRow) then -- nomral row - if (data.drawnCharacters < data.charsPerMinute) then - if (data.words.min1 == 1 or data.words.min2 == 1 or data.words.min3 == 1 or data.words.min4 == 1) then - return data.colorMin1 - else - return data.colorFg - end - elseif (data.drawnCharacters < data.charsPerMinute*2) then - if (data.words.min2 == 1 or data.words.min3 == 1 or data.words.min4 == 1) then - return data.colorMin2 - else - return data.colorFg - end - elseif (data.drawnCharacters < data.charsPerMinute*3) then - if (data.words.min3 == 1 or data.words.min4 == 1) then - return data.colorMin3 - else - return data.colorFg - end - elseif (data.drawnCharacters > data.charsPerMinute*3) then - if (data.words.min4 == 1) then - return data.colorMin4 - else - return data.colorFg - end - else - return data.colorFg - end - else -- inverse row - --FIXME magic missing - return data.colorFg - end - end -end - -function drawLEDs(data, numberNewChars, inverseRow) - if (inverseRow == nil) then - inverseRow=false - end - print("charactes " .. tostring(data.charsPerMinute) .. " per minute; " .. tonumber(data.drawnCharacters) .. " used characters") - local tmpBuf=nil - for i=1,numberNewChars do - if (tmpBuf == nil) then - tmpBuf = updateColor(data, inverseRow, numberNewChars) - else - tmpBuf=tmpBuf .. updateColor(data, inverseRow, numberNewChars) - end - data.drawnCharacters=data.drawnCharacters+1 - end - data.drawnWords=data.drawnWords+1 - return tmpBuf -end -- Module displaying of the words function generateLEDs(words, colorFg, colorMin1, colorMin2, colorMin3, colorMin4, characters) -- Set the local variables needed for the colored progress bar - data={} - data.charsPerMinute=math.floor(characters/4) -- devide by three (Minute 1 to Minute 3, Minute 4 takes the last chars) - data.words=words - data.colorFg=colorFg - data.colorMin1=colorMin1 - data.colorMin2=colorMin2 - data.colorMin3=colorMin3 - data.colorMin4=colorMin4 - data.drawnCharacters=0 - data.drawnWords=0 - data.amountWords=display_countwords_de(words) + local charsPerMinute=math.floor(characters/5) + -- Space / background has no color by default local space=string.char(0,0,0) - -- update the background color, if set - if (colorBg ~= nil) then - space = colorBg - end + -- set FG to fix value: + colorFg = string.char(128,128,128) -- Set the foreground color as the default color local buf=colorFg -- line 1---------------------------------------------- if (words.it==1) then - buf=drawLEDs(data,2) -- ES + buf=colorFg:rep(2) -- ES else buf=space:rep(2) end -- K fill character buf=buf .. space:rep(1) if (words.is == 1) then - buf=buf .. drawLEDs(data,3) -- IST + buf=buf .. colorFg:rep(3) -- IST else buf=buf .. space:rep(3) end -- L fill character buf=buf .. space:rep(1) if (words.fiveMin== 1) then - buf= buf .. drawLEDs(data,4) -- FUENF + buf= buf .. colorFg:rep(4) -- FUENF else buf= buf .. space:rep(4) end -- line 2-- even row (so inverted) -------------------- if (words.twenty == 1) then - buf= buf .. drawLEDs(data,7,true) -- ZWANZIG + buf= buf .. colorFg:rep(7,true) -- ZWANZIG else buf= buf .. space:rep(7) end if (words.tenMin == 1) then - buf= buf .. drawLEDs(data,4,true) -- ZEHN + buf= buf .. colorFg:rep(4,true) -- ZEHN else buf= buf .. space:rep(4) end -- line3---------------------------------------------- if (words.threequater == 1) then - buf= buf .. drawLEDs(data,11) -- Dreiviertel + buf= buf .. colorFg:rep(11) -- Dreiviertel elseif (words.quater == 1) then buf= buf .. space:rep(4) - buf= buf .. drawLEDs(data,7) -- VIERTEL + buf= buf .. colorFg:rep(7) -- VIERTEL else buf= buf .. space:rep(11) end --line 4-------- even row (so inverted) ------------- if (words.before == 1) then buf=buf .. space:rep(2) - buf= buf .. drawLEDs(data,3,true) -- VOR + buf= buf .. colorFg:rep(3,true) -- VOR else buf= buf .. space:rep(5) end if (words.after == 1) then - buf= buf .. drawLEDs(data,4,true) -- NACH + buf= buf .. colorFg:rep(4,true) -- NACH buf= buf .. space:rep(2) -- TG else buf= buf .. space:rep(6) end ------------------------------------------------ if (words.half == 1) then - buf= buf .. drawLEDs(data,4) -- HALB + buf= buf .. colorFg:rep(4) -- HALB buf= buf .. space:rep(1) -- X else buf= buf .. space:rep(5) end if (words.twelve == 1) then - buf= buf .. drawLEDs(data,5) -- ZWOELF + buf= buf .. colorFg:rep(5) -- ZWOELF buf= buf .. space:rep(1) -- P else buf= buf .. space:rep(6) end ------------even row (so inverted) --------------------- if (words.seven == 1) then - buf= buf .. drawLEDs(data,6,true) -- SIEBEN + buf= buf .. colorFg:rep(6,true) -- SIEBEN buf= buf .. space:rep(5) elseif (words.oneLong == 1) then buf= buf .. space:rep(5) - buf= buf .. drawLEDs(data,4,true) -- EINS + buf= buf .. colorFg:rep(4,true) -- EINS buf= buf .. space:rep(2) elseif (words.one == 1) then buf= buf .. space:rep(6) - buf= buf .. drawLEDs(data,3,true) -- EIN + buf= buf .. colorFg:rep(3,true) -- EIN buf= buf .. space:rep(2) elseif (words.two == 1) then buf= buf .. space:rep(7) - buf= buf .. drawLEDs(data,4,true) -- ZWEI + buf= buf .. colorFg:rep(4,true) -- ZWEI else buf= buf .. space:rep(11) end ------------------------------------------------ if (words.three == 1) then buf= buf .. space:rep(1) - buf= buf .. drawLEDs(data,4) -- DREI + buf= buf .. colorFg:rep(4) -- DREI buf= buf .. space:rep(6) elseif (words.five == 1) then buf= buf .. space:rep(7) - buf= buf .. drawLEDs(data,4) -- FUENF + buf= buf .. colorFg:rep(4) -- FUENF else buf= buf .. space:rep(11) end ------------even row (so inverted) --------------------- if (words.four == 1) then - buf= buf .. drawLEDs(data,4,true) -- VIER + buf= buf .. colorFg:rep(4,true) -- VIER buf= buf .. space:rep(7) elseif (words.nine == 1) then buf= buf .. space:rep(4) - buf= buf .. drawLEDs(data,4,true) -- NEUN + buf= buf .. colorFg:rep(4,true) -- NEUN buf= buf .. space:rep(3) elseif (words.eleven == 1) then buf= buf .. space:rep(8) - buf= buf .. drawLEDs(data,3,true) -- ELEVEN + buf= buf .. colorFg:rep(3,true) -- ELEVEN else buf= buf .. space:rep(11) end ------------------------------------------------ if (words.eight == 1) then buf= buf .. space:rep(1) - buf= buf .. drawLEDs(data,4) -- ACHT + buf= buf .. colorFg:rep(4) -- ACHT buf= buf .. space:rep(6) elseif (words.ten == 1) then buf= buf .. space:rep(5) - buf= buf .. drawLEDs(data,4) -- ZEHN + buf= buf .. colorFg:rep(4) -- ZEHN buf= buf .. space:rep(2) else buf= buf .. space:rep(11) end ------------even row (so inverted) --------------------- if (words.clock == 1) then - buf= buf .. drawLEDs(data,3,true) -- UHR + buf= buf .. colorFg:rep(3,true) -- UHR else buf= buf .. space:rep(3) end if (words.six == 1) then buf= buf .. space:rep(2) - buf= buf .. drawLEDs(data,5,true) -- SECHS + buf= buf .. colorFg:rep(5,true) -- SECHS buf= buf .. space:rep(1) else buf= buf .. space:rep(8) @@ -256,5 +167,8 @@ if (words.fiveMin== 1) then buf= buf .. space:rep(1) end collectgarbage() + + --FIXME function to set some color to the LEDs + return buf end From c9924f4a22e29be278f102fc8dc92ec82c314013 Mon Sep 17 00:00:00 2001 From: C3MA Date: Wed, 2 May 2018 20:40:20 +0200 Subject: [PATCH 028/151] Color and characters seperated --- displayword.lua | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/displayword.lua b/displayword.lua index 129d0a7..2c1fa5c 100644 --- a/displayword.lua +++ b/displayword.lua @@ -1,12 +1,13 @@ -- Module displaying of the words -function generateLEDs(words, colorFg, colorMin1, colorMin2, colorMin3, colorMin4, characters) +function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4, characters) -- Set the local variables needed for the colored progress bar local charsPerMinute=math.floor(characters/5) + local charsPerLine=11 -- Space / background has no color by default local space=string.char(0,0,0) -- set FG to fix value: - colorFg = string.char(128,128,128) + colorFg = string.char(255,255,255) -- Set the foreground color as the default color local buf=colorFg @@ -168,7 +169,25 @@ if (words.fiveMin== 1) then end collectgarbage() - --FIXME function to set some color to the LEDs + local bufColored = string.char() + --function to set some color to the LEDs + for x=0,9 do + for y=0, (charsPerLine-1) do + local start = ((x * charsPerLine) + y)*3 + 1 + item=string.byte(buf, start) + -- Color + if (item > 0) then + bufColored = bufColored .. colorForground + else + -- update the background color, if set + if (colorBg ~= nil) then + bufColored = bufColored .. colorBg + end + end + print (x .. "x" .. y .. " : " .. start .. " color " .. tostring(item) .. " len " .. string.len(buf)) + end + end + collectgarbage() - return buf + return bufColored end From 3f8abd30bfe21acb279cc6375b219c25bd50ecd1 Mon Sep 17 00:00:00 2001 From: C3MA Date: Wed, 2 May 2018 21:03:43 +0200 Subject: [PATCH 029/151] Handle 4 words differently --- displayword.lua | 35 +++++++++++++++++++++++++++++++++-- simulation/config.lua | 6 +++--- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/displayword.lua b/displayword.lua index 2c1fa5c..d69babb 100644 --- a/displayword.lua +++ b/displayword.lua @@ -171,14 +171,45 @@ if (words.fiveMin== 1) then local bufColored = string.char() --function to set some color to the LEDs + local word=0 + local firstCharAfterSpace=true for x=0,9 do for y=0, (charsPerLine-1) do local start = ((x * charsPerLine) + y)*3 + 1 item=string.byte(buf, start) - -- Color + -- Color the visible words if (item > 0) then - bufColored = bufColored .. colorForground + if (firstCharAfterSpace == true) then + word = word + 1 + end + firstCharAfterSpace=false + if (characters == 4) then -- we have a word for each minute to color differently + if (words.min4 == 1 and word == 4) then + bufColored = bufColored .. colorMin4 + elseif (words.min3 == 1 and word == 3) then + bufColored = bufColored .. colorMin3 + elseif (words.min2 == 1 and word == 2) then + bufColored = bufColored .. colorMin2 + elseif (words.min1 == 1 and word == 1) then + bufColored = bufColored .. colorMin1 + else + bufColored = bufColored .. colorForground + end + else -- FIXME some more magic should be added here + if (words.min4 == 1) then + bufColored = bufColored .. colorMin4 + elseif (words.min3 == 1) then + bufColored = bufColored .. colorMin3 + elseif (words.min2 == 1) then + bufColored = bufColored .. colorMin2 + elseif (words.min1 == 1) then + bufColored = bufColored .. colorMin1 + else + bufColored = bufColored .. colorForground + end + end else + firstCharAfterSpace=true -- update the background color, if set if (colorBg ~= nil) then bufColored = bufColored .. colorBg diff --git a/simulation/config.lua b/simulation/config.lua index ed91742..ece2ce3 100644 --- a/simulation/config.lua +++ b/simulation/config.lua @@ -4,9 +4,9 @@ red=128 blue=0 color=string.char(green, red, blue) -color1=string.char(tonumber(green2*0.8), red, blue) -color2=string.char(tonumber(green2*0.8), red, blue) -color3=string.char(tonumber(green2*0.8), red, blue) +color1=string.char(tonumber(green2*0.2), red, blue) +color2=string.char(tonumber(green2*0.4), red, blue) +color3=string.char(tonumber(green2*0.6), red, blue) color4=string.char(tonumber(green2*0.8), red, blue) colorBg=string.char(0,0,0) -- black is the default background color From 08b0a9372ba32b7fa300ffd82a844983508af1c1 Mon Sep 17 00:00:00 2001 From: C3MA Date: Wed, 2 May 2018 21:13:44 +0200 Subject: [PATCH 030/151] Include current word into debug line --- displayword.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/displayword.lua b/displayword.lua index d69babb..f1ba630 100644 --- a/displayword.lua +++ b/displayword.lua @@ -215,7 +215,7 @@ if (words.fiveMin== 1) then bufColored = bufColored .. colorBg end end - print (x .. "x" .. y .. " : " .. start .. " color " .. tostring(item) .. " len " .. string.len(buf)) + print (x .. "x" .. y .. " : " .. start .. " color " .. tostring(item) .. " len " .. string.len(buf) .. " word " .. tostring(word)) end end collectgarbage() From 8b3e61be611755c87d33747d98e26be553cf4a2e Mon Sep 17 00:00:00 2001 From: Florian Zahn Date: Sun, 23 Dec 2018 21:53:25 +0100 Subject: [PATCH 031/151] for new nodemcu-firmware release 2.2.x --- main.lua | 1 - os/esptool.py | 1388 ++++++++++++----- os/flash.sh | 5 +- ...,sntp,spi,tmr,uart,wifi,ws2812-integer.bin | Bin 422943 -> 0 bytes os/nodemcu2.bin | Bin 0 -> 458752 bytes tools/initialFlash.sh | 9 +- webserver.lua | 4 +- 7 files changed, 1020 insertions(+), 387 deletions(-) delete mode 100644 os/nodemcu-master-bit,enduser_setup,file,gpio,node,rtcfifo,rtcmem,rtctime,sntp,spi,tmr,uart,wifi,ws2812-integer.bin create mode 100644 os/nodemcu2.bin diff --git a/main.lua b/main.lua index 1eb98a9..965268d 100644 --- a/main.lua +++ b/main.lua @@ -115,7 +115,6 @@ function normalOperation() mydofile("webserver") startWebServer() end) - displayTime() -- Start the time Thread tmr.alarm(1, 20000, 1 ,function() diff --git a/os/esptool.py b/os/esptool.py index 93ab071..38ffb72 100755 --- a/os/esptool.py +++ b/os/esptool.py @@ -1,15 +1,16 @@ #!/usr/bin/env python +# NB: Before sending a PR to change the above line to '#!/usr/bin/env python2', please read https://github.com/themadinventor/esptool/issues/21 # # ESP8266 ROM Bootloader Utility # https://github.com/themadinventor/esptool # -# Copyright (C) 2014 Fredrik Ahlberg +# Copyright (C) 2014-2016 Fredrik Ahlberg, Angus Gratton, other contributors as noted. # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but WITHOUT +# +# This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. # @@ -17,17 +18,23 @@ # this program; if not, write to the Free Software Foundation, Inc., 51 Franklin # Street, Fifth Floor, Boston, MA 02110-1301 USA. -import sys -import struct -import serial -import math -import time import argparse +import hashlib +import inspect +import json import os +import serial +import struct import subprocess +import sys +import tempfile +import time -class ESPROM: +__version__ = "1.2-dev" + + +class ESPROM(object): # These are the currently known commands supported by the ROM ESP_FLASH_BEGIN = 0x02 ESP_FLASH_DATA = 0x03 @@ -55,72 +62,64 @@ class ESPROM: # OTP ROM addresses ESP_OTP_MAC0 = 0x3ff00050 ESP_OTP_MAC1 = 0x3ff00054 + ESP_OTP_MAC3 = 0x3ff0005c - # Sflash stub: an assembly routine to read from spi flash and send to host - SFLASH_STUB = "\x80\x3c\x00\x40\x1c\x4b\x00\x40\x21\x11\x00\x40\x00\x80" \ - "\xfe\x3f\xc1\xfb\xff\xd1\xf8\xff\x2d\x0d\x31\xfd\xff\x41\xf7\xff\x4a" \ - "\xdd\x51\xf9\xff\xc0\x05\x00\x21\xf9\xff\x31\xf3\xff\x41\xf5\xff\xc0" \ - "\x04\x00\x0b\xcc\x56\xec\xfd\x06\xff\xff\x00\x00" + # Flash sector size, minimum unit of erase. + ESP_FLASH_SECTOR = 0x1000 - def __init__(self, port = 0, baud = ESP_ROM_BAUD): - self._port = serial.Serial(port, baud) + def __init__(self, port=0, baud=ESP_ROM_BAUD): + self._port = serial.Serial(port) + self._slip_reader = slip_reader(port) + # setting baud rate in a separate step is a workaround for + # CH341 driver on some Linux versions (this opens at 9600 then + # sets), shouldn't matter for other platforms/drivers. See + # https://github.com/themadinventor/esptool/issues/44#issuecomment-107094446 + self._port.baudrate = baud - """ Read bytes from the serial port while performing SLIP unescaping """ - def read(self, length = 1): - b = '' - while len(b) < length: - c = self._port.read(1) - if c == '\xdb': - c = self._port.read(1) - if c == '\xdc': - b = b + '\xc0' - elif c == '\xdd': - b = b + '\xdb' - else: - raise Exception('Invalid SLIP escape') - else: - b = b + c - return b + """ Read a SLIP packet from the serial port """ + def read(self): + return self._slip_reader.next() """ Write bytes to the serial port while performing SLIP escaping """ def write(self, packet): - buf = '\xc0'+(packet.replace('\xdb','\xdb\xdd').replace('\xc0','\xdb\xdc'))+'\xc0' + buf = '\xc0' \ + + (packet.replace('\xdb','\xdb\xdd').replace('\xc0','\xdb\xdc')) \ + + '\xc0' self._port.write(buf) """ Calculate checksum of a blob, as it is defined by the ROM """ @staticmethod - def checksum(data, state = ESP_CHECKSUM_MAGIC): + def checksum(data, state=ESP_CHECKSUM_MAGIC): for b in data: state ^= ord(b) return state """ Send a request and read the response """ - def command(self, op = None, data = None, chk = 0): - if op: - # Construct and send request + def command(self, op=None, data=None, chk=0): + if op is not None: pkt = struct.pack('> 16) & 0xff) == 0: + mac0 = self.read_reg(self.ESP_OTP_MAC0) + mac1 = self.read_reg(self.ESP_OTP_MAC1) + mac3 = self.read_reg(self.ESP_OTP_MAC3) + if (mac3 != 0): + oui = ((mac3 >> 16) & 0xff, (mac3 >> 8) & 0xff, mac3 & 0xff) + elif ((mac1 >> 16) & 0xff) == 0: oui = (0x18, 0xfe, 0x34) elif ((mac1 >> 16) & 0xff) == 1: oui = (0xac, 0xd0, 0x74) else: - raise Exception("Unknown OUI") + raise FatalError("Unknown OUI") return oui + ((mac1 >> 8) & 0xff, mac1 & 0xff, (mac0 >> 24) & 0xff) + """ Read Chip ID from OTP ROM - see http://esp8266-re.foogod.com/wiki/System_get_chip_id_%28IoT_RTOS_SDK_0.9.9%29 """ + def chip_id(self): + id0 = self.read_reg(self.ESP_OTP_MAC0) + id1 = self.read_reg(self.ESP_OTP_MAC1) + return (id0 >> 24) | ((id1 & 0xffffff) << 8) + """ Read SPI flash manufacturer and device id """ def flash_id(self): self.flash_begin(0, 0) self.write_reg(0x60000240, 0x0, 0xffffffff) self.write_reg(0x60000200, 0x10000000, 0xffffffff) - flash_id = esp.read_reg(0x60000240) + flash_id = self.read_reg(0x60000240) self.flash_finish(False) return flash_id - """ Read SPI flash """ - def flash_read(self, offset, size, count = 1): - # Create a custom stub - stub = struct.pack(' 16: - raise Exception('Invalid firmware image') - - for i in xrange(segments): - (offset, size) = struct.unpack(' 0x40200000 or offset < 0x3ffe0000 or size > 65536: - raise Exception('Suspicious segment %x,%d' % (offset, size)) - self.segments.append((offset, size, f.read(size))) - - # Skip the padding. The checksum is stored in the last byte so that the - # file is a multiple of 16 bytes. - align = 15-(f.tell() % 16) - f.seek(align, 1) - - self.checksum = ord(f.read(1)) - - def add_segment(self, addr, data): + def add_segment(self, addr, data, pad_to=4): + """ Add a segment to the image, with specified address & data + (padded to a boundary of pad_to size) """ # Data should be aligned on word boundary l = len(data) - if l % 4: - data += b"\x00" * (4 - l % 4) - self.segments.append((addr, len(data), data)) + if l % pad_to: + data += b"\x00" * (pad_to - l % pad_to) + if l > 0: + self.segments.append((addr, len(data), data)) - def save(self, filename): - f = file(filename, 'wb') - f.write(struct.pack(' 0x40200000 or offset < 0x3ffe0000 or size > 65536: + raise FatalError('Suspicious segment 0x%x, length %d' % (offset, size)) + segment_data = f.read(size) + if len(segment_data) < size: + raise FatalError('End of file reading segment 0x%x, length %d (actual length %d)' % (offset, size, len(segment_data))) + segment = (offset, size, segment_data) + self.segments.append(segment) + return segment - checksum = ESPROM.ESP_CHECKSUM_MAGIC - for (offset, size, data) in self.segments: - f.write(struct.pack(' 16: + raise FatalError('Invalid firmware image magic=%d segments=%d' % (magic, segments)) + + for i in xrange(segments): + self.load_segment(load_file) + self.checksum = self.read_checksum(load_file) + + def save(self, filename): + with open(filename, 'wb') as f: + self.write_v1_header(f, self.segments) + checksum = ESPROM.ESP_CHECKSUM_MAGIC + for segment in self.segments: + checksum = self.save_segment(f, segment, checksum) + self.append_checksum(f, checksum) + + +class OTAFirmwareImage(BaseFirmwareImage): + """ 'Version 2' firmware image, segments loaded by software bootloader stub + (ie Espressif bootloader or rboot) + """ + def __init__(self, load_file=None): + super(OTAFirmwareImage, self).__init__() + self.version = 2 + if load_file is not None: + (magic, segments, first_flash_mode, first_flash_size_freq, first_entrypoint) = struct.unpack(' 16: + raise FatalError('Invalid V2 second header magic=%d segments=%d' % (magic, segments)) + + # load all the usual segments + for _ in xrange(segments): + self.load_segment(load_file) + self.checksum = self.read_checksum(load_file) + + def save(self, filename): + with open(filename, 'wb') as f: + # Save first header for irom0 segment + f.write(struct.pack(' 0: + esp._port.baudrate = baud_rate + # Read the greeting. + p = esp.read() + if p != 'OHAI': + raise FatalError('Failed to connect to the flasher (got %s)' % hexify(p)) + + def flash_write(self, addr, data, show_progress=False): + assert addr % self._esp.ESP_FLASH_SECTOR == 0, 'Address must be sector-aligned' + assert len(data) % self._esp.ESP_FLASH_SECTOR == 0, 'Length must be sector-aligned' + sys.stdout.write('Writing %d @ 0x%x... ' % (len(data), addr)) + sys.stdout.flush() + self._esp.write(struct.pack(' length: + raise FatalError('Read more than expected') + p = self._esp.read() + if len(p) != 16: + raise FatalError('Expected digest, got: %s' % hexify(p)) + expected_digest = hexify(p).upper() + digest = hashlib.md5(data).hexdigest().upper() + print + if digest != expected_digest: + raise FatalError('Digest mismatch: expected %s, got %s' % (expected_digest, digest)) + p = self._esp.read() + if len(p) != 1: + raise FatalError('Expected status, got: %s' % hexify(p)) + status_code = struct.unpack(', ) or a single +# argument. + +def load_ram(esp, args): + image = LoadFirmwareImage(args.filename) + + print 'RAM boot...' + for (offset, size, data) in image.segments: + print 'Downloading %d bytes at %08x...' % (size, offset), + sys.stdout.flush() + esp.mem_begin(size, div_roundup(size, esp.ESP_RAM_BLOCK), esp.ESP_RAM_BLOCK, offset) + + seq = 0 + while len(data) > 0: + esp.mem_block(data[0:esp.ESP_RAM_BLOCK], seq) + data = data[esp.ESP_RAM_BLOCK:] + seq += 1 + print 'done!' + + print 'All segments done, executing at %08x' % image.entrypoint + esp.mem_finish(image.entrypoint) + + +def read_mem(esp, args): + print '0x%08x = 0x%08x' % (args.address, esp.read_reg(args.address)) + + +def write_mem(esp, args): + esp.write_reg(args.address, args.value, args.mask, 0) + print 'Wrote %08x, mask %08x to %08x' % (args.value, args.mask, args.address) + + +def dump_mem(esp, args): + f = file(args.filename, 'wb') + for i in xrange(args.size / 4): + d = esp.read_reg(args.address + (i * 4)) + f.write(struct.pack('> 8) & 0xff, (flash_id >> 16) & 0xff) + + +def read_flash(esp, args): + flasher = CesantaFlasher(esp, args.baud) + t = time.time() + data = flasher.flash_read(args.address, args.size, not args.no_progress) + t = time.time() - t + print ('\rRead %d bytes at 0x%x in %.1f seconds (%.1f kbit/s)...' + % (len(data), args.address, t, len(data) / t * 8 / 1000)) + file(args.filename, 'wb').write(data) + + +def _verify_flash(flasher, args, flash_params=None): + differences = False + for address, argfile in args.addr_filename: + image = argfile.read() + argfile.seek(0) # rewind in case we need it again + if address == 0 and image[0] == '\xe9' and flash_params is not None: + image = image[0:2] + flash_params + image[4:] + image_size = len(image) + print 'Verifying 0x%x (%d) bytes @ 0x%08x in flash against %s...' % (image_size, image_size, address, argfile.name) + # Try digest first, only read if there are differences. + digest, _ = flasher.flash_digest(address, image_size) + digest = hexify(digest).upper() + expected_digest = hashlib.md5(image).hexdigest().upper() + if digest == expected_digest: + print '-- verify OK (digest matched)' + continue + else: + differences = True + if getattr(args, 'diff', 'no') != 'yes': + print '-- verify FAILED (digest mismatch)' + continue + + flash = flasher.flash_read(address, image_size) + assert flash != image + diff = [i for i in xrange(image_size) if flash[i] != image[i]] + print '-- verify FAILED: %d differences, first @ 0x%08x' % (len(diff), address + diff[0]) + for d in diff: + print ' %08x %02x %02x' % (address + d, ord(flash[d]), ord(image[d])) + if differences: + raise FatalError("Verify failed.") + + +def verify_flash(esp, args, flash_params=None): + flasher = CesantaFlasher(esp) + _verify_flash(flasher, args, flash_params) + + +def version(args): + print __version__ + +# +# End of operations functions +# + + +def main(): + parser = argparse.ArgumentParser(description='esptool.py v%s - ESP8266 ROM Bootloader Utility' % __version__, prog='esptool') parser.add_argument( - '--port', '-p', - help = 'Serial port device', - default = '/dev/ttyUSB0') + '--port', '-p', + help='Serial port device', + default=os.environ.get('ESPTOOL_PORT', '/dev/ttyUSB0')) parser.add_argument( - '--baud', '-b', - help = 'Serial port baud rate', - type = arg_auto_int, - default = ESPROM.ESP_ROM_BAUD) + '--baud', '-b', + help='Serial port baud rate used when flashing/reading', + type=arg_auto_int, + default=os.environ.get('ESPTOOL_BAUD', ESPROM.ESP_ROM_BAUD)) subparsers = parser.add_subparsers( - dest = 'operation', - help = 'Run esptool {command} -h for additional help') + dest='operation', + help='Run esptool {command} -h for additional help') parser_load_ram = subparsers.add_parser( - 'load_ram', - help = 'Download an image to RAM and execute') - parser_load_ram.add_argument('filename', help = 'Firmware image') + 'load_ram', + help='Download an image to RAM and execute') + parser_load_ram.add_argument('filename', help='Firmware image') parser_dump_mem = subparsers.add_parser( - 'dump_mem', - help = 'Dump arbitrary memory to disk') - parser_dump_mem.add_argument('address', help = 'Base address', type = arg_auto_int) - parser_dump_mem.add_argument('size', help = 'Size of region to dump', type = arg_auto_int) - parser_dump_mem.add_argument('filename', help = 'Name of binary dump') + 'dump_mem', + help='Dump arbitrary memory to disk') + parser_dump_mem.add_argument('address', help='Base address', type=arg_auto_int) + parser_dump_mem.add_argument('size', help='Size of region to dump', type=arg_auto_int) + parser_dump_mem.add_argument('filename', help='Name of binary dump') parser_read_mem = subparsers.add_parser( - 'read_mem', - help = 'Read arbitrary memory location') - parser_read_mem.add_argument('address', help = 'Address to read', type = arg_auto_int) + 'read_mem', + help='Read arbitrary memory location') + parser_read_mem.add_argument('address', help='Address to read', type=arg_auto_int) parser_write_mem = subparsers.add_parser( - 'write_mem', - help = 'Read-modify-write to arbitrary memory location') - parser_write_mem.add_argument('address', help = 'Address to write', type = arg_auto_int) - parser_write_mem.add_argument('value', help = 'Value', type = arg_auto_int) - parser_write_mem.add_argument('mask', help = 'Mask of bits to write', type = arg_auto_int) + 'write_mem', + help='Read-modify-write to arbitrary memory location') + parser_write_mem.add_argument('address', help='Address to write', type=arg_auto_int) + parser_write_mem.add_argument('value', help='Value', type=arg_auto_int) + parser_write_mem.add_argument('mask', help='Mask of bits to write', type=arg_auto_int) + + def add_spi_flash_subparsers(parent): + """ Add common parser arguments for SPI flash properties """ + parent.add_argument('--flash_freq', '-ff', help='SPI Flash frequency', + choices=['40m', '26m', '20m', '80m'], + default=os.environ.get('ESPTOOL_FF', '40m')) + parent.add_argument('--flash_mode', '-fm', help='SPI Flash mode', + choices=['qio', 'qout', 'dio', 'dout'], + default=os.environ.get('ESPTOOL_FM', 'qio')) + parent.add_argument('--flash_size', '-fs', help='SPI Flash size in Mbit', type=str.lower, + choices=['4m', '2m', '8m', '16m', '32m', '16m-c1', '32m-c1', '32m-c2', '64m', '128m'], + default=os.environ.get('ESPTOOL_FS', '4m')) parser_write_flash = subparsers.add_parser( - 'write_flash', - help = 'Write a binary blob to flash') - parser_write_flash.add_argument('addr_filename', nargs = '+', help = 'Address and binary file to write there, separated by space') - parser_write_flash.add_argument('--flash_freq', '-ff', help = 'SPI Flash frequency', - choices = ['40m', '26m', '20m', '80m'], default = '40m') - parser_write_flash.add_argument('--flash_mode', '-fm', help = 'SPI Flash mode', - choices = ['qio', 'qout', 'dio', 'dout'], default = 'qio') - parser_write_flash.add_argument('--flash_size', '-fs', help = 'SPI Flash size in Mbit', - choices = ['4m', '2m', '8m', '16m', '32m'], default = '4m') + 'write_flash', + help='Write a binary blob to flash') + parser_write_flash.add_argument('addr_filename', metavar='
', help='Address followed by binary filename, separated by space', + action=AddrFilenamePairAction) + add_spi_flash_subparsers(parser_write_flash) + parser_write_flash.add_argument('--no-progress', '-p', help='Suppress progress output', action="store_true") + parser_write_flash.add_argument('--verify', help='Verify just-written data (only necessary if very cautious, data is already CRCed', action='store_true') - parser_run = subparsers.add_parser( - 'run', - help = 'Run application code in flash') + subparsers.add_parser( + 'run', + help='Run application code in flash') parser_image_info = subparsers.add_parser( - 'image_info', - help = 'Dump headers from an application image') - parser_image_info.add_argument('filename', help = 'Image file to parse') + 'image_info', + help='Dump headers from an application image') + parser_image_info.add_argument('filename', help='Image file to parse') parser_make_image = subparsers.add_parser( - 'make_image', - help = 'Create an application image from binary files') - parser_make_image.add_argument('output', help = 'Output image file') - parser_make_image.add_argument('--segfile', '-f', action = 'append', help = 'Segment input file') - parser_make_image.add_argument('--segaddr', '-a', action = 'append', help = 'Segment base address', type = arg_auto_int) - parser_make_image.add_argument('--entrypoint', '-e', help = 'Address of entry point', type = arg_auto_int, default = 0) + 'make_image', + help='Create an application image from binary files') + parser_make_image.add_argument('output', help='Output image file') + parser_make_image.add_argument('--segfile', '-f', action='append', help='Segment input file') + parser_make_image.add_argument('--segaddr', '-a', action='append', help='Segment base address', type=arg_auto_int) + parser_make_image.add_argument('--entrypoint', '-e', help='Address of entry point', type=arg_auto_int, default=0) parser_elf2image = subparsers.add_parser( - 'elf2image', - help = 'Create an application image from ELF file') - parser_elf2image.add_argument('input', help = 'Input ELF file') - parser_elf2image.add_argument('--output', '-o', help = 'Output filename prefix', type = str) - parser_elf2image.add_argument('--flash_freq', '-ff', help = 'SPI Flash frequency', - choices = ['40m', '26m', '20m', '80m'], default = '40m') - parser_elf2image.add_argument('--flash_mode', '-fm', help = 'SPI Flash mode', - choices = ['qio', 'qout', 'dio', 'dout'], default = 'qio') - parser_elf2image.add_argument('--flash_size', '-fs', help = 'SPI Flash size in Mbit', - choices = ['4m', '2m', '8m', '16m', '32m'], default = '4m') + 'elf2image', + help='Create an application image from ELF file') + parser_elf2image.add_argument('input', help='Input ELF file') + parser_elf2image.add_argument('--output', '-o', help='Output filename prefix (for version 1 image), or filename (for version 2 single image)', type=str) + parser_elf2image.add_argument('--version', '-e', help='Output image version', choices=['1','2'], default='1') + add_spi_flash_subparsers(parser_elf2image) - parser_read_mac = subparsers.add_parser( - 'read_mac', - help = 'Read MAC address from OTP ROM') + subparsers.add_parser( + 'read_mac', + help='Read MAC address from OTP ROM') - parser_flash_id = subparsers.add_parser( - 'flash_id', - help = 'Read SPI flash manufacturer and device ID') + subparsers.add_parser( + 'chip_id', + help='Read Chip ID from OTP ROM') + + subparsers.add_parser( + 'flash_id', + help='Read SPI flash manufacturer and device ID') parser_read_flash = subparsers.add_parser( - 'read_flash', - help = 'Read SPI flash content') - parser_read_flash.add_argument('address', help = 'Start address', type = arg_auto_int) - parser_read_flash.add_argument('size', help = 'Size of region to dump', type = arg_auto_int) - parser_read_flash.add_argument('filename', help = 'Name of binary dump') + 'read_flash', + help='Read SPI flash content') + parser_read_flash.add_argument('address', help='Start address', type=arg_auto_int) + parser_read_flash.add_argument('size', help='Size of region to dump', type=arg_auto_int) + parser_read_flash.add_argument('filename', help='Name of binary dump') + parser_read_flash.add_argument('--no-progress', '-p', help='Suppress progress output', action="store_true") - parser_erase_flash = subparsers.add_parser( - 'erase_flash', - help = 'Perform Chip Erase on SPI flash') + parser_verify_flash = subparsers.add_parser( + 'verify_flash', + help='Verify a binary blob against flash') + parser_verify_flash.add_argument('addr_filename', help='Address and binary file to verify there, separated by space', + action=AddrFilenamePairAction) + parser_verify_flash.add_argument('--diff', '-d', help='Show differences', + choices=['no', 'yes'], default='no') + + subparsers.add_parser( + 'erase_flash', + help='Perform Chip Erase on SPI flash') + + subparsers.add_parser( + 'version', help='Print esptool version') + + # internal sanity check - every operation matches a module function of the same name + for operation in subparsers.choices.keys(): + assert operation in globals(), "%s should be a module function" % operation args = parser.parse_args() - # Create the ESPROM connection object, if needed - esp = None - if args.operation not in ('image_info','make_image','elf2image'): - esp = ESPROM(args.port, args.baud) + print 'esptool.py v%s' % __version__ + + # operation function can take 1 arg (args), 2 args (esp, arg) + # or be a member function of the ESPROM class. + + operation_func = globals()[args.operation] + operation_args,_,_,_ = inspect.getargspec(operation_func) + if operation_args[0] == 'esp': # operation function takes an ESPROM connection object + initial_baud = min(ESPROM.ESP_ROM_BAUD, args.baud) # don't sync faster than the default baud rate + esp = ESPROM(args.port, initial_baud) esp.connect() + operation_func(esp, args) + else: + operation_func(args) - # Do the actual work. Should probably be split into separate functions. - if args.operation == 'load_ram': - image = ESPFirmwareImage(args.filename) - print 'RAM boot...' - for (offset, size, data) in image.segments: - print 'Downloading %d bytes at %08x...' % (size, offset), - sys.stdout.flush() - esp.mem_begin(size, math.ceil(size / float(esp.ESP_RAM_BLOCK)), esp.ESP_RAM_BLOCK, offset) +class AddrFilenamePairAction(argparse.Action): + """ Custom parser class for the address/filename pairs passed as arguments """ + def __init__(self, option_strings, dest, nargs='+', **kwargs): + super(AddrFilenamePairAction, self).__init__(option_strings, dest, nargs, **kwargs) - seq = 0 - while len(data) > 0: - esp.mem_block(data[0:esp.ESP_RAM_BLOCK], seq) - data = data[esp.ESP_RAM_BLOCK:] - seq += 1 - print 'done!' + def __call__(self, parser, namespace, values, option_string=None): + # validate pair arguments + pairs = [] + for i in range(0,len(values),2): + try: + address = int(values[i],0) + except ValueError as e: + raise argparse.ArgumentError(self,'Address "%s" must be a number' % values[i]) + try: + argfile = open(values[i + 1], 'rb') + except IOError as e: + raise argparse.ArgumentError(self, e) + except IndexError: + raise argparse.ArgumentError(self,'Must be pairs of an address and the binary filename to write there') + pairs.append((address, argfile)) + setattr(namespace, self.dest, pairs) - print 'All segments done, executing at %08x' % image.entrypoint - esp.mem_finish(image.entrypoint) +# This is "wrapped" stub_flasher.c, to be loaded using run_stub. +_CESANTA_FLASHER_STUB = """\ +{"code_start": 1074790404, "code": "080000601C000060000000601000006031FCFF71FCFF\ +81FCFFC02000680332D218C020004807404074DCC48608005823C0200098081BA5A9239245005803\ +1B555903582337350129230B446604DFC6F3FF21EEFFC0200069020DF0000000010078480040004A\ +0040B449004012C1F0C921D911E901DD0209312020B4ED033C2C56C2073020B43C3C56420701F5FF\ +C000003C4C569206CD0EEADD860300202C4101F1FFC0000056A204C2DCF0C02DC0CC6CCAE2D1EAFF\ +0606002030F456D3FD86FBFF00002020F501E8FFC00000EC82D0CCC0C02EC0C73DEB2ADC46030020\ +2C4101E1FFC00000DC42C2DCF0C02DC056BCFEC602003C5C8601003C6C4600003C7C08312D0CD811\ +C821E80112C1100DF0000C180000140010400C0000607418000064180000801800008C1800008418\ +0000881800009018000018980040880F0040A80F0040349800404C4A0040740F0040800F0040980F\ +00400099004012C1E091F5FFC961CD0221EFFFE941F9310971D9519011C01A223902E2D1180C0222\ +6E1D21E4FF31E9FF2AF11A332D0F42630001EAFFC00000C030B43C2256A31621E1FF1A2228022030\ +B43C3256B31501ADFFC00000DD023C4256ED1431D6FF4D010C52D90E192E126E0101DDFFC0000021\ +D2FF32A101C020004802303420C0200039022C0201D7FFC00000463300000031CDFF1A333803D023\ +C03199FF27B31ADC7F31CBFF1A3328030198FFC0000056C20E2193FF2ADD060E000031C6FF1A3328\ +030191FFC0000056820DD2DD10460800000021BEFF1A2228029CE231BCFFC020F51A33290331BBFF\ +C02C411A332903C0F0F4222E1D22D204273D9332A3FFC02000280E27B3F721ABFF381E1A2242A400\ +01B5FFC00000381E2D0C42A40001B3FFC0000056120801B2FFC00000C02000280EC2DC0422D2FCC0\ +2000290E01ADFFC00000222E1D22D204226E1D281E22D204E7B204291E860000126E012198FF32A0\ +042A21C54C003198FF222E1D1A33380337B202C6D6FF2C02019FFFC000002191FF318CFF1A223A31\ +019CFFC00000218DFF1C031A22C549000C02060300003C528601003C624600003C72918BFF9A1108\ +71C861D851E841F83112C1200DF00010000068100000581000007010000074100000781000007C10\ +0000801000001C4B0040803C004091FDFF12C1E061F7FFC961E941F9310971D9519011C01A662906\ +21F3FFC2D1101A22390231F2FF0C0F1A33590331EAFFF26C1AED045C2247B3028636002D0C016DFF\ +C0000021E5FF41EAFF2A611A4469040622000021E4FF1A222802F0D2C0D7BE01DD0E31E0FF4D0D1A\ +3328033D0101E2FFC00000561209D03D2010212001DFFFC000004D0D2D0C3D01015DFFC0000041D5\ +FFDAFF1A444804D0648041D2FF1A4462640061D1FF106680622600673F1331D0FF10338028030C43\ +853A002642164613000041CAFF222C1A1A444804202FC047328006F6FF222C1A273F3861C2FF222C\ +1A1A6668066732B921BDFF3D0C1022800148FFC0000021BAFF1C031A2201BFFFC000000C02460300\ +5C3206020000005C424600005C5291B7FF9A110871C861D851E841F83112C1200DF0B0100000C010\ +0000D010000012C1E091FEFFC961D951E9410971F931CD039011C0ED02DD0431A1FF9C1422A06247\ +B302062D0021F4FF1A22490286010021F1FF1A223902219CFF2AF12D0F011FFFC00000461C0022D1\ +10011CFFC0000021E9FFFD0C1A222802C7B20621E6FF1A22F8022D0E3D014D0F0195FFC000008C52\ +22A063C6180000218BFF3D01102280F04F200111FFC00000AC7D22D1103D014D0F010DFFC0000021\ +D6FF32D110102280010EFFC0000021D3FF1C031A220185FFC00000FAEEF0CCC056ACF821CDFF317A\ +FF1A223A310105FFC0000021C9FF1C031A22017CFFC000002D0C91C8FF9A110871C861D851E841F8\ +3112C1200DF0000200600000001040020060FFFFFF0012C1E00C02290131FAFF21FAFF026107C961\ +C02000226300C02000C80320CC10564CFF21F5FFC02000380221F4FF20231029010C432D010163FF\ +C0000008712D0CC86112C1200DF00080FE3F8449004012C1D0C9A109B17CFC22C1110C13C51C0026\ +1202463000220111C24110B68202462B0031F5FF3022A02802A002002D011C03851A0066820A2801\ +32210105A6FF0607003C12C60500000010212032A01085180066A20F2221003811482105B3FF2241\ +10861A004C1206FDFF2D011C03C5160066B20E280138114821583185CFFF06F7FF005C1286F5FF00\ +10212032A01085140066A20D2221003811482105E1FF06EFFF0022A06146EDFF45F0FFC6EBFF0000\ +01D2FFC0000006E9FF000C022241100C1322C110C50F00220111060600000022C1100C13C50E0022\ +011132C2FA303074B6230206C8FF08B1C8A112C1300DF0000000000010404F484149007519031027\ +000000110040A8100040BC0F0040583F0040CC2E00401CE20040D83900408000004021F4FF12C1E0\ +C961C80221F2FF097129010C02D951C91101F4FFC0000001F3FFC00000AC2C22A3E801F2FFC00000\ +21EAFFC031412A233D0C01EFFFC000003D0222A00001EDFFC00000C1E4FF2D0C01E8FFC000002D01\ +32A004450400C5E7FFDD022D0C01E3FFC00000666D1F4B2131DCFF4600004B22C0200048023794F5\ +31D9FFC0200039023DF08601000001DCFFC000000871C861D85112C1200DF000000012C1F0026103\ +01EAFEC00000083112C1100DF000643B004012C1D0E98109B1C9A1D991F97129013911E2A0C001FA\ +FFC00000CD02E792F40C0DE2A0C0F2A0DB860D00000001F4FFC00000204220E71240F7921C226102\ +01EFFFC0000052A0DC482157120952A0DD571205460500004D0C3801DA234242001BDD3811379DC5\ +C6000000000C0DC2A0C001E3FFC00000C792F608B12D0DC8A1D891E881F87112C1300DF00000", "\ +entry": 1074792180, "num_params": 1, "params_start": 1074790400, "data": "FE0510\ +401A0610403B0610405A0610407A061040820610408C0610408C061040", "data_start": 10736\ +43520} +""" - elif args.operation == 'read_mem': - print '0x%08x = 0x%08x' % (args.address, esp.read_reg(args.address)) - - elif args.operation == 'write_mem': - esp.write_reg(args.address, args.value, args.mask, 0) - print 'Wrote %08x, mask %08x to %08x' % (args.value, args.mask, args.address) - - elif args.operation == 'dump_mem': - f = file(args.filename, 'wb') - for i in xrange(args.size/4): - d = esp.read_reg(args.address+(i*4)) - f.write(struct.pack(' 0: - print '\rWriting at 0x%08x... (%d %%)' % (address + seq*esp.ESP_FLASH_BLOCK, 100*(seq+1)/blocks), - sys.stdout.flush() - block = image[0:esp.ESP_FLASH_BLOCK] - # Fix sflash config data - if address == 0 and seq == 0 and block[0] == '\xe9': - block = block[0:2] + flash_info + block[4:] - # Pad the last block - block = block + '\xff' * (esp.ESP_FLASH_BLOCK-len(block)) - esp.flash_block(block, seq) - image = image[esp.ESP_FLASH_BLOCK:] - seq += 1 - print - print '\nLeaving...' - esp.flash_finish(False) - - elif args.operation == 'run': - esp.run() - - elif args.operation == 'image_info': - image = ESPFirmwareImage(args.filename) - print ('Entry point: %08x' % image.entrypoint) if image.entrypoint != 0 else 'Entry point not set' - print '%d segments' % len(image.segments) - print - checksum = ESPROM.ESP_CHECKSUM_MAGIC - for (idx, (offset, size, data)) in enumerate(image.segments): - print 'Segment %d: %5d bytes at %08x' % (idx+1, size, offset) - checksum = ESPROM.checksum(data, checksum) - print - print 'Checksum: %02x (%s)' % (image.checksum, 'valid' if image.checksum == checksum else 'invalid!') - - elif args.operation == 'make_image': - image = ESPFirmwareImage() - if len(args.segfile) == 0: - raise Exception('No segments specified') - if len(args.segfile) != len(args.segaddr): - raise Exception('Number of specified files does not match number of specified addresses') - for (seg, addr) in zip(args.segfile, args.segaddr): - data = file(seg, 'rb').read() - image.add_segment(addr, data) - image.entrypoint = args.entrypoint - image.save(args.output) - - elif args.operation == 'elf2image': - if args.output is None: - args.output = args.input + '-' - e = ELFFile(args.input) - image = ESPFirmwareImage() - image.entrypoint = e.get_symbol_addr("call_user_start") - for section, start in ((".text", "_text_start"), (".data", "_data_start"), (".rodata", "_rodata_start")): - data = e.load_section(section) - image.add_segment(e.get_symbol_addr(start), data) - - image.flash_mode = {'qio':0, 'qout':1, 'dio':2, 'dout': 3}[args.flash_mode] - image.flash_size_freq = {'4m':0x00, '2m':0x10, '8m':0x20, '16m':0x30, '32m':0x40}[args.flash_size] - image.flash_size_freq += {'40m':0, '26m':1, '20m':2, '80m': 0xf}[args.flash_freq] - - image.save(args.output + "0x00000.bin") - data = e.load_section(".irom0.text") - off = e.get_symbol_addr("_irom0_text_start") - 0x40200000 - assert off >= 0 - f = open(args.output + "0x%05x.bin" % off, "wb") - f.write(data) - f.close() - - elif args.operation == 'read_mac': - mac = esp.read_mac() - print 'MAC: %s' % ':'.join(map(lambda x: '%02x'%x, mac)) - - elif args.operation == 'flash_id': - flash_id = esp.flash_id() - print 'Manufacturer: %02x' % (flash_id & 0xff) - print 'Device: %02x%02x' % ((flash_id >> 8) & 0xff, (flash_id >> 16) & 0xff) - - elif args.operation == 'read_flash': - print 'Please wait...' - file(args.filename, 'wb').write(esp.flash_read(args.address, 1024, int(math.ceil(args.size / 1024.)))[:args.size]) - - elif args.operation == 'erase_flash': - esp.flash_erase() +if __name__ == '__main__': + try: + main() + except FatalError as e: + print '\nA fatal error occurred: %s' % e + sys.exit(2) diff --git a/os/flash.sh b/os/flash.sh index c303c23..b79f680 100755 --- a/os/flash.sh +++ b/os/flash.sh @@ -32,5 +32,6 @@ if [ $? -ne 0 ]; then exit 1 fi -#./esptool.py --port /dev/$DEVICE $BAUD write_flash 0x00000 nodemcu-master-enduser_setup,file,gpio,net,node,rtcfifo,rtcmem,rtctime,sntp,spi,tmr,uart,wifi,ws2812-integer.bin -./esptool.py --port /dev/ttyUSB0 $BAUD write_flash 0x00000 0x00000.bin 0x10000 0x10000.bin +./esptool.py --port /dev/$DEVICE $BAUD write_flash -fm dio 0x00000 nodemcu2.bin +# 0x3fc000 esp_init_data_default_v08.bin 0x07e000 blank.bin 0x3fe000 blank.bin +#./esptool.py --port /dev/$DEVICE $BAUD write_flash 0x00000 0x00000.bin 0x10000 0x10000.bin diff --git a/os/nodemcu-master-bit,enduser_setup,file,gpio,node,rtcfifo,rtcmem,rtctime,sntp,spi,tmr,uart,wifi,ws2812-integer.bin b/os/nodemcu-master-bit,enduser_setup,file,gpio,node,rtcfifo,rtcmem,rtctime,sntp,spi,tmr,uart,wifi,ws2812-integer.bin deleted file mode 100644 index c2d781446c1ebd804158f6fc9465ea9ee1e16a04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 422943 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üQdt+%pDRlTv|GorKo%8(0Ow$UBcJBp_ z5k3h}aj?x)Zn@H+1`luRFwTJ&@mah~FUB0H42S`7k%}qclmW=6H;cgApf~FWI{V%%7Kz>K*LkxPz6Y361c>h{ zRA;huve)xS2$XM76anwodN2x-RVrm|5l$%)(=mesd#dQMF%Tnd;>dI2u;fEEjb&Cbh;L*+#>q=z@ zyPzZN>%lhAgCxRO+*ulLmNqyFZ&rvqE7Thsy^wQf@v->O`5rQqq67B|z`fmBVU%@{ z70z>AS!#Ed-koJ|XGOTPBImgBI=Y^BJ9n>e+*p0g=<*gfsp@` zsjx^*tO^xdMq2#eBi@Z_KQSAORa4>L!Dg7gF9J@&#N9r6>I)KDpwRIL(2EmiT&`x@ z;2#q7Aq>ZJ!}6Hor7&v?0~an0zRIAa26;7qP`GWAcaln+IH_skPfEproyH;z;Nsi) zna%LLV)~z%=R@l2`|4j0)QbVwT;R>3ur^%s#DAaQe@@6X3~PCQ_MaX$I@O1bmG#+y z*-cCVYX_sHu+QGp$6Kv0AK($}X+>p&C!}>Xyz`c9EU(<&XzYz?is0OCrQ6LFz8)yC zm?NIM4Gk2iUfasNcoh42dt)m9oRqU=*k*zj)eI3$Cz}?9QT=Un;0^A1ZkYQJrV4pX zUXf}ll#nopp4$Rx_Xv;yV}ndTz${`5afN%J`H5Z>unRWsXslU2yb4_~vQcOrMiZ7` z7t&r2m?N%c!S-p_n@rlI{aQdT?x(}5J3xn} z#_-Bns{0nF>Q*VKQhMt_X%S2NX>8KvGLW?vEnr=cgfceAf}*SY_w@AT8fO2Mt?iPG zdCLAtGBGE{DW@chi@~D!)(Q?s99N*75^uB6E@MI#)7~JFRyrlQWTUv4>klt}VMv^$ znzEzeepS<=pX}UVo-~VJurcT1Ve02>lB#4Q6kzXH)v~1Hmu5y>HA#hKvoV=rVropT z0ny%9#b5*3&jie-GmA3CMKg>qbLJf5KF;Rh`RFfJSg&LHJBlTsOqkShzCV0pUBB(> zDpF}6X>QK2(?qZbjZd+-6LKqnE?B{sA3v=T^8_Z^1WFjNz$d<0Dk zR-q%ph5A!sQuzYis<50tNFBXY92qg*Uib?dY%~jN8%u?14Luv

90VknEV7$WV&K!wBA45304?HV}9zp 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¨y^*4DWEA<5lG@&|gB~`<#EoObHb%_u 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�p0X{H~IP%ZV}Eo1TG+G%^OpEDal+apj5subk|Fi$RNkeZ%mc^BMFzE zRW}OyfDqFn#I^}KhY%MK;>`w)&-@8D1w%Ir4M=Da659krvdR{4+DxxfZNfZ=Y7?Sc1kNGE1cX?#VS?G5AT|1n%h#(Yk>x_Cn$jldTZA}=5FZfmqKV15 zXf$mpWqvLV-K zOn&={s^iVnovx|5(gBYc?DB|4Mlx)jg}B*XwEjUp{Kc5Rs6 zM!~oq*o36f%Gj<8=S*a=QDRr9YqY;7F1<*W7NaWr0a~#T@`7avhy4<_g4^~#SbG=v zrmA#rc&(jF({{H_Z)qU~vo|G8p~WNxDNGAVXw!1jG(cLIDs9A2ucy>9pu>1dlv0(M zlSYtM(G#K~GJa#N4&vx&sJ4RQ3{+8Y#3`r<3Q}sh31q+jwF9W<%=ez}_kJ%wm(5;# zt!F*!S(p8+XFZoB=3ODL8acj#Ji7E0TqVGjLh&+K;U2<;U4YJEm1B~-^E=t)JJel# zB`W%dkKv`qn8W#M|3-g($_dppVz3&7BOZJ)MUe$vF>xx-nX4a2Ybb&jv8$aAIpKh3 zE)W0OBhCt+c=$0bb721z*~MfGy$jA?t%7lch9B3DoolSoFv@5iX{^gK+Ehjt=WB$T z%o^@z`xl?KhDy+C!q_|dIq$pUo8AQuN7^9 z#P0wS+T6Wt=QEyNbK>i{f?SiqU{HF(sqh}@FpReRX7LoeL#d`-Mr7LQaT^YL4WF&c zH0s9AF37K<=UKj~%7U|$lAgTsz%7(dh(qjg_3u5x3-xW4JmD($HF2YiS-6oI4F`$f z7rtTzc(VDq#n3b>$ZbFW!48pgWOu}y!TyTeETWsDM#Pp%=woHjPg&u7i;h#VL&6lU z*gjjNAIlJySeiX1i*-zk)sc&c&4}JiKV&a*+-|g^aE~2bX>qI6?y~W8Hj{6x>oHkm z{|ck%yR2LTzw8aktDe#nM3{eF#of4*~Sq`0<70XR?@_)?)k^A zWz53NAg|WVH!lf~Q@pqcIwSAUhdd}^S+vB&&z|wqkSiVU0yHi&Hq9F5w1g98rocO@(<@c!@w77ct zPA%I^Ye`REn$?*SPhB0&Eo)N4TyfZ$jE|(>sbwm9&eU}umqN^p+sOMF&bWJymaSF$LKJmTQM{%q4fd!dnl!2~~XkOsLmRN#(7uvV?@;i!V00S@^&jOM_iQ zS5}F24-}GK_*KOe;I0rfwr0fn+g-rdU#LJUS4o3HV2qF$*|F2X7d%!7Z1I@*a>~w= zaDlJ|XGmqC3Sz-3h95lQ?0j@W{^q@9sdN_0C``&xteL|c1`c5(eDrkw;f9?M>&D%; zZ{f>&-|g*wf$tF#wq!2|3Q1er^#`|gcAkb5IvD_`%JoyA8T=5P%zm2=mr|(1%|ftt zDE>S|Eph>v({?8#Za~*x&D}S~(E^tF=pM~!{h_$0UUdjOEYht)5?uGZJgaERKA(4; z>2PladiHYxDRw9_xJQ}}S{}DwsM;-baBXQ#3M}ew1@S84!wS_*XwV$A@UDIZbtn>X zwqkl?Z%|j6xn+f!97^>o6mZGxR%rSaNzf+?w6V;fLRq)Kj3Zd6(;QatUPS^NKknUT z?pGv3bkTAsRsOAJW$?Sx99V%@Tu_n19^v4*&Ah{k7P>mkp(*C}Po+et(byWhn$3Hc zw?vxF$C}N9&5*b@hL*Q9ED!iXfo-9{f>1yT1-=gj_Jjh5LV-6zI}#5h?c$FmpHHb# zZB1xUhqkQ_`OI*t*s`_RwP1Bi%W`;B1PZ9UHNo7ld|~~dv^vlhYSW-Gn`?PvF$3M8 z4iquqHL79-YPpISgvOfYf$vwZbR*yVy%}JNn<9Hw*Qii2vcf#D!o2s;YTK^mKm~=- z?k*l>y53m5caJ%;&5TklZL3>kT-qD}3MBBp!8_PyhK9iT`YxXtnA$?kGHS?Ws27>h zwysVaqXhbJjTm*V<#p$q`PTnt{(+(VK z#_50Hkoj=ug28Rtfd$&o0y9vu9WwXNR_v`=zSnlfF`K$)6QJDaYGzZaEVLIo(zCg( zX_d-deBIvVm|F*uBDYuGd z-&*9#C>UbuZt6<0Mum=smdk_OvM1G5(+p$=_h?%%yS6dVGKCst;N&W@j@gN}t;=n$ zGw#{(;n^Bynm#*WtCfu`FsU18M(5GnJ*>9_+sx);%jFDBDqPbJey>IE&sQC@U&S%y zDvnA0vw60?%D5$8{o-`tn@t{LXIR|iK~nij8e&J|1K|kWMGvwMP(GCp_{@hHJ|G8^U4-Taz&GZDTmXGg*6_ybk5q^;9JQ))Ixeb9oEvKcD zujq{|hv!r(=4(1W=O>}Cj3c0ag%~>~K0jxZd*2bMc0T+Al_tgK&;zWVDaX?dGl&BM zL_RtBa8Y$dC~O8^u|6&$!exn0VudaHB-0qHA{#sH)xPXPU$kw}>07^xPDeSp8?nFu z^j#URlZW4xcx_KI&-cG)o#Y-JM|hjd{Bqov337adPd9z<)G)nEZV%;db=J} z&N1>AzJbt&V-I!Q$oH-|AoTy##*?u&5W)+5gycfM14xar{)|y|Bw7a;zTc7Q-wFaPWvRP-T^ z1Itx?P1P{VhYTjymW^?&d})kr<)6Si;dw7;(1iqb5EbKX;nR-!M?37oEOp-!$0ch) z%|xOjqdf17I>hOYB=hl|RpF%ZJxK++sp{^R{@AjIMs``=`(yR#71B_OvL@Mg-F(b# zJC@jwu_*a&~q~_S5h)Lry_wPy*=aiE)n`tyc;q`dac8_*o z8o^-wmbe2+oZoqEsJ1) zMViH+qh)ux+;Zm6TTYW(&f?Ir#(!5DH>bQ|^nF!5KC}ub$R-F%s|6ys)x?^qqBgkk zgCAjEdV(-b(u0!CoI@r2N)kC`T(|bDm}D=O^j2$`vNwe|^NEE@b9x+`tN6kytAva2 za%F$HiVm^ygc+Gzcv`YtiaIvWqctoGQAgovUr#LXKeU8?$Fkaz{iZZvwlcYAX&MI$ zvO(Cw%qb6!j@#R52;LG0p-wj`@19dGCc{$h05*ns2ZTqY-ns*bJmEgDGab`{9%7Ji zwX}vEHu_^NsjyJfG!qb6n9aLic)Ju=Gf5%t%-xN9 zkTuVKQpy?A1mToK;}{~UWYDn>p_mcy6H^IJd>NY!neQ3{EW25Ro6GZ1OpW$CKk@j9 z@TEjAupDeG_6<=!vjLbU`Vf=LT9$1&B+()Ea@ijsCf}VWR%peFRIwsWtQb*Va$x7f z(KU6Ss&F{@OH@NP5u?^@G>8aLLBC>^Foje>PIz;X$iXMZSz(XVd&eiT6Yn(vPBosi z!W}DFGmbEkGkFzz>XH*!lSn)8dm{c0V830D-z$-h;r9~!C1d2hT6ijovkcesRS>&O zyrwse_^gGNQxfQ49fQN6^&`s7SWjcG9W&sxylFJaFO<`aL2_-F2?r80oOOXUwAv6MzZ2FKNYNQ?cWuFYSz#q&i5NFa29%#w~6# z!k3wa4=~*%nGiXbrMxbvUt#f|=z{-`(~>d07~czD#%cNo2?ex270~UyY}DeS?J+wW@`X7FDEBTWk9npj8*(M34rMG_^9{0=mH=Ao<)}5@uY>68bi)ZyA>I6+jB-Xli5` zaNQz`#ABr~#>EjTp@vxV<@a4d^z%cPaRdVCsWSne&E6!M2DIvLVvOe zT)s?#)eim@7koZO7Lgrugzls3Z>>1)I_wp-prZ17_($#2f@PT&Oh})*W$#!t^&RTX+Eqhw)eAHKTr0 zXq`XANCBTNB(Vr#hu5Y6=Y8Cj=Wu2-HFq>=Qwv|Y4U=+QzRu}@<6!OB-SP;cIxh{ zGFa^flHmyy_16{}xM8j~>35{{@5Gm09fPj>QfVTI^KdQWX^!`dMFi1O>zrH@;EG%c zfW+!wGGD6>mjVcyWPe|(vG6w#&tnUDhm!YYXoNnAKFS8;s+}jqO5WN+#1howa5tP7 z2-YTTY7}!|j6u?E#JO3|s0te=u~r*b^j+1TrH6U9iuYy8GOGLJd7)c2L(=4#u!Fs@ zE6cwm1E5@>Bkss8M9&Y^op4iJP+N#XQ6v$@36NvDM{`8C-IFb*5n-^iHAH% zKe#zudgpp=rI0^VX1QuCZWmXR=g3HQl$U7otfa&&+TjkvGiIb{o8EdmVZ*calqRo( zz?qmQ{*;v?jvSN2_P~y;mUkFC*5l%K<#i`IyXQ>Xl@;clzLD^+JeE$qg0)&IPBV$t zcgC`={Ot-ED9B(X4}fIi$E-0$vS@3m%=1|5rhu=iEtH{bs*{268S-e8vdvcq{CL$Aslmb*H#R(W zI~(`J1)lQHg~<~Au?le1_elD1*w)gKXPvoPlgD%Yt|mWe36g0|q$II3u<}8K1>98e z-w<>)P2Tuj)fkDt;dT-Odgc>h3=RMcXkU#CbUFiS6JA6>c9Y1z`Y`M!ymSR4v?W8b zD)_`A&odthSvUc(O0Bb{|63ILPe!4YRT}&MR|=hu{uc_3eP0-g(ry{Au~Lwf2Iu5z z*it1|m#Qnnvq5QSij897rWOBsy{#zv?qQs2`B%k=mlm_GSA7z_La%p(&!V(brWY@{ zYf}!X_4i_0ByPm|g`$z4BaQDFU{u=DX7RhY^3G4&--~huTz`m)Hua8ztvLr1!wJgp zua&`g9_#YLTf%!$x<-a~KB_mv6kv*-ZK%TtOIMr3&!7wCiBr`elO?O^%EZxae?2z3 z6+ho7mKJ^2IuI2jcKUB@+r}dQRrF_zoRb&%4bgwG$e;a~E%7TGptD9|FmAa5W8BYS zoMx!*9Q&_eJapt|F#7(39or(<-vijsD{*GazK@VD{NBsnNg|h{ zcIT-4IZA)6!dbdI2^@dyb)ivz9 z`VMYZ*6M1Ez6Gnoc{-PTxbvAGMU*=r0p-D3l~}73YZagcP+I#}4mv0BAH#)~^t~rp za}>aNY5GTNb$huSm6)TB)4i9cdzY(a9ZBNg$3`4ayg}l{(L_eu>n83TwZRt%Er_^# zCAWt-g5+o}=e&vdgIrS(DnAj=#thXmNqA7&93SOJbdC$oN}_*rVVG#g&OXSPTmwqY?UZTHdkHX1ImPU3Gyh(og z_LAjpJVE|4pFLNdLP&9Z7ZZis5vQn}cC+S$r4sF8KaN-N>f7zbcKgc9&;iPDt8{nV z>UOFsGla#`tRkyIMYphGD=iIGZFap+-}bQm_No<+e<;*QG!z3+TqSt0@oDKM_Kdqx z3$!4ss@ESCs^FiA<<WBs_08j%=R29GDfv~0)_jwkY}Wm7J9hnB3&0>>7PQ@YASJkc+R zlm*0$k=~3EhFp8d7l{pV!bGbA>!775;`tJuzSugz2kbR%bzj}Sh3m|Fb~^`w7yqziEWrnocQ@GGpRK+XfO=J zGn((6pUG~GJm04U?GOr^JJ27PJ=^@-O%tNXRx$2}o=u20pc&iKbO2(gcbyp{? zo_|?{`!I_yEz6pfBEUUY76Yt-q2scFORMKzUYWH;o9WI1djNS5IN`@P2M`IqS{oPq zKCIz=BemA7WMQL3<5{(3AER}4%f_1?j$2bDZQgrn>quD7E=mn9$_*|W8(d@zF3MBC z&Gyj%#x;Z#K^j0JdDt_N%t$VzLF9o!K4`g66`y+C9!|?X{D&WR3&)b76)+)9m%#Jf zz8#l_FbhUu7Ieoc4OTV_#7I#fm_E{*J|eK*-sQVG3uZW!m<4MyxYn^~o6Q1@-Z|}c zM~~)g`D6rU!A5O*-0M0vXbNj}uC;oswb~fY$qrVh!nDebsZpJ3%_`us#&Om8-s*y2 z*7#ucIBWIzfNdDYT(!{XG-48v(6DWr*7w=SaA?r%8V)VchC_AFZ%A~68ZlwaH)t!; zM*-^d-AtD*W|n!ripfU6I&DmBO+@^v$cohaeM{3)n+WgA`ZLq_ec>hy06y2&>r8VrlXr|@2b}oe;{4#^alyso zgNqAjh?VF&EP1a>E*NPxM)I~@muThnJm0f8zi08dp2g#P78ksp0x#k8aaI&DvX&Nc z>f6Z>_Bbn8_bJqOokrLo(Lb=)x<4fh{Vf-^LTzl#*3fEr0?&n`R{9WohQ4xP%9?Rf z!ziyhH}CQLkpBS7hl8I{aNPUeSh~T(fDEZjqZqfog1syrHJ20L8H-!m6gHhuXIZQc z3`tYO-mx@}WtS$KM)6DD5UGMaS)RQV+f9l`3I8U6i>5w?UCk(m%Be4Nlshq7JU5=H zdg7A2rzWA854)L@-pq=fALU4K`ZDrBH5?IKKOGUCQzIxDmX6Y~xX`gUg zI@QZ2(Kv7QcuXbd?1#DvUOy_nnG&9?-0^nqySPEQUqxLX%I<^G6p1OX8>=t$J^uU z40sQ zBQO-F^y^0k^&?syvcm&lATYe>;!w&B`UQKXi04035M;}D+X;l9C4Y|S5>qyA=bSf^ zvj@4pImDfn>N+3My`41WW&K!#DdGtx`$49xrQKN#;ViE;3*K?+99g#yWi57R-MY{| zRDH`#OR)M@fA#HR^?E93 z7q-)2R(;UU`Ln!!yP_%U)+W1h&86td(cM|M7|0SR=aV-glw3k=0o|QxJ}nb0(|2#g zfV8G!16ktSDWONtzsdD=OaFzli}eF<`4sePsCw~Gb=^>P{ZO@csCvmz^=(7dzM<-+ zL)8tSdGX62KSl&%UR1#U<8C|V&PvgZ6%xyJ!zqs5sIEE7I4MzRk?6Cmb@h;hooMZC zJt6b(+FReOw8LI+?UGlEEnO~VrJMN7^BbOrn4!)#T)qD3@H>}V>V}_xe1qeiOM$N8 ziYM1utFsSs+50sg(`!LDuZuCbl+Wn`Y)IWe4^xe=?7tv zL?4jp@&UYU@nB0zQ|NsxW94Y5Df4928FC%2K*TI9PLJ$9Rn&^r+RD)h^K6E|qB1e9 zPUZ{6vRa?**viq~EUm}+Jzw*1obxrwyj7{Y|71(oa2>if!}dnR^W+KdJJEn^xNbqj zv;RBRod-RYDZ#AdK+wL?$~mVH3@|?r(@TWk6Ut@Pb9Syf%iC>NgtKl9+m+>CpgUF! zvTcdkyu?-%(S4L`Z@mZ^NMf1i)uTebL}xMV`!-7E8l`T-*P&viuIOtJv8)DZv4 z_}nWAN{NnXxtT1pH{_%Wg#4RBd?oSpXW{dvzS(slN#E8QwPD4dPb3|3X`m9Xdr z2ba*97csZlhz&+DVoB`f|M`d+KVl=+Hw$>pz$z;uFmCzfLhJ1Vc0=;wLhEtY>1aMf zAdz_L{x0l|(vx$6K3ubwPcEy@Efg=YT4NC}FlBd-PvJ!oItI+@0Dm3i4X@am${8UfnMp zFE|j-ORZ|+vML@s>Q<}$>bMmf4h6aFZf?ZJj*r7?O^-VMwI@C}!i{ur`foP%Sk(#c zh*a^|>$)|W2y~!Zo9T~S*0p5@BbRg!XZCz(FuIC-bx(>RQXc+9c;x~e%_fV`b%E;H zk8qMf_t`mGdg9 z{-$A+T!@Awxm*_D%LtfDBKkd3&EkwZfx>%Fe`8fUed(!h+`wlDPe_irEja0a%-{$e z68%-IHFSc%?T!^qakWiz*Dh2$H%e>F%sFZAO_FoHq-vG=f>Q4q$=S|$=N61>2q}Uz zD39^p_^N};ipAaa$5$U7x&VK2$$S#WA%f7P$#9#}GqE%YaV`JCnu4pwWP>@>KTjPy zT?bBA7T9c)91cx!jyv=_bMf%xKXcAvl!CiOTgb5<<;-Of9ghCsn*-m$^Pc9f^wG_$ zb{iT)-i>%$ck2}{`>6BQr7zU!+uR%DT3VXBDg*BMBvcvj&L_U&neKL#w_V-T9=FJM zzt3Bxyn5pQg)~5L$fZ_&ZS(D`TY60@P+zUP#pwI>s^?eeJc(^G9;>09VFe5F&L+>R z8XPzt=ZV=BFf0hjy>e{OI2Ndv2ELPpkiId8YjRw0ui?&iFq0!{tF$=W2%>sm*|F7E zOr>E-NJ6&;^hMss30Pew!vLY1eKU^p>31FT@+2o8mT`3rmacmPO&dwwipbjMxxO!? z6)$kkLsG1n8AqJ|ki2Ol^**R3c-=2(vdduEQAX)i8W2nYYmNo zrmT@>NElY6ao`-#nEBiCJEE3T7vRBjj5s4nXqD(IbJ&;_iR}t^JLhPpyl&-$`|P*J zEh?KO(g}<4Qe%gYco(+=5of!)CUx7?Ta!B`_(zTu-=7$23;44~`WGr=v+TbQy>Qn# zI+@K1Q-Q%Ssr=?oEPF3p;id~9aKQATk1+&Pi$0NONky7gxE1_A%ag0%#m+a*L;rz} zWnl2bGWDV(MCb_ixbv?Ugjdg7Zn!ARHb${5MD+5dXQ~!_GMB5Fz}V#tu;EwI`xrzz z@gkEYSn@97L7soVn5XK;q<;6vR;&PRKKNTC7ZU7Y;F^T1*TTIyoRz@0`9AA~lbosW z{AeysIe6YqphqO74h~wj{F8G|Cr7X2`btU87%myY9P z2E-{FH^-s$+HQ*IUgc%Q7vH86>_b5RG8?$TM5y3F`WpMm^QJ<+Yshg|L*e^AhuS-| zQ>$xM+vZQyO;Q;%ryIwPH%`jJDZ=S39*qlGEH64u9?~wgmbj^6@V1b{3G)-TUD20F znkYB8Hsq+}^edX|Tx%Q&QaboT$T5rRJA-!WRFG~;2FHgS2sio$zLzp;ahv=cCF=&% zNd$szCgi0Nxe5M!p`L$VB9Z1JDYqWE$?My6vgfJ;mY;>i5-HWCUA9tA_sS&)Rp{nl zT3P6gyIb$`R@`kWbaQuaAG?L;lW4*!C>i^*uKV%Dac_1f-V;tBkvBqr=?>3s>L`4_ z(;t72zRf@L9#dhAUUU8qBHraz-}B~vCj5Ev3`B>IgvPCGiff7thJG9xN@>!Q75|wk ziww8tE1R76n+oL$<5prVRGat9Ld5E+?_PoTGRNJoi=1|FzvWYOWv8v&D&3cZZti!w zHG{Tah)|kW)Tw0o3G_lrOoa}v1VWUGS70taNp`xGD{*ks-JDIh35p90J}?=_r@z1z zCab1JD+_^a*)?S6{2aUcY30u!@1bS#BO-T1%pp*pfO=EKAxD$XaPkW2zI3jZTCi3^ zND(A54re|j8&Vz80P^gU&&o>)VFGj<6Qbf5fUK{@KP=-0E*|Ja&3!hZ5Rp8|4p9dX=MT*yAV-XmC5Gt}m?iN-RQaej$$ ziOJZUA$%awI~nOft*-aWhRVFLB{gtc$oh*VHLx~h{l$_Rcp+r{#gZBrAF}>(Nv*lM zq}Y05mnPrER{OtNQtACd#t|WNNYHTtTqD#a4gT+zl%~*4?$+J*BhSyJv#uAYNty)|N8zbSU9rzosdY8yW`*bd$bp zZ7@|{LEFbE{j=}a6v{Oc9)?qi>WTaH5HvJbPrJIdx*X(w-Ne&Y^4lXqmhPEBk*v}= z2HoU$y01@}%@b|1Fv^ANQ`-ZY!Y1;-9QBIrw_u9eu1(QrWb#~FPyhMz$9w3e81aDS zl2A>d9D?|c1w-XczT9h56sxTUtL*`Lj!l8S7bN{Wmjl7RGxlt7*jgG2hn%a~dV9!k zYgt+7u2{{dHxxRA)F$;RhmyF}zr$zU<+>soLv&xa^WRN{@^>D$eGjO(C?os7=VdPZ z1=hd$Ihyy=rk_9FL+|;Yu@(v>`aVOr^>>n$lsL!(lP5Bf+3F}<(nJzPxMvXSwYucQ z9*D{i|CcRQhoG&9$;x>8I?G_PGQRiR<(fjbsx)uIeJCh@_UCd9g{AOHYp3rsF&LAT z6|y_x7g?p^LMAK2x1W|VG*M>@%f@Gw)#(^ht($ zO`$_IjmgTUFj4AZ82u>s}S$b`-Eo@0<*k+@w=?>%Cuz%4UCwJ*qQdUm^;rQ{YOd_nXVk zR7vQG(qFSz&SZ%Mun%6sIZD<5(WDX0@b#}Vc3WlV<@E*?winoswyIsdWI z&8ZF0wbpgV@lBR5&)T8Lw~ciT*DYyr!U;I47sU*|3_;tsukRll!=8lU|e$tz~C zi=debxxfb^eVP@3H%z!yJG@_CfWON=hbm=LToL?8)5qCcq3|qjJDba2_$L%1cb&C= zBGGo1f6X|_^3GX%zeLx`g`vqeG!t*(qG=BLWkG*1Mt0*lrhBJ^{_c%*`&p}jii-VW z4;5$Z*J!O|e@_48?ny%0S@88Lw{5?*OifqG;F8a(MhsZCofS?>_LGvSpWe%|>4x*X z17}gDiuseylMQV({$q^o+0U-%Qxd9S1T<L@pQYj*`JHLP=`(A3|0xWfS+n7vy(2$<`H{0b^y2J~g>TQ$8X2WyXDr{a z%RqTH316SVxrRA}qgCwfRc!um=_l>QTp;72dyM&E#$Oi_=n1X$JBJ}3;Dz(j=cKj= zx}miX(R_wMKHtiLv((Z68wL~aX`;|@vlXSb%VSeN<1*AligP}n$NJLa2;D|U z$dz;8wm?*KvOZS}E6f#8Pou2Q^-o!2?6+4SsI-@zP^T}rrUiFJrwf>s4>NuGefy+! z{iO(C{s2`o&`<{EO*#39Ra-0~+|rZ+xWC#O(= zIthJDmUm^0+>S-CYbTiCBZfgzlNCC3X_jYE_f>k3m9wW0L#b}!)gdK&fy)5WF{D8x zZ2`_TNH(N0Bo|U664vg8`r}oH6~ntNyGF+gy9y54Up#?5lvhK{J9yr5ZVdhWR@i$n z9fG%5OIBXp&&S31v0Vk8IgGTt;`G9^jufbFhC!8=k(l^6n{NUVVRZF`pY!M({?L+W{9R~bn6d2j`_O?v=%m%TtQ+K zyPDB8r7%r~7o);QKhURGMW!hKoBi$yihZUtJ>_HI2#s!J`GrZA7tdh@tcyL^!)Fj^ z58rh@(^j+(`TxQ4-9SAvp_GYl=*dcCFw@5G*pEZ>&eJ?!GY!5~7S%e+|bGg#pcx$tgQc$ei^6*E`CWnK?o4xbn;7`ry4 z08$syUZepeZ6Ww?BomSisSc?HDS#A0>Oy)IDS|YBWJU_1-XIeE9>W*mP(2^hC7Jod z!Ogq)Lrj;XckzD9cR%nG^DQy|hHu^koaS;G%jxAmkj7?H%ID8oIejA&U}tg;ePxP6 zIT9jlWv1#gsTEN`xSSQ49OuZ{RKTJpVkW)F0Q^iF1x~@>B&A!QH;dav9PJ`{- zw!|l{6g3+7RY&r)amG63s%I+#LMU+`iQg9k}Jkq>oF%9ey~&WS7JtYPHzgrkgf zKYk0s!9L}aucqSyzfc4Dbb=QjOr=j z+T?I;l1%l~=es!dpCo6s)SaX8gWJJas zwejk^C10k>O*C#-0q$dKHQw5IZ*79NHW47%oNiqw`E!y$(QmTb{5i>MNBhG$DbGL6 zIlquV+qkDW=xz9cKy9*mt7J+E2chus>5_T(tIa}arNcVFS!sk)?6l;V}KEAJVUvY|XFv@g?Qt3vPTeDApTb-+U;XdDOhl^7%JK(@9_AR0R zA=m1$e1F-oIZOox{UoRJPbfyetnZ}K(JY5oZcX9i!wK5(jq0|P&V5ZC%9#^dRzPs7 zY`QV7;rg1COY~prBr%q$vtvgxXPZM{^m%_Fvs?yt7eiKfJacb{N@5TtTVhh*$dwjyn z*IhED__-0r>_lGQ?HI8&1+tl0**um?(h;^`QrMaiv}`(Hog&h=cs?Pq16Gp17R7jF5XVY-_ycRR<>JuF*T z_=DvzPW&_?KY4zzfAYgGzn1T?7ge{!rd6WQ5M@eaf?V1crPr|^2UkOhti54+&FbRz zD;i|+mD7bfc^1S|9V@f4s$q3oyR1Rhe*5YbkM9*0Mrq2G+VP#&YHOMPSqf^q<=QD! z{jY1!j#9$jv`-#}rl@a3Qt@=5BFa9sKRS`EnO>vy+y?9RF;=3nx(Y;FF6}xaE0@{v z+CGlW34E{KeHZnn%JojLdVR@~eatYpd^bS>Uq*s3F-pH?Z?M*wPT4BfsPm?1{fJ?( z>29U0*p?s^MCs>0mBP`ciIw9u5AW;P$0zDvh#U-b-<%W*G!KD5CjWDE533D!aLFZgag+?=8%-wQ+m2*LszYi)3L)*mxn&j70i-TGpTOS;{_aH@ zKstuRv@a0L*qW9dZ@;jb&O3d4*?BCjq3hFhuVgtwOWd0q_B{wLXLl;kca%csV&IJc zJ^cQG*k%+rkO-T>xB(Ru2iS*KYs0oECO!Tm|NL{D z(@MAzx-R5!yxu%n&$XIJ_d=a_L}t^7jHZR@;f0yrg&Ew4jI)EBb1I4ZGuKy4!toux zk%`^$6T1IFyhy6F@Y#78Okv1DsXNqAfjcLG)W7@#1}D+yxgo(y3BR`DHO@JPnQG8wGOe>) zMKa!y_eZYvpak@wsW=SlyxZaVv(6p=By`;;>Adlq z(6#NEP4Q18uJBCG^v8E5wt04BxIdQMD(UP7sNhm>==SRET%U<@@sH1mi-RjyBh2U` z1)Xbg&oqXHd(S;@;M4-`-gS=Ga%BWjVqOz|?7L6nif=l*V|mdl{yjIpor-KP zE*2&SvrO&uI`#lblc~KN4*yCW%IotoG?-nU>o2v&QxwQz1t2~uEp8Wkt+bFq()C>K zDD}pRMji8ncI%ofsiU+h-ki6wSKMu-39%Y&rMQ6FWu;*!Y5d>G^VG*OWR`^VrDEQy-8(geQqG{s(U61l+3o z(neR7Lfyiu+~`m~PEWGpsB8oSK93$}PZ$umy3Y=ffP=h^@zA~dg-G6-9E{UXwA$Ww zu9CLra((wRRZ832*CtB&Tk79P;N`=Vgl9g!veaMkg!(@uUv3gd2{-fl9i{%+Pxd_` ziSJ(axQ{p}am+Lqm-=UH>VqjKVxU+$O5O4EbiFDdyJ|(;^YHj@oRjX4w*+1cgcIHh zwVC~_4BqPZJlPeAG{08x#gX`pBk`6eE)Atv2fsHTVdeCDP;w}KBMRc; zYUuCh&K3Lv0X@0+jhhB#$Q&RS1VrvF12J3qK7MqYWpJ*#}R6e<~)KRgiq155*sKKy-%%)ODs2`41#Gbbh%nel_HY+Uv|6rvP z*rRj0WcgqSP!{TB+2J&-q&L@`em@G_|2`O~4e+fF)mv`W+wa}LGe(!LW$ii<eonB$n)U6H!2Ez)^_ITO z?OY0KV4*%~o}BxY7i8Y9V^iubwo}jLic1Sq*u4y?OD7g7?LIt|2ODgYG@nT!>0 zY5>F$$$#(JLwv1uGtUPbO7*MiY6ExNg;p9P%~O4l7Uyj`hOz$?;a@tM;x;x_Mj2xB zJdLW;gQw1?uxzhyI!f7Ud+8#eo?aE*)F>eSUxxJ{0t9SyIOdBz3&7Ok-Sh(>t{VRJE zW}l{S$oYi|F2u!iN0M@N-@i;h`JoiikYzm#Q>na01HGRR_0Fg@e&dr73>!8==bxm$ zm$3R7P3rnE9i1bXpWia&%F?D!Y14ZhVuhli)cXnb_H`fzOmQiUU#;(Sh%>1ArRX5O zZ{&KMd68^LF?$FcV7Yqrhg^B{$E)|8;y=-7_&5a7!yYv`Bkid;@Cd-@CVY=~Lgqs4k)FsgS=@ zyXxJRmI#p@s~)YqZSAvOM<=dE9<73nf@@L0v4Ch71^f$$Zz_}&n6W~zU9qU`i8g-~ zY`db+z*eS1Bd@N0zr}c%tiycjkhudPu)`% z#-UG1^yxA-cjDj*Jha3gTC(=>k-C%T>0PJzcn$d((Le1x-3lMLP(6riYFF=Da?0DT zs!6)v=g%B>hscg)!~O;1R_3_c0*x!}WJRRu(`Zx8I7j9J)Ks5{!4G|C1geMLraH-!<2Z_42{ zy-}e_3Ww;vKc4Omk=F~ua4!FE40*wRiqB}X?m#GJYvLkD;;(Tyi3!hf{Wz;guP`fK zAynXM#)tLey0!(vBgchnV5k&&OBGtF3T?_9=u8c*NbTx0gkD#5y^$LFqiXNA)UFkV z&|8mBOP6ohPl&NEVT+`n z#~$oMgTG|R|H<;*Nf2M<3De=dfKFo>US#NWRmrDnCJ9ra2r=HF%5`TJ&>PrGdU{CK zh4^X+4}$6xc4dy89Ou*B?Dal!>Oc~ta{YY#-WNjLm35NWdAbi~C5hcPkL$Y!g2+0o zwML`}(jb!74BiyUhU7x3Luy1?iPVDkAtcM6zlV#e4|zCp!n7JE{t9Zm4)6SypM?eEwx79@5uygJJN!@aR>+6@|Q~6mhRMnK2s$5)XKuqlp+>~$G za*?V3B0@oEupzZ+!-6I|UF30ZnClJPWS*q0vrWV;W8IR8bwvi~=fiIv(~Gw|ph7yP zcTKd--cC;Ebu5z4H@^i30@jd!q+;q)w(cS`FmUP-j7zO75h=Bafo|??=y5pSt|@V- zI(!*=t7^jbd6~Qom$NPdKJstNxA}%s55_(A-JWTQ6Ls^lE30B68iZlH;K>+nXixl2 zV_oy@?Vi5V>Zc{)A&G8b?U*bzB|B36st#_$`0xhLqBjFjA-->G1dxMAefpMwclVDRGD>?E7J@U7X;Ejp{CH;qJ|A!sHx!l&0@Mkpqen)T?#W9*wG2ZXRL9YBN z?^hz+c$N3Nhjp>IM3^n}es{1ZpiC(!?vj~5uzkAu$FFgI&&!NgczM4lLJ=}jt&t0myqyw$S8+{DV@t)4u&9+PsT;R{i<(I!T=1U)$9N^2W z3ig_k7zg+#_UP0|mRW-`^Ech0n(*fO!>6Kr(viOnx^52eEivZrQ!``!l4u;O(8>|v zXcSLM_Jp1t@~S4V&td5vUa_zA665}o=*HMfbo%g=OItEV^MN_RIBfh+t$>apv0Kxs0z=tNdKYt8I;z|nG3M1ntaO5rhAW*7KTh^$yJ^Y6+Jg!l3{If z@k<19$-190d_ywBN9VE9!ltO@(nb2ZgZ+LYYB_U}ZfC#kCr`=z-XwQ{!VO${IbnU2 zzQkVjhsfz*^jpUMg7@3TvSfb4clWo#@1t}J%Yb0w+mD35e@~~&jqLfJmare168`!N z+9Q0f?yYBO&1uWQi&r_nk{IWQ@Ez)PQOv_9KL+_G|CMvTB=vPkLpCDzo`X6=zM%Vm zl0l37o%9h#4R*eqZrVxLvIlm)+*v*;T3N!*m+SM8zdANrH6_J6+2G07J?r{q3R*!y zFDR(fFgiW;BcuVWNV5#dfq3@{Ylw*NS)q3a*no9U3|1S1g#)L8Wh0ty$+eTE#Cl#+ zA|{o4Rk?XO!>0Zw)tJxMuKD{%tDiU}YhEP^&Zsr1oZcKO*}nc%OcrJBwFVJ%;~`-JzYCU~DR zuDId5Vso2fPeUPJUKe$qlb$RR_vmm^C}%fTp8iXg=m`YxDlXzDUM!+EIn#g9a^XaA zkw#(EPB0qMgpc6>lmSPmi2U??1-wu3xiiyeD*C>JW1{j32_|81R)u&k|73qZjrJX4 zcbHvrADPa;>{GJN0I+plhiO$x%Rm08{7k>k-N-Zs)O@$)&hw7v_S2_WBTQpJEgU?- zGzP}W8Us(T?3hBpz(@Lms{Rwu38vq>XHS-Ad|@d#FMK6Ao;wFsf;yH>{euV~f>p&Hu3hyK z=2Rvdc-?UiA&V*qS$}biE%(wG+kqdi=oV0V`g;&MpMub8fk43^^SonA0^GP4sQi6_ zwqicce}Fbsu3y+kXE4~Xg+C!#PDnG4OvxywrXzeA)GwyVnC(4T|FwjR_=clZUrP(s zYyNsj_~4}FE2%efNZ5T+_4`9Y-$`057k&3+EZj+<{1iEPRr$cmo|$PP3{^vMq%MHe zj0B%^)|cLl7)T{&F4OYq<}w2wW^&LQSoIZt)o`|QZ7c`w(d1$iS&1p|f7*ch776iI zS-t|!dSN*`fs#$drmqTJe{tFYNKgT0R7Cb3)- z2gtGypZDRv$9o|y$fj<-ZkLwLr7qJ;XNn*^lk*XJHGS6 z%T|u*f*aG%THyOS4WPvt#Bx&Fc}hY=JwC~hYsQ9X@DAqN5k<9LKQ(wwW$+RFE6(VwysfE~Z?55wg$Q#bMTs-mVu+1f7Hj4}B)I*Oh z*lTD$XMM032C@VH?8-~e7oS-)xjVyb$S_;&tQE91CgfBS{1g5v8OHc6mqYYH){^B7 zDSwohPV~~Ct697mt9D_Pcr(2@na_cqfAJ(!=A--bUa3u7#ln>F4=t>39Bigxw)AT1 z;lY5puYH<5IaPrDs5ou{GM-==iPswjn^zo3Zn>Ts##+Wrt4yy+t(f$A?2#3e9nt;= zD=G^yZcZ{)<(2&2vRNtcwJ3nqhTY6<$MaL|E zI&q{C{bgIF0XH*_bZSkbgM-cHi3Y2i_Qes){73kQre42SOnuZkb=tTI?s_$CmRpl* z>QNA^Ti*18iJ~|ME@1H4^ZfNfrG3^|jDO-7wUP`tx|-fS-^~M=yd#DO$#=I;4QO&zLdHr=ys4F2O+>4)pR~iL=&nP7XNkNrN9dv6i#uaKcR? zdeV(K1Bab5)VVlq!m9e3zK=zT{xrK4r2aB|zo0XB+zSWl=-g{WC%D>mk>8O!5LR7}I(qEVB&b<4FjB^hMj72%SMvo-V(aK!F(ZaUB7*KQ6$ zq+rt2<5u*zl|61%k6Yd2j_Yx2p!?Y4My#^o-a%>2>k_t*xx5&Pr}s?<@&f#ik3n_p zr&l&gF-+*a>=o{A6u@8dIKe?N+T@rtSQ-70do5`K!{r6>;<2!+I`V)r=q zo~T<%U~g;8Jj-VSxVwx@_0;R{$FNtu9bL9FI?m@;6IW4yR|T_(8^e-LvTfwS&CG>% zHCg?&wCpRXu_-jpg#Be@9ADYuXB%xt+(28Z!H{7v8T^0xdqhlad05*5BPj#PkMpVt zG=;_)agfIIN^aHmx}~hn?VJ#f;xAC}a%8H{>mX_c)_IZfR<7@FEFu8h!^J3W>0te8 z!rrQSN?{K~onsK7Q?+QmUq$qu*bL0;xWDSrXjnyluY&l_IC7ZJykiN2UJ1KVx0BQ# zxv%Qs=r|+LUUd}PVx4idHqs6sP zkQt{h^4)r(@26hjF81OyQfaGMzU-b)pI?p@kTlpWj$N76mhMeYtjWIL*SH|EFxxvX z(JJN^sOz3JnBQ34T~2C$F#k#mIfJ#F2F2WPxguE3`NiBOaje#6Ygw_nsa)w5a~*hu z-|4c|j&hY%9BVCC19sOAdv|$USjF6UQn!GwyF=wUo9HFn6bqDUf*KMItqXO+kwM$@ovGa#+SQfO{lR6=Zxe!= z(dvAX1E)V>qP7yHpTrqDyTIetEiiPZ^17C`R8o`*t?^Ks0scBSACVw4gh=S&k!E6u zPl%^mr*!1EOpTC*5!ZI6MeKR7*i!vyS!ip7SJmGgpZ? zUlh2tID^4jX| znH*^86~|%}L%!ACnH2ThGjSCphqNJX(b$$QrYEke-!tJ>Y+(4OB1(7Fj1 zBA2JU%I0?0yC-AoR@OTz)_CgOu3G~9dFWQU9&ptd^XfbxiK@P zd0~pVS5fP zwS0ra?WpBJ^7Za%#Zz@I6z8n3_wdHWOYfLL0g8oN`C9bA`f@x?kBt1#Ro!LPr1w-h z%3T4jB^4$80i!4b45fifZ>JBB!&m!yrahLa#U;smKqyf75t^RHMpi`FfBc@ zG@?+G|02(Uceyl*s&2?wSb^4*|LbcVjrULcu(@gKD{1HHzY4Gsp3mSxqRssGq??|v zan*soDo9*+J&Ez<;m*cJ{;Segxf~5&6)usOOl~d^$*tf~-(0t`(FMwC{vu)oeC1o+ zZt%!5cl}l*FRQNLt3i>Ybv?gqY8Z(y8NOw!Ypd(FQl#*PdNlf% zq<3ttah26HRX3DXSAx7Ns>&O95DmI0FHus4PJ$!w=l`_5k_kp=hEd?B^#365r~Oo4 z^9%aF{009%{*||`DHri0IE=%Ufa^v7JsNk+HB;ms>AzFZ%ZES59^1H1;`$JmLdDHa z+0-oQKq@~zF#f`XMj^!)DEG}wS#33(Z3WyMH6)oP(*1y0$9F{g$y9U1>Nmi98| z;;&Rju^0{r7D`Z4i*mC0Pp}0J?kS&S^B-pjF~6sHvuB5(=Ht;RKE{7($ORvTiw|+( z$DTd)*!3+Thc=CTJj85QU`RE9&DHwCDbqacT$QI@udOz2qrIPsuL^w1C)fr;n8#-H z=c-G!RmNsI$f@qud2krV@VV~pULMnWaM;5Z`e8TQpO*vh6`#yOI%P`sC)kfCV=15g z@jaCBS19S;O$h0}=L_6ad{Ge*Q4SyLsI_?Dv@&l&4*9 zthQ{UzpwUQM17j+i5fLr?uJi4>Lne4v`Zc2jK(N@WVCyt5-_4jRcoJLl7FN9g^BN^ za=~9-xkUA*D$6D(CU`&o_7_#|%0%U+nkqm8Koz#PXWtQ9t_BQyP7cFQv z$Em{W#*i&IS1FuZ&^JSFFZT5GcA9LTkEXZJ*!1>k84cdzN3!E2&O5ng)c6n40`*G# zs2&`vp{Aw`YOSOgyDA!aQ*EQHOD}{NC-J7<1J8l)U-wSp1%B@4>Mdn%*X9hqI+LVx zl+{)@N>3PPNKeyQvZo&UdRar0J9A+TqSrc_<%dA5g%xGe|G;~r3%t3xY%_)|8N9pF zgXmC%+?DR;Oh_D*=kZ9Td77P0qVM37)9G%ObSD3^q%z^zQ&A3Crk}#xQHkoh3Rg1` zR{R5wnyoIsppvB7#Ge2xq|Q^H$-DJlIZtFu{*yG*qIjC8mnzF|q8hk8<$NtvB_bau zlPpX{KB*Po;7R8Ac?f<y{T6twjCn zJ!K72HWl@t4gYg_eE@}lySuV%vxH?ywn_-G}7KlgyrR0%;jD2XU-{it z=YOU2L;)o9ODc=sE!k5IwS1G~e%Dqg6&?~z&zFWwCtqBmWZ-UY--Jyt+_)YhdHqYS6a~(!PBz+*!)Nlkt8J!wR zQAk_quCJ8_79`DEG-W;OaFBfj)*ntad9teA*P3MBmpU9r}I5j@F*ypxjLwbG5;5j=xx zs&G9(AagZVmN~Z)%~<|byId}Fipgm7f067_m_Q$gJ zC&TONc~qYV+42s_dWGh9)Vc!brzXp2z_9uJ}@ zCH*kX(EFwMEi>`X{E&W!dQf`5wg~Tv$LW7iTc!8^mw&h~Dclb;a|_Ih0L))iXM%)= zS@;vmDVI^pDDpnM7=LEW#&)48(tGztyoaO&>nXkTzT?k$58gEKJ~D`Ru4dw07mxP{ z%|w0$Fh*112^0Bsw&Oi4SBj4(=|?QPq|HKc#o!`!#WW`%kbjfy3$y8j71#OU&sCcTxwkl_J5pP*uoVR*ahQui(eJ4=GFAGN{q$rc^E3?0{2Y_5C0F4c< z@-nD=j`Awtb2GFCv=7?r0q8e1HN4YNE(ux5{76_08RL_S{7OsXv;U5ZJfnSpp33UY zev*Jmw6=ZyvuhA#_5v_Sb~)w0_2b@>(K-^;IpzzCE;Z~*g$ zbOp`=4up|A$$#qn&XpmJ75LAssXOg|Dyrvp9G(yd8&*H^X&5_Ut zTxf}H^;;!#mZ!R$uWp!1g$`GvK{D^wIcf~9y7B;C128p~mo?T^S5~^*a!6x&MuVkb zCE7a|CRAR_OS)oMAUbtRxZki$)Ga^`MPo9ioCKN(24WHgNc|FT)8aIi^P9`oEH7K* zssWQAdfT*Mln3J@YDl#GNvS;n4hjF7^rSvzq(T8JILaVANCp=5A@%3UtR2RSvYk8- zqj5Scq|`5rZ}aE)1@V!Uo+nH=z>8$HZ=wQI@q@U;w$S9RuiGs1FInrFiq@&|om(5X z-3sBF@mcA1xp>KF+*th`*X=EW z{7Ly>x>9Ylx0djA@PBQ1IX@)|M1iM_jL>*VJG-5H&|YQW2=`+)YzlqfyJ9OQ|5nu0 zJEif#R1%lydrJ5uMSL-VllUZef|H8da+Byq()Jq4$VdTt++>Cl5#CBN|I_^ZxsmCk zugtNyrEyzbc}A0?TJCrL_u9?nJQ)40)B}5l9KWFw&&6JQpd_Q~RF?n5HbsNDJw-n^A zUS;F+Ez2`V3e0543H^U(6t`FkNGO>_@rO?>q_{=mlPl4((wIMNY9QhRz81^Mm68=o zQcsA8-t4Ig)SS91r0Gw`5NNzU4*B%P^Zt+Kjq$gM}ZdtP?F9+%Tgp2p(nBoHr zygy(%Q5Cny7C@qux?M!_ktUdIzv=Kw@DMO2esc9BUg9sm(Y0kt7RcYvYGhV+dwhbP zuS!1|P71v}{jKGFd3-tjt?{9s07QwY14Pufv8jTLq~+g2S?%$^$@C(%kUs_qpMowz zPhUyzGs4iLWP$#L6hFh>LU=(280UnZA#-ZOg{#Cg@#nsi|3sesVXD4Dlc} z1Ib^a_&_(93Y?U`KYXG`Oe1%cj|zYSP%#YcCu%zpNeY)Lh+#zqMp_M|GIDPvVBS(3 zHG{XeR7-NF$qio&t(Ko21@hQae?QVsN{OlDMC7BZvB6WnwOm%YiTtq@f3 zEV1!MXVaTe$OW2$to|L<4+n zd)&&+NjIC+UI;wX+rtn4M0?2ZlU49@{|WsG*qYWJ_Li?{kFVkP;71gkj;4ta(}1!AFx8C*(P^!h?VQ)KgD=KP!JN`TahN zqO#jw%d{^85I-qZ8FAmy^6I>0e}NasAKzJ9fP3d}vi`Xe_v}CZ^NC{Ichvkl=-y?x zfAg4cDemMqlJ)lPuKh1`UCw%>>+{pIOD|>ZEAkHgY|e*S|M}*9Pd#(tgRI>n&$T{w z^kUXOI~Q5sKX@VQ5&GYa(a)aG8u-S8l|S!1mz7+cI~4Sr_p_1~-Sv;R|N35*uvD}1 zz`xFB&HRIL#<=Qimf5+r?mOl)S>G+(zU+_gce5hCf4!#k_rrjn`~vrcZ0VI+FW+|^ zk?s$lc)~*M7*5-E#Ik%=9sB#=|8bA~lj~U*6|2qprg&WBn9d97+|rQRaA@+P!5xou^LMCTcY8 zMTvsO&SGH(%?a#Q25vAM(?(Hn)bMU+7;O+-7IsinS7l=MF8F`fn6TD=40(-MI}wM6 zHwE2%XScMh49A))u%hcTk+b=pIUWpW2P^^uOgHipvu%K35!NAm3-_PlI)>{6E*-w* zG)87uMMRRdksV!Bi1CyfJK-MFUZi)cyA8CLWel`!-%M{IHN;>+d0ztM6R^dVH153tXl7b>B z9-rx*AAve*(_~^qPDYWe;Gi_;C&ahwi^r6EWw9xGZ!Y)xaB(1$wG-zzrW6I$tQof z*P-ee6B$R4pr=ZTSlj0!ufH?Vq&sH~K^vbFX2JD{N-WYHD4Lh(T+|jyX@?$wcMC;n z-%0BuG^AZvPnI}P+Vb!95gO9w*Y^=R)2?07M{YM-leyq6I_?#0)WD-v(N@Q_JqwmP z@>i7NAjnhd>Y22j06fIJ!udWGgN?~?hOo(1HC?kQwC{^pnQO(GwH}^vMD;o}gV=EI zI>8>k>y-wY{*=6sRiC_G>ANm+wLQOmp#5-P2tWuO8tGTZ4AIyOHqyu=7vE=M{~2VJ zN$auIYX%aQbc`|DC<8aBRriuD^$WsA_R4D(dL4{}9|iE!Z?b(RqBcgVqA| z#sD|3_qzo7>v%5J5j|N)4=IP#(R<;xIwB8J&fBS$pcN)Pg*HE>&WnPJ5$y`3vb}#> zDrr5_V-MeTO8v&py9m`|rzW)Uum@{lJE`OOJpEQG${b)m)Cg)i`!W{N{BHORZ{W@p z()4PQv4P8^vByb1d49}&7pJ*}5CNC*KkGt_X`0NW)S1RdTGKSiMn@X?`^^W^I&7r( z8{eoS@2Bi(8lCaX_Oy;A_{wQiL1>LWgmZ!&`|6rhFr9POHte#7MKcuVw0(>B=R~3RCNSx{DE4+zFL%uLy+^)e(%FI){w} zJn}Jcy;|X?>aY>1U5{zmGl-5=Hy?Z7mow1#hDEZ^{>R?;CXxml4HFa*r=T|d4z!bi z`|f-ydt@b{U-X@Ft*AOSaK}U$-phi0>?Cs9K)2R!K8C8O%nCYZ7 zIC-2Nkq8_+H+0feR5oRLR?t#>YNYleSx{$kQZydW130SvUz8%7PkAgQMLDvB?+(XS zj+8l!9wx!DA~zV@pY+Vnf)7n|*n3i@Z;o+{VRhL?ChoaS)*U!N2`-Fj9aph-3_Xi| z@}}>{^KdvTx&-0KGM$1v2Nc|qq|~hbUef@{O8+eRn=1XaJzLaC(J!R|E=URrZf+AR&XD&pZHRGz;d);-#h27j>^(PCpdb20 zQVZj*npcmYrlg+yV_0tsBAS{SzMg52FGN<2bU*LGpT~!sOe=+{;-1DkpSZE#q}=UBf&(2gCGUsplX;29=8xdh3YDdmgP-x z)i0+l-tv*y6u0T+G_`wwX;a)fch`$eafR+@^(qaurDeP+&bH+OB4puj8`1r?oX4B- zDYmnoUy+Yzu_zc?dzIB|@DnL*>P-@^i7JwqiH#`{x z9N`Pj*iA}hZQh$U!_CRIRH9#@Jt4aW9qcH`5qb%nFnfm-W6GBgGxqza{tx??v%*af znJ<)hojvs)yru2m*!n&1KqOz!|fq&K+0_X~%|&FFcsClq@1lXA~j} zyn?lw&tG{p$Eu`0ID_-0Yz4(6?L>Hk@Tcce4q!_TfPikH_t<}xk64S;N)LtwZ`lq%!yD_qV8XN^C; zq6;S{+K|eYGT0kpI7gk55{=qgpMRY!oKICxEP8+8{#Sd8u*VaV$?#U*U$eiF8UYwi z@f!gp($D()!1)w>2gc9~K_-TXV04FRo~mfS?4>-Kyuik9D&a$nzSFZOIf>LCQwq@N zL8eYVyMjdIg4U&S+vsiT%%J=rA2WxW6}-hjv`9%8l-v7M;YCZx7Rb1i;~qV;QOR*9 zOxWoWO%ZPUV0OzW9=VNNEq9DgR&OUC$7g3^rlz1q?QF9_%!dQ`PRoYY3Xx2I{9_! z(H;A#ru6Vfl0$z*e4Ia-&1p!N0vP^EiQO~f#S?_247Luq_VELEX8oYziN@FA%#k*CprcTMy$Lni5^KtiSGRNN&=>=`6PoJob%YN(!p=B2?0I%2 z&yq3{eTf-BBgZUJw)FBxB0;g(nFM;`$l~se5hpFRj9o$9X9pX(&uCqaljlQ+?i>Bo z#*{owmVZZTq0=hiX?}12rHGgTWs9$1W90FX==M*@_L%wX`a;{=Vrk)h{r6pt`G`Sm zq~UUWXRy743QF0cRmgXdl&_F9kNM1WNsfX%eQ$}uS9F%?tM;eDA9CgTp_GE?A*NPw zNjaeWi>>ALk*krJ5d{48h2GOBw!qMx$+V%I`y5!Xecy6t4uQY_zCi;2zVUnOV^$J~ zH$--iMDM#3n>wfn#MKtxNhGea+&6SzWy}%+^`^T3we3UzY72onlVC$giX%`5UonJF zhZK8#E+TTGv)2(b=$JX`h+-VG&N!k66yS$L%ra(7nY1U$#6eqr2Wr)Z)}%e`9sO9fO1j5j$zgf(+F~J5A_y~14ojZLJu&iQqdgkk;7s4~;cU-}Kg_lEJp;CM zrteoTRfJpn{)*?9Dww_#;+eipXksOvjkJB*PS-skrLG8>l+UQYjlytNhio`E6yCya=dudc; z_CDM}17w}Y06U~Cye3*c6CY)sR*(%$wmH6Ud8#nv%9x7AW-I_!8`Gw&51Dbo$MU~5b zvP>mJP}`M4?;zi}vq9{}8xBn6JxRZhcdn*herEPEP5XagTMAuRtdJb0Qe))Tk5>#} zL&?cUXd-NkNtwba{b16bBn};anQ|lJM4pVZZ*Y^8C*D>(9{Tb#OwlT&Qe6|VYXxM+ z8?U@Ob>E6djfvT>NVGL_k-nrnrah%5nrq6NJbi1ZgCJl)V=R}DuGH|d{^S# z_x3G-Zb&GK_nwIx91zdV8^InYPzi^+-~CV|JrSY9ck|v?1v#`WiiBY-Eu~6f-|?q{ z_Qz*-r+ma_TpoT``+*=wg2;axeBRe5gkC;3f0XpNiSqvGPdUxV0G=i5+x@*N!d@x% z&jPT8jch>>8gNEG%fi^D*D(WT1*=0jz?|;Fo*B!Sq`hGVg{ddf_eLCgH+qcFIYV$L zty&DleXoe^RvnE!GBjk!A+HXiDBEVjCwKQc<_)(dvk#^>=p@;}N(G zm)Apov>0!>J-<(gkNyE^zfd7FjI_ui!ev4Q!evsAFYkV9aQq$|lxVV2j5gK~ z)~lU6sGW00J9|_+OViT;S@660k^ZqL2B3ou?HLC@#9%l&>R3>az=K7y{ri_Gu*-;$ zPuo+WJ2|nkaw zT9oybPvd^E;!d{pm32EhJq?x}`*SF)MsvSRm-Jq1*s?=dLA6&K_Ykwzvji!&08&7W zUx5>8{0y`RgIetwEkCMVKnBt%4>r^X%Y?*i5&8r*H!=IW(a*1V_d5?~8J5TW`^;T) zvvT7ivv;9CeF*;YyMVq?5Li-m(PHW{L*8wFXcvrCS4Hhc6Nqp#mg>T zFnSOD4hioIhaI!7-F=DCyU*{ZFG0l-ENY=A(mANaj#yo}+bZYost#`L%C`Kk@wvMS z|2Uq>xvPj`MZZSUo4RtXUDIb`*rVJa0v! z5Gr(TCSPM{)l(>I-x8o&xYnv6U9u+1kqiUiC$c4&Y}%N)TM^mmJ&(jCKVBD>trLfgd!wIl6H9R?9cX&%7qm_mKKQ zhotW#af=XPEozv|3MZ85GtDNQ5IaCyCvZUR`|nmnL0g+=TkaVzyl0%gS1QA;9OBx} zgQ`*@b9M*`lqrF>SjP*k(C^ZPzim0-8eu4NoEcUN+-2@UY3Qdbkhgqp(WScA!;G4({X z*XhriEK#PO=%W3!wI}kvV$dbwJeMWTGoXmIw%1|Dprs$+z)=~qDR=HbVQIfx>Sk!b z#xL9n=B`edTL4Qa`D)bMf*(uRnXe!7d z-8pxcgns3Cp<=u`m{yXigAV4VRw+vMhqYBxGJbSQpr`QjG0TlH`tvcwiE++o8I^FK zTw|UI4c&5etni;6`m6_mfMsqDJxb!C5qnQ6QDT)Ibl#Oq=p012OeVr}V<5u!$NWV2 zK1nd02>ac-novRYzKFr5Dl>@gC)pF)wrFB5FPF;KpAmq>g*1U-aIA1}thXnc9wb?z z%BuKDnj5!DQ4y>P!KVG=Arc+{6KUDGyDUe>3V-c!R#Eg}e;q&r$# zDC#x>baySA+teI%FbG?*z5G&8Xg>@HNl_nLF{Y2Q9vu`qDU5#j{_d3i9cUxrr1GS5 zbR~7ihx)^BJxv`yzDYlbK`U^*lIA*2?5~zdIG-u%%0YMQ%FScvHdO~Ei(51-iy)a#r{i!<8~qb~^Pa`|8~YMFtO7PPDx zD=ZqLiwP3{(knHB)aSujT;sHh5cXR|7>6$7q5#n4(bvb*nZDU#Q5XfqAXYg3UboDr zE=}cAi+QQ-K{()3(K=;e#+W62416ks6ceN2d%J=GUbk^tve_h7hLaPjDm5a)b-?ONnFx%c9O)d73hF}H!sD zsiwQVC^S`o(pCvo;M?(>a_(A)A02D$!-$PkwQr`sx}=#@506jM$kCgHM{hzd(MJi$ zfTLu;uWgZt2URl8<0foWl0kpEY5CJl`p^DIG1kx8UJ(bvRBwnKT?Mz99;guLJaM?< zaV^0m&sRV@gkmVqRzO)49J8&C$RdZ@>CjjmF-4AYr5X5&fDpOkci*Eg(0B z4LWAwplo|4*~cwYX?4sga?E8J!K$58q@7!GI2?l;*khKU_sDml^Luz`TSDpgC+$tY zcX8ZKt9E9Lmri;v_#|z_T%mcx-+?k6+DO<;5Z$zZm6j|!H!!y2OQ%&jnJZ2 zP+XVLWA z`c;B9<^uuKK4!)c(VmLjFkIRv(&dC0R9lgzJZbO3FG-_glHU!Kp!zoA)?k0iprpMT zfumPw*x3F)WOqmZMvPKu45o2j4@?ykSnyuZqOPbY5D}x%nEIZ8eGx|T6zk6H6i>-j zm9=jlh`Pk75<0gg#Z(C|yu&9(ZrGWoac)qgb!dgohNQ>Kpf0UO$<3%F7azymAqtKt z?olA7Zw|E~KCNS>(CJQke8rS#cZjMPNKu~@V=-x?oP9s%giWTM7#6lvSRGLq2y^=p zAx>d(L}3~?PRR-Q%sonQ&f+tdfB^1MpxlnyajhutFSEY;qn1|Q9QnhuQ*rwv;C5Kp zVd}kRji-v@X(#4UBfLvQX>ynXPIr=acrIuiXi9De6WT#xCDDBIMF=Becqzn7jA#e1 z(wYhWKtjI1Yk{^Hr=s<>pf4{MyKmqcJxI^PyKM?Ey$;#$Z7xaf`9bNDBhNnH)YTsFL1S@M6-!*h@wO8ty%l5)-CT($fC;ECOE<3IjxGtZRCa4N;h?X1T z83%PqfrF?439~odSK6HJ{B}E=>I}?j+h6lUhd%)R7FkKAvu}@K@G#9~X@*@hYJ7H|* zva>gB4D;DARLTs4t-`j4`fPqMOwRGJ_^zRY55X=sZKn{5T4zhlUL(WJMafnO_5~_t zzsmRr(E`9Z-&GXWa@E&GCAu}_$%ZEZnYNt8;Y1kdj35%eUXh}C_fv_jF;aqOsYDY; z3??s(u_t0xD#-?d^S7TyL@wU;hIHei*)*EWMFgy}8v#oT{7ED{%C?*##lchnu#ei; zOB%$$u`f|LqnJ1CfgxVU_%09t&iam%HksnBAkAx>DjZ@AijXbG92YGEO3X2CFo4gP z>3n7*X9%<9G8k0G^&ig13k*KC3nKs8PBK7cuVLm}o<@-;2tLFdZ3|%A8=IKD2iMcM z{u7rH<7BiKaEJD~_ztTAgS*IA1Si?7jnGeG-1y0@w#zuHyRvII3_A&TDNs3k>weYKKJc zyR$Nxn8OOpidGITGH|h}>>bQThFfr&!5|#Qm?8(w{!=W{()=eoiOI(Mfn?pHEUyD) z>}9b}6q60y0{uU5_L#e~rnR%Sqw|6Noi6)q3Y~8q1YHgu=*^m?Nq2><)6D%3%{NMz zkT&8B)r7e{EtT}gMNeqvsbEhN6ii7`P^>t-1pWXAJKF9-9P&-0!r%5$dyM?vU!;qU z6=M!75p#8?Sy{5?dTH2tnp@D8hzLk*W@63;TNOAMu4Y~IDraZy=I8`xr)zUGgI$%a z3g(W~{-tKk=*S)~B5sP=S z0UYW&UGmqDp>_@t685?tQpk!}WJuCnY;2_U5^=LcG|ci+J}F zk=SlSt|VJ4o$mJ*r?XY(E?-EHXeTuiVSP;H8_t&uR*z zmceowW_%w=h|Tx?n(Xomg2@c??MH+}&1~Wx#i4io9A8_`dP{IKbt>39h`=*-g7|z7 z!SK$((Z;rmD*T5C>s=V0XEE^4GBK(&s^w}vVtF5=jISdwuaG`Y5Nf8erS*~P896He zra{Wv_Eanfl%>ySe!B|fwhK}d+g#Y|jME3(!>=ChKNQp1LpTr)}A_vPhQN|Ym1mN38l@_99Snsdk@j(jp zK8Hd{`M%w;?b``w;gnt_c3{q3l^mg4j5D{tm3}vUV-aB2)v-&Xr1>ip$3=N9RLQ(g zRe#4Y_6zny{s`@*EJ?_YzCn1=ak+PszD>+|?8cxWrvI>x0~_*n!h5DKio$eYK7Els zrUt_V`wcgQ`F=}IO7Hou$SvTQbiL_WDtSZt%H(A*lZKt*uE()Yipe#;e~Grsf3s{g zVA!_Y_nTNlME~7pZOY=ExA=&3f+t=8588*j88r5DiAVb71d$TZ2>V+vF+H2az9Q7f zc1l!z3wO$Rg$UA^{o#cpAYUs>wtp6&!@Zf-!B*}KZCgQAcCcxC8M}>g_Fg0WXw&kY z*_%99^2Pqg-MtSrl<(ZGin&Xv%Q~PjyfG{aVN{G2YKZs3Yj|vT>X}G2?>jHQaIJV@ z&%dV23Kf#G%u94xi{d4z4_d*`+50JM`;OPel1Hf4-m5#(_QX7=FfCyK(nL%svLyfg z-ZQTWOBmA<1sno(StT8mutdeqj%tgA4mAH_8G1bI5-O^FIVt{~*UVYE)v>8bsn}vS zIV)GMTV|rEMG5FG=4F;cVr;6Qq|%pt*sDDx3L2_ilk{ASZYB0$*TQPoK|OAztu#gE zFZPBCdd5qXI7+BNUV??fgqQ8zn3AG@_k@Thz2ZRB0-WdrmV4T%{kb@(q53b8_YUeU zC#BP~Kc0DNSxNYXTUrn6`Iqz71lkl&L9m4wS&L%AUy%4#5S>GswD5g17CcLVp28kh zm@&PaZZ+$Z6^kdUN{n&tT!FOQB>?QWH;%jw|hZi_7&(i zAK@CobqQBKb08{4`}vkdsk)``G{{ZJ5LTETgaCzA7=M%ELv#uFF3qDt(MgJ$qrHN^ zp@lDv2}g6+?a?Ei4x6e~k$bUDV-_lR2J4u1lg`uzPM@F=Dq=XdP%&FLS{gQ@E6&wu z|0Px>RJO(DD)&`5l|dqDc-75@43woI`>vbF6e$y{}v?qvYk(}?_GS5CETD+op!-}Vu=%ProD9udCbCmHTMDbQJ7+~x4 z01{)TROumCI8c$3%c!v91Uj#?Z^W8N6(!PnOm5} zbgoKJve^B*y+cs2Nlt>t?<;k{n^b+G2uqMl^(QJc>VHx+>q&)mLa>okIywFp9ETXa zZ;8gWVw#542_PcLi_D)5wI21aicic=RD@{9MLxAthppMQHwd}PUC1{mlFEkb7>FxQ z)4vCk!H|KKsh<);kg}2eIN%z>9!Fd*E^$prCe8jim{Y*bkT{_D-Nt}t_{4lFntDIy zG%v-|lU|TgS^oZcksg4Dh3#)*W;hXQzE?$TbWe1$74w2tL@5nn-lvo@1qQ|h$ah*= zFSH6NE&H-)oP{n4QlA%+7Of&8(iRdjJvAvCzLvJ5fIV@IDwFoU5ZvxGYjl!PTf6<5 zvE|x?`-&Xb+Y^ZEI~d&FO5)P4`fkX#fSZeqJNB<)u0TLfislldm6G?TSy8eEQ;h-q zOSE@NO*~mIDKIst^!*u?)d`7C9VAVsK@}5Se|{ZF*q?^ zo47`Yx#PsfNUkF(3R^>h6>w%NnN!j+>^nhF`Y;aoASjc#xnd><5O`mLD;brh2}VSd z9WnzP(x8~+ky4v`pC|ZQ&T)HJ?BR5b&^x=0_I=ipn(bT6P}EI9HDDM zC-D6WaW*oE9^JWzLk}b*9mrXbn4@Wf?`=m?^o*ngb>iM|6`9@j4=+ebtiPm5ut@vJ z!r-KUaf^|@T8HM7Tmp)c4RVJA*PrZgGL7@Syv`c3rATITcXH5-ur|P(rp#5Fi57QF zB}ow{ks`rcgkEGZLHon--9sNi7X8b;;#@mRrNr|l2Suxi(qz&?iAE0BrSXtF7Mds% zyfu%uN`+!Ig1TCpv=jrwbR(OhG#jm23L_7vmZWZ0lF^i$n$Y!&d5-m4svp|+82rZv z7@d`IM9JACEe(O9>fl(t(%e%-#`7s$n}H*vd8dP6Jxch72i(F5t|oXqCjS*OAxgYb zDe-!5lEmxJ&E>5;QEz?A6c-^+yYt~`*L}~Pd-kX6Ic1-My65{OQJl|u_Xd-W?C(fYA12eM1I&=} zqQ(0N%q;9BhHJ$nudtGZY5ot%K(nlVv;R^dG@0g{$=Vh-A0Jt&M;tP+&!^cR2T!!! z6vsJNqhKuAO!GB#4_QTcL$`ao^od`ZwrMj3d^6Tt&nBe7#YkCf<*NUR~H zcRTunj;U-620t_M(UQY2%t?JNCTWm8E)6M1tT04d$~_p1y}C^CYbhAWPCGCh|qD-c5wwFwpbU+XcNj z%=#MOVjl{^F@Cw>rSr{;^O$sDy$10lnghj2dV*OvP#y!O$VhVkusJLs`MnqCPSod? zvWXw2Ozamed9=55dg1163@-EdKm31vg6GROZPmhF3&lno9x0w!2E={`#8EnBZ_ zg<`HA-PfGZel}NG*~sGD2hcGWg{I3_lnRMkgSf{x&rI!`1v@2WbumF_zXeIb&CI@Y z4_ruN6s$?f!Y?C1SLOKo8vW5Rk>>qOp#p*GR`P2* ztuCF6EkHbJ=9+}}l-g#WAi&_nz3RbEs`B9+^wV6%tVmzl7J~hZfh;pzx;31~T28FO zCIJTl(h_uYi8ec;fR<_|gMnOy3{J^&W8A!nf^W5pjhs@)rVc4{1*rTfOS|*KWZZe1 zn98sjx(!g=gcYfDIyAQ_qKVRNAht>P?#u3{9Qq-21LfwKA(^Z%U94)~V(GoKmxoAoEc3hFpDV{JN#64V-VMTG%KmTh8ApFhxQzB#`l@ zn5Ql%>CUG)6&9oH40!A2mJ{9hIDDb79w?=euT>WK_GHren12m9bm}p%kN&xkvUEPj z?qcMTnB@9|j6o*QcvJT9rbL{k4yWbWl{+JvRn8z){{!X~`60f)Gmk>_8-l0lK|~8W zrM|?xVoh9Lb#6^mV$||;@yfr%+cT)d_}s+QRVp)8*+`B_J-0I~am}jAat6+3eI~G| z%AHJG0?`5XFl~BDwV1NPi%P>M@E}SP7t?YETwYiig9SQCl`%fvOZsB2zS13TCIedZ zN%og273Kpl3YOn(e^Ox-)?S2xK_AkBe1nY>qcC~BqSUVgcHjf?cj~N@>L%y?6^<(f ziwxs)y0de%2F`j^^lc9A9#ZS{m@Xe2h#FpxnET=X4W|J5mRL zy%nM^?i2@4pt$Lh$tjQfAPX0ID8&U|s>mLlm@J#Y6daO){L$Iw;KQe_uz#&;`Hsq{ME_*hW!FwV}h9g@>DdCuWZnoPyH~n+W$z zSGPyKymbDR4@4cE$-y6}2y2Wa&)kyUAhWt;Ijh3ic-K}5OEfX9W3y`ik-f5e#o-_f z-DaWvDN{rYM)z1cbueC7qF!NosqY#lhGzC#6QeG}Xo)gS4hF@tKTzZv%~}%Y@W0wV z7K3X40_uN4K?==}AZ7lI7%RbpV-{lXcGU^^j!s{41>|5I*ahL#V=Y%Pn!{f2WD%G* zO&r5~K+DHPoxyMuGlb{SFrnM-63z2U)!pUYx%B3R%x8yHvHgq0H2rD7gTaRHA0iy{ zf)91~cE|P~n|I+MVi68(#V)Oz_47=!Fy=az84W4>i~5(s<(tDOro9&iEBI$7hrtSi z(So3-z1~o`IhXW~{qUwPE;GW~MX?Wt@*nL<#v+OU%beJS{8_Yhmqar=^66g3e8#Z= zeeVe7O31Vmc&|-QmlhtF8IBf2|L93zbEP=|W2;E|U?=7KhRA3abad|M)z06o-XV{# z;Zuy|0dPRTq&^RQwDr^*$=V@US-B`Oxh8Ax@UG6KOVw3cX|Bn8H}c0x*hg`*{WqrF zhzGcQy4*p)cN0E`y|^F4Mfmr5+AcGmf|c_^o4ZgdTLvLmh?~?;oiCRzn!f zm-!qfFkwl>s4mjN+ZNC|Eqb%OB=58)w7>tf@dGheZ3x>Kj#;%n=!oim6Ha4HRvXWW zrTCuD4cGDB(aCxaYUiEN#z`KL>^ve%FwV}SWyJ-a!|bQynGCSQUK`J)VQSe(hA>Of zd89GK$Nrh2z*vartw@xKZYtS5J|34NdT&UcyZ$5TP{tXD^4+-4u}o@6aow01KBmkM zBNI~tj5iZo*+VV5jFalpI(Q6#UKsbqOHQ`lJ8)~c>iu9`8U=)TH^A-<(}m)eB|e~M zzg#9OR-jS>n?5zD`Cx}URd|oMZ`3%3bsYKOzPr#wEmvFKV@Jo^_v7(RcHUe=gk3?n zGW7l7RlE;}UQUST30j*Y;|hAd)j^R`Y)65hekT|U5OjLV2$9GEG9Ex>^Jr-&ek>?M z+!Y!X8UDhqCKIxZLxYqr;k`hmq>~RRd_&`jt(emSi^G#i8oqf?qg{Zfe~n{pxilRR z>u(hAKd0il^o#O4IiBd2^TU%M=XXNR@6<$oF@gNB++tGo`OftGhM1HiyzkBNN+yKN zkdpdfo$O?E)ZJefqBmSZTd@BgCv(W;m~5`X2SiPuJf7BeW6-GvltZjeOA7YygWB< zI3~Bk@)b54=9Z@R6q1)T7Zq}d%=rMZ%JsDGm+-09pY{G}!6mG3LF>@ZEd;LlOFNE_ zcN5&^M|g*%8n9#Jc9s3*`02yIUxfFYY(9fBQMo*|@AMonQ7%(ydv6Yj<@?1rVSFXO zSAZR@SNqwOxQ&n^(-1i4DUMksx^@L#d6wpEnv7L|#@jXLsM||O88#W~{y&&42 zMc126vh;SM>w%2Gao(C^2UiRdSW{X8ji>v%<*HajraP0$`;An6vD_oGP{PyPttMMr>4Jd3t*XB!_|MFYqY_4UkH7kVJ2ymP+}{xOe+_ z%T+=ksVUwa%A0C2By>AzAF-_xb$WB0%?gO1 z`NRc`D9Ed$izg5f9s-9A2CA#j6+Ks2&lr?s?IrzT0tzs7MUn*wf73!UVUB5&)om(j zWL39s6prK3b92mC`GQk<1jK?dYteXS7#Jq4y@r&R$Ql*8Bz(+E+;0$xv<5oFW8*0J zHfKS=bE@#9aLmyH7KYhyh->eUz(#c3-!|}Tp$!)OL%HJ4*)-;MP-{*{FN#kFIT^y( zU(T_E_R)~OEHTE3E(z}Ot#RmfLN6`U&~k&Un<@k){)4%mkH_V?o{Kc$60oLv_s@A- zh#f>;APsNLc>iIEWcSZ$8EwP5Drj&Bg4DJh0Xd>KJ~-ZT_7cJWGw8*cVf(`K!@WJA zU5Fl~@BMLN(__Csex{e~!GT^I?tO0@YNaH-0$dBQ$g&s)B-yxqN%?q!LOU=n!xUzF z3VbWJS7O1K7#PQZ1l*V%CTlyweS4%O9-NYWXMB3TN6>fwj_Yk)CvhdzN%jP+XN8^s z?TEDcF$daw2!e{;GbeTwx-p&f^H3;(m|iIn?Tay={gDU-g;@B12Ee(U-o6>h>T?>n zJwpq$M^fxRX27T?bjBy`n+5;AWLl^8y*UGO2~1XH$7tJJ3O}JUHfdjqPVGH9gJfar zMHZL1a~h5;+yW=_C5c$_rBmCEO9`3t9TFsFut(dQGg__!=>Wi2J8pa($|0c)_A^L$ zWcb$^gs=L(0fb|uiyZoqgZ(TSg`=9cQ5g21kCOCHV(q}584em6E=(PxrOAK)a`q*QVp8hBy`>&lyW+GA6%<~58W_Kd%~ z6|l{Ru?ALN4|~QD?POMrG3i_KwA+lxgbUdW|Ef!r5Mj4Q*!UD>#?rI{jOrrAtw}LO zRxW4k=O}kXj`^8wjRqZi%lN`~wyB$q8EMVxhSbhnMcmo!?BcX& zrtcIYnO>kno3`PcuVyV5ospK3M?7ECAL7c9>p)2QV{OMkv%@Xw?+8ya$%VU*7we05 zmv~MbX8Mj%82Z{@p|r1yZwsvqwS$jN)Y#jdi9#_pWuU0t=e;{}qIduNVOcr-e$P|S zk_Cd>4*9C*?CN>)*%)SVX2=d}v?0P*HHRzt0A& z?Cg7nY_;ArK(RY*~=uDh8oXxX`qR^?DnJkPXQslHqwFeXHE$HJd>Y))oW zHbjeE+w==Y^$n^ogZhS)Hj8S0C|3W05c3~lNqRnwX z#(o#oaZIcXnPt+_4e>j48bT_*Vu>#L58Dk`^7zxAJb`$66tOOe>}k*@U|kQE(=v9R zA~q!I!2F;O-ru~KvBy&-7gf!c*#0K{<~E+vy`J>^cXg|qjr`?KUAUFWxo26^bKmAP z%YNU7iT03_IKjK}Fwd!3X&03*TubzCAY zVh;gNBYvaA-}m~KWHl^r82g!N;)Rj8ljXQR&;pcM_&Ag(#A{ZBs9DpT?M!}K#d^ ziARX)Bm=a;lNv+YN!@n&W|0xP}j8I2wPl~2GW%AuEqsiY&{$BErmK_yd zOOSR;IK+_M64uvM8|?+qRXZ!wI+(URDk(K$v>@=@RzFUIqDTnQs%#)6`BnZ^@r!qqf5l=bTN5m%`$=^cHYR?zKg1{CHVQ}D_ z50RZTr$RV)^JCl`#6`aeSZy!TVJ(6x7|sne#1&lg*rn{# zj4uCz`jsMX-lO3qH(A7Jd z7LGo|XYNViJuzpl8G^G7dq8+4qt{f!;zX59oss@J*-8U-!cHK@Tld$1yNxM66dIPb zlk9uq+lH|fj5|>rHdNW;R|X~h3wB*$9+}RHF|jAx7Y*qQiKdXmR`?)sYkWEI6*Kip zQ?u{~izohIxnZUA@)Ws-^-*w?YnebYEWtLc%pg8=G+cZ9j)>mh!WhNH+p^&!GdUBo z5d9acH=x*KExxp#YL?S68(Ml%Pl2_kfoqf3=gX_}v0SOh5t(`++D)J4##e3N6FN^7hHNitq^08@AFR=GBD3!(;JrT$QaP;n`C(9ffKB~7=dTP(t6C1 zee{3R^(}Bwm3jZ?oH=IzIWsWBMHAGSGhEKt3@`^%% z?b7C@VQrT-#df#$r44Lfw>GJ1;qsEyL z=UBA3vxbwkjKnbokLwUISW#|reWIwE6I`zN7Wf#Qs1Z70&qw2ZEcURl+Lj3%34zHC zuvv2xPAt}*u*_-2PLZ`Z5$LT`8y(*$gP#P`Nh%pNgxE6jX+8xROu&J8>hG*Q;If+Za|dfK=$ zeZIM(%hfXzS;`xnUGA+x+>Ul`h&>~$Ovjnx+GtEd^;<;UmBfG4zww73|IFgZzdLSi zcD~WQm)Og}GDC2gfs0Y`c4W$N4CZ@KF&xeh=FKr<105M%Z*99#u-Z=V9cvM6(_0aQ z7u;=^en(Arcp$3V$HkrQrI;8s!r>*sMYoxQsP4PCR;XdF{0gY#<*)gLMg$X`ZP|O? z5Q}2h9_|Yse%p+==6m^tMN!#04wOg^D_k-JLJ&{!Zf6ui94OJ$qI|$3AsSIi;DGR zB#tRUdYZ6wIx-VIh46KpRYXspe}*JX>+`4E`JiS({!Dr_DC$IXjvg~OyN{&KiMq!M zUWnxv2fk6tp`wiB8v>uH7UB!Bn5U#`_9)^~0^6BpU3wYlgm-f91`THhH!{b7?I&-} zde{48O<+N+hir(B1!SA(jaw@+g|yWMI30bnDR{{-_7FP>#&foawkstn+|p5W3*;#; zTmsD9c`Bpi*@LRDWCCNQAv1RXc}-)E(0wsZ&oCof41y&wdk#V7{vBfq0$N(ur20k` zQ-(>Hn`-`2k?d4W<;d02L?|TNlsq6x`oD#DArIaK z-!#b zh&(JUpVPLxl>}b-xiZ{!pgQ86Cz*HLOU2vbrNY~)<#FvOu9v${H5zN+^r%?so>N;? z;eU|niNegI81wl1E3yEJsP9P(|DqBc3p_{0#ci9H|6cjGN^J%To*zg&k@O9(x%a+j zg7<^7_@@o4Y-z&PagZ~JxstdmWaX$Y9x)lwLb8nxeRO(X1>oda(yFYD4fX_ZVa)?1 z@!(^k5bOWk9iE9>7)?C=Dz$v0k z`6uT1FL+J42B{(pScT;7M0pKnY@^}soX>F!UY9+@v`Un?aK-9i6h*R%CfJSyEODyIKFl%ttg&Cb@GeEUR*c-b{2F3WUM7SJ8YVkxaZ^|6`5jdj`bi&Zi67 z<4HS1FDNxWSVKhSEw5#c8EbFBU^F_2t+>QlR4Wv&;n@oBDp|~JrJ>W*Gw6xirL#hU z)4PW02B~i!(_^LP=NGQQ1j335pu^T6+1t8Cn}I>X;0j$O^T=Gma(!Ou&gF#Mxa^K8 z=z4C40#7MTb%&>QufgHidNbq9y$1jp(%ZcCmPQAzg@@g?%7f>{)W<^6*R*`?`Uj9S zL_sv-MT|VOR&^~puuYL|oa4_I2u5kHId9HJvbQ+3L_wZVqCT0_pCE3G(*eyBz-bKl5AfgEU46mBbbzMj2j zisJ~L8rq_O;LU5pT%ghJ;9LV@#^jkx(=guHj_yJzwZrQMlvzsv6s|fVKy8HrCK}8) zp0qMvzy$~^Up5-j;0L%g7Ldj07yz=;(}2c$B?fv8o(u8<8&slL2ec#Jc&rHb?>DrJ zUg}oJa$tN&#@?uLy68RBWu;*sAKMC0OU{h?)ibPSyS~;Dx2yj}7!%+sbL^Gfzqae| zC@W?w9D(~NHv-EDHhY0(8eKLW4-sE{uTRt+TV}mkEVix|4Z?y#yPjL4i00T`!s;3Q zTkSkS|6IcU_sMxZ6?Z8MH-ttjPnl?Y#+-f+xt%zVtjeWN%H zZr}y#2vU9d71`R8ylv1ekdFp)6($Z8CFF)!rcK5PRDBkh3^vPR%9`tHNV;3o5=qcr&wCa6$_*~E}sH}f=bMp{VxigMg>XUp4H zpXQ_ZxptbHMNXPq$-C0ff=NZCQsZ2SF++OWl{z4?sWi^};?`z?b7Ss}4M|I+P9^&l z4vmuhtZJYTcar0j?b5-k+A}TM9!R$aCi*7i=V&_usT1u88Lwyu+CcQqIEQMBXgXwp z;noW@Nzn7ClTHXHRu56IVz6RD-zYsKkDVH_5z`X;hFy>7Akfe_YkfZb4gx`*3AhDM zNN2BJH-sZC9b9u!4#MEEBiKDQ9{MQm4DnX=vIXs0UbP=6=bY+%1wk^Xs>7I7!-^Qe zhZ5%%RdnrV_}(T7oefqGtU4loJtpoQMLUx^-OelsLg;~ z8R#@C(t)IXi-dj2=?^2>rq;X)m{OLG`5c`Jn6`j4o3cZ@Xbf~jiv{2k2l-?+A6-sZyW!(Ey5%Gkd1vz%e%@IqHozrJF7)jj* z#JLdJ8fFmV-@wn~H%5b905@qK*!n=1br&Ba?K9bF(xRyk?0et{{66sd&_iSfdCiIS zX2jWGhGY7Cg?nG-L!Bf;h0KHhBe>Xr7vzDd^M-P1IR=p>zEq-RvBzN65*vE$VSrA}=1BiI)`0n*FR762dp4DXGx*YSI}AQ>-Dnc#5=o^ru6k94?o zr`2N(TZ^oFtsT}D>r%vQ{npQ|7p-kq4FkEcY~cay)Hvs=pt)<~okf5TsK;F&QKy!6%(Uz2 zdkGm@np_Mh1-kP?+_ISWJj`?4hu`sKkTz+wagMeFvL*%%kPl2#U3B<{o5}~0(W1cn zU`CyAN?3$Ku1 zg^4PV?$6rpEH`2IVNGQw;_>xxsrS)#O(7jJYMgXRLb;`XTCHf}(EfGeKz|>b40sG1W`E;xyHxa2kl0+lFdC^TQ`QKDb)*Ro7X+OlpFN zz0oM#K_V=C#fm1#^}rug+p_#7QVeg zV_jLBC3C+iI3+Kco_=(KbVO>|w1uSVh^8%+6m zDjpx8>Ze=hVBgTP4edIqrxA{fw^x~67hzZnT8__m8}ht)sD{w-;~Kieyvr9>#?sP|0MgC_^jp|&u*NRRex*G3^GlOu?5l%S=*J;@WFVH|-PaN_t54L14c=TMRcJ`~a8G{zIJr&e7h&6N8G@&Q9Rh_}ng zjbK_cl)IdK#B2|}fLL&&t}V5C^(X|D?kbc8%;b8^j2a-rh!q2WQ(A`AZ`UlE)7kPi zaB`n3PQPf&wy?Y;cv1vg5>jPi9kVS^@caBpM7x{xZL9O^AV8>b4)BO{6z(kCE7@j( zZhvyVlWkeB&6I@X9V-(g!Fc%xFfWTbNl4$Z(jW=bqsLRd#N&$GZ~Wi&HcC&?c>aV! zsXkI2&x7s9wnovNSR4bWpAwy6SgQ>i8SN^H(7th5&B?6_)zHqAKN?-At^29+Z!yX? zt$KKVyR$c6U(!wLhJJOisX$+UQz+kjFFi~eK6Deq*!@qyoe z;`LFSafaLpYl1e--3BW38amAG%nZ&k9L_YD7Mt)^ev;a1T4M4d)9_WR|In*2l`8?d z9n46Ksn_9zmfdPr6sOIm+71YO44+CuZD+e6h0eFM#(>i!m}{7AA(F*-NwNSDTw!qS zLMA}G(va|e`5E|xUtVsw!z*Tjs^zX7^)9~8dKa>wsOk?uOsd^cKUKUgI#&Cun1EN>1#K`a~%Q{76Jxg7XC8^M8~y1Ko=z59x9mADG6Na(TPT?_u#sq$C4Z54EB7XVAqKO*9IIq z+Mkfms2d`5Cu{FR3)9d-!9E2dw!3M{6`d~Fl6TZ6NVdzfSr__m>Ay2d$-KNuqZymnJwn3WO8t0KlsPMI1h+ z)cupw1Ov@ILT(by&iN4TsZbBu&-{6Fw;+rNx|C+LW)b#WnM=!eAD?IWSnTKzLuo)9 zc4uF&@o--!dgs;wC&G%xLcQBCtv_$Ws0GkHD#3$S{jEpFPR z)~M-7x}RaRfHc~|-8g)&K(f~(JlI7ZFh62&wF7~&*#Mk?jh{=z%EtF(abo|2TY;Ry zy{{psq%s#p59ZBm%+ZOvh&-5@dc)EozK5_cSb4Gc5Ob*aU_$lrbKjw?Lwm>8o|g}G zk%WfR8~PGbdYJ}0)3bs)TO89-oHb)sPb<{`Sk(%up_1u&fYNS)J2TPs41k^54Olaj z_;l(hE0Nmz(+Nm)clL&|x8F9G6A=wJJ+O=!Z(5ojdu|`@~U+^zzWbpjT~!ersCbn9chAS_IA z(n!8Ly(SM%F@vc$*u4fxq~%uC*;-@@{Q{fYlvdEr=ElmM;!v)^^<%~Q7$TuE+wXDO z-7{{on05P`B&NchVu>XcuKxEhtTuxQV= zoxWO|q=4>J9%@;u*1W4T- zF(c?wc)mdZU0LWJMZy=Ow0}IWd(%|{1S=}4C&@%lLP|5TbxdqE{9ef@XC--3B|hb> zCEea6G83>(2D07c_nIHYIchb9Kf+xWt;o38P|v0`q@oT^$r6*>f{mdj zW5->BoAt6BY}?cy)2?$078WJ2$t@2%#3QD zka5V{>K0h!Z8a7F=HiJ$1PL?{QQJyT&$YoT#Lq@BFmqye%^nyW4i5PZcJ`XR z;4n%XA_uJGZ4*o!cEv*Oo-%?pEQIU1q|_YYdJ$ioCrr5;&sjC!1xq8eFM?M<(#jznaf4q@g1rH?CQWCaKugIU?qo#Hlpo}oyzXt~@E5D!EkWRH@ax2n*lNiq zo+l?7zq?SP{wk6yid<7QfAU%6{fczqjMt6j5(CjRS^UUYOs6A~&uvSmzgmhG5CR|o z;jrf$!;5>gNXI!w_tV`v7+J3Jba)~8q@ZOJq#KlisCUFTQLBw`T@yUzlXY1o)A9LH z4OkT}6=H&W4oLLctpnU6N8p5uFclkCb@j3=lG%y_5oLjR`I7k3^8~}WG5}cz67|2BMXX7J~W1TAt zjJJU4QtG^yI2vxohx-bQ@dPgk5M%|_DpKg~~@-RbcsT|kLP^W0;3CH#M z8l#)3t*LM$V%tb!$>|*KmYu1F%3beACT@fJBJ-D#H@!Xjrl=yfNLVj-Uz9T_M?3PA zYL5igUVx54!!cZQWSE1lVoz|iskjw%TP9u-3r{Mggi;1C4*lYwQnTy&CAGV1_FW(7 z`L#l=cM^pHUTYy&ojZmjlNpd6$!rfAUkvx(D(13)L?@k*7?sD~K_o{FkQa=r95$DPS@! zrr&=GWAJG>K8&&RP?$3feRI+V?7E=?=jlI<;Wvi|z&~vB^!i!&cJBY_P*iX5%OG;; z2G$310sbl0!4Zn{0RPhk^3#Xj{4&C1|35mScc7>Yu4^XOU9bxb)gh30B(nUt99-vs zuYx#ya1IFz%}#f`ty=1{)35b6LY{clJw^t@*l$?w<`_O1dm?+;Z$R?K`c9Vum8Yh7 zldS*1U&gIGWciz?i>$U|oI%?h*rqrE`#7{{*I-dFg1qU=A zYuDNGn>g+T4lN7)FK3cX^NV2q{FGC-gwGZ387&l0^ysyE#=CgdSoC=$V_syMSoaXv zSTv$1{5E2{l^m*6hK?z%7!H6CL1hYbD`G1k<6d)R+^iSJYktBos+Zn)>-?cZ^uYw->1qAP z-xbouV@|*CGiB{(iVTW|(36JkJ|^@l^=zyEuzidBIBZj(anLcQ{Pid(;ay4nOK|$< z*}udsOvt{FI-k=BQ&hX44{CjOeXMv4@sTO6pC~vZc2}AtEuZG34|WZHyhT`6-M{q` z{GGZ{eUC~0CR4Ym4<^ZfX`{RyIxOm9z*qy1s$DSYrCPFNNecEA%(rgBaUJ!zpXxiP zgH;}12KS58FIP&3%eDx~)ueesr?aV0kabe^*AcjwS=aBmnkL8grnJoL{3PO;w(H?T zMpaaltW=i+Hg;(5AVU?KoJ*~H1$%jv(v|kw%Uh1#gv$)hrLw)uuD^bX>qiRqK>UY` zxMsy`pW^s%sdXv2cQSF7+x75P1N<0Td-=S;8d5i@=2h_p$A%{BPI9i%9d>#q+kyBx znFr*KO*oVFJ~d5z)zPh3!{pSd?&FJ=Y=Hso^k2HbPgDYO{yjKf>qYqRscCBF)^WTU z&cgFoDOR{{%A^-Rwswei>s#W&*_N}yb?!A_xs(nhl3+1%E;3j-Lqp`|dMz9rWZeu} zbFNu8Zj4z3IzQQCRa-jhg+0_YtY#%2H)460S#Lwgo8JiVPKLGuw400srC~5@i&HNc ztDP&O<03MoY*R56-_W2P0)Mu+jO^zkle(RknAn1>ueG_oR5!#LtDVPwqOoEVy=72z`fQC-hz0TK9U>9ZZ{ zA}WEKqw?T#%!5E;BkVBe`lC|4T_dJv|6xj$6$4M6g18OY20&Mqp+$%fwCN#>7Q7!{ z0H58Yw}YjF+p4ZSu3CF-t5n+uRwLG`$PxRel&)-p5A&g)EluOQ`tCsYkL zaXajGJ0D-n-N5w#TmdHpb{d4i1Ha;S%t#ut#o;SJclkKK7)4~cJ76k&$3B~QmP`u4 z69w^Aco(>Lt`Lgoq08sMnv=R_sAs|f1h0?Zbrk1DISM9ijfuSMVTp!Bdtl-W2P9I>8@~ZoWF3w?H zDi+DQSh1V9RBM=c%!?n@+$G6~e{7MGs^Jg>xV@&n)*>-dLB@cfiv!^f0+2|oCYzV5 z6hSaavLh**bU&9g(dW^=`ERne&179q#L|a+i5Tg;k4*@nkNOe@NLg0VV>?=4Oq9Cx zP-C^Nlr0~nLdpXqg%o#m?bQN1V(0mXNj7~L(_SAK;L1@ss7qI1{BgErrqmUK3(HM7 z5=Ru_8=%qs3@UJWA%#jYI6755Z;I5FRA5}xlaJ*ob)^>=k^7MF z%qT#}xfIeNtD7kYnQ5U+Ee=R8eJdlKu#<*Um1iZnyot3TL>sVS%BT;KV4wFqv&J)wF2W}{ubL;S{*uPT7j`J+j5=M zmB4>lV7y7{O6AuS81wlLr7jwt0MdWc`Iib1^L(p7Nar7ty3z`a$*nN1mP7jSkCAPU zCp;(MZ9j`Ul6I}yTDu|ew02?y|Hjp9D5hl&Z^C_`Jjg^3*U=Ab;C{)i+t9c*5_9*g zY38+xY55j`qq2+lmgDZTw4j2|?Rh{Ej{_+o8K(m(5uY!4QM%G#Pe6Uv^Ji4p1hH44 zSz>Lt`X`X(1WR!ksy&n&l>Y?5Qv{&22BU_TfN8Vw_$Blw4wkoAb+9YC(r}L`;s6sC zY&zS>!qmBdFAu{R3EokD=~3>V6CR*Ry|qV`o1K7Zz%GQB7ZY6)*l4|8Qap32&^6QGMFuB+XLR2gw~F%6nqKH%bN_BAnt?VsPq#o|S#j&-2)EmA12s(y=iQe%1`2u2)l zSaAsBVjG$v_Ld$|fZ-F{VjXy38+_`(P+B`CJpjrr>lG^a5c-w88{P+f(%&r_dA5#i zf|Di5x-WvPdj1)_BHo;%fQCMui`B5ux}1N-T57El!(d`hC{C!@TCuibLj_%7t~fI4 z(}r@1{emgl)hp59r$$al`J`JDeO-iD;A+$4Pi$IS6NUj^>Md{O_ zgL?CG2rMKD<{0kz6vv+w6M`^8A_g$nZ91g?zsHdHMaizr&*Y9o{bV-G&(L(T`RPJ$ zA%a3)%w<)8n8${7HNnpS=BfTlxjc5Jm+9|5Zxm%nXvk({n-Cd#n<^q}Y^dPG0CR>= z)T|gnCBeIn5fp5o9_)k2ldxuQ14z$Gx3a`-04WEEtqz|6;OBzaWNq7Q57#AxeyV`r zB`U9IqZ1nw6JSGd+4bs z12SaB6%qsWaije)cILbs#eJbCdYMz*=ndOOP{+@T!{W`Jbv@8%R1K_Mh%>J$6F}8n zvw^&1WkSFo6%T`K(M!bVh4mUx$}cLwX5wAA9u9Tu@MfatoN<13E>HS(x$WZu<20~p zs2yIVcKCcUh4rn7O^_+8;~rF6M-`aVcD;)t<4bdYozxE!xt`CkG~u+bP&Ehce*A({ z6H84HQV^O%kH>e{7{&n;V^Hb&kig8MAhRnwpa}0@q4q%#HQlkm1q*ZR$mxBgF1pZt zVHo5wf0biY61>3wq7}CN0gaL>A-?!4z(m0fB$^xQOU{Rz^iG6!_{VFq=KUshU3pFE z?Z0CS%Mq(zS4}=^3afczeHK;yPNc)=e!8Z#SPKIov=>PPu)u%EipK%d238p!z;_{- z!lmyk0RuXZjCL;#@F$5s<9&;cauA!U;C_=NGKSxsbsaROggQEOhjQ+P>0)?fAb7t0 zy$_GIW937odYTo(WK7^uwt*i`k%hRz()hB%Dt*r0AID!O{$9ji3`K(%b$yg&5IlWg z?Hl!_^)eu^?O6d=F-oD4cRLm4enCYTZx=@#r5Hf3FDdjl7XAUW#IEPov6#(zR||$T z@GyXWNqB$H?Z$sgUGM@S0>u4=MfL+=xUL_w&;t`f50EpnF+sQ%swX-paHq-y7btph zTIhcKE_G?;t|?HX$YjdU;;ErEDV4C7WnU84hH{1w=LSFkOQ*mqAa!Yk(pcghj1!kx z>Fbu+`FhCxTgi(3F@-zsWMy*_tZh9Q$JKjdWOM+W<=$vFXgffj)-fevNeN}fAg079fxBoDQU%dH!PeJ1O2ywY^MSD;L(@d&;| zNct3nv*NRV!?fm5w(jf{26^W_*Hfp$jwcoI5Bwg%2aq88)Ac*9n2FW`8%K3$eh=>S zTXHBF((TJ}$72frN4(7AW- z`?Zx?sJlowyc-|+Yspj5DMZ=hSjwk>KSjsSXciwB6Y=+X4;i?=_L89 z8RtC#@;WhGNAvkyrXrXPe7>ueZH5MBHj<$v#S*=5M!4k^R6xjWRM^I7-cNQ2byCG* zJk#KD)>;TgoX5=KZcV}7fbrsu6@bCcmh=+ONTni1ws9GmVWn{x-BlX^xh;*2POs3n zXeY?->Y(FDUCA(;Q_$IgdZb1ObR0OH^e#yizOArh$n#$ZTNDwVx1xgsdFcH9a9|UQ zDXEjqi2-udm8-P=Og%aDjoR3KCT_N3`$CJiz(e+#0+}#QP8vsxp5d{ukiUUrt_+1t zkzyK|$sv&v!#D{bAR1*w}bH?>aQ@d0lim(^p^QEA z;c6H%p&ycAbdq5W><4iY6q@J8(>@qx+T>wf&pCB}kUEP4&yKh4CN~fL3PfTf=s=9xd9JLK@&b$@ULo)ahit?bFWxGp?q%n zkg$}oHwQ`~N_dpin%*#Ds;GCGMM-`sXd=uOuyWGhMkuoo$&yk_q&$|0G{~QZ8B>rf z2G69r-E)tz_?fhd*TJ0t13q*o3t@%M^I(af}=z6}GqiKkPWh>8cq~ zo8Wj!7Ur*Tpcy1skE!qe(Wa)@fXJ5fAH7dwFvwGlFwZX z7F%zhuc{XY$KoO1qEX+%0oLoQ2>fy!5ioN_;SgrXCdjysM?nRKbO1h3J|S8HPorCq zrKe3fkMKc%0`K`$#GOTsw}TJ-#V-B48=K~h-THmstLG10kSDb93}_Tr^RPnYgC0usm zYiTlkb|PKznpJ}kakP5RZa9>)>$M_0UM}6ZHy7cy449e-11$;MggwsIOyf8ZK#I}v%r%!eB8nLfZ!-rIQ>p&t1)F4*C2qt)@U?~Zn zILQ->?U_Hc4C?SYh(Hj`i34E$JOIz3?iy~nOZILr!~GAWSBS?Nm%5PJ90;RF1E}YC zmEUVzq0yF!{ICdG!fPrVwPv+FyH?SMx)3#Y#f%?(lg}R@;ikY~GL}6QhrsKYhiyZs zriKC6R3>nu3dSI(SXnFb&#a(q6)J(K1BN6{s*FXlo7t*6wp4u6bv)T=#;|{*f%GQj znYg3lPEvX>@R_CtE4(dK^`4Uc6*dQfh1Lhv2%r~R627ORo=SuWUkwY6>jaYE7Z4zh zy=J0-q`3m8HR1=wI?^-T#mJ=3Z88zf|FaCNuPFaUJ#@fDnNSE<_W686z7?as<-?px zt@zexkfPvu#A5=#frk!Iu9c_1FX21kqG;>$-40Y$Ul+8nI=$64y%;a^3vRj{%Kakr z55iY+`E4@&4QmLR1MqixIk~+J6gVvKN^rL`#9kE=sE#3f0$oFX zJlT%qVwf3v`bz@m2zv?96r6BrVN|d-*)KyeOYzg@<`p`kpV)yuLwyK zg`kdw_W-rdfG8V985O316!3AaO-4;bFyLJV=BVov8Tykx`ZOV{1R}&i*ziV5Zo`Ds z0CLc_9rw^QWN4iX{BOlz=eLs_25=1GEaLl#bJSoxre*eOviE3+&lkX0B+8S3jS<{` zAaCU8H1euq(d+@T4kv<->P@14++Nn5fxIZ#$75$;9Y^4W80Nys8VVK4n&I8xvxl>uctq?-6sXjAJA-i!*J}~rrIzBF zjn=Tx`Rwd62&oRdqsF`aaNyO5?I-~0+wZ+mDr`Y$u1!XsbW#Nri&~*VQ&AM_kh>P$ zs!{@2E$aItktO;l%v$8LJOeHeo+J1)%$~sCBZ&UB*$L|j#OvQ8SBxFuc!^#}QfkNr zaN+mMghQ3*HGBrwN%24DGX%eJ$PeX`*Kki`EQFQQhgL!xv}s(|6NPLJBwXl;WN_oa zDC;!176OyS*)(}`Op?qAc3|)kS{0fSzvJ&Gv(4ES&AaKBxqn>5eIAZruz9xyr6ds4 zLxXol+!5yhm>PL*XN1>V2Tn&IFrdjQjm2VRF<+;byEX^4--$&_on&f}4qtaEL+jbd zMC#BVT`kGLay)a0h{0=O>8{tlCE<2}_`4H@CXh!-o-L znS<0B*R}bO8LKd;M}~VZL$t*ks0xPPj?^(=!98t4rw@={-slal1Dl4>xqf!0;Fkse z+**$iO0Q@GcEO)6`wg=RYgC-r~KRnu&|=Xqe5q*Z=;aV0nI@<)D)>U>flEN2_w>D7w{Hf z5DQpFn+qNoOyg9y?cEHN7p&97H?^iwj^4Y3UNB4$c>?7D6Lql8z-^4Q!b%`!&DIjZ8~Q?CiK0mFLB+sJFi{#Hnr+)zr;hmWGLHQ8u}*;{Np3{Ron$;p^03FN0dfu}Vzd0k2pT6EKJ^RbiO|a$@$B`0@PdZ| z2`stsf@vU8OaNN{J*4-dZxg^0Fzb*G5r|pvuw6}Yi1n&+jG2EnPMDbl^H0YMr1aJ} ziYN#b26{Dl6e-%5{W$zWd`b_oWx-2(a>DJOmho5b@C0R;kwE;^`w=W5`Q^HayVPBC z7w9lhw!A3zF@*goW)e(^`5oPNAkI;^+~N0PD`X3Hv)I9_Bj_$%lsDJp?VT2?hP;(D z$;V{C)FH0dQe5xGBYZ^Csq(x7*#AZ^s$Q4UZ%E+q>q=r z`F>UJ`*FMIH{Zw0h9%L1SfR8pk$)Je-8Ry62`N9xR8k2wr>n*w(((DQhG%Ee!(@^; zJujnntcB=BlYUFQhkF9s*~^@`EkR&n`aLHy=4K`5wWdy zW(WlhxQ(D3Va+1B`3`SIW?KHc7KG!EwUFLb_wq*QPhY@pRum;h)pyAvB^odEPWZZe zxijaK@LgkbYiT6jQ?i8>LP~|<0W;@`U}DlvI(@s_u+ChtJ)Tr}h~c!~t~0yQ*L*s8 z-*DHt$62&sfQ9Qn&GvG{0C`djK?ATH(g{L0s4@)ZU?@K#tVRrlf{H{r7o-hb$hY2S zU1_z9zGZsdJ`Au4{c;%SE#^nZ1frW3Y6d(lPH~ITO*kAsm-wsUPpiOL6+>u^fdCE2bl*9bke0KTF4XE8N%Cl zOpO(CWBOiK?%#f!JpsXet{>zf{M!%}_#*pgt}p_9%57*H>R%{6bohAi@W0Ko2e8DE z2Q;reUd-81uXTDveRk3Z2V1KB7g1d4J%#(?0`VOo1|LZqa6T05HK;{SZ;``^ZwNI) zn!V%S^hgz&VAU7SM5I4QyycBiF~K>@iV%^Qi)j4-1GWi!SV)M;8vsoe8O8jrm+c0` z-rWmlm(^ql-KLJeh-J>(U|QTsObd~9CR-PX8HLMGLEVT=DQ%#@-uFFq7ou~wu5|k0AyZLU{kMd@FrtXEK_IkuiwKdVR#^WXzJ9@tM%h%!$;R*O(B0JRYlEPY=VMv zz2b=dDAr-JY*M8FRyGp@5v9IMjU~Pexn-jKGBgBXy}Q2QPS!0KB*%!&$oev07@Vl> zg!ovWPZxJ)fZ6xWV25m{Z7dwe2qqvh4NJ_GshGOAO>!ee*%HZnBku}<8cUR`_}JEA zO_nz$t3Gz$Cxg`ji;Q2V2Hq{m)_AJhLiJgQW1?6`yGS=QF{^00gnUxpdl7l>MkJ2I zY|@54#q!a@^QJB)H9EA%SRW!bF-xk3aD_CN>ebf7V z*D=1dA>Xu7-&ENbXGPw2FE?*HD{gQ-r8q0io5!=062QvK&m=4Pi!N0<40RG%(T?<_ zcw6Ahi)o|j+s|!}5jQw~KFdQLpC;?n-B!uz%262P~hn9z56B2eGBx zTVR3}PJckgC`~!}5~<^Ma_5xEmkVq`jTpqnoLy))wn^}qr}o7O$e#7_&V6th{v61h zlfYyN6sAb(!i4h=oqYNnGT14HW4z#ZKI!#DEO@*T*P@`sIOl$&44c1LZ)53wMHK0iJmrqyIv_rmi{Pqou_Atv^3~KfnZ(Jx0CP zi{!VlpO38`%MrVQ^lFv@r?S02yrC> z|Fb#aiCNBEbnPQddp#<0I-yY_jkciUE$3Dce8zaQ^Ys`>umA-;2G`z;m?xM*|F~!^ zCOb05G&^-@r2K$#`XMbLXi4if18#KPka^mud8%>Wy+kAsIoUY3>a$3kdR()*JD-OO#<3N z+bA|U5FHLyEQJN6hOW&=BiXZ<*2Proc}zg@&g#BM_16hJQwKBJKfAP+oi7x$pB47` z`J~1c!I#d15~x!1f@aEpi_@o_)>=ijeS%YXUz z+kU^K`SrwtXFpxX>^7(0asLC%eBlmdq|ETQ_J1PxnNQ(avY3{1HL*Z%0Q>PWGSV&U zokGWcY&rmR`DS^2GwOXa13yt@^Q?OFOs{#y?6S0m_$3Y8TemL6SnKXVICECuN96Z3 zWp)P7K1kQGDAJgU0Ob=gJFbiUeSX2Sno4b*rulU?J1KUg!LVY3Ia?fp!B@;LS{_6i zK0;1B0G@FaAwnWbw)9pax$9zb*K@`UNr*X@#Gzk%Pyn?V!EzQeYzCP{a4$S$&DD~T zg%Tp%86&TWiLj!bkThG@i1vzwwaa(Zr;0i-UXjey-6{fIOCHFrPO>L3=Ib$l-R9YS zX6uky95rVXe`zuFqD8816!pzdNI8`xl?6{RI5;b{j(a{VX#WAyf1B-kZ~K; z_TX7z@cZhsVa-MJEJ$`J&*O=>cVCzosU&zb0I`Ro98~3ZsIbhLmH1*F5mbxRWOSdDqWWTs~%R=ze8LU@Dp8e}H3d z7m5KLXMmTXW|UBUUEnY<4Vd~oS`Z_#SMP-*UJLPg!uBMNw_!pW{bK_P<)-irnTeu? z`vU?(kYS?cpa4S%dCVxL+?^?!4}Oqp!-#Xwk2@Fi_2%Ubbhd4DBL3iNCip}0iFi3y zPdJ|^eLNj%zY!Y@`USE9iyXk?!sd0oa#7@g2>9^@;sl8*Re!(oT+v9p&I4?KVlcM} zwJSmLw!}J6TK2LzM!l|HL-?pLkr$PL>qe-uP8)g!) zzSc}-Ehx_V^-p@REm6UNEvnEKcv!%+;GrcCb$$5VjxSoTLn=OwX#|f3#{?c|euT*w z$wSW%#}72<2DQX=RnLhLJTa5!XyI?fIdIFvsiJx{7`WFZ@XL5u$)ov|dhJ2w!8PeP{fLQveK5a~eUjBhv2x zFsyPkp2GPeJ>hV`y^3i*nVfkH@m*5l3mE{gId$(EmpRkzx|)3F+)7=Lquy<|pawN9 z@}V#30miMW`ytT#;z+SBzAW(BI0QI>H`9RDldItJL>gu~>We28>pmUAMEp2%b{Rs6=cVTmpz3W0AoF zgwQitZ71+y9?n07ZMIx>?10g4$QDBw0rdzdSL)Rc(W6C`%;)uv=U1fVLP-$$k~yZq z%W1rUv- zss}8!=rx$Y+yP9*^7AAt89kZXj{{Bvy^gqaT0z2qUjW@8b3NeN2f(1y0i?W_n9{9e z6Tq)1@^AzNLMW$C`?lg}B=-vZT@g#6^_99y&;5~U#qN)YwBjgVF??ko4lXkUOcQ+= zn0ZlXB0iPVy~PaaLw99~+*!z`2`7cGpwF{7;C!@XVJDJSsz4;j1E4F(V_%)d@=KA2`g51a)2{MCXN&meX<+lwVj-Y@I$dZF2llqjLgr6s;Ds zz^-0YNiLe05_Ql=2xJ0W!FUk<8)_o(7T0Tvqi!_%PR7AyTcT3~xmH}#rTJ!v&JFG9 zfl3XTgB46#{=bBima}|9tDbT`<8Yg}#a^rups`XI7XI7TaZW|57Qal%Ee!LejNHWhV<)G6aD(&mHi5B zQnC}inOiyweXhUY#^_ef$=uU+9rwlsOsJwbeIlhT%yYpC?y*}si7pHZw1 zC=^t!L)d34G*p-m(J;*Iw6xE}A8@r}X-Hl=ODN4k5krBVjfRx|z*;5H*Yn9H(~3oN zwwZFd!cwcRO%~_^q4av(1($-akiIa6*Jx`7JO+jm;43`i=vS<3`3y1x+JUFB)1Y;Z zhCnanGGNc`7Gkm02lodD7-xnk#5p#zPb9;b$$W%)(zuy>A_cjsS&zt1dfnQZ)WYq~ z2P-z#wgWX&q!x71@%e$+3r;(qEbPxi08GavT;# z_cf`%`h9W#N&cC!wFqK%PZm%*D4&-QkRF;0NS~V9pHC!cVEMFS=5y>y00I1j%mgR> zZaWWzFK;|-+0+B!L7g)urwOyeCM7ug3)4Wb^$aW|GKMW6IJ??ws`_H!Yb*JhNIIej zp59Q47wd)NH*gO@wh5rzl3GTQx&nO^PBV^M1t|+-*Y)MMsortqVZ!{V(>Em`o4{!k zEp5BAP~69;h3TlN_I_XNpZGtZ+Q8dFHf<6z?`2aLb9PP0I3AW!QfJims_8(1GoC(9(Vj20?u}F>)r| zCKIk(Rp0MbeZ-Ya*5X{C3|7u|vR5amLuQ9gf17Hgk@?^>5GaM!R*3L3fgxOCC`Qgu z3fb#l21XtL0H}hocZ@*>Avngz7_SoVC z;`Cazm45ymjC|u(;=x^&gB|YDZv-koc^^Rysg3&zq}~p7h*cE7l~N~1ZQ!= zBOB;v$zfNfo;-zaBv)_VP|4J3$Q`5Mh*n_iDRLF211_x71#J4(6N>rA;v;&Kk~cQ9 z{1ate8(gXhWLiA1!4+24Z3vIL+wQ$3c<(^)Mj+wdE90IV`#xwxx+BLbt1sUOnDps$hPT27N|LPsL9 z9g#9QBcHn-38kO+i3yE9xb3xKZegl5t7ke{G{nrz!LKkJ`$~gq+}`Vp;qD)+S?kV( zcs>x}Q%yhEghEl_dg;LVysS+fM#-$LH*=%{Gms~N=LmDE0Md&f=%PYK-&#f<_gY__Vd^-5`!V#JOB;&^gcKmEEPT|sj`kkft5|Q zr3i3iD5OfRwu)5G8ba?U526DH)!tvAEvBfB1>L#O@3eRp{0-lZLj*LpLVr1!KtzjB zZHyIjN!J6SLihtW**Pss)F$9uRRtqtydLzMXKuhl)fsQJ?bdK;0 zLRT+UnL1{Y5vV}64Kc2?V&(~uBi@8wjXG0OB|Y(`3^B;fCgB0D)~KCBMh~lsPYxOJ z2zC4xk?{j6GKTxFv2|ngGIf!Ya*+()d>i4WF3*||OFVg7`&3Oasn=r?1M zok4#J`%CbSb|n3cX{S(PjB{#Dm6awlqy5lG{1R(i;dK?(+Nw5Jgzotza(o^{y92JV zYf?zyr-Z*}>pn%y zStqpJ-7xhZ>zL}>zlCci=1Q*?MU_R@lF9)uANoiTjJ+BXYK_XS3PVeG!EQ}U9}XD= z

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 literal 0 HcmV?d00001 diff --git a/tools/initialFlash.sh b/tools/initialFlash.sh index ebcf25c..b54d309 100755 --- a/tools/initialFlash.sh +++ b/tools/initialFlash.sh @@ -18,10 +18,11 @@ if [ $# -ne 1 ]; then exit 1 fi -FILES="displayword.lua main.lua timecore.lua webpage.lua webserver.lua wordclock.lua init.lua" +FILES="displayword.lua main.lua timecore.lua webpage.html webserver.lua wordclock.lua init.lua" + # Format filesystem first echo "Format the complete ESP" -$LUATOOL -p $DEVICE -w +$LUATOOL -p $DEVICE -w -b 115200 if [ $? -ne 0 ]; then echo "STOOOOP" exit 1 @@ -36,7 +37,7 @@ for f in $FILES; do exit 1 fi echo "------------- $f ------------" - $LUATOOL -p $DEVICE -f $f -t $f + $LUATOOL -p $DEVICE -f $f -b 115200 -t $f if [ $? -ne 0 ]; then echo "STOOOOP" exit 1 @@ -44,6 +45,6 @@ for f in $FILES; do done echo "Reboot the ESP" -$LUATOOL -p $DEVICE -r +$LUATOOL -p $DEVICE -r -b 115200 exit 0 diff --git a/webserver.lua b/webserver.lua index c61ea10..f9452aa 100644 --- a/webserver.lua +++ b/webserver.lua @@ -165,7 +165,9 @@ function startWebServer() file.remove(configFile .. ".new") sec, _ = rtctime.get() file.open(configFile.. ".new", "w+") - file.write("-- Config\n" .. "wifi.sta.config(\"" .. _POST.ssid .. "\",[[" .. _POST.password .. "]])\n" .. "sntpserverhostname=\"" .. _POST.sntpserver .. "\"\n" .. "timezoneoffset=\"" .. _POST.timezoneoffset .. "\"\n") + file.write("-- Config\n" .. "station_cfg={}\nstation_cfg.ssid=\"" .. _POST.ssid .. "\"\nstation_cfg.pwd=\"" .. _POST.password .. "\"\nstation_cfg.save=false\nwifi.sta.config(station_cfg)\n") + file.write("sntpserverhostname=\"" .. _POST.sntpserver .. "\"\n" .. "timezoneoffset=\"" .. _POST.timezoneoffset .. "\"\n") + if ( _POST.fcolor ~= nil) then -- color=string.char(_POST.green, _POST.red, _POST.blue) print ("Got fcolor: " .. _POST.fcolor) From e9c28e8547b8380415ad9883cabb7c75614067b6 Mon Sep 17 00:00:00 2001 From: Florian Zahn Date: Sun, 23 Dec 2018 23:51:56 +0100 Subject: [PATCH 032/151] Inverted mode for special hardware --- main.lua | 20 +++++++++++++++++--- webpage.html | 2 ++ webserver.lua | 2 +- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/main.lua b/main.lua index 965268d..99f5c27 100644 --- a/main.lua +++ b/main.lua @@ -51,13 +51,27 @@ function displayTime() words = display_timestat(time.hour, time.minute) local charactersOfTime = display_countwords_de(words) - ledBuf = generateLEDs(words, color, color1, color2, color3, color4, + local ledBuf = generateLEDs(words, color, color1, color2, color3, color4, charactersOfTime) print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " in " .. charactersOfTime .. " chars") - -- Write the buffer to the LEDs - ws2812.write(ledBuf) + --if lines 4 to 6 are inverted due to hardware-fuckup, unfuck it here + if ((inv46 ~= nil) and (inv46 == "on")) then + tempstring = ledBuf:sub(1,101) -- first 33 leds + rowend = {44,55,66} + for _, startled in ipairs(rowend) do + for i = 0,10 do + tempstring = tempstring .. ledBuf:sub((startled-i)*3,(startled-i)*3+2) + end + end + tempstring = tempstring .. ledBuf:sub((67*3),ledBuf:len()) + ws2812.write(tempstring) + else + ws2812.write(ledBuf) + end + + -- Used for debugging if (clockdebug ~= nil) then diff --git a/webpage.html b/webpage.html index 7e1dbdd..fad40f7 100644 --- a/webpage.html +++ b/webpage.html @@ -55,6 +55,8 @@ Please note that all settings are mandatory

4. Minute ColorFourth minute after Three quaterDreiviertel Joa/nei +Invert lines 4-6invert +

diff --git a/webserver.lua b/webserver.lua index f9452aa..8568412 100644 --- a/webserver.lua +++ b/webserver.lua @@ -166,7 +166,7 @@ function startWebServer() sec, _ = rtctime.get() file.open(configFile.. ".new", "w+") file.write("-- Config\n" .. "station_cfg={}\nstation_cfg.ssid=\"" .. _POST.ssid .. "\"\nstation_cfg.pwd=\"" .. _POST.password .. "\"\nstation_cfg.save=false\nwifi.sta.config(station_cfg)\n") - file.write("sntpserverhostname=\"" .. _POST.sntpserver .. "\"\n" .. "timezoneoffset=\"" .. _POST.timezoneoffset .. "\"\n") + file.write("sntpserverhostname=\"" .. _POST.sntpserver .. "\"\n" .. "timezoneoffset=\"" .. _POST.timezoneoffset .. "\"\n".. "inv46=\"" .. tostring(_POST.inv46) .. "\"\n") if ( _POST.fcolor ~= nil) then -- color=string.char(_POST.green, _POST.red, _POST.blue) From 6082899391d17672b03ec3902beba612747f1889 Mon Sep 17 00:00:00 2001 From: Florian Zahn Date: Mon, 24 Dec 2018 00:15:52 +0100 Subject: [PATCH 033/151] now really working --- main.lua | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/main.lua b/main.lua index 99f5c27..a2cb3ac 100644 --- a/main.lua +++ b/main.lua @@ -58,17 +58,19 @@ function displayTime() --if lines 4 to 6 are inverted due to hardware-fuckup, unfuck it here if ((inv46 ~= nil) and (inv46 == "on")) then - tempstring = ledBuf:sub(1,101) -- first 33 leds + tempstring = ledBuf:sub(1,99) -- first 33 leds rowend = {44,55,66} for _, startled in ipairs(rowend) do for i = 0,10 do - tempstring = tempstring .. ledBuf:sub((startled-i)*3,(startled-i)*3+2) + tempstring = tempstring .. ledBuf:sub((startled-i)*3-2,(startled-i)*3) end end - tempstring = tempstring .. ledBuf:sub((67*3),ledBuf:len()) - ws2812.write(tempstring) + tempstring = tempstring .. ledBuf:sub((67*3)-2,ledBuf:len()) + ws2812.write(tempstring) + tempstring=nil else ws2812.write(ledBuf) + ledBuf=nil end @@ -82,7 +84,7 @@ function displayTime() end end -- cleanup - ledBuf=nil + words=nil time=nil collectgarbage() From 65e6900c1954dab525fac67408810a38c1799153 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 26 Dec 2018 20:38:49 +0100 Subject: [PATCH 034/151] Add new button to set current time --- .../de/c3ma/ollo/mockup/ui/WS2812Layout.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java index a68c4b9..d6c01fc 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java +++ b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java @@ -11,6 +11,7 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; +import java.util.Calendar; import java.util.GregorianCalendar; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -106,6 +107,7 @@ public class WS2812Layout extends JFrame { contentPane.add(ledPanel, BorderLayout.CENTER); JPanel bottomPanel = new JPanel(); + final JTextField dateTime = new JTextField("yyyy-mm-dd HH:MM:SS"); dateTime.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { @@ -173,7 +175,20 @@ public class WS2812Layout extends JFrame { } }); bottomPanel.add(dateTime); - + + final JButton btnSetCurrentTime = new JButton("Set time"); + btnSetCurrentTime.setActionCommand("Set time"); + btnSetCurrentTime.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent ae) { + JButton but = (JButton) ae.getSource(); + if (but.equals(btnSetCurrentTime)) { + GregorianCalendar gc = new GregorianCalendar(); + dateTime.setText(""+gc.get(Calendar.YEAR) + "-" + gc.get(Calendar.MONTH) + "-" + gc.get(Calendar.DAY_OF_MONTH) + " " + gc.get(Calendar.HOUR_OF_DAY) + ":" + gc.get(Calendar.MINUTE) + ":" + gc.get(Calendar.SECOND)); + } + } + }); + bottomPanel.add(btnSetCurrentTime); + final JButton btnReboot = new JButton("Reboot"); btnReboot.setActionCommand("Reboot simulation"); btnReboot.addActionListener(new ActionListener() { From 70575e78dfa20c345e335f6674bdb60b4ba5b4e0 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 26 Dec 2018 21:41:13 +0100 Subject: [PATCH 035/151] Added colors for Minute0 to Minute4 --- displayword.lua | 36 +++++++++++++++--------------------- simulation/config.lua | 10 +++++----- 2 files changed, 20 insertions(+), 26 deletions(-) diff --git a/displayword.lua b/displayword.lua index a9722fd..ceeb62f 100644 --- a/displayword.lua +++ b/displayword.lua @@ -5,25 +5,6 @@ function updateColor(data, inverseRow, characters2draw) inverseRow=false end -- special case, and there are exactly 4 words to display (so each word for each minute) - if (data.amountWords == 4) then - print ("Amount words are " .. tostring(data.amountWords)) - if (data.words.min1 == 1 and data.drawnWords == 0) then - print "Color1" - return data.colorMin1 - elseif (data.words.min2 == 1 and data.drawnWords == 1) then - print "Color2" - return data.colorMin2 - elseif (data.words.min3 == 1 and data.drawnWords == 2) then - print "Color3" - return data.colorMin3 - elseif (data.words.min4 == 1 and data.drawnWords == 3) then - print "Color4" - return data.colorMin4 - else - print "Color default" - return data.colorFg - end - else -- we must do some magic calculation FIXME the magic should be improved if (not inverseRow) then -- nomral row if (data.drawnCharacters < data.charsPerMinute) then if (data.words.min1 == 1 or data.words.min2 == 1 or data.words.min3 == 1 or data.words.min4 == 1) then @@ -56,7 +37,6 @@ function updateColor(data, inverseRow, characters2draw) --FIXME magic missing return data.colorFg end - end end function drawLEDs(data, numberNewChars, inverseRow) @@ -81,7 +61,21 @@ end function generateLEDs(words, colorFg, colorMin1, colorMin2, colorMin3, colorMin4, characters) -- Set the local variables needed for the colored progress bar data={} - data.charsPerMinute=math.floor(characters/4) -- devide by three (Minute 1 to Minute 3, Minute 4 takes the last chars) + + local minutes=1 + if (words.min1 == 1) then + minutes = minutes + 1 + elseif (words.min2 == 1) then + minutes = minutes + 2 + elseif (words.min3 == 1) then + minutes = minutes + 3 + elseif (words.min4 == 1) then + minutes = minutes + 4 + end + print("Minutes : " .. tostring(minutes) ) + -- data.charsPerMinute=characters - math.floor(characters / minutes) * minutes -- modulo + data.charsPerMinute = math.ceil(characters / minutes) + -- devide by five (Minute 0, Minute 1 to Minute 4 takes the last chars) data.words=words data.colorFg=colorFg data.colorMin1=colorMin1 diff --git a/simulation/config.lua b/simulation/config.lua index ed91742..5b81003 100644 --- a/simulation/config.lua +++ b/simulation/config.lua @@ -3,11 +3,11 @@ green2=128 red=128 blue=0 -color=string.char(green, red, blue) -color1=string.char(tonumber(green2*0.8), red, blue) -color2=string.char(tonumber(green2*0.8), red, blue) -color3=string.char(tonumber(green2*0.8), red, blue) -color4=string.char(tonumber(green2*0.8), red, blue) +color=string.char(0, 0, 128) +color1=string.char(128, 0, 0) +color2=string.char(tonumber(green2*0.8), 0, 0) +color3=string.char(tonumber(green2*0.4), 0, 0) +color4=string.char(tonumber(green2*0.2), 0, 0) colorBg=string.char(0,0,0) -- black is the default background color sntpserverhostname="ptbtime1.ptb.de" From 9aa94b33725b805911872908caa58e271f23d2e1 Mon Sep 17 00:00:00 2001 From: ollo Date: Thu, 27 Dec 2018 14:25:51 +0100 Subject: [PATCH 036/151] Color is again set --- displayword.lua | 156 ++++++++++++++++-------------------------------- 1 file changed, 52 insertions(+), 104 deletions(-) diff --git a/displayword.lua b/displayword.lua index a610e34..bb08991 100644 --- a/displayword.lua +++ b/displayword.lua @@ -6,36 +6,32 @@ function updateColor(data, inverseRow, characters2draw) end -- special case, and there are exactly 4 words to display (so each word for each minute) if (not inverseRow) then -- nomral row - if (data.drawnCharacters < data.charsPerMinute) then - if (data.words.min1 == 1 or data.words.min2 == 1 or data.words.min3 == 1 or data.words.min4 == 1) then - return data.colorMin1 - else - return data.colorFg - end + if (data.drawnCharacters < data.charsPerMinute) then + return data.colorFg elseif (data.drawnCharacters < data.charsPerMinute*2) then - if (data.words.min2 == 1 or data.words.min3 == 1 or data.words.min4 == 1) then - return data.colorMin2 - else - return data.colorFg - end + return data.colorMin1 elseif (data.drawnCharacters < data.charsPerMinute*3) then - if (data.words.min3 == 1 or data.words.min4 == 1) then - return data.colorMin3 - else - return data.colorFg - end - elseif (data.drawnCharacters > data.charsPerMinute*3) then - if (data.words.min4 == 1) then - return data.colorMin4 - else - return data.colorFg - end + return data.colorMin2 + elseif (data.drawnCharacters > data.charsPerMinute*4) then + return data.colorMin3 + elseif (data.drawnCharacters > data.charsPerMinute*5) then + return data.colorMin4 else return data.colorFg end else -- inverse row - --FIXME magic missing - return data.colorFg + --FIXME magic missing to start on the left side + if (data.drawnCharacters < data.charsPerMinute) then + return data.colorMin1 + elseif (data.drawnCharacters < data.charsPerMinute*2) then + return data.colorMin2 + elseif (data.drawnCharacters < data.charsPerMinute*3) then + return data.colorMin3 + elseif (data.drawnCharacters > data.charsPerMinute*4) then + return data.colorMin4 + else + return data.colorFg + end end end @@ -43,7 +39,10 @@ function drawLEDs(data, numberNewChars, inverseRow) if (inverseRow == nil) then inverseRow=false end - print("charactes " .. tostring(data.charsPerMinute) .. " per minute; " .. tonumber(data.drawnCharacters) .. " used characters") + if (numberNewChars == nil) then + numberNewChars=0 + end + print(tostring(numberNewChars) .. " charactes " .. tostring(data.charsPerMinute) .. " per minute; " .. tonumber(data.drawnCharacters) .. " used characters") local tmpBuf=nil for i=1,numberNewChars do if (tmpBuf == nil) then @@ -72,12 +71,11 @@ function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, co elseif (words.min4 == 1) then minutes = minutes + 4 end - print("Minutes : " .. tostring(minutes) ) - -- data.charsPerMinute=characters - math.floor(characters / minutes) * minutes -- modulo data.charsPerMinute = math.ceil(characters / minutes) -- devide by five (Minute 0, Minute 1 to Minute 4 takes the last chars) + print("Minutes : " .. tostring(minutes) .. " Char minutes: " .. tostring(data.charsPerMinute) ) data.words=words - data.colorFg=colorFg + data.colorFg=colorForground data.colorMin1=colorMin1 data.colorMin2=colorMin2 data.colorMin3=colorMin3 @@ -96,134 +94,134 @@ function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, co -- line 1---------------------------------------------- if (words.it==1) then - buf=colorFg:rep(2) -- ES + buf=drawLEDs(data,2) -- ES else buf=space:rep(2) end -- K fill character buf=buf .. space:rep(1) if (words.is == 1) then - buf=buf .. colorFg:rep(3) -- IST + buf=buf .. drawLEDs(data,3) -- IST else buf=buf .. space:rep(3) end -- L fill character buf=buf .. space:rep(1) if (words.fiveMin== 1) then - buf= buf .. colorFg:rep(4) -- FUENF + buf= buf .. drawLEDs(data,4) -- FUENF else buf= buf .. space:rep(4) end -- line 2-- even row (so inverted) -------------------- if (words.twenty == 1) then - buf= buf .. colorFg:rep(7,true) -- ZWANZIG + buf= buf .. drawLEDs(data,7,true) -- ZWANZIG else buf= buf .. space:rep(7) end if (words.tenMin == 1) then - buf= buf .. colorFg:rep(4,true) -- ZEHN + buf= buf .. drawLEDs(data,4,true) -- ZEHN else buf= buf .. space:rep(4) end -- line3---------------------------------------------- if (words.threequater == 1) then - buf= buf .. colorFg:rep(11) -- Dreiviertel + buf= buf .. drawLEDs(data,11) -- Dreiviertel elseif (words.quater == 1) then buf= buf .. space:rep(4) - buf= buf .. colorFg:rep(7) -- VIERTEL + buf= buf .. drawLEDs(data,7) -- VIERTEL else buf= buf .. space:rep(11) end --line 4-------- even row (so inverted) ------------- if (words.before == 1) then buf=buf .. space:rep(2) - buf= buf .. colorFg:rep(3,true) -- VOR + buf= buf .. drawLEDs(data,3,true) -- VOR else buf= buf .. space:rep(5) end if (words.after == 1) then - buf= buf .. colorFg:rep(4,true) -- NACH + buf= buf .. drawLEDs(data,4,true) -- NACH buf= buf .. space:rep(2) -- TG else buf= buf .. space:rep(6) end ------------------------------------------------ if (words.half == 1) then - buf= buf .. colorFg:rep(4) -- HALB + buf= buf .. drawLEDs(data,4) -- HALB buf= buf .. space:rep(1) -- X else buf= buf .. space:rep(5) end if (words.twelve == 1) then - buf= buf .. colorFg:rep(5) -- ZWOELF + buf= buf .. drawLEDs(data,5) -- ZWOELF buf= buf .. space:rep(1) -- P else buf= buf .. space:rep(6) end ------------even row (so inverted) --------------------- if (words.seven == 1) then - buf= buf .. colorFg:rep(6,true) -- SIEBEN + buf= buf .. drawLEDs(data,6,true) -- SIEBEN buf= buf .. space:rep(5) elseif (words.oneLong == 1) then buf= buf .. space:rep(5) - buf= buf .. colorFg:rep(4,true) -- EINS + buf= buf .. drawLEDs(data,4,true) -- EINS buf= buf .. space:rep(2) elseif (words.one == 1) then buf= buf .. space:rep(6) - buf= buf .. colorFg:rep(3,true) -- EIN + buf= buf .. drawLEDs(data,3,true) -- EIN buf= buf .. space:rep(2) elseif (words.two == 1) then buf= buf .. space:rep(7) - buf= buf .. colorFg:rep(4,true) -- ZWEI + buf= buf .. drawLEDs(data,4,true) -- ZWEI else buf= buf .. space:rep(11) end ------------------------------------------------ if (words.three == 1) then buf= buf .. space:rep(1) - buf= buf .. colorFg:rep(4) -- DREI + buf= buf .. drawLEDs(data,4) -- DREI buf= buf .. space:rep(6) elseif (words.five == 1) then buf= buf .. space:rep(7) - buf= buf .. colorFg:rep(4) -- FUENF + buf= buf .. drawLEDs(data,4) -- FUENF else buf= buf .. space:rep(11) end ------------even row (so inverted) --------------------- if (words.four == 1) then - buf= buf .. colorFg:rep(4,true) -- VIER + buf= buf .. drawLEDs(data,4,true) -- VIER buf= buf .. space:rep(7) elseif (words.nine == 1) then buf= buf .. space:rep(4) - buf= buf .. colorFg:rep(4,true) -- NEUN + buf= buf .. drawLEDs(data,4,true) -- NEUN buf= buf .. space:rep(3) elseif (words.eleven == 1) then buf= buf .. space:rep(8) - buf= buf .. colorFg:rep(3,true) -- ELEVEN + buf= buf .. drawLEDs(data,3,true) -- ELEVEN else buf= buf .. space:rep(11) end ------------------------------------------------ if (words.eight == 1) then buf= buf .. space:rep(1) - buf= buf .. colorFg:rep(4) -- ACHT + buf= buf .. drawLEDs(data,4) -- ACHT buf= buf .. space:rep(6) elseif (words.ten == 1) then buf= buf .. space:rep(5) - buf= buf .. colorFg:rep(4) -- ZEHN + buf= buf .. drawLEDs(data,4) -- ZEHN buf= buf .. space:rep(2) else buf= buf .. space:rep(11) end ------------even row (so inverted) --------------------- if (words.clock == 1) then - buf= buf .. colorFg:rep(3,true) -- UHR + buf= buf .. drawLEDs(data,3,true) -- UHR else buf= buf .. space:rep(3) end if (words.six == 1) then buf= buf .. space:rep(2) - buf= buf .. colorFg:rep(5,true) -- SECHS + buf= buf .. drawLEDs(data,5,true) -- SECHS buf= buf .. space:rep(1) else buf= buf .. space:rep(8) @@ -251,56 +249,6 @@ if (words.fiveMin== 1) then end collectgarbage() - local bufColored = string.char() - --function to set some color to the LEDs - local word=0 - local firstCharAfterSpace=true - for x=0,9 do - for y=0, (charsPerLine-1) do - local start = ((x * charsPerLine) + y)*3 + 1 - item=string.byte(buf, start) - -- Color the visible words - if (item > 0) then - if (firstCharAfterSpace == true) then - word = word + 1 - end - firstCharAfterSpace=false - if (characters == 4) then -- we have a word for each minute to color differently - if (words.min4 == 1 and word == 4) then - bufColored = bufColored .. colorMin4 - elseif (words.min3 == 1 and word == 3) then - bufColored = bufColored .. colorMin3 - elseif (words.min2 == 1 and word == 2) then - bufColored = bufColored .. colorMin2 - elseif (words.min1 == 1 and word == 1) then - bufColored = bufColored .. colorMin1 - else - bufColored = bufColored .. colorForground - end - else -- FIXME some more magic should be added here - if (words.min4 == 1) then - bufColored = bufColored .. colorMin4 - elseif (words.min3 == 1) then - bufColored = bufColored .. colorMin3 - elseif (words.min2 == 1) then - bufColored = bufColored .. colorMin2 - elseif (words.min1 == 1) then - bufColored = bufColored .. colorMin1 - else - bufColored = bufColored .. colorForground - end - end - else - firstCharAfterSpace=true - -- update the background color, if set - if (colorBg ~= nil) then - bufColored = bufColored .. colorBg - end - end - print (x .. "x" .. y .. " : " .. start .. " color " .. tostring(item) .. " len " .. string.len(buf) .. " word " .. tostring(word)) - end - end - collectgarbage() - - return bufColored + return buf end + From e4e58bfe2418337448b5e5035ecd8e542534a1a5 Mon Sep 17 00:00:00 2001 From: ollo Date: Thu, 27 Dec 2018 18:19:52 +0100 Subject: [PATCH 037/151] Added leading zero for all values: day,hour, minute, second --- simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java index d6c01fc..ba32513 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java +++ b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java @@ -183,7 +183,9 @@ public class WS2812Layout extends JFrame { JButton but = (JButton) ae.getSource(); if (but.equals(btnSetCurrentTime)) { GregorianCalendar gc = new GregorianCalendar(); - dateTime.setText(""+gc.get(Calendar.YEAR) + "-" + gc.get(Calendar.MONTH) + "-" + gc.get(Calendar.DAY_OF_MONTH) + " " + gc.get(Calendar.HOUR_OF_DAY) + ":" + gc.get(Calendar.MINUTE) + ":" + gc.get(Calendar.SECOND)); + dateTime.setText(String.format("%d-%02d-%02d %02d:%02d:%02d", + gc.get(Calendar.YEAR), gc.get(Calendar.MONTH), gc.get(Calendar.DAY_OF_MONTH), + gc.get(Calendar.HOUR_OF_DAY), gc.get(Calendar.MINUTE), gc.get(Calendar.SECOND))); } } }); From 15a21b78b5b0c4ff149b97a378ffa55089de742d Mon Sep 17 00:00:00 2001 From: ollo Date: Thu, 27 Dec 2018 23:30:39 +0100 Subject: [PATCH 038/151] Use round in order to gernerate always an uniq amount of colored characters --- displayword.lua | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/displayword.lua b/displayword.lua index bb08991..c7fe7fe 100644 --- a/displayword.lua +++ b/displayword.lua @@ -56,6 +56,19 @@ function drawLEDs(data, numberNewChars, inverseRow) return tmpBuf end +-- Utility function for round +function round(num) + under = math.floor(num) + upper = math.floor(num) + 1 + underV = -(under - num) + upperV = upper - num + if (upperV > underV) then + return under + else + return upper + end +end + -- Module displaying of the words function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4, characters) -- Set the local variables needed for the colored progress bar @@ -71,7 +84,8 @@ function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, co elseif (words.min4 == 1) then minutes = minutes + 4 end - data.charsPerMinute = math.ceil(characters / minutes) + data.charsPerMinute = round( (characters / minutes) ) + -- devide by five (Minute 0, Minute 1 to Minute 4 takes the last chars) print("Minutes : " .. tostring(minutes) .. " Char minutes: " .. tostring(data.charsPerMinute) ) data.words=words From 6e80d1141d471b8dfa97cef589f0296fbe8b98b3 Mon Sep 17 00:00:00 2001 From: ollo Date: Sun, 30 Dec 2018 19:10:14 +0100 Subject: [PATCH 039/151] Files needed, for initial flashing procedure --- os/blank.bin | 1 + os/esp_init_data_default.bin | Bin 0 -> 128 bytes os/flash.sh | 3 +-- 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 os/blank.bin create mode 100644 os/esp_init_data_default.bin diff --git a/os/blank.bin b/os/blank.bin new file mode 100644 index 0000000..7de9e36 --- /dev/null +++ b/os/blank.bin @@ -0,0 +1 @@ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/os/esp_init_data_default.bin b/os/esp_init_data_default.bin new file mode 100644 index 0000000000000000000000000000000000000000..3db53ccbad9f34989570ff13679c3e4778f04713 GIT binary patch literal 128 zcmZQ&U}0iqWo2SzU}0qip?`n>fB5j>!Gi}6x&HtE!SLfpke`=}g9QTvBO? Date: Sun, 6 Jan 2019 21:23:18 +0100 Subject: [PATCH 040/151] Added documentation for simulator without Eclipse --- simulation/Readme.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/simulation/Readme.md b/simulation/Readme.md index e897c86..1c1d3ff 100644 --- a/simulation/Readme.md +++ b/simulation/Readme.md @@ -1,5 +1,12 @@ # Simulation The simualation should be started with the following arguments at this position: - `../init.lua ws28128ClockLayout.txt config.lua` + `../init.lua ws28128ClockLayout.txt config.lua` +# Use it without Eclipse + +Compiling: + `javac -d bin/ -cp libs/luaj-jme-3.0.1.jar:libs/luaj-jse-3.0.1.jar $(find src -name '*.java')` + +Running: + `java -cp libs/luaj-jme-3.0.1.jar:libs/luaj-jse-3.0.1.jar:bin de.c3ma.ollo.WS2812Simulation ../init.lua ws28128ClockLayout.txt config.lua` From 3b1e94fe3b3b2c1aa578320251dfa32970c547f1 Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 22 Feb 2019 21:35:19 +0100 Subject: [PATCH 041/151] Halb 1S --- tools/tcpFlash.py | 139 ++++++++++++++++++++++++++++++++++++++++++++++ wordclock.lua | 2 +- 2 files changed, 140 insertions(+), 1 deletion(-) create mode 100755 tools/tcpFlash.py diff --git a/tools/tcpFlash.py b/tools/tcpFlash.py new file mode 100755 index 0000000..a0c92c7 --- /dev/null +++ b/tools/tcpFlash.py @@ -0,0 +1,139 @@ +#!/usr/bin/python + +import argparse +import socket +import os.path +import sys #for exit and flushing of stdout +import time + +def sendRecv(s, message, answer): + msg = message + "\n" + s.sendall(msg) + reply = s.recv(4096) + i=1 + while ((not (answer in reply)) and (i < 10)): + reply += s.recv(4096) + i = i + 1 + if answer not in reply: + return False + else: + return True + +def sendCmd(s, message, cleaningEnter=False): + msg = message + "\n" + s.sendall(msg) + time.sleep(0.050) + reply = s.recv(4096) + i=1 + while ((not (">" in reply)) and (i < 10)): + time.sleep((0.050) * i) + reply += s.recv(4096) + i = i + 1 + +# print "Send\t" + message +# print "Got\t" + reply + if (cleaningEnter): + s.sendall("\n") + if "stdin:1:" in reply: + print "ERROR, received : " + reply + return False + elif ">" in reply: + return True + else: + print "ERROR, received : " + reply + return False + +def main(nodeip, luafile, volatile=None): + if ( not os.path.isfile(luafile) ): + print "The file " + luafile + " is not available" + else: + try: + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.connect((nodeip, 80)) + time.sleep(0.050) + s.sendall("\n") + # Receive the hello Message of answer of the ESP + if (not sendRecv(s, "\n", "Welcome to ") ): + print "Cannot connect to the ESP" + s.close() + sys.exit(2) + + # Read all lines from the welcome message + i=0 + reply = s.recv(4096) + while ((reply is not None) and (not (">" in reply)) and (i < 100)): + reply = s.recv(4096) + i = i + 1 + + + # Communication tests + if ( not sendRecv(s, "print(12345)", "12345") ): + print "NOT communicating with an ESP8266 running LUA (nodemcu) firmware" + s.close() + sys.exit(3) + + if (volatile is None): + print "Flashing " + luafile + sendCmd(s, "file.remove(\"" + luafile+"\");", True) + sendCmd(s, "w= file.writeline", True) + sendCmd(s, "file.open(\"" + luafile + "\",\"w+\");", True) + else: + print "Executing " + luafile + " on nodemcu" + + with open(luafile) as f: + contents = f.readlines() + i=1 + for line in contents: + print "\rSending " + str(i) + "/" + str(len(contents)) + " ...", + sys.stdout.flush() + l = line.rstrip() + if (volatile is None): + if (not sendCmd(s, "w([[" + l + "]]);")): + print "Cannot write line " + str(i) + s.close() + sys.exit(4) + else: + if (not sendCmd(s, l)): + print "Cannot write line " + str(i) + s.close() + sys.exit(4) + i=i+1 + + if (volatile is None): + # Finished with updating the file in LUA + if (not sendCmd(s, "w([[" + "--EOF" + "]]);")): + print "Cannot write line " + "-- EOF" + if (not sendCmd(s, "file.close();")): + print "Cannot close the file" + sys.exit(4) + + # Check if the file exists: + if (not sendRecv(s, "=file.open(\"" + luafile + "\")", "true")): + print("Cannot send " + luafile + " to the ESP") + sys.exit(4) + else: + print("Updated " + luafile + " successfully") + else: + print("Send " + luafile + " successfully") + + # Cleaning the socket by closing it + s.close() + sys.exit(0) # Report that the flashing was succesfull + except socket.error, msg: + print 'Failed to create socket. Error code: ' + str(msg[0]) + ' , Error message : ' + msg[1] + sys.exit(1) + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('-t', '--target', help='IP address or dns of the ESP to flash') + parser.add_argument('-f', '--file', help='LUA file, that should be updated') + parser.add_argument('-v', '--volatile', help='File is executed at the commandline', action='store_const', const=1) + + args = parser.parse_args() + + if (args.target and args.file and args.volatile): + main(args.target, args.file, args.volatile) + elif (args.target and args.file): + main(args.target, args.file) + else: + parser.print_help() diff --git a/wordclock.lua b/wordclock.lua index 3b5c021..37c9d5c 100755 --- a/wordclock.lua +++ b/wordclock.lua @@ -105,7 +105,7 @@ function display_timestat(hours, minutes, longmode) end if (hours == 1) then - if (ret.before == 1) then + if ((ret.before == 1) or (ret.half == 1)) then ret.oneLong = 1 else ret.one=1 From 8c455fda263c443d241dab35be856c1dba84718b Mon Sep 17 00:00:00 2001 From: frubi Date: Wed, 27 Feb 2019 19:50:32 +0100 Subject: [PATCH 042/151] Times around one o'clock displayed correctly --- wordclock.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wordclock.lua b/wordclock.lua index 37c9d5c..c537ad1 100755 --- a/wordclock.lua +++ b/wordclock.lua @@ -105,10 +105,10 @@ function display_timestat(hours, minutes, longmode) end if (hours == 1) then - if ((ret.before == 1) or (ret.half == 1)) then - ret.oneLong = 1 - else + if (ret.it == 1) then ret.one=1 + else + ret.oneLong=1 end elseif (hours == 2) then ret.two=1 From aea5608b7145cb2cfd80d4b90a30143494af56fa Mon Sep 17 00:00:00 2001 From: C3MA Date: Fri, 8 Mar 2019 21:30:21 +0100 Subject: [PATCH 043/151] Flashing first the old firmware --- index.html | 2 +- os/flash.sh | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index a6caac6..a938ea3 100644 --- a/index.html +++ b/index.html @@ -19,4 +19,4 @@
$ADDITIONAL_LINE - \ No newline at end of file + diff --git a/os/flash.sh b/os/flash.sh index b79f680..e505669 100755 --- a/os/flash.sh +++ b/os/flash.sh @@ -31,7 +31,10 @@ if [ $? -ne 0 ]; then echo "Error reading the MAC -> set the device into the bootloader!" exit 1 fi - +echo "Flashing the old one" +./esptool.py --port /dev/$DEVICE $BAUD write_flash 0x00000 0x00000.bin 0x10000 0x10000.bin +sleep 1 +echo "Flashing the new" ./esptool.py --port /dev/$DEVICE $BAUD write_flash -fm dio 0x00000 nodemcu2.bin # 0x3fc000 esp_init_data_default_v08.bin 0x07e000 blank.bin 0x3fe000 blank.bin #./esptool.py --port /dev/$DEVICE $BAUD write_flash 0x00000 0x00000.bin 0x10000 0x10000.bin From a37474724abf7b88fbc052f696f8fff6dbfff6e1 Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 22 Mar 2019 22:00:39 +0100 Subject: [PATCH 044/151] Updated to firmware-2.2.1 --- os/0x00000.bin | Bin 31904 -> 29776 bytes os/0x10000.bin | Bin 331491 -> 397312 bytes os/flash.sh | 7 ++----- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/os/0x00000.bin b/os/0x00000.bin index 19567c0534322e9e0430afda84ab05bc59299bb1..47bcfd4d9caa72ea6b69dff11a7ca77813d635c7 100644 GIT binary patch delta 16673 zcma*O3tUvy_Bg)xnKvA8265CtJ?9`W7^8Crl|dzEMhCI97)nI5+YBl`!W)q0BWMN; z(k^w8(=F?24fL|ty=rCMTYVd;K`1RCOYCYFsSL^#@C5?1e{0WR-~Rv4|NsB|=QI24 zvtMhkz1P}nuf6sDVO_-m7_MRN9sn4`TKjQgZpnMs~siA7d3)-OYBCGIDFgv!o4FA+b7 zvS+y#Y9U@cOO0cWYNL7)l1C$JsBP6ughy!Q--{5dsPxrDrX|S?tg@6raYD{=Q%=t2 zoDy4Hq06;dwN~v7Wn>|ApQ^C>eAX3WR7CZ9P|k>8^+Eu^ExbmDn`q~`+_Ug(W{*E)#$DmPIiw zEK}V_5Mq!EX%Qlq2tmDsxL+W)A>w?MoEID=Hz>B2sl{m=#2HiJAtXIf*MP6(9DLlUf%NyX&Q$rdPt->u9Pc%$D5`rF5x4$`nT$K zq|Ff`1*o@es&^};#C8haob*KL+hqJ|3ceuGTU3PRxP{y~um^+_|K&qF6^&Vi{1 z-_UZQE?=JtbQFBZ?u)POmc<_Z81l!P%rivnZJ1q zveqm_)?OJOCOsaabms?&fx$3%gsQ%hrpl*JRD6m?n6~TW=yk&Q%FkUV)iR{jaaBj9 z2jnH5nF`9OYJ?C6!HV8k_Qo>!zu`RWY-UYb`H^QS&`AwCm?dhBF2!r4LEULZ`HoZ$@XqY78aS)m$G zvdlW4CcibI2_yTbeXL-ezEk`zh}c;lxgv}8kLxS_L4EVMiqFYm|A_vJ*pg<_=pWXv zinaTP^zw0){u_G3I8Rb>O|A{Fuci(2jf%BfxQ32LTIT1-NRgzcEO6j%wYfG7|sp!ZFrb$4y zSAy&~E>RK|BE{q>Ifrp4ov)wqWYx-=4OPi*P z>g69HiWlhGE?3{DYI=t_w~?&F^x1R}vZ@g(d6;b1H~oVoeW?WmwuKPrA|<7ydXQvB z8!>=wH=6MlT5!r!$29$iK)pZHr1CUD++Tw8dnw~F36!rHHv-0PbYliMw2`ZE0fT3< zicJXb2m-$doQ6yFpO1-$cd?H&avHM?H6G8=zl8WpP_b$w!Vl7lE&gWR?=n#f;#V7j z@9FJw%b<^TH`Ag!!L+TVbvyR2V!B>I;x&TL5`YI?o4O?E`Z9&M7X4!6SpRvgzIC4e z{8&ZRRnjCwzoZI{R>f7K#K_22T_Mf74!&Ew*<*%zvAygntK1N?L0G{=^>Wa;6+(^& z9xez2^+{HFLlTU*6Rc-$yc|vf~x^Axpd| z)BoyN_BXbf&5IAh)OUgW7=!d{Fy8}Hy_5~CM7hvrEq@-`C|08N&KBiqea)ZBmD{70 zO5}Qm%dZ@R>K?@UZHWIK>I9Y}V^rWG`M}w%I}q8yzyG|BKTX8%h~4)+9vYz}B4of8 z9vDY=9xsR?xCF*ffr)s8poIYp7pbeat;?3!pTZw8Re(BVD z)Cna}Z1rRxE#F;z3#;g7uCi$O^-PsTp)H#yw6A-y)v2osgYn z)XZ;+B*ehBAQ)xhc9M4(wPtesPoydfHKidSUEfM_W@qG`d9hI*=Q(n07E?VN@tq{F z5Ghj;{M_G@t}*D?kx2dwaV$VhNi?(O1^zprw8M^|?4#6@4v=86$KKcb8Jqd#uEu(c z303+Vk47AaIfNhIM$9jDgK)sF)8U_BvOsFF`lk^81@X`06t^KWk7_)!79+loR>1!r z0VZQO4M1nySpOyB8;M0%H5aLMkcEzWY1>a|TgM!f8D(S@-;warZ5BIh-Od5GnvXdO z)6X9v#}4b@8AwN21F#_?K*V&s(hfvl!ylq!n2p{#ll#)jWABNv{?6FWi#~s&&41k2 zdEA%v9c{qBPQ=#GF~c;Xzt}U!%9{IPv0|!?ogdQ?hIZdw%ATPPcUcY zxMxJ#7GcqHblrEmkMGZ9`EG(^B!9&E#oEwH2x%QBn2!$QYQktE5aS2k=m=#(19n^> z-?k%YbCuu=!;l3_&{jqaIR7zA%*wQk#}ttW_Xees$S0VuMx>F*)q0R0R^KFKb-{>E z0!q!(koB_!sVjO5qxeQzF=lyOF*0#gZG>y*Dt)NZ9cSjJwi-GA5)MBseKBUP$D=q+ zs=Mf{d10&UU4*QB+(=06g6X)0A{O3*i#CfJhk?XG!fvZTH++1B2&;EP`AvC1H{4cW z>zJdhEfty)96=lNsu6&r4#DZ6(_+gU!S7K(ixE659#pd$;(V01g;f6It9h!UD`{at zYK^y0TUFSo*BY)=gLi?xsNE?f5vQ6w9zOR_^Q~xQk{RF)NGz3_IvMy8@cB zOeT*1tgdLubGS;0>JurCHWb;LE7T=1M@@98<8J9++Bn{;3JGQnK4ND15yGZ9{zE_? zlcQS&j@yilLFuZt#V|q&{z1f?VQ1eE0J10U4C}1+wL2jxB-~b03UO(|ZPF9$WJTAI zd;YNWHhXJAXg2X`iWUFpFieMs5*NlYoenkErL|p^2&?z>QKh1k(}Mn0>c)ZJf&z~j z9%MvF9Y)OyLQ+X^BUoULe!{OCwqSr3(u-1f$5mpusdl0(k%Dy|C{hRlbRTXLt_hNm z&mR^9gjY~B_+=EMtAHGk!pz20s}b)UhQ&>5^irJjDueuzP=lqk0kmhCQS}zlpVx%Y zF7nBP!DGb;`CuX;ub2>W9m0Phd;;sF-L33$s~X)3jqL7TvM zGqiGcd06>cTweALBn{=J5Z9)Z<8Ns32S)TE<>G%C>)UDi^-Zit1Mzc{j?ZKBnv|$8 zUOq3cNsbCrvPyv3~nQ5HB(_|_qq;x-DYtzzh0 zDy7i>2Z20vAiopn=un72?*A78ftvLHKp@ZW6au~J|3aa!X&NZ>JAuZJ5@`G=fyM)Y z_|J*ihZKJ$r9K3!#-PjR*NgQp4jsLZ9QyB&|5%6u`}Z_bSi8!@2c_NRHrSHFh-*FY zl2Ly29-6VY-2WUU(R1Y$PMXdx_lA$B<>I?Eok1zoY-`*^EA5Rs_#B1)+#e}riAugq zDOC_6kg$n?_uNfNcnZ@H(C865v(4^~lI{w{zljjYE=6x#U-0^0Oy zbdC>UWcxX^nUycb>Dv2peT~bt%iUK=$yKs0=GLt-2GF|yhvYTN*qEvoQqf1$*emEb z#HrLN{6)fX+7ztt6PPr5K>3K|30RHIzA}|8f@RFUohFku@L%E?UDQwqFv{x>!Yt1F zOeO!B*7+3bRGlSR*I=i3swOz!FoCzC+e5+yHn1U3=s=-7!4zs)JV>d2+|0&jDUsp| z!T+U_I`A5yx;mV7X*I>0lrM3!E+pIhVIk!Ku~zj8;nRkw=m{PCQZR3#Y$(#n0uToL zyWm+e+PN+TxA3RM6Y{gN<7sS+k_~O&7YJ)QhE%K-Gy`BvEBgUUgwIS28aT}#x&(2#nXiU?FOBhi?qk1`){-@zCroR=q+%|DRZSN zS2!WgPF?JVi0`^#Da$B<$*Z7aSC<&v*-rP_8x8*;d*X-kZBV7s=nV^^%1z#qJweL< zma_Mk#u111e-P;|t>X>m-m3 zgaIi0HR8x7VC4vJ)m{MFPZW!wkWC1@0a2iqj4$Ybbr^7v>V86Ad@zVWeG2iI;?dEi zovxkYvHKbqX(!^#BThsRqg}3D%#&cUb^#pSvnaNpmpaapNP&%IW!%i2g=2+1zY%vl z<$_&Fwc#x#sRXnv*ff)hmr)9=NE+470+&fsFF`rEp!x0QcW!&uPPgzOLvS?>3)zeXTd&=UrACSy(pU-CFA{)FH5=6>eM>xeOZE zQ@=$EwP7X1Ui58I8srJ7C&QZ@o50H1Wo#Zh9)C_=uTTRApJcdX!Q(4}*=4uZC*Dw3 zgnB*Y3+*j+MW-NHnR?Q@Ys=%RNO(V-dh*~0iFtF0rettWPrW`Tf{p6;k#iqV`ZuJW zEc;J*?KTvh47X%cMy-QIC)pVMHWjJ(ZNkdShWNK>8<+*wv(;qTk{*Je3zL$cm^X_& zIffS2kIzl*EMSTbE;IEO`g3Yu26Jm};MW|-JEoT_^W7*z>pQ^b+*ccSwzc)jYcueZ z5pygi)0Mb1lgPVn+qu5PybPVvGg%#^yMAC#2NrxqbQ17i2)j&;*gP0LtMYqb@G-cO zqSGG2yT6DMtE-5T$qooUWCdHPjE?_z{0@b5kA~D!H^+ObtOv>~Q#-b#U_^YhCuHNFlLBMd?;yzu{ zQ!%)w^r$xFsK&X3u^cT>qUZ2#owpFX){9|dHXF^Ne&2(oSiAlx8}WKurBdPDilJih zHnH^Blv114Tj)oHI+siAeOOm{Y;gCX(qjX_G{wc@_Ifkc8a-pYY1m{DBV>$C8`0!N z7^y|o3~WS#O}n8FpQcOBy9A$Q*m!HUxcJf2KT_!s5|?ud zv+uyEmz*^hv)l6PRa4cFQvf-y&R?Z|T$r=>-1%M)k5x(-5p&X-rav=bpd*zQ6KA#k3zD})db^U1C6{z8v+6P)Kfbbl#LY!B~HrEA;E&O?ShvHj**u3gLD0|L-HGpPJ(e2gD{AT z8f%hPmBh_Y-3byl{w2Sl!{Y~m)E)d=G19{1>7FbQ?C|p<#f1~IfPZpk zqGj|PXP#PFoTkkQo#4!CD!uQ&rHsndN>56wX_xk3=;kBWx2AGK>t0>tvO>j;!iiKLIxO6N@L=rm zH{sPR+-@?(>eDFM!syVKHI=j$U=h+$4u_I;(0}LvP`BoB)&S+X!tLH=+FYv=tO7@1 zx@{j{-xpK%FfEaGCiCMC!iM;LiP<#vE+=XY4 z!lCE07XAcdU^Kcj4F6J4d>P6M@$}JhrxaAbV)@$z>s#;e`-0*=DBOgTM+GrlNgaD9@(qeRgZ-)6SA0J2vHSM%M8voK(!dlT~og_<@{q z)g0^Gjf9zjF<8$GxYq^EJ}eY!;EWY`DO^#pk5r!~LJ@*fF=WG`LI9lu%w>UpFklL$ zm{a?<%<&A-nhX9$d-ASf09k_YgGtKqqIJA>+11tmIz_eTTE8fJ0pUiadb-`nQn=AV+4+7 zwHn6pkkn~P#4k!pF=dW#MD&f=Us{209UXcS7n`Kj@z0Nl&qMy_IB_&z{r0x~XRH)7 zJG)?sF0fJBAjaPxC?tmcj{m?#3FK!Sc>8s>Zi%jH9r}%7U0MC)16CiY;wwhPN`Q45 zv!k#Ib0+pL(W&3g>s0eQM#LRZxEm`*3;Bmf#D^j0GmNfEKZ=Qw8%M;AknY1*u1K-w zbf#*RwA6en-Xv`|i?FWWG*65Ve2$vtpzQq`Q9o6#?;6XekBI5e=1=(O6{*ww$k-}B z$`=1Pf&X(&`g59Ntl}e-{q`U84_uR)((YvxnNq?`gNGi8NAE)n6g}|<;j^ejW`zBw z&@RRl?8oaUYo`i$kj8j2tyuB>K#|uu7gl)NN(A*wxxVljveeb*{)I|nd*c3^d+&bn zgJFN_L6hLKGrGc9CaG*DR4{XW9_J$i&+LS|5q*w4yVfA*ls3+FPfjuC1LdiZ+aPb& zg%|gzXgm~2ci0B5Z&W9A^|2dvF?DvGK6}J*fK*>5__<-VPwyI5*P0o5w$^~G3lkSf z?=M9FI;$HbJiUI0v$+Nj+ImD4-Ou@m0V!uzGImJYW@XH%>K{GvMbT=FZVcCLaKSZb z)8N2u44C+H*(pjDYVF+IIi0JTD|OCFW*qY*&Fpy7>S1y9u>IxR@Nbu4hG0K%FCXTF zgD$~mVLo~YhMp9w<5vueE1}XN{NrV5-R!Ac0Ioa3a-WS=$dGcFAlrx3!epQ7&94*Z zNN>-cF?P3nX@;{8x# zJnrca(}9f*G=cFfyt{@Z5w2g{qzdl01K-9zHtP(KBq9j$M(OEq(5-9Bpw)Ssx{ zoT$-D1Zp{=J83DHS6rpGl{-|GyoI7QV z;;|7vaY#&pyp{N1zmzdIK7HH};zH}f4l}G+Nvf}t;&6B2RjFtU>KR4gDD6r&BZ-t4+6r}W$0@kKp1 zOrIVEn;FdFK39?{Hpx1T|MiCW>ka#>)A7Tj$R}CHrLY$o_@8cwKS9B4{NQMTh2_%x z`iCO;?{A3TLy3qtjFwc^qk@>o+?a@xABbz2w?NR?TBPE69wu-^>YHasb$kLw$?(hr zFMzm#B?T52u+be3(rt^?0+TUIbj`ZJN0K8mBdQ@-Q)$>|h~cItIv$q(lDTxUw=OvU zF*wD&9K%~d-S<+TlTOC1Dn2B`Q~RZBnWk}%jNpG!g!m)bX$z5V)hmV7EAZEsrIWX{PN90B7486~h_G1~1Eq$DI7Hoh@Kb%#r}H;3 zfy>f#>zz#1rFR~++GS(z?t^}hRt1}vG_&|`{nA$p?qufmNmCY1Vz&27w=GO(lKP~r z3sV?Zztphs_L;>`hmKa%00Q^ca@rc~s1d9N1E1aepr)>l1>zFsmt5qq^HsTpG$Z%vZQ=Wm<)`NE4?cj8fyjVBP;r3oB;7Cnm!;`G$o5c{} z`Sn3@Ll7=|@X#dy3xW~L`XznV^Waf-C@YTfd8IG2p2l;f)r&Hi*$bo>7Bxm(`4(I& zfaa`0+L(O{epIT;b~47x?{s9BVb9dc;Cz=h!Mdg*IR7&UNX?;6sO&BeoriFX4$NIA z7^6&oL2gc+px-ICFs6rXkFUd|?yFm|P9yK40We2zfX3q%cmYN+WN*}6KONu8K= zgA~R-zx9V_uU~$;W=U@9czs|1pCZ-gNDBY#>O{C6pN`yj!;K!3Iw6~J&bVYX-DAzN zfjP;yPzRQ(45q1vIFFO93TEk#XYdLO=%5n0! zOU64S(#4KX!9W;+#c;BcR^M5T@0WhLGXdvG(RXqBrPQ*`uv-yR+Y2rj2*a*}v!#W1 z&Baxc_pZC}EmG@Uv6CEC#5O6I%Wk#HA4LkQ)w)NuW{$wFGPB$9L<#3i(p5c7oY@xv z&!)FQd1l8}Ni%YinI(NveohCIx>GVcm&d((Wql$HvtV6i-8fu14)NVrp5Jxez#SUw zm0otvlQ|-=^n-J{=%JHgh=zlEW;DE|M60neidn^0^#W+ekzli}!`bat1IN?T4zm7T zvgalfp(h;TM zJB&Tfj!7+I_oNd{=dTJy`|t<@!sQYXd*R@>10TH*UQDHvl*~V0b$)uqY-H?=QiuXC zx0z_64vYYB`r{0u)sx1VH!;b+GagNj2+pwr?UQ5#OOfpQyC@-|2U~? z7|Z{M2z4j|n3`t8ArITG@TbUy|JfT=?3-Epk>c2(qBc{Z|3PE+_3Ho4+CLxGpN!Vv z+|LK}@5K}d32}u51qrN%rI&Z?_)1|4J8^B?uF8Tb^=k+__CSQ4@g2SeH{60E7ykQ= z^V8&PT;5$1b!yfEOH;GA}Jq)oNJjjXO-=Y0-Qv|!^GZT$2&(y zzLW(gtugr(>vh|3)fwrNyT^I90FwG!)JeBTl>$PqMN|Sp(0LdkkY_4(VuQfPz0pv> zD^C&ADQ)3z@iqVXd3$7b31~Vh>q9%6z9hBxDfF{0*FLDwf7{Qhsy`>Dt=goY*H-#! zA0NN9&gXk}{F(+~G6gc39nWf-J|iVphC!yP{^VifBDWSlB4zmr*iw>C{S{1dc=5Q9g0o$pJh?@7>H zrW2*sx!;l$%ghP;>5MW-hq?;+l7vGuqI zOEh9e#c5|-$7O)Q|8hz4Ewjwujk@Yl=LM}&KKfEq++UBb*D#LlNdJ@yYGO>p>dOLB zm=hk?w~vP$+s@1VQ>);`xlS6Nw?I+#40YDHKX1zYf%(DoVMaNX9w+*49~_wSxMzHC z?^UG&@t1?*<)Hm#H~#F`FwghyN2%T;YaeSs3BBE+AH`N8pqJ96R%f zmnp1WWJFatBd5w3#g8M4$`o)#6ZmoD*`f&XpFtsEZJZ#iUh7X+=okFxd?RR2ER0)d zUt3uHB;ox*(GQ5;hU-QV6e1jVNEB_DBPt8O?E90+WNv=V=;>VuQD3JsU2A5=U~dNunu!V^G`( zkSg%JQAib2E?H}zE_$5X+Gc%D_rz8hcip<)isRCc`3V~BC2nEc%7xBGNxLFesQCC= z(PN^D=FM3M^-2@oA3a~Lp@O&|;R9*$3c>UH@l`QMcscln`50kBvn~!X1ru)aHGkwLS^!eJOwAR~bav6wg2cD}*H>xnTScD%DkaVR zD=9VwQ+q-_)6%ai;v?EFh7m8mBmIl@6|SC!ZP-PmS1LIfD=U;ty*^574>7n@8a8NQ?HGE|^bqwmFjJUPn|x z|G(dOby}+U)y1~bi_#PKPG|mdLHhT-w?++JbYH$$;^?m!ytwBTssCPga`lK_gkt*Vt7H4;*9XaddWmRMfdE$e zT9NJz9}N8PG%q|47GFKMYfHhjiUNoHume>(WTg(qb-?C&bXAuvVhgS}ZuwPCZ5hsn*uTYAVt?)DfMuxZ3{4$} z)VVfd?V;r&MNTpJe(|q4nWm!N=w% zB3moTPZal({BbL=WAYGiKmoXQ0cLMf%oJ*hS@W>iGHg3W@bjaX?RlY3`u0zvM{#d3 zvNCV)HDi=mMr`j9#nhpuZwaKf6Wd{;NEiY`ACdr-c9^?;1b41%49H;+hu*pNf z`yThFV(~umzGpTl?gefvuo~w!FlYGk11lbuFvF^0HHTsiC@Of<~Ngx7RWie=8qpghuG>|y{NeIFOqFjsM zx8Acye`KO@OeVDV;$?Kc*a?;Q-==2Kqp`;qA@rUSY~}GtZDa1A52l#VtND05bN@uU zPbtLfg!^w1zM74*XiIPl0Xt0~hBz(`<&|oA_ps<5w!KSm+UT5TvhzN}b7|E|UuT_f zSY2Ts`<0oMneU&l*s0dq9{3Gr$50{pT>9uK6VlTe@VgZda$g*hK68m4XWaXT@1Jmo z;Xs7B1+GfpZOBKZ6C+FWF&;k-#Uh=82&H7sy3yY4+xdOhSx;v1v6`Y-o(E*0=P2hk+Cs?5%SsxMSV6S=QjF8Ib z<9=89=pkap(lM;0NDCImL>R}2XM?r}h-3Ih$RXDaqMr|memcQ0^w6qc^#%7&fcgDX zY#vxz(R)q%NUOBRoshbh&Jx@#v5du$q08R6*padmchHfQ^pf?<)w;;S4a>7G!!q%D zq@uMmm=AlT{cA1yw|lGt=)uK1b^4AGW9ZJ#-ASZh*G^=9ydWtHUt|su>9xX4Y1@NK zq~4MV9t4gx$S;F11;Ts?9tZ^Ob;CCwCIq4xLJkBMLc4Z>vo3s@bdMZa#Q`|-wX$Z- zp_cm7d%E1}us5V42OUK{PFqhl%Q79YnRrEPyd0-@`(XpaT<}26h(Nt^B!xf(5BAdTZSDZ5wgj-G?rxC#q zpfFKoGHuRc0qX)^9o+h_`bG zUi(;WJ+jm6KnJaxkFPO*dfAkmSq{I$W~8XS;- zvs>zWDl~^q?-?wC{+pSq|J*p&M^dn1ax$wiOlPA`)v2=7=*)#`D;!Qa<3USI+}U(i zZDEY8Uj|k-!}R3LpR%r#eBAdV@h;Py`+=;$Y}5^->HIX}(>}MDY-$Blu276~)2T6&B?_q4;0h{vQQYJMp8ByZ5@TF#k zJRB(@%9g=nF@3<>H}vhBKfGCFDUe~x8 zOe&YTu5s>q_>f?!`aaoi<#ru@pMuMew!J~N>27!QF6Z=B(bJOIaa+xpRm^#Cjlx%bDvvG->b~om>W6o*g8f-cFobNU6jaOXdHgYw6$%@O-)+mu<#ufGuC}o;%hMUbhn^_hSl~~>#jC<4u9{E@ zG})NHGS|CSS8UkAC2>1Sb9QZE^~nHBxiWucUJiG4M`?i%C#N$7KIBW*?GV7~Zc4Jz zrzgp_qjY5=hH*6_bbP+>zdW_cQCW~UmvCKeJGf<@|2H~}|O*zv9;`v^B zWc6%g+>43rc4AQiP12RLW)pldO9?Ut2y$Y~^>K>Z8(Sug$lUWOHB|S>wkz>63dVmI zw@=Q^@Y;R&x|y;2(46BV%;%rsrL=H8E@##qW}1Leqxsv&w1jJBjUmcx1RojhLa8{N z*wRUSgWy?>?7&#_X%qZ2RZISFOWih;IA;-~ij~1v7C4>O<7W8T*loJx`IwcP=K0+d ziFJWLC2H}c?aHhk*rnpfAeRM{32;4hfj}r3AuZyb5pwhfsaO#NFJavvo?~8l&tYF# z@oOF~{qO>qhxM$>wPoF0O9A~n*>&Fb%g?TpvHj8LyHl>N*!Cy{X;&=N8`N|~qmAp} z?X(7LZV>lq;IToo{N3!f1=L$$JzD-Q1Kt4XhZ(RNfqut#>jp;8QwYtw5}cn3yUc?dir2yDTKJK4XaM; zdT{bP_uB^GYbZlJJ88~Ly9~9OwXJC;6l+C7J$GmMQ5=&}!JeTIP z$k=H9S7QBMYA?b86*8n+=EVsqsXvdMoV{w1d17Q*Pin?IFbeVKNC3{UKJYhD!3zrYOKy9Hv z;46e_3_nbNqiKlHGSnNnriiy%ALXs42YBl+n_#`*Le^FYtM>EOE3EX(HnVIV_|(O1 zpTx?g;C$Nt;2ARio$T#3Oqvx;a;O$;R--`W5MQZFvi>m)K>B9*3?)lrHrw(~;AHEU z|33mn`hS1nfl$P|!CXya`a4-2oImezxQ>GWJL6P&002wwEyeFxw|Hf?TCi@z#{h3` zgQ|2c{yY&LfM*zGm=j0_p^tRcO!>`sn!Xu`WGhQsF$VSms^{;5+6p9R6bc0cu|h%r z!4cBi+uPaMc`gDz@k9dyxp&^a&}xA`Fe8&IC{(yW2tDcJ9M!u+KP)W(j1wj67WL$C Qjuy@lbVnYoa5HNAKe)~}VgLXD delta 18768 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 diff --git a/os/0x10000.bin b/os/0x10000.bin index 20d0a8e32af179082c46f343764ad76c07b2bc1a..ac44e0eda90a0f883bfec6c349c5dba04b7c9062 100644 GIT binary patch literal 397312 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≫+A=%5GWI3DnM=BAC(rR z>H;j6Jc{xBMfhO%qANd$PfvdEmVf&}je=8+GY>H947WfDu_G2AL{Q7QDIz|Yj5fwC zbHuW7K70@&vI2Zig%38EDbIzArp@E_pN}I%T(;KTp68TQ!u4UzqDAYZfikUszsT-5 z+r$%88MyJvR(a7X*aEn|{$ck6O49uyWj5nzr~dc-hjiHU^+l6s+`e3Hj>hG5o>vJo zNozEL3&i{q2af*3(-`9XX%zl^=}gm0k}r>G`cU#k59U9FIcr~H<)QfJJ3a&2>!}BP-0hUptPtas5Z^W3L)jwX?S!QTZ>JoA_q&OzjbFwi z7c@q}VW4uB1#z;^$uw1y(CNj?+KZPB^Z(e5$W_p6<=;sO3I)%n3%9aximFzGITTET zLg`hgKqi6Qgzpr{=(0`x2QSBZ8e;usy?=|{5BV~jt9UDBZ_i5Vt@+9Jw^nmvp6f+aIG%}8`^{UT58v^5hb-(O~3Lu7qN5O?wWb8|M#m+ zN{aH%&+~ZnssgH2Nn!flzw>OI5SRB#>sPpl%QHUn{R2$XKcxr0T{Pz=LyAnnb{?Y$9Z@lo`;c|Skx;=QT#D9nvwA2-EN}Hml84c7eB+07B zJrVaY_Vp(%^yd23@-RA)3xBdQR)06@}NmPG))oBe~|pa(eK7R&7-6;73?467dQo8zz&Y^r>H)U*kklD zU?6CkRDI>t8!>4^_*{uOSNR2@^@B{gwyQic#54CP#+8Fi_ly|6_?z+-u;CLsbi9K{ z95?4X%vr|h&#e~;R&w@IaTA&QzS4V!EHK>q@dISDdZa1x1ulTa2; zC1((wwBTglS`e|)!P0RDgo6Wd%Q#hAtFeZ5xCnAUjxrx9?L`a=2-`f>6W&}(V5w#? zo68@O+#M9ycp?FaOL3P_?h=~rBHuU9`j0H6Q-(O*5*heAgWxv%|0<;pwuAf7WZmxE zufj=WktSGcw*7NW!kk-r=B9hJY8<@`)isnETYURjVx zMs`D96OGW*$tj@SE=!pZr|2$m)gTHvDPlU6AQ&k&fr?IWm0r=z!P8>w`6s(J<^b;H8xe1v*SWl013?vjWzZ$DrO#BkrUa`)h%0%E# zlx2T*SN_Bg|i`9+nTl~N^Ofvi%K80-d z6#fBBm{TxDL2YKZwH47T40R1j+bhiZiH>>a-D>2%P81?QohQ1}6TOS_qlo}TRNWc` zf)=Qxs0DQmLSAB1BxO1~S!`yKwx6yWKq(QMQb=+TdYqIWsq>O@*wnhoFOBE9utOnjs=krio?%!7Z3D>N%io!7l`4{a|IN$g+dmJrOHG;f zUr`!r6~t0PC@XS zQibtUW`looCM)2kq6j2i{&8+m^blJIEDF3ZM}cgm_%my`)tLsUZSRinq}Pz|HmN8e z&Fo0fZFBH;cBC_5>Zj-HNfY`>^}%r6zi699kvWr7(GglsqU+fBXH73+m1YL&YS))SxA%Avg!rZPxhfB*|WUQx1r^v~A(!TGR zYr5j>xw0z)y5gN?y^r+&0)s2AF@u>QXw)!P5z!F^=?F>m_r65OJsBkHoY+kr)lbb| z84sN}Rx-$(wp$cu71^4@j5S zgZLZ!lktpFOrag|h$(%YbAF1an#M`D-+?8BrL}B@p;SCQ^LR`T3j)`f!$4DW=32G8df-a(8*YBe!;B}tfws8kO!quB(L_{FkiqW5N`!O% zWq+SDm>Zws{~}-;eF3}y{+0NLT=sPR$uWrtX7`UtN6t&(dq&E`hThhJ$uVop(Bx}v zj<_}M1K<0$lQ<|gt}Le}!Rk|^W7O0WqH?eI`rrM0LloZg=A&nIds-Y;8? zkT7g`8x+{hjcdn?7x0xy{0bARQk0r3EL}uuDbg+({2b|r zx+I8%C^D_Mq=){{(}z3)q4SS>{)+stFG;2ERxlPtu_uV2T-R)*6m<$P9>u?v9Mbe2x6w$^v?MK)PTKwjc11B>_wDxUfUU5`hEf#W7YRFPCT;4A z1a7AeWr0?`=1UGCrq)s677fZ$(eo)=SvktZRu&S$VsCm`VPo@bvjId>69nvStqy}e z;~{OKVfjPT90uK{hm?iPy6B%_oE#Gn$70_$GOB<1%q{XWAiqfV!Qy;UyXW@rQu7-< zqhqGKP`7ae0uxlOMCH-(czR^QRB>&&QZAQept8@|F=9+ptrP@ci7->`L^c;Ns|2pZ zXW(sI^AqNTW-oo}3H08^4YX4OtARl%`cqPHj1y9>Yjy~|Yn*510Y)E_!Yiprz#nt^ zJ^Wj}kYV;0Dh_uL1AC%!=n`n-d+`NrOp}jt%%1K^mzqH1Vw8>5alpcN8x?Uu_}~2m zWdwl@sZ-&Tn8kO`QU&@z!NxeaL>mY3r@r}<=1w%S!Ay5+Rap0#^o0!ry|KroBPWsL z9AbJ~Cz=I!gx>V{Jo*LFMl*eU0M=p<5|SalLD@Z11>xX}-b5&%{U~20Kj&u)3pkj_Y;Aa@0(zlF`Dn=$4_ zkc^c|-%lEt9SQjja5iv}^HFB_1|BDD8*_BSNN?;J%aNx-eg3`!kD|vG4fDejys+s&QL|=~U zc~lxy*wPSH6$2u|4*g+9MCjPQ(WdvVT@>iIyy&n6c8jwv0e zGq(?$y2*U6U{D@!1uuJBVUZRj-WSgXMor{bfILSTWBwMaYPW)nWQg!(132vSSFP5@{Nfy4pwSo5}3VXE8nw zMOp8ALT*{tQY)#3qHtSXW#Oij;Dw>O5Q7~1FO)z~D1B&fkordD`j9+p9;r-dAB9;h z`b-E1MVT+!gca-C8*YvgqpaQQ8HCDXgr!z|336oeA-oXUDzDL5@m>6`E*rC}u@L@3 zNe|7(YCn!NXX69`Gl8e)2^+3!bK5wJqWheL@l=73Am5hT4mYAJ`B%(?f%0&e;Eh#T z6yu;ER?s02sGNg*_sfem*VHj#lMz(#ciY*ce8YNQ?Dr;D`34ze=@ zZ)oJ#=)Qe~B!LEa*6ZU0y7EfkXl3Ah0(mml`m-`@+P=CBo6|Fkv@+cl0?j1tB|`=w zQwU^=u7*taHUb&vlOf3TOasqc?Anf&>{1>-Lr60?#oZwFAUO*G4D(ITBw)OwJ)^)J z{|YYPecKvrOk1uz0i*T6INk4%sWvsoVCNr_CSWZd(;qbuAL>3v(9B-v6@-}!_cg?0 z@N9Lv5*$&=-Zi$|%sMhjZBd{y_es4&!puz1$aoXs!m)8!6j$$E^1AH<%^UIw?H-d( zZ7}|b6=$i0S+Kx&0pUV98M;gz^!N9V4*W=!l${PH4EQzhDxQS?18kDGaz^T4ke*J! z22La0=2&dN(=wlNYQwL!!QYSW-o*?uy+hdYhsaw)?UHP7 zf3D&pm_BWwlf`gz0V{)G3E%-mA|KokbDD$lbJnqV^L*>$Upow#*G>iaH26@tO3XsZ zF$vP@Y#KN#u#3SElO5NUc$UGQTi2DeeWpbVLj7@8n5kn|6H`a}0Qt0vARBxi_&M_0 zb+w_2^i}3t&{Kjkks8KIzc|^^A(gY8!G>JTnl09!%PrD6zoRXP87Q$zNJ8Imo4&pX zk|XdiYch^!6KdPcfOi#K#aw6du4C}DPM!%?xLaV5wiqYuZ1gl=MS+%RBOd{LeoKCV z3(0;&P~xO}#8Ut_uwF{bPPqot2fAJ9WMxBlO zaJvPt{WYkF7{pYt6@h`IpKm8$nW+nu5O}XZ+wtk2lTTxzbfrx9Y`Ez8^LMfppwND4 zs!f_!QSWUMaw>`4<%EQ=fS7ghPjKJBPCJv34U-G3HYBS%)^cPVp_aL4iSsI!@1P;+ku_e{*wkEn9^8sKlZDVWS`bCNas7&@%sEl>r%c8gq3%lX|?uZ_qqi?P&;Z<}j0d}_brzub?$B=Wbq3~y5<58(ggFrBmpc}6pe5}I|DNJ_4 zaVWFSDtpr)P=N7Z0%deapwrytboWuL%2GX;12bmkFi{G%pGb=O0PBIp#t;&|JkrTp zep+TDOUQ9dB%`K!Cb0cznAGQtt zU6@HxbFA3Zsj3=c$-6UT%eu20_?JBxa9yi1_&Q|55`00DeD(^80|GQmMhq}iNkmT) zNCsDuFH1^(IM?O5d4!RMKh@vzqr)9zRsG9$hwrIoqer@ReaxK-U(zhBQ?dP%q?ckW z+>!;0;dRV@B^82@!0aNz@>_20zkN5l(wmm8`qeTh;;$Kw8sL;SWc&xle4H^Wje-Zr94cuS>tFQhLTNeKauee)3by!b{QbQi(+4q;C|=tp@WC8#XYjYSn}b- zaGn0I8O3S41x2)YK-cR9J)f)Wp`m0~p7~M!&A`i`I{|e#M}I1Tg3?#ewI<`A4Z#dQ z-V!n52{ZosX7S41RmWhv1LK}|(tfqfTR=g+ly3(*C$@($JrN?gJ0lYfoJ@bII4D7z z=28_Zk5Ot838R@ExdQ&z-FCWEUu$Y^fPgNFZZcDlz#NoT=*{lUCVCM;t#_gY`2L9U zuSvzi?o-I`oT)ly%$PO97HQlb#zh}h#N{;?WouO96185jFI{M&sr4AP{8^MZp9*gB z7cbu}%%?M1RzoA1kMua|v}k&aIItWIk|rA8B-Y3VYLZQSUxEsj5{3N0!)GUCyx3K)N8jdKu(x?$Smjx|sZ2O4RBFt&W&( zCGc<$>baQ`-igmTZ!lZH%Ce4pqIQDsd!2?1VC%Sn$G4z?d8^v?B>3CEON+ zh!Q34+oGW@ucw{l3$}8z9o9e&at>RxHNrbQeRJpnh?QGo(XOwe7m|Vs@W=$O_NnL_ z$u$rrcgqcQ8aXem7iTFsv4{V+Int>HP>D<(Np1VpegTb;^zVtAJ@CfwC-s$16^(p6l0*m(&DFq+p>4ed?h+ofFQ}XWnf66uM=I#~Dgw@F1Iy z6gL)p_420GF5}x_d*auGV<=R%z30Z4)_zkFUCWftuKdr`%A*eI)&Ib)KP%l~3>;lymQ=i)7jcF>OycnX-*fVeTL|_zCAP$u5 zuS>#g3iizTMP#@((_2kD_0F59T6&9Vhu$cR=NC|i!hu^3ard`@dp5@FxG-cF`P;|9 zj)G5`~yp5cJ(E%)iF42bDRXr~tYDS;h==ws`sswFV zYU=HPHCDGr_~((|O8b8+HQY%m8QB0Fxz*GiftGlx!vt-3qL6+bI%UIbOu|I3AwDXj zHO&%;V@hL(^Yr5|b`+zidBQ@ep!I8P9PzheaL1Jv zb$ssD4(Arc6ZQ;^mB#KUw|2eL>QwJ2>2ij5ye)ZSm8r+zvQRyPvW5Hi>B}nY{-^bo zh{f_#KIax5CUvRLYy^}4Y)RQO_GkCx;86ceN&A=jPG{6Jdrl1UolZr^pQQd%HF28| z;jsTBzWNU8nezT^qyApK;8Y3DFmrwCshZUOZ??T^5B`;Zrb=|`hMf8Vr=itJ?RC;# zC*yD`VZ(!cwt233TCdn?iZ;(!nEjL0x8(oz;CESk&ggH`_*aoFdLv)E@s>2f$?^O* zbJJ3DzDearZxQ&^Z{{Y{A&63H$UtbXQ`6~;tafSz=QPn7fvHQG4cFNnjNZ-YM8<&K zPGF+0-0)=iLaQmd&|bR25}vJw2gv7uz=(@G;2#=^3?RL+<6`7j!Oo*nCD~Xh8QZdE9oscri2U$+b?TBwv(Qu>3yX$N-zs=aT>G3dI71rRogn+q(U(~Sh z=8*&aLmC?145CTpd#MCeS9N&=*1+R8*Y4TU@y3Yo_T%8bT*jm<#@k;0?JG>vfaG|4 z+NQ@N%hm)%Qy8i22`0Z!3NF%n+wGyp%JPD#qdckigp@Lr^gF?Z&<{WrO$Veg1&WuX zp+%YX@S_AmtA{j@zoIaodgCNbmHdRH!e& zZ>L1%>9IM$1!#DLhj|~7C6H&^AjDmc-`~PYXdQlcNQEZoI#iEHRH7b&wqnTF;5sdk z*K94jmYOcM4OeXBZ`1jIOb^2)1rGm+9+E&}7}#1+d$J-Fmfi4g)<-rSUImp?Azk;i zx{6QVZh;R3qL&f+W%uH$(khrBDC3sNljqV@%B)YO#}$jquPa${as^fg#|_v$VXh zDsE1}Q(+Ok!C*}jAy3HGQEHD9QiC{vFId*Tz~ypL{>rDNuWz}d7Qft zxVxaUudpQLA8~o^+o;7QaW{M(tsEzgIS{PeMw#pXRo^#YKR`|tkXZ3bIEI{?(#4Rz z?;5avKI~@T8tCrs2i|CV$)U(v{*d0GSm!Uf|#>S^E{c@I2MKOr414+*GXo&jkj%y5%oK$8rsnat$oMR5m0?Eo@=7a4Z znY(|(qK6#ZcAyo5mFlI?cvQ2(rpOdE!}70yxUGAilw*IQKSVYUvb2v0`y^40FpDM? ztd3j0dYXk3dzH>FVAv;9Rn_*_MFMN`%^AzR;gFGJv4hw25pvwieMHv^R)=jE%}LY22N~u9KmS$++ac1QW8g5U zH`)eLc;h%TWTE>jqbg%(%abPNu3i+j`kk3trJ-xnguJpBAV<}5$iy%oKH;q;9UyE z_lsev%YrMSRoF-jzNDGBK=RhP*q5s{y8@4V4vF_)2!;X|O20u);=Vj_qNe$5pGJ%iLx=#9 zB|6Ob1kxT~4G4k{VS`F|6C%m$Q>LC6O*Bkv?n)H2iK3y$MY--myH~#0LsMBdkky)U z+xaY&(G`)u5WXB)YM+bg$)I{1l&R=@b89k9A0mVzToYQg-@)Ftu1h>H{U!-=+r=9G z2A$)nGhIbo=FFj0NeFzG%rw1^)RWDeC>|A_ zI@1e>Lu7mYQnKkS3gY*KgbSM$Be|R-SCh%Pmny5D`eJzodx9Uu%3Q@%ABc7@Wx1Hm zQSPN-{FlMs&sy21Q2kS)>JEzUOuuP9=2(uPL!w_j-4<$Yp&r3zz8e{NXL`;J{~u-V z0vE+~_K(lZ&g^oT1$MzDiCkt!E`x&Z4jL8`47;$f7*JRh(Tc(f2q`G881a2=U&KO8 zvq=rw#I&?Ua;Zs8lNgicZEdq5g=mYZp>3kA<|QQYlE%~!VpL%F_dT!ip^waCyL7m=cdfV zIUVJESQA;N96;kc^I9dwa34eu%QX=ES?!O7%q7sBnMqF z_{E12|B*ex67R8LY^jU9=eQgT-5PGPlD6y+Rd)IcNZ&MUT~z+o0aexwvF9LF&xAEX z&WTYBq@h!7*vT1wi?=l5J)Gxh(1?r$9BPd;!4DGsJOO_AA@8=qQMnI#7Slu*77Ztx}{EMm>lmY z1i=gtB=9HE2GNgJz9q|sE*~E*(HHq^GWzSSLy*^_x1`wOF#2gyiJ<}SwKc#(D!DXz zQd?Fuk^h+=_!+mnO_2pT7&4`a6;+yQpgN7mB)}g!7!p?dulo;|kJY+n1yGIFt<&vq4FpC5tM>)*g9Cw~8DH^7{1U5>t6SUpV#a&9F6V zWJsSt2EDs!)N{7Yz_mW^ec)IBtTX)A{VomlT(et4t&i5soCCUvIX&~a?iWW_-1U1x zZH>C05a1{6B}2QP5BY5fLbOlOL)agn`9q^4dX^0GCq;4<1p^Kv`;&rslGpFWu${Xn z9y%i^6e{@kFa5I@dfXtM=U)E=#{xy!XuR5WOPBeu%y4!KXgi@pUiZeOt~9;_j(#fY zjnBFaQGQtByrusK%%f>~K^F$1m;vC3g)WfaON0EF;-LLjl&A_b>u;Un^`M$NReBUk zG)YfPQz42DA7+BT>LO<#9fpICIJalsE}q!qmzIxt>Z+EHN$TW%F}qfGwMY%#AgYV$ zdcpds-*UIaX5N!>_c0c8&2skyZ+LU;xQYZpyzbdOrMy*m9Pn6#uT*}+GL`(!bQZeE zH|8R2UQB-$j_r?uol%;WC`>Qx$Qc#5UH*ekIM(ZnRop&6Gs4$lydxGGTnIUcaW%2+ zdd&}J8GmWohBvu(KP>bRlNQ$yb#X_0WrNhYSPoh35Bs+dz|Jz8_uTE^%c7`zWhWov z;)C6ML~%G2JYjaNABIA4w?W_YeLvxM(!#mddFc&l#SAFhy?Mdr zc49*in5^cf2~X_+F-(qP2M*_}DTiFBBDE}5S>}75%;>y~DJxeKds6!J6W;5}W4y!M zaTU*=(g`P;q1+6xXta-v?{Qc}@~W8M(*xuQv&X-ER04uWgsmt9qX5Pjl>=j}RKf3$ zP zfon!Y!DF|(_@D>WoX7<|(59{9jy!f`GvZVqN#1HO!Ls$~iJ8yc`^0;*k9%?@l?U4m zeCcefBZ#ilMac~+*uq1^N`vPnQL(nm)21W#J=AaX$CEbSN*zHN073@405g=MLCLO} z#!ts#(vmL5MA#xDlJ~01RSv#j#u-aGy3Kg^RY|5_BmDxp(Ke1umIkpR0^stEDaBB( zip5bf+A4z81bUgshls@h^$He?gDt=ij>yy+7}oeJ82Y}oM*~PdphQ9z_ji9LdoWi@ zf2(t5KQVui--?7eVZMq=VbOv#6*9_LvQROnfCWpr8(bCLKt{v(#<&%Z8zN3;nWg8v~#uSe<%9OK-+&8r-q45L`6bz4zq-DdVx7l+zg<5Qa3} z>3t?L7;1QDw6b6-*Lz))KPUHFM${XW@Col!jn1A0A1z^&6bJ}*L-Na{Y>E8DzN$n6 zwP;PUHA4=U`Gi2n6eWPve(NTGCQQET=K`2!>OK0tl_1Ep9GIq4+c|kZ5sZ6!jxv4Y zeh>11^MwgMKWGRN*s@ULMpTc-H z6VyR=%~HydUE<_-lJcGDCTWQ{*-YY$PtBoM#p=~ymxTv4 zJi&e%``9wd_Iuj4CboBOykUTI{xsJ1(0X9 zx*{A}%lnw!tJ#dhtP-1zXXUVa`)?A`ys78j_C)i-=z1IR?q3 z{m+YYg@bzer%3>ce4iLC*u9t1bs6)+uQ1#@e$SG$a7`&wU0E-R3au4RbeZXHfFb;FeTbK{L42!m0;n$9< zGJdGGq$8|P2xaW_t;F8oSdg*zjt&)7KL4#5*gdA>qM#3WIq zBV50q0DjC!>eK@}U*m!yn@JQzLVNlmL3=<*i>{Lu@?MKA*qjs@Vq+3wNK7HwmViLW z?SGO2;3Ta|-2yZUcAv$nE*>mo8r%0vkSQ)43qBtTZGONG8%W46rjaDdxCuc7iD?o{ z6$9un+aKZQ8Mbq_RO89J4b`kGb(W`JYRD$O<6bp|f~YjaHLFnfUGWdtKuDnJJJ%Tx zo&Tk&7HALvBLObxvm($U&v8Kc02Y-ra|FWNDGm4}BlJB*_5`|V|H^Nk@QW%yJm4fF z=299L)AyU}{DV@-z`mWN&+d8>#LUwJqa7NJbI_;;UKzuXovjF6LuEwG1Wq2XST8&E zw(iK}WjuQJh?LC`&VTz-$evVFmeHi|UWDd{6dq8-2XHG?wVkjx`vUfIg!`s{Mb;5i z&#u&HM@)Tb-NACczRDF7VHCb7)YWgY#pvqLNh|5X9fPSr)nK_ZgnSOTKwVF_VPafi z;P7wo`_jTO$uPY^ew}J^oBPrA+g(0n1eOcax6f|~hZza7N&sK3+tjk7n7+5veh=fR zkgQlRS_~)MNviY>LQKpTJ`&s)98Ipvw(78#3&20S@{E|{{R>Uzl)_LM=Y4g7J}(|K zriDRJL?0l>m*Y?*Ym660;PLZeI0kmQ#}7D-4}E-O-=|R7(Lb5Y?PQJrhulY0*7rx! z__hSf+aNf*{|9DJ1=+fS1z|0JZffza&rqkqX{c$vfHG$J;7%L~w_cR;P@oipK7@y1 z35Ll0dMBC~)v(pVv`cqCDy+E}R8)g|__h)iqL$WdX zak=3R5s)dJaznJ-5G6Ovv=v#zh7?=T^ZghM<8vd|eT3BB>)Y{^B#iW95mfNpKc@Ay z^%=jpYea$+I7>A2_*1US0tD}98aUuSl@AWi`rAAsV(&?4#j^Rg4l{x*Kq)=lny) zt@Z~b;=8aWLJR}zn7L!~h;`FQ+tCP#b&1r$J4Mi9Lqzi92B$&y)ej?D)a79-9uICY zl&e-e&h+0&)!kY4?!>)$5A1z=liP2s8*ykPW_F(8DZepvB($363N0ea?i9qvHlvu2LGCUtN_0@3C6 zJx7=Is(CSG@sWeDmbEbF_NXljGZ}R#WxZ=6z<-{b;y=&b!hbHj!G9XFN5F3myQs{C z+#2G`|2n)CuvdZEhF@|Ib^z$*6bc~ULf!rQ0y6Nx+2E=f5Rd_+tO=E7c%ebXI&$Cn z$}h4UFs|VP428Ip)qrF}=Py9xznm6h)WCnUXiG$|D_)%?R=T{y`>A&?6H}Emm3Y^w<(>x*QC4`FO}1%X>WbE|0=P)FfAaE2VyEMuU2ydJ}B!Mqb2|@Hc5HU>i-4- z*>1GE8=t-SJc7?t`1rkk|1Nxc@WC7;_H{<$OGx|*FYFMZ>KNv&hy9yI{e`eq>lmbV zyy%zb-7W<^s1w$C-SH;pygT0Qr>+0+7t*_E_?y-R?NZ4>;cY=-u*Yak7vLA292so= z5b1R+h~SPPWOu;=hLRak2#c_iakQSw@oxbb$^#ydPa z#qfimAJF0)l;=g6lDud2>#ZkXTP#LVg~qnE7LUF|WZL3Q;=DUnt(YyXfR$YwBmOM* zU6IO`$F3@SD}FWxZszu!7Jh^A zS@xHFLYh}xn+2wqOZStf7jJbNsXB1S&N#K3;o2D11|U5~Lr`0`l1KwhdBlz-2evbt zX&a+O*fH;{2!fFUW3U#huuDNEv}RM=^#F6AU=N5|4bO{v<1arf^Qpvn5oNXzU>F735Z4F%?|;z-?&%wC=u1Ky z;takq@b0^4C&Rg~SAV$m6FOy*wy<2;j{FDCtzxpY>XP(Xygk|;albku>b7y>lMMZ$p zXL(D~%_fIf^nYUDcwKUMSa;xV)kFKei%hrn_XT*OcKs8~I;vMEkSVQj8Pg zyr*YF7|m-;wO)uh-A)byX^DZ16locWpP5XRd#J%ptQA z(a!QBhfZ9rHtlLQHEjXPrEF*0?3~-KcG)$Mrm+?Kvn@w1VSek@U8+N0gp!4 zu!>S9K;G;CV^3w}7`2OmkPj5UvNEbNaZigeOB7d7gY$%eCC?d8xl|l*lSGvo7)n6rY^@bAVRjKH{?@H@U68ObZ*}UBcg8`r!2YSw>HE#2z zs+>NII;Pg#47q6J^6ITmMGj3YK7eFk%>FBP3hl`pAWFSv54TDuAsD@$PcOa}Nv zA8KrPdlcluIWHtY{#>Z%R-Hlt$>!RmnDN1eZv`yx-u3st<=_4xEN%kFv?U20ofIEQ zPHb2MKOj<7`#icAljaCzH2Jt;pSV%ze~@w;>A`NQCz%TUWah7>A`mK4eJkZST+bBp3ys6Z^ehow0z)-$vQb_zWYlp5hd32V@weR1sUyX{~9I_uZ$0j5B=p zzx#k-)xUvq6uVijjb)u+PPXc7EGRjN;{a+16fRK1oW(4EH`R=eec03*xun5+);ksApOY*gGH$KT7ONJL2wwx=E$E|W=RFgp6%@^Z6pOglT!HU`7P|>C zAZ_p?Jcxro!+WZavmJdn+fb$~P%0+Bkc=)Sg}Q(;elpR1!Y4MsJzXcKvJPFFigT)1 zw+aD3G=wx*1c}A`K;y4Z5n;JEYxy%XbOGXuskmC*evc1?QM1cf{(>vsAm2uf|T?t^lS_J4gH0$qZ>t5KpHDbrH33N{@?Dtj(NOk7& zSg1mh7m$Kt0xd67+cSOeHNjTp$dx12PF4#?#FD6zggp*IPL@&XC?W&5N6`H`G?Y+j zi$+-LeeAE)%ycK_FSY~G`;30hG%A^|fdp4vvMk@~+dd+$ja6rYGLr8MUmBNhBz~PY zxyVrFu8BI8Tg^8$TVGvY<9=&wXsgcEABA?{WZU-i%UNYMj!KFOGJKCsN(jl<;?-E{ z{aOmhS+#ld@5sD2lm?}#zLnlzkS=|%$tld9> zBW?^Elb)OojCFgEPrZ-%JnTy-A*ArW-4lTExXJVA@2(iutobsHF9wpIy8R7RS=)GN zCA6CsPFC@z`PQLyDEKO|YqejUNHLc6T&pUd*rk?(xXvI}3<@3&QX_DSJBU6M6fzj3 z0Xx|fL^*?0uAtD};EF$k@szGJh{*wG{u`ZXq0oAU#(0~u5nNpm<_P;=-2?K2^@qv5 zd$|CRbn0N(fT0`^GS4HWuEYC)zAgufNr0;wT9pV zw;rNPYK79L_PqFO6t8Q2mLLM}tAfR32|<6h;$=iy`|~A)nwT+=un-cbA-`M-LQjpJ1Ccf8Fa9sBMc?%M)*}nxEQ3B z9ieg%kLH2w9CC0k{bd}fr$T!iYT?D^1G*GM0cCgRY)LU&jJwO5-{B`-9D*^0%@N`- z56OF+j^NVEpFN??`l!dDc}G35pP6`3SO%q~h3j+#iHoS=3Thy-e+Fah9xV@dFb9lh zQ~;LQ+6hnCi1nQ@QfxtIw4`0psUNr_pJAkI>xZAEWSwF&v-^Ftl>NLGpyq1$b*e|m z`Uj50*1eU$r&zytl})5q>|JIPsR#BhPX0EKW&P3LPL#!va@u6~K32`x^oB+0rUf7v zGgmDvZ5>SuE)MTA(dq_2rTKP{`467~b5V9_4Pk$S@C)=;5q`lSzki({p1|_e9Y4Rk zE9gO^!SUZbcOd*sP%-x~@$*~{fN|~5^)rNuox=BaO4-F)!$`{+rsInL3|Aav_z33j zs{Kz~7OPc~@l;4kb_| zQ2B{yPi5@>OgZZ&?`86H0LL8F{s|$hu0NIjV!Wzh+`%3APA5x?Z1_uyM%^sc#)dfo z*rRqd)`i1#{Mqjw2yH#2Ykf$VISUiUxdyQ)_yzT0&&Ije=vFRnTVrZllbZ6&l(*## zw-;`(X@lPB_)LDmBWV$6KwcaqZcts&_HCrax9{#d;uquM?p@e^)rYfn%&fGqzE@y) z1o{km!NC&rc8FQ*Z&T`MKjliB<#|kMghQ&D!pV!OOd<-y$}*wvH$I5-8jVo$ZQn_} zEJFR}?c)IMD|7W)?;n5Tnoni{+L64@EEU&^5v9%Ja$2;+!K^%Ar2BW%JLZi`&s%~( z03U<*NUXs`$RLwHlkR_z<`Z(3Msz(b6^p&TSH(yG4n0~wo|7wx!IZ5yA^$-f7T|VW zFswE%{!C(0&VW1?KQA7?JJY(dlzYK16Gb`IwVRAO! z-uJ#QAP}*|&XFrp#frFWrZ$SZBr8!V)8d`6Sq>(2xm+>FS&?OHj320mnx-NaQgsX~ zevto*7jtDkXIetp0vf%_i!VivE84vTF_g+rr^!IuAh$(qRE+6qHAfeG$mG9DnN{Oe zZ;nZ-Qq_1TqiSPli`q7W+V3B8F^rp`2z=)*ofMKaU!8>IOrDudnZLpVa#~cVjhvA7 za2S5<%x5D@cw6~*Qi=_)$mDH2ivY&{5Xga(Q%1#c#`hVCb-n9|c@RcFR*iPZidjX4cK^;EU7v^<+~u?&_`pmL@K zt)*MOC=Rcz7qG?mU8G+6%NS|%Wjt?akGFcpEYC|gC6M{~U&IQP3!+O0#zcGefwd$w;!(?v(ndwbQWa1i8e z=C%KS>RWkBeUs=%H;-XeckETV{IqX>-5Azi0Xpz;zjgf>=8On$76?!FD9CCHe5Iuq z9bBNlIHkYtx#|6r-PJ+5iwN#+^p}hyi81Gv_s7vyOG#rpnlZ-qzxZ}I#$p&bh)Ukc zsJHqbEl~O>7=6^S*}va0CWlZMI-+h^MD?%7zLl1Akd+#@Z-z>#pMynv29pHBl+nf` z#ZxUc$}e0-k}=_8ww7B9ohSX$qh44I&cmazP)xlfk2yk5H>>ZUC})~z_}Hfq+Q8x) z?oU*RoQsEEW(#8Nw72`zM#?OZ@y&3BKrR?CY|YaW8r?57f-XC;c0s41yio(NM%`ZJ z!@|-p@wlzGjiDn!u1llIoL(^u_iobVas$=3k-|7q=KY_Fu?Fl<7FC9x=sYV7DA!Os z0eT?9hb>#EU{N+%sBc!WW4u<1JH?+;zo%!phKW;g?T1ER6`B47u&(xRO(@5XHX~KK zZ)A6h(7Lb{+vBU0dglc7!RWPp=KZ7BUi$JH&)L$9E5kb1sE@@xxOioV^Ii%Bvft&) z-{_-^?|ur1DW?6MT_d}~%e5VsCor02Gait1$u6e9X`=re7zgWz*Z4L}X)H&KOX<+H z?H^)ru-}Pxkh+8noG%~qcRb<0#kB$$wJEf5{1TtC`|$`M5+3Dw$jsl_?b+FMf+ZYm zp?RA%`14HNgnFg1^-MRtaW6*gBI7W(Sl{Xl#(1orNDJ$qOSx@fFyNEBqfUrkagDln z17+JlBe`S(XiQ=4e(r4)-<+hvxA#*Vi;I=@3OF4AzT)H!g z+A;G{hjH*sNzNIe^@WJmCG@4&w&eUqXx*lRN7?Ru)=PEP6An~Jw|lG5+7Z$HW8nlO zR3KT<4FTMsmo z=2tyyYz1%IH2SRBmaA?(u*G3~*4lKy+Im*^Y^g0b_<#;>Np;rB4MOGa(H_!-&;#bx zh+xC-K5sqoT5}BBlN&OEF3e?yb5(;%W7~3rV65uS4QnYqK=W#MZn!Hq!j-FYW&U@E#;dg5I2EmUB`u^J0xA9 zxzJc&ntXS9zYJ2vl{01S{*lIc^~UG#RfG&@BjE96G`8P1yl6IAHT1{;hg7 zI3OeKijDI+y?|$H8qHRxv0GoIE7U7r>dTxce+kiMDo5+-Kg^$Ciq(cgdRIIr>78p? z=UT45ihf`>CUjbOpL1gNXFLbCp6`&4i&81@e6|SZUJb@e+viTGvnlX@Gw*BY8}J+2 z!YpRbQioA7<3SX5+M@eIKWr8=j<6|4^=ZGOs*bK;Do2T_p0vX-$XPZWjXXU-i0~P; zV^iG@$fIT_iObX@6?gSVLT3miH`S;;xdWPKiODfB7V^cjVr_ID@ICR4mS&PzhM6cX9 zQ>@4|{FSxX4S#0q9_5+nv#TMEvnkTJoaKV`tzYHXh3Tpk_##dpNXhK6!9T#>H?e(0 z4Lu1UGl03mLCXotXqF7IoEDe4N!nEQ#fKdad?PM9(fJ)SLXfA=3WQHKooK$?wt!D= z`c8yr1rJWIAJj#YjSz^Lz~1GVVx~QIqL}H@yHaNYsX-n<_|Bp43hjse10zsdPfoI; z1bEQTfPOh{ARiVs9Sr4Ad*(N?9TWZ(H4JrD-*v(i<@wN-I#Z6xoS7GzZflq+ug=so zhT3?jyajSHDoPMVdN3x-E>D~gTgBB`5M+SM0GcI?hp%IDqW(59F4%m8wXmMtVin#1 z*~#>7EO8{9o-gjFgylks1k!`(P}sJ>c|z>PU7AvLLMLw?{sB>$iDLArQsSd#n+)ZM zlQUtJal}SsdAmS>asvoDfKI~7)3Z|+0#{<8u)p_HS1b$b$}qkLdzjtJ2$oTC2^1>2 zfH|U)v>sb#$2i~#7zA`6jT*kilz?Jb?yzFR3ry&@$AVvym;gk|Tb+!079`%L6rBaf zYMhf#$PSCHDL1^&N{g*8{9w8yP-GMdT0jyg(h$YwxFUoDTUtBmwm3D~ z=1z^;{UZ`fDF5OnFPK}+!l^O*a-2FU+z!8<-_BJgN7UkFJ3SMQ@ zm#M3?`fW-IH|VcTF!>lhFd(V%T~A>q6xmmNFVZkKt30gi6$<(dXH49RSDE~e5cC2n z$A-A1St&B3MQ}aHPN3egp6$f{*cz~p$u{0*(<(C(rwC%aAsw{EM3ZpEGTqt}0ckHP zM8xsUI;bkU)6sk)NISV0f>KDB0x}K6Nh_(d0vq;Fad1y@h`Tt{Ssdmn4xgQnG9ZS9 zX&JH)4PuC-Ke;#s2$9eau{JH|)Uq;Q zd$k(OD+n{8*FdG=CkI&wswP0e<0R@F^Y1<(vK`3^nE|qqV_E`Oq6o1;C&lq07CrPO zrfe@vrb&Zqy%5siEF&wLlT-Sh;)tGN9p+j%Ujx79$CX)F93dCu;i-9eX^G(ORm zOKGt!4k`z7esl(OXUb?o=voP(YdT$$F1Vq5Lg&q*Th~QkDPgi83DTmbCdlA7GXm4i9@8`3l~L05Sz3xq}Xa(GyBC=rak zBhD73xtxGe^W(txtA2nL>mj9f$Q((Rrt2of4Y z3&}!j8(q>#$bmZ&83Z{sO4wz^!4!E)$|Fo$Ap{oW7?Y6Pn*1_C2Gg#F*<#VboSbS~ zQ38k;5eTc*lYN`Q1QWsd_pir2^F z@-VHxuw$F?L0#}m7rA=c{;TmbOp9@s&M+Kq-Tp``n9Y3=IjbYQpjr~$dN&OLDC%g+ zf?QwcJ&JI5)|_1tyFuBCA~0Ex#Tx=^*}!laY-zAZ!{Sh58Z;!qLSQ>5-J(jc&* z6Sg)*2t>%rML}MiFVy%?Qe%z?QZw8$ps<75TZyTGVL+gV*1ftwaE(m5@(E%0?okl? z)&thIA_h3zs}Z1x*TAK`t%#3tbQV#Eis+sqRU2@+i^APSBxa(!NbfF+%nm2pLz;G* z(Y^+)Bs)YA0%YnMH9$2%8a!$F_3a5{gXjk0=FJjy#Xe3J;}IZQrGW|b9Tg$J4QdSf zNziwK9FdN^uDpQ-nFRjzCn|@kQMFCQbJ=V^OARc_4C(-F{Vi@kOm2t3(eKT1KB_|1 zx@->^OV5`t&ff$7RnKNwjFaoAL#{ZPS={N0hX;{uF*a>iMBigm+a=)}dc^o+X2ah? z96062*1NH(f*C6dvL~*d<19*;ZjT6_0(d|QM`8Zs z!-$vh@0kkX3qlMRIWyRbgS}uR^plLlmDs+!ZsH>_O$djf=GSu!W=Z>Z#&6{xD5!L> z)|?n4_*4aWhvUq^7N;0zSRRh~AkC2UBTU$(OY?{Px_@k}r~APWsq1OU&PNV2+Myw~ zD{gp(npfMp>1_4T{5?bYdvZP!AY_Du5&Hz_7UXJ>Fj4`tA$a@pAkiyzTq3Gpt}~1T zUC|%hAckvYp#CVLesk`2*{U#7$Yk%S*KIhN8qo+L;;;0lWOCs51P9n`KnV zGV9QC9rxTgI9i-f=sJ2;-c&;6^6vHnQCu>YDr$L=kR?7xBqG>vT`{O+!{|HE(oRQdhn z`Swrz2u_1KAo~Tskpw#-)Rh7B`cY#hTxueSj!vn6d+3-^<2C=ykC$@iuD5N|6N-Z{EQ#YlGuU#6pb27GDR)19#^^E5|yPBCkF!lpI@130iWPXR1*nkm-y%gFI#Tg@xmcCBnkge32KYZPzm-kyFuADA3 z3W;92{vj0Xz$q!4bwsAA3hox`R9Di^&nnkh=$rv>CReYehds!X7Ve4jhQU80|7-C+ zjXx*vMGriK05jT4{+NJn5<-n$oN}tPfv^)7p+W*Ff{qfQsOHE+Fk?^94T-d%s1acV zxL|yOQRFuZ$MZK)_%olq=$cE5vj~`Vy|KN2tj_o_Bdb-Sns%xgo0`I2h7A!5FbDi) zF5zBUJ9XeM!C4AV2sm99!_f;XU0$$E;^G?is-akKfb64Fq}CZ;fPsK9fEYRQ3a{n~UI!ya*Kg<<1V7 zYMC*x;;41N4H3k9kLzJTY*}DE$;IJ+!G-R7?2bBaplo}3z5z`)EcL&pGKBhn^%&cMu;q6U z|E+Ow0nY~qyz@S7&JMQz^aoWJh&P=xGPvM}Aw&Z>njK7-0!#XR%M6KBS+1|_&(~~D z_#|cghmW%W{x{w>eejJ?(})X7KtI(b-cf@@fNJILAbaTeiHC(Fq8i>5fMzca z>ifc<4I!xy5%$0|A_vd*-9G*>V>kpCUKVpWC|mnrReRR>t}2}0TkqDj+Q?}Kyqu6n zzQM%ZR?gsTgGwUuQJpnspB2HP(B)#0S}f8akXC0A?J811Q%!(C_rNqbg2Fh@Rzeg5>Y)1Z5BQaH{!SQ1G@>?Wv=Xn~OD6_4MRle#D1yfC4H z%PBW^tdUW|dxRGQk<@-}3XkVj_*~+#tq%b~y*Cg13=o=c(7j7ejNN3|mE#zg4k zaYt0d7I1E#zMBEcX!~KrDX~Xn>Sbq$%?2u;=`L&|wBG!C#69@`>NEKRLU5;A0K4_f zf8be30kx)IegtViup8u6sZeZ^oUlYG3YlhYj?9p0fsG_0txU!e17}zu4OmiZ4;3QD zFyc7lW-5L~X6o^O>L0~FrqlP4lE~FV;zQ}c+p8tlO0L{YoASLh)2V!~%XD=>De*5$ zT5(HBOUX4bTFdWt6iE$oaa53bWp-h4O5+VQI&3e@0HXEet0*xc+G8tL1R-)Y`~t;w z(WL)K-0_UPL2^Pg**?H8B}60cxHv0Xtd2%*sPLJxy@)#=C7Qns~nFU~A!%hLc>g zJS)2FWgnW7rZQKbCEKwI=ba2$BX)mIFia^3Q@LXw)#|}(Q4t6y@YPw-NR_pz#qM!6 zbS0Git&eI&9mp9H?O&diVCm1QulT9HzK?2U8^9@f{je(BsUnEsIMKs?uk|y!`oR5>7k9^vxK8qa;)qdHb>WV67YhTey3FT>$-Z29v z8U642N#%jVqivsm4Nb`h1B6L16|Z0_%Jw8rbr23LwQtTb7kmuiQP)oN!bd2vFQi;V z;N%&OsDc^Mq`0L%?gI*i^~09{MG>Y7-=AM!c<5iAYvhPfl-GM*I|-f+Ao({{mNYA5 zq^vL0l(?tN6>38!N?s5G3N1xJ7Ja$xz8D+*!1uk_*xYIdeM*0dDX$)Ovcpbp zU_nYX=C{S}Nv|N{-W0o~8IhcAux=EqHDW?!vWvs`iFuARmJ27H1@0Vw5}mC@lmq)= z(qwSwfi{C(M4PWpw*9(Cm*P~9^Apb<+s_-|v(9;wb`sYW5|ZG;4xm2~)a!xe7uBYZ z_jnd>UrcQ24AlgW9sSV$M?bvyL=tS`BZ(Hp+mA5q!*?AVyvQWK4!=GN4g1_#w-<-C z|2R>i;e*?0vDM~sL#EO8oN?HF4Go#mC)<7SNB@4TC<3ukAfgI-xj>Ye%DD(QlqQH7d=ejE;{%IBGvm@u82E!tk7OEtr}^vE$ZJB)-a)r@HL19R&6pqSV3K}+n>GDoAcO)aCHaSHIj@8`YZFrR zmub(){P!~E$6N3F2pO9JZuQp{ouTDS?JLM{n#x~2ncri}w2^yL{pA^Sh@QQmUcFpq z^Rxs{n?vN8%skS0*Ynyk;Vd%k*+8CUH{}W3tDb&O2;c<}l=1++K0)d(bCYuOlQ3o< z5KyNygmFJiAAAs_4tY;8FsIFTesolobcn0%{Wijy8CD}w=8X3`5pW0=V&##JR3NPn ziQR?zm5Ac`kce$_A9)ywP|_Di5ybt0@qPr);os{_z+FdbdFX#&BeOw& z84SiPoDL>vuvwvRFV8WDe>9!Gz4CSX)_&a6ATO%V}QG z6>>R2QyUed25BUHL^gZ`A$WxFN?5-9sVCJM%KA%;Hezxs^WxM~kb?%cC}5evUGWAu zM}Xf0Kt?bQo5@|EP9!c3*5jekNqVshbkm2Jn&OOsTwtXpts}u0zkd}>7LE6#0!plc zz$zs)9{XM(_RU}wCG-mKDRC0i!C1H`Qz6CnoqoWrNHIw+9zw~;zV@qW+Ws3woh+R! zjL;&jkbl%bcC z^;s=FE-~7v&*a-+L?teZm6yf1t0U@1oy%s*zYj!S(vvZUT|y{zKBj9;?S@2i_Qy&{ zCSFMh?;!NpoDsOE31se2dj1yiC!v2V31Lx412(Uq6B6msd}6)~4ypF==cwIgrQzty zNQd5Zw;;PB2fzX4Lq8h54uMV+id4}3$ax9Kz_+hZeJHa~YeIhK%nKr8cD-M|;XP5) z-eYeh?*XXbh@24V6$#FzSRHAJ${5x;RYBX`aQqN+gRmX-V+aQjHwZE}*ba&jWuo7y zO0d1~I{0K;Zo;&8^4xbg-hdVg_wOVqE@ZF0U~R%)!=kNaThtfTIUfTKiNo&x@+z|5 z*7yy2j?A0LjCF+;{gE${Vq!f-NvU%IgyPVq@h>jZ1^wgu@T~K*v)sP zd{((@TbF{WrV-O5^y$>Po0@a~p>7K%>-IaPZe^&O{ae^{*vY!tCA~prlVV~#tCLda zz{;Bv#bo(Oc%DAsg(L?x#pK03iQLmp-U}mVNm)!u3(M3_t%I-COIcfpE>WfFt)kvi z)1kUlw^5eFgYIL8=ODGC{9HhBqgFnOA;#gQa5)9&{W5vwX80-U8to^nzhZWlrUoLwVz{VC< z1zK8CID(teV5#4Gh;QYK<;>O3aag~ihXZ=RN(Ck=g)n<1r_O=3;7Ha`MCr~mCuZ$L zr<5J?IjlLec9zLL@oDcxwqO!_3XKUXW-e55(POYc7Nd$8S2qFAvqT-#r>S{vcAA@^ zR?TwT5J}q|#m%gRx)zW=}eovWeICC7w&!VGsVuvA2iwXwi5vh8jg}oiuh+P4muSnT!u{=!TyyLPZ%bQt6z=bP7#9Ps@={p4 zK*VjSg7sDKSaz6L72IwbD;xYwG-}%4zgAvqc@#M+)Wrz7_1i@p zBq1#vzqY-X5Ph7GzrnR0`v}=fdu@9C>1GSV&o7J=nWWRbj@+*ArKw;Wh^0eOwUHW2 z8%L7>LzcGo52geQn7RT6l4|{U6t| z!-Nrm)01(QjGPyV+2Ls+?H>a)p?&z8WbXSNZgtNlk&3yGe8@XFwtYj_96E_!^l;AL z^s$ZPJ_d%uGw~7IMX)nisqbTK^U275O?*hk6~g-f6kAvCNjP-VYEy zYRm^@f(3-m1_U?(f&A%@#T+~vh|qh?c#*N6_u*jO!;)ae2_!er6b3;C;B^KpU&xH` zXMFwxcuoyAAeb@L{sm4M=1)#K#5AofifMn@N1{g~1Va1&!A%G=h-@vGLDMuK${cKW zgWu$%fXy3ZHVKvJYNbL-8dvi#(m+3t>WM{U@aL!A8RV%<>xmQdhXD6IRGA$%!PtAR zm32mm@$6+Aqb{MOcrvHFEc6|10Y%*&q2w(z1nG`uoyEA>wZj} zrxfcK#%5DN!bd%H(;c4KJ{ps2D++?ZOf15ooqLp0w9g?juFx>w>X}x4MpE#F7 z7b6-d(M3nMXI@JSxBu$eH_bI~1#{{hUVjFl7OA-x-dG9i)MFovRE2WC!J;m=B0dS? z{>WEm3>ML15e3^7tz|~c?+1(6!6I(3NIh7j5qpE^?{|2y$;NRYW<|_kk;?u+pkj<% zga`>*TR1OfnqL$(<@~9t-EN*l}J#jVj9(K)bh~}(wrIbz1k1nTGbQS<4f~S zVw=LIVMf*>Tg`gt)4ShVxHQRT|g_7|>U&JTx3aYti;Kv5dwO8%Kqnk(dN5z3nd zcrX>Qwj#B&h?9#ny#ArZ;$j}mJQd?k{uv^=SOyFID&j^{w!g~u-^arvE-sl z35#CVb2FB%!ixoO!hu9&v`J!Ut==;X_@f&i4UTGJ0kU#_C;!#waj;MYrs z^q?f17FVM;!S~$Y%qZ$FsQ(Z}(fBZkTWlPM>I}F##)lOZnj-5$+b*MR+1g<91sX2~ z;8!tokP#WUx6TyhJgt});Y^L-!_LhJBY{$ZEd{R$N|COZZwl^>d#L{f>qW+R2-wj_ znE-+iAO2O$otBuB{JA}er3d{F-CYN8`?Rq2UGyo=6Mib(H8;Xz@WSkpr$1=-fs0<|XbPCVn5nD_RmG5$-TOeOKY0pdJOFkHbH zAAv&6(?h}}U#=4!s)EP=mCn8A5@d z`6ZZbEplo&QN!9aYOqbRMk6E&6l@|Bu&IIr70Uk1iW(ZRu6jg-N{fH1Q}38(2}=vl zhzgc9G~$lF?{A^8Q_u4O@Z5F1s9L3{q-jOX5)Qi6SRhh-au+MjOO7lc`#VusiJZ1p z4=$gdB`(*Q`6I^n=LLqC9sTIAe+h9P0x;Zp@I44kU^0eWABK2MI^YW(S`qs;am!)gtn zztP%v-{d?GTeO~BTPj_!rvx)9tnU~JW=s&awc|EK4;tuorABz}CrOxWYAR+ODCcW_ z?qy!M$81_SBTIyXIL^s4(}`Matwvk|1BnQpfrZMF2olidDo$bBdz3kPYvA_49KC9u z2-KYfZ@KKj?R+MR{sf3{F)+vl01-%i_oRU@&iy_<-cRO>{@cjJ+a-gH#v5AT>k|Ioibl$$H>r zk;mk~3W{0Rw_jO76J!M`9E1XX&$G5tO4!YI-ELZ9Ho-1&FJ)t>&~%%Xo+&;vYqtER z&$Poj$1T|44X_(-Dy}GMPTqaXx9_nXYl!0!jzK+ddWhrjw#CZPLPTI+QenWht?hBmdK zLd~;<^aP8juqP^n_rT{n1?Y$+z`wMgyWT2^UWJ(OXqoprUZKt#XdfDfLNx1w0IBY( zqLe0jV#^keIp{8SdNawo;KPA|VYUP*?c7B??;O_2mZF8N<+|4M*8kkj&#$+0x^fm1 z4ds#Z`e{FOw`O4$>52eZ}CXA0KJ^(S$qs~qfa=sK!j4nEZJ0~2? zt!cWUwO-Ikj9bZ2Gg7d+_zBNayLHB_!uYr zwik|g1*)9kBXgEVKwxFPN=!;t67hQ-yZvLp8kLkqkUK2?b1*pW;G3xW>hL_`Kx|ip z+A2X{OJHkfBdLnmo`O}5td#9w_!;m}g1v}!n3SDK$}VTOe`x$aziIhRWs?h1wujWs zPclmkN`_?%Y!@#3?rFv6d%$RG#|M21e6}3cbb|ieSY2O=P z`i)=0fR(}~#_Or59Llzzip-(J{ZK|jtWuIF(8q{6C_j-*0KHIcs%(rn`05+y{Kj+S zIj8d6j2z0jKkzg-a1Q4_o}+(5o+H6Zgfx?|EaKoR#=rYP0E{R7|LUO%HT_HSP(MyM z#y|Prc-xO^;U!$1NkfZ&?Wbk}Kldx@LO zyIpE*p+j4B!d5~2<)4II5ncu92`Ssuf5@}3lxd*b!k1K&ye+Dn)~F$vS%*`lXZ)?T zf{+~HRV)@)B_O$8H6-fr4e>`o)w}+t^uU_I9ZAjKMrM*@KNc{qQ`BM@PNJ)vLohfN zsC^uPOO^J++Z|WiIQ-Y5#-eI+3l%Cz(n($DSTZqU82Y&#_~u{*ck|YUaXn@fyv@e> zSP^I>+#c=6Nk=axor+)}xE>(ai>9t=`yc&$8=W7x=2iATkYpRVUlHzY~{c<&sRtK605xF6kw|!~f=Re=iP_e2(CK6e-C{ zM!XDKMO@Azm$2^hvNz&uqg_C3B&LqVn9w`}>Ce=89y$ZrelKcKPWG3sX{WWqqMlR_X zr6Fg0h?{|?Xmf-UkBZ&gi4!dSg_6B(XvB-mmy`=qR^MUr@TXH{^}S3k&nsmGD`ow` zN5$n(XZD{M5Kv_3XV(kGqPTRanG}7RWG{=mh8UytDWxR$r4cXKLOrldQQTk1Jt}^( zl%P#`^42Ia%GlvxGt|sGK|dhXIi;if$#ce^2fAbEEhG0FDeVpA4JsVzpCy;SC6_o= zL~;kn<^L+Fjr~Csgut&(rm5`DkhDYOGC;2;1=@H{)&3Mo`vplu+lIU^K|RRZpCmV* zAvYmK2W+do#~*qIxAv1;wc5UpbD;lIe^pIQYa6TTH_Tm!GVsSyEReG~2HzY<{`n^S zmo8lz8XEc_#P7dCUAf|1yeKcnf&rr$6$_yw`6C**z~2WUQ@`jvxl=#?&9{mQlrWVg zzuw)rwaQ&1ELmK%QrHZy&W-No&4PVtiABEiPNUIyz5KuvHH}Tp+k}nHO_TTYtD37C zgqoIhHBHU+8#f4v)l(%0zNNy3hMM(N4TT#vH@mm2BYASGwrs9R$qE!8E#0Y4lUfR6TU2{vqWEoOX&HXhE=E4olHE#Eorsf+@ zPS(%b(6Djcjk|bXa}7Xw^6KxeudcCeTUF!Ucq0|(uo5>?(4?B`>9?=f_(pxK4fX3c zG}dgm`IUk8loaOYq2s=x$~T_><~-M*w^moX|I_o|kVkobS&^-{e)HyUYQXjMEe*}} zj{2J`k5($_`D7rjcf?J_Oi$lfSMRECzPY1rwC|fMadZ0DD{&+JU%a2phZ6TUy;>O~ zNtrAEI>Rl~ovLYCXU;aYB$_NOsRAzK=@;oYE?U;zUxg95exn+BCogU)(p|e2)BRhf z3c-kE(}L9c%>pT2E)QgL*9u4%HrK4foX)~>y6I`q6L-xfq1j!vu12WYP~~c)GEL)GTG>u(8Jns={oe+_x{W?|jN#wN`5Y9U8h zv}J=JWC*g!Y!S@qurALs&nFKx)oq*1UcEN4Iu*X{QzT|6y$0YwHQMti>Fg+NEyvA2x=yWVTLyZlnZ$<=OM?PNzLj$X~uV zS6IBf*k*SMg-ZonVL<_YEpu2G3ue=eF08F06D&)(G42bqG4$zEIjT2qNXA47>`Ull zWwxUJO>+Y|+%=nd7Yq z^>x=MlWp>GCHM5lsaxOQysfEbdI9Tenw9r$-qP4mvq113-B`80ew|YEt=ECF zNq3L}Qg5Lipf7|P2>&|$rvAeF%%~k;R+JC6a9BQ{m+O*oFmAOVHpJ;k(LL zs(`MaBE9a7B*(u_cWvGbvDUv%udAtQ`giGp@li-%4SMR<>QUdaS5V(tfseC7=~89Z zwA>i{bz9tS^zmBv#w~b!ZGAPNQqy(~La;!`w`^#3ZzF}{eOW>?dI_hp|Hs_>$3<1; z|KsQ0`3)DC0UT6DyK_N)#Ede7CX^O)1w=(af){QSLQP0^ZRT)nAP{_o|hF{y6Ke-i<@7qfrK9FXr7t5;R? z(=)7->?zi1JSJ(?no7R3u!dI1)0zVR{%_M~`SBBdygsMxGv?krhY;jv%$YHdpF7JR zeItx^QD(NXyfm=lEu%QTY`9(M)o>qgwAfbWp(Mi&AkAJ~I84o9_a}qTu+6jGp1g3J ze?_{He%k6)?$Y8L=~2JG#DDoc3xp5Ux5!ysRySrF=zsSsCR+{ET~1VI^-}SsCE<=^9Qey7~9|`}O#L7ruE- z@zj)70Mx~|^QBX1KIgKPrIr3S?1TJoHz5})s9KHv#Io{g&(v{cNRA~n@NzxXILc<= z|MhTX5pcg|SuwU$xAPu%6_SHd^SC`VQ!%4aUsaXAwyGMJi}GWLa=AP;ex7dl-OtkD zy{fPPw8Hdr*|ficbP=Pc3fzx!x9<{^oZY7H0*@M6vWg&GU;SRW-k? zwa`Tg8t5__tOg|gZ`Xgp$rhVv zGplMa!p^FqK)Mp=D*p?OSr$lpbBC?}KWopbH7l2`2;d_H&@zzG>!9<)7pS`|fVsc~ ztOURKh!psiY%Sz@01a;`c&jQ#3H~>LbNCGtI`HO4M|`{i694?5i|H2oPt*$IG(S?i-z_O|}9$L}xzkmMjc9vECoB-wf^ZPrG zJmo7X_M7}{&a$eNxp)XiBX??3b%P>64R<9~sw`?WWnwuevkJ#!}mX+TGC|99|r-vl6v7zqC#0YuaPp8)Xd{-WzV?URY8Ih||3Xa`UPg!^_hlwwYq z>&Eg*&^q*?-a}+R5@L{0ZjdQ^*v*RQS|*go8#ZlS#5a z?4w%_O|sfVO#X1~YY40JZ-fW?5$4KngcD*A4hz3gUM|kxNoeei^1RImhh+QH|MU3M zS^8^i1U=%-P-_VAq{xkMAmHXb{NJ(ME(=LVs@Z8_*>;)jd(NsRuu9H<7$4vQdfhIURCpRyYEJNDhIEuT3v4P z|Miof83C4-FCzKX*k;gbv7M_fb(f;O{%smcr*yfpa&^It zh7W^`ra=F&KK~06<)=HCp%Cqvc-xE&e(En;NM&Th5I`|E@7w|v{JZa1yl-s%{0%HE z`h^VTKWyLf)upR$Zr*itl=3p?WXyH&wrTTb%$;+)pV9<)BZx7}EjQSb8wm7&OmC&> zZzT1<{3`vLRV!Alu3kln8fBD%$gjTBNIDk&^@kSrGrbFt+huDpxL_bE%ZmyqyX^#W zfM*5Q0sH|zt)=4RGT!AZSP@|4fa#RfQ57Zn(0}Q##H7EDhXMikf#JbU7AQ@_5CN}T zP3I*I;9qsQa~W3glIs{xyY~%<38kNu_Wqjw&RA7i#ZRO1hawNHE7w`-sV;>Oj84X) znsVo=O5g$g68JYAf{gNCeGJqb_5Tq&Lkp|Ngw7tQ0aAI$Jzd%c=^>mtk)J84|FBZr+fB&J`r53;p#uhi)Z|s{{pe z05!5#(=E0Lx#(~yCO0-Y{-n!RRuk_0(MKoo^0@KnS;+;a+lYHA`DPv`J2 zy*ft6gZ^rVf9c?;aW9klawd2p@!&4c$mIMQ;y(aYssjH|E|q1|e*VAwmFQ_IZ3kUv z>2KeIaq0QBap`o8ycwtG)y1W^wa2A9kG4XK3)&l(o$_ucqhXF4&smPX+scKq-VKM@ z%l*vd_u9Atp@?Ux-^zy<+26iP-M={F`!?3KIO9Z&V92m~H)KYTg?40czR@b=Jbdp- zk$WWiV&4ZI?or(RFR!r-R>LydBlY9>zw~V!|EGhxW5%gObzkLRe*0?P`IiW?s3WX%W zF+n=~r{l;P8CWO$7jI;}gmsPKHW;r;J&%4hoYHc~I%;!akx+1tP;jqMuvjQqA`~nY z3Tgs=h;4rs1faT^y;HhxmpH1*dSGP>6An4!71l5sDEF z3~L;>uIJCH%&(~v(;W(q%j|-p^t$fiJh&ds{7yQk>)8&g?t#X>gu8Ib-+?~)Z9-`n zro6SfK(7kVjK3|JyIbi0Ug+M&xbOF2b}NZ0e0=1sS$ zJOmHbJ$9a}xLS9}uCX1aZt0o#Xz6-RbM(uaOM_CJAz17i(iaBBO<|QrV!R+RZ_@;I zjgJ_=lssy|r8YX$yr{m#svcXfj@iU8f2QBJ&gRDEjnWAn-l<_?hlSbr8$^b%Fvu@N z2<;=MhH*h1`PTij#g54xD|F0*^z+%-!m4ozvsq!BK0n;DwudV;6J{;_!i~+c5aSVv zd5)INjWxb29kd^FUa4cAr4cYQZ97{Lejqty5Z?|;%+oZMS^5aq%U)XMl?kJMOW%to~Lqi)eKA5_qakfMtU?eT&MH z8)#TA{et1)LgP%-xm?0*z3V$c7)SfNg0a)D=p~ncE|xK~Y4Ff&5|@4{YBhtuDNSCFl0>@?aiqHj`YRx7$>(hht4~ZJp|L zuc*UaX)}k~mS7^}nzkI&4PzZH-2Mc!X)HMlFDfY15fQA>u@ONP1vPMY;j@-Rl;}}G zy;8nBR#hSjtZacx%jZSj19gutahGF3i$W>G`?>ObuPd&glI{&PpRed8#FIx!kb5Nr@WK3iZ%Vx%K)0iJ6e|ol^#COWM0^Fa1#XiAn zi+>sBgcKaBc;S*-*Ib_(o*I$O+&(2uKCC^Q`_a%{Z?q2GRrT@EUGqBP(n+VBkTo>b_NpSP4LzQ3{Fu$l5jUva@h^b4~owmlr&A8->m@{*Fup8QKt_8s?0vDqR zd-oh`*y985j&w()awFiAHtY!@>`Cag@%eHtGJnzrXjqbzc9PK!MahaK9)Td=bWr9x<=CEDCRH;#)6ouOxY^aZ$1S`5=MFq?BCq*Qz2@us%h|3RE-sN(yg%5p>=fKT z=ebU(XY12dR$jL+W)=Fl3MLz@IU&}ZP{3XA4)H{r<&};ur0yt~yJ+oV*wVPz;GUy{ zypJxZTQH^xe?4{n!pjZlnzD1*FEPi=!LJLL>Qr1a>nxG{)9I1nX~Ca{p~_# z{Y52I1htJ0%H9+L_eJlJG5Zb7GB5;KN)LSA$Y|DCVQ-Bk>2MvI6PD-FSjp137)9ng zgQynzjZ8GH&1jLVCXMJN4llz*`5VZEIJnT}&-}Jv966!;#>qLh=i)`@w>2*1(zrOb zcPz>L^n%`@syhunphnF_L|3m<_c+cNTmPKemS$w?t5I;>$5NA8ZH!M1;n;@W&(&@1 zA4;5NTae|@e&Lz3JdbYlthos51He=vC!y!;MV1Q_z1O1h$5=kDNl({WWlP1JFn0_! zaNBb?1N0GKj__`#+lZx`4D%4_So;j!V!I3M&~e*Ur^a~Be#mnA2kC&h8rS_6Gk>c= zTZFO{y$d%A`=*A9?Ip~IG>$c;Bx?HxXv_*MPan~^taOsoO=DIwhiUjEdtSulU{i|N z?nww|-lcKF;Y#Km8p3For8HW}r8}zGum{|{j2p3tpoDN7ua z_yYHg_;*Q+y)(^>BGVpC2)A5m5W2NYCoL%lS8pAt>F?6Q5lAzmM{IwX*-gK=OerP$ zOL5hS-ne-fl-RIHgIlzW!ZToo(HR({JfN}C&TUI9m>P|h}Fb;Pc?5!-x&?AfO)e!KSQy+fY(7afNOXN*f6QS0`ZL(1JgSMOO@CdW*n zO)-a9PQhC^W1)e%u{HJTrPdP)cLHyXn8JhQuBTF83O@kjIEqIG zdmbHxv-xl7Iv$wu$#3#)pK?}fL@*cIVECSssSUGPwN?|J$Q=?5{mds1_G)S&32?R*237S@Ozs1gj&f`HC7m;ZP+RAHnOZSz%mb4VL82vS?+Jg8A-~( zy5IC$$g&lW%CYhvI&k$8%<3LJclx9(b=n11ElXg@oXEZmLjFY8o*0IxZIBl1>zvVT zX1Yy`gCm!{Qf_)=-aN&o_R`I1b%_-kdn?D_4jT8~;I~?84a6DV(h}+Z-DG##LmcDE_fqIgi<<^8s9Pj?7=qRaE%mAqGi%<7)|)q3j> zsTN^XEZFDJ2Blp24{2*%t47^C>XmH|w?9A!i*@Rr`+bMY*7snSF`V^ws-orClZjt| z24tHalVXM8~+qCh?1pp5K(t7Ax-m76OH&%Hk2{dX(=kvb2 zTfd^E{-#^>Dw%b(SiO}&jMb-!0dl32*J=duO8l&W(>p2}WJ(__+8{p`1Kb=U~5p^@rSv8`5+ox;A&c zQRm^9TGBGPSl6nZ+wyzgnNjNAtrGI^q@^QwuGJ_L-p!`%n&)rVgNnGh8CJmh>rb)! z^W2tg7nTI^^L&n;pBzhqnA^ zqOu>Z??7yf;SF0!?|KPi4(wH|ybYV5B|%&5O-6p3ul3MRtxJOQ7M|R1H~i+6+u2?Z zazkz)&*M)B98>JN&1wvHc#kZIFnhe6R@1K3Uv>mgU;i?z5muyy;iE@e5+BY)6?o0DMk}|o2RW6b`oDrf1SQ06|RhKvK zLUf`fMdBth5flWhF|xxLk$3sato@SUB4IWBZ-EC-zCCwL_&C~ zK{N!XMlf&F@2NI1LX}VvoFU$=$}D7Y{WZbn2vCM9f_ms&MEBHEi60lFze>W!pTYVWlP^Rafg+8iDrb* zqb%y6onATOVYSof)?bRwvU)o+&9VgJZXr?EaECh4)>ogPQzYR|I;+dWXw7vNdTb>x|lS zl?%5T$K98+d$Gqj#`Vq>+}HGB)*GW-#*ur=s?cPmjC4EW8X0ndS`A&vB|ZFbA3C}N zF!_trm`l#QoSipM?s4AIYKAAPDEFc?>pLmJds?88nqtHG`i^%`t&7ntvcA|^L9=jfA8nd zvRUy&aE=-X)U)(xpdLz>FRY<+7Beeva4`i3`?Oklve@lAz zMN!F^$n;LOcb{auQZKM?1`BzfQF&FP8oMM8&H$}W1Gj_A6pc|NZ_8kYPkig_0>Epx zgqFJA6T06sklrnUCTBHact@l9;N24h=eRCs+<3|@TDYip^A%qYRX>5M^+)8J_f@tgF4fPFgJAzN?l+#4D86fmzlrsMCT3&%Kiovj zhihCfoep5(x}75d;iTou`v6=_iQc_ZZwk?W!+4Tj#3W0v_T@d}%&9q_%u+6vgdA3(4bs0zMqu*kK855^^oox(}+8z|b7{h0V zXB=U~W9Lngx$oZiaw7WnGyl}$AZN>rw+Dws{a2E(|R zRHD()VUFuq8Jl@dm33tZGtjtk$ogK8)j5v2RE2IHXkKgIFm%F^K<{g^rrN!ALp<@R z?trXLuKH9T=pGEY8^`_JzbP^VkFFi!3WdX0m{YVEWOkWqOGC2$P7M=in7Gf>tkIkb4tJdnj*4VE~Vnhh8r!IJiRmKvJmMJg)pjyvn zjV1jtDIDoLd05skp7meCdtU}y433ydLQHb-e3(rrNbd8n1rynV6eUBl9~BEy90ilw zT5H;xRGZ&_pf-PAZKDmu+uNkW`dO+1+JRi+%IAABg-hA&g8ASx7qaA}ovGwPjyHGR zS_P)}P;l$=s+;zz*fVieJuk3XKY(|D7zAB}lqVD7*kMUX4%W;MAQwG`XIt&iT_582 z6rNhhN2>7c1m5%U{?Nn#-(fj!J7=fj66UWD0eZ7p<5$vw#6J#nf53(&UNSf6J0mL^ zs_MR!j@DPr(6z6v;<%2W$F_6UcdqFxM+g76K54Y^ACm2JNeCz6V^|1{?Vn1ma}qb7 zmeONe;K=rlE_Xyw_Y5N5LsrT$%Ur)F;*$ivQu(fzT6<-}i^n>-j-*(GE;&&&qvteedR!YUKO#<*9> zM4Go-gy&*n?3S38O5{nO+ew|_RW1rH&>eZic1IP~VxWyR_Gy?G zzy*8yUikFpm!F;*_h`{N=NuD5>7+wmEO2t~L5@rC*cPkC`mn>W-QK+cSGV*bjhp z&q8}C_yi*}48N(L;>CG*KZJxfsnU@}tn&zqI6*jMlGk;!`>#U7BcrAe0U`yEE&n3LE&&0n4$FBHk2R{W*XwViB!Vt>7tsh>ey z3rOz+QhY3%b-(0CzGJ=1Bp2WlzSOP1_vk(QQJOPOa(G$Gru`L(5W!=F*y#kNQmDL` zO0n(MPmT5aIqlv*Rd&3X+Ho&oMY4o8bF)wlu!9x^!0vCREn3RFDpMAMz~PpCqFZmn zM|;)_;)JKbW8)naT2}41he_hapJkWYWfD7+DCdG! zycL-5Qz6}{IAlNQ(AfH>!0u@Z5ls_0?Z$6L*cR8NSzPikE&qr$pJemzlOQd| zi82mWl(xGnXBZVVU#Kl7Iup3Qj#Q(Wv(0)a^Tg>yuEF*2vLU`;xu(H*zIkA(fw#tPV(T6Te@BayWjYu-d|%*H{v zIYhaLc9#|Ya3nypTz^m$orjSyMag;NVM^i~CS0&2zhaEL3dh@iHF?(w3Nmznbb#`={ho0$8FPC%EvY=D3RKXSIez0X~NRM)`;=d#p#g%fm)&*QK z9<#szn4KO|VrLEVBj>QZXftBcAH!qy66a5n$7`s&Dz)}29Q}|kf};?7vSEAe1Mr{q zrCQJYXI%3;tn;5`Ggvl5X1gRQ9#L^tF2eSe)KIIs&T&ZTz%S$m!-4gh6(ad=zBr$4 zm_3OjuoVNxe!>Yx=sw%+8q10g2;I5S#GQT#1_afNwJh==+UM7l@OyxQJ1Sa646#PA zxlmZi;2Wk*y1xF45G;C6E_h5kE5#*5dc3t@mtC&NUOB1T=&4u#Pfk$WNOh|a30X?3 zE7Bp8iL&8sspu%{lF7TokNvs^wtrBO@&L7K0JRbgb5h0%lMb^9jgOB^ zFn(BW)v`TzOzP|ZC^Xpke!0~&$+mTU!?zM^n$+xy*UCd6x|oyz#_O2T)M&^&<Xk|~T=7)w2WOD^ z1-z@6G<+#tv9*TCju|JH8al?`Y5eM$kA4$@KGB2NvdFWRz?nQy&-h8TKU$l0RZ1s3 z`qB8V)CWBp=yM#>(E&JTxoW#0yT-2n+W3Q%XlL0vLAWJ3xihVz+7o3em?D11OW!3k zW?9agY0mG`)rrntP)o%kCq3z{75)zFI>i|14ARe0a-21kh~AUaw=lCV_In=$Kf8em z{VhJ;SLQ2wDZjwDe3eV7AZ&Vm{$7=P0vmSfBklMzee#-$x8sfOzMv-i=9m7fKH-)p z)e$Dm+t16NbH076=7-K`UYL8Td)DdbzK_~=!NA^4%0f`(pmHu9?MIs3k5Viv1Nk@^ z-y)k8lW6Y_Ii>G|)uzkdTKHz#z2cO_ur=LbSZwqIlFRGq?<>vYUWYkYlOT%2XowGnY>Vk~z zSGdS5tFO;B_ZUlNrrFuK$1lIPkkjtar*IsF%6%t%Ctf=8zVYKvm|of-E9iK5I;SP+ z?U`k36Uf{5f7I*owoW#0j@>DZ%V1qDv-xb(O}z0&TN^R9bcp zcg1$rLWvu|Dp9|{f5-D@Jiu3tjj|ZWod@1qeUd$`mdrB8_&eFL59Ah(n7k&~mh(HS zX$^&4*_zxZMl|oJYrfB8S_7WVQ?{n!f+Px7t1zkg`MnQ5-CU03xslJv)*rDf!isY(2Ch4byl|0_mykvborgYg;1oMO%JuTJs2Sz{)_OrC8I z;&ATG%Qqw#OX>i;tb>#oi(WIO``*!_2u_ko5)|iLki=vzr6)ObTlN!#2`Eb=vxsgN0lhppzIopm1+kp20j!R@d&JpEI zI$u~_cx(Llcy7ZL=028ZUm`MNki^I-CSeYQrwd_Fhx20*Y(s?rizl1j`qio`NuAKu z5xp>;Pxq?Wb%VOg4zrw$xmu2L1oNbxmTL^Cd=6px16=(_<=JpbnZw{i0vqKKVNnd^ zGKaC6Cvh36Z~?(5TShd)`Yt2%DXk|NN61M>4r_h$RKJn!frrpOJr={^rUfwu~goP1|NsQnGeG48;EH44$rP&CbR*}QD!ZL< zUj~cciVJdmIMwA!GwNGLm>I(c?y;Vo*Fvb}_9mvrhz;;UCc3DU8OUT(8DR{Go;HIK zrr|w0CXsQE)jP&8j%kcIhFQqKi>sK)BmnIanXWNxmqhv#CXQY zlD2MRJlW9Ql+`f#B{tV|hFhD;7&a!Mz!OUyW8{u$tT;yg%kl=Wn{0i-lN;2^YmOdR z<=~mr*$YS1XmTCC^4fWhp0nj^ZI0YvZ#@6pC@(BHHu34Zw9k)P*s@8JJz~A8JVTqG z!Os}si}CT}x14PObGZIv7?tcws!a`D{~7dN(n6bBUR_nA9>gJ1wYH_2U#E7NVxbDE z56Nz6(>KXAy6UsRiu*5S>k_N7AH&M2(Jd;+6m^B%Z#6Qm47KPzl1U)bmcwMMbND32 z_>9EVtfo^Ty!T1~w^;CZu!Kp{tWGlhlxELMuyytMc{osjp(z~6gH6tify5c=A|)ec zvnBe{@I<&rGITRn=zg8@q2Tjszs7!HG9mC@Md@j`Gl+F+z%YKPP`#{b7&y;yxXLnH zVP=>ZI)PFR>IlKRON7P{Vd5W~5dXNzMOgQ3aULQ&uc{~V6Z>0<;zVit7m`R+4x$V= zH{Thlu%E%vLxjr^TobXb?n}4l?aS*TT#JL@J|(@$)_zKAH3WD0et5O+)rei&zTDQj zI9NEW~p-4E`e3c^ZOh1D&&!|GCZ`N@Dw5=10mqsTmlmGNv8?}atm4jV$8);8Cpj1iSD5CP z*dcahbL5`h6YCZiLumayIr3jVj(;>Lp`yfTIVPp)T)ke)*j1%QPH%lvn`YzVw(zxE zHd(|FCL|=Os``1h@f>l45R>{$51aKSS@4{0isnh26}&{Ige)*eYR-#<3Hl)EB+5OL zc#!4fy`PXN{qZ>X+DWFozaU1zmg%y-lU{lJIH%Z`F|M8{fOx>bVbMMLrRZLHm5T01 zG#6=3pj;&kBP#Y4CiN3VE0NVBQ{cP{nNHI4t|Ni-uB%s`+^Xs)O7|FK{b__hi;F0% zM25*We5`;hZhEYcpTg5)g$q}3tl%L^PG6q4p?Q+#r$*RGr0x4RRXyrIS{u=v$(BXH zwVOYSl_&%v>qk`}J|}qrRi!`+jh<#8XngNV{C3(UWQl|eQGXT>0cR<*B8!{0$b~F8 z^K;X~3O?LUEv zMG8RWuO5>&Z|5<#Op9W&^8X{~!~~$DpY+#$lP>S%2gs}}mV};n^TI#Syq+~jGCebS zT&!uwg1Cs_s=SZ->qFSqc0y%Fi{-spQh(3;d5<1Nrrv4D^tZh3BWziCZ@RQ2({yG& zn{}78qey#Z4Xd0gS$nSLefqAZxiL+0_57H3+q*S$G-c)Y`#d>Z??h?G2>qFHa?Kv4 zRjTi~mbb9474_uEv&Kt#kN@Rp(8_+Zyg%d!_z(9O6XE&HMHAHw7X*O2!wp8+O7vF{ z8mG5vQ*B8+vxgFb;qRKZEF9&8D+Q9ehZFQNjVNRGy-c0>actY&*{^foHh<%hF)le% zKHpdT2RWBrEAZSysci$CqPd`7#+Wo8y~?HwylSl66gDXE>Sn{U&G}Zse3!yJ-^`k{ zhR@r0tRVF`7?yW7`D%+d6#t3sDATegond7g86c#UFrA>LA8bHL9c4NgA>MoTz?Gxw z&EW^qLk4l!CP|=$xLkEvVH=V>tjxtS4wldUiZ8w|4iBmhm-%xGff7jA9^4V#!{A}@$nePV zC}0Tn-?e*k#bv4PvQ!-&voUbalNI2|^k?r+Q0*sMe)V0HJOvVuC{Xdo_JYgT~Ge4-qd zE!9r{b`7WVf=}%t3^&n!QCegdGizPFKa}dIVOd3qO|7f3v%VjM=?{67Auc5spyDu) z{dzu(VpnK%xwYRE?@vm#C6DudDL_dYR>AEh6)dS=XlaI^Se|MZrq!!;(V6MFRjltP z7nrZ=+(l*s7o1oqiFq+Z(UB+B1@tX#kYJ@oJP;$6$6qxT(jTK z-P$p$4(DP5xcgI*TYxqaB&;%4tShNlXh|@tb+ZK26Fn(8x2pF%P(;}SJmes&gCa0J z+d58;243E?RZ?r;$#^RB7ERHDNY-0miIE`jG1k;fSvo*QH#(gzw|8b zC&?U6m33|{yf&W1sp_!`VeUgBr*?3f{=-*x_XSW82D@kIAn86uzKQP?^w$`0k;w3| z)PMLVHmrVD9|aOC%&m{U2)3m68)?Uw`CMrK;UOH%3pl3lyWXyEG&=ps?_4M;_nYEL zY}PUAz_RBAfTH$z<(|29jWQ~1YWN#qqNw*O>gU#V_sLOGvKqBj~lo3Vu1-Lj; z644zIT%y-7%lo?fM&|eVy8F(4X9`+>`Nq8vj}m+22aAjEgg^Pzh~+6B*+}-yk<+6R zaX1R#$#%zqMQdD1Ns=+o@so#;xXDrO>L8XdZG-63zA1Zg59CW}s z`7idBZBt&A_D$K+_`Sq6y#1#~z|(P!Z|~dC__ZW??Ed!Q3eTG>aLT=s?Mq&N8Md8Y z?|S{Q@17ZNzak~awA>?jS<)Cxlp)k(DR%!#BZ2ZcJd$ROCXFLVuNLb(>D7?+{lkph z`T^{USfz^1AiZ$CAb;dGw0$9MJD~C%zKm|XBAMmZ-jTQr;GpqnA`M3(JjWmY_C|Q7 zKYR(fB9vd^Z#XvntWu{ui@(~&Gx!?@olI643KoOH8d!W7jxLzr(H^zcCMAnnGJ|1K zX)y`RJHkQWte<&ATj<{Hw@rRN|B&-s-SLWJ9*vzf>n_ORaxrJ&qN3t#o!ahallAWp zfzvlzadsnin`6;2tROvqQ?N!kb_W6t$@OhNiH49wW8cJurl@bVeJm7hgzK9 z5_5S|Rp6y=Kq@c)rncHwe%ppLCiBY_{lJy(m9f-0f}$2ydJ}cjnTBG`MKv>(?Q7MO z@6Dk-x!)*1hVqLX`fK`5M!jV#Y1v_GX_=S5i}&uL3VPc}z1iBQPE0q4DC}gRPT%@9 z7hRXLg3~8jYFgKSk+2|D=Ss36VYrG~m zeWDPH zR9Oun`jJXc%$xqRy2h3J$m=B*v)P4GmF_ADT4i z8;u|K+$iiW z7wHaJ==pzI-8uVl+XdB0mU|O+=Gl;gSL)2ldUNciibUq%+}d(R%pv937WW3LKACez zE}3QGVxj+$!(e9Bl>xPPo1jK{fO&wvLz>V>cXSXZV`@QfB3U$#n^7^#1QW}J931a3 zOjRHq&BavEcYh8Pu!;ttzPy-eo7z-S1D>~7oOk3y+o_Yh7nb{>oaCL?xzFZ%jrT%tX&3)IZZe$Sv;3HCAoTu$boE&~ zz0d%0bYH4q9+y}FPxYw>(3wIe_of!j9&QnBFEf({8b78m!>YnM6)pkVLQ0PidswEA z3elh8>=V6pE>BlPa7RSY)`_MT|2E2KEFP}4bITRWe|F49=+ z0h~yFjUF!EK#1ADLWoToS8vL~9IIemWb1oo9W#|PC={Pby$WKV{k=6RWWfg3)1B>d z5~!CtyxN8VoN;ODjq(y@j;7eH_NW<1JUrPKa!i9_EiL#iFW%702q%Zobk^84@~9HwP(Yd4dyrEou=^tH+>sqzu_?HDbl2RG?A%ekRD+Q~i53Sm zIS&~W4ev`Z;y!VCs)-vhy+AF7F?s1n9&1FOtjUO&Z*N_S1=y?XQ+DRIWc3 zC}EKjB)08?t=qS1s?SBi(pJMFTmVt^jKh2!gp#0Q*Oysu!6Td!N;+^gMBoC7NZ?mR zZz#k9Kp)`Fxy@Ji9_Mm?u^L-y1YDA*Mw~ipfoSK26?7IPI0q%a>hZ#e zsr!i&2)f4^maMC;-p@h?|qM0EXS$b*tM3K_VsO7x0j-CA3Qn)GOGUxvU zsq02AA=S_eDG$U`f|F~9GNd8c6~nY18tL6u>*zhZsA3Un4_=hx$t3K2=Jlr&4+Q^F z|C@;B#aOcNd5OQxW+%IQTf?ZfQ#fPs=&5%80&e!xr=DD&vC6GxR-N%6psLoI1B06O3L0gYdKh z$680aT3R5qo<@Y|JEJ=~?!D95TxxkxT3F!|b>jSB{nP4x1(UPfG$Xq;ul*hzMC=(g3&a1_CNq66bK_|MDH7tSq=YW>b3;xAs3vRFlJ7))w*O(@B5O? z^fg!+F0Ce_)yB5kWL%8Z#<)}=^(qeAxmq{RjjXqk=}*WxnUW#T2~l4t%`!hz<8F*} zs6un++x9#jHz|JKq+6z{_Z2amYzY&W^0(xI7T(?BQs(Ku`{|w(oH<~QOx56e3>TyP zK0sf=tKtsQiRC!4Vb`q8&31i~s$y!$U@tcW}8z7bp*?%Mp@<+#R1FF#$ql-53D z^P;-aigixS-a`jEH0uw1QPQfpU!9||d$;+{tW$Ix8V8t~-m#kI?%1SgJ@g}mum%Lu z&v8YNF4H|$(>%eHXLy4PT^Y)++=6dmjf7l|Ao|zFrbhP%tMw^kcc1Js)$F+!x0pJd zx>jfS{$SP_(RQydn6So(R%3VvZXg-8?r=Hx8m%B03x(A?vU5r8V0rEDXZ|K*X4X9! znPahXoM=T$P=yRtSR)7=y)xcX0D}u}yqBa_7@D%3^^Twfo8oinQje4fubnuhn;MpA zYd8%Rin)ol=9J8{h)1LKcat6{B|7D;rab)&(vXE{bf@_*+0o4pMc?5FRyX`vL8EHg ze%v42_8J=d0-IoSj}B;~fLubQJNQ*b@gh>Cj=4N0C_7^2+;qVwED3H;dwOqi`K=Q` z__oSAw`sxl;&q#>qU^!Cfrs&0B7+J5Bz<@-mDv~W#Ba6?=YXd&Xw(cD&%bP&w=-R! zT8C;G&JlS+KP1>o+G{rF$PEe&BqLKpt};DE68E4%nYz7V=FV){!iaQ!9&}#PvuukZ z_HW0Thc`e6WY0yfCuEm)5ad64^M9{+j;>;@iM9KK)_*nln)cP8n(f<`m#DCQxwWM# z_4b9Ny2y%!s@}^CtW>o!xgFg79qDQ^DxEa7Z%S9(`6cAyH(g@O1xFB~Y@`aOJzt#X z2Y4)-Szk#8RRU|zE8!v*&gbN=aaPB;$Y6K=v<=gX6y+H_Hp201f~s9AlM*dO$n`AQ zS)>?#ZzmgF>d&Ey;s0dzJ13e5nTEEOik~P7AGmt@+|fgOHSLF?dJ=nq)f0^X?blet zM$P8E-%9NnQvF|im*4q79}~pBIjARL);CY-3p9?tBl^tHdat*(*{2^lr`6lp(&p2@ zdON?zr~l1dxPugdyX9%ew0d(IOVqn@S7Ri}sO8%I=Tyr?4m$O+6A(;yJo;8PPb-bec0vH_y^lgY^r3zOBsJBa3*!`|_b;A+ri}RlOnv*Nvm2N6i{!}fBG^kOe7${P1onXJt>O`Qt zCHnN+tvsXul=hnS1sOJ!>Vh0Iv(abtH!t(dkBN0~uGv3me1ENBgLO%ez#ia*mO;TQ zbk|TJ50kAEa*3GB%;FQ7zCzp&91-HkWi10k^hhwRBJ)`(5sP2Xa}w^GZcb#>Jcf%W zTC?1JWE4C;h4w@YB{KMl9}0YiE;IC8@ON@cC_L@{{5g?9+nZB*cB4Sr@IfM?;g6B% zWCu|z9#SMS*>&njF*0bOwxsT!c{n9>HH|!eB+Ri1P%#F)Am>Me|bo#4^eN|_nv-^cz4S4W}a5O zc0Tcb^>*b$(*6gz5e9AcWp(@&h|6W&N~{vGYGyReaA?v@0xzv zNYVF${H8k_PYl&Fi8@5QaDfs+$ zO<2eH$X0Y*bNw@L8{_#~|9CF`)p!YevUP?gj8}TPC4tE=-r{l)hl5#Y6dkO-NS!xPZ5VG!84bi`szK=K)v5_;Ut7YdK%TE2*sjvl9dA#oIJEiP-oxzaAKkEX z6ngY%zZ>?Q_$rW&BaqtlGpz3+wrr9kXuTM8f1)!t!{-QU(%6IN=Wf|>rb>QCAx4ke zVKwLOct|0>tnoe&$>W2HqSAY&4FA1<5<;!Y2#z#C{K6BIZnGa{o zoIW!XYMkO*Ee%inc#Va{5rEzd*VzmnqWW^%W~Z;92plYg0LJC&#WKl^Ii@VJX-U zk2$Y-a^@RD^zGi}x3iH&=(*7$Vcrg3$2(^`mIWW&e60QK-YW;pL|x}!aBx8W2=@?1Ho?Z+LK|)T z9aU%we?Z8UC)jrrjZN{8go~`>BZRvNv@>j$1#24Y(&^P`>(tPO=~A}S{t%2*7!z#^ zGRARfts<$har)?uo2XL9LR*48dj29?=KLQ4hiSN98VyL;E*6V&*kK8=pD%VOHt91- z<~+)#g*5yX<}wm(is=$_so3yawuL0x^3ua4jWiD;PAaKl5X5uzg~nfO@WSr(k}^-Yg|FqDv2^gC7Oz#Lrg zODP(D7#lYRhSmpRKoZ*Q>z_?!v%`}+=Yjc#uz5!K);5D25?Ly4evN;XZ5qXe zLcqiQ29noJqbkmqaB)p^KwzV<9VO0p@RIzvH)9@U>Jo0I*(KQ|2g zo-_*l9)(Ola1qkAhrdw%55?vOAv`+;7si%DwsX$I@(U~zUko)n@}ODKm$JUQF_gT% z#8CD2%NEBUYTh1~587_hL&6AKy#x%XV&;#K{9D&w&iWoQk=a}VgL^fji!u2v+*7s{MJ3Eu#_mTLE7Rq4Vib_*mG>XpGsx~g2X>*2)w;0o?=5}#6Z%*a1j zbj*Atsq0rwnG-jx4Wel)PG)ARX9kxKhNv%SB=1%2eoCo(j_iush7Hc=dSFMAYn;OA zf{mLXVqS5`am<*BLYRHQ^>2CKD|p4%Fy-;UeP=W;Vx%KNJza}ie`HgJ`}FQB&F8oa z#(QjP*s!a}xO?;$cooZZOw5g87-kv6)b%hS{c-jn-5T{B>^B32?>=M-!A^elfSi^{o}pFDyxlH9xt|LY#rF0 z+lnGv2V5W*@z|-u@2lB6W|>>ewN3fxlgK$C&WiaSc`0S_6L`_XT856J2Q=esDeTZm!r zSl$a`sxFen)Ng1~F!)pGa7GS8p^YX{*78Z0xc9ejAx zAHC%Zn}7kgZ+%3fNk;_(h(Y-kZCLAblyVdg^Mb?L-%MpV6v#&A)*fS7Zlz5naVs)5 zfl!}ZqW(<}<(zhUlhht=9h79T^mZ<-0XG#kVMpblrn41O`I0Ik4wgbZ4ke;e5@5JELZ4JI}andp(Y1RDOQmd^&F9&=rO#wR>*ps`>L%R2%7*z^nb~)!X$e zz5~X|EBdPXbx;WKBcV^2rP0+-S&`06aF~0hn=Lt@ogp#ateCGby4@5A2mlLDSh))D# zow@9I3en zSR#%U_U{#!Vi#2<|CsJ1` zJrPAaYsqX^jWiFIEK)k3JVx?LPH!(=klgmOU>ReWWCyQxS;mQ$vB@*qWXU@QQ+$Ho zw@}yO9V>e?UEXotBwe`$dnf_gE42u{(eK#5ujJgaJXN)bW6rT{DS2k5*QzTS#)fOy zh&nCiOkM(0{8R-rueDU$1+J88yI`!~9cC1*OrWe6L=5fu%UO+%30n2R3=JmKs)Jt4 zsJgXHUu2C-=efHhZ4TF;?Oi;k9S7)fjiWPTUXA&nadBqD;&HVpnr?-UXhLmz%w_xM49s!%sq)F!5oIiRzx1o zHBYZNr`}fp4a>qbu`QqURbmPreW@1q2axaZW5X@|uvVa?JQR{cx^Q!UZM!hJf=>k; zNEnEzYDUPdfPGD8$SjALuEGt0JTes$cyf^z1ULkIJj{LR%?)qR!-9>c{!`=}eR#8V z5&bNpasTeY{W&c2R=X;OG1Uz)CFn3MD*<}*v6vx{FKG_bQ4OqZ_%Xn4B#+F;19SPZ zOO{zSNHX}!1;wP3CR$$X;#pS?!i%fq90K49DTm$h1%HZXf9K?=W9s z@0??NP{@2xQokkdsXn?oKes;Dl@{-v5htgm)js7pL|{Gjv3H4uk^(yBqMKpeBye5v zhv09>F9Yi)Do+fS(WVIB!?zN79H9r%{L}MgomL6>b#6- z>T0-8h%8m+WQx_1!#paA4mj2a-rzl6R!1CK@jOb;fV_N7*(-6*K4s*G0E(phNW!h9 z6wMDI7EAVfur)gL1mMc{&z4E5xAMtRRqY9UBEQQrLwl)#7+4%>_DUL@WUeao#1bv* zrqzs+GozAEkkwD|Bi_!1DTI0Y2FnPIWt?h7uc2q@`E_pQK`gI`dnnyc;2ug1|L~1D zhn}!siTd-t0LqVdV#N!1<38|2@elO5JmLj#ee~j<7wmrl`iNMuBKqxm!m?`j3m$E` z)?-;wYiiQ`V$Ol%zSv3_`vwoMMvjOu+g^7oyRz}IR7V}K7uMiEl`d?ma)qL3zEs~M zOxvE3GOJ})=Y(!q-e8AqlzOU2M$_pa^eV8$!py&&-eGJtzN5emY4a?6z_$>v5K;Az zQaovUba=!OBPA{*kH~P1xIK`Bjs53w>Pbv>FiF6Q#xD|gx>e>*v%ppY`InuyUjUMV zDbvuLxt&aZ#habvfo+#5)}{hzNWtsbYNvEYxLo09pV~d!-)D;hY3fO zl?-oj?aXq`DfLWdh@}Dv0HIUxI)DYeiPMG86e2{P4dwN_3%(D|DTNN2yOCgzk9j#j8Ssbn7O|6T1LQXNNMN_Cugg!We#)<#A#bzQun z(&H}tq?}U&hO>?4vBlXh(qU?*H{6U<7rxqN@~OCKr_Of6A$svC0Be&L`mW`!Q1|^A zo%i1^05)hdIL3jxV)p)#;dD=n)cO04;_iyL~zqKf` zig_TQztD15?rEj-exrO>-h{Zl-z4yQf82)c#W?eT%L%R9;J?e+e9X;NGo4nZ)5Z*1 zL=j+TfkFK5t>*@P;0hR%iwO{>h9D788j^1=le&k|pZJZ^3pjywJiQH_sx!2+-*&~) z0sNb?qc^`j>sTw`xzA;*-4~Un6=u-je9%4p1lbT3*WTj5uhrz;z;A@0UWuF?|8FHjzH#4aLWm zSwyrxP~ThS#|m%z)pCMWe#Gw#oCY#HYNFLb?-bB5znIj_Dz$0*B{9@j^M&$k7e~@* zVH^34dhLP(+$BOg2j4?GX2Ld+$@!DjqwVWl#*Yv-$3{05Nul#}upfGxNxU+q6}SHx^p}I%H-VSO)Y- zGaL{t;V(~PAI>&3#WLtV=QPlf#@*>|n5=4sMab7d%WoDsKl+zf8bp#FK-BlKB!G_rktV^5SCJ+)u;__MxyWlh=q-?N)kl|6}6sF zBCksEiqrqcD}a)f^j)S_B|wO7ocamaocC#u^nU*SQo_{wY+<1F+kFr|HorV;+O6`s2C^FQ-O_V>18OPlmO z9bfy~Tg6G({BqvhnsI2t9{NbJ@7|j6O=Q38qEf4<3*jYc`~+c2Jb87icVK!pV-|O1 zilJ<^+*t54_ z9buL%3!Li<^1$=8-q)&OH@_?Ad&wt989zQBm zY&k)W(`vKgYr!hkm>E{J(rZkS+{Dz?FHBejkp%RCaD5|RM3a^H`s5Uq80r~x;sCk$ zGOveW%_Mbjk|sDw3;Cg+c_TPUUtK-6X(M%U@;ly`dDb_H`*6hW8>EnbWb%SB%~Cm5Itfuq3{Dx!a@aC)@4;94Xp7LOWC`SGIbQ9) zGVk4~)GMMh?<2*WZmj9X=y{8Z`6cP`tgJ~<3EPznJ4vN!)9u-OJ|WN1F9&UDP~^?W z$xHOE_}h6io#f4zUBJO|7~rV>BZvW^7QMqL15u-zCu<<>!mkWNj1G`{Q>b* z{xgIOoyXL$s^g=1`{O%p^Ptrpmd&H5E6KeyOFetoP}1HXWjbz9GaQtzDI0HR94pm- z0^JL>xD)5F@|NGT?u1^qsoOoU)17pV^Sj|`e&HTqKpL~-uyvuZcGi?Ih_xl{2&FV; z$H`k}km>Ys#&saT$3fDurIeIJ+6mpfEh*(qGL_!Z2_(dehUsE~L;7d{{6UD5K2Lv< z>&xVC<2f*Ay#-@&j(yFV|Dvm4?5MG_nh>~bFz|0TxQ0QzuU`A2PcZs*#9wf`ufW

Hvw74Q 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 z

From c85e3b34e01be3df65b8a72fa70153d979081c99 Mon Sep 17 00:00:00 2001 From: Ollo Date: Wed, 12 Feb 2020 20:52:31 +0100 Subject: [PATCH 100/151] Disable Webserver during runtime --- main.lua | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/main.lua b/main.lua index 928bd81..3a03567 100644 --- a/main.lua +++ b/main.lua @@ -157,9 +157,8 @@ function normalOperation() syncTimeFromInternet() end) tmr.alarm(3, 2000, 0 ,function() - print("Start webserver...") - mydofile("webserver") - startWebServer() + -- FIXME start telent server + print("Load telnet") end) displayTime() -- Start the time Thread From ba6193ff5b10d350938248c47752ed137f6c6afd Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 21 Feb 2020 20:21:54 +0100 Subject: [PATCH 101/151] Telnet included --- main.lua | 9 ++++++--- telnet.lua | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 telnet.lua diff --git a/main.lua b/main.lua index 3a03567..8c85f37 100644 --- a/main.lua +++ b/main.lua @@ -147,7 +147,7 @@ function normalOperation() print('IP: ',wifi.sta.getip()) -- Here the WLAN is found, and something is done print("Solving dependencies") - local dependModules = { "timecore" , "wordclock" } + local dependModules = { "timecore" , "wordclock", "telnet" } for _,mod in pairs(dependModules) do print("Loading " .. mod) mydofile(mod) @@ -157,8 +157,11 @@ function normalOperation() syncTimeFromInternet() end) tmr.alarm(3, 2000, 0 ,function() - -- FIXME start telent server - print("Load telnet") + if (startTelnetServer ~= nil) then + startTelnetServer() + else + print("NO Telent found") + end end) displayTime() -- Start the time Thread diff --git a/telnet.lua b/telnet.lua new file mode 100644 index 0000000..ab55c21 --- /dev/null +++ b/telnet.lua @@ -0,0 +1,35 @@ +-- Telnet Server +function startTelnetServer() + s=net.createServer(net.TCP, 180) + s:listen(23,function(c) + global_c=c + printlines = {} + function s_output(str) + if(global_c~=nil) then + if #printlines > 0 then + printlines[ #printlines + 1] = str + else + printlines[ #printlines + 1] = str + global_c:send("\r") -- Send something, so the queue is read after sending + end + end + end + node.output(s_output, 0) + c:on("receive",function(c,l) + node.input(l) + end) + c:on("disconnection",function(c) + node.output(nil) + global_c=nil + end) + c:on("sent", function() + if #printlines > 0 then + global_c:send(table.remove(printlines, 1)) + end + end) + print("Welcome to the Wordclock.") + print("Visite https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en for further commands") + end) + print("Telnetserver is up") +end + From 3bd4fc8cb6afca06b537dfe92c9708952bcd493c Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 21 Feb 2020 23:31:05 +0100 Subject: [PATCH 102/151] configuration parameter added --- telnet.lua | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) diff --git a/telnet.lua b/telnet.lua index ab55c21..57e0902 100644 --- a/telnet.lua +++ b/telnet.lua @@ -28,8 +28,161 @@ function startTelnetServer() end end) print("Welcome to the Wordclock.") + print("- storeConfig()") print("Visite https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en for further commands") end) print("Telnetserver is up") end +function storeConfig(_ssid, _password, _timezoneoffset, _inv46, _dim, _fcolor, _colorMin1, _colorMin2, _colorMin3, _colorMin4, _bcolor, _threequater) + +if ( (_ssid == nil) and + (_password == nil) and + (_timezoneoffset == nil) and + (_inv46 == nil) and + (_dim == nil) and + (_fcolor == nil) and + (_colorMin1 == nil) and + (_colorMin2 == nil) and + (_colorMin3 == nil) and + (_colorMin4 == nil) and + (_bcolor == nil) and + (_threequater == nil) ) then + print("one parameter is mandatory:") + print("storeConfig(ssid, password, timezoneoffset, inv46, dim, fcolor, colorMin1, colorMin2, colorMin3, colorMin4, bcolor, threequater)") +end + +if (_password==nil) then + _, password, _, _ = wifi.sta.getconfig() + print("Restore password") +else + password = _password +end +if (_ssid==nil) then + ssid, _, _, _ = wifi.sta.getconfig() +else + ssid = _ssid +end + +if (_timezoneoffset==nil) then +timezoneoffset = _timezoneoffset +end +if (_inv46 == nil) then +inv46 = _inv46 +end +if (_dim == nil) then +dim = _dim +end +if (_fcolor == nil) then +fcolor = _fcolor +end +if (_bcolor == nil) then +bcolor = _bcolor +end +if (_colorMin1 == nil) then +colorMin1 = _colorMin1 +end +if (_colorMin2 == nil) then +colorMin2 = _colorMin2 +end +if (_colorMin3 == nil) then +colorMin3 = _colorMin3 +end +if (_colorMin4 == nil) then +colorMin4 = _colorMin4 +end +if (_threequater == nil) then +threequater = _threequater +end + +print("SSID = " .. tostring(ssid)) +print("TZNE = " .. tostring(timezoneoffset)) +print("INVT = " .. tostring(inv46)) +print("DIM = " .. tostring(dim)) +print("FCOL = " .. tostring(fcolor)) +print("BCOL = " .. tostring(bcolor)) +print("MIN1 = " .. tostring(colorMin1)) +print("MIN2 = " .. tostring(colorMin2)) +print("MIN3 = " .. tostring(colorMin3)) +print("MIN4 = " .. tostring(colorMin4)) +print("3QRT = " .. tostring(threequater)) + +-- Safe configuration: +file.remove(configFile .. ".new") +sec, _ = rtctime.get() +file.open(configFile.. ".new", "w+") +file.write("-- Config\n" .. "station_cfg={}\nstation_cfg.ssid=\"" .. ssid .. "\"\nstation_cfg.pwd=\"" .. password .. "\"\nstation_cfg.save=false\nwifi.sta.config(station_cfg)\n") +file.write("sntpserverhostname=\"" .. sntpserver .. "\"\n" .. "timezoneoffset=\"" .. timezoneoffset .. "\"\n".. "inv46=\"" .. tostring(inv46) .. "\"\n" .. "dim=\"" .. tostring(dim) .. "\"\n") + +if (fcolor ~= nil) then + local hexColor=string.sub(fcolor, 1) + local red = tonumber(string.sub(hexColor, 1, 2), 16) + local green = tonumber(string.sub(hexColor, 3, 4), 16) + local blue = tonumber(string.sub(hexColor, 5, 6), 16) + file.write("color=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") + -- fill the current values + color=string.char(green, red, blue) +end +if (colorMin1 ~= nil) then + local hexColor=string.sub(colorMin1, 1) + local red = tonumber(string.sub(hexColor, 1, 2), 16) + local green = tonumber(string.sub(hexColor, 3, 4), 16) + local blue = tonumber(string.sub(hexColor, 5, 6), 16) + file.write("color1=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") + color1=string.char(green, red, blue) +end +if ( colorMin2 ~= nil) then + local hexColor=string.sub(colorMin2, 1) + local red = tonumber(string.sub(hexColor, 1, 2), 16) + local green = tonumber(string.sub(hexColor, 3, 4), 16) + local blue = tonumber(string.sub(hexColor, 5, 6), 16) + file.write("color2=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") + color2=string.char(green, red, blue) +end +if ( colorMin3 ~= nil) then + local hexColor=string.sub(colorMin3, 1) + local red = tonumber(string.sub(hexColor, 1, 2), 16) + local green = tonumber(string.sub(hexColor, 3, 4), 16) + local blue = tonumber(string.sub(hexColor, 5, 6), 16) + file.write("color3=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") + color3=string.char(green, red, blue) +end +if ( colorMin4 ~= nil) then + local hexColor=string.sub(colorMin4, 1) + local red = tonumber(string.sub(hexColor, 1, 2), 16) + local green = tonumber(string.sub(hexColor, 3, 4), 16) + local blue = tonumber(string.sub(hexColor, 5, 6), 16) + file.write("color4=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") + color4=string.char(green, red, blue) +end +if ( bcolor ~= nil) then + local hexColor=string.sub(bcolor, 1) + local red = tonumber(string.sub(hexColor, 1, 2), 16) + local green = tonumber(string.sub(hexColor, 3, 4), 16) + local blue = tonumber(string.sub(hexColor, 5, 6), 16) + file.write("colorBg=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") + -- fill the current values + colorBg=string.char(green, red, blue) +end +if (getTime ~= nil) then + time = getTime(sec, timezoneoffset) + file.write("print(\"Config from " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. "\")\n") +end +if ( threequater ~= nil) then + file.write("threequater=true\n") + -- fill the current values + threequater=true +else + file.write("threequater=nil\n") -- unset threequater + -- fill the current values + threequater=nil +end +file.close() +collectgarbage() +sec=nil +file.remove(configFile) +if (file.rename(configFile .. ".new", configFile)) then + print("Rename Successfully") +end + +end From 77ebc55dbb5d89bdbdb3576684a54d6d2b483526 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 4 Mar 2020 19:10:37 +0100 Subject: [PATCH 103/151] Remove debugging --- displayword.lua | 6 ------ main.lua | 1 - 2 files changed, 7 deletions(-) diff --git a/displayword.lua b/displayword.lua index 93c8eaf..58752c9 100644 --- a/displayword.lua +++ b/displayword.lua @@ -5,22 +5,16 @@ local updateColor = function (data) if (data.amountOfChars > 0) then local div = tonumber(data.drawnCharacters/data.amountOfChars) if (div < 1) then - print(tostring(data.drawnCharacters) .. " blocks: " .. tostring(data.amountOfChars) .. " FG " .. tostring(string.byte(data.colorFg,1)) .. "x" .. tostring(string.byte(data.colorFg,2)) .. "x" .. tostring(string.byte(data.colorFg,3)) ) return data.colorFg elseif (div < 2) then - print(tostring(data.drawnCharacters) .. " blocks: " .. tostring(data.amountOfChars) .. " C1") return data.colorMin1 elseif (div < 3) then - print(tostring(data.drawnCharacters) .. " blocks: " .. tostring(data.amountOfChars) .. " C2") return data.colorMin2 elseif (div < 4) then - print(tostring(data.drawnCharacters) .. " blocks: " .. tostring(data.amountOfChars) .. " C3") return data.colorMin3 elseif (div < 5) then - print(tostring(data.drawnCharacters) .. " blocks: " .. tostring(data.amountOfChars) .. " C4") return data.colorMin4 else - print(tostring(data.drawnCharacters) .. " blocks: " .. tostring(data.amountOfChars) .. " ELSE") return data.colorFg end else diff --git a/main.lua b/main.lua index 8c85f37..59aca40 100644 --- a/main.lua +++ b/main.lua @@ -66,7 +66,6 @@ function displayTime() displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows) if (displayword.data.drawnCharacters ~= nil) then ledBuf = displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows, displayword.data.drawnCharacters) - print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " char: " .. tostring(displayword.data.drawnCharacters)) end end displayword = nil From edfb9f2803da37a73f1f0b113c7b9f99906bd320 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 4 Mar 2020 20:54:00 +0100 Subject: [PATCH 104/151] Not forced to format ESP, when flashing serial --- tools/initialFlash.sh | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/tools/initialFlash.sh b/tools/initialFlash.sh index b54d309..14e28ee 100755 --- a/tools/initialFlash.sh +++ b/tools/initialFlash.sh @@ -12,21 +12,35 @@ if [ ! -c $DEVICE ]; then fi -if [ $# -ne 1 ]; then +if [ $# -eq 0 ]; then echo "" - echo "e.g. usage $0 " + echo "e.g. usage $0 []" exit 1 fi -FILES="displayword.lua main.lua timecore.lua webpage.html webserver.lua wordclock.lua init.lua" +if [ $# -eq 1 ]; then + FILES="displayword.lua main.lua timecore.lua webpage.html webserver.lua wordclock.lua init.lua" +else + FILES=$2 +fi + # Format filesystem first -echo "Format the complete ESP" -$LUATOOL -p $DEVICE -w -b 115200 -if [ $? -ne 0 ]; then - echo "STOOOOP" - exit 1 -fi +#echo "Format the complete ESP" +#$LUATOOL -p $DEVICE -w -b 115200 +#if [ $? -ne 0 ]; then +# echo "STOOOOP" +# exit 1 +#fi + +echo "Reboot the ESP" +echo "node.restart()" >> $DEVICE +sleep 1 +for i in $(seq 0 5); do + echo "Stop TMR $i" + echo "tmr.stop($i)" >> $DEVICE + sleep 1 +done echo echo "Start Flasing ..." From 65d2de68018a1284fc11dab5de09b64375c34391 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 4 Mar 2020 21:01:13 +0100 Subject: [PATCH 105/151] Specify config file --- telnet.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/telnet.lua b/telnet.lua index 57e0902..6cd3812 100644 --- a/telnet.lua +++ b/telnet.lua @@ -107,6 +107,7 @@ print("MIN3 = " .. tostring(colorMin3)) print("MIN4 = " .. tostring(colorMin4)) print("3QRT = " .. tostring(threequater)) +local configFile="config.lua" -- Safe configuration: file.remove(configFile .. ".new") sec, _ = rtctime.get() From 17a9416607199019cd8610e2f3e09de9ab7e96dd Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 4 Mar 2020 21:01:30 +0100 Subject: [PATCH 106/151] Set telnet IP address --- tools/tcpFlash.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/tcpFlash.py b/tools/tcpFlash.py index 2c32002..8ff527e 100755 --- a/tools/tcpFlash.py +++ b/tools/tcpFlash.py @@ -49,7 +49,7 @@ def main(nodeip, luafile, volatile=None): else: try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - s.connect((nodeip, 80)) + s.connect((nodeip, 23)) time.sleep(0.050) s.sendall("\n") # Receive the hello Message of answer of the ESP From 2f9f9fdc6852676dd5c5d10b41648fb13b5c1d2a Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 4 Mar 2020 22:00:15 +0100 Subject: [PATCH 107/151] Restore old parameter, if not set --- telnet.lua | 44 +++++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/telnet.lua b/telnet.lua index 6cd3812..8b81bbf 100644 --- a/telnet.lua +++ b/telnet.lua @@ -34,11 +34,12 @@ function startTelnetServer() print("Telnetserver is up") end -function storeConfig(_ssid, _password, _timezoneoffset, _inv46, _dim, _fcolor, _colorMin1, _colorMin2, _colorMin3, _colorMin4, _bcolor, _threequater) +function storeConfig(_ssid, _password, _timezoneoffset, _sntpserver, _inv46, _dim, _fcolor, _colorMin1, _colorMin2, _colorMin3, _colorMin4, _bcolor, _threequater) if ( (_ssid == nil) and (_password == nil) and (_timezoneoffset == nil) and + (_sntpserver == nil) and (_inv46 == nil) and (_dim == nil) and (_fcolor == nil) and @@ -49,7 +50,8 @@ if ( (_ssid == nil) and (_bcolor == nil) and (_threequater == nil) ) then print("one parameter is mandatory:") - print("storeConfig(ssid, password, timezoneoffset, inv46, dim, fcolor, colorMin1, colorMin2, colorMin3, colorMin4, bcolor, threequater)") + print("storeConfig(ssid, password, timezoneoffset, sntpserver, inv46, dim, fcolor, colorMin1, colorMin2, colorMin3, colorMin4, bcolor, threequater)") + return end if (_password==nil) then @@ -64,39 +66,53 @@ else ssid = _ssid end -if (_timezoneoffset==nil) then +if (_sntpserver == nil) then + sntpserver = sntpserverhostname + print("Restore SNTP: " .. tostring(sntpserver)) +else + sntpserver = _sntpserver +end + +if (_timezoneoffset ~= nil) then timezoneoffset = _timezoneoffset end -if (_inv46 == nil) then -inv46 = _inv46 +if (_inv46 ~= nil) then +if ((_inv46 == true) or (_inv == "on")) then + inv46 = "on" +elseif ((_inv46 == false) or (_inv == "off")) then + inv46 = "off" +else + inv46 = "off" end -if (_dim == nil) then +end +if (_dim ~= nil) then dim = _dim end -if (_fcolor == nil) then +if (_fcolor ~= nil) then fcolor = _fcolor end -if (_bcolor == nil) then +if (_bcolor ~= nil) then bcolor = _bcolor end -if (_colorMin1 == nil) then +if (_colorMin1 ~= nil) then colorMin1 = _colorMin1 end -if (_colorMin2 == nil) then +if (_colorMin2 ~= nil) then colorMin2 = _colorMin2 end -if (_colorMin3 == nil) then +if (_colorMin3 ~= nil) then colorMin3 = _colorMin3 end -if (_colorMin4 == nil) then +if (_colorMin4 ~= nil) then colorMin4 = _colorMin4 end -if (_threequater == nil) then +if (_threequater ~= nil) then threequater = _threequater end print("SSID = " .. tostring(ssid)) print("TZNE = " .. tostring(timezoneoffset)) +print("NTP = " .. tostring(sntpserver)) print("INVT = " .. tostring(inv46)) print("DIM = " .. tostring(dim)) print("FCOL = " .. tostring(fcolor)) @@ -184,6 +200,8 @@ sec=nil file.remove(configFile) if (file.rename(configFile .. ".new", configFile)) then print("Rename Successfully") +else + print("Cannot rename " .. configFile .. ".new") end end From 344fb0ab9a93c1331bc937ae92ab36fe7510c8b8 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 4 Mar 2020 22:24:13 +0100 Subject: [PATCH 108/151] Added example for telnet command --- init.lua | 2 +- telnet.lua | 17 ++++++++++++++++- tools/initialFlash.sh | 2 +- tools/tcpFlash.py | 2 +- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/init.lua b/init.lua index 5a107f2..1b60740 100644 --- a/init.lua +++ b/init.lua @@ -49,7 +49,7 @@ tmr.alarm(1, 5000, 0, function() (file.open("timecore.lua")) or (file.open("wordclock.lua")) or (file.open("displayword.lua")) or - (file.open("webserver.lua")) + (file.open("telnet.lua")) ) then c = string.char(0,128,0) w = string.char(0,0,0) diff --git a/telnet.lua b/telnet.lua index 8b81bbf..fa6fb09 100644 --- a/telnet.lua +++ b/telnet.lua @@ -50,7 +50,22 @@ if ( (_ssid == nil) and (_bcolor == nil) and (_threequater == nil) ) then print("one parameter is mandatory:") - print("storeConfig(ssid, password, timezoneoffset, sntpserver, inv46, dim, fcolor, colorMin1, colorMin2, colorMin3, colorMin4, bcolor, threequater)") + print("storeConfig(ssid, ") + print(" password,") + print(" timezoneoffset,") + print(" sntpserver,") + print(" inv46,") + print(" dim,") + print(" fcolor,") + print(" colorMin1,") + print(" colorMin2,") + print(" colorMin3,") + print(" colorMin4,") + print(" bcolor,") + print(" threequater)") + print(" ") + print("e.g.:") + print('storeConfig(nil, nil, 1, nil, "on", true, "00FF00", "00FF88", "008888", "00FF44", "004488", "000000", true)') return end diff --git a/tools/initialFlash.sh b/tools/initialFlash.sh index 14e28ee..a3bfdb9 100755 --- a/tools/initialFlash.sh +++ b/tools/initialFlash.sh @@ -59,6 +59,6 @@ for f in $FILES; do done echo "Reboot the ESP" -$LUATOOL -p $DEVICE -r -b 115200 +echo "node.restart()" >> $DEVICE exit 0 diff --git a/tools/tcpFlash.py b/tools/tcpFlash.py index 8ff527e..4f7526b 100755 --- a/tools/tcpFlash.py +++ b/tools/tcpFlash.py @@ -94,7 +94,7 @@ def main(nodeip, luafile, volatile=None): print "add a space at the end" if (volatile is None): - if (not sendCmd(s, "w([[" + l + "]]);")): + if (not sendCmd(s, "w([==[" + l + "]==]);")): print "Cannot write line " + str(i) s.close() sys.exit(4) From b5f46a14d2745cb219e4ec93fca62ebb8c6d1ba8 Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 6 Mar 2020 23:55:14 +0100 Subject: [PATCH 109/151] Indention improved --- telnet.lua | 18 +++++++++--------- tools/initialFlash.sh | 36 +++++++++++++++++++----------------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/telnet.lua b/telnet.lua index fa6fb09..a2ad090 100644 --- a/telnet.lua +++ b/telnet.lua @@ -100,29 +100,29 @@ else inv46 = "off" end end -if (_dim ~= nil) then -dim = _dim +if ( _dim ~= nil) then + dim = _dim end if (_fcolor ~= nil) then -fcolor = _fcolor + fcolor = _fcolor end if (_bcolor ~= nil) then -bcolor = _bcolor + bcolor = _bcolor end if (_colorMin1 ~= nil) then -colorMin1 = _colorMin1 + colorMin1 = _colorMin1 end if (_colorMin2 ~= nil) then -colorMin2 = _colorMin2 + colorMin2 = _colorMin2 end if (_colorMin3 ~= nil) then -colorMin3 = _colorMin3 + colorMin3 = _colorMin3 end if (_colorMin4 ~= nil) then -colorMin4 = _colorMin4 + colorMin4 = _colorMin4 end if (_threequater ~= nil) then -threequater = _threequater + threequater = _threequater end print("SSID = " .. tostring(ssid)) diff --git a/tools/initialFlash.sh b/tools/initialFlash.sh index a3bfdb9..a6270ad 100755 --- a/tools/initialFlash.sh +++ b/tools/initialFlash.sh @@ -3,6 +3,7 @@ LUATOOL=./tools/luatool.py DEVICE=$1 +BAUD=115200 # check the serial connection @@ -19,30 +20,31 @@ if [ $# -eq 0 ]; then fi if [ $# -eq 1 ]; then - FILES="displayword.lua main.lua timecore.lua webpage.html webserver.lua wordclock.lua init.lua" + FILES="displayword.lua main.lua timecore.lua webpage.html webserver.lua telnet.lua wordclock.lua init.lua" else FILES=$2 fi # Format filesystem first -#echo "Format the complete ESP" -#$LUATOOL -p $DEVICE -w -b 115200 -#if [ $? -ne 0 ]; then -# echo "STOOOOP" -# exit 1 -#fi +echo "Format the complete ESP" +$LUATOOL -p $DEVICE -w -b $BAUD +if [ $? -ne 0 ]; then + echo "STOOOOP" + exit 1 +fi -echo "Reboot the ESP" -echo "node.restart()" >> $DEVICE -sleep 1 -for i in $(seq 0 5); do - echo "Stop TMR $i" - echo "tmr.stop($i)" >> $DEVICE - sleep 1 -done +#stty -F $DEVICE $BAUD +#echo "Reboot the ESP" +#echo "node.restart()" >> $DEVICE +#sleep 1 +#for i in $(seq 0 5); do +# echo "Stop TMR $i" +# echo "tmr.stop($i)" >> $DEVICE +# sleep 1 +#done -echo +#echo echo "Start Flasing ..." for f in $FILES; do if [ ! -f $f ]; then @@ -51,7 +53,7 @@ for f in $FILES; do exit 1 fi echo "------------- $f ------------" - $LUATOOL -p $DEVICE -f $f -b 115200 -t $f + $LUATOOL -p $DEVICE -f $f -b $BAUD -t $f if [ $? -ne 0 ]; then echo "STOOOOP" exit 1 From ebacc86f01a3ec254d787a674cee2b84c8a54335 Mon Sep 17 00:00:00 2001 From: Ollo Date: Mon, 7 Dec 2020 20:02:01 +0100 Subject: [PATCH 110/151] Upgraded esptool to python3 --- os/esptool.py | 4166 +++++++++++++++++++++++++++++++++++++++++-------- os/flash.sh | 13 +- 2 files changed, 3480 insertions(+), 699 deletions(-) diff --git a/os/esptool.py b/os/esptool.py index 38ffb72..6a9a97f 100755 --- a/os/esptool.py +++ b/os/esptool.py @@ -1,10 +1,8 @@ #!/usr/bin/env python -# NB: Before sending a PR to change the above line to '#!/usr/bin/env python2', please read https://github.com/themadinventor/esptool/issues/21 # -# ESP8266 ROM Bootloader Utility -# https://github.com/themadinventor/esptool -# -# Copyright (C) 2014-2016 Fredrik Ahlberg, Angus Gratton, other contributors as noted. +# ESP8266 & ESP32 family ROM Bootloader Utility +# Copyright (C) 2014-2016 Fredrik Ahlberg, Angus Gratton, Espressif Systems (Shanghai) PTE LTD, other contributors as noted. +# https://github.com/espressif/esptool # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software @@ -18,24 +16,179 @@ # this program; if not, write to the Free Software Foundation, Inc., 51 Franklin # Street, Fifth Floor, Boston, MA 02110-1301 USA. +from __future__ import division, print_function + import argparse +import base64 +import binascii +import copy import hashlib import inspect -import json +import io +import itertools import os -import serial +import shlex +import string import struct -import subprocess import sys -import tempfile import time +import zlib + +try: + import serial +except ImportError: + print("Pyserial is not installed for %s. Check the README for installation instructions." % (sys.executable)) + raise + +# check 'serial' is 'pyserial' and not 'serial' https://github.com/espressif/esptool/issues/269 +try: + if "serialization" in serial.__doc__ and "deserialization" in serial.__doc__: + raise ImportError(""" +esptool.py depends on pyserial, but there is a conflict with a currently installed package named 'serial'. + +You may be able to work around this by 'pip uninstall serial; pip install pyserial' \ +but this may break other installed Python software that depends on 'serial'. + +There is no good fix for this right now, apart from configuring virtualenvs. \ +See https://github.com/espressif/esptool/issues/269#issuecomment-385298196 for discussion of the underlying issue(s).""") +except TypeError: + pass # __doc__ returns None for pyserial + +try: + import serial.tools.list_ports as list_ports +except ImportError: + print("The installed version (%s) of pyserial appears to be too old for esptool.py (Python interpreter %s). " + "Check the README for installation instructions." % (sys.VERSION, sys.executable)) + raise +except Exception: + if sys.platform == "darwin": + # swallow the exception, this is a known issue in pyserial+macOS Big Sur preview ref https://github.com/espressif/esptool/issues/540 + list_ports = None + else: + raise -__version__ = "1.2-dev" +__version__ = "3.1-dev" + +MAX_UINT32 = 0xffffffff +MAX_UINT24 = 0xffffff + +DEFAULT_TIMEOUT = 3 # timeout for most flash operations +START_FLASH_TIMEOUT = 20 # timeout for starting flash (may perform erase) +CHIP_ERASE_TIMEOUT = 120 # timeout for full chip erase +MAX_TIMEOUT = CHIP_ERASE_TIMEOUT * 2 # longest any command can run +SYNC_TIMEOUT = 0.1 # timeout for syncing with bootloader +MD5_TIMEOUT_PER_MB = 8 # timeout (per megabyte) for calculating md5sum +ERASE_REGION_TIMEOUT_PER_MB = 30 # timeout (per megabyte) for erasing a region +COMP_BLOCK_WRITE_TIMEOUT_PER_MB = 3 # timeout (per megabyte) for writing compressed data +MEM_END_ROM_TIMEOUT = 0.05 # special short timeout for ESP_MEM_END, as it may never respond +DEFAULT_SERIAL_WRITE_TIMEOUT = 10 # timeout for serial port write +DEFAULT_CONNECT_ATTEMPTS = 7 # default number of times to try connection -class ESPROM(object): - # These are the currently known commands supported by the ROM +def timeout_per_mb(seconds_per_mb, size_bytes): + """ Scales timeouts which are size-specific """ + result = seconds_per_mb * (size_bytes / 1e6) + if result < DEFAULT_TIMEOUT: + return DEFAULT_TIMEOUT + return result + + +DETECTED_FLASH_SIZES = {0x12: '256KB', 0x13: '512KB', 0x14: '1MB', + 0x15: '2MB', 0x16: '4MB', 0x17: '8MB', 0x18: '16MB'} + + +def check_supported_function(func, check_func): + """ + Decorator implementation that wraps a check around an ESPLoader + bootloader function to check if it's supported. + + This is used to capture the multidimensional differences in + functionality between the ESP8266 & ESP32/32S2/32S3/32C3 ROM loaders, and the + software stub that runs on both. Not possible to do this cleanly + via inheritance alone. + """ + def inner(*args, **kwargs): + obj = args[0] + if check_func(obj): + return func(*args, **kwargs) + else: + raise NotImplementedInROMError(obj, func) + return inner + + +def stub_function_only(func): + """ Attribute for a function only supported in the software stub loader """ + return check_supported_function(func, lambda o: o.IS_STUB) + + +def stub_and_esp32_function_only(func): + """ Attribute for a function only supported by software stubs or ESP32/32S2/32S3/32C3 ROM """ + return check_supported_function(func, lambda o: o.IS_STUB or isinstance(o, ESP32ROM)) + + +PYTHON2 = sys.version_info[0] < 3 # True if on pre-Python 3 + +# Function to return nth byte of a bitstring +# Different behaviour on Python 2 vs 3 +if PYTHON2: + def byte(bitstr, index): + return ord(bitstr[index]) +else: + def byte(bitstr, index): + return bitstr[index] + +# Provide a 'basestring' class on Python 3 +try: + basestring +except NameError: + basestring = str + + +def print_overwrite(message, last_line=False): + """ Print a message, overwriting the currently printed line. + + If last_line is False, don't append a newline at the end (expecting another subsequent call will overwrite this one.) + + After a sequence of calls with last_line=False, call once with last_line=True. + + If output is not a TTY (for example redirected a pipe), no overwriting happens and this function is the same as print(). + """ + if sys.stdout.isatty(): + print("\r%s" % message, end='\n' if last_line else '') + else: + print(message) + + +def _mask_to_shift(mask): + """ Return the index of the least significant bit in the mask """ + shift = 0 + while mask & 0x1 == 0: + shift += 1 + mask >>= 1 + return shift + + +def esp8266_function_only(func): + """ Attribute for a function only supported on ESP8266 """ + return check_supported_function(func, lambda o: o.CHIP_NAME == "ESP8266") + + +class ESPLoader(object): + """ Base class providing access to ESP ROM & software stub bootloaders. + Subclasses provide ESP8266 & ESP32 specific functionality. + + Don't instantiate this base class directly, either instantiate a subclass or + call ESPLoader.detect_chip() which will interrogate the chip and return the + appropriate subclass instance. + + """ + CHIP_NAME = "Espressif device" + IS_STUB = False + + DEFAULT_PORT = "/dev/ttyUSB0" + + # Commands supported by ESP8266 ROM bootloader ESP_FLASH_BEGIN = 0x02 ESP_FLASH_DATA = 0x03 ESP_FLASH_END = 0x04 @@ -46,9 +199,35 @@ class ESPROM(object): ESP_WRITE_REG = 0x09 ESP_READ_REG = 0x0a + # Some comands supported by ESP32 ROM bootloader (or -8266 w/ stub) + ESP_SPI_SET_PARAMS = 0x0B + ESP_SPI_ATTACH = 0x0D + ESP_READ_FLASH_SLOW = 0x0e # ROM only, much slower than the stub flash read + ESP_CHANGE_BAUDRATE = 0x0F + ESP_FLASH_DEFL_BEGIN = 0x10 + ESP_FLASH_DEFL_DATA = 0x11 + ESP_FLASH_DEFL_END = 0x12 + ESP_SPI_FLASH_MD5 = 0x13 + + # Commands supported by ESP32-S2/S3/C3 ROM bootloader only + ESP_GET_SECURITY_INFO = 0x14 + + # Some commands supported by stub only + ESP_ERASE_FLASH = 0xD0 + ESP_ERASE_REGION = 0xD1 + ESP_READ_FLASH = 0xD2 + ESP_RUN_USER_CODE = 0xD3 + + # Flash encryption encrypted data command + ESP_FLASH_ENCRYPT_DATA = 0xD4 + + # Response code(s) sent by ROM + ROM_INVALID_RECV_MSG = 0x05 # response if an invalid message is received + # Maximum block sized for RAM and Flash writes, respectively. ESP_RAM_BLOCK = 0x1800 - ESP_FLASH_BLOCK = 0x400 + + FLASH_WRITE_SIZE = 0x400 # Default baudrate. The ROM auto-bauds, so we can use more or less whatever we want. ESP_ROM_BAUD = 115200 @@ -59,174 +238,444 @@ class ESPROM(object): # Initial state for the checksum routine ESP_CHECKSUM_MAGIC = 0xef - # OTP ROM addresses - ESP_OTP_MAC0 = 0x3ff00050 - ESP_OTP_MAC1 = 0x3ff00054 - ESP_OTP_MAC3 = 0x3ff0005c - # Flash sector size, minimum unit of erase. - ESP_FLASH_SECTOR = 0x1000 + FLASH_SECTOR_SIZE = 0x1000 - def __init__(self, port=0, baud=ESP_ROM_BAUD): - self._port = serial.Serial(port) - self._slip_reader = slip_reader(port) + UART_DATE_REG_ADDR = 0x60000078 + + CHIP_DETECT_MAGIC_REG_ADDR = 0x40001000 # This ROM address has a different value on each chip model + + UART_CLKDIV_MASK = 0xFFFFF + + # Memory addresses + IROM_MAP_START = 0x40200000 + IROM_MAP_END = 0x40300000 + + # The number of bytes in the UART response that signify command status + STATUS_BYTES_LENGTH = 2 + + def __init__(self, port=DEFAULT_PORT, baud=ESP_ROM_BAUD, trace_enabled=False): + """Base constructor for ESPLoader bootloader interaction + + Don't call this constructor, either instantiate ESP8266ROM + or ESP32ROM, or use ESPLoader.detect_chip(). + + This base class has all of the instance methods for bootloader + functionality supported across various chips & stub + loaders. Subclasses replace the functions they don't support + with ones which throw NotImplementedInROMError(). + + """ + self.secure_download_mode = False # flag is set to True if esptool detects the ROM is in Secure Download Mode + + if isinstance(port, basestring): + self._port = serial.serial_for_url(port) + else: + self._port = port + self._slip_reader = slip_reader(self._port, self.trace) # setting baud rate in a separate step is a workaround for # CH341 driver on some Linux versions (this opens at 9600 then # sets), shouldn't matter for other platforms/drivers. See - # https://github.com/themadinventor/esptool/issues/44#issuecomment-107094446 - self._port.baudrate = baud + # https://github.com/espressif/esptool/issues/44#issuecomment-107094446 + self._set_port_baudrate(baud) + self._trace_enabled = trace_enabled + # set write timeout, to prevent esptool blocked at write forever. + try: + self._port.write_timeout = DEFAULT_SERIAL_WRITE_TIMEOUT + except NotImplementedError: + # no write timeout for RFC2217 ports + # need to set the property back to None or it will continue to fail + self._port.write_timeout = None + + def _set_port_baudrate(self, baud): + try: + self._port.baudrate = baud + except IOError: + raise FatalError("Failed to set baud rate %d. The driver may not support this rate." % baud) + + @staticmethod + def detect_chip(port=DEFAULT_PORT, baud=ESP_ROM_BAUD, connect_mode='default_reset', trace_enabled=False, + connect_attempts=DEFAULT_CONNECT_ATTEMPTS): + """ Use serial access to detect the chip type. + + We use the UART's datecode register for this, it's mapped at + the same address on ESP8266 & ESP32 so we can use one + memory read and compare to the datecode register for each chip + type. + + This routine automatically performs ESPLoader.connect() (passing + connect_mode parameter) as part of querying the chip. + """ + detect_port = ESPLoader(port, baud, trace_enabled=trace_enabled) + detect_port.connect(connect_mode, connect_attempts, detecting=True) + try: + print('Detecting chip type...', end='') + sys.stdout.flush() + chip_magic_value = detect_port.read_reg(ESPLoader.CHIP_DETECT_MAGIC_REG_ADDR) + + for cls in [ESP8266ROM, ESP32ROM, ESP32S2ROM, ESP32S3BETA2ROM, ESP32C3ROM]: + if chip_magic_value == cls.CHIP_DETECT_MAGIC_VALUE: + # don't connect a second time + inst = cls(detect_port._port, baud, trace_enabled=trace_enabled) + inst._post_connect() + print(' %s' % inst.CHIP_NAME, end='') + return inst + except UnsupportedCommandError: + raise FatalError("Unsupported Command Error received. Probably this means Secure Download Mode is enabled, " + "autodetection will not work. Need to manually specify the chip.") + finally: + print('') # end line + raise FatalError("Unexpected CHIP magic value 0x%08x. Failed to autodetect chip type." % (chip_magic_value)) """ Read a SLIP packet from the serial port """ def read(self): - return self._slip_reader.next() + return next(self._slip_reader) """ Write bytes to the serial port while performing SLIP escaping """ def write(self, packet): - buf = '\xc0' \ - + (packet.replace('\xdb','\xdb\xdd').replace('\xc0','\xdb\xdc')) \ - + '\xc0' + buf = b'\xc0' \ + + (packet.replace(b'\xdb', b'\xdb\xdd').replace(b'\xc0', b'\xdb\xdc')) \ + + b'\xc0' + self.trace("Write %d bytes: %s", len(buf), HexFormatter(buf)) self._port.write(buf) + def trace(self, message, *format_args): + if self._trace_enabled: + now = time.time() + try: + + delta = now - self._last_trace + except AttributeError: + delta = 0.0 + self._last_trace = now + prefix = "TRACE +%.3f " % delta + print(prefix + (message % format_args)) + """ Calculate checksum of a blob, as it is defined by the ROM """ @staticmethod def checksum(data, state=ESP_CHECKSUM_MAGIC): for b in data: - state ^= ord(b) + if type(b) is int: # python 2/3 compat + state ^= b + else: + state ^= ord(b) + return state """ Send a request and read the response """ - def command(self, op=None, data=None, chk=0): - if op is not None: - pkt = struct.pack(' self.STATUS_BYTES_LENGTH: + return data[:-self.STATUS_BYTES_LENGTH] + else: # otherwise, just return the 'val' field which comes from the reply header (this is used by read_reg) + return val + + def flush_input(self): + self._port.flushInput() + self._slip_reader = slip_reader(self._port, self.trace) + def sync(self): - self.command(ESPROM.ESP_SYNC, '\x07\x07\x12\x20' + 32 * '\x55') - for i in xrange(7): + self.command(self.ESP_SYNC, b'\x07\x07\x12\x20' + 32 * b'\x55', + timeout=SYNC_TIMEOUT) + for i in range(7): self.command() - """ Try connecting repeatedly until successful, or giving up """ - def connect(self): - print 'Connecting...' + def _setDTR(self, state): + self._port.setDTR(state) - for _ in xrange(4): - # issue reset-to-bootloader: - # RTS = either CH_PD or nRESET (both active low = chip in reset) - # DTR = GPIO0 (active low = boot to flasher) - self._port.setDTR(False) - self._port.setRTS(True) + def _setRTS(self, state): + self._port.setRTS(state) + # Work-around for adapters on Windows using the usbser.sys driver: + # generate a dummy change to DTR so that the set-control-line-state + # request is sent with the updated RTS state and the same DTR state + self._port.setDTR(self._port.dtr) + + def _connect_attempt(self, mode='default_reset', esp32r0_delay=False): + """ A single connection attempt, with esp32r0 workaround options """ + # esp32r0_delay is a workaround for bugs with the most common auto reset + # circuit and Windows, if the EN pin on the dev board does not have + # enough capacitance. + # + # Newer dev boards shouldn't have this problem (higher value capacitor + # on the EN pin), and ESP32 revision 1 can't use this workaround as it + # relies on a silicon bug. + # + # Details: https://github.com/espressif/esptool/issues/136 + last_error = None + + # If we're doing no_sync, we're likely communicating as a pass through + # with an intermediate device to the ESP32 + if mode == "no_reset_no_sync": + return last_error + + # issue reset-to-bootloader: + # RTS = either CH_PD/EN or nRESET (both active low = chip in reset + # DTR = GPIO0 (active low = boot to flasher) + # + # DTR & RTS are active low signals, + # ie True = pin @ 0V, False = pin @ VCC. + if mode != 'no_reset': + self._setDTR(False) # IO0=HIGH + self._setRTS(True) # EN=LOW, chip in reset + time.sleep(0.1) + if esp32r0_delay: + # Some chips are more likely to trigger the esp32r0 + # watchdog reset silicon bug if they're held with EN=LOW + # for a longer period + time.sleep(1.2) + self._setDTR(True) # IO0=LOW + self._setRTS(False) # EN=HIGH, chip out of reset + if esp32r0_delay: + # Sleep longer after reset. + # This workaround only works on revision 0 ESP32 chips, + # it exploits a silicon bug spurious watchdog reset. + time.sleep(0.4) # allow watchdog reset to occur time.sleep(0.05) - self._port.setDTR(True) - self._port.setRTS(False) - time.sleep(0.05) - self._port.setDTR(False) + self._setDTR(False) # IO0=HIGH, done - # worst-case latency timer should be 255ms (probably <20ms) - self._port.timeout = 0.3 - for _ in xrange(4): - try: - self._port.flushInput() - self._slip_reader = slip_reader(self._port) - self._port.flushOutput() - self.sync() - self._port.timeout = 5 - return - except: - time.sleep(0.05) - raise FatalError('Failed to connect to ESP8266') + for _ in range(5): + try: + self.flush_input() + self._port.flushOutput() + self.sync() + return None + except FatalError as e: + if esp32r0_delay: + print('_', end='') + else: + print('.', end='') + sys.stdout.flush() + time.sleep(0.05) + last_error = e + return last_error + + def connect(self, mode='default_reset', attempts=DEFAULT_CONNECT_ATTEMPTS, detecting=False): + """ Try connecting repeatedly until successful, or giving up """ + print('Connecting...', end='') + sys.stdout.flush() + last_error = None + + try: + for _ in range(attempts) if attempts > 0 else itertools.count(): + last_error = self._connect_attempt(mode=mode, esp32r0_delay=False) + if last_error is None: + break + last_error = self._connect_attempt(mode=mode, esp32r0_delay=True) + if last_error is None: + break + finally: + print('') # end 'Connecting...' line + + if last_error is not None: + raise FatalError('Failed to connect to %s: %s' % (self.CHIP_NAME, last_error)) + + if not detecting: + try: + # check the date code registers match what we expect to see + chip_magic_value = self.read_reg(ESPLoader.CHIP_DETECT_MAGIC_REG_ADDR) + if chip_magic_value != self.CHIP_DETECT_MAGIC_VALUE: + actually = None + for cls in [ESP8266ROM, ESP32ROM, ESP32S2ROM, ESP32S3BETA2ROM, ESP32C3ROM]: + if chip_magic_value == cls.CHIP_DETECT_MAGIC_VALUE: + actually = cls + break + if actually is None: + print(("WARNING: This chip doesn't appear to be a %s (chip magic value 0x%08x). " + "Probably it is unsupported by this version of esptool.") % (self.CHIP_NAME, chip_magic_value)) + else: + raise FatalError("This chip is %s not %s. Wrong --chip argument?" % (actually.CHIP_NAME, self.CHIP_NAME)) + except UnsupportedCommandError: + self.secure_download_mode = True + self._post_connect() + + def _post_connect(self): + """ + Additional initialization hook, may be overridden by the chip-specific class. + Gets called after connect, and after auto-detection. + """ + pass - """ Read memory address in target """ def read_reg(self, addr): - res = self.command(ESPROM.ESP_READ_REG, struct.pack(' 0: + # add a dummy write to a date register as an excuse to have a delay + command += struct.pack(' start: + raise FatalError(("Software loader is resident at 0x%08x-0x%08x. " + "Can't load binary at overlapping address range 0x%08x-0x%08x. " + "Either change binary loading address, or use the --no-stub " + "option to disable the software loader.") % (start, end, load_start, load_end)) + + return self.check_command("enter RAM download mode", self.ESP_MEM_BEGIN, + struct.pack(' length: + raise FatalError('Read more than expected') + + digest_frame = self.read() + if len(digest_frame) != 16: + raise FatalError('Expected digest, got: %s' % hexify(digest_frame)) + expected_digest = hexify(digest_frame).upper() + digest = hashlib.md5(data).hexdigest().upper() + if digest != expected_digest: + raise FatalError('Digest mismatch: expected %s, got %s' % (expected_digest, digest)) + return data + + def flash_spi_attach(self, hspi_arg): + """Send SPI attach command to enable the SPI flash pins + + ESP8266 ROM does this when you send flash_begin, ESP32 ROM + has it as a SPI command. + """ + # last 3 bytes in ESP_SPI_ATTACH argument are reserved values + arg = struct.pack(' 0: + self.write_reg(SPI_MOSI_DLEN_REG, mosi_bits - 1) + if miso_bits > 0: + self.write_reg(SPI_MISO_DLEN_REG, miso_bits - 1) + else: + + def set_data_lengths(mosi_bits, miso_bits): + SPI_DATA_LEN_REG = SPI_USR1_REG + SPI_MOSI_BITLEN_S = 17 + SPI_MISO_BITLEN_S = 8 + mosi_mask = 0 if (mosi_bits == 0) else (mosi_bits - 1) + miso_mask = 0 if (miso_bits == 0) else (miso_bits - 1) + self.write_reg(SPI_DATA_LEN_REG, + (miso_mask << SPI_MISO_BITLEN_S) | ( + mosi_mask << SPI_MOSI_BITLEN_S)) + + # SPI peripheral "command" bitmasks for SPI_CMD_REG + SPI_CMD_USR = (1 << 18) + + # shift values + SPI_USR2_COMMAND_LEN_SHIFT = 28 + + if read_bits > 32: + raise FatalError("Reading more than 32 bits back from a SPI flash operation is unsupported") + if len(data) > 64: + raise FatalError("Writing more than 64 bytes of data with one SPI command is unsupported") + + data_bits = len(data) * 8 + old_spi_usr = self.read_reg(SPI_USR_REG) + old_spi_usr2 = self.read_reg(SPI_USR2_REG) + flags = SPI_USR_COMMAND + if read_bits > 0: + flags |= SPI_USR_MISO + if data_bits > 0: + flags |= SPI_USR_MOSI + set_data_lengths(data_bits, read_bits) + self.write_reg(SPI_USR_REG, flags) + self.write_reg(SPI_USR2_REG, + (7 << SPI_USR2_COMMAND_LEN_SHIFT) | spiflash_command) + if data_bits == 0: + self.write_reg(SPI_W0_REG, 0) # clear data register before we read it + else: + data = pad_to(data, 4, b'\00') # pad to 32-bit multiple + words = struct.unpack("I" * (len(data) // 4), data) + next_reg = SPI_W0_REG + for word in words: + self.write_reg(next_reg, word) + next_reg += 4 + self.write_reg(SPI_CMD_REG, SPI_CMD_USR) + + def wait_done(): + for _ in range(10): + if (self.read_reg(SPI_CMD_REG) & SPI_CMD_USR) == 0: + return + raise FatalError("SPI command did not complete in time") + wait_done() + + status = self.read_reg(SPI_W0_REG) + # restore some SPI controller registers + self.write_reg(SPI_USR_REG, old_spi_usr) + self.write_reg(SPI_USR2_REG, old_spi_usr2) + return status + + def read_status(self, num_bytes=2): + """Read up to 24 bits (num_bytes) of SPI flash status register contents + via RDSR, RDSR2, RDSR3 commands + + Not all SPI flash supports all three commands. The upper 1 or 2 + bytes may be 0xFF. + """ + SPIFLASH_RDSR = 0x05 + SPIFLASH_RDSR2 = 0x35 + SPIFLASH_RDSR3 = 0x15 + + status = 0 + shift = 0 + for cmd in [SPIFLASH_RDSR, SPIFLASH_RDSR2, SPIFLASH_RDSR3][0:num_bytes]: + status += self.run_spiflash_command(cmd, read_bits=8) << shift + shift += 8 + return status + + def write_status(self, new_status, num_bytes=2, set_non_volatile=False): + """Write up to 24 bits (num_bytes) of new status register + + num_bytes can be 1, 2 or 3. + + Not all flash supports the additional commands to write the + second and third byte of the status register. When writing 2 + bytes, esptool also sends a 16-byte WRSR command (as some + flash types use this instead of WRSR2.) + + If the set_non_volatile flag is set, non-volatile bits will + be set as well as volatile ones (WREN used instead of WEVSR). + + """ + SPIFLASH_WRSR = 0x01 + SPIFLASH_WRSR2 = 0x31 + SPIFLASH_WRSR3 = 0x11 + SPIFLASH_WEVSR = 0x50 + SPIFLASH_WREN = 0x06 + SPIFLASH_WRDI = 0x04 + + enable_cmd = SPIFLASH_WREN if set_non_volatile else SPIFLASH_WEVSR + + # try using a 16-bit WRSR (not supported by all chips) + # this may be redundant, but shouldn't hurt + if num_bytes == 2: + self.run_spiflash_command(enable_cmd) + self.run_spiflash_command(SPIFLASH_WRSR, struct.pack(">= 8 + + self.run_spiflash_command(SPIFLASH_WRDI) + + def get_crystal_freq(self): + # Figure out the crystal frequency from the UART clock divider + # Returns a normalized value in integer MHz (40 or 26 are the only supported values) + # + # The logic here is: + # - We know that our baud rate and the ESP UART baud rate are roughly the same, or we couldn't communicate + # - We can read the UART clock divider register to know how the ESP derives this from the APB bus frequency + # - Multiplying these two together gives us the bus frequency which is either the crystal frequency (ESP32) + # or double the crystal frequency (ESP8266). See the self.XTAL_CLK_DIVIDER parameter for this factor. + uart_div = self.read_reg(self.UART_CLKDIV_REG) & self.UART_CLKDIV_MASK + est_xtal = (self._port.baudrate * uart_div) / 1e6 / self.XTAL_CLK_DIVIDER + norm_xtal = 40 if est_xtal > 33 else 26 + if abs(norm_xtal - est_xtal) > 1: + print("WARNING: Detected crystal freq %.2fMHz is quite different to normalized freq %dMHz. Unsupported crystal in use?" % (est_xtal, norm_xtal)) + return norm_xtal + + def hard_reset(self): + self._setRTS(True) # EN->LOW + time.sleep(0.1) + self._setRTS(False) + + def soft_reset(self, stay_in_bootloader): + if not self.IS_STUB: + if stay_in_bootloader: + return # ROM bootloader is already in bootloader! + else: + # 'run user code' is as close to a soft reset as we can do + self.flash_begin(0, 0) + self.flash_finish(False) + else: + if stay_in_bootloader: + # soft resetting from the stub loader + # will re-load the ROM bootloader + self.flash_begin(0, 0) + self.flash_finish(True) + elif self.CHIP_NAME != "ESP8266": + raise FatalError("Soft resetting is currently only supported on ESP8266") + else: + # running user code from stub loader requires some hacks + # in the stub loader + self.command(self.ESP_RUN_USER_CODE, wait_response=False) + + +class ESP8266ROM(ESPLoader): + """ Access class for ESP8266 ROM bootloader + """ + CHIP_NAME = "ESP8266" + IS_STUB = False + + CHIP_DETECT_MAGIC_VALUE = 0xfff0c101 + + # OTP ROM addresses + ESP_OTP_MAC0 = 0x3ff00050 + ESP_OTP_MAC1 = 0x3ff00054 + ESP_OTP_MAC3 = 0x3ff0005c + + SPI_REG_BASE = 0x60000200 + SPI_USR_OFFS = 0x1c + SPI_USR1_OFFS = 0x20 + SPI_USR2_OFFS = 0x24 + SPI_MOSI_DLEN_OFFS = None + SPI_MISO_DLEN_OFFS = None + SPI_W0_OFFS = 0x40 + + UART_CLKDIV_REG = 0x60000014 + + XTAL_CLK_DIVIDER = 2 + + FLASH_SIZES = { + '512KB': 0x00, + '256KB': 0x10, + '1MB': 0x20, + '2MB': 0x30, + '4MB': 0x40, + '2MB-c1': 0x50, + '4MB-c1': 0x60, + '8MB': 0x80, + '16MB': 0x90, + } + + BOOTLOADER_FLASH_OFFSET = 0 + + MEMORY_MAP = [[0x3FF00000, 0x3FF00010, "DPORT"], + [0x3FFE8000, 0x40000000, "DRAM"], + [0x40100000, 0x40108000, "IRAM"], + [0x40201010, 0x402E1010, "IROM"]] + + def get_efuses(self): + # Return the 128 bits of ESP8266 efuse as a single Python integer + result = self.read_reg(0x3ff0005c) << 96 + result |= self.read_reg(0x3ff00058) << 64 + result |= self.read_reg(0x3ff00054) << 32 + result |= self.read_reg(0x3ff00050) + return result + + def get_chip_description(self): + efuses = self.get_efuses() + is_8285 = (efuses & ((1 << 4) | 1 << 80)) != 0 # One or the other efuse bit is set for ESP8285 + return "ESP8285" if is_8285 else "ESP8266EX" + + def get_chip_features(self): + features = ["WiFi"] + if self.get_chip_description() == "ESP8285": + features += ["Embedded Flash"] + return features + + def flash_spi_attach(self, hspi_arg): + if self.IS_STUB: + super(ESP8266ROM, self).flash_spi_attach(hspi_arg) + else: + # ESP8266 ROM has no flash_spi_attach command in serial protocol, + # but flash_begin will do it + self.flash_begin(0, 0) + + def flash_set_parameters(self, size): + # not implemented in ROM, but OK to silently skip for ROM + if self.IS_STUB: + super(ESP8266ROM, self).flash_set_parameters(size) + + def chip_id(self): + """ Read Chip ID from efuse - the equivalent of the SDK system_get_chip_id() function """ + id0 = self.read_reg(self.ESP_OTP_MAC0) + id1 = self.read_reg(self.ESP_OTP_MAC1) + return (id0 >> 24) | ((id1 & MAX_UINT24) << 8) + def read_mac(self): + """ Read MAC from OTP ROM """ mac0 = self.read_reg(self.ESP_OTP_MAC0) mac1 = self.read_reg(self.ESP_OTP_MAC1) mac3 = self.read_reg(self.ESP_OTP_MAC3) @@ -249,72 +1176,740 @@ class ESPROM(object): raise FatalError("Unknown OUI") return oui + ((mac1 >> 8) & 0xff, mac1 & 0xff, (mac0 >> 24) & 0xff) - """ Read Chip ID from OTP ROM - see http://esp8266-re.foogod.com/wiki/System_get_chip_id_%28IoT_RTOS_SDK_0.9.9%29 """ + def get_erase_size(self, offset, size): + """ Calculate an erase size given a specific size in bytes. + + Provides a workaround for the bootloader erase bug.""" + + sectors_per_block = 16 + sector_size = self.FLASH_SECTOR_SIZE + num_sectors = (size + sector_size - 1) // sector_size + start_sector = offset // sector_size + + head_sectors = sectors_per_block - (start_sector % sectors_per_block) + if num_sectors < head_sectors: + head_sectors = num_sectors + + if num_sectors < 2 * head_sectors: + return (num_sectors + 1) // 2 * sector_size + else: + return (num_sectors - head_sectors) * sector_size + + def override_vddsdio(self, new_voltage): + raise NotImplementedInROMError("Overriding VDDSDIO setting only applies to ESP32") + + +class ESP8266StubLoader(ESP8266ROM): + """ Access class for ESP8266 stub loader, runs on top of ROM. + """ + FLASH_WRITE_SIZE = 0x4000 # matches MAX_WRITE_BLOCK in stub_loader.c + IS_STUB = True + + def __init__(self, rom_loader): + self.secure_download_mode = rom_loader.secure_download_mode + self._port = rom_loader._port + self._trace_enabled = rom_loader._trace_enabled + self.flush_input() # resets _slip_reader + + def get_erase_size(self, offset, size): + return size # stub doesn't have same size bug as ROM loader + + +ESP8266ROM.STUB_CLASS = ESP8266StubLoader + + +class ESP32ROM(ESPLoader): + """Access class for ESP32 ROM bootloader + + """ + CHIP_NAME = "ESP32" + IMAGE_CHIP_ID = 0 + IS_STUB = False + + CHIP_DETECT_MAGIC_VALUE = 0x00f01d83 + + IROM_MAP_START = 0x400d0000 + IROM_MAP_END = 0x40400000 + + DROM_MAP_START = 0x3F400000 + DROM_MAP_END = 0x3F800000 + + # ESP32 uses a 4 byte status reply + STATUS_BYTES_LENGTH = 4 + + SPI_REG_BASE = 0x3ff42000 + SPI_USR_OFFS = 0x1c + SPI_USR1_OFFS = 0x20 + SPI_USR2_OFFS = 0x24 + SPI_MOSI_DLEN_OFFS = 0x28 + SPI_MISO_DLEN_OFFS = 0x2c + EFUSE_RD_REG_BASE = 0x3ff5a000 + + EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT_REG = EFUSE_RD_REG_BASE + 0x18 + EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT = (1 << 7) # EFUSE_RD_DISABLE_DL_ENCRYPT + + DR_REG_SYSCON_BASE = 0x3ff66000 + + SPI_W0_OFFS = 0x80 + + UART_CLKDIV_REG = 0x3ff40014 + + XTAL_CLK_DIVIDER = 1 + + FLASH_SIZES = { + '1MB': 0x00, + '2MB': 0x10, + '4MB': 0x20, + '8MB': 0x30, + '16MB': 0x40 + } + + BOOTLOADER_FLASH_OFFSET = 0x1000 + + OVERRIDE_VDDSDIO_CHOICES = ["1.8V", "1.9V", "OFF"] + + MEMORY_MAP = [[0x00000000, 0x00010000, "PADDING"], + [0x3F400000, 0x3F800000, "DROM"], + [0x3F800000, 0x3FC00000, "EXTRAM_DATA"], + [0x3FF80000, 0x3FF82000, "RTC_DRAM"], + [0x3FF90000, 0x40000000, "BYTE_ACCESSIBLE"], + [0x3FFAE000, 0x40000000, "DRAM"], + [0x3FFE0000, 0x3FFFFFFC, "DIRAM_DRAM"], + [0x40000000, 0x40070000, "IROM"], + [0x40070000, 0x40078000, "CACHE_PRO"], + [0x40078000, 0x40080000, "CACHE_APP"], + [0x40080000, 0x400A0000, "IRAM"], + [0x400A0000, 0x400BFFFC, "DIRAM_IRAM"], + [0x400C0000, 0x400C2000, "RTC_IRAM"], + [0x400D0000, 0x40400000, "IROM"], + [0x50000000, 0x50002000, "RTC_DATA"]] + + FLASH_ENCRYPTED_WRITE_ALIGN = 32 + + """ Try to read the BLOCK1 (encryption key) and check if it is valid """ + + def is_flash_encryption_key_valid(self): + + """ Bit 0 of efuse_rd_disable[3:0] is mapped to BLOCK1 + this bit is at position 16 in EFUSE_BLK0_RDATA0_REG """ + word0 = self.read_efuse(0) + rd_disable = (word0 >> 16) & 0x1 + + # reading of BLOCK1 is NOT ALLOWED so we assume valid key is programmed + if rd_disable: + return True + else: + # reading of BLOCK1 is ALLOWED so we will read and verify for non-zero. + # When ESP32 has not generated AES/encryption key in BLOCK1, the contents will be readable and 0. + # If the flash encryption is enabled it is expected to have a valid non-zero key. We break out on + # first occurance of non-zero value + key_word = [0] * 7 + for i in range(len(key_word)): + key_word[i] = self.read_efuse(14 + i) + # key is non-zero so break & return + if key_word[i] != 0: + return True + return False + + def get_flash_crypt_config(self): + """ For flash encryption related commands we need to make sure + user has programmed all the relevant efuse correctly so before + writing encrypted write_flash_encrypt esptool will verify the values + of flash_crypt_config to be non zero if they are not read + protected. If the values are zero a warning will be printed + + bit 3 in efuse_rd_disable[3:0] is mapped to flash_crypt_config + this bit is at position 19 in EFUSE_BLK0_RDATA0_REG """ + word0 = self.read_efuse(0) + rd_disable = (word0 >> 19) & 0x1 + + if rd_disable == 0: + """ we can read the flash_crypt_config efuse value + so go & read it (EFUSE_BLK0_RDATA5_REG[31:28]) """ + word5 = self.read_efuse(5) + word5 = (word5 >> 28) & 0xF + return word5 + else: + # if read of the efuse is disabled we assume it is set correctly + return 0xF + + def get_encrypted_download_disabled(self): + if self.read_reg(self.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT_REG) & self.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT: + return True + else: + return False + + def get_pkg_version(self): + word3 = self.read_efuse(3) + pkg_version = (word3 >> 9) & 0x07 + pkg_version += ((word3 >> 2) & 0x1) << 3 + return pkg_version + + def get_chip_revision(self): + word3 = self.read_efuse(3) + word5 = self.read_efuse(5) + apb_ctl_date = self.read_reg(self.DR_REG_SYSCON_BASE + 0x7C) + + rev_bit0 = (word3 >> 15) & 0x1 + rev_bit1 = (word5 >> 20) & 0x1 + rev_bit2 = (apb_ctl_date >> 31) & 0x1 + if rev_bit0: + if rev_bit1: + if rev_bit2: + return 3 + else: + return 2 + else: + return 1 + return 0 + + def get_chip_description(self): + pkg_version = self.get_pkg_version() + chip_revision = self.get_chip_revision() + rev3 = (chip_revision == 3) + single_core = self.read_efuse(3) & (1 << 0) # CHIP_VER DIS_APP_CPU + + chip_name = { + 0: "ESP32-S0WDQ6" if single_core else "ESP32-D0WDQ6", + 1: "ESP32-S0WD" if single_core else "ESP32-D0WD", + 2: "ESP32-D2WD", + 4: "ESP32-U4WDH", + 5: "ESP32-PICO-V3" if rev3 else "ESP32-PICO-D4", + 6: "ESP32-PICO-V3-02", + }.get(pkg_version, "unknown ESP32") + + # ESP32-D0WD-V3, ESP32-D0WDQ6-V3 + if chip_name.startswith("ESP32-D0WD") and rev3: + chip_name += "-V3" + + return "%s (revision %d)" % (chip_name, chip_revision) + + def get_chip_features(self): + features = ["WiFi"] + word3 = self.read_efuse(3) + + # names of variables in this section are lowercase + # versions of EFUSE names as documented in TRM and + # ESP-IDF efuse_reg.h + + chip_ver_dis_bt = word3 & (1 << 1) + if chip_ver_dis_bt == 0: + features += ["BT"] + + chip_ver_dis_app_cpu = word3 & (1 << 0) + if chip_ver_dis_app_cpu: + features += ["Single Core"] + else: + features += ["Dual Core"] + + chip_cpu_freq_rated = word3 & (1 << 13) + if chip_cpu_freq_rated: + chip_cpu_freq_low = word3 & (1 << 12) + if chip_cpu_freq_low: + features += ["160MHz"] + else: + features += ["240MHz"] + + pkg_version = self.get_pkg_version() + if pkg_version in [2, 4, 5, 6]: + features += ["Embedded Flash"] + + if pkg_version == 6: + features += ["Embedded PSRAM"] + + word4 = self.read_efuse(4) + adc_vref = (word4 >> 8) & 0x1F + if adc_vref: + features += ["VRef calibration in efuse"] + + blk3_part_res = word3 >> 14 & 0x1 + if blk3_part_res: + features += ["BLK3 partially reserved"] + + word6 = self.read_efuse(6) + coding_scheme = word6 & 0x3 + features += ["Coding Scheme %s" % { + 0: "None", + 1: "3/4", + 2: "Repeat (UNSUPPORTED)", + 3: "Invalid"}[coding_scheme]] + + return features + + def read_efuse(self, n): + """ Read the nth word of the ESP3x EFUSE region. """ + return self.read_reg(self.EFUSE_RD_REG_BASE + (4 * n)) + def chip_id(self): - id0 = self.read_reg(self.ESP_OTP_MAC0) - id1 = self.read_reg(self.ESP_OTP_MAC1) - return (id0 >> 24) | ((id1 & 0xffffff) << 8) + raise NotSupportedError(self, "chip_id") - """ Read SPI flash manufacturer and device id """ - def flash_id(self): - self.flash_begin(0, 0) - self.write_reg(0x60000240, 0x0, 0xffffffff) - self.write_reg(0x60000200, 0x10000000, 0xffffffff) - flash_id = self.read_reg(0x60000240) - self.flash_finish(False) - return flash_id + def read_mac(self): + """ Read MAC from EFUSE region """ + words = [self.read_efuse(2), self.read_efuse(1)] + bitstring = struct.pack(">II", *words) + bitstring = bitstring[2:8] # trim the 2 byte CRC + try: + return tuple(ord(b) for b in bitstring) + except TypeError: # Python 3, bitstring elements are already bytes + return tuple(bitstring) - """ Abuse the loader protocol to force flash to be left in write mode """ - def flash_unlock_dio(self): - # Enable flash write mode - self.flash_begin(0, 0) - # Reset the chip rather than call flash_finish(), which would have - # write protected the chip again (why oh why does it do that?!) - self.mem_begin(0,0,0,0x40100000) - self.mem_finish(0x40000080) + def get_erase_size(self, offset, size): + return size - """ Perform a chip erase of SPI flash """ - def flash_erase(self): - # Trick ROM to initialize SFlash - self.flash_begin(0, 0) + def override_vddsdio(self, new_voltage): + new_voltage = new_voltage.upper() + if new_voltage not in self.OVERRIDE_VDDSDIO_CHOICES: + raise FatalError("The only accepted VDDSDIO overrides are '1.8V', '1.9V' and 'OFF'") + RTC_CNTL_SDIO_CONF_REG = 0x3ff48074 + RTC_CNTL_XPD_SDIO_REG = (1 << 31) + RTC_CNTL_DREFH_SDIO_M = (3 << 29) + RTC_CNTL_DREFM_SDIO_M = (3 << 27) + RTC_CNTL_DREFL_SDIO_M = (3 << 25) + # RTC_CNTL_SDIO_TIEH = (1 << 23) # not used here, setting TIEH=1 would set 3.3V output, not safe for esptool.py to do + RTC_CNTL_SDIO_FORCE = (1 << 22) + RTC_CNTL_SDIO_PD_EN = (1 << 21) - # This is hacky: we don't have a custom stub, instead we trick - # the bootloader to jump to the SPIEraseChip() routine and then halt/crash - # when it tries to boot an unconfigured system. - self.mem_begin(0,0,0,0x40100000) - self.mem_finish(0x40004984) + reg_val = RTC_CNTL_SDIO_FORCE # override efuse setting + reg_val |= RTC_CNTL_SDIO_PD_EN + if new_voltage != "OFF": + reg_val |= RTC_CNTL_XPD_SDIO_REG # enable internal LDO + if new_voltage == "1.9V": + reg_val |= (RTC_CNTL_DREFH_SDIO_M | RTC_CNTL_DREFM_SDIO_M | RTC_CNTL_DREFL_SDIO_M) # boost voltage + self.write_reg(RTC_CNTL_SDIO_CONF_REG, reg_val) + print("VDDSDIO regulator set to %s" % new_voltage) - # Yup - there's no good way to detect if we succeeded. - # It it on the other hand unlikely to fail. + def read_flash_slow(self, offset, length, progress_fn): + BLOCK_LEN = 64 # ROM read limit per command (this limit is why it's so slow) - def run_stub(self, stub, params, read_output=True): - stub = dict(stub) - stub['code'] = unhexify(stub['code']) - if 'data' in stub: - stub['data'] = unhexify(stub['data']) + data = b'' + while len(data) < length: + block_len = min(BLOCK_LEN, length - len(data)) + r = self.check_command("read flash block", self.ESP_READ_FLASH_SLOW, + struct.pack('> 21) & 0x0F + return pkg_version + + def get_chip_description(self): + chip_name = { + 0: "ESP32-S2", + 1: "ESP32-S2FH16", + 2: "ESP32-S2FH32", + }.get(self.get_pkg_version(), "unknown ESP32-S2") + + return "%s" % (chip_name) + + def get_chip_features(self): + features = ["WiFi"] + + if self.secure_download_mode: + features += ["Secure Download Mode Enabled"] + + pkg_version = self.get_pkg_version() + + if pkg_version in [1, 2]: + if pkg_version == 1: + features += ["Embedded 2MB Flash"] + elif pkg_version == 2: + features += ["Embedded 4MB Flash"] + features += ["105C temp rating"] + + num_word = 4 + block2_addr = self.EFUSE_BASE + 0x05C + word4 = self.read_reg(block2_addr + (4 * num_word)) + block2_version = (word4 >> 4) & 0x07 + + if block2_version == 1: + features += ["ADC and temperature sensor calibration in BLK2 of efuse"] + return features + + def get_crystal_freq(self): + # ESP32-S2 XTAL is fixed to 40MHz + return 40 + + def override_vddsdio(self, new_voltage): + raise NotImplementedInROMError("VDD_SDIO overrides are not supported for ESP32-S2") + + def read_mac(self): + mac0 = self.read_reg(self.MAC_EFUSE_REG) + mac1 = self.read_reg(self.MAC_EFUSE_REG + 4) # only bottom 16 bits are MAC + bitstring = struct.pack(">II", mac1, mac0)[2:] + try: + return tuple(ord(b) for b in bitstring) + except TypeError: # Python 3, bitstring elements are already bytes + return tuple(bitstring) + + def get_flash_crypt_config(self): + return None # doesn't exist on ESP32-S2 + + def get_key_block_purpose(self, key_block): + if key_block < 0 or key_block > 5: + raise FatalError("Valid key block numbers must be in range 0-5") + + reg, shift = [(self.EFUSE_PURPOSE_KEY0_REG, self.EFUSE_PURPOSE_KEY0_SHIFT), + (self.EFUSE_PURPOSE_KEY1_REG, self.EFUSE_PURPOSE_KEY1_SHIFT), + (self.EFUSE_PURPOSE_KEY2_REG, self.EFUSE_PURPOSE_KEY2_SHIFT), + (self.EFUSE_PURPOSE_KEY3_REG, self.EFUSE_PURPOSE_KEY3_SHIFT), + (self.EFUSE_PURPOSE_KEY4_REG, self.EFUSE_PURPOSE_KEY4_SHIFT), + (self.EFUSE_PURPOSE_KEY5_REG, self.EFUSE_PURPOSE_KEY5_SHIFT)][key_block] + return (self.read_reg(reg) >> shift) & 0xF + + def is_flash_encryption_key_valid(self): + # Need to see either an AES-128 key or two AES-256 keys + purposes = [self.get_key_block_purpose(b) for b in range(6)] + + if any(p == self.PURPOSE_VAL_XTS_AES128_KEY for p in purposes): + return True + + return any(p == self.PURPOSE_VAL_XTS_AES256_KEY_1 for p in purposes) \ + and any(p == self.PURPOSE_VAL_XTS_AES256_KEY_2 for p in purposes) + + def uses_usb(self, _cache=[]): + if self.secure_download_mode: + return False # can't detect native USB in secure download mode + if not _cache: + buf_no = self.read_reg(self.UARTDEV_BUF_NO) & 0xff + _cache.append(buf_no == self.UARTDEV_BUF_NO_USB) + return _cache[0] + + def _post_connect(self): + if self.uses_usb(): + self.ESP_RAM_BLOCK = self.USB_RAM_BLOCK + + def _check_if_can_reset(self): + """ + Check the strapping register to see if we can reset out of download mode. + """ + if os.getenv("ESPTOOL_TESTING") is not None: + print("ESPTOOL_TESTING is set, ignoring strapping mode check") + # Esptool tests over USB CDC run with GPIO0 strapped low, don't complain in this case. + return + strap_reg = self.read_reg(self.GPIO_STRAP_REG) + force_dl_reg = self.read_reg(self.RTC_CNTL_OPTION1_REG) + if strap_reg & self.GPIO_STRAP_SPI_BOOT_MASK == 0 and force_dl_reg & self.RTC_CNTL_FORCE_DOWNLOAD_BOOT_MASK == 0: + print("ERROR: {} chip was placed into download mode using GPIO0.\n" + "esptool.py can not exit the download mode over USB. " + "To run the app, reset the chip manually.\n" + "To suppress this error, set --after option to 'no_reset'.".format(self.get_chip_description())) + raise SystemExit(1) + + def hard_reset(self): + if self.uses_usb(): + self._check_if_can_reset() + + self._setRTS(True) # EN->LOW + if self.uses_usb(): + # Give the chip some time to come out of reset, to be able to handle further DTR/RTS transitions + time.sleep(0.2) + self._setRTS(False) + time.sleep(0.2) + else: + self._setRTS(False) + + +class ESP32S3BETA2ROM(ESP32ROM): + CHIP_NAME = "ESP32-S3(beta2)" + IMAGE_CHIP_ID = 4 + + IROM_MAP_START = 0x42000000 + IROM_MAP_END = 0x44000000 + DROM_MAP_START = 0x3c000000 + DROM_MAP_END = 0x3e000000 + + UART_DATE_REG_ADDR = 0x60000080 + + CHIP_DETECT_MAGIC_VALUE = 0xeb004136 + + SPI_REG_BASE = 0x60002000 + SPI_USR_OFFS = 0x18 + SPI_USR1_OFFS = 0x1c + SPI_USR2_OFFS = 0x20 + SPI_MOSI_DLEN_OFFS = 0x24 + SPI_MISO_DLEN_OFFS = 0x28 + SPI_W0_OFFS = 0x58 + + EFUSE_REG_BASE = 0x6001A030 # BLOCK0 read base address + + MAC_EFUSE_REG = 0x6001A000 # ESP32S3 has special block for MAC efuses + + UART_CLKDIV_REG = 0x60000014 + + GPIO_STRAP_REG = 0x60004038 + + MEMORY_MAP = [[0x00000000, 0x00010000, "PADDING"], + [0x3C000000, 0x3D000000, "DROM"], + [0x3D000000, 0x3E000000, "EXTRAM_DATA"], + [0x600FE000, 0x60100000, "RTC_DRAM"], + [0x3FC88000, 0x3FD00000, "BYTE_ACCESSIBLE"], + [0x3FC88000, 0x403E2000, "MEM_INTERNAL"], + [0x3FC88000, 0x3FD00000, "DRAM"], + [0x40000000, 0x4001A100, "IROM_MASK"], + [0x40370000, 0x403E0000, "IRAM"], + [0x600FE000, 0x60100000, "RTC_IRAM"], + [0x42000000, 0x42800000, "IROM"], + [0x50000000, 0x50002000, "RTC_DATA"]] + + def get_chip_description(self): + return "ESP32-S3(beta2)" + + def get_chip_features(self): + return ["WiFi", "BLE"] + + def get_crystal_freq(self): + # ESP32S3 XTAL is fixed to 40MHz + return 40 + + def override_vddsdio(self, new_voltage): + raise NotImplementedInROMError("VDD_SDIO overrides are not supported for ESP32-S3") + + def read_mac(self): + mac0 = self.read_reg(self.MAC_EFUSE_REG) + mac1 = self.read_reg(self.MAC_EFUSE_REG + 4) # only bottom 16 bits are MAC + bitstring = struct.pack(">II", mac1, mac0)[2:] + try: + return tuple(ord(b) for b in bitstring) + except TypeError: # Python 3, bitstring elements are already bytes + return tuple(bitstring) + + +class ESP32C3ROM(ESP32ROM): + CHIP_NAME = "ESP32-C3" + IMAGE_CHIP_ID = 5 + + IROM_MAP_START = 0x42000000 + IROM_MAP_END = 0x42800000 + DROM_MAP_START = 0x3c000000 + DROM_MAP_END = 0x3c800000 + + SPI_REG_BASE = 0x3f402000 + SPI_USR_OFFS = 0x18 + SPI_USR1_OFFS = 0x1c + SPI_USR2_OFFS = 0x20 + SPI_MOSI_DLEN_OFFS = 0x24 + SPI_MISO_DLEN_OFFS = 0x28 + SPI_W0_OFFS = 0xA8 + + BOOTLOADER_FLASH_OFFSET = 0x0 + + CHIP_DETECT_MAGIC_VALUE = 0x6921506f + + UART_DATE_REG_ADDR = 0x60000000 + 0x7c + + EFUSE_BASE = 0x60008800 + MAC_EFUSE_REG = EFUSE_BASE + 0x044 + + GPIO_STRAP_REG = 0x3f404038 + + FLASH_ENCRYPTED_WRITE_ALIGN = 16 + + MEMORY_MAP = [[0x00000000, 0x00010000, "PADDING"], + [0x3C000000, 0x3C800000, "DROM"], + [0x3FC80000, 0x3FCE0000, "DRAM"], + [0x3FC88000, 0x3FD00000, "BYTE_ACCESSIBLE"], + [0x3FF00000, 0x3FF20000, "DROM_MASK"], + [0x40000000, 0x40060000, "IROM_MASK"], + [0x42000000, 0x42800000, "IROM"], + [0x4037C000, 0x403E0000, "IRAM"], + [0x50000000, 0x50002000, "RTC_IRAM"], + [0x50000000, 0x50002000, "RTC_DRAM"], + [0x600FE000, 0x60100000, "MEM_INTERNAL2"]] + + def get_pkg_version(self): + num_word = 3 + block1_addr = self.EFUSE_BASE + 0x044 + word3 = self.read_reg(block1_addr + (4 * num_word)) + pkg_version = (word3 >> 21) & 0x0F + return pkg_version + + def get_chip_description(self): + chip_name = { + 0: "ESP32-C3", + }.get(self.get_pkg_version(), "unknown ESP32-C3") + + return "%s" % (chip_name) + + def get_chip_features(self): + return ["Wi-Fi"] + + def get_crystal_freq(self): + # ESP32C3 XTAL is fixed to 40MHz + return 40 + + def override_vddsdio(self, new_voltage): + raise NotImplementedInROMError("VDD_SDIO overrides are not supported for ESP32-C3") + + def read_mac(self): + mac0 = self.read_reg(self.MAC_EFUSE_REG) + mac1 = self.read_reg(self.MAC_EFUSE_REG + 4) # only bottom 16 bits are MAC + bitstring = struct.pack(">II", mac1, mac0)[2:] + try: + return tuple(ord(b) for b in bitstring) + except TypeError: # Python 3, bitstring elements are already bytes + return tuple(bitstring) + + +class ESP32StubLoader(ESP32ROM): + """ Access class for ESP32 stub loader, runs on top of ROM. + """ + FLASH_WRITE_SIZE = 0x4000 # matches MAX_WRITE_BLOCK in stub_loader.c + STATUS_BYTES_LENGTH = 2 # same as ESP8266, different to ESP32 ROM + IS_STUB = True + + def __init__(self, rom_loader): + self.secure_download_mode = rom_loader.secure_download_mode + self._port = rom_loader._port + self._trace_enabled = rom_loader._trace_enabled + self.flush_input() # resets _slip_reader + + +ESP32ROM.STUB_CLASS = ESP32StubLoader + + +class ESP32S2StubLoader(ESP32S2ROM): + """ Access class for ESP32-S2 stub loader, runs on top of ROM. + + (Basically the same as ESP32StubLoader, but different base class. + Can possibly be made into a mixin.) + """ + FLASH_WRITE_SIZE = 0x4000 # matches MAX_WRITE_BLOCK in stub_loader.c + STATUS_BYTES_LENGTH = 2 # same as ESP8266, different to ESP32 ROM + IS_STUB = True + + def __init__(self, rom_loader): + self.secure_download_mode = rom_loader.secure_download_mode + self._port = rom_loader._port + self._trace_enabled = rom_loader._trace_enabled + self.flush_input() # resets _slip_reader + + if rom_loader.uses_usb(): + self.ESP_RAM_BLOCK = self.USB_RAM_BLOCK + self.FLASH_WRITE_SIZE = self.USB_RAM_BLOCK + + +ESP32S2ROM.STUB_CLASS = ESP32S2StubLoader + + +class ESP32S3BETA2StubLoader(ESP32S3BETA2ROM): + """ Access class for ESP32S3 stub loader, runs on top of ROM. + + (Basically the same as ESP32StubLoader, but different base class. + Can possibly be made into a mixin.) + """ + FLASH_WRITE_SIZE = 0x4000 # matches MAX_WRITE_BLOCK in stub_loader.c + STATUS_BYTES_LENGTH = 2 # same as ESP8266, different to ESP32 ROM + IS_STUB = True + + def __init__(self, rom_loader): + self.secure_download_mode = rom_loader.secure_download_mode + self._port = rom_loader._port + self._trace_enabled = rom_loader._trace_enabled + self.flush_input() # resets _slip_reader + + +ESP32S3BETA2ROM.STUB_CLASS = ESP32S3BETA2StubLoader + + +class ESP32C3StubLoader(ESP32C3ROM): + """ Access class for ESP32C3 stub loader, runs on top of ROM. + + (Basically the same as ESP32StubLoader, but different base class. + Can possibly be made into a mixin.) + """ + FLASH_WRITE_SIZE = 0x4000 # matches MAX_WRITE_BLOCK in stub_loader.c + STATUS_BYTES_LENGTH = 2 # same as ESP8266, different to ESP32 ROM + IS_STUB = True + + def __init__(self, rom_loader): + self.secure_download_mode = rom_loader.secure_download_mode + self._port = rom_loader._port + self._trace_enabled = rom_loader._trace_enabled + self.flush_input() # resets _slip_reader + + +ESP32C3ROM.STUB_CLASS = ESP32C3StubLoader class ESPBOOTLOADER(object): @@ -327,125 +1922,274 @@ class ESPBOOTLOADER(object): IMAGE_V2_SEGMENT = 4 -def LoadFirmwareImage(filename): - """ Load a firmware image, without knowing what kind of file (v1 or v2) it is. +def LoadFirmwareImage(chip, filename): + """ Load a firmware image. Can be for any supported SoC. - Returns a BaseFirmwareImage subclass, either ESPFirmwareImage (v1) or OTAFirmwareImage (v2). + ESP8266 images will be examined to determine if they are original ROM firmware images (ESP8266ROMFirmwareImage) + or "v2" OTA bootloader images. + + Returns a BaseFirmwareImage subclass, either ESP8266ROMFirmwareImage (v1) or ESP8266V2FirmwareImage (v2). """ + chip = chip.lower().replace("-", "") with open(filename, 'rb') as f: - magic = ord(f.read(1)) - f.seek(0) - if magic == ESPROM.ESP_IMAGE_MAGIC: - return ESPFirmwareImage(f) - elif magic == ESPBOOTLOADER.IMAGE_V2_MAGIC: - return OTAFirmwareImage(f) - else: - raise FatalError("Invalid image magic number: %d" % magic) + if chip == 'esp32': + return ESP32FirmwareImage(f) + elif chip == "esp32s2": + return ESP32S2FirmwareImage(f) + elif chip == "esp32s3beta2": + return ESP32S3BETA2FirmwareImage(f) + elif chip == 'esp32c3': + return ESP32C3FirmwareImage(f) + else: # Otherwise, ESP8266 so look at magic to determine the image type + magic = ord(f.read(1)) + f.seek(0) + if magic == ESPLoader.ESP_IMAGE_MAGIC: + return ESP8266ROMFirmwareImage(f) + elif magic == ESPBOOTLOADER.IMAGE_V2_MAGIC: + return ESP8266V2FirmwareImage(f) + else: + raise FatalError("Invalid image magic number: %d" % magic) + + +class ImageSegment(object): + """ Wrapper class for a segment in an ESP image + (very similar to a section in an ELFImage also) """ + def __init__(self, addr, data, file_offs=None): + self.addr = addr + self.data = data + self.file_offs = file_offs + self.include_in_checksum = True + if self.addr != 0: + self.pad_to_alignment(4) # pad all "real" ImageSegments 4 byte aligned length + + def copy_with_new_addr(self, new_addr): + """ Return a new ImageSegment with same data, but mapped at + a new address. """ + return ImageSegment(new_addr, self.data, 0) + + def split_image(self, split_len): + """ Return a new ImageSegment which splits "split_len" bytes + from the beginning of the data. Remaining bytes are kept in + this segment object (and the start address is adjusted to match.) """ + result = copy.copy(self) + result.data = self.data[:split_len] + self.data = self.data[split_len:] + self.addr += split_len + self.file_offs = None + result.file_offs = None + return result + + def __repr__(self): + r = "len 0x%05x load 0x%08x" % (len(self.data), self.addr) + if self.file_offs is not None: + r += " file_offs 0x%08x" % (self.file_offs) + return r + + def pad_to_alignment(self, alignment): + self.data = pad_to(self.data, alignment, b'\x00') + + +class ELFSection(ImageSegment): + """ Wrapper class for a section in an ELF image, has a section + name as well as the common properties of an ImageSegment. """ + def __init__(self, name, addr, data): + super(ELFSection, self).__init__(addr, data) + self.name = name.decode("utf-8") + + def __repr__(self): + return "%s %s" % (self.name, super(ELFSection, self).__repr__()) class BaseFirmwareImage(object): + SEG_HEADER_LEN = 8 + SHA256_DIGEST_LEN = 32 + """ Base class with common firmware image functions """ def __init__(self): self.segments = [] self.entrypoint = 0 + self.elf_sha256 = None + self.elf_sha256_offset = 0 - def add_segment(self, addr, data, pad_to=4): - """ Add a segment to the image, with specified address & data - (padded to a boundary of pad_to size) """ - # Data should be aligned on word boundary - l = len(data) - if l % pad_to: - data += b"\x00" * (pad_to - l % pad_to) - if l > 0: - self.segments.append((addr, len(data), data)) + def load_common_header(self, load_file, expected_magic): + (magic, segments, self.flash_mode, self.flash_size_freq, self.entrypoint) = struct.unpack(' 16: + raise FatalError('Invalid segment count %d (max 16). Usually this indicates a linker script problem.' % len(self.segments)) def load_segment(self, f, is_irom_segment=False): """ Load the next segment from the image file """ + file_offs = f.tell() (offset, size) = struct.unpack(' 0x40200000 or offset < 0x3ffe0000 or size > 65536: - raise FatalError('Suspicious segment 0x%x, length %d' % (offset, size)) + self.warn_if_unusual_segment(offset, size, is_irom_segment) segment_data = f.read(size) if len(segment_data) < size: raise FatalError('End of file reading segment 0x%x, length %d (actual length %d)' % (offset, size, len(segment_data))) - segment = (offset, size, segment_data) + segment = ImageSegment(offset, segment_data, file_offs) self.segments.append(segment) return segment + def warn_if_unusual_segment(self, offset, size, is_irom_segment): + if not is_irom_segment: + if offset > 0x40200000 or offset < 0x3ffe0000 or size > 65536: + print('WARNING: Suspicious segment 0x%x, length %d' % (offset, size)) + + def maybe_patch_segment_data(self, f, segment_data): + """If SHA256 digest of the ELF file needs to be inserted into this segment, do so. Returns segment data.""" + segment_len = len(segment_data) + file_pos = f.tell() # file_pos is position in the .bin file + if self.elf_sha256_offset >= file_pos and self.elf_sha256_offset < file_pos + segment_len: + # SHA256 digest needs to be patched into this binary segment, + # calculate offset of the digest inside the binary segment. + patch_offset = self.elf_sha256_offset - file_pos + # Sanity checks + if patch_offset < self.SEG_HEADER_LEN or patch_offset + self.SHA256_DIGEST_LEN > segment_len: + raise FatalError('Cannot place SHA256 digest on segment boundary' + '(elf_sha256_offset=%d, file_pos=%d, segment_size=%d)' % + (self.elf_sha256_offset, file_pos, segment_len)) + # offset relative to the data part + patch_offset -= self.SEG_HEADER_LEN + if segment_data[patch_offset:patch_offset + self.SHA256_DIGEST_LEN] != b'\x00' * self.SHA256_DIGEST_LEN: + raise FatalError('Contents of segment at SHA256 digest offset 0x%x are not all zero. Refusing to overwrite.' % + self.elf_sha256_offset) + assert(len(self.elf_sha256) == self.SHA256_DIGEST_LEN) + segment_data = segment_data[0:patch_offset] + self.elf_sha256 + \ + segment_data[patch_offset + self.SHA256_DIGEST_LEN:] + return segment_data + def save_segment(self, f, segment, checksum=None): """ Save the next segment to the image file, return next checksum value if provided """ - (offset, size, data) = segment - f.write(struct.pack(' 0: + if len(irom_segments) != 1: + raise FatalError('Found %d segments that could be irom0. Bad ELF file?' % len(irom_segments)) + return irom_segments[0] + return None + + def get_non_irom_segments(self): + irom_segment = self.get_irom_segment() + return [s for s in self.segments if s != irom_segment] + + +class ESP8266ROMFirmwareImage(BaseFirmwareImage): """ 'Version 1' firmware image, segments loaded directly by the ROM bootloader. """ + + ROM_LOADER = ESP8266ROM + def __init__(self, load_file=None): - super(ESPFirmwareImage, self).__init__() + super(ESP8266ROMFirmwareImage, self).__init__() self.flash_mode = 0 self.flash_size_freq = 0 self.version = 1 if load_file is not None: - (magic, segments, self.flash_mode, self.flash_size_freq, self.entrypoint) = struct.unpack(' 16: - raise FatalError('Invalid firmware image magic=%d segments=%d' % (magic, segments)) - - for i in xrange(segments): + for _ in range(segments): self.load_segment(load_file) self.checksum = self.read_checksum(load_file) - def save(self, filename): - with open(filename, 'wb') as f: - self.write_v1_header(f, self.segments) - checksum = ESPROM.ESP_CHECKSUM_MAGIC - for segment in self.segments: + self.verify() + + def default_output_name(self, input_file): + """ Derive a default output name from the ELF name. """ + return input_file + '-' + + def save(self, basename): + """ Save a set of V1 images for flashing. Parameter is a base filename. """ + # IROM data goes in its own plain binary file + irom_segment = self.get_irom_segment() + if irom_segment is not None: + with open("%s0x%05x.bin" % (basename, irom_segment.addr - ESP8266ROM.IROM_MAP_START), "wb") as f: + f.write(irom_segment.data) + + # everything but IROM goes at 0x00000 in an image file + normal_segments = self.get_non_irom_segments() + with open("%s0x00000.bin" % basename, 'wb') as f: + self.write_common_header(f, normal_segments) + checksum = ESPLoader.ESP_CHECKSUM_MAGIC + for segment in normal_segments: checksum = self.save_segment(f, segment, checksum) self.append_checksum(f, checksum) -class OTAFirmwareImage(BaseFirmwareImage): +ESP8266ROM.BOOTLOADER_IMAGE = ESP8266ROMFirmwareImage + + +class ESP8266V2FirmwareImage(BaseFirmwareImage): """ 'Version 2' firmware image, segments loaded by software bootloader stub (ie Espressif bootloader or rboot) """ + + ROM_LOADER = ESP8266ROM + def __init__(self, load_file=None): - super(OTAFirmwareImage, self).__init__() + super(ESP8266V2FirmwareImage, self).__init__() self.version = 2 if load_file is not None: - (magic, segments, first_flash_mode, first_flash_size_freq, first_entrypoint) = struct.unpack(' 16: - raise FatalError('Invalid V2 second header magic=%d segments=%d' % (magic, segments)) - # load all the usual segments - for _ in xrange(segments): + for _ in range(segments): self.load_segment(load_file) self.checksum = self.read_checksum(load_file) + self.verify() + + def default_output_name(self, input_file): + """ Derive a default output name from the ELF name. """ + irom_segment = self.get_irom_segment() + if irom_segment is not None: + irom_offs = irom_segment.addr - ESP8266ROM.IROM_MAP_START + else: + irom_offs = 0 + return "%s-0x%05x.bin" % (os.path.splitext(input_file)[0], + irom_offs & ~(ESPLoader.FLASH_SECTOR_SIZE - 1)) + def save(self, filename): with open(filename, 'wb') as f: # Save first header for irom0 segment - f.write(struct.pack(' 0: + last_addr = flash_segments[0].addr + for segment in flash_segments[1:]: + if segment.addr // self.IROM_ALIGN == last_addr // self.IROM_ALIGN: + raise FatalError(("Segment loaded at 0x%08x lands in same 64KB flash mapping as segment loaded at 0x%08x. " + "Can't generate binary. Suggest changing linker script or ELF to merge sections.") % + (segment.addr, last_addr)) + last_addr = segment.addr + + def get_alignment_data_needed(segment): + # Actual alignment (in data bytes) required for a segment header: positioned so that + # after we write the next 8 byte header, file_offs % IROM_ALIGN == segment.addr % IROM_ALIGN + # + # (this is because the segment's vaddr may not be IROM_ALIGNed, more likely is aligned + # IROM_ALIGN+0x18 to account for the binary file header + align_past = (segment.addr % self.IROM_ALIGN) - self.SEG_HEADER_LEN + pad_len = (self.IROM_ALIGN - (f.tell() % self.IROM_ALIGN)) + align_past + if pad_len == 0 or pad_len == self.IROM_ALIGN: + return 0 # already aligned + + # subtract SEG_HEADER_LEN a second time, as the padding block has a header as well + pad_len -= self.SEG_HEADER_LEN + if pad_len < 0: + pad_len += self.IROM_ALIGN + return pad_len + + # try to fit each flash segment on a 64kB aligned boundary + # by padding with parts of the non-flash segments... + while len(flash_segments) > 0: + segment = flash_segments[0] + pad_len = get_alignment_data_needed(segment) + if pad_len > 0: # need to pad + if len(ram_segments) > 0 and pad_len > self.SEG_HEADER_LEN: + pad_segment = ram_segments[0].split_image(pad_len) + if len(ram_segments[0].data) == 0: + ram_segments.pop(0) + else: + pad_segment = ImageSegment(0, b'\x00' * pad_len, f.tell()) + checksum = self.save_segment(f, pad_segment, checksum) + total_segments += 1 + else: + # write the flash segment + assert (f.tell() + 8) % self.IROM_ALIGN == segment.addr % self.IROM_ALIGN + checksum = self.save_flash_segment(f, segment, checksum) + flash_segments.pop(0) + total_segments += 1 + + # flash segments all written, so write any remaining RAM segments + for segment in ram_segments: + checksum = self.save_segment(f, segment, checksum) + total_segments += 1 + + if self.secure_pad: + # pad the image so that after signing it will end on a a 64KB boundary. + # This ensures all mapped flash content will be verified. + if not self.append_digest: + raise FatalError("secure_pad only applies if a SHA-256 digest is also appended to the image") + align_past = (f.tell() + self.SEG_HEADER_LEN) % self.IROM_ALIGN + # 16 byte aligned checksum (force the alignment to simplify calculations) + checksum_space = 16 + if self.secure_pad == '1': + # after checksum: SHA-256 digest + (to be added by signing process) version, signature + 12 trailing bytes due to alignment + space_after_checksum = 32 + 4 + 64 + 12 + elif self.secure_pad == '2': # Secure Boot V2 + # after checksum: SHA-256 digest + signature sector, but we place signature sector after the 64KB boundary + space_after_checksum = 32 + pad_len = (self.IROM_ALIGN - align_past - checksum_space - space_after_checksum) % self.IROM_ALIGN + pad_segment = ImageSegment(0, b'\x00' * pad_len, f.tell()) + + checksum = self.save_segment(f, pad_segment, checksum) + total_segments += 1 + + # done writing segments + self.append_checksum(f, checksum) + image_length = f.tell() + + if self.secure_pad: + assert ((image_length + space_after_checksum) % self.IROM_ALIGN) == 0 + + # kinda hacky: go back to the initial header and write the new segment count + # that includes padding segments. This header is not checksummed + f.seek(1) + try: + f.write(chr(total_segments)) + except TypeError: # Python 3 + f.write(bytes([total_segments])) + + if self.append_digest: + # calculate the SHA256 of the whole file and append it + f.seek(0) + digest = hashlib.sha256() + digest.update(f.read(image_length)) + f.write(digest.digest()) + + with open(filename, 'wb') as real_file: + real_file.write(f.getvalue()) + + def save_flash_segment(self, f, segment, checksum=None): + """ Save the next segment to the image file, return next checksum value if provided """ + segment_end_pos = f.tell() + len(segment.data) + self.SEG_HEADER_LEN + segment_len_remainder = segment_end_pos % self.IROM_ALIGN + if segment_len_remainder < 0x24: + # Work around a bug in ESP-IDF 2nd stage bootloader, that it didn't map the + # last MMU page, if an IROM/DROM segment was < 0x24 bytes over the page boundary. + segment.data += b'\x00' * (0x24 - segment_len_remainder) + return self.save_segment(f, segment, checksum) + + def load_extended_header(self, load_file): + def split_byte(n): + return (n & 0x0F, (n >> 4) & 0x0F) + + fields = list(struct.unpack(self.EXTENDED_HEADER_STRUCT_FMT, load_file.read(16))) + + self.wp_pin = fields[0] + + # SPI pin drive stengths are two per byte + self.clk_drv, self.q_drv = split_byte(fields[1]) + self.d_drv, self.cs_drv = split_byte(fields[2]) + self.hd_drv, self.wp_drv = split_byte(fields[3]) + + chip_id = fields[4] + if chip_id != self.ROM_LOADER.IMAGE_CHIP_ID: + print(("Unexpected chip id in image. Expected %d but value was %d. " + "Is this image for a different chip model?") % (self.ROM_LOADER.IMAGE_CHIP_ID, chip_id)) + + # reserved fields in the middle should all be zero + if any(f for f in fields[6:-1] if f != 0): + print("Warning: some reserved header fields have non-zero values. This image may be from a newer esptool.py?") + + append_digest = fields[-1] # last byte is append_digest + if append_digest in [0, 1]: + self.append_digest = (append_digest == 1) + else: + raise RuntimeError("Invalid value for append_digest field (0x%02x). Should be 0 or 1.", append_digest) + + def save_extended_header(self, save_file): + def join_byte(ln, hn): + return (ln & 0x0F) + ((hn & 0x0F) << 4) + + append_digest = 1 if self.append_digest else 0 + + fields = [self.wp_pin, + join_byte(self.clk_drv, self.q_drv), + join_byte(self.d_drv, self.cs_drv), + join_byte(self.hd_drv, self.wp_drv), + self.ROM_LOADER.IMAGE_CHIP_ID, + self.min_rev] + fields += [0] * 8 # padding + fields += [append_digest] + + packed = struct.pack(self.EXTENDED_HEADER_STRUCT_FMT, *fields) + save_file.write(packed) + + +ESP32ROM.BOOTLOADER_IMAGE = ESP32FirmwareImage + + +class ESP32S2FirmwareImage(ESP32FirmwareImage): + """ ESP32S2 Firmware Image almost exactly the same as ESP32FirmwareImage """ + ROM_LOADER = ESP32S2ROM + + +ESP32S2ROM.BOOTLOADER_IMAGE = ESP32S2FirmwareImage + + +class ESP32S3BETA2FirmwareImage(ESP32FirmwareImage): + """ ESP32S3 Firmware Image almost exactly the same as ESP32FirmwareImage """ + ROM_LOADER = ESP32S3BETA2ROM + + +ESP32S3BETA2ROM.BOOTLOADER_IMAGE = ESP32S3BETA2FirmwareImage + + +class ESP32C3FirmwareImage(ESP32FirmwareImage): + """ ESP32C3 Firmware Image almost exactly the same as ESP32FirmwareImage """ + ROM_LOADER = ESP32C3ROM + + +ESP32C3ROM.BOOTLOADER_IMAGE = ESP32C3FirmwareImage + class ELFFile(object): + SEC_TYPE_PROGBITS = 0x01 + SEC_TYPE_STRTAB = 0x03 + + LEN_SEC_HEADER = 0x28 + def __init__(self, name): - self.name = binutils_safe_path(name) - self.symbols = None + # Load sections from the ELF file + self.name = name + with open(self.name, 'rb') as f: + self._read_elf_file(f) - def _fetch_symbols(self): - if self.symbols is not None: - return - self.symbols = {} + def get_section(self, section_name): + for s in self.sections: + if s.name == section_name: + return s + raise ValueError("No section %s in ELF file" % section_name) + + def _read_elf_file(self, f): + # read the ELF file header + LEN_FILE_HEADER = 0x34 try: - tool_nm = "xtensa-lx106-elf-nm" - if os.getenv('XTENSA_CORE') == 'lx106': - tool_nm = "xt-nm" - proc = subprocess.Popen([tool_nm, self.name], stdout=subprocess.PIPE) - except OSError: - print "Error calling %s, do you have Xtensa toolchain in PATH?" % tool_nm - sys.exit(1) - for l in proc.stdout: - fields = l.strip().split() - try: - if fields[0] == "U": - print "Warning: ELF binary has undefined symbol %s" % fields[1] - continue - if fields[0] == "w": - continue # can skip weak symbols - self.symbols[fields[2]] = int(fields[0], 16) - except ValueError: - raise FatalError("Failed to strip symbol output from nm: %s" % fields) + (ident, _type, machine, _version, + self.entrypoint, _phoff, shoff, _flags, + _ehsize, _phentsize, _phnum, shentsize, + shnum, shstrndx) = struct.unpack("<16sHHLLLLLHHHHHH", f.read(LEN_FILE_HEADER)) + except struct.error as e: + raise FatalError("Failed to read a valid ELF header from %s: %s" % (self.name, e)) - def get_symbol_addr(self, sym): - self._fetch_symbols() - return self.symbols[sym] + if byte(ident, 0) != 0x7f or ident[1:4] != b'ELF': + raise FatalError("%s has invalid ELF magic header" % self.name) + if machine not in [0x5e, 0xf3]: + raise FatalError("%s does not appear to be an Xtensa or an RISCV ELF file. e_machine=%04x" % (self.name, machine)) + if shentsize != self.LEN_SEC_HEADER: + raise FatalError("%s has unexpected section header entry size 0x%x (not 0x%x)" % (self.name, shentsize, self.LEN_SEC_HEADER)) + if shnum == 0: + raise FatalError("%s has 0 section headers" % (self.name)) + self._read_sections(f, shoff, shnum, shstrndx) - def get_entry_point(self): - tool_readelf = "xtensa-lx106-elf-readelf" - if os.getenv('XTENSA_CORE') == 'lx106': - tool_readelf = "xt-readelf" - try: - proc = subprocess.Popen([tool_readelf, "-h", self.name], stdout=subprocess.PIPE) - except OSError: - print "Error calling %s, do you have Xtensa toolchain in PATH?" % tool_readelf - sys.exit(1) - for l in proc.stdout: - fields = l.strip().split() - if fields[0] == "Entry": - return int(fields[3], 0) + def _read_sections(self, f, section_header_offs, section_header_count, shstrndx): + f.seek(section_header_offs) + len_bytes = section_header_count * self.LEN_SEC_HEADER + section_header = f.read(len_bytes) + if len(section_header) == 0: + raise FatalError("No section header found at offset %04x in ELF file." % section_header_offs) + if len(section_header) != (len_bytes): + raise FatalError("Only read 0x%x bytes from section header (expected 0x%x.) Truncated ELF file?" % (len(section_header), len_bytes)) - def load_section(self, section): - tool_objcopy = "xtensa-lx106-elf-objcopy" - if os.getenv('XTENSA_CORE') == 'lx106': - tool_objcopy = "xt-objcopy" - tmpsection = binutils_safe_path(tempfile.mktemp(suffix=".section")) - try: - subprocess.check_call([tool_objcopy, "--only-section", section, "-Obinary", self.name, tmpsection]) - with open(tmpsection, "rb") as f: - data = f.read() - finally: - os.remove(tmpsection) - return data + # walk through the section header and extract all sections + section_header_offsets = range(0, len(section_header), self.LEN_SEC_HEADER) + + def read_section_header(offs): + name_offs, sec_type, _flags, lma, sec_offs, size = struct.unpack_from(" 0] + self.sections = prog_sections + + def sha256(self): + # return SHA256 hash of the input ELF file + sha256 = hashlib.sha256() + with open(self.name, 'rb') as f: + sha256.update(f.read()) + return sha256.digest() -class CesantaFlasher(object): - - # From stub_flasher.h - CMD_FLASH_WRITE = 1 - CMD_FLASH_READ = 2 - CMD_FLASH_DIGEST = 3 - CMD_BOOT_FW = 6 - - def __init__(self, esp, baud_rate=0): - print 'Running Cesanta flasher stub...' - if baud_rate <= ESPROM.ESP_ROM_BAUD: # don't change baud rates if we already synced at that rate - baud_rate = 0 - self._esp = esp - esp.run_stub(json.loads(_CESANTA_FLASHER_STUB), [baud_rate], read_output=False) - if baud_rate > 0: - esp._port.baudrate = baud_rate - # Read the greeting. - p = esp.read() - if p != 'OHAI': - raise FatalError('Failed to connect to the flasher (got %s)' % hexify(p)) - - def flash_write(self, addr, data, show_progress=False): - assert addr % self._esp.ESP_FLASH_SECTOR == 0, 'Address must be sector-aligned' - assert len(data) % self._esp.ESP_FLASH_SECTOR == 0, 'Length must be sector-aligned' - sys.stdout.write('Writing %d @ 0x%x... ' % (len(data), addr)) - sys.stdout.flush() - self._esp.write(struct.pack(' length: - raise FatalError('Read more than expected') - p = self._esp.read() - if len(p) != 16: - raise FatalError('Expected digest, got: %s' % hexify(p)) - expected_digest = hexify(p).upper() - digest = hashlib.md5(data).hexdigest().upper() - print - if digest != expected_digest: - raise FatalError('Digest mismatch: expected %s, got %s' % (expected_digest, digest)) - p = self._esp.read() - if len(p) != 1: - raise FatalError('Expected status, got: %s' % hexify(p)) - status_code = struct.unpack(' 16 bytes) will be + printed as separately indented lines, with ASCII decoding at the end + of each line. + """ + def __init__(self, binary_string, auto_split=True): + self._s = binary_string + self._auto_split = auto_split + + def __str__(self): + if self._auto_split and len(self._s) > 16: + result = "" + s = self._s + while len(s) > 0: + line = s[:16] + ascii_line = "".join(c if (c == ' ' or (c in string.printable and c not in string.whitespace)) + else '.' for c in line.decode('ascii', 'replace')) + s = s[16:] + result += "\n %-16s %-16s | %s" % (hexify(line[:8], False), hexify(line[8:], False), ascii_line) + return result + else: + return hexify(self._s, False) + + +def pad_to(data, alignment, pad_character=b'\xFF'): + """ Pad to the next alignment boundary """ + pad_mod = len(data) % alignment + if pad_mod != 0: + data += pad_character * (alignment - pad_mod) + return data class FatalError(RuntimeError): @@ -770,170 +2759,439 @@ class FatalError(RuntimeError): @staticmethod def WithResult(message, result): """ - Return a fatal error object that includes the hex values of + Return a fatal error object that appends the hex values of 'result' as a string formatted argument. """ - return FatalError(message % ", ".join(hex(ord(x)) for x in result)) + message += " (result was %s)" % hexify(result) + return FatalError(message) +class NotImplementedInROMError(FatalError): + """ + Wrapper class for the error thrown when a particular ESP bootloader function + is not implemented in the ROM bootloader. + """ + def __init__(self, bootloader, func): + FatalError.__init__(self, "%s ROM does not support function %s." % (bootloader.CHIP_NAME, func.__name__)) + + +class NotSupportedError(FatalError): + def __init__(self, esp, function_name): + FatalError.__init__(self, "Function %s is not supported for %s." % (function_name, esp.CHIP_NAME)) + # "Operation" commands, executable at command line. One function each # -# Each function takes either two args (, ) or a single +# Each function takes either two args (, ) or a single # argument. -def load_ram(esp, args): - image = LoadFirmwareImage(args.filename) - print 'RAM boot...' - for (offset, size, data) in image.segments: - print 'Downloading %d bytes at %08x...' % (size, offset), +class UnsupportedCommandError(RuntimeError): + """ + Wrapper class for when ROM loader returns an invalid command response. + + Usually this indicates the loader is running in Secure Download Mode. + """ + def __init__(self, esp, op): + if esp.secure_download_mode: + msg = "This command (0x%x) is not supported in Secure Download Mode" % op + else: + msg = "Invalid (unsupported) command 0x%x" % op + RuntimeError.__init__(self, msg) + + +def load_ram(esp, args): + image = LoadFirmwareImage(esp.CHIP_NAME, args.filename) + + print('RAM boot...') + for seg in image.segments: + size = len(seg.data) + print('Downloading %d bytes at %08x...' % (size, seg.addr), end=' ') sys.stdout.flush() - esp.mem_begin(size, div_roundup(size, esp.ESP_RAM_BLOCK), esp.ESP_RAM_BLOCK, offset) + esp.mem_begin(size, div_roundup(size, esp.ESP_RAM_BLOCK), esp.ESP_RAM_BLOCK, seg.addr) seq = 0 - while len(data) > 0: - esp.mem_block(data[0:esp.ESP_RAM_BLOCK], seq) - data = data[esp.ESP_RAM_BLOCK:] + while len(seg.data) > 0: + esp.mem_block(seg.data[0:esp.ESP_RAM_BLOCK], seq) + seg.data = seg.data[esp.ESP_RAM_BLOCK:] seq += 1 - print 'done!' + print('done!') - print 'All segments done, executing at %08x' % image.entrypoint + print('All segments done, executing at %08x' % image.entrypoint) esp.mem_finish(image.entrypoint) def read_mem(esp, args): - print '0x%08x = 0x%08x' % (args.address, esp.read_reg(args.address)) + print('0x%08x = 0x%08x' % (args.address, esp.read_reg(args.address))) def write_mem(esp, args): esp.write_reg(args.address, args.value, args.mask, 0) - print 'Wrote %08x, mask %08x to %08x' % (args.value, args.mask, args.address) + print('Wrote %08x, mask %08x to %08x' % (args.value, args.mask, args.address)) def dump_mem(esp, args): - f = file(args.filename, 'wb') - for i in xrange(args.size / 4): - d = esp.read_reg(args.address + (i * 4)) - f.write(struct.pack('> 16 + args.flash_size = DETECTED_FLASH_SIZES.get(size_id) + if args.flash_size is None: + print('Warning: Could not auto-detect Flash size (FlashID=0x%x, SizeID=0x%x), defaulting to 4MB' % (flash_id, size_id)) + args.flash_size = '4MB' + else: + print('Auto-detected Flash size:', args.flash_size) + + +def _update_image_flash_params(esp, address, args, image): + """ Modify the flash mode & size bytes if this looks like an executable bootloader image """ + if len(image) < 8: + return image # not long enough to be a bootloader image + + # unpack the (potential) image header + magic, _, flash_mode, flash_size_freq = struct.unpack("BBBB", image[:4]) + if address != esp.BOOTLOADER_FLASH_OFFSET: + return image # not flashing bootloader offset, so don't modify this + + if (args.flash_mode, args.flash_freq, args.flash_size) == ('keep',) * 3: + return image # all settings are 'keep', not modifying anything + + # easy check if this is an image: does it start with a magic byte? + if magic != esp.ESP_IMAGE_MAGIC: + print("Warning: Image file at 0x%x doesn't look like an image file, so not changing any flash settings." % address) + return image + + # make sure this really is an image, and not just data that + # starts with esp.ESP_IMAGE_MAGIC (mostly a problem for encrypted + # images that happen to start with a magic byte + try: + test_image = esp.BOOTLOADER_IMAGE(io.BytesIO(image)) + test_image.verify() + except Exception: + print("Warning: Image file at 0x%x is not a valid %s image, so not changing any flash settings." % (address, esp.CHIP_NAME)) + return image + + if args.flash_mode != 'keep': + flash_mode = {'qio': 0, 'qout': 1, 'dio': 2, 'dout': 3}[args.flash_mode] + + flash_freq = flash_size_freq & 0x0F + if args.flash_freq != 'keep': + flash_freq = {'40m': 0, '26m': 1, '20m': 2, '80m': 0xf}[args.flash_freq] + + flash_size = flash_size_freq & 0xF0 + if args.flash_size != 'keep': + flash_size = esp.parse_flash_size_arg(args.flash_size) + + flash_params = struct.pack(b'BB', flash_mode, flash_size + flash_freq) + if flash_params != image[2:4]: + print('Flash params set to 0x%04x' % struct.unpack(">H", flash_params)) + image = image[0:2] + flash_params + image[4:] + return image def write_flash(esp, args): - flash_mode = {'qio':0, 'qout':1, 'dio':2, 'dout': 3}[args.flash_mode] - flash_size_freq = {'4m':0x00, '2m':0x10, '8m':0x20, '16m':0x30, '32m':0x40, '16m-c1': 0x50, '32m-c1':0x60, '32m-c2':0x70, '64m':0x80, '128m':0x90}[args.flash_size] - flash_size_freq += {'40m':0, '26m':1, '20m':2, '80m': 0xf}[args.flash_freq] - flash_params = struct.pack('BB', flash_mode, flash_size_freq) + # set args.compress based on default behaviour: + # -> if either --compress or --no-compress is set, honour that + # -> otherwise, set --compress unless --no-stub is set + if args.compress is None and not args.no_compress: + args.compress = not args.no_stub - flasher = CesantaFlasher(esp, args.baud) + # In case we have encrypted files to write, we first do few sanity checks before actual flash + if args.encrypt or args.encrypt_files is not None: + do_write = True - for address, argfile in args.addr_filename: - image = argfile.read() - argfile.seek(0) # rewind in case we need it again - # Fix sflash config data. - if address == 0 and image[0] == '\xe9': - print 'Flash params set to 0x%02x%02x' % (flash_mode, flash_size_freq) - image = image[0:2] + flash_params + image[4:] - # Pad to sector size, which is the minimum unit of writing (erasing really). - if len(image) % esp.ESP_FLASH_SECTOR != 0: - image += '\xff' * (esp.ESP_FLASH_SECTOR - (len(image) % esp.ESP_FLASH_SECTOR)) + if not esp.secure_download_mode: + if esp.get_encrypted_download_disabled(): + raise FatalError("This chip has encrypt functionality in UART download mode disabled. " + "This is the Flash Encryption configuration for Production mode instead of Development mode.") + + crypt_cfg_efuse = esp.get_flash_crypt_config() + + if crypt_cfg_efuse is not None and crypt_cfg_efuse != 0xF: + print('Unexpected FLASH_CRYPT_CONFIG value: 0x%x' % (crypt_cfg_efuse)) + do_write = False + + enc_key_valid = esp.is_flash_encryption_key_valid() + + if not enc_key_valid: + print('Flash encryption key is not programmed') + do_write = False + + # Determine which files list contain the ones to encrypt + files_to_encrypt = args.addr_filename if args.encrypt else args.encrypt_files + + for address, argfile in files_to_encrypt: + if address % esp.FLASH_ENCRYPTED_WRITE_ALIGN: + print("File %s address 0x%x is not %d byte aligned, can't flash encrypted" % + (argfile.name, address, esp.FLASH_ENCRYPTED_WRITE_ALIGN)) + do_write = False + + if not do_write and not args.ignore_flash_encryption_efuse_setting: + raise FatalError("Can't perform encrypted flash write, consult Flash Encryption documentation for more information") + + # verify file sizes fit in flash + if args.flash_size != 'keep': # TODO: check this even with 'keep' + flash_end = flash_size_bytes(args.flash_size) + for address, argfile in args.addr_filename: + argfile.seek(0, 2) # seek to end + if address + argfile.tell() > flash_end: + raise FatalError(("File %s (length %d) at offset %d will not fit in %d bytes of flash. " + "Use --flash-size argument, or change flashing address.") + % (argfile.name, argfile.tell(), address, flash_end)) + argfile.seek(0) + + if args.erase_all: + erase_flash(esp, args) + + """ Create a list describing all the files we have to flash. Each entry holds an "encrypt" flag + marking whether the file needs encryption or not. This list needs to be sorted. + + First, append to each entry of our addr_filename list the flag args.encrypt + For example, if addr_filename is [(0x1000, "partition.bin"), (0x8000, "bootloader")], + all_files will be [(0x1000, "partition.bin", args.encrypt), (0x8000, "bootloader", args.encrypt)], + where, of course, args.encrypt is either True or False + """ + all_files = [(offs, filename, args.encrypt) for (offs, filename) in args.addr_filename] + + """Now do the same with encrypt_files list, if defined. + In this case, the flag is True + """ + if args.encrypt_files is not None: + encrypted_files_flag = [(offs, filename, True) for (offs, filename) in args.encrypt_files] + + # Concatenate both lists and sort them. + # As both list are already sorted, we could simply do a merge instead, + # but for the sake of simplicity and because the lists are very small, + # let's use sorted. + all_files = sorted(all_files + encrypted_files_flag, key=lambda x: x[0]) + + for address, argfile, encrypted in all_files: + compress = args.compress + + # Check whether we can compress the current file before flashing + if compress and encrypted: + print('\nWARNING: - compress and encrypt options are mutually exclusive ') + print('Will flash %s uncompressed' % argfile.name) + compress = False + + if args.no_stub: + print('Erasing flash...') + image = pad_to(argfile.read(), esp.FLASH_ENCRYPTED_WRITE_ALIGN if encrypted else 4) + if len(image) == 0: + print('WARNING: File %s is empty' % argfile.name) + continue + image = _update_image_flash_params(esp, address, args, image) + calcmd5 = hashlib.md5(image).hexdigest() + uncsize = len(image) + if compress: + uncimage = image + image = zlib.compress(uncimage, 9) + blocks = esp.flash_defl_begin(uncsize, len(image), address) + else: + blocks = esp.flash_begin(uncsize, address, begin_rom_encrypted=encrypted) + argfile.seek(0) # in case we need it again + seq = 0 + written = 0 t = time.time() - flasher.flash_write(address, image, not args.no_progress) + while len(image) > 0: + print_overwrite('Writing at 0x%08x... (%d %%)' % (address + seq * esp.FLASH_WRITE_SIZE, 100 * (seq + 1) // blocks)) + sys.stdout.flush() + block = image[0:esp.FLASH_WRITE_SIZE] + if compress: + esp.flash_defl_block(block, seq, timeout=timeout_per_mb(COMP_BLOCK_WRITE_TIMEOUT_PER_MB, uncsize)) + else: + # Pad the last block + block = block + b'\xff' * (esp.FLASH_WRITE_SIZE - len(block)) + if encrypted: + esp.flash_encrypt_block(block, seq) + else: + esp.flash_block(block, seq) + image = image[esp.FLASH_WRITE_SIZE:] + seq += 1 + written += len(block) t = time.time() - t - print ('\rWrote %d bytes at 0x%x in %.1f seconds (%.1f kbit/s)...' - % (len(image), address, t, len(image) / t * 8 / 1000)) - print 'Leaving...' + speed_msg = "" + if compress: + if t > 0.0: + speed_msg = " (effective %.1f kbit/s)" % (uncsize / t * 8 / 1000) + print_overwrite('Wrote %d bytes (%d compressed) at 0x%08x in %.1f seconds%s...' % (uncsize, written, address, t, speed_msg), last_line=True) + else: + if t > 0.0: + speed_msg = " (%.1f kbit/s)" % (written / t * 8 / 1000) + print_overwrite('Wrote %d bytes at 0x%08x in %.1f seconds%s...' % (written, address, t, speed_msg), last_line=True) + + if not encrypted and not esp.secure_download_mode: + try: + res = esp.flash_md5sum(address, uncsize) + if res != calcmd5: + print('File md5: %s' % calcmd5) + print('Flash md5: %s' % res) + print('MD5 of 0xFF is %s' % (hashlib.md5(b'\xFF' * uncsize).hexdigest())) + raise FatalError("MD5 of file does not match data in flash!") + else: + print('Hash of data verified.') + except NotImplementedInROMError: + pass + + print('\nLeaving...') + + if esp.IS_STUB: + # skip sending flash_finish to ROM loader here, + # as it causes the loader to exit and run user code + esp.flash_begin(0, 0) + + # Get the "encrypted" flag for the last file flashed + # Note: all_files list contains triplets like: + # (address: Integer, filename: String, encrypted: Boolean) + last_file_encrypted = all_files[-1][2] + + # Check whether the last file flashed was compressed or not + if args.compress and not last_file_encrypted: + esp.flash_defl_finish(False) + else: + esp.flash_finish(False) + if args.verify: - print 'Verifying just-written flash...' - _verify_flash(flasher, args, flash_params) - flasher.boot_fw() + print('Verifying just-written flash...') + print('(This option is deprecated, flash contents are now always read back after flashing.)') + # If some encrypted files have been flashed print a warning saying that we won't check them + if args.encrypt or args.encrypt_files is not None: + print('WARNING: - cannot verify encrypted files, they will be ignored') + # Call verify_flash function only if there at least one non-encrypted file flashed + if not args.encrypt: + verify_flash(esp, args) def image_info(args): - image = LoadFirmwareImage(args.filename) + image = LoadFirmwareImage(args.chip, args.filename) print('Image version: %d' % image.version) - print('Entry point: %08x' % image.entrypoint) if image.entrypoint != 0 else 'Entry point not set' - print '%d segments' % len(image.segments) - print - checksum = ESPROM.ESP_CHECKSUM_MAGIC - for (idx, (offset, size, data)) in enumerate(image.segments): - if image.version == 2 and idx == 0: - print 'Segment 1: %d bytes IROM0 (no load address)' % size - else: - print 'Segment %d: %5d bytes at %08x' % (idx + 1, size, offset) - checksum = ESPROM.checksum(data, checksum) - print - print 'Checksum: %02x (%s)' % (image.checksum, 'valid' if image.checksum == checksum else 'invalid!') + print('Entry point: %08x' % image.entrypoint if image.entrypoint != 0 else 'Entry point not set') + print('%d segments' % len(image.segments)) + print() + idx = 0 + for seg in image.segments: + idx += 1 + seg_name = ", ".join([seg_range[2] for seg_range in image.ROM_LOADER.MEMORY_MAP if seg_range[0] <= seg.addr < seg_range[1]]) + print('Segment %d: %r [%s]' % (idx, seg, seg_name)) + calc_checksum = image.calculate_checksum() + print('Checksum: %02x (%s)' % (image.checksum, + 'valid' if image.checksum == calc_checksum else 'invalid - calculated %02x' % calc_checksum)) + try: + digest_msg = 'Not appended' + if image.append_digest: + is_valid = image.stored_digest == image.calc_digest + digest_msg = "%s (%s)" % (hexify(image.calc_digest).lower(), + "valid" if is_valid else "invalid") + print('Validation Hash: %s' % digest_msg) + except AttributeError: + pass # ESP8266 image has no append_digest field def make_image(args): - image = ESPFirmwareImage() + image = ESP8266ROMFirmwareImage() if len(args.segfile) == 0: raise FatalError('No segments specified') if len(args.segfile) != len(args.segaddr): raise FatalError('Number of specified files does not match number of specified addresses') for (seg, addr) in zip(args.segfile, args.segaddr): - data = file(seg, 'rb').read() - image.add_segment(addr, data) + with open(seg, 'rb') as f: + data = f.read() + image.segments.append(ImageSegment(addr, data)) image.entrypoint = args.entrypoint image.save(args.output) def elf2image(args): e = ELFFile(args.input) - if args.version == '1': - image = ESPFirmwareImage() + if args.chip == 'auto': # Default to ESP8266 for backwards compatibility + print("Creating image for ESP8266...") + args.chip = 'esp8266' + + if args.chip == 'esp32': + image = ESP32FirmwareImage() + if args.secure_pad: + image.secure_pad = '1' + elif args.secure_pad_v2: + image.secure_pad = '2' + image.min_rev = int(args.min_rev) + elif args.chip == 'esp32s2': + image = ESP32S2FirmwareImage() + if args.secure_pad_v2: + image.secure_pad = '2' + image.min_rev = 0 + elif args.chip == 'esp32s3beta2': + image = ESP32S3BETA2FirmwareImage() + if args.secure_pad_v2: + image.secure_pad = '2' + image.min_rev = 0 + elif args.chip == 'esp32c3': + image = ESP32C3FirmwareImage() + if args.secure_pad_v2: + image.secure_pad = '2' + image.min_rev = 0 + elif args.version == '1': # ESP8266 + image = ESP8266ROMFirmwareImage() else: - image = OTAFirmwareImage() - irom_data = e.load_section('.irom0.text') - if len(irom_data) == 0: - raise FatalError(".irom0.text section not found in ELF file - can't create V2 image.") - image.add_segment(0, irom_data, 16) - image.entrypoint = e.get_entry_point() - for section, start in ((".text", "_text_start"), (".data", "_data_start"), (".rodata", "_rodata_start")): - data = e.load_section(section) - image.add_segment(e.get_symbol_addr(start), data) + image = ESP8266V2FirmwareImage() + image.entrypoint = e.entrypoint + image.segments = e.sections # ELFSection is a subclass of ImageSegment + image.flash_mode = {'qio': 0, 'qout': 1, 'dio': 2, 'dout': 3}[args.flash_mode] + image.flash_size_freq = image.ROM_LOADER.FLASH_SIZES[args.flash_size] + image.flash_size_freq += {'40m': 0, '26m': 1, '20m': 2, '80m': 0xf}[args.flash_freq] - image.flash_mode = {'qio':0, 'qout':1, 'dio':2, 'dout': 3}[args.flash_mode] - image.flash_size_freq = {'4m':0x00, '2m':0x10, '8m':0x20, '16m':0x30, '32m':0x40, '16m-c1': 0x50, '32m-c1':0x60, '32m-c2':0x70, '64m':0x80, '128m':0x90}[args.flash_size] - image.flash_size_freq += {'40m':0, '26m':1, '20m':2, '80m': 0xf}[args.flash_freq] + if args.elf_sha256_offset: + image.elf_sha256 = e.sha256() + image.elf_sha256_offset = args.elf_sha256_offset - irom_offs = e.get_symbol_addr("_irom0_text_start") - 0x40200000 + image.verify() - if args.version == '1': - if args.output is None: - args.output = args.input + '-' - image.save(args.output + "0x00000.bin") - data = e.load_section(".irom0.text") - if irom_offs < 0: - raise FatalError('Address of symbol _irom0_text_start in ELF is located before flash mapping address. Bad linker script?') - if (irom_offs & 0xFFF) != 0: # irom0 isn't flash sector aligned - print "WARNING: irom0 section offset is 0x%08x. ELF is probably linked for 'elf2image --version=2'" % irom_offs - with open(args.output + "0x%05x.bin" % irom_offs, "wb") as f: - f.write(data) - f.close() - else: # V2 OTA image - if args.output is None: - args.output = "%s-0x%05x.bin" % (os.path.splitext(args.input)[0], irom_offs & ~(ESPROM.ESP_FLASH_SECTOR - 1)) - image.save(args.output) + if args.output is None: + args.output = image.default_output_name(args.input) + image.save(args.output) def read_mac(esp, args): mac = esp.read_mac() - print 'MAC: %s' % ':'.join(map(lambda x: '%02x' % x, mac)) + + def print_mac(label, mac): + print('%s: %s' % (label, ':'.join(map(lambda x: '%02x' % x, mac)))) + print_mac("MAC", mac) def chip_id(esp, args): - chipid = esp.chip_id() - print 'Chip ID: 0x%08x' % chipid + try: + chipid = esp.chip_id() + print('Chip ID: 0x%08x' % chipid) + except NotSupportedError: + print('Warning: %s has no Chip ID. Reading MAC instead.' % esp.CHIP_NAME) + read_mac(esp, args) def erase_flash(esp, args): - print 'Erasing flash (this may take a while)...' - esp.flash_erase() + print('Erasing flash (this may take a while)...') + t = time.time() + esp.erase_flash() + print('Chip erase completed successfully in %.1fs' % (time.time() - t)) + + +def erase_region(esp, args): + print('Erasing region (may be slow depending on size)...') + t = time.time() + esp.erase_region(args.address, args.size) + print('Erase completed successfully in %.1f seconds.' % (time.time() - t)) def run(esp, args): @@ -942,83 +3200,170 @@ def run(esp, args): def flash_id(esp, args): flash_id = esp.flash_id() - print 'Manufacturer: %02x' % (flash_id & 0xff) - print 'Device: %02x%02x' % ((flash_id >> 8) & 0xff, (flash_id >> 16) & 0xff) + print('Manufacturer: %02x' % (flash_id & 0xff)) + flid_lowbyte = (flash_id >> 16) & 0xFF + print('Device: %02x%02x' % ((flash_id >> 8) & 0xff, flid_lowbyte)) + print('Detected flash size: %s' % (DETECTED_FLASH_SIZES.get(flid_lowbyte, "Unknown"))) def read_flash(esp, args): - flasher = CesantaFlasher(esp, args.baud) + if args.no_progress: + flash_progress = None + else: + def flash_progress(progress, length): + msg = '%d (%d %%)' % (progress, progress * 100.0 / length) + padding = '\b' * len(msg) + if progress == length: + padding = '\n' + sys.stdout.write(msg + padding) + sys.stdout.flush() t = time.time() - data = flasher.flash_read(args.address, args.size, not args.no_progress) + data = esp.read_flash(args.address, args.size, flash_progress) t = time.time() - t - print ('\rRead %d bytes at 0x%x in %.1f seconds (%.1f kbit/s)...' - % (len(data), args.address, t, len(data) / t * 8 / 1000)) - file(args.filename, 'wb').write(data) + print_overwrite('Read %d bytes at 0x%x in %.1f seconds (%.1f kbit/s)...' + % (len(data), args.address, t, len(data) / t * 8 / 1000), last_line=True) + with open(args.filename, 'wb') as f: + f.write(data) -def _verify_flash(flasher, args, flash_params=None): +def verify_flash(esp, args): differences = False + for address, argfile in args.addr_filename: - image = argfile.read() + image = pad_to(argfile.read(), 4) argfile.seek(0) # rewind in case we need it again - if address == 0 and image[0] == '\xe9' and flash_params is not None: - image = image[0:2] + flash_params + image[4:] + + image = _update_image_flash_params(esp, address, args, image) + image_size = len(image) - print 'Verifying 0x%x (%d) bytes @ 0x%08x in flash against %s...' % (image_size, image_size, address, argfile.name) + print('Verifying 0x%x (%d) bytes @ 0x%08x in flash against %s...' % (image_size, image_size, address, argfile.name)) # Try digest first, only read if there are differences. - digest, _ = flasher.flash_digest(address, image_size) - digest = hexify(digest).upper() - expected_digest = hashlib.md5(image).hexdigest().upper() + digest = esp.flash_md5sum(address, image_size) + expected_digest = hashlib.md5(image).hexdigest() if digest == expected_digest: - print '-- verify OK (digest matched)' + print('-- verify OK (digest matched)') continue else: differences = True if getattr(args, 'diff', 'no') != 'yes': - print '-- verify FAILED (digest mismatch)' + print('-- verify FAILED (digest mismatch)') continue - flash = flasher.flash_read(address, image_size) + flash = esp.read_flash(address, image_size) assert flash != image - diff = [i for i in xrange(image_size) if flash[i] != image[i]] - print '-- verify FAILED: %d differences, first @ 0x%08x' % (len(diff), address + diff[0]) + diff = [i for i in range(image_size) if flash[i] != image[i]] + print('-- verify FAILED: %d differences, first @ 0x%08x' % (len(diff), address + diff[0])) for d in diff: - print ' %08x %02x %02x' % (address + d, ord(flash[d]), ord(image[d])) + flash_byte = flash[d] + image_byte = image[d] + if PYTHON2: + flash_byte = ord(flash_byte) + image_byte = ord(image_byte) + print(' %08x %02x %02x' % (address + d, flash_byte, image_byte)) if differences: raise FatalError("Verify failed.") -def verify_flash(esp, args, flash_params=None): - flasher = CesantaFlasher(esp) - _verify_flash(flasher, args, flash_params) +def read_flash_status(esp, args): + print('Status value: 0x%04x' % esp.read_status(args.bytes)) + + +def write_flash_status(esp, args): + fmt = "0x%%0%dx" % (args.bytes * 2) + args.value = args.value & ((1 << (args.bytes * 8)) - 1) + print(('Initial flash status: ' + fmt) % esp.read_status(args.bytes)) + print(('Setting flash status: ' + fmt) % args.value) + esp.write_status(args.value, args.bytes, args.non_volatile) + print(('After flash status: ' + fmt) % esp.read_status(args.bytes)) + + +def get_security_info(esp, args): + (flags, flash_crypt_cnt, key_purposes) = esp.get_security_info() + # TODO: better display + print('Flags: 0x%08x (%s)' % (flags, bin(flags))) + print('Flash_Crypt_Cnt: 0x%x' % flash_crypt_cnt) + print('Key_Purposes: %s' % (key_purposes,)) def version(args): - print __version__ + print(__version__) # # End of operations functions # -def main(): +def main(custom_commandline=None): + """ + Main function for esptool + + custom_commandline - Optional override for default arguments parsing (that uses sys.argv), can be a list of custom arguments + as strings. Arguments and their values need to be added as individual items to the list e.g. "-b 115200" thus + becomes ['-b', '115200']. + """ parser = argparse.ArgumentParser(description='esptool.py v%s - ESP8266 ROM Bootloader Utility' % __version__, prog='esptool') + parser.add_argument('--chip', '-c', + help='Target chip type', + type=lambda c: c.lower().replace('-', ''), # support ESP32-S2, etc. + choices=['auto', 'esp8266', 'esp32', 'esp32s2', 'esp32s3beta2', 'esp32c3'], + default=os.environ.get('ESPTOOL_CHIP', 'auto')) + parser.add_argument( '--port', '-p', help='Serial port device', - default=os.environ.get('ESPTOOL_PORT', '/dev/ttyUSB0')) + default=os.environ.get('ESPTOOL_PORT', None)) parser.add_argument( '--baud', '-b', help='Serial port baud rate used when flashing/reading', type=arg_auto_int, - default=os.environ.get('ESPTOOL_BAUD', ESPROM.ESP_ROM_BAUD)) + default=os.environ.get('ESPTOOL_BAUD', ESPLoader.ESP_ROM_BAUD)) + + parser.add_argument( + '--before', + help='What to do before connecting to the chip', + choices=['default_reset', 'no_reset', 'no_reset_no_sync'], + default=os.environ.get('ESPTOOL_BEFORE', 'default_reset')) + + parser.add_argument( + '--after', '-a', + help='What to do after esptool.py is finished', + choices=['hard_reset', 'soft_reset', 'no_reset'], + default=os.environ.get('ESPTOOL_AFTER', 'hard_reset')) + + parser.add_argument( + '--no-stub', + help="Disable launching the flasher stub, only talk to ROM bootloader. Some features will not be available.", + action='store_true') + + parser.add_argument( + '--trace', '-t', + help="Enable trace-level output of esptool.py interactions.", + action='store_true') + + parser.add_argument( + '--override-vddsdio', + help="Override ESP32 VDDSDIO internal voltage regulator (use with care)", + choices=ESP32ROM.OVERRIDE_VDDSDIO_CHOICES, + nargs='?') + + parser.add_argument( + '--connect-attempts', + help=('Number of attempts to connect, negative or 0 for infinite. ' + 'Default: %d.' % DEFAULT_CONNECT_ATTEMPTS), + type=int, + default=os.environ.get('ESPTOOL_CONNECT_ATTEMPTS', DEFAULT_CONNECT_ATTEMPTS)) subparsers = parser.add_subparsers( dest='operation', help='Run esptool {command} -h for additional help') + def add_spi_connection_arg(parent): + parent.add_argument('--spi-connection', '-sc', help='ESP32-only argument. Override default SPI Flash connection. ' + 'Value can be SPI, HSPI or a comma-separated list of 5 I/O numbers to use for SPI flash (CLK,Q,D,HD,CS).', + action=SpiConnectionAction) + parser_load_ram = subparsers.add_parser( 'load_ram', help='Download an image to RAM and execute') @@ -1043,26 +3388,56 @@ def main(): parser_write_mem.add_argument('value', help='Value', type=arg_auto_int) parser_write_mem.add_argument('mask', help='Mask of bits to write', type=arg_auto_int) - def add_spi_flash_subparsers(parent): + def add_spi_flash_subparsers(parent, is_elf2image): """ Add common parser arguments for SPI flash properties """ + extra_keep_args = [] if is_elf2image else ['keep'] + auto_detect = not is_elf2image + + if auto_detect: + extra_fs_message = ", detect, or keep" + else: + extra_fs_message = "" + parent.add_argument('--flash_freq', '-ff', help='SPI Flash frequency', - choices=['40m', '26m', '20m', '80m'], - default=os.environ.get('ESPTOOL_FF', '40m')) + choices=extra_keep_args + ['40m', '26m', '20m', '80m'], + default=os.environ.get('ESPTOOL_FF', '40m' if is_elf2image else 'keep')) parent.add_argument('--flash_mode', '-fm', help='SPI Flash mode', - choices=['qio', 'qout', 'dio', 'dout'], - default=os.environ.get('ESPTOOL_FM', 'qio')) - parent.add_argument('--flash_size', '-fs', help='SPI Flash size in Mbit', type=str.lower, - choices=['4m', '2m', '8m', '16m', '32m', '16m-c1', '32m-c1', '32m-c2', '64m', '128m'], - default=os.environ.get('ESPTOOL_FS', '4m')) + choices=extra_keep_args + ['qio', 'qout', 'dio', 'dout'], + default=os.environ.get('ESPTOOL_FM', 'qio' if is_elf2image else 'keep')) + parent.add_argument('--flash_size', '-fs', help='SPI Flash size in MegaBytes (1MB, 2MB, 4MB, 8MB, 16M)' + ' plus ESP8266-only (256KB, 512KB, 2MB-c1, 4MB-c1)' + extra_fs_message, + action=FlashSizeAction, auto_detect=auto_detect, + default=os.environ.get('ESPTOOL_FS', '1MB' if is_elf2image else 'keep')) + add_spi_connection_arg(parent) parser_write_flash = subparsers.add_parser( 'write_flash', help='Write a binary blob to flash') + parser_write_flash.add_argument('addr_filename', metavar='
', help='Address followed by binary filename, separated by space', action=AddrFilenamePairAction) - add_spi_flash_subparsers(parser_write_flash) + parser_write_flash.add_argument('--erase-all', '-e', + help='Erase all regions of flash (not just write areas) before programming', + action="store_true") + + add_spi_flash_subparsers(parser_write_flash, is_elf2image=False) parser_write_flash.add_argument('--no-progress', '-p', help='Suppress progress output', action="store_true") - parser_write_flash.add_argument('--verify', help='Verify just-written data (only necessary if very cautious, data is already CRCed', action='store_true') + parser_write_flash.add_argument('--verify', help='Verify just-written data on flash ' + '(mostly superfluous, data is read back during flashing)', action='store_true') + parser_write_flash.add_argument('--encrypt', help='Apply flash encryption when writing data (required correct efuse settings)', + action='store_true') + # In order to not break backward compatibility, our list of encrypted files to flash is a new parameter + parser_write_flash.add_argument('--encrypt-files', metavar='
', + help='Files to be encrypted on the flash. Address followed by binary filename, separated by space.', + action=AddrFilenamePairAction) + parser_write_flash.add_argument('--ignore-flash-encryption-efuse-setting', help='Ignore flash encryption efuse settings ', + action='store_true') + + compress_args = parser_write_flash.add_mutually_exclusive_group(required=False) + compress_args.add_argument('--compress', '-z', help='Compress data in transfer (default unless --no-stub is specified)', + action="store_true", default=None) + compress_args.add_argument('--no-compress', '-u', help='Disable data compression during transfer (default if --no-stub is specified)', + action="store_true") subparsers.add_parser( 'run', @@ -1086,8 +3461,17 @@ def main(): help='Create an application image from ELF file') parser_elf2image.add_argument('input', help='Input ELF file') parser_elf2image.add_argument('--output', '-o', help='Output filename prefix (for version 1 image), or filename (for version 2 single image)', type=str) - parser_elf2image.add_argument('--version', '-e', help='Output image version', choices=['1','2'], default='1') - add_spi_flash_subparsers(parser_elf2image) + parser_elf2image.add_argument('--version', '-e', help='Output image version', choices=['1', '2'], default='1') + parser_elf2image.add_argument('--min-rev', '-r', help='Minimum chip revision', choices=['0', '1', '2', '3'], default='0') + parser_elf2image.add_argument('--secure-pad', action='store_true', + help='Pad image so once signed it will end on a 64KB boundary. For Secure Boot v1 images only.') + parser_elf2image.add_argument('--secure-pad-v2', action='store_true', + help='Pad image to 64KB, so once signed its signature sector will start at the next 64K block. ' + 'For Secure Boot v2 images only.') + parser_elf2image.add_argument('--elf-sha256-offset', help='If set, insert SHA256 hash (32 bytes) of the input ELF file at specified offset in the binary.', + type=arg_auto_int, default=None) + + add_spi_flash_subparsers(parser_elf2image, is_elf2image=True) subparsers.add_parser( 'read_mac', @@ -1097,13 +3481,31 @@ def main(): 'chip_id', help='Read Chip ID from OTP ROM') - subparsers.add_parser( + parser_flash_id = subparsers.add_parser( 'flash_id', help='Read SPI flash manufacturer and device ID') + add_spi_connection_arg(parser_flash_id) + + parser_read_status = subparsers.add_parser( + 'read_flash_status', + help='Read SPI flash status register') + + add_spi_connection_arg(parser_read_status) + parser_read_status.add_argument('--bytes', help='Number of bytes to read (1-3)', type=int, choices=[1, 2, 3], default=2) + + parser_write_status = subparsers.add_parser( + 'write_flash_status', + help='Write SPI flash status register') + + add_spi_connection_arg(parser_write_status) + parser_write_status.add_argument('--non-volatile', help='Write non-volatile bits (use with caution)', action='store_true') + parser_write_status.add_argument('--bytes', help='Number of status bytes to write (1-3)', type=int, choices=[1, 2, 3], default=2) + parser_write_status.add_argument('value', help='New value', type=arg_auto_int) parser_read_flash = subparsers.add_parser( 'read_flash', help='Read SPI flash content') + add_spi_connection_arg(parser_read_flash) parser_read_flash.add_argument('address', help='Start address', type=arg_auto_int) parser_read_flash.add_argument('size', help='Size of region to dump', type=arg_auto_int) parser_read_flash.add_argument('filename', help='Name of binary dump') @@ -1116,36 +3518,252 @@ def main(): action=AddrFilenamePairAction) parser_verify_flash.add_argument('--diff', '-d', help='Show differences', choices=['no', 'yes'], default='no') + add_spi_flash_subparsers(parser_verify_flash, is_elf2image=False) - subparsers.add_parser( + parser_erase_flash = subparsers.add_parser( 'erase_flash', help='Perform Chip Erase on SPI flash') + add_spi_connection_arg(parser_erase_flash) + + parser_erase_region = subparsers.add_parser( + 'erase_region', + help='Erase a region of the flash') + add_spi_connection_arg(parser_erase_region) + parser_erase_region.add_argument('address', help='Start address (must be multiple of 4096)', type=arg_auto_int) + parser_erase_region.add_argument('size', help='Size of region to erase (must be multiple of 4096)', type=arg_auto_int) subparsers.add_parser( 'version', help='Print esptool version') + subparsers.add_parser('get_security_info', help='Get some security-related data') + # internal sanity check - every operation matches a module function of the same name for operation in subparsers.choices.keys(): assert operation in globals(), "%s should be a module function" % operation - args = parser.parse_args() + expand_file_arguments() - print 'esptool.py v%s' % __version__ + args = parser.parse_args(custom_commandline) + print('esptool.py v%s' % __version__) # operation function can take 1 arg (args), 2 args (esp, arg) - # or be a member function of the ESPROM class. + # or be a member function of the ESPLoader class. + + if args.operation is None: + parser.print_help() + sys.exit(1) + + # Forbid the usage of both --encrypt, which means encrypt all the given files, + # and --encrypt-files, which represents the list of files to encrypt. + # The reason is that allowing both at the same time increases the chances of + # having contradictory lists (e.g. one file not available in one of list). + if args.operation == "write_flash" and args.encrypt and args.encrypt_files is not None: + raise FatalError("Options --encrypt and --encrypt-files must not be specified at the same time.") operation_func = globals()[args.operation] - operation_args,_,_,_ = inspect.getargspec(operation_func) - if operation_args[0] == 'esp': # operation function takes an ESPROM connection object - initial_baud = min(ESPROM.ESP_ROM_BAUD, args.baud) # don't sync faster than the default baud rate - esp = ESPROM(args.port, initial_baud) - esp.connect() - operation_func(esp, args) + + if PYTHON2: + # This function is depreciated in Python3 + operation_args = inspect.getargspec(operation_func).args + else: + operation_args = inspect.getfullargspec(operation_func).args + + if operation_args[0] == 'esp': # operation function takes an ESPLoader connection object + if args.before != "no_reset_no_sync": + initial_baud = min(ESPLoader.ESP_ROM_BAUD, args.baud) # don't sync faster than the default baud rate + else: + initial_baud = args.baud + + if args.port is None: + if list_ports is None: + raise FatalError("Listing all serial ports is currently not available on this operating system version. " + "Specify the port when running esptool.py") + ser_list = sorted(ports.device for ports in list_ports.comports()) + print("Found %d serial ports" % len(ser_list)) + else: + ser_list = [args.port] + esp = None + for each_port in reversed(ser_list): + print("Serial port %s" % each_port) + try: + if args.chip == 'auto': + esp = ESPLoader.detect_chip(each_port, initial_baud, args.before, args.trace, + args.connect_attempts) + else: + chip_class = { + 'esp8266': ESP8266ROM, + 'esp32': ESP32ROM, + 'esp32s2': ESP32S2ROM, + 'esp32s3beta2': ESP32S3BETA2ROM, + 'esp32c3': ESP32C3ROM, + }[args.chip] + esp = chip_class(each_port, initial_baud, args.trace) + esp.connect(args.before, args.connect_attempts) + break + except (FatalError, OSError) as err: + if args.port is not None: + raise + print("%s failed to connect: %s" % (each_port, err)) + esp = None + if esp is None: + raise FatalError("Could not connect to an Espressif device on any of the %d available serial ports." % len(ser_list)) + + if esp.secure_download_mode: + print("Chip is %s in Secure Download Mode" % esp.CHIP_NAME) + else: + print("Chip is %s" % (esp.get_chip_description())) + print("Features: %s" % ", ".join(esp.get_chip_features())) + print("Crystal is %dMHz" % esp.get_crystal_freq()) + read_mac(esp, args) + + if not args.no_stub: + if esp.secure_download_mode: + print("WARNING: Stub loader is not supported in Secure Download Mode, setting --no-stub") + args.no_stub = True + else: + esp = esp.run_stub() + + if args.override_vddsdio: + esp.override_vddsdio(args.override_vddsdio) + + if args.baud > initial_baud: + try: + esp.change_baud(args.baud) + except NotImplementedInROMError: + print("WARNING: ROM doesn't support changing baud rate. Keeping initial baud rate %d" % initial_baud) + + # override common SPI flash parameter stuff if configured to do so + if hasattr(args, "spi_connection") and args.spi_connection is not None: + if esp.CHIP_NAME != "ESP32": + raise FatalError("Chip %s does not support --spi-connection option." % esp.CHIP_NAME) + print("Configuring SPI flash mode...") + esp.flash_spi_attach(args.spi_connection) + elif args.no_stub: + print("Enabling default SPI flash mode...") + # ROM loader doesn't enable flash unless we explicitly do it + esp.flash_spi_attach(0) + + if hasattr(args, "flash_size"): + print("Configuring flash size...") + detect_flash_size(esp, args) + if args.flash_size != 'keep': # TODO: should set this even with 'keep' + esp.flash_set_parameters(flash_size_bytes(args.flash_size)) + + try: + operation_func(esp, args) + finally: + try: # Clean up AddrFilenamePairAction files + for address, argfile in args.addr_filename: + argfile.close() + except AttributeError: + pass + + # Handle post-operation behaviour (reset or other) + if operation_func == load_ram: + # the ESP is now running the loaded image, so let it run + print('Exiting immediately.') + elif args.after == 'hard_reset': + print('Hard resetting via RTS pin...') + esp.hard_reset() + elif args.after == 'soft_reset': + print('Soft resetting...') + # flash_finish will trigger a soft reset + esp.soft_reset(False) + else: + print('Staying in bootloader.') + if esp.IS_STUB: + esp.soft_reset(True) # exit stub back to ROM loader + + esp._port.close() + else: operation_func(args) +def expand_file_arguments(): + """ Any argument starting with "@" gets replaced with all values read from a text file. + Text file arguments can be split by newline or by space. + Values are added "as-is", as if they were specified in this order on the command line. + """ + new_args = [] + expanded = False + for arg in sys.argv: + if arg.startswith("@"): + expanded = True + with open(arg[1:], "r") as f: + for line in f.readlines(): + new_args += shlex.split(line) + else: + new_args.append(arg) + if expanded: + print("esptool.py %s" % (" ".join(new_args[1:]))) + sys.argv = new_args + + +class FlashSizeAction(argparse.Action): + """ Custom flash size parser class to support backwards compatibility with megabit size arguments. + + (At next major relase, remove deprecated sizes and this can become a 'normal' choices= argument again.) + """ + def __init__(self, option_strings, dest, nargs=1, auto_detect=False, **kwargs): + super(FlashSizeAction, self).__init__(option_strings, dest, nargs, **kwargs) + self._auto_detect = auto_detect + + def __call__(self, parser, namespace, values, option_string=None): + try: + value = { + '2m': '256KB', + '4m': '512KB', + '8m': '1MB', + '16m': '2MB', + '32m': '4MB', + '16m-c1': '2MB-c1', + '32m-c1': '4MB-c1', + }[values[0]] + print("WARNING: Flash size arguments in megabits like '%s' are deprecated." % (values[0])) + print("Please use the equivalent size '%s'." % (value)) + print("Megabit arguments may be removed in a future release.") + except KeyError: + value = values[0] + + known_sizes = dict(ESP8266ROM.FLASH_SIZES) + known_sizes.update(ESP32ROM.FLASH_SIZES) + if self._auto_detect: + known_sizes['detect'] = 'detect' + known_sizes['keep'] = 'keep' + if value not in known_sizes: + raise argparse.ArgumentError(self, '%s is not a known flash size. Known sizes: %s' % (value, ", ".join(known_sizes.keys()))) + setattr(namespace, self.dest, value) + + +class SpiConnectionAction(argparse.Action): + """ Custom action to parse 'spi connection' override. Values are SPI, HSPI, or a sequence of 5 pin numbers separated by commas. + """ + def __call__(self, parser, namespace, value, option_string=None): + if value.upper() == "SPI": + value = 0 + elif value.upper() == "HSPI": + value = 1 + elif "," in value: + values = value.split(",") + if len(values) != 5: + raise argparse.ArgumentError(self, '%s is not a valid list of comma-separate pin numbers. Must be 5 numbers - CLK,Q,D,HD,CS.' % value) + try: + values = tuple(int(v, 0) for v in values) + except ValueError: + raise argparse.ArgumentError(self, '%s is not a valid argument. All pins must be numeric values' % values) + if any([v for v in values if v > 33 or v < 0]): + raise argparse.ArgumentError(self, 'Pin numbers must be in the range 0-33.') + # encode the pin numbers as a 32-bit integer with packed 6-bit values, the same way ESP32 ROM takes them + # TODO: make this less ESP32 ROM specific somehow... + clk, q, d, hd, cs = values + value = (hd << 24) | (cs << 18) | (d << 12) | (q << 6) | clk + else: + raise argparse.ArgumentError(self, '%s is not a valid spi-connection value. ' + 'Values are SPI, HSPI, or a sequence of 5 pin numbers CLK,Q,D,HD,CS).' % value) + setattr(namespace, self.dest, value) + + class AddrFilenamePairAction(argparse.Action): """ Custom parser class for the address/filename pairs passed as arguments """ def __init__(self, option_strings, dest, nargs='+', **kwargs): @@ -1154,83 +3772,247 @@ class AddrFilenamePairAction(argparse.Action): def __call__(self, parser, namespace, values, option_string=None): # validate pair arguments pairs = [] - for i in range(0,len(values),2): + for i in range(0, len(values), 2): try: - address = int(values[i],0) - except ValueError as e: - raise argparse.ArgumentError(self,'Address "%s" must be a number' % values[i]) + address = int(values[i], 0) + except ValueError: + raise argparse.ArgumentError(self, 'Address "%s" must be a number' % values[i]) try: argfile = open(values[i + 1], 'rb') except IOError as e: raise argparse.ArgumentError(self, e) except IndexError: - raise argparse.ArgumentError(self,'Must be pairs of an address and the binary filename to write there') + raise argparse.ArgumentError(self, 'Must be pairs of an address and the binary filename to write there') pairs.append((address, argfile)) + + # Sort the addresses and check for overlapping + end = 0 + for address, argfile in sorted(pairs, key=lambda x: x[0]): + argfile.seek(0, 2) # seek to end + size = argfile.tell() + argfile.seek(0) + sector_start = address & ~(ESPLoader.FLASH_SECTOR_SIZE - 1) + sector_end = ((address + size + ESPLoader.FLASH_SECTOR_SIZE - 1) & ~(ESPLoader.FLASH_SECTOR_SIZE - 1)) - 1 + if sector_start < end: + message = 'Detected overlap at address: 0x%x for file: %s' % (address, argfile.name) + raise argparse.ArgumentError(self, message) + end = sector_end setattr(namespace, self.dest, pairs) -# This is "wrapped" stub_flasher.c, to be loaded using run_stub. -_CESANTA_FLASHER_STUB = """\ -{"code_start": 1074790404, "code": "080000601C000060000000601000006031FCFF71FCFF\ -81FCFFC02000680332D218C020004807404074DCC48608005823C0200098081BA5A9239245005803\ -1B555903582337350129230B446604DFC6F3FF21EEFFC0200069020DF0000000010078480040004A\ -0040B449004012C1F0C921D911E901DD0209312020B4ED033C2C56C2073020B43C3C56420701F5FF\ -C000003C4C569206CD0EEADD860300202C4101F1FFC0000056A204C2DCF0C02DC0CC6CCAE2D1EAFF\ -0606002030F456D3FD86FBFF00002020F501E8FFC00000EC82D0CCC0C02EC0C73DEB2ADC46030020\ -2C4101E1FFC00000DC42C2DCF0C02DC056BCFEC602003C5C8601003C6C4600003C7C08312D0CD811\ -C821E80112C1100DF0000C180000140010400C0000607418000064180000801800008C1800008418\ -0000881800009018000018980040880F0040A80F0040349800404C4A0040740F0040800F0040980F\ -00400099004012C1E091F5FFC961CD0221EFFFE941F9310971D9519011C01A223902E2D1180C0222\ -6E1D21E4FF31E9FF2AF11A332D0F42630001EAFFC00000C030B43C2256A31621E1FF1A2228022030\ -B43C3256B31501ADFFC00000DD023C4256ED1431D6FF4D010C52D90E192E126E0101DDFFC0000021\ -D2FF32A101C020004802303420C0200039022C0201D7FFC00000463300000031CDFF1A333803D023\ -C03199FF27B31ADC7F31CBFF1A3328030198FFC0000056C20E2193FF2ADD060E000031C6FF1A3328\ -030191FFC0000056820DD2DD10460800000021BEFF1A2228029CE231BCFFC020F51A33290331BBFF\ -C02C411A332903C0F0F4222E1D22D204273D9332A3FFC02000280E27B3F721ABFF381E1A2242A400\ -01B5FFC00000381E2D0C42A40001B3FFC0000056120801B2FFC00000C02000280EC2DC0422D2FCC0\ -2000290E01ADFFC00000222E1D22D204226E1D281E22D204E7B204291E860000126E012198FF32A0\ -042A21C54C003198FF222E1D1A33380337B202C6D6FF2C02019FFFC000002191FF318CFF1A223A31\ -019CFFC00000218DFF1C031A22C549000C02060300003C528601003C624600003C72918BFF9A1108\ -71C861D851E841F83112C1200DF00010000068100000581000007010000074100000781000007C10\ -0000801000001C4B0040803C004091FDFF12C1E061F7FFC961E941F9310971D9519011C01A662906\ -21F3FFC2D1101A22390231F2FF0C0F1A33590331EAFFF26C1AED045C2247B3028636002D0C016DFF\ -C0000021E5FF41EAFF2A611A4469040622000021E4FF1A222802F0D2C0D7BE01DD0E31E0FF4D0D1A\ -3328033D0101E2FFC00000561209D03D2010212001DFFFC000004D0D2D0C3D01015DFFC0000041D5\ -FFDAFF1A444804D0648041D2FF1A4462640061D1FF106680622600673F1331D0FF10338028030C43\ -853A002642164613000041CAFF222C1A1A444804202FC047328006F6FF222C1A273F3861C2FF222C\ -1A1A6668066732B921BDFF3D0C1022800148FFC0000021BAFF1C031A2201BFFFC000000C02460300\ -5C3206020000005C424600005C5291B7FF9A110871C861D851E841F83112C1200DF0B0100000C010\ -0000D010000012C1E091FEFFC961D951E9410971F931CD039011C0ED02DD0431A1FF9C1422A06247\ -B302062D0021F4FF1A22490286010021F1FF1A223902219CFF2AF12D0F011FFFC00000461C0022D1\ -10011CFFC0000021E9FFFD0C1A222802C7B20621E6FF1A22F8022D0E3D014D0F0195FFC000008C52\ -22A063C6180000218BFF3D01102280F04F200111FFC00000AC7D22D1103D014D0F010DFFC0000021\ -D6FF32D110102280010EFFC0000021D3FF1C031A220185FFC00000FAEEF0CCC056ACF821CDFF317A\ -FF1A223A310105FFC0000021C9FF1C031A22017CFFC000002D0C91C8FF9A110871C861D851E841F8\ -3112C1200DF0000200600000001040020060FFFFFF0012C1E00C02290131FAFF21FAFF026107C961\ -C02000226300C02000C80320CC10564CFF21F5FFC02000380221F4FF20231029010C432D010163FF\ -C0000008712D0CC86112C1200DF00080FE3F8449004012C1D0C9A109B17CFC22C1110C13C51C0026\ -1202463000220111C24110B68202462B0031F5FF3022A02802A002002D011C03851A0066820A2801\ -32210105A6FF0607003C12C60500000010212032A01085180066A20F2221003811482105B3FF2241\ -10861A004C1206FDFF2D011C03C5160066B20E280138114821583185CFFF06F7FF005C1286F5FF00\ -10212032A01085140066A20D2221003811482105E1FF06EFFF0022A06146EDFF45F0FFC6EBFF0000\ -01D2FFC0000006E9FF000C022241100C1322C110C50F00220111060600000022C1100C13C50E0022\ -011132C2FA303074B6230206C8FF08B1C8A112C1300DF0000000000010404F484149007519031027\ -000000110040A8100040BC0F0040583F0040CC2E00401CE20040D83900408000004021F4FF12C1E0\ -C961C80221F2FF097129010C02D951C91101F4FFC0000001F3FFC00000AC2C22A3E801F2FFC00000\ -21EAFFC031412A233D0C01EFFFC000003D0222A00001EDFFC00000C1E4FF2D0C01E8FFC000002D01\ -32A004450400C5E7FFDD022D0C01E3FFC00000666D1F4B2131DCFF4600004B22C0200048023794F5\ -31D9FFC0200039023DF08601000001DCFFC000000871C861D85112C1200DF000000012C1F0026103\ -01EAFEC00000083112C1100DF000643B004012C1D0E98109B1C9A1D991F97129013911E2A0C001FA\ -FFC00000CD02E792F40C0DE2A0C0F2A0DB860D00000001F4FFC00000204220E71240F7921C226102\ -01EFFFC0000052A0DC482157120952A0DD571205460500004D0C3801DA234242001BDD3811379DC5\ -C6000000000C0DC2A0C001E3FFC00000C792F608B12D0DC8A1D891E881F87112C1300DF00000", "\ -entry": 1074792180, "num_params": 1, "params_start": 1074790400, "data": "FE0510\ -401A0610403B0610405A0610407A061040820610408C0610408C061040", "data_start": 10736\ -43520} -""" -if __name__ == '__main__': +# Binary stub code (see flasher_stub dir for source & details) +ESP8266ROM.STUB_CODE = eval(zlib.decompress(base64.b64decode(b""" +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\ +"""))) +ESP32ROM.STUB_CODE = eval(zlib.decompress(base64.b64decode(b""" +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\ +"""))) +ESP32S2ROM.STUB_CODE = eval(zlib.decompress(base64.b64decode(b""" +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\ +"""))) +ESP32S3BETA2ROM.STUB_CODE = eval(zlib.decompress(base64.b64decode(b""" +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\ +"""))) +ESP32C3ROM.STUB_CODE = eval(zlib.decompress(base64.b64decode(b""" +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\ +"""))) + + +def _main(): try: main() except FatalError as e: - print '\nA fatal error occurred: %s' % e + print('\nA fatal error occurred: %s' % e) sys.exit(2) + + +if __name__ == '__main__': + _main() diff --git a/os/flash.sh b/os/flash.sh index 552208d..beb0894 100755 --- a/os/flash.sh +++ b/os/flash.sh @@ -4,7 +4,7 @@ if [ $# -ne 1 ]; then echo "One parameter required: the device of the serial interface" echo "$0 " echo "e.g.:" - echo "$0 ttyUSB0" + echo "$0 /dev/ttyUSB0" exit 1 fi @@ -14,8 +14,8 @@ DEVICE=$1 # check the serial connection -if [ ! -c /dev/$DEVICE ]; then - echo "/dev/$DEVICE does not exist" +if [ ! -c $DEVICE ]; then + echo "$DEVICE does not exist" exit 1 fi @@ -24,13 +24,12 @@ if [ ! -f esptool.py ]; then echo "esptool.py" exit 1 fi - -./esptool.py --port /dev/$DEVICE $BAUD read_mac +python3 esptool.py --port $DEVICE $BAUD read_mac if [ $? -ne 0 ]; then echo "Error reading the MAC -> set the device into the bootloader!" exit 1 fi echo "Flashing the new" -#./esptool.py --port /dev/$DEVICE $BAUD write_flash -fm dio 0x00000 nodemcu2.bin -./esptool.py --port /dev/$DEVICE $BAUD write_flash -fm dio 0x00000 0x00000.bin 0x10000 0x10000.bin 0x3fc000 esp_init_data_default.bin 0x07e000 blank.bin 0x3fe000 blank.bin +#python3 esptool.py --port $DEVICE $BAUD write_flash -fm dio 0x00000 nodemcu2.bin +python3 esptool.py --port $DEVICE write_flash -fm dio 0x00000 0x00000.bin 0x10000 0x10000.bin 0x3fc000 esp_init_data_default.bin From fe8817bfe65d3c7d1333a304a59cfa9ca7da45ac Mon Sep 17 00:00:00 2001 From: Ollo Date: Mon, 7 Dec 2020 20:54:46 +0100 Subject: [PATCH 111/151] Ignore locally stored configuration files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 0ac4a73..40db714 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ wlancfg.lua +config.lua *.swp unit/testTimesMarchOctoberWithAllSeconds.lua From a2021fcb4808928f4a55a14fd8142a6f0dcab172 Mon Sep 17 00:00:00 2001 From: Ollo Date: Mon, 7 Dec 2020 21:12:48 +0100 Subject: [PATCH 112/151] Sync the time every 5 minutes from the internet --- main.lua | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/main.lua b/main.lua index 59aca40..51e3e0e 100644 --- a/main.lua +++ b/main.lua @@ -154,20 +154,26 @@ function normalOperation() tmr.alarm(2, 500, 0 ,function() syncTimeFromInternet() + displayTime() end) tmr.alarm(3, 2000, 0 ,function() - if (startTelnetServer ~= nil) then - startTelnetServer() - else - print("NO Telent found") - end + if (startTelnetServer ~= nil) then + startTelnetServer() + else + print("NO Telent found") + end end) - displayTime() -- Start the time Thread tmr.alarm(1, 10000, 1 ,function() displayTime() collectgarbage() end) + + -- sync the time every 5 minutes + tmr.alarm(4, 300000, 1 ,function() + syncTimeFromInternet() + displayTime() + end) end -- when no wifi available, open an accesspoint and ask the user From 8858fa19bd971738709ce411d641bdf49c511ab2 Mon Sep 17 00:00:00 2001 From: Ollo Date: Mon, 7 Dec 2020 21:26:02 +0100 Subject: [PATCH 113/151] Added MQTT module --- main.lua | 4 ++-- mqtt.lua | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 mqtt.lua diff --git a/main.lua b/main.lua index 51e3e0e..1260ff7 100644 --- a/main.lua +++ b/main.lua @@ -42,6 +42,7 @@ function syncTimeFromInternet() end ) end + briPercent = 50 function displayTime() local sec, usec = rtctime.get() @@ -146,7 +147,7 @@ function normalOperation() print('IP: ',wifi.sta.getip()) -- Here the WLAN is found, and something is done print("Solving dependencies") - local dependModules = { "timecore" , "wordclock", "telnet" } + local dependModules = { "timecore" , "wordclock", "telnet", "mqtt" } for _,mod in pairs(dependModules) do print("Loading " .. mod) mydofile(mod) @@ -154,7 +155,6 @@ function normalOperation() tmr.alarm(2, 500, 0 ,function() syncTimeFromInternet() - displayTime() end) tmr.alarm(3, 2000, 0 ,function() if (startTelnetServer ~= nil) then diff --git a/mqtt.lua b/mqtt.lua new file mode 100644 index 0000000..845a6eb --- /dev/null +++ b/mqtt.lua @@ -0,0 +1,44 @@ +-- MQTT extension +function startMqtt() + m = mqtt.Client("wordclock", 120) + -- on publish message receive event + m:on("message", function(client, topic, data) + print(topic .. ":" ) + if data ~= nil then + print(data) + if (data == "ON") then + mqttBrightness=100 + m:publish(mqttPrefix .. "/clock", "ON", 0, 0) + elseif (data == "OFF") then + mqttBrightness=0 + m:publish(mqttPrefix .. "/clock", "OFF", 0, 0) + else + if (tonumber(data) >= 0 and tonumber(data) <= 100) then + mqttBrightness=tonumber(data) + m:publish(mqttPrefix .. "/clock", tostring(data), 0, 0) + end + end + end + end) + + m:connect(mqttServer, 1883, 0, function(client) + print("[MQTT] connected") + mqttConnected = true + -- subscribe topic with qos = 0 + client:subscribe(mqttPrefix .. "/command", 0) + -- publish a message with data = hello, QoS = 0, retain = 0 + client:publish(mqttPrefix .. "/ip", tostring(wifi.sta.getip()), 0, 0) + end, + function(client, reason) + print("failed reason: " .. reason) + end) +end + +if (mqttServer ~= nil and mqttPrefix ~= nil) then + startMqtt() + print "Started MQTT client" + + tmr.alarm(5, 60000, 1 ,function() + m:publish(mqttPrefix .. "/brightness", tostring(briPercent), 0, 0) + end) +end \ No newline at end of file From df7f33bbf05af4587ebb832f906df071200994e8 Mon Sep 17 00:00:00 2001 From: Ollo Date: Mon, 7 Dec 2020 21:37:04 +0100 Subject: [PATCH 114/151] Brightness is controllable via MQTT --- mqtt.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mqtt.lua b/mqtt.lua index 845a6eb..67e0356 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -7,14 +7,14 @@ function startMqtt() if data ~= nil then print(data) if (data == "ON") then - mqttBrightness=100 + briPercent=100 m:publish(mqttPrefix .. "/clock", "ON", 0, 0) elseif (data == "OFF") then - mqttBrightness=0 + briPercent=0 m:publish(mqttPrefix .. "/clock", "OFF", 0, 0) else if (tonumber(data) >= 0 and tonumber(data) <= 100) then - mqttBrightness=tonumber(data) + briPercent=tonumber(data) m:publish(mqttPrefix .. "/clock", tostring(data), 0, 0) end end @@ -22,7 +22,7 @@ function startMqtt() end) m:connect(mqttServer, 1883, 0, function(client) - print("[MQTT] connected") + print("MQTT is connected") mqttConnected = true -- subscribe topic with qos = 0 client:subscribe(mqttPrefix .. "/command", 0) @@ -38,7 +38,7 @@ if (mqttServer ~= nil and mqttPrefix ~= nil) then startMqtt() print "Started MQTT client" - tmr.alarm(5, 60000, 1 ,function() + tmr.alarm(5, 30000, 1 ,function() m:publish(mqttPrefix .. "/brightness", tostring(briPercent), 0, 0) end) end \ No newline at end of file From de47de1e6fff0936d4a831a2675ed0668c631f6e Mon Sep 17 00:00:00 2001 From: Ollo Date: Tue, 8 Dec 2020 20:30:43 +0100 Subject: [PATCH 115/151] Always keep the LEDs at a minimum --- main.lua | 5 ++++- mqtt.lua | 12 +++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/main.lua b/main.lua index 1260ff7..6d10fd7 100644 --- a/main.lua +++ b/main.lua @@ -54,6 +54,9 @@ function displayTime() local words = display_timestat(time.hour, time.minute) if ((dim ~= nil) and (dim == "on")) then words.briPercent=briPercent + if (words.briPercent ~= nil and words.briPercent < 3) then + words.briPercent=3 + end else words.briPercent=nil end @@ -164,7 +167,7 @@ function normalOperation() end end) -- Start the time Thread - tmr.alarm(1, 10000, 1 ,function() + tmr.alarm(1, 5000, 1 ,function() displayTime() collectgarbage() end) diff --git a/mqtt.lua b/mqtt.lua index 67e0356..8f51f35 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -9,13 +9,16 @@ function startMqtt() if (data == "ON") then briPercent=100 m:publish(mqttPrefix .. "/clock", "ON", 0, 0) + displayTime() elseif (data == "OFF") then briPercent=0 m:publish(mqttPrefix .. "/clock", "OFF", 0, 0) + displayTime() else if (tonumber(data) >= 0 and tonumber(data) <= 100) then briPercent=tonumber(data) m:publish(mqttPrefix .. "/clock", tostring(data), 0, 0) + displayTime() end end end @@ -37,8 +40,11 @@ end if (mqttServer ~= nil and mqttPrefix ~= nil) then startMqtt() print "Started MQTT client" - - tmr.alarm(5, 30000, 1 ,function() + oldBrightness=0 + tmr.alarm(5, 10000, 1 ,function() + if (oldBrightness <> briPercent) then m:publish(mqttPrefix .. "/brightness", tostring(briPercent), 0, 0) + end + oldBrightness = briPercent end) -end \ No newline at end of file +end From b95f59ee7f08996575966afdd41f9e5345dbeb02 Mon Sep 17 00:00:00 2001 From: Ollo Date: Tue, 8 Dec 2020 20:45:18 +0100 Subject: [PATCH 116/151] Fix LUA syntax --- mqtt.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mqtt.lua b/mqtt.lua index 8f51f35..7fca973 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -42,7 +42,7 @@ if (mqttServer ~= nil and mqttPrefix ~= nil) then print "Started MQTT client" oldBrightness=0 tmr.alarm(5, 10000, 1 ,function() - if (oldBrightness <> briPercent) then + if (oldBrightness ~= briPercent) then m:publish(mqttPrefix .. "/brightness", tostring(briPercent), 0, 0) end oldBrightness = briPercent From 1eaf05a1ad95219dc3e10e571c28f61ea6633909 Mon Sep 17 00:00:00 2001 From: Ollo Date: Tue, 8 Dec 2020 20:45:28 +0100 Subject: [PATCH 117/151] Add stop functionality --- main.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/main.lua b/main.lua index 6d10fd7..63718f3 100644 --- a/main.lua +++ b/main.lua @@ -188,6 +188,10 @@ function normalOperation() end +function stopWordclock() + for i=0,5,1 do tmr.stop(i) end +end + -------------------main program ----------------------------- ws2812.init() -- WS2812 LEDs initialized on GPIO2 From 10104b5d0e88b0a278b6dcaf20eff7654cd346c4 Mon Sep 17 00:00:00 2001 From: Ollo Date: Tue, 8 Dec 2020 21:11:53 +0100 Subject: [PATCH 118/151] Don call display function in MQTT module --- mqtt.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/mqtt.lua b/mqtt.lua index 7fca973..2c5d832 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -9,16 +9,13 @@ function startMqtt() if (data == "ON") then briPercent=100 m:publish(mqttPrefix .. "/clock", "ON", 0, 0) - displayTime() elseif (data == "OFF") then briPercent=0 m:publish(mqttPrefix .. "/clock", "OFF", 0, 0) - displayTime() else if (tonumber(data) >= 0 and tonumber(data) <= 100) then briPercent=tonumber(data) m:publish(mqttPrefix .. "/clock", tostring(data), 0, 0) - displayTime() end end end From 7e7a87f90aaa3688d9d9139df5815ce2679c6395 Mon Sep 17 00:00:00 2001 From: Ollo Date: Tue, 8 Dec 2020 21:51:14 +0100 Subject: [PATCH 119/151] Move startup procedure into one loop --- main.lua | 50 ++++++++++++++++++++++++++++++++------------------ mqtt.lua | 25 ++++++++++++++----------- 2 files changed, 46 insertions(+), 29 deletions(-) diff --git a/main.lua b/main.lua index 63718f3..a7c96ba 100644 --- a/main.lua +++ b/main.lua @@ -31,16 +31,20 @@ end function syncTimeFromInternet() ---ptbtime1.ptb.de + if (syncRunning == nil) then + syncRunning=true sntp.sync(sntpserverhostname, function(sec,usec,server) print('sync', sec, usec, server) displayTime() + syncRunning=nil end, function() print('failed!') + syncRunning=nil end ) + end end briPercent = 50 @@ -155,25 +159,34 @@ function normalOperation() print("Loading " .. mod) mydofile(mod) end - - tmr.alarm(2, 500, 0 ,function() - syncTimeFromInternet() - end) - tmr.alarm(3, 2000, 0 ,function() - if (startTelnetServer ~= nil) then - startTelnetServer() - else - print("NO Telent found") - end - end) - -- Start the time Thread + + setupCounter=5 tmr.alarm(1, 5000, 1 ,function() - displayTime() - collectgarbage() - end) + if (setupCounter > 4) then + syncTimeFromInternet() + setupCounter=setupCounter-1 + elseif (setupCounter > 3) then + if (startTelnetServer ~= nil) then + startTelnetServer() + else + print("NO Telent found") + end + setupCounter=setupCounter-1 + elseif (setupCounter > 2) then + if (startMqttClient ~= nil) then + startMqttClient() + else + print("NO Mqtt found") + end + setupCounter=setupCounter-1 + else + displayTime() + end + collectgarbage() + end) -- sync the time every 5 minutes - tmr.alarm(4, 300000, 1 ,function() + tmr.alarm(2, 300000, 1 ,function() syncTimeFromInternet() displayTime() end) @@ -198,7 +211,7 @@ ws2812.init() -- WS2812 LEDs initialized on GPIO2 if ( file.open("config.lua") ) then --- Normal operation wifi.setmode(wifi.STATION) - dofile("config.lua") + mydofile("config") normalOperation() else -- Logic for inital setup @@ -217,6 +230,7 @@ tmr.alarm(4, 500, 1 ,function() ws2812.write(ledBuf) if (btnCounter >= 110) then file.remove("config.lua") + file.remove("config.lc") node.restart() end end diff --git a/mqtt.lua b/mqtt.lua index 2c5d832..23c3ec1 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -34,14 +34,17 @@ function startMqtt() end) end -if (mqttServer ~= nil and mqttPrefix ~= nil) then - startMqtt() - print "Started MQTT client" - oldBrightness=0 - tmr.alarm(5, 10000, 1 ,function() - if (oldBrightness ~= briPercent) then - m:publish(mqttPrefix .. "/brightness", tostring(briPercent), 0, 0) - end - oldBrightness = briPercent - end) -end +function startMqttClient() + if (mqttServer ~= nil and mqttPrefix ~= nil) then + startMqtt() + print "Started MQTT client" + oldBrightness=0 + tmr.alarm(5, 10000, 1 ,function() + if (oldBrightness ~= briPercent) then + m:publish(mqttPrefix .. "/brightness", tostring(briPercent), 0, 0) + m:publish(mqttPrefix .. "/heap", tostring(node.heap()), 0, 0) + end + oldBrightness = briPercent + end) + end +end \ No newline at end of file From efe5b38e587b95a7f7fa168f1f4a9ac0a0f8fe90 Mon Sep 17 00:00:00 2001 From: Ollo Date: Thu, 10 Dec 2020 21:11:35 +0100 Subject: [PATCH 120/151] Different loop cycles --- main.lua | 2 +- mqtt.lua | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/main.lua b/main.lua index a7c96ba..bc1de9a 100644 --- a/main.lua +++ b/main.lua @@ -186,7 +186,7 @@ function normalOperation() end) -- sync the time every 5 minutes - tmr.alarm(2, 300000, 1 ,function() + tmr.alarm(2, 300003, 1 ,function() syncTimeFromInternet() displayTime() end) diff --git a/mqtt.lua b/mqtt.lua index 23c3ec1..14e9bb9 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -39,12 +39,13 @@ function startMqttClient() startMqtt() print "Started MQTT client" oldBrightness=0 - tmr.alarm(5, 10000, 1 ,function() + tmr.alarm(5, 5001, 1 ,function() if (oldBrightness ~= briPercent) then m:publish(mqttPrefix .. "/brightness", tostring(briPercent), 0, 0) + else m:publish(mqttPrefix .. "/heap", tostring(node.heap()), 0, 0) end oldBrightness = briPercent end) end -end \ No newline at end of file +end From 6746d62567c748eff0314dc13d820a3dc8de0134 Mon Sep 17 00:00:00 2001 From: Ollo Date: Thu, 10 Dec 2020 22:15:27 +0100 Subject: [PATCH 121/151] Formating added --- displayword.lua | 28 ++++++++++++++-------------- main.lua | 4 ++-- wordclock.lua | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/displayword.lua b/displayword.lua index 58752c9..04bfde2 100644 --- a/displayword.lua +++ b/displayword.lua @@ -3,20 +3,20 @@ local M do local updateColor = function (data) if (data.amountOfChars > 0) then - local div = tonumber(data.drawnCharacters/data.amountOfChars) - if (div < 1) then - return data.colorFg - elseif (div < 2) then - return data.colorMin1 - elseif (div < 3) then - return data.colorMin2 - elseif (div < 4) then - return data.colorMin3 - elseif (div < 5) then - return data.colorMin4 - else - return data.colorFg - end + local div = tonumber(data.drawnCharacters/data.amountOfChars) + if (div < 1) then + return data.colorFg + elseif (div < 2) then + return data.colorMin1 + elseif (div < 3) then + return data.colorMin2 + elseif (div < 4) then + return data.colorMin3 + elseif (div < 5) then + return data.colorMin4 + else + return data.colorFg + end else return data.colorFg end diff --git a/main.lua b/main.lua index bc1de9a..81ce2c4 100644 --- a/main.lua +++ b/main.lua @@ -72,9 +72,9 @@ function displayTime() invertRows=true end displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows) - if (displayword.data.drawnCharacters ~= nil) then + if (displayword.data.drawnCharacters ~= nil) then ledBuf = displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows, displayword.data.drawnCharacters) - end + end end displayword = nil if (ledBuf ~= nil) then diff --git a/wordclock.lua b/wordclock.lua index ef3136e..0228c51 100755 --- a/wordclock.lua +++ b/wordclock.lua @@ -64,7 +64,7 @@ function display_timestat(hours, minutes, longmode) ret.before=1 elseif (minutes==9) then -- Hande if three quater or quater before is displayed - if (threequater ~= nil) then + if ((threequater ~= nil) and (threequater==true or threequater=="on")) then ret.threequater=1 else ret.quater = 1 From 7b02f1a447782e34b133db2798cea0134eb6bf27 Mon Sep 17 00:00:00 2001 From: Ollo Date: Sun, 13 Dec 2020 16:37:40 +0100 Subject: [PATCH 122/151] Seperate function to calculate the amount of characters to draw --- displayword.lua | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ main.lua | 10 +++----- 2 files changed, 69 insertions(+), 6 deletions(-) diff --git a/displayword.lua b/displayword.lua index 04bfde2..a87c43d 100644 --- a/displayword.lua +++ b/displayword.lua @@ -305,12 +305,77 @@ if (words.fiveMin== 1) then collectgarbage() return buf end + +-- Count amount of characters to display +local countChars = function(words) + local characters = 0 + for key,value in pairs(words) do + if (value > 0) then + if (key == "it") then + characters = characters + 2 + elseif (key == "is") then + characters = characters + 3 + elseif (key == "fiveMin") then + characters = characters + 4 + elseif (key == "tenMin") then + characters = characters + 4 + elseif (key == "after") then + characters = characters + 4 + elseif (key == "before") then + characters = characters + 3 + elseif (key == "threeHour") then + characters = characters + 4 + elseif (key == "quater") then + characters = characters + 7 + elseif (key == "threequater") then + characters = characters + 11 + elseif (key == "half") then + characters = characters + 4 + elseif (key == "one") then + characters = characters + 3 + elseif (key == "oneLong") then + characters = characters + 4 + elseif (key == "two") then + characters = characters + 4 + elseif (key == "three") then + characters = characters + 4 + elseif (key == "four") then + characters = characters + 4 + elseif (key == "five") then + characters = characters + 4 + elseif (key == "six") then + characters = characters + 4 + elseif (key == "seven") then + characters = characters + 6 + elseif (key == "eight") then + characters = characters + 4 + elseif (key == "nine") then + characters = characters + 4 + elseif (key == "ten") then + characters = characters + 4 + elseif (key == "eleven") then + characters = characters + 3 + elseif (key == "twelve") then + characters = characters + 5 + elseif (key == "twenty") then + characters = characters + 7 + elseif (key == "clock") then + characters = characters + 3 + elseif (key == "sr_nc") then + characters = characters + 3 + end + end + end + return characters +end + M = { generateLEDs = generateLEDs, round = round, drawLEDs = drawLEDs, updateColor = updateColor, data = data, + countChars = countChars } end displayword = M diff --git a/main.lua b/main.lua index 81ce2c4..cd85dc3 100644 --- a/main.lua +++ b/main.lua @@ -70,16 +70,14 @@ function displayTime() local invertRows=false if ((inv46 ~= nil) and (inv46 == "on")) then invertRows=true - end - displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows) - if (displayword.data.drawnCharacters ~= nil) then - ledBuf = displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows, displayword.data.drawnCharacters) - end + end + local characters = displayword.countChars(words) + ledBuf = displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows, characters) end displayword = nil if (ledBuf ~= nil) then ws2812.write(ledBuf) - else + else if ((colorBg ~= nil) and (color ~= nil)) then ws2812.write(colorBg:rep(107) .. color:rep(3)) else From 9d764a3b8eb05aa47f093e05e0b2396719681faf Mon Sep 17 00:00:00 2001 From: Ollo Date: Mon, 14 Dec 2020 19:45:09 +0100 Subject: [PATCH 123/151] Added temperature measurement; but ESP is resetting due to RAM usage --- ds18b20.lua | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++ mqtt.lua | 46 ++++++++++++++++-- 2 files changed, 179 insertions(+), 5 deletions(-) create mode 100644 ds18b20.lua diff --git a/ds18b20.lua b/ds18b20.lua new file mode 100644 index 0000000..fac19b4 --- /dev/null +++ b/ds18b20.lua @@ -0,0 +1,138 @@ +-------------------------------------------------------------------------------- +-- DS18B20 one wire module for NODEMCU +-- NODEMCU TEAM +-- LICENCE: http://opensource.org/licenses/MIT +-- Vowstar +-- 2015/02/14 sza2 Fix for negative values +-------------------------------------------------------------------------------- + +-- Set module name as parameter of require +local modname = ... +local M = {} +_G[modname] = M +-------------------------------------------------------------------------------- +-- Local used variables +-------------------------------------------------------------------------------- +-- DS18B20 dq pin +local pin = nil +-- DS18B20 default pin +local defaultPin = 9 +-------------------------------------------------------------------------------- +-- Local used modules +-------------------------------------------------------------------------------- +-- Table module +local table = table +-- String module +local string = string +-- One wire module +local ow = ow +-- Timer module +local tmr = tmr +-- Limited to local environment +setfenv(1,M) +-------------------------------------------------------------------------------- +-- Implementation +-------------------------------------------------------------------------------- +C = 0 +F = 1 +K = 2 +function setup(dq) + pin = dq + if(pin == nil) then + pin = defaultPin + end + ow.setup(pin) +end + +function addrs() + setup(pin) + tbl = {} + ow.reset_search(pin) + repeat + addr = ow.search(pin) + if(addr ~= nil) then + table.insert(tbl, addr) + end + tmr.wdclr() + until (addr == nil) + ow.reset_search(pin) + return tbl +end + +function readNumber(addr, unit) + result = nil + setup(pin) + flag = false + if(addr == nil) then + ow.reset_search(pin) + count = 0 + repeat + count = count + 1 + addr = ow.search(pin) + tmr.wdclr() + until((addr ~= nil) or (count > 100)) + ow.reset_search(pin) + end + if(addr == nil) then + return result + end + crc = ow.crc8(string.sub(addr,1,7)) + if (crc == addr:byte(8)) then + if ((addr:byte(1) == 0x10) or (addr:byte(1) == 0x28)) then + -- print("Device is a DS18S20 family device.") + ow.reset(pin) + ow.select(pin, addr) + ow.write(pin, 0x44, 1) + -- tmr.delay(1000000) + present = ow.reset(pin) + ow.select(pin, addr) + ow.write(pin,0xBE,1) + -- print("P="..present) + data = nil + data = string.char(ow.read(pin)) + for i = 1, 8 do + data = data .. string.char(ow.read(pin)) + end + -- print(data:byte(1,9)) + crc = ow.crc8(string.sub(data,1,8)) + -- print("CRC="..crc) + if (crc == data:byte(9)) then + t = (data:byte(1) + data:byte(2) * 256) + if (t > 32767) then + t = t - 65536 + end + if(unit == nil or unit == C) then + t = t * 625 + elseif(unit == F) then + t = t * 1125 + 320000 + elseif(unit == K) then + t = t * 625 + 2731500 + else + return nil + end + t = t / 100 + -- print("Temperature="..t1.."."..t2.." Centigrade") + -- result = t1.."."..t2 + return t + end + tmr.wdclr() + else + -- print("Device family is not recognized.") + end + else + -- print("CRC is not valid!") + end + return result +end + +function read(addr, unit) + t = readNumber(addr, unit) + if (t == nil) then + return nil + else + return t + end +end + +-- Return module table +return M diff --git a/mqtt.lua b/mqtt.lua index 14e9bb9..4d054c2 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -1,3 +1,7 @@ +-- Global variable +t=nil +mqttConnected = false + -- MQTT extension function startMqtt() m = mqtt.Client("wordclock", 120) @@ -34,18 +38,50 @@ function startMqtt() end) end +function readTemp() + if (t ~= nil) then + addrs=t.addrs() + -- Total DS18B20 numbers + sensors=table.getn(addrs) + local temp1=0 + if (sensors >= 1) then + temp1=t.read(addrs[1]) + end + return temp1 + else + return nil + end +end + function startMqttClient() if (mqttServer ~= nil and mqttPrefix ~= nil) then startMqtt() print "Started MQTT client" + if (file.open("ds18b20.lc")) then + t=require("ds18b20") + t.setup(2) -- GPIO4 + readTemp() -- read once, to setup chip + print "Setup temperature" + end + oldBrightness=0 + oldTemp=0 tmr.alarm(5, 5001, 1 ,function() - if (oldBrightness ~= briPercent) then - m:publish(mqttPrefix .. "/brightness", tostring(briPercent), 0, 0) - else - m:publish(mqttPrefix .. "/heap", tostring(node.heap()), 0, 0) + if (mqttConnected) then + local temp = nil + if (t ~= nil) then + temp=readTemp() + end + if (oldBrightness ~= briPercent) then + m:publish(mqttPrefix .. "/brightness", tostring(briPercent), 0, 0) + elseif (temp ~= nil and temp ~= oldTemp) then + oldTemp = temp + m:publish(mqttPrefix .. "/temp", tostring(temp), 0, 0) + else + m:publish(mqttPrefix .. "/heap", tostring(node.heap()), 0, 0) + end + oldBrightness = briPercent end - oldBrightness = briPercent end) end end From d1b5e67ce6d70f3958b20b87975dc006ae0be826 Mon Sep 17 00:00:00 2001 From: Ollo Date: Thu, 14 Jan 2021 21:16:12 +0100 Subject: [PATCH 124/151] Removed temperature reading --- ds18b20.lua | 138 ---------------------------------------------------- mqtt.lua | 25 ---------- 2 files changed, 163 deletions(-) delete mode 100644 ds18b20.lua diff --git a/ds18b20.lua b/ds18b20.lua deleted file mode 100644 index fac19b4..0000000 --- a/ds18b20.lua +++ /dev/null @@ -1,138 +0,0 @@ --------------------------------------------------------------------------------- --- DS18B20 one wire module for NODEMCU --- NODEMCU TEAM --- LICENCE: http://opensource.org/licenses/MIT --- Vowstar --- 2015/02/14 sza2 Fix for negative values --------------------------------------------------------------------------------- - --- Set module name as parameter of require -local modname = ... -local M = {} -_G[modname] = M --------------------------------------------------------------------------------- --- Local used variables --------------------------------------------------------------------------------- --- DS18B20 dq pin -local pin = nil --- DS18B20 default pin -local defaultPin = 9 --------------------------------------------------------------------------------- --- Local used modules --------------------------------------------------------------------------------- --- Table module -local table = table --- String module -local string = string --- One wire module -local ow = ow --- Timer module -local tmr = tmr --- Limited to local environment -setfenv(1,M) --------------------------------------------------------------------------------- --- Implementation --------------------------------------------------------------------------------- -C = 0 -F = 1 -K = 2 -function setup(dq) - pin = dq - if(pin == nil) then - pin = defaultPin - end - ow.setup(pin) -end - -function addrs() - setup(pin) - tbl = {} - ow.reset_search(pin) - repeat - addr = ow.search(pin) - if(addr ~= nil) then - table.insert(tbl, addr) - end - tmr.wdclr() - until (addr == nil) - ow.reset_search(pin) - return tbl -end - -function readNumber(addr, unit) - result = nil - setup(pin) - flag = false - if(addr == nil) then - ow.reset_search(pin) - count = 0 - repeat - count = count + 1 - addr = ow.search(pin) - tmr.wdclr() - until((addr ~= nil) or (count > 100)) - ow.reset_search(pin) - end - if(addr == nil) then - return result - end - crc = ow.crc8(string.sub(addr,1,7)) - if (crc == addr:byte(8)) then - if ((addr:byte(1) == 0x10) or (addr:byte(1) == 0x28)) then - -- print("Device is a DS18S20 family device.") - ow.reset(pin) - ow.select(pin, addr) - ow.write(pin, 0x44, 1) - -- tmr.delay(1000000) - present = ow.reset(pin) - ow.select(pin, addr) - ow.write(pin,0xBE,1) - -- print("P="..present) - data = nil - data = string.char(ow.read(pin)) - for i = 1, 8 do - data = data .. string.char(ow.read(pin)) - end - -- print(data:byte(1,9)) - crc = ow.crc8(string.sub(data,1,8)) - -- print("CRC="..crc) - if (crc == data:byte(9)) then - t = (data:byte(1) + data:byte(2) * 256) - if (t > 32767) then - t = t - 65536 - end - if(unit == nil or unit == C) then - t = t * 625 - elseif(unit == F) then - t = t * 1125 + 320000 - elseif(unit == K) then - t = t * 625 + 2731500 - else - return nil - end - t = t / 100 - -- print("Temperature="..t1.."."..t2.." Centigrade") - -- result = t1.."."..t2 - return t - end - tmr.wdclr() - else - -- print("Device family is not recognized.") - end - else - -- print("CRC is not valid!") - end - return result -end - -function read(addr, unit) - t = readNumber(addr, unit) - if (t == nil) then - return nil - else - return t - end -end - --- Return module table -return M diff --git a/mqtt.lua b/mqtt.lua index 4d054c2..ae95c87 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -38,32 +38,10 @@ function startMqtt() end) end -function readTemp() - if (t ~= nil) then - addrs=t.addrs() - -- Total DS18B20 numbers - sensors=table.getn(addrs) - local temp1=0 - if (sensors >= 1) then - temp1=t.read(addrs[1]) - end - return temp1 - else - return nil - end -end - function startMqttClient() if (mqttServer ~= nil and mqttPrefix ~= nil) then startMqtt() print "Started MQTT client" - if (file.open("ds18b20.lc")) then - t=require("ds18b20") - t.setup(2) -- GPIO4 - readTemp() -- read once, to setup chip - print "Setup temperature" - end - oldBrightness=0 oldTemp=0 tmr.alarm(5, 5001, 1 ,function() @@ -74,9 +52,6 @@ function startMqttClient() end if (oldBrightness ~= briPercent) then m:publish(mqttPrefix .. "/brightness", tostring(briPercent), 0, 0) - elseif (temp ~= nil and temp ~= oldTemp) then - oldTemp = temp - m:publish(mqttPrefix .. "/temp", tostring(temp), 0, 0) else m:publish(mqttPrefix .. "/heap", tostring(node.heap()), 0, 0) end From fb2556c62c6c6cd18e846640cdbaee3863bdace1 Mon Sep 17 00:00:00 2001 From: Ollo Date: Thu, 14 Jan 2021 21:27:13 +0100 Subject: [PATCH 125/151] Refactor MQTT function names --- mqtt.lua | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/mqtt.lua b/mqtt.lua index ae95c87..1df27b8 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -1,9 +1,9 @@ -- Global variable -t=nil +m=nil mqttConnected = false -- MQTT extension -function startMqtt() +function registerMqtt() m = mqtt.Client("wordclock", 120) -- on publish message receive event m:on("message", function(client, topic, data) @@ -30,17 +30,20 @@ function startMqtt() mqttConnected = true -- subscribe topic with qos = 0 client:subscribe(mqttPrefix .. "/command", 0) - -- publish a message with data = hello, QoS = 0, retain = 0 - client:publish(mqttPrefix .. "/ip", tostring(wifi.sta.getip()), 0, 0) + tmr.alarm(3, 500, 0, function() + -- publish a message with data = hello, QoS = 0, retain = 0 + client:publish(mqttPrefix .. "/ip", tostring(wifi.sta.getip()), 0, 0) + end) end, function(client, reason) print("failed reason: " .. reason) + m=nil end) end -function startMqttClient() +function registerMqttClient() if (mqttServer ~= nil and mqttPrefix ~= nil) then - startMqtt() + registerMqtt() print "Started MQTT client" oldBrightness=0 oldTemp=0 From 8d6fc180a33ba1c8252e7681412d7779d59a327c Mon Sep 17 00:00:00 2001 From: Ollo Date: Thu, 14 Jan 2021 21:32:12 +0100 Subject: [PATCH 126/151] Background color is adjustable --- mqtt.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mqtt.lua b/mqtt.lua index 1df27b8..eacea11 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -16,6 +16,11 @@ function registerMqtt() elseif (data == "OFF") then briPercent=0 m:publish(mqttPrefix .. "/clock", "OFF", 0, 0) + elseif (data:sub(1,1) == "#" and data:len() == 7) then + red = tonumber(data:sub(2,3), 16) + green = tonumber(data:sub(4,5), 16) + blue = tonumber(data:sub(6,7), 16) + colorBg=string.char(red, green, blue) else if (tonumber(data) >= 0 and tonumber(data) <= 100) then briPercent=tonumber(data) @@ -37,7 +42,7 @@ function registerMqtt() end, function(client, reason) print("failed reason: " .. reason) - m=nil + mqttConnected = false end) end From 7195c0899221cd895176ee39cc4efd53eac95bc1 Mon Sep 17 00:00:00 2001 From: Ollo Date: Thu, 14 Jan 2021 21:51:29 +0100 Subject: [PATCH 127/151] Fixed Mqtt function names --- mqtt.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mqtt.lua b/mqtt.lua index eacea11..2959cdd 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -46,7 +46,7 @@ function registerMqtt() end) end -function registerMqttClient() +function startMqttClient() if (mqttServer ~= nil and mqttPrefix ~= nil) then registerMqtt() print "Started MQTT client" From 30343fe638bd99f533bd46e050027db69e337ba9 Mon Sep 17 00:00:00 2001 From: Ollo Date: Thu, 14 Jan 2021 21:55:51 +0100 Subject: [PATCH 128/151] Made Telnetserver optional --- init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 1b60740..3023999 100644 --- a/init.lua +++ b/init.lua @@ -36,8 +36,10 @@ end function mydofile(mod) if (file.open(mod .. ".lua")) then dofile( mod .. ".lua") - else + elseif (file.open(mod .. ".lc")) then dofile(mod .. ".lc") + else + print("Error: " .. mod) end end From b44eb6f13eb81db5053036c9d3055c71cad957a4 Mon Sep 17 00:00:00 2001 From: Ollo Date: Thu, 14 Jan 2021 22:14:59 +0100 Subject: [PATCH 129/151] Background can be changed via MQTT --- displayword.lua | 7 ++++++- main.lua | 2 +- mqtt.lua | 16 +++++++++++----- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/displayword.lua b/displayword.lua index a87c43d..d725b84 100644 --- a/displayword.lua +++ b/displayword.lua @@ -54,7 +54,7 @@ end local data={} -- Module displaying of the words -local generateLEDs = function(words, colorFg, colorMin1, colorMin2, colorMin3, colorMin4, invertRows, amountOfChars) +local generateLEDs = function(words, colorBg, colorFg, colorMin1, colorMin2, colorMin3, colorMin4, invertRows, amountOfChars) -- Set the local variables needed for the colored progress bar if (words == nil) then return nil @@ -103,9 +103,14 @@ local generateLEDs = function(words, colorFg, colorMin1, colorMin2, colorMin3, c end data.drawnCharacters=0 local charsPerLine=11 + -- Space / background has no color by default local space=string.char(0,0,0) + if (colorBg ~= nil) then + space = colorBg + end + -- Set the foreground color as the default color local buf=data.colorFg local line=space diff --git a/main.lua b/main.lua index cd85dc3..2497c2b 100644 --- a/main.lua +++ b/main.lua @@ -72,7 +72,7 @@ function displayTime() invertRows=true end local characters = displayword.countChars(words) - ledBuf = displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows, characters) + ledBuf = displayword.generateLEDs(words, colorBg, color, color1, color2, color3, color4, invertRows, characters) end displayword = nil if (ledBuf ~= nil) then diff --git a/mqtt.lua b/mqtt.lua index 2959cdd..a1141ee 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -16,15 +16,21 @@ function registerMqtt() elseif (data == "OFF") then briPercent=0 m:publish(mqttPrefix .. "/clock", "OFF", 0, 0) - elseif (data:sub(1,1) == "#" and data:len() == 7) then - red = tonumber(data:sub(2,3), 16) - green = tonumber(data:sub(4,5), 16) - blue = tonumber(data:sub(6,7), 16) - colorBg=string.char(red, green, blue) + elseif (data:sub(1,1) == "#" and data:len() == 7) then + red = tonumber(data:sub(2,3), 16) + green = tonumber(data:sub(4,5), 16) + blue = tonumber(data:sub(6,7), 16) + colorBg=string.char(red, green, blue) + print("Updated BG: " .. tostring(red) .. "," .. tostring(green) .. "," .. tostring(blue) ) + if (displayTime~= nil) then + displayTime() + end else if (tonumber(data) >= 0 and tonumber(data) <= 100) then briPercent=tonumber(data) m:publish(mqttPrefix .. "/clock", tostring(data), 0, 0) + else + print "Unknown MQTT command" end end end From 8c18722dededf34736cc55df732770920d886aeb Mon Sep 17 00:00:00 2001 From: Ollo Date: Thu, 14 Jan 2021 22:39:56 +0100 Subject: [PATCH 130/151] Added configurable background color --- main.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.lua b/main.lua index 2497c2b..cd85dc3 100644 --- a/main.lua +++ b/main.lua @@ -72,7 +72,7 @@ function displayTime() invertRows=true end local characters = displayword.countChars(words) - ledBuf = displayword.generateLEDs(words, colorBg, color, color1, color2, color3, color4, invertRows, characters) + ledBuf = displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows, characters) end displayword = nil if (ledBuf ~= nil) then From 8c454f0a9ae100e458d14d881b88f08930f925c5 Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 15 Jan 2021 17:45:37 +0100 Subject: [PATCH 131/151] More documentation added for the tools --- tools/Readme.md | 4 +++- tools/initialFlash.sh | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/Readme.md b/tools/Readme.md index 2b6725d..57da26a 100644 --- a/tools/Readme.md +++ b/tools/Readme.md @@ -1,2 +1,4 @@ -# Source: +# luatool.py +**Not** supported with python 3.x +## Source: https://github.com/4refr0nt/luatool/tree/master/luatool diff --git a/tools/initialFlash.sh b/tools/initialFlash.sh index a6270ad..b1d5efc 100755 --- a/tools/initialFlash.sh +++ b/tools/initialFlash.sh @@ -5,6 +5,13 @@ LUATOOL=./tools/luatool.py DEVICE=$1 BAUD=115200 +# check environment +if [ ! -f $LUATOOL ]; then + echo "$LUATOOL not found" + echo "is the command prompt at the same level as the tools folder ?" + exit 1 +fi + # check the serial connection if [ ! -c $DEVICE ]; then @@ -12,7 +19,6 @@ if [ ! -c $DEVICE ]; then exit 1 fi - if [ $# -eq 0 ]; then echo "" echo "e.g. usage $0 []" From 86a9503de9a20c4404f89902a123b39d8a05b47f Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 15 Jan 2021 18:01:19 +0100 Subject: [PATCH 132/151] Fixed merging --- main.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.lua b/main.lua index cd85dc3..c64084c 100644 --- a/main.lua +++ b/main.lua @@ -72,7 +72,7 @@ function displayTime() invertRows=true end local characters = displayword.countChars(words) - ledBuf = displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows, characters) + ledBuf = displayword.generateLEDs(words, colorBg, color, color1, color2, color3, color4, invertRows, characters) end displayword = nil if (ledBuf ~= nil) then From 34e47c9a398d3a10c395a150d593cf4d5ebd0314 Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 15 Jan 2021 18:02:17 +0100 Subject: [PATCH 133/151] Start MQTT without Telent Server --- main.lua | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/main.lua b/main.lua index c64084c..578de3e 100644 --- a/main.lua +++ b/main.lua @@ -72,7 +72,7 @@ function displayTime() invertRows=true end local characters = displayword.countChars(words) - ledBuf = displayword.generateLEDs(words, colorBg, color, color1, color2, color3, color4, invertRows, characters) + ledBuf = displayword.generateLEDs(words, colorBg, color, color1, color2, color3, color4, invertRows, characters) end displayword = nil if (ledBuf ~= nil) then @@ -152,7 +152,7 @@ function normalOperation() print('IP: ',wifi.sta.getip()) -- Here the WLAN is found, and something is done print("Solving dependencies") - local dependModules = { "timecore" , "wordclock", "telnet", "mqtt" } + local dependModules = { "timecore" , "wordclock", "mqtt" } for _,mod in pairs(dependModules) do print("Loading " .. mod) mydofile(mod) @@ -164,17 +164,18 @@ function normalOperation() syncTimeFromInternet() setupCounter=setupCounter-1 elseif (setupCounter > 3) then - if (startTelnetServer ~= nil) then - startTelnetServer() - else - print("NO Telent found") - end - setupCounter=setupCounter-1 - elseif (setupCounter > 2) then if (startMqttClient ~= nil) then startMqttClient() else print("NO Mqtt found") + mydofile("telnet") + end + setupCounter=setupCounter-1 + elseif (setupCounter > 2) then + if (startTelnetServer ~= nil) then + startTelnetServer() + else + print("NO Telent found") end setupCounter=setupCounter-1 else From 9534368b01114aca10248e2678fed5882fb30011 Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 15 Jan 2021 18:08:56 +0100 Subject: [PATCH 134/151] Added cmd MQTT sublevel and refactored function --- mqtt.lua | 52 +++++++++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/mqtt.lua b/mqtt.lua index a1141ee..65acfa8 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -2,6 +2,33 @@ m=nil mqttConnected = false +function handleSingleCommand(client, topic, data) + if (data == "ON") then + briPercent=100 + m:publish(mqttPrefix .. "/clock", "ON", 0, 0) + elseif (data == "OFF") then + briPercent=0 + m:publish(mqttPrefix .. "/clock", "OFF", 0, 0) + elseif (data:sub(1,1) == "#" and data:len() == 7) then + red = tonumber(data:sub(2,3), 16) + green = tonumber(data:sub(4,5), 16) + blue = tonumber(data:sub(6,7), 16) + colorBg=string.char(red, green, blue) + print("Updated BG: " .. tostring(red) .. "," .. tostring(green) .. "," .. tostring(blue) ) + if (displayTime~= nil) then + displayTime() + end + else + if (tonumber(data) >= 0 and tonumber(data) <= 100) then + briPercent=tonumber(data) + m:publish(mqttPrefix .. "/clock", tostring(data), 0, 0) + else + print "Unknown MQTT command" + end + end + +end + -- MQTT extension function registerMqtt() m = mqtt.Client("wordclock", 120) @@ -10,29 +37,7 @@ function registerMqtt() print(topic .. ":" ) if data ~= nil then print(data) - if (data == "ON") then - briPercent=100 - m:publish(mqttPrefix .. "/clock", "ON", 0, 0) - elseif (data == "OFF") then - briPercent=0 - m:publish(mqttPrefix .. "/clock", "OFF", 0, 0) - elseif (data:sub(1,1) == "#" and data:len() == 7) then - red = tonumber(data:sub(2,3), 16) - green = tonumber(data:sub(4,5), 16) - blue = tonumber(data:sub(6,7), 16) - colorBg=string.char(red, green, blue) - print("Updated BG: " .. tostring(red) .. "," .. tostring(green) .. "," .. tostring(blue) ) - if (displayTime~= nil) then - displayTime() - end - else - if (tonumber(data) >= 0 and tonumber(data) <= 100) then - briPercent=tonumber(data) - m:publish(mqttPrefix .. "/clock", tostring(data), 0, 0) - else - print "Unknown MQTT command" - end - end + handleSingleCommand(client, topic, data) end end) @@ -44,6 +49,7 @@ function registerMqtt() tmr.alarm(3, 500, 0, function() -- publish a message with data = hello, QoS = 0, retain = 0 client:publish(mqttPrefix .. "/ip", tostring(wifi.sta.getip()), 0, 0) + client:subscribe(mqttPrefix .. "/cmd/#", 0) end) end, function(client, reason) From 8789f75e2756aadad1f28231c7c71422dd46ede9 Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 15 Jan 2021 18:10:17 +0100 Subject: [PATCH 135/151] Fixed color convertion from MQTT --- mqtt.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mqtt.lua b/mqtt.lua index 65acfa8..3d45af7 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -13,7 +13,7 @@ function handleSingleCommand(client, topic, data) red = tonumber(data:sub(2,3), 16) green = tonumber(data:sub(4,5), 16) blue = tonumber(data:sub(6,7), 16) - colorBg=string.char(red, green, blue) + colorBg=string.char(green, red, blue) print("Updated BG: " .. tostring(red) .. "," .. tostring(green) .. "," .. tostring(blue) ) if (displayTime~= nil) then displayTime() From 62f40d202cc0fe516cec217b6a6db1e2a5cf6ccb Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 15 Jan 2021 18:14:39 +0100 Subject: [PATCH 136/151] Addition color format supported --- main.lua | 1 + mqtt.lua | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/main.lua b/main.lua index 578de3e..18abe65 100644 --- a/main.lua +++ b/main.lua @@ -175,6 +175,7 @@ function normalOperation() if (startTelnetServer ~= nil) then startTelnetServer() else + displayTime() print("NO Telent found") end setupCounter=setupCounter-1 diff --git a/mqtt.lua b/mqtt.lua index 3d45af7..c2141b8 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -9,7 +9,7 @@ function handleSingleCommand(client, topic, data) elseif (data == "OFF") then briPercent=0 m:publish(mqttPrefix .. "/clock", "OFF", 0, 0) - elseif (data:sub(1,1) == "#" and data:len() == 7) then + elseif ((data:sub(1,1) == "#" and data:len() == 7) or (string.match(data, "%d+,%d+,%d+"))) then red = tonumber(data:sub(2,3), 16) green = tonumber(data:sub(4,5), 16) blue = tonumber(data:sub(6,7), 16) From b5658b048afa95967128596e4dd83baa238b45bd Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 15 Jan 2021 18:33:49 +0100 Subject: [PATCH 137/151] Start telnetserver via mqtt command --- mqtt.lua | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/mqtt.lua b/mqtt.lua index c2141b8..c672b15 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -10,9 +10,13 @@ function handleSingleCommand(client, topic, data) briPercent=0 m:publish(mqttPrefix .. "/clock", "OFF", 0, 0) elseif ((data:sub(1,1) == "#" and data:len() == 7) or (string.match(data, "%d+,%d+,%d+"))) then - red = tonumber(data:sub(2,3), 16) - green = tonumber(data:sub(4,5), 16) - blue = tonumber(data:sub(6,7), 16) + if (data:sub(1,1) == "#") then + red = tonumber(data:sub(2,3), 16) + green = tonumber(data:sub(4,5), 16) + blue = tonumber(data:sub(6,7), 16) + else + red, green, blue = string.match(data, "(%d+),(%d+),(%d+)") + end colorBg=string.char(green, red, blue) print("Updated BG: " .. tostring(red) .. "," .. tostring(green) .. "," .. tostring(blue) ) if (displayTime~= nil) then @@ -37,7 +41,21 @@ function registerMqtt() print(topic .. ":" ) if data ~= nil then print(data) - handleSingleCommand(client, topic, data) + if (topic == (mqttPrefix .. "/command")) then + handleSingleCommand(client, topic, data) + else + -- Handle here the /cmd/# sublevel + if (string.match(topic, "telnet$")) then + client:publish(mqttPrefix .. "/telnet", tostring(wifi.sta.getip()), 0, 0) + print("Stop Mqtt") + m=nil + mqttConnected = false + stopWordclock() + collectgarbage() + mydofile("telnet") + startTelnetServer() + end + end end end) From a68313e55f96cad416dba17db02e77e0186e8cad Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 15 Jan 2021 18:39:23 +0100 Subject: [PATCH 138/151] Updated the documentation --- Readme.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index 813d863..943b796 100644 --- a/Readme.md +++ b/Readme.md @@ -29,5 +29,17 @@ Determine the IP address of your clock and execute the following script: ./tools/remoteFlash.sh IP-Address -## Internal Setup +## Hardware Setup * GPIO2 LEDs +* GPIO0 Bootloader (at start) +* GPIO0 factory reset (long during operation) + +## MQTT Interface +* **basetopic**/command +** ON Set brightness to 100% +** OFF Set brightness to 0% +** 0-100 Set brightness to given value +** #rrggbb Bacground color is set to hex representation of red, green and blue +** 0-255,0-255,0-255 Background color is set to decimal representation of red, green an blue +* **basetopic**/cmd/telnet +** ignored Stop MQTT server and start telnetserver at port 23 From 9eabc733f46e9ae3af5c2fbf41d5c90a5d4f9911 Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 15 Jan 2021 19:03:20 +0100 Subject: [PATCH 139/151] Support only one single command --- Readme.md | 2 +- mqtt.lua | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Readme.md b/Readme.md index 943b796..08e6c33 100644 --- a/Readme.md +++ b/Readme.md @@ -35,7 +35,7 @@ Determine the IP address of your clock and execute the following script: * GPIO0 factory reset (long during operation) ## MQTT Interface -* **basetopic**/command +* **basetopic**/cmd/single ** ON Set brightness to 100% ** OFF Set brightness to 0% ** 0-100 Set brightness to given value diff --git a/mqtt.lua b/mqtt.lua index c672b15..2504766 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -41,7 +41,7 @@ function registerMqtt() print(topic .. ":" ) if data ~= nil then print(data) - if (topic == (mqttPrefix .. "/command")) then + if (topic == (mqttPrefix .. "/cmd/single")) then handleSingleCommand(client, topic, data) else -- Handle here the /cmd/# sublevel @@ -63,11 +63,10 @@ function registerMqtt() print("MQTT is connected") mqttConnected = true -- subscribe topic with qos = 0 - client:subscribe(mqttPrefix .. "/command", 0) - tmr.alarm(3, 500, 0, function() + client:subscribe(mqttPrefix .. "/cmd/#", 0) + tmr.alarm(3, 1000, 0, function() -- publish a message with data = hello, QoS = 0, retain = 0 client:publish(mqttPrefix .. "/ip", tostring(wifi.sta.getip()), 0, 0) - client:subscribe(mqttPrefix .. "/cmd/#", 0) end) end, function(client, reason) From 4e9d78c86ad71cded5800c9c1822353b4ad70c2b Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 15 Jan 2021 19:06:49 +0100 Subject: [PATCH 140/151] Dim background to same level as foreground --- mqtt.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mqtt.lua b/mqtt.lua index 2504766..8b6ce5c 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -17,7 +17,7 @@ function handleSingleCommand(client, topic, data) else red, green, blue = string.match(data, "(%d+),(%d+),(%d+)") end - colorBg=string.char(green, red, blue) + colorBg=string.char(green* briPercent / 100, red * briPercent / 100, blue * briPercent / 100) print("Updated BG: " .. tostring(red) .. "," .. tostring(green) .. "," .. tostring(blue) ) if (displayTime~= nil) then displayTime() From 9763f4b5739ce7051c21ddd3cf97f835e1169f7a Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 15 Jan 2021 19:28:20 +0100 Subject: [PATCH 141/151] Publish current background color --- mqtt.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mqtt.lua b/mqtt.lua index 8b6ce5c..350551f 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -10,6 +10,9 @@ function handleSingleCommand(client, topic, data) briPercent=0 m:publish(mqttPrefix .. "/clock", "OFF", 0, 0) elseif ((data:sub(1,1) == "#" and data:len() == 7) or (string.match(data, "%d+,%d+,%d+"))) then + local red=0 + local green=0 + local blue=0 if (data:sub(1,1) == "#") then red = tonumber(data:sub(2,3), 16) green = tonumber(data:sub(4,5), 16) @@ -17,8 +20,9 @@ function handleSingleCommand(client, topic, data) else red, green, blue = string.match(data, "(%d+),(%d+),(%d+)") end - colorBg=string.char(green* briPercent / 100, red * briPercent / 100, blue * briPercent / 100) + colorBg=string.char(red* briPercent / 100, green * briPercent / 100, blue * briPercent / 100) print("Updated BG: " .. tostring(red) .. "," .. tostring(green) .. "," .. tostring(blue) ) + m:publish(mqttPrefix .. "/background", tostring(red) .. "," .. tostring(green) .. "," .. tostring(blue), 0, 0) if (displayTime~= nil) then displayTime() end @@ -67,6 +71,10 @@ function registerMqtt() tmr.alarm(3, 1000, 0, function() -- publish a message with data = hello, QoS = 0, retain = 0 client:publish(mqttPrefix .. "/ip", tostring(wifi.sta.getip()), 0, 0) + local red = string.byte(colorBg,1) + local green = string.byte(colorBg,2) + local blue = string.byte(colorBg,3) + client:publish(mqttPrefix .. "/background", tostring(red) .. "," .. tostring(green) .. "," .. tostring(blue), 0, 0) end) end, function(client, reason) From 84edd69c96cfdeadaa4051156996f28aded561f9 Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 15 Jan 2021 20:21:57 +0100 Subject: [PATCH 142/151] Describe OpenHAB2 --- Readme.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Readme.md b/Readme.md index 08e6c33..c84c38f 100644 --- a/Readme.md +++ b/Readme.md @@ -43,3 +43,16 @@ Determine the IP address of your clock and execute the following script: ** 0-255,0-255,0-255 Background color is set to decimal representation of red, green an blue * **basetopic**/cmd/telnet ** ignored Stop MQTT server and start telnetserver at port 23 + +## OpenHAB2 +Tested MQTT with binding-mqtt 2.5.x +### Configuration +``` +Thing mqtt:topic:wordclock "Wordclock" (mqtt:broker) @ "MQTT" { + Channels: + Type dimmer : dim "Dimming" [ stateTopic="basetopic/brightness", commandTopic="basetopic/cmd/single" ] + Type string : cmd "Command" [ commandTopic="basetopic/cmd/single" ] + Type switch : active "Active" [ commandTopic="basetopic/cmd/single" ] + Type colorRGB : background "Background" [ stateTopic="basetopic/background", commandTopic="basetopic/cmd/single", on="28,0,0", off="0,0,0" ] +} +``` From 95aad4f254c934e1150fc119c900550f28f76272 Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 15 Jan 2021 20:32:39 +0100 Subject: [PATCH 143/151] Fix color --- mqtt.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mqtt.lua b/mqtt.lua index 350551f..3b8e5f6 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -20,7 +20,7 @@ function handleSingleCommand(client, topic, data) else red, green, blue = string.match(data, "(%d+),(%d+),(%d+)") end - colorBg=string.char(red* briPercent / 100, green * briPercent / 100, blue * briPercent / 100) + colorBg=string.char(green * briPercent / 100, red * briPercent / 100, blue * briPercent / 100) print("Updated BG: " .. tostring(red) .. "," .. tostring(green) .. "," .. tostring(blue) ) m:publish(mqttPrefix .. "/background", tostring(red) .. "," .. tostring(green) .. "," .. tostring(blue), 0, 0) if (displayTime~= nil) then @@ -71,8 +71,8 @@ function registerMqtt() tmr.alarm(3, 1000, 0, function() -- publish a message with data = hello, QoS = 0, retain = 0 client:publish(mqttPrefix .. "/ip", tostring(wifi.sta.getip()), 0, 0) - local red = string.byte(colorBg,1) - local green = string.byte(colorBg,2) + local red = string.byte(colorBg,2) + local green = string.byte(colorBg,1) local blue = string.byte(colorBg,3) client:publish(mqttPrefix .. "/background", tostring(red) .. "," .. tostring(green) .. "," .. tostring(blue), 0, 0) end) From b5178d5f5b399e8e61a7ce18beefbee5a9ac25f7 Mon Sep 17 00:00:00 2001 From: Ollo Date: Fri, 15 Jan 2021 20:36:48 +0100 Subject: [PATCH 144/151] Documentation formating --- Readme.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Readme.md b/Readme.md index c84c38f..e5b5d4c 100644 --- a/Readme.md +++ b/Readme.md @@ -36,13 +36,13 @@ Determine the IP address of your clock and execute the following script: ## MQTT Interface * **basetopic**/cmd/single -** ON Set brightness to 100% -** OFF Set brightness to 0% -** 0-100 Set brightness to given value -** #rrggbb Bacground color is set to hex representation of red, green and blue -** 0-255,0-255,0-255 Background color is set to decimal representation of red, green an blue + * ON Set brightness to 100% + * OFF Set brightness to 0% + * 0-100 Set brightness to given value + * #rrggbb Bacground color is set to hex representation of red, green and blue + * 0-255,0-255,0-255 Background color is set to decimal representation of red, green an blue * **basetopic**/cmd/telnet -** ignored Stop MQTT server and start telnetserver at port 23 + * ignored Stop MQTT server and start telnetserver at port 23 ## OpenHAB2 Tested MQTT with binding-mqtt 2.5.x From 1cea6b377e763e6fb5d337a3bf0caa74c4db6c5d Mon Sep 17 00:00:00 2001 From: Ollo Date: Sat, 23 Jan 2021 09:44:15 +0100 Subject: [PATCH 145/151] Background of first row changeable --- displayword.lua | 13 ++++++++++++- main.lua | 3 ++- mqtt.lua | 20 ++++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/displayword.lua b/displayword.lua index d725b84..395ac6c 100644 --- a/displayword.lua +++ b/displayword.lua @@ -54,7 +54,7 @@ end local data={} -- Module displaying of the words -local generateLEDs = function(words, colorBg, colorFg, colorMin1, colorMin2, colorMin3, colorMin4, invertRows, amountOfChars) +local generateLEDs = function(words, colorBg, colorFg, colorMin1, colorMin2, colorMin3, colorMin4, invertRows, amountOfChars, row1bgColor) -- Set the local variables needed for the colored progress bar if (words == nil) then return nil @@ -107,14 +107,20 @@ local generateLEDs = function(words, colorBg, colorFg, colorMin1, colorMin2, col -- Space / background has no color by default local space=string.char(0,0,0) + -- Background color must always be set if (colorBg ~= nil) then space = colorBg + else + colorBg = space end -- Set the foreground color as the default color local buf=data.colorFg local line=space -- line 1---------------------------------------------- + if (row1bgColor ~= nil) then + space = row1bgColor + end if (words.it==1) then buf=drawLEDs(data,2) -- ES else @@ -135,6 +141,11 @@ if (words.fiveMin== 1) then buf= buf .. space:rep(4) end -- line 2-- even row (so inverted) -------------------- + if (row2bgColor ~= nil) then + space = row2bgColor + else + space = colorBg + end if (words.tenMin == 1) then line= drawLEDs(data,4) -- ZEHN else diff --git a/main.lua b/main.lua index 18abe65..014bf44 100644 --- a/main.lua +++ b/main.lua @@ -72,7 +72,8 @@ function displayTime() invertRows=true end local characters = displayword.countChars(words) - ledBuf = displayword.generateLEDs(words, colorBg, color, color1, color2, color3, color4, invertRows, characters) + ledBuf = displayword.generateLEDs(words, colorBg, color, color1, color2, color3, color4, invertRows, characters, + row1bgColor) end displayword = nil if (ledBuf ~= nil) then diff --git a/mqtt.lua b/mqtt.lua index 3b8e5f6..32b6ae4 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -37,6 +37,24 @@ function handleSingleCommand(client, topic, data) end +function parseBgColor(data) + local red=nil + local green=nil + local blue=nil + if (data:sub(1,1) == "#") then + red = tonumber(data:sub(2,3), 16) + green = tonumber(data:sub(4,5), 16) + blue = tonumber(data:sub(6,7), 16) + else + red, green, blue = string.match(data, "(%d+),(%d+),(%d+)") + end + if ((red ~= nil) and (green ~= nil) and (blue ~= nil) ) then + return string.char(green * briPercent / 100, red * briPercent / 100, blue * briPercent / 100) + else + return nil + end +end + -- MQTT extension function registerMqtt() m = mqtt.Client("wordclock", 120) @@ -58,6 +76,8 @@ function registerMqtt() collectgarbage() mydofile("telnet") startTelnetServer() + elseif (string.match(topic, "row1$")) then + row1bgColor = parseBgColor(data) end end end From f1baf8b916232c0b296dfbbc247455f75d7f2c99 Mon Sep 17 00:00:00 2001 From: Ollo Date: Sat, 23 Jan 2021 09:55:13 +0100 Subject: [PATCH 146/151] Formating corrected --- Readme.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Readme.md b/Readme.md index c84c38f..b286f1f 100644 --- a/Readme.md +++ b/Readme.md @@ -36,13 +36,13 @@ Determine the IP address of your clock and execute the following script: ## MQTT Interface * **basetopic**/cmd/single -** ON Set brightness to 100% -** OFF Set brightness to 0% -** 0-100 Set brightness to given value -** #rrggbb Bacground color is set to hex representation of red, green and blue -** 0-255,0-255,0-255 Background color is set to decimal representation of red, green an blue + * ON **Set brightness to 100%** + * OFF **Set brightness to 0%** + * 0-100 **Set brightness to given value** + * #rrggbb **Background color is set to hex representation of red, green and blue** + * 0-255,0-255,0-255 **Background color is set to decimal representation of red, green an blue** * **basetopic**/cmd/telnet -** ignored Stop MQTT server and start telnetserver at port 23 + * ignored **Stop MQTT server and start telnetserver at port 23** ## OpenHAB2 Tested MQTT with binding-mqtt 2.5.x From 5b96bcc7bbe8780fe5f1ffec8486076c9bd299ac Mon Sep 17 00:00:00 2001 From: Ollo Date: Sat, 23 Jan 2021 10:00:15 +0100 Subject: [PATCH 147/151] Documentation improved --- Readme.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Readme.md b/Readme.md index b286f1f..e06bd90 100644 --- a/Readme.md +++ b/Readme.md @@ -30,11 +30,19 @@ Determine the IP address of your clock and execute the following script: ## Hardware Setup +Mandatory: * GPIO2 LEDs * GPIO0 Bootloader (at start) * GPIO0 factory reset (long during operation) +Optinal: +* ADC VT93N2, 48k light resistor ## MQTT Interface +### Status +* **basetopic**/brightness **Current brightness in percent** +* **basetopic**/background **Current background color** + +### Commands * **basetopic**/cmd/single * ON **Set brightness to 100%** * OFF **Set brightness to 0%** From f79195e9a575fc97bd2c892ae9f8b707254d4641 Mon Sep 17 00:00:00 2001 From: Ollo Date: Sat, 23 Jan 2021 10:05:18 +0100 Subject: [PATCH 148/151] Status of first row color added to MQTT --- Readme.md | 3 +++ mqtt.lua | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Readme.md b/Readme.md index e06bd90..4bce2b1 100644 --- a/Readme.md +++ b/Readme.md @@ -41,6 +41,7 @@ Optinal: ### Status * **basetopic**/brightness **Current brightness in percent** * **basetopic**/background **Current background color** +* **basetopic**/row1 **Current background color** ### Commands * **basetopic**/cmd/single @@ -51,6 +52,8 @@ Optinal: * 0-255,0-255,0-255 **Background color is set to decimal representation of red, green an blue** * **basetopic**/cmd/telnet * ignored **Stop MQTT server and start telnetserver at port 23** +* **basetopic**/cmd/row1 + * 0-255,0-255,0-255 **Background color is set to decimal representation of red, green an blue** ## OpenHAB2 Tested MQTT with binding-mqtt 2.5.x diff --git a/mqtt.lua b/mqtt.lua index 32b6ae4..ad82d94 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -37,7 +37,10 @@ function handleSingleCommand(client, topic, data) end -function parseBgColor(data) +-- Parse MQTT data and extract color +-- @param data MQTT information +-- @param row string of the row e.g. "row1" used to publish current state +function parseBgColor(data, row) local red=nil local green=nil local blue=nil @@ -49,6 +52,7 @@ function parseBgColor(data) red, green, blue = string.match(data, "(%d+),(%d+),(%d+)") end if ((red ~= nil) and (green ~= nil) and (blue ~= nil) ) then + m:publish(mqttPrefix .. "/"..row, tostring(red) .. "," .. tostring(green) .. "," .. tostring(blue), 0, 0) return string.char(green * briPercent / 100, red * briPercent / 100, blue * briPercent / 100) else return nil @@ -77,7 +81,7 @@ function registerMqtt() mydofile("telnet") startTelnetServer() elseif (string.match(topic, "row1$")) then - row1bgColor = parseBgColor(data) + row1bgColor = parseBgColor(data, "row1") end end end From c73478d86e1cb61f5156aab098d753842e272387 Mon Sep 17 00:00:00 2001 From: Ollo Date: Sat, 23 Jan 2021 16:44:16 +0100 Subject: [PATCH 149/151] Telnet server can be activated via MQTT --- main.lua | 1 - mqtt.lua | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/main.lua b/main.lua index 014bf44..d08dfed 100644 --- a/main.lua +++ b/main.lua @@ -177,7 +177,6 @@ function normalOperation() startTelnetServer() else displayTime() - print("NO Telent found") end setupCounter=setupCounter-1 else diff --git a/mqtt.lua b/mqtt.lua index ad82d94..016215e 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -79,7 +79,9 @@ function registerMqtt() stopWordclock() collectgarbage() mydofile("telnet") - startTelnetServer() + if (startTelnetServer ~= nil) then + startTelnetServer() + end elseif (string.match(topic, "row1$")) then row1bgColor = parseBgColor(data, "row1") end From 999c8ae3ac5e29287bedc287c978d1c5b597927c Mon Sep 17 00:00:00 2001 From: Ollo Date: Sat, 23 Jan 2021 18:10:53 +0100 Subject: [PATCH 150/151] Temperatur measurement via DS18B20 added --- Readme.md | 2 + ds18b20.lua | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++ init.lua | 2 + mqtt.lua | 27 ++++++++++ 4 files changed, 169 insertions(+) create mode 100644 ds18b20.lua diff --git a/Readme.md b/Readme.md index 4bce2b1..1948b7b 100644 --- a/Readme.md +++ b/Readme.md @@ -36,12 +36,14 @@ Mandatory: * GPIO0 factory reset (long during operation) Optinal: * ADC VT93N2, 48k light resistor +* GPIO4 DS18B20 Temperatur sensor ## MQTT Interface ### Status * **basetopic**/brightness **Current brightness in percent** * **basetopic**/background **Current background color** * **basetopic**/row1 **Current background color** +* **basetopic**/temp **Temperatur** ### Commands * **basetopic**/cmd/single diff --git a/ds18b20.lua b/ds18b20.lua new file mode 100644 index 0000000..fac19b4 --- /dev/null +++ b/ds18b20.lua @@ -0,0 +1,138 @@ +-------------------------------------------------------------------------------- +-- DS18B20 one wire module for NODEMCU +-- NODEMCU TEAM +-- LICENCE: http://opensource.org/licenses/MIT +-- Vowstar +-- 2015/02/14 sza2 Fix for negative values +-------------------------------------------------------------------------------- + +-- Set module name as parameter of require +local modname = ... +local M = {} +_G[modname] = M +-------------------------------------------------------------------------------- +-- Local used variables +-------------------------------------------------------------------------------- +-- DS18B20 dq pin +local pin = nil +-- DS18B20 default pin +local defaultPin = 9 +-------------------------------------------------------------------------------- +-- Local used modules +-------------------------------------------------------------------------------- +-- Table module +local table = table +-- String module +local string = string +-- One wire module +local ow = ow +-- Timer module +local tmr = tmr +-- Limited to local environment +setfenv(1,M) +-------------------------------------------------------------------------------- +-- Implementation +-------------------------------------------------------------------------------- +C = 0 +F = 1 +K = 2 +function setup(dq) + pin = dq + if(pin == nil) then + pin = defaultPin + end + ow.setup(pin) +end + +function addrs() + setup(pin) + tbl = {} + ow.reset_search(pin) + repeat + addr = ow.search(pin) + if(addr ~= nil) then + table.insert(tbl, addr) + end + tmr.wdclr() + until (addr == nil) + ow.reset_search(pin) + return tbl +end + +function readNumber(addr, unit) + result = nil + setup(pin) + flag = false + if(addr == nil) then + ow.reset_search(pin) + count = 0 + repeat + count = count + 1 + addr = ow.search(pin) + tmr.wdclr() + until((addr ~= nil) or (count > 100)) + ow.reset_search(pin) + end + if(addr == nil) then + return result + end + crc = ow.crc8(string.sub(addr,1,7)) + if (crc == addr:byte(8)) then + if ((addr:byte(1) == 0x10) or (addr:byte(1) == 0x28)) then + -- print("Device is a DS18S20 family device.") + ow.reset(pin) + ow.select(pin, addr) + ow.write(pin, 0x44, 1) + -- tmr.delay(1000000) + present = ow.reset(pin) + ow.select(pin, addr) + ow.write(pin,0xBE,1) + -- print("P="..present) + data = nil + data = string.char(ow.read(pin)) + for i = 1, 8 do + data = data .. string.char(ow.read(pin)) + end + -- print(data:byte(1,9)) + crc = ow.crc8(string.sub(data,1,8)) + -- print("CRC="..crc) + if (crc == data:byte(9)) then + t = (data:byte(1) + data:byte(2) * 256) + if (t > 32767) then + t = t - 65536 + end + if(unit == nil or unit == C) then + t = t * 625 + elseif(unit == F) then + t = t * 1125 + 320000 + elseif(unit == K) then + t = t * 625 + 2731500 + else + return nil + end + t = t / 100 + -- print("Temperature="..t1.."."..t2.." Centigrade") + -- result = t1.."."..t2 + return t + end + tmr.wdclr() + else + -- print("Device family is not recognized.") + end + else + -- print("CRC is not valid!") + end + return result +end + +function read(addr, unit) + t = readNumber(addr, unit) + if (t == nil) then + return nil + else + return t + end +end + +-- Return module table +return M diff --git a/init.lua b/init.lua index 3023999..0d0f1f8 100644 --- a/init.lua +++ b/init.lua @@ -51,6 +51,8 @@ tmr.alarm(1, 5000, 0, function() (file.open("timecore.lua")) or (file.open("wordclock.lua")) or (file.open("displayword.lua")) or + (file.open("mqtt.lua")) or + (file.open("ds18b20.lua")) or (file.open("telnet.lua")) ) then c = string.char(0,128,0) diff --git a/mqtt.lua b/mqtt.lua index 016215e..f239cb4 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -1,6 +1,8 @@ -- Global variable m=nil mqttConnected = false +-- Temp: +t=nil function handleSingleCommand(client, topic, data) if (data == "ON") then @@ -59,6 +61,21 @@ function parseBgColor(data, row) end end +function readTemp() + if (t ~= nil) then + addrs=t.addrs() + -- Total DS18B20 numbers + sensors=table.getn(addrs) + local temp1=0 + if (sensors >= 1) then + temp1=t.read(addrs[0]) + end + return temp1 + else + return nil + end +end + -- MQTT extension function registerMqtt() m = mqtt.Client("wordclock", 120) @@ -113,6 +130,12 @@ function startMqttClient() if (mqttServer ~= nil and mqttPrefix ~= nil) then registerMqtt() print "Started MQTT client" + if (file.open("ds18b20.lc")) then + t=require("ds18b20") + t.setup(2) -- GPIO4 + readTemp() -- read once, to setup chip + print "Setup temperature" + end oldBrightness=0 oldTemp=0 tmr.alarm(5, 5001, 1 ,function() @@ -120,9 +143,13 @@ function startMqttClient() local temp = nil if (t ~= nil) then temp=readTemp() + print(tostring(temp) .. "°C") end if (oldBrightness ~= briPercent) then m:publish(mqttPrefix .. "/brightness", tostring(briPercent), 0, 0) + elseif (temp ~= nil and temp ~= oldTemp) then + oldTemp = temp + m:publish(mqttPrefix .. "/temp", tostring(temp/100).."."..tostring(temp%100), 0, 0) else m:publish(mqttPrefix .. "/heap", tostring(node.heap()), 0, 0) end From 93b889f706929015254b0e0701f6f33ff4615f36 Mon Sep 17 00:00:00 2001 From: Ollo Date: Sat, 23 Jan 2021 19:17:30 +0100 Subject: [PATCH 151/151] Each rows background can be set --- Readme.md | 10 +++ commands.lua | 186 +++++++++++++++++++++++++++++++++++++++++++++++ displayword.lua | 50 +++++++++++-- main.lua | 3 +- mqtt.lua | 19 +++-- telnet.lua | 190 +----------------------------------------------- 6 files changed, 258 insertions(+), 200 deletions(-) create mode 100644 commands.lua diff --git a/Readme.md b/Readme.md index 1948b7b..4b0038d 100644 --- a/Readme.md +++ b/Readme.md @@ -56,6 +56,16 @@ Optinal: * ignored **Stop MQTT server and start telnetserver at port 23** * **basetopic**/cmd/row1 * 0-255,0-255,0-255 **Background color is set to decimal representation of red, green an blue** +* **basetopic**/cmd/row1 + * 0-255,0-255,0-255 **Background color is set to decimal representation of red, green an blue** +* **basetopic**/cmd/row2 + * 0-255,0-255,0-255 **Background color is set to decimal representation of red, green an blue** +* **basetopic**/cmd/row3 + * 0-255,0-255,0-255 **Background color is set to decimal representation of red, green an blue** +* For all rows... +* **basetopic**/cmd/row10 + * 0-255,0-255,0-255 **Background color is set to decimal representation of red, green an blue** + ## OpenHAB2 Tested MQTT with binding-mqtt 2.5.x diff --git a/commands.lua b/commands.lua new file mode 100644 index 0000000..4f9ede5 --- /dev/null +++ b/commands.lua @@ -0,0 +1,186 @@ +function storeConfig(_ssid, _password, _timezoneoffset, _sntpserver, _inv46, _dim, _fcolor, _colorMin1, _colorMin2, _colorMin3, _colorMin4, _bcolor, _threequater) + +if ( (_ssid == nil) and + (_password == nil) and + (_timezoneoffset == nil) and + (_sntpserver == nil) and + (_inv46 == nil) and + (_dim == nil) and + (_fcolor == nil) and + (_colorMin1 == nil) and + (_colorMin2 == nil) and + (_colorMin3 == nil) and + (_colorMin4 == nil) and + (_bcolor == nil) and + (_threequater == nil) ) then + print("one parameter is mandatory:") + print("storeConfig(ssid, ") + print(" password,") + print(" timezoneoffset,") + print(" sntpserver,") + print(" inv46,") + print(" dim,") + print(" fcolor,") + print(" colorMin1,") + print(" colorMin2,") + print(" colorMin3,") + print(" colorMin4,") + print(" bcolor,") + print(" threequater)") + print(" ") + print("e.g.:") + print('storeConfig(nil, nil, 1, nil, "on", true, "00FF00", "00FF88", "008888", "00FF44", "004488", "000000", true)') + return +end + +if (_password==nil) then + _, password, _, _ = wifi.sta.getconfig() + print("Restore password") +else + password = _password +end +if (_ssid==nil) then + ssid, _, _, _ = wifi.sta.getconfig() +else + ssid = _ssid +end + +if (_sntpserver == nil) then + sntpserver = sntpserverhostname + print("Restore SNTP: " .. tostring(sntpserver)) +else + sntpserver = _sntpserver +end + +if (_timezoneoffset ~= nil) then +timezoneoffset = _timezoneoffset +end +if (_inv46 ~= nil) then +if ((_inv46 == true) or (_inv == "on")) then + inv46 = "on" +elseif ((_inv46 == false) or (_inv == "off")) then + inv46 = "off" +else + inv46 = "off" +end +end +if ( _dim ~= nil) then + dim = _dim +end +if (_fcolor ~= nil) then + fcolor = _fcolor +end +if (_bcolor ~= nil) then + bcolor = _bcolor +end +if (_colorMin1 ~= nil) then + colorMin1 = _colorMin1 +end +if (_colorMin2 ~= nil) then + colorMin2 = _colorMin2 +end +if (_colorMin3 ~= nil) then + colorMin3 = _colorMin3 +end +if (_colorMin4 ~= nil) then + colorMin4 = _colorMin4 +end +if (_threequater ~= nil) then + threequater = _threequater +end + +print("SSID = " .. tostring(ssid)) +print("TZNE = " .. tostring(timezoneoffset)) +print("NTP = " .. tostring(sntpserver)) +print("INVT = " .. tostring(inv46)) +print("DIM = " .. tostring(dim)) +print("FCOL = " .. tostring(fcolor)) +print("BCOL = " .. tostring(bcolor)) +print("MIN1 = " .. tostring(colorMin1)) +print("MIN2 = " .. tostring(colorMin2)) +print("MIN3 = " .. tostring(colorMin3)) +print("MIN4 = " .. tostring(colorMin4)) +print("3QRT = " .. tostring(threequater)) + +local configFile="config.lua" +-- Safe configuration: +file.remove(configFile .. ".new") +sec, _ = rtctime.get() +file.open(configFile.. ".new", "w+") +file.write("-- Config\n" .. "station_cfg={}\nstation_cfg.ssid=\"" .. ssid .. "\"\nstation_cfg.pwd=\"" .. password .. "\"\nstation_cfg.save=false\nwifi.sta.config(station_cfg)\n") +file.write("sntpserverhostname=\"" .. sntpserver .. "\"\n" .. "timezoneoffset=\"" .. timezoneoffset .. "\"\n".. "inv46=\"" .. tostring(inv46) .. "\"\n" .. "dim=\"" .. tostring(dim) .. "\"\n") + +if (fcolor ~= nil) then + local hexColor=string.sub(fcolor, 1) + local red = tonumber(string.sub(hexColor, 1, 2), 16) + local green = tonumber(string.sub(hexColor, 3, 4), 16) + local blue = tonumber(string.sub(hexColor, 5, 6), 16) + file.write("color=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") + -- fill the current values + color=string.char(green, red, blue) +end +if (colorMin1 ~= nil) then + local hexColor=string.sub(colorMin1, 1) + local red = tonumber(string.sub(hexColor, 1, 2), 16) + local green = tonumber(string.sub(hexColor, 3, 4), 16) + local blue = tonumber(string.sub(hexColor, 5, 6), 16) + file.write("color1=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") + color1=string.char(green, red, blue) +end +if ( colorMin2 ~= nil) then + local hexColor=string.sub(colorMin2, 1) + local red = tonumber(string.sub(hexColor, 1, 2), 16) + local green = tonumber(string.sub(hexColor, 3, 4), 16) + local blue = tonumber(string.sub(hexColor, 5, 6), 16) + file.write("color2=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") + color2=string.char(green, red, blue) +end +if ( colorMin3 ~= nil) then + local hexColor=string.sub(colorMin3, 1) + local red = tonumber(string.sub(hexColor, 1, 2), 16) + local green = tonumber(string.sub(hexColor, 3, 4), 16) + local blue = tonumber(string.sub(hexColor, 5, 6), 16) + file.write("color3=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") + color3=string.char(green, red, blue) +end +if ( colorMin4 ~= nil) then + local hexColor=string.sub(colorMin4, 1) + local red = tonumber(string.sub(hexColor, 1, 2), 16) + local green = tonumber(string.sub(hexColor, 3, 4), 16) + local blue = tonumber(string.sub(hexColor, 5, 6), 16) + file.write("color4=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") + color4=string.char(green, red, blue) +end +if ( bcolor ~= nil) then + local hexColor=string.sub(bcolor, 1) + local red = tonumber(string.sub(hexColor, 1, 2), 16) + local green = tonumber(string.sub(hexColor, 3, 4), 16) + local blue = tonumber(string.sub(hexColor, 5, 6), 16) + file.write("colorBg=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") + -- fill the current values + colorBg=string.char(green, red, blue) +end +if (getTime ~= nil) then + time = getTime(sec, timezoneoffset) + file.write("print(\"Config from " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. "\")\n") +end +if ( threequater ~= nil) then + file.write("threequater=true\n") + -- fill the current values + threequater=true +else + file.write("threequater=nil\n") -- unset threequater + -- fill the current values + threequater=nil +end +file.close() +collectgarbage() +sec=nil +file.remove(configFile) +if (file.rename(configFile .. ".new", configFile)) then + print("Rename Successfully") +else + print("Cannot rename " .. configFile .. ".new") +end + +end diff --git a/displayword.lua b/displayword.lua index 395ac6c..b860ce4 100644 --- a/displayword.lua +++ b/displayword.lua @@ -54,7 +54,7 @@ end local data={} -- Module displaying of the words -local generateLEDs = function(words, colorBg, colorFg, colorMin1, colorMin2, colorMin3, colorMin4, invertRows, amountOfChars, row1bgColor) +local generateLEDs = function(words, colorBg, colorFg, colorMin1, colorMin2, colorMin3, colorMin4, invertRows, amountOfChars) -- Set the local variables needed for the colored progress bar if (words == nil) then return nil @@ -118,8 +118,8 @@ local generateLEDs = function(words, colorBg, colorFg, colorMin1, colorMin2, col local buf=data.colorFg local line=space -- line 1---------------------------------------------- - if (row1bgColor ~= nil) then - space = row1bgColor + if (rowbgColor[1] ~= nil) then + space = rowbgColor[1] end if (words.it==1) then buf=drawLEDs(data,2) -- ES @@ -141,8 +141,8 @@ if (words.fiveMin== 1) then buf= buf .. space:rep(4) end -- line 2-- even row (so inverted) -------------------- - if (row2bgColor ~= nil) then - space = row2bgColor + if (rowbgColor[2] ~= nil) then + space = rowbgColor[2] else space = colorBg end @@ -162,6 +162,11 @@ if (words.fiveMin== 1) then end -- line3---------------------------------------------- + if (rowbgColor[3] ~= nil) then + space = rowbgColor[3] + else + space = colorBg + end if (words.threequater == 1) then line= drawLEDs(data,11) -- Dreiviertel elseif (words.quater == 1) then @@ -173,6 +178,11 @@ if (words.fiveMin== 1) then -- fill, the buffer buf = buf .. line --line 4-------- even row (so inverted) ------------- + if (rowbgColor[4] ~= nil) then + space = rowbgColor[4] + else + space = colorBg + end if (words.after == 1) then line= space:rep(2) -- TG line= line .. drawLEDs(data,4) -- NACH @@ -193,6 +203,11 @@ if (words.fiveMin== 1) then end end ------------------------------------------------ + if (rowbgColor[5] ~= nil) then + space = rowbgColor[5] + else + space = colorBg + end if (words.half == 1) then line= drawLEDs(data,4) -- HALB line= line .. space:rep(1) -- X @@ -213,6 +228,11 @@ if (words.fiveMin== 1) then buf=buf .. line end ------------even row (so inverted) --------------------- + if (rowbgColor[6] ~= nil) then + space = rowbgColor[6] + else + space = colorBg + end if (words.seven == 1) then line= space:rep(5) line= line .. drawLEDs(data,6) -- SIEBEN @@ -238,6 +258,11 @@ if (words.fiveMin== 1) then end end ------------------------------------------------ + if (rowbgColor[7] ~= nil) then + space = rowbgColor[7] + else + space = colorBg + end if (words.three == 1) then line= space:rep(1) line= line .. drawLEDs(data,4) -- DREI @@ -250,6 +275,11 @@ if (words.fiveMin== 1) then end buf = buf .. line ------------even row (so inverted) --------------------- + if (rowbgColor[8] ~= nil) then + space = rowbgColor[8] + else + space = colorBg + end if (words.four == 1) then line= space:rep(7) line= line .. drawLEDs(data,4) -- VIER @@ -268,6 +298,11 @@ if (words.fiveMin== 1) then buf = buf .. line:sub((11-i)*3-2,(11-i)*3) end ------------------------------------------------ + if (rowbgColor[9] ~= nil) then + space = rowbgColor[9] + else + space = colorBg + end if (words.eight == 1) then line= space:rep(1) line= line .. drawLEDs(data,4) -- ACHT @@ -281,6 +316,11 @@ if (words.fiveMin== 1) then end buf = buf .. line ------------even row (so inverted) --------------------- + if (rowbgColor[10] ~= nil) then + space = rowbgColor[10] + else + space = colorBg + end if (words.six == 1) then line= space:rep(1) line= line .. drawLEDs(data,5) -- SECHS diff --git a/main.lua b/main.lua index d08dfed..c624ff0 100644 --- a/main.lua +++ b/main.lua @@ -72,8 +72,7 @@ function displayTime() invertRows=true end local characters = displayword.countChars(words) - ledBuf = displayword.generateLEDs(words, colorBg, color, color1, color2, color3, color4, invertRows, characters, - row1bgColor) + ledBuf = displayword.generateLEDs(words, colorBg, color, color1, color2, color3, color4, invertRows, characters) end displayword = nil if (ledBuf ~= nil) then diff --git a/mqtt.lua b/mqtt.lua index f239cb4..6247e08 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -3,6 +3,7 @@ m=nil mqttConnected = false -- Temp: t=nil +rowbgColor= {} function handleSingleCommand(client, topic, data) if (data == "ON") then @@ -90,18 +91,26 @@ function registerMqtt() -- Handle here the /cmd/# sublevel if (string.match(topic, "telnet$")) then client:publish(mqttPrefix .. "/telnet", tostring(wifi.sta.getip()), 0, 0) - print("Stop Mqtt") + ws2812.write(string.char(0,0,0):rep(114)) + print("Stop Mqtt and Temp") m=nil + t=nil mqttConnected = false - stopWordclock() + for i=0,6,1 do tmr.stop(i) end collectgarbage() mydofile("telnet") if (startTelnetServer ~= nil) then startTelnetServer() end - elseif (string.match(topic, "row1$")) then - row1bgColor = parseBgColor(data, "row1") - end + else + for i=1,10,1 do + if (string.match(topic, "row".. tostring(i) .."$")) then + rowbgColor[i] = parseBgColor(data, "row" .. tostring(i)) + print("Updated row" .. tostring(i) ) + return + end + end + end end end end) diff --git a/telnet.lua b/telnet.lua index a2ad090..9bac3bc 100644 --- a/telnet.lua +++ b/telnet.lua @@ -28,195 +28,9 @@ function startTelnetServer() end end) print("Welcome to the Wordclock.") + print("- mydofile(\"commands\")") print("- storeConfig()") print("Visite https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en for further commands") end) print("Telnetserver is up") -end - -function storeConfig(_ssid, _password, _timezoneoffset, _sntpserver, _inv46, _dim, _fcolor, _colorMin1, _colorMin2, _colorMin3, _colorMin4, _bcolor, _threequater) - -if ( (_ssid == nil) and - (_password == nil) and - (_timezoneoffset == nil) and - (_sntpserver == nil) and - (_inv46 == nil) and - (_dim == nil) and - (_fcolor == nil) and - (_colorMin1 == nil) and - (_colorMin2 == nil) and - (_colorMin3 == nil) and - (_colorMin4 == nil) and - (_bcolor == nil) and - (_threequater == nil) ) then - print("one parameter is mandatory:") - print("storeConfig(ssid, ") - print(" password,") - print(" timezoneoffset,") - print(" sntpserver,") - print(" inv46,") - print(" dim,") - print(" fcolor,") - print(" colorMin1,") - print(" colorMin2,") - print(" colorMin3,") - print(" colorMin4,") - print(" bcolor,") - print(" threequater)") - print(" ") - print("e.g.:") - print('storeConfig(nil, nil, 1, nil, "on", true, "00FF00", "00FF88", "008888", "00FF44", "004488", "000000", true)') - return -end - -if (_password==nil) then - _, password, _, _ = wifi.sta.getconfig() - print("Restore password") -else - password = _password -end -if (_ssid==nil) then - ssid, _, _, _ = wifi.sta.getconfig() -else - ssid = _ssid -end - -if (_sntpserver == nil) then - sntpserver = sntpserverhostname - print("Restore SNTP: " .. tostring(sntpserver)) -else - sntpserver = _sntpserver -end - -if (_timezoneoffset ~= nil) then -timezoneoffset = _timezoneoffset -end -if (_inv46 ~= nil) then -if ((_inv46 == true) or (_inv == "on")) then - inv46 = "on" -elseif ((_inv46 == false) or (_inv == "off")) then - inv46 = "off" -else - inv46 = "off" -end -end -if ( _dim ~= nil) then - dim = _dim -end -if (_fcolor ~= nil) then - fcolor = _fcolor -end -if (_bcolor ~= nil) then - bcolor = _bcolor -end -if (_colorMin1 ~= nil) then - colorMin1 = _colorMin1 -end -if (_colorMin2 ~= nil) then - colorMin2 = _colorMin2 -end -if (_colorMin3 ~= nil) then - colorMin3 = _colorMin3 -end -if (_colorMin4 ~= nil) then - colorMin4 = _colorMin4 -end -if (_threequater ~= nil) then - threequater = _threequater -end - -print("SSID = " .. tostring(ssid)) -print("TZNE = " .. tostring(timezoneoffset)) -print("NTP = " .. tostring(sntpserver)) -print("INVT = " .. tostring(inv46)) -print("DIM = " .. tostring(dim)) -print("FCOL = " .. tostring(fcolor)) -print("BCOL = " .. tostring(bcolor)) -print("MIN1 = " .. tostring(colorMin1)) -print("MIN2 = " .. tostring(colorMin2)) -print("MIN3 = " .. tostring(colorMin3)) -print("MIN4 = " .. tostring(colorMin4)) -print("3QRT = " .. tostring(threequater)) - -local configFile="config.lua" --- Safe configuration: -file.remove(configFile .. ".new") -sec, _ = rtctime.get() -file.open(configFile.. ".new", "w+") -file.write("-- Config\n" .. "station_cfg={}\nstation_cfg.ssid=\"" .. ssid .. "\"\nstation_cfg.pwd=\"" .. password .. "\"\nstation_cfg.save=false\nwifi.sta.config(station_cfg)\n") -file.write("sntpserverhostname=\"" .. sntpserver .. "\"\n" .. "timezoneoffset=\"" .. timezoneoffset .. "\"\n".. "inv46=\"" .. tostring(inv46) .. "\"\n" .. "dim=\"" .. tostring(dim) .. "\"\n") - -if (fcolor ~= nil) then - local hexColor=string.sub(fcolor, 1) - local red = tonumber(string.sub(hexColor, 1, 2), 16) - local green = tonumber(string.sub(hexColor, 3, 4), 16) - local blue = tonumber(string.sub(hexColor, 5, 6), 16) - file.write("color=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") - -- fill the current values - color=string.char(green, red, blue) -end -if (colorMin1 ~= nil) then - local hexColor=string.sub(colorMin1, 1) - local red = tonumber(string.sub(hexColor, 1, 2), 16) - local green = tonumber(string.sub(hexColor, 3, 4), 16) - local blue = tonumber(string.sub(hexColor, 5, 6), 16) - file.write("color1=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") - color1=string.char(green, red, blue) -end -if ( colorMin2 ~= nil) then - local hexColor=string.sub(colorMin2, 1) - local red = tonumber(string.sub(hexColor, 1, 2), 16) - local green = tonumber(string.sub(hexColor, 3, 4), 16) - local blue = tonumber(string.sub(hexColor, 5, 6), 16) - file.write("color2=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") - color2=string.char(green, red, blue) -end -if ( colorMin3 ~= nil) then - local hexColor=string.sub(colorMin3, 1) - local red = tonumber(string.sub(hexColor, 1, 2), 16) - local green = tonumber(string.sub(hexColor, 3, 4), 16) - local blue = tonumber(string.sub(hexColor, 5, 6), 16) - file.write("color3=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") - color3=string.char(green, red, blue) -end -if ( colorMin4 ~= nil) then - local hexColor=string.sub(colorMin4, 1) - local red = tonumber(string.sub(hexColor, 1, 2), 16) - local green = tonumber(string.sub(hexColor, 3, 4), 16) - local blue = tonumber(string.sub(hexColor, 5, 6), 16) - file.write("color4=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") - color4=string.char(green, red, blue) -end -if ( bcolor ~= nil) then - local hexColor=string.sub(bcolor, 1) - local red = tonumber(string.sub(hexColor, 1, 2), 16) - local green = tonumber(string.sub(hexColor, 3, 4), 16) - local blue = tonumber(string.sub(hexColor, 5, 6), 16) - file.write("colorBg=string.char(" .. green .. "," .. red .. "," .. blue .. ")\n") - -- fill the current values - colorBg=string.char(green, red, blue) -end -if (getTime ~= nil) then - time = getTime(sec, timezoneoffset) - file.write("print(\"Config from " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. "\")\n") -end -if ( threequater ~= nil) then - file.write("threequater=true\n") - -- fill the current values - threequater=true -else - file.write("threequater=nil\n") -- unset threequater - -- fill the current values - threequater=nil -end -file.close() -collectgarbage() -sec=nil -file.remove(configFile) -if (file.rename(configFile .. ".new", configFile)) then - print("Rename Successfully") -else - print("Cannot rename " .. configFile .. ".new") -end - -end +end \ No newline at end of file

ldFA&Kv>m5Q>eArdxJ}g+5je&UUx&s;V&RCA-6EnTw6$BzR(;MCzzOaIw=|s@~ zhUFlq_Q$lQgedY*IZZ(gOb7@6AZy}odOfX;8T$R>OPAWtMbj-c!|k)QIFUEQ@<6Yl zHzxgl_M+|TO7)zqO2yJJ6swwoF|MAX=Qh54aBG)x#c*IbTMNOJp<7lBBec6wi4V?W#9w7S=Um|C^LFRQ=`3w@&7dg*Je{*IdCrX-bllanR& znqR*P=?98=sIc>DxfPWTsS8$pVR7{1<-J)bU3YUB6p7abc3c-n0a*_9km+DS8G!Pc zUv<*qvvcT%x1AgUq`6~qDhus0>S-PHDNX7z(<@0V3%jkulg9T0r7X;>2zR6?Q0y`u zZr6CkKj3m$Bbo4N+!GXnYES6ev87=;WKFT5HN9Rgu@39>!^kYjmk!KH;BB|jHmPj8 zuyz`%GV9EUXj8%3ZEhSJ+JWHEI62iq^a@y%dBrq1cp_lux(**J_G4}XcnwQ)41ZXP zZ2y5iCq0fLgWRz^>qTO}K2PvZk!usapqOshfz}rkb7&m{6-HwrcUUwtlJe!qZ#p3y zIj?I)-D_C2uZRs*_HN=x!9)~kN=CA9ZZK!Zn#w;Q-rAOLFcwn+1AZl&#ym(O?`@jJ zi{lGl7(OwnB~1y$Df8|sO`=n0ro$2WY&{1H6O~U>;YmxLr>k7Ri4`m47rB`e0D4Xf zL#U7*;xosTYZ4o(%ybn^hD%w`qm2iywUGrI)sHlQ5EZmAARE@1cjNwRJ)S4#NU2Z9 z0r7@Td+fW(bGn+Mg@3}r6n=B;$}s47;$CULlC?8$J*9ObpDBFyNfvZ;eX*2ev4jh; z`OST>D#PTDs%Icm)FNnoB)@q8e>EOBp__VbnaM(c0)q>|oQnnWZZtMmu#Bf^M;MC9 zx>FHv(maORIqoZQafrhpxI_p^x*;Y5j@?7GNJN8|Gt3T9Lg8bX^Eaq8kIW_*_n2yV z8Y~c}U2J5I+?<;eF)ooK(3^Q@2$ZF|(SmBl^Jd~zB0V?uFY=XWQqQ$RK{nHc42_r2JipH`r`^6Jm z_rt#h@66w>kLu>>ZI@`%VJLiM(Ed-5cgZ`}QLn!-i}@jFVf6AsS=A5!Bq%$H(eYoB?yQ*&6C)h0FokBjWvJ=a^hc{~Tv z4r;G8V>?aA-#v=W>DILucyI5pX}(BG=Qks^#`1&cPElNo_3+^J4qlyqmHae^&wwVk zk2`f!fR~k`>t?MTB_D$?kqpcevCGce5@5oMeegUNP6X`#ktO``{;X6PB9H$_x4cYQ ztH}F{R9&(R9Pp0>z~?*{VeP`ltjV&}X7av>QYOkMKd!qIp)9|_S1t3LIn}{<=*iM`ToOJ?8lU($gqMJqGNqi6cIKuw;e~UP;jNNRpPT4F{KQ#`1H~Ij~ zaa7#J3PgPV6+VySb?-_FH>v_Pk{(_-hP-VgJ+_NoO|f`Bs)DAoU}E=>&Rk8g{07t? zxb_5N^gm7`{2SysyF6*B%-GL9WSqPzs*E4YBeO)0K-TJFJx~ zcme;U=w$0kNVvt=@;m{Yc1l@v!%U2=k!y@cF~5t&GP{<6l*>(#CD~kj!gCebws4d| zPJWJtF}!Xn=_@jyLmDMX8$j#=swi-tDpO=qHg_B6sUTmHt?&zW2l<#pwWuJUcvhMs z@$0YHxA7%B32+s$>y=iDJ>D{dVz7D`Ss-GKw}xED!&4u@Uw5Fny0>f8OS3iZYyC zUzbkV*I$O+3x$UbacfC(3GCVTNc))i1+I%$I$_d!>atmpqy3gla&o!x$2T3n91qt+ zEBC?(W$OA6AgZn9CB1~xO+y8-hcQ$PSjfL&v^PKR(pa|^*d7WCJ0q!AF1vIozVOxI z6S@`~3kqc(5RXzL(GNLy!N)0|+aWvlr57gJX$G=CWrCvP$YL|1Djde#j<>8sY z$sqF-gLw-5iG9tNW4L5dx|*hiUbd-k#ZZB;Kr*4)9hSkF3g6P>D@Mz;<5zfIHF zsNxbZ(;7>Im023S)XMY@IU9?1x#bp>m9|U|kGIGhUNgrbQZX(l`$F~Se-;b51B-EE zJwpkn!mJCkJ4*mj(=-i5l-s~ zkZ71~kaa92ci?;}0bpXD&NkmlJ&eHyb*l9S87A3LK{NzO>JC~ zbhmaGVOIvLAhbc`9$X>3=O=Ih2qEb3BQY`wO|K7})3Icv%+5e5Jw6Q{xp2ZS#kriH zp4oW?{@ZiY!ckZpoo@1HvC>?DP>N-~(g5Pc$o(X?`edL;rvGx$TN?d01Ru)A-rXUb z2%LX~B=p@HqIUf`F}2L!$)rUvPX*E-8!~I8H(_t!h7>-LeVfPDd4#UKhljVuac!ffwV)jzldn!>Y6ojx;1hOdyiHgCyV@>Si% z*2mCsTx=HHJXlo@R2PEite~nF%s4S%+)lhQ@gi#*H@>#avH;*4B5Yi-j3M!`hsNe^ z<@oH8XW2lOTh2@Qo^eb8b^$1;G_Z>!AB3M{a^VbOg^8G!nzMX5e#hH4fh-Bfn2dh+ zsIVx|un!s}*6?9J8&fBjo@)1~uPYE$4rmM{T?UnoF~w#$I1UoGf(Zqz1xS~Q#a06O zF%JYP%45hUkl5n^2Ti=V+pxF7@Ac8KtgeN`9%E#_CjX2tUnober|B(Ohx%NMgepR2 z>mh&p9p0PLJPEz53~~eTf?tydj^m#tZ%It>%@>G~8vXF5y>g9*;I60r_9dMd-fU@t z1Q*_zKn&L3aT5<4pIPjw7qN)ahI+~ms4Q}b4aAV$j9L9XnZ-UK9lhnz*ori8eTY&v zHa|D?%T)XAIp|loN9vc6-sDX0O+8<`9uw(XDLtOBI{1|Tm7a_L-H$&Px&Bwd>!r7N zj4djSP;iB?449Rza=Jo}CSn4284a!8sCR>98=jL^mlV(V@@A#mm%e~S__ zVGPY*&_Pw})}cBPAwK5Im=ka9t?Rx9_jIi&z>V|3KN_5X|46jtyAWXGTJzD{Y5X0u zu3S5pusg@f1p7Wg$5@ydfrhR2FHT_)@d0=PgCiIIH-Pi(#yLTME)N(YkfgvHu(yv$ zbH|^&W$wth;@HS*9P8J9HlhO@nm-z(I&+}0d}mA~p%KPJh8-b9ljV-%&yvaVohBVO z8|iTZVF7@F)2&p>;wES-WCJY*I|iNnGY04hFzPW!{1T5kMOuJ~qNbnUhc<=77+X8% zz0m|9=3+f3L&xlY4_H~FV#e_GQ-ze^y&%K31}(>tTyf?XexwxU(TN?NlNc}Jxjzo{ z&0G1LH z8RH+bYJxMU0)^$$DJv*36^Mh2WZoHDs`056XL+R@`D=X(5TdV=rXq!$8#mEp$Of07 zn=ivS5`hm^9UKp6DY(p75JF0REhSU-wS&mb_-z}f+6OA;9& z0_JW%`%I9b2??N4P`&V{7%4ZGRg|ijm$982n$hgen3}U#><-9CH(N19u^#O|`sd*J zjo3n|GPmyziQt*A!0GLntx}K~2A)KS40;;|FANRT;Y`FQ-z$Vlun)%Aq}Yh|-Ve@u z5G9OY@FNYOFdym}Wr|#Y6jaijZ?e<}f1bRd&Y!SOVmU&$ztshI1x_-wUem{4!WL@8 z!Hzto&x4PM1@XxOS%9lJhw1fQ9zb05%>V+@P7GG&=DA=ud;l2sEb~H)65?>iaT1#j zvhbzhJig98bo5fX_Jk;&=p04=y4%G8R%$}0zlkUPC^{~{RaGvRMvGd#QnrS1D1syEBu!p z;9$=do{8z9_4gt|b+5m*oQNJO;i~~WF~k+z%KRqArp}V&0eo@k0Ryup1_g0%G2%O= z@q(iTSFw%euYzD9=nP4Fm_IXso6)B5oru)fL=NTTFe!>3(69aJFN17D(t>Elk5)iT zzs96W=kG-kVwDSD5mD)=ztJHb&qoHxsUqwnixfvYBcaiO z-(C(5@u)OJ<^&q?{W2!pB{A`C(h&y(9eS_Egpmv#KQaRuLTG4)Srvn{DYiW+k^eux z-gcwjk~=;Z*G`KkpzffZ4dg_K5I*-uagtare1HK|=r~qE5CVlM5=k?E!&9WGm=!Vh z)Gslj!~hh{u}*#ZKw&eLLBuq0q1FLq2xWKRB0&|X>BG1rC7|Xk`LrY^s&qu^ZZhdL zj=$#zb1j`grGOtI<0R)#V1V#w-x8c{gby$k5+C4SxyA>^&)ZI%`#@I-mP5yu>Hs@} zgOlvjz5%zaR9Y)xk zX|mGPf(^3@{;-3*orQD&gFRNHG$x}9?>GV@1Cr3quJnEG&mfE#cSi(B&KHql&-v{@ zV<7tCH~x(O;1kF}8vul-^y}At`$_3n;jBO7^Wd+V05bEys+eJ^W8n`{$4p$neuP{a z&$s(CK9erRnPzVd-u{(81NLsR`s}sUx*pF>u#1WOb_nxz8n3VM>c;Ckye{F@k5}mX zkOT0F#w(aJ$3|RBmg|7>W9lu7W1jc3az|NAkBYTcY@KK$5NlpPK#02xY$|fz2$x`9 z_BSE{8@%8Re;W-Af$$kuOdXE=&NeTUwYc>Xw33h><1oe~Z&i^gP_YVMvmb6y3Q2Of zK|hOm(H~W%LzWPJi)8lu?bvLpXoZ08bja76F$}8@&M4NuBNO?vA&=hcXbrci^JL5e zLu822Nb_%TP<9A)Dt00Bp}$Q-j3;pAIa((mJOS!d?oeUZD4Nm_BkGs3|3hTsG3dYh z?SB*DE5$XwvLX9lMc01v^(TJ!{GE{@_IJ>p?||QIgq@_J*S;6I)8zS@{dLF)L>#Z( z;e`xQ2Gd(!>KJ@Wud$&#*M$7kr3#P z`<q4yZi*wd9mR?_Ct`7_%ZXbMB~1Pf_rQk-Uv<+6B0l^l zv`nrIW6{BWjCBS$VP~n<=N%-n23hxy25}E8UngEW)VWZbreKv1a!XOHZEnGdi1*Aa zko_y!#gBN3lpB<-kLi=LYiT7rn@Ghu{jmh%1UN6Q_arFE>^VO<+dsZ#8PF; zfSCQ}bUXDUeKUU>RAPVF)Ff^8y+Qa0?>}Y5W7HfE*8RIh?m#WV`><}ny#Uxp1_9t8 z8H)N$3jiv!?=y$bWGBNodg&`eV!anibbD3Co>J|Di_$so-32q8^Ewi<-#%Xln(NSz z%F}K{Er-V&Y!h*~9->Y}>R2rSlCgr25-r~r_f#zzWdm9p6 z^hX9t=$6k!<#E)`@sLE!#M!6|x7sMYazkgNtKDnS6=M3NuDD$0LT|UOWgoN1 z-8E+G4XBw!J~$~eTSHe66!PnsXOJmR&1YXj%|6-Tval66F6ZitWER!IN%sTnpnUgN ziyxg>Qk%w@UYM9Bi&hY(@Q~h#3*d}lb-P|OzVKhRu85v99X9zT^h7;?zFfeb;O5+k zK$s=#QFVZg0K9k>$;1rGh(X)mbKp_r{HlSB+bHoX57In(H=gw9#Fv?*u*;ub^kUgnZ$U0_oSl|ijo6ZNLPGtbMniq4tRb3bjKdBbySAYUDl znP+Zvq|9`w;Mji@E+TlQvy&zwX#lPtf+7X*seI)^(7=<#f0T|7zf6vVI#hwOCIHQc zalmGY_cSm)6;63%mQhcb`FCqy+UthvtpbK;yd&T6=$6KAdWeIqLI#Q*R2xREC6 z%7E7z>Vhjn#&?Ot&oMVOnjoDnXWd8JvUek0wOMT0Y3fve%ZY2D#++%3=#Jh~__|5L8oin9d35+^+DZJqC$(%DcCZ)_I zI_m$IvD>#0Yy#i*L&yP_37?B3Hj%P7z@hH@w@B;)<(}zyDiWN597$Pu2A+{-{v{Ue zy}jr5g5tedn?wp3rH+|$*G#%-Z(^o5eYR15r%eOTiD$TIuX$$szqKe?e`@Bjwty29 z$8ZP6ig%c2|5$*QRFBfTegDL*`weV;PFeAarR(y-2$Xx+<<(o>(7r6&VB}9Bb5gfI z9T=mtpznJ?d#~ZO2d{eMrU&!WZ^ef~4Txi;1_ay{`ZU?hH?iG@TEhWA2P8AN)GLlJ zgdqz8gUo#iKiTKNVupA{Y!=ynN!rx;j{#IGyFfld%$#8@N92oK=8^-nQx0$5P)E6o z%6G|JF52OOUI6LS8KX4dVj@Bb_r&xb`M!rXeJtzI*#Awe!!rDzqQ133Sor{=b)FjE z;WG5mF7@&0Eq&bBJPssW4dqL45SyOt6X^~w?#P#;Vxi0-r}JHu%LNdJu?^duF=mbX zK-#CUkA)BwA!x_(aRU-~0Y7quobLR^ftziNL7ph_s#Ad4>3}cO#=;Wg`#Ge6JR)fR z+<&94MEn@Ut_$R=Ad)r#tBf81eX0eOe}tG4)Oi|aHdGAL%$#t}U^Bd+Q`pqdz@XUk zF2CP431_|VhiLpCT8V~#43Z_zD5|-Ql)pnRUxe>IKN>;b!Xy5J)7m@OtbjPqovuAB zXsKO#-m&oz-3Dl3^q}1rF@SJYcp4ObeKXc)OLPL~s&K#_&c^xf92h|`-ofp%9`^ih zOZaDbkeJb<6QUnM}v99kC^&# z9g+`+ddh5yW>s}c*x!5`qKQ5uoE)gghfx7Q9z6plf(K6YVF=wdXA5hg{y~ZPZFF#j zuG@&v_VqPwqkRlo#^el0+MiHAcKx`nH-0S<)v&IxB+_JgSfOtKc4DY}Y>ZDaaN;eT zX23lHiNWIJYaNiZ_4UztFjHYZB$FuYr+kH`7W~9kZ(|E*4TE2^k+5zluG{_tL3)Q=D!*>W=uj}xl3xk-hEE4hZA5(>% znF9kbz~s@Tcu2nW3Mh~%9SGXDt{Fi=SLECaV&($l1;ess}_tnnuVNINx~wd?V1b(?D^;Wx~k$Y>ag-1_ou~2bj8;dkMcf zjwsc{Hru1{?H!0Jmy_x9y*1#FLVWnQFyW5RMtyG%NZM{3@0KQ>KZN~CY>2|c(KeMb z=u!@vlZ21JF>W$li-~`O&6Mep5VziG`+|ZGw$xzU5NA{iT@zXBah1)IuP_ve5aHY{1-&+nRmx;!=&(KKEQ-sN*ghqnfw z(RT@VU{o#;?OCyq9`Wy*S#toR%8GUyr5U_9Kw1VdT^w-Y8}QB7L`>RD@1-kVKR2-s z;90=MA$jH7MF3HvYJHme_OCI+MKZVc_B)I5P`D8Rb*Wai_#)0tSPnHdHE%(EE(>#N zQl*yYXy#}OgN%hqz;sDXQCgyI^~w`J^-18C<54L5195r@h6TY09^9LwU5;$}#yI3* zHbX)|so3q*q1jm=KZ@FaS?r9@SUfAkQ>C4;$~#+YFkQNP*4@Y2xml>Qvf{tu9+x&p zHfK@dM-w3>b@pn_%*F!KE78WU#W}kTf7xT6iad1FAK3f}A;reli$>=uSV;7l6`7y6 z02+bv^4dA0W)1wS=4okcF+gBsw$HtQ$Fl?CrPi&D%A8QFXfaXmvyFA;yK0689Fgsu z)?ir7HBYAKbdP6C9a^awDpE&H9~x1k#^Gbt=4nnk@t(v#um43FyLA2=_I+gv*<{ja z<^0#}?`IU2Gu7ILkfkARV}&BC^HuNW=ZpwfdeL!rwG4(8?%>23acq)Qu!k#lgeSpz zP}nzGEz8&=8uy65{=^w=_}_`f-Qp=0S>kIsgC%-vZpg-&AhF&f6N@zZio)mpSw69* zKgU@3i+)5|-ima=k`UTFc<6-lV#9Vf;sPq-l};KQJdNOzjH^k6fuJ-e;+BGJ1b7GX z9J`Pp%HcEv$HS5)1~|XfO{IXFvvjNmiLr2M>aoZB2Vg2HBxr6;&j* zuQ6=(P!&ZA=WWS4Rn@_X^&$F~3r~*L4T#j%!=!2j7#gHa_GKaqkJC>O?FIE_{*G7& zyjojZQ3wL#A|+=Cbl-A}s!h@QZkb;kVV2HLW3X6M_3ZHJOSP+ILPoT{HhO!dwp#Y= zb`7lgHsuB*vvRQBSS_p68viS@vDD;r>LSv@m?{tTm_S|Q%ffzbRJ)NS~o9kJe zU_gKv>=&gP+`A`GZ&VVO9fj{}5q9}z09V!;XQ|C!TcBL5DnpI2+&Ye$YiBco=JOCSiMUuu zyi{a5HM=Q16Q%5Cjmh=STm$F9afz4@7afA9k}gVWGIQZchNOw^+{7eLdYnf|kXrM} z1=OT;Didv>Du6RLJ=2pI?`a94^3i-G`DtNOc!61-ey2fpoJi&4%@e(OY?{P25Re;m z1R5#=T?Z=wTv%t3jVLDfQs_flH>bnT23XT+`rSv2JgX`O9T!UI7eA5h~=0~1(~0#1U= z`I(mcSRIMF-pFk%e|)vRpz7f8v(LAo*c&@#ZGo56Bzw8(#XqGx^XC1JCvlZWUtqp% z-eaD`3QyxPa8W0U88ps@K_{7HfWdMUV!1D6CZu{;Sl1}aTOu7TmtK7SB$43g@qIU5 zBNvg#X3F`-9(&~j1maX7?)|=adh;+!);|?e3PRb2`q0oP*5^pO`we? z2Q<5qKc{!v*#G&_dL+%1*~T@80sy9_m&;We6(Xx#YF(PTw5B{a#FG2ZR2YC;qf0eQ zW&BaGQbr_;Qgxn^|5$X|LiYl62G*&Ys}u&u4L>-1iO2((ZM-xZW;aD>L5k5lAw|9k zgJPIp23*z<2TG4ig%NQGuLzLVtqN37TmhfKb#IqsH##*R7-v<|K0rYO)7vc2Qp{<9 zJ@}LZ_T6D^YpOX92rhGB?^Zx0l>Lz$m@cf-E#!Z@M4x#<@^?Fc`Q+r1qeINDLRvKb z?!=9j9w`nG+<+*3LwbAt2?)f7xb?xQ7qM^HNx|nSiVM%2mpQS>g^e*U-h);jRk*q2 z$gx&epBUp4Xb8lcA1AjeGgh8hbe9GuU-5%23%F#&9fVAvD>xQIUp{o))^`98oO8?9jJ%(wc&D(X;f;qd7GBGNW{ zJ#sSmY;h#y2^d)wkH#Q=)prG%w^g{t+7#!PzW3#)-{WqLXo!4rh0qMu4 zBI^QD<-ZZ__nt`Js%8t|96%NA!!lGvbzDo78s`PN{T^7!Kp>7dRGuPWDM6$ZM;V*5 z*V5F%WbX(o+WXH`kRF4=bh+~%9$mC;0;@R}6IJ&ldCXog9vw9;o$75ey-8)2hi{6hYl5fu31L&P%g(Y%z(&~sh$mK;_ z7Tsa3FMTO5FLe8%@9Jo3ZNB#}1w{gU?gID8cb3xZl0kg2K4IwqQ%infsF5b8wpmU9TyN2IsL*xvdR2GTuz&& zt&ZX*xn0?>hScdPcV_mqrG+cS7AIv79Zi10z40y^yYvk6vRHX$4Q+~=Npvl#@5W%? zm1m-|HO}nh7c__)$3OFIf@X3%I2ZygYlow^BIg!+<}R7Xp8ncQ`>nh=42gj z3lO3;H}SUzEU8&IRVZ^*RQcts7BMYka5hYS%IM6cXJi#*gq3H~WH$UQD<^*`|1DDI zrqNmdBSvSkD$AC-r$q{hwU`N9|KLs67m~l~{)~JNUDVb~S-X)Fb-kYZc-|%UaMA3t z-6LW4C6mizrEPCVnW@Ahx{cG{pzgmq3;Q`6s`gd|D zN|mXJoRGfI!zw!qw7q39ZHlh4*gVyUvV-YSX2G7t#VeXyMYuMwlHWDTH*!Ffbd|x; z4>jK~F`p8cJVr6vM$_YJ`-eO=?e`&LIq=-_n_AYaUUqh z#I(hPQFW-zjoEgzhGHDRV-_mOQ1Xq_4(j3^oZ?^v$`~p~zygZlNXF&_y?pM)`ory! zYl+U1BNIj8`s6$AQAO`EMVrPP>r`7(&9N!go#nTUXHGXXBk9>x9wK!s{9F%X;t%kT zN$|{KNk$@PKltMX6k!2>Wlw3rs5=zGA4T|*bCvdQ{++z_HggPuTu@F;EqoM!5FfR!>hy3`XyxO--v>!(^YWA_~yjnPMEs*g#uZExHWYvWX5+y+@1lm-)J}kO- zUfLd<{)Zw?54S+hiA+4UKCyY*r#6EzW1eFVz{u`7_MljC z7CeruzK!^?UD%B^didXQ%-xidDB8Wlz_oB7F&lnz9OR^~U43wkf<9jos?niHn5{Xt zKzS}M5t+qQ!U7him+o357e_}bX{w70g?Y{8xlOQ*I;^3cJ>GAVEOH=gM!=$E=AdUv z(k4!aQ2WM?Q`T`C^+VI&L;O3 zuL7<#_qx!__{qEi<+CMc0px8LrwG~^h}ssm7l_x2D0b4kd??cj<1|~3{LrSSlJYa7 zem+LJTAh;eT!e0S9OW_4-uU-jlRZ?o5Xz?h!9CnxO| z;kPob2-r*B3a_`oiv|`yVgw=rLC>hzlU}d~7#d6CishCF$AQVoe?8Xno%ol({AB{@ z92R$wI;f^Yu8)I1j?nC&y?d7_X{x)mePnaHs6`P&9En6JE7kZu^<(-ar^3i)WM$xI zKvwl0>Fzx1?L2El*uUZ8o}u1TtrtoL8!fv|&OcOkgOUAweh76<*2V73rYL{$ zskaE4`9gF>>+J_mq5hw_m5p@erkHkU-6iH-hIlW66-@E)%#tdFxvbp9O?E7s;#fA> z#)1HDmYY36Iz{Gi^U-%s1p@<<-wb6JAh#NV9tFmYFgDK0n%*Rd|1eqkRtL-_p?26< zEG5^aMLef_Uzj~PKJ3ygt?vt|Hf`dpwfq-1oL|BD$K;#y32LxSo?`{9wrt-8@X0X` z@5sncd3b#&o;T*9iOvY62F7KxoM1X5gb>y;Cc}3wK;OPt!RxUBK=NpGMCW8kP|{M`MD=3T#C4zxuVJX z-z*4*Sw0CWUYk{o^`+<7j7x{I)KP%&p714bvGanKxxM{qs7!D0WP~cSa^8 z-G@-S^|B&`gHaC0Ianuq$9ehf&U_#MvmJs%bn`gj;Q0tD!H<7m9cvE zVnon{WVgp@pXH$3uP)*TykZ5Df1NES{<9FnsWFHUTI zC}6vwg|5KafB+~*4nJ%k07yadvnfd$#fJI(UkB>vSC=`Aw95lC!RoRN^O=EBr_G{8 zLh)n$XWB0FqD2mop=D$;((D^WR1 zN#L0@uP8Up&at`ajTK-Fx}1oYbsM>7qrPz3klAXs6=@NtVPk(;jFEJ2`t)LDsrePt z3j__S%=c%gU)5zq1}$%yytMQ})Sz-O%@vYeoqQ>CPfkLSZ1r;3XJ|`daaMMcic>jr zYzBiOs+NTWj`F-o*@&qh6sryrm=cGFTD`ocU-*aUT+X6q{BX*0Vs-`KC${^NxNzx` zNZ)HBXJeeNBySCaVdYgg_0fA*^W?7Oz^e)c=I^J?8?6@g;aE#rk&N?rX2eAryeGDnn@h5!AVu&FF2#z6!&n^4#o3QT$rbjc9n-TmB&y5*z|}pgcpaXp}I6Dj)`NE^vGU4;}aL!oZD| zrB;k%UXPU9K@Mf&SAqc|K^Ik6i<Z z$x$-(CSjpJC@Vnkz}!IkkfsNsa);dXPKcc(urL9?+1lPg0$ULBnyU=8pGvLiy)LOr zj!)tr2#T2_bTc=l{D~>$)24RsUMj16c&WBrlLAMN(U*?_7TKd}74F~JG!JH`DRS)0 z{sFh0lw{!Nz!_)W-T968+peN}>(!OA;wOrX_GeDGkCZ<=^}@p&?#q85C3}a;aM5dg zb>uup(9sveYtj6~6iDt(C%1I38#kefYtNH8Zin!j&mkqsT$>^*w@yLW$Ehtj8LY}s z;3XLi#GP?Ud&+pq?&}ksS~ql@QcRoA>_@RLb+E~xH)P&F64FuI7vu{D4)PVQ^uZ>W zMq~3{vyGMD8e9MaC=0`OFeLqg40Fny>+hk7(;eZf-}Ga3m(%bCqsj^Y@4nzljH_(o zomb}gvTH+1m=WR~^IcyLZNKnO(k(xT=F!U=m|jx5WufGy zXZd1u&KFI!n~!8XE$VxTZ&?_?rD>WxATvw%Fgr2lI4uy(TsYPKZ>hO_apm$c5$PtlO2b?Zw%63(urD~J{QRi|CmoZEzlC`i z3oi9F_Gh%<2J}a00_g|;Cik6%2~>T>rna7C8YeeY>A6mq7uo3qteoU%O$2z(3T80<) zC|RiSs3hiCpMA?wLjwhOAJkEB-ef9OZK-y)>VW0Ls@!n(i&n8*6z zOtYzl;@+ry6ufZCas1oV%Bk?3T|^-|zYbY!py((PJD&Qs?{8C)YPb*8oMegTya2-e zl8^_2UYR%h3rhzjt2$->OayVF$G?(Mp7lM1H`M7$z0#v1aoU9F$Q^&_Z#hZCx?4;I z;=iOhKvAL~t0iYC|85_$wbC%t@QifO4P9tM!5{5ET@LmhiP5!6bLjgy-oX5sJ}lR#m>S>X{ouFw00QkGL@-|X=rqRl zHC~sb@wJ!Ak;#fxlH>FVt`e&GAlQj{y??*;Gh%|`-|e@l!KjyjJ0gY$ANei)BXr9| zi94Y16Mx%O#80UO`;{VDM(JoV+6&dDbv$E{oVV z;T_17o3)J*`dP zMxsTTpZ8_-i2z1Kmq##-U@r{cZ(rVydAzHi4T_x#Y}pV2FNox!;XT~Yug8GE zj#WZ)|0SEJn=ZU}G@}pkk|4)-`jM5327cY2k&JhI^LD@eB7Wmn_h&pSeZ%bQ4<>v) z$E@rhPx#u?Z?A95_-cfmj?w(7FN0(i;^y6;{4{l*8Vow)EyAkL@^AIqXOT_7-`$@f zt$dgF&ds1L`ef~e3}QwO8kAw>7R-n}HUDOiwOB8tp2|J^8zTKXoFCQn z<}9<+SQ>H~b9Uu?;3}C6BiZlRIL8Cou4ND!UCVgavMg>{Hdv*GsG8AZs^+lmIFHdZ|2|;~!aFq7vbm`?*v-e<9@`19 zc|-1FSs#71<&r2G&{t-#zo6`oB7kA`>aJ4xa)mj!)eq4>k116$QK-q31+9+&gFcyU zU?zuN-;~W^z8tfaDg9(VB zqbUZ+;~-R$?0zy=SVwBDNM`w<^#<3YecW6FxzTy}QK zE&lHI3+phSO>L;6M{2mi&nBG4ScIp5SAvLB^tt#PdB}7A^EUH z%aH7oxY8T9nbQ@zpD=Kn9l4Hl&Qr|c-ol8{tjpxobIlA#wgJ>__@v=hV;&x8fjxof z-@cLohczqTs&qeWxv%)+yW?Rfbjk9qSvAM+nQltbIv;jfGi|Ed3w%EtfcPA|Nhlu3 zw@$DdOqPc+kfccWZs*LP(Z4{;7hk`QS%k(X6n&7g+y1M&EHlZqI`tG~itoNz5(A}9;<-0xTjRr*jeRN6rRzcSB(4udr1!L@rN z+9feHU0evXMiS~axT06>c!i!Lrs~=ho8%p8|MtllFb=3w<2D#y)(WlSOIloUa&^6N zX!wxI@yg`aPycy`(!2~hI-If_oXg5qXRo**x>{!;)*W}eA!FPF&eN~UEX(SRFKLti zGTHN&&522y4G((C5fc{YS<3vg!1R28vntV8;_S_acu#FP#f36RxQgOr0AMzivz#Rq z&i_#Ur7O5d9~Zi}^ZU(Q>14-4g}3Oyt#~G)J3gME;5Vn8>uhTlndbKIDQZgML z(V|F+%qpU&D%uggq(Vv8-48U=_T`w&-B7$GX}Lr|h4G_%(n z_Q8QlHP@B|l`)^DmOMY9ik20{E_#txS_m8y*Gwlr_YLPs&C?)#g=843HppO>s+Zwz z_e-!&=4rBbFwSbkp`o%?2yByOvTs-TMAxDCe2)Ux+6U?(zPewsRA=u-K(Ll&W+WBM zf&R=ntFvG2M+5WS92b6_t*_GU+tB887@HpA9kcG37wi_+mCPN z@@Bb0GxhPDJCm)-iM6N^bVNkv@|1g1?zgCy#zqO3kk??gVRh6jBXo-iwRBxGahbqq z0yBR3Edp$iw?L5xbV>)(;^fS3@lZ_f7VnW9aE0w6AH|8Da03r+5(wBa~JHSQjzk@xTdEqU2 zo?5t_-g!qdiRfac(`1gQs5-Lmftks#qjyF}ciF=5Cw`8@u>iS(Uv>Za%O? zQSmXMUlKC}-s&h*Ijjhoj_kn$BhxNre=ye$hsKB^d25XQ=?iAm#R$njElpO~DjwS( z8LVd4NaEb_7nlZu00e~$1qap0sMMq$_cfucHO`w_x&w)A(0|mvqm=Wg8OenK9cFJW z4Py-~7Nsh78}Fjc`w{J7X*_0})NG9EGDeQadx-a~MM00Jso+>KM3{ZLt5`*K^m0Y1 z0+CKOHB3S~Fy7TiF>+rT))O#r?^^boYgpL6a?*10idCoP=h$;H2G2R_YJ_&PaHnrR!J+p#~=wSThjf`~;2)sPCG0|=(H9svGl zogG92{B!h+iWJE616|;Y(5o${kswZP_N;Mvp7Na#i`GR=SC|3#-8T>yi?bBoAtsy- zj-&?00%nLduL$QXE9ye1sO==N8663W>7sRn|sY6MfZFoa)V-%$anl*D$F1^uS5hzC$#ZAyt-HH3j+V22P8R^Y&wgQ;4nj zVKh$a+sMJsY8UH{BD7YF22IVA=*lZ$**bz)wjJ`Y%b4r#nm}~2ZlR+oHd*&G>w3&X zRy1X{`gI|8LRQQZLzpKfFoXa`&SNocQ0KEvYI}NHpQNj0l9v5ij40as)Mj)KY`Bp%AqWBmQZHd zp%~0A%e)t-UZhi!DHd|+qCXNZc`jT7(QJZE%}<7r(GtTROG!(~vyhU&YJIC9$`1eW z)@XE5TqZsLp25ojM{}7Dwdzoxu8r=lLZv!uEeyZY!nmdw(==-qiC2rZvBm3r-9u@> zMgRf5N)@dmkCvxl-WSa^P_XrM>TVnf_-&t9H!MmRY(mKpd>3TwseauY(@d7kk6bvet?jtT1xUJnjG_(Sl26Jo8o~8ND7|xFeWt(F@?+mx&_IJnEuWo z@&ohmnBc}gPcBpe!x(VDguKWuzgzlFI3ogP`A4d_0oxdJ(16!Vc)f<#J9v5VYR4;t zl7;H_Zw9_SQ0;^8_Q1Ap18kd^wFE16vIgO=GUgkqD0PJ9ni$jbutEEVWiW%m2gV%2 z|I#!}D@Xtd_gs_0^gM^(hsJ+z3I6^me&>(lS(py04!eu6MI^T~pU8j)EVaTqnv|}l z38iYjNkrP*J+fog5KKURnbvn?2rVw00@<3)xy-*qEr;sLWlX5)wP-n&!_g$?GD6`3 z&ImJ?T4Ym7ZKz;9ky$`U_;UnxFugMOWiWg|NXYVyT6B}gfXk_Y5DP&p5dl}g)L49% z!S}HY{l>_GoeGD@V2>f=2XG8|4DP}mFJffMNivE92)Q+c%iu7C6`b6WvY*Q^kP#To z3oK>a{>hdFc-&9Wf{-p2rKbLC4V^tHf@=ylJx@w`TAL9en8j1dIO=4L{biAT$HoR; z!IQ4O%%lv#7DH(7G0~3TP5k0ZCSOIOtw%-s??m=Be7cK#6^}k15vwn=v(f-iBb0+x zVXSEkKbt)ICzSO7zIBn!b%1iFqEpzz2MOu^ojh7IMesd|*>&Dy2L4m3E)H&)5PP-g zDpR5OUVqW^*b8S?U-r!$8xi1a?Nz}M-7z*I{%4~77b5#F^kW+z(SsNf+6`f63B}?V zf6e-aV)HPLx6v^_6M76e_Ju{{=TG!$**ax!+i1&aL@LQ!u88&r3E}gmA&DSDVL2iD zV6AB0&#L%IqVin|vxdonqLnnI2G%1&3|!6%hsptOVTJ*#P+bc006kzOR+r^y9T}lP zxuavFTri{%j;}VPhSOcpV8bzYbN&LFTZ&G(fUs+H z&+En)^ls6aiX7~Y^BCE$DE_&jIzL1O3~(C;i1VNpwsXQoOJ&UCqO%4Y$1R@$Kk!O! zwxj4#_alJGOCE#NM|n%*|GBK9_50&C3<*KRMg4`fhfPK*Z5harUq z+0=|?q2@GFjO>Pr*iZpRIESG{PBGue@FRp;{A1M!sDfq+wAjDNj)5>D$b&I;WT}O| zQ8or@Es%cO*)^D&;U|kYTft#XzT`Sd}w1 zbstK%VtcL~0tL{Hl&y^&<_3puD*TxFQ-4?oM0E))+4a`&oaxeJC^^c$36p{Pj1W*X^Bc@Y?AK* z(R>tmohxO|GvI)#QVldW-?LQR6p;dy{WiL#9?E5otmU`B8BwS1OH&iThWA8eqljqq z3Ek1)b#+gSF5+xllN_J3-oWQ@u8Ag}_lPZT$qA=zF&h6lgNivqskpb#_7fxb_uV3ye4`{?(RIq9y!W#(qzqL`MqTi zw82re;8@xGuCjR}bbi?!pKlZxD#kfBP0m^Cdg0RO2UchY$S2b9X9mGm;cWG(MDx>F z0ypqyV7D+VfOh0?Oe!dP6iTAIeBS><*Vn*BQRn~9%U=1< zkRH@dJw);;VgB#$ET~yOUv12MXXg9(`F_5i=T9;q)3|}-jxd7P1-xJ2wBD80h&e$@ z1%%Bu$DD{qEc+?CrSqFyZtnue05XUbklZJZaNwQ=-K-NtlEZfek(TT&3Uf^0C>k!{ z&;ymkRiirB23?w{6laTQUCb4UEj?w~PXbtU{Ohu)cH*MzW7l0EUblsHEW2X83q-4H z1J)AX%n5z-dXh(3alhvQWctm?0Eb%=C7|<#87-CZ4L-c5A|y+@+8GQg1>S|h20sY4 z7dUX?@E{V0iL~|aG5jC4rxmvuadh4dgj_jnZ;dd=um;4DaC|;?WW!0d^}PfC*#9z8 z%%Yd#Or>ypxc7p&>P5-^k96>;f%)HB|6#gkARnx0=Ib$c3#AO~%Iy1;!c1l6j{jQU z!{*Q}veKpRWic)~lr*z}BpuT;?^IqCKIe$%5amUkGxxAY5gr7GhaBmsu zEG37uO}X&MZg0!r7M_Sp6*-Cw=z}Y6j!wV53E|q9)k?FPeT+8JP~b4IYhw&Ek1+fq zfJ!^>?&FIF`NCm-VaO)T2pFotFRtxP(2F1z!Qa614dfzd$6;?w-bVJ+81VYXgwTG1 z5?iCm#U?5ZRzie?uBSR{DbNLTP4^)5p*sugvoYT^)p-ma%o7u2`3F2INCH7 zl7NZV<4n;Yv8UFhOcV&A0;hhWKnxYAV9O0WBf`&4;Y5r%%g5vl`{QM+8u#`$zRMAa zyQ(nH3Dz3nSk$YPjt4->$&G$N8to)>InYmZ0Gc^-H=Ie?-79w*A4W|^@Gsl z&Y{zn=b)m%wNTn^Vp!ynxk5IY^H7W8(sBZA>K0S8`j+gVHjJAk;2p(o2| zM;mRc!Pe7EpT&*L|22caWe7Ir+SnhHIg4>lqehv!(-J3j3dqZ(cJe^w#0I5>(2;D) z6NZM-S3E=QRN@w}}Kwf8a z%=OI9vKJJ4mzZ#t;gr zA>5+N)d_huriL5safuBRK1X|@a3c{_Xtz_k1X7lpYWTGr^f(#|2o}ikAOT!3Z2^pY zj_&NmxZ`kNjlNmWu^9XMetB;P2fZ9Ih$JrJ5$7($%kK)YaDRIqYq=-|He8;dmoo^x z90u}bf#nn(&`Cy3x$mw^HLIiRf6c**Ho~f%-;{_mJ~gwE-JELWxk;WoGoMv#zLT5e zOQlM_9^Db<`n88A4mPYAZtl>xGBi&0mIJUo0%|_|a+t9OF$x_&hqg&qfItuzFrP;n z2^WoZz|auG6ZF#IF=Nfe-6___q5k0P{-ceZD)~9qsUr$>-GaFVbjJx=CG*~WLWKJb zsj$Dc)KY3&Fqi8npiAkanvSnX1Ou5$X~||cqCGI2rvT`O8@D-6|A_rs4{FE!6HPAG zpyLl@q3Hv3U=ah$u?7|P1lKTxqEn}fw(p|Hgc$~FU(c3E!A<^=7$tEd>1ZP7tE;=nZY zHngj!tzPJEVmgMYYz}MeDq0r3noEl($8ZFmp@DOxe@ZYP9<-x#1P)O@lzAMfOaUE4 zY_QwCKCE5gG@M^6`n=vjZ`rW-zB7tZ7Eya?CCQHgJ|03pN8ESTv}G{yB9Y0s@^L%X z%oL)6jdy!JZ1kux&CPp$C5Wy1f@o9Ptr=#n&+G2^=VhT)f2#n%O&>GTP+Z!bazWse z&;!SnF@awow%(Q*7bZV&IHpr+r6ju46q(Iv{^HfDCy#Bl^NzKQ;(KVF(J$ z^t0XYw3UqaXxk&TJ0erf$rrN2%cn3-1BG)lwLqQv6!CtKy1nEXr4xDOZa?f)9s{5HTBa(Ky%zGYJr7wR=Pu`NMyAii`Hd zXLC#1!PR^PGgTv`@KL!PUjdB+^K->v# zM*2E-8o)OIm)nN$mue%lVDM;fKY-;_n?3H8;_s7y$A1i8TcX^8X|ID8dM zBW%{QAV$Nq>t}8#vU^umyKOf<7&Oj=LkTcdP93#&^gKicur-!|>Zr9DMEHc~~jcHX5 zEY~>dMzR?dgH@o|Cq}>?XU#zvnrO}u=#@G_fMInwrMx&wRN+DZWlusu^b)}|2bsRi zdiI}^_qN+Bi%z{uZca#+-$^DL0!(ITDr^wks|yr8B^tJNgz(y=iC>N&1F5izseC<~ z(U-i*DZkcE!k2+BAgp8c!+LyrCkfxt6O)0skb8pj#^GN*o-s?rOAwLnu9UQSUtRlj0WWi-TK#?@Me^(;%B zX88IJHZ?H{Y3frQ=G4ISP7P)*n=W+dS!9=^Da4Y|8!esOc$L@zfuJO8rLIX6NXg#; zSt`)d=>G%^I^HLczt|L=Hk19r*<-wXja&~#EF9a6NaqRNh^QN zbiOa0OjGR#c}V66aViJy({!vF=_K?m3IY#~AeLyj!Gg@}hnG}zd%H^Btn3cMz%WV-wmZrD!A za_V9TAQA{bl$C5DFaa9?7|M;qM8{GB6Q)&_$G+A=^w-fYRTPaf0ED;Qh!H}`pEJ7XvdAzPwrbM&)n=d=w zlPYYcnPi^#cb*6Z9G#fsK*_Z^b}Syj?3-#X?KImxOHKj%rd$KUGixD=HOyw!W) z_{p|QdrFh-i*A*D8}COBT8nI=!{rhJyqlr*N%MTOs!-f0^ zAwN>gkGk<3&n z6jah)!*gN$kYutz6U#PJ%Xw z2*$XS(kgZ{WXdSqHLlc%Yb%6r>c;84NpDw~da>;&7vq^#xTwY6arM=B1ft2wS$y~Q z#t5qRdAd1|aw^9eeG90s;b!D!t}+nAFmFhY9FVYpQAiTT8t7*#ClcI+Z?m9DI0N>3<=n!EG+(sH>(1ZA2z@~LQAZdNp`j!L$-Y_QuQ_0R3WAvr}8 z)&J={cgqI%JW7|5x$R=kEF_(>&l`8QoG>vY=RPrQGr}sLctH|>X?T7%x@S6d#Y@}- z9}r#NMM>}0x6gD0yMs|_+CJ4Gh7nn+=BmCcz2s5(jc=il7a)zDqZb{NZkj5b5?F)^ zAA@@cso*@R0HeHERhov zUpdr-+%wS~XVC_<0}jd<9bRR0_dVo*JB0fo=goW}ksF45DB1-j{OYZ7BzO-JDMK7v zz>+9;Y~odG+(~u)AIcZ8Mk05oth>2lh^%&7|4@pw@vLj6Y@;!g@n)K;PDA)*1U2Mt z3EvEp))DI;>S@!=0w%}vX3nE;a;i*Yf^oO?wjBGLo|voz>usgVuUBvoWK<^ps`&9| zFR3meJu)RKS;RHgo~J|z!&VRrI*4mlo;U7Bw&dM68CU?0jf_jonb!jN74}`VGTySD z^uonUO57}kFw)HqqzDA)7BEG*QhNECe5NoXmSfANHKilOmy&FRoDdA1qHD%-&ZZNH zJRmMP+uQ4iunh2J!F?@;-H4F{myW<{cTWIl44ayOHzoaIuKE0v`R$c2o|R=%fRti8Xb zLZw?%_K@v`@?ZSCTow7zY=l#+1CYXjJ?vaT7~+GE8%F`$P?aF4V4hN-Fg+%A=*=uk zxX^3%cmyH^RnGnT2up!tWg|EKQpZJNbO9c#%!w5zzMpWIkw01*no~Kqv7E=^$PPO* z|I?2Tzmg!fTt57A6vSyn-mn&iP*k6N{!Oxz3A=rWJ-}z|kok-qH}VO+nlt_&2 z_hT&?8aRd*y*36olWQP+BsgT_4xM1aNG2=_CCR1W{&nv*Ex;G`;&Wu`+^0`nlLy~- zU{CI=d$%QBdxol)Zzc8Sr52(^hTCgW5ZJ}S*#!XVK|V9#7aqngI6cL8JKRd@?P+0A z#qL~6HJRGmvLWjJy}6VfLP9n_l2EPGUMJ-Tey^Ypy-MZe+`k2}aEbwQ!Q$G&oU$#8 zn;u!IuXX8jY8UGc)ILE+{k&ycZ1eW3E~Z*=xE9x3D)giyz03^;SP&|BfImC*Y$%B}aH-9FUy7S2JQ=mDgZ^_&giJ8IXN&t@G9oRQ+nq z-knCo=O3T9t}f5Ze+F zZs0fLb}n!ufr9|-?82*bBJ7B>R^8;|udS6fps!$236Cq1*uE~I=3CgZ9%+CExB(o8 zi3aNc6_Dc~00;&e*D`|W%Qe-4BK=PNmSVc)2~A;!-flp$prP6f$Qu;c2;-XvMQeTa z)e)A}ipO_3x*ms;Au~0*E{?J?h-7EYK*X_MJZcRC!YaQbHN9lby{Y>2djq<_O5^0a zol&{-f5UG{p>3aU$pJ6{Uxg8RI;W%-DUq<{qKY|{N_`&(NlOIF20T z*rHsmMA%VN5+IIqYC+d3P;5_T^u-!(QTiQv_W1Zigp;$TJ^4ix^sMufS!-idMpmOI z>B+C6$(W~whYIj*MH;sPW?=uBs1pMAIfPFN1*8q39BHkH`djYTpaGWwqbkb)>On+; z>o^HKH~}q4S8-gOQNm=`!=*Z07mCAD6DOZ`fZgHt8WPLPf5X)2snlYo4lIzGa2$XO z@G*|BB?K>lP@rRsiz`fR!f}~QXn4d~BoX0cix?;oQE*X0N;zK|4NOx2J`!l1?r0## zE7Xd3{H;WERN!2bjAF|@8iGiEKN`X!yGE~J5d|!4P9#RcN*Ld)RS9hf$Wph)&b$+ZKL;8|Ha5Dl7a zpzq`RAy9WP9`9CwQbfc&M9AXGcj~NjjQNK6sjeiL!x&N^GRcMuq-0D|!Muvx5MJXF z?r*FOeeqO^mEr19z?Jr^Fqw5LFaEi4H*9JR z$q$t$-r||UsY-b$oFDs@rGT!~xUu~olwqR0I00Y-h?60wk_1bul${H%&5v>yOqk2XadH3@^>j!=cJ5x z;L=%286D*By;SEsY9Q6Gf;4Vsc$ttsAfz`7bXh9dNEaS=~vL zaHNKiF?<o~3g zzm3Y=1*$(w-1&;6lZlxxGS0tBhck5C#{;QB+^G&rhu>nL;{PVKd^c0~v4l`=NpS|e z)+HI5cV|oN!(23;+(hDH?ba)@*>yb8M}#O$ z$WnpxDmBPXU!j4!EjAK7$Ueahw09~Gy_PTEiD)4U?hO1_yO#GrMp(WRdwW54DP8Sl z9B1Xiu73#oPr+-J<)$u+0j2cYI(@^~Vox`3eAR;n%=D_OpXaoVX1D~P`_2?Yw=3_FTNRHhiq5%U4( zd|WbhNQj;%=VOnCkxOSGA-v)zsoY>C?;wm}povI^T=yU|3^q8xK<#LhTu2G`(HwRm zu@mGFyX(Ym0#ERFCdSBZBt8sj%n`!SNsED?VFXjSc>c4ZE4us@NK_Wgb@XdPkL8E1 zsYQxsK-z(T%gKP9j4_FOOV(GXLx&_YsO(#icP1?=h+f7yK9opkz7OD|rZQrnNXpJ0 zl%O0XmtO=9NOgjIdA?)61pAaEg#&-5P)YF}ol>Wc>}auN5~O87teoR`DE==c7g4bP zT1^zPDnf$FFG8L#zu56_68u{(x@Ej5&@X|Jy!IL;*N1q*aNtxY!4yEgzd3r?P3H|c zZ3tYkzqoedTASq1SQ=LE3KsD0uDOry^`v7M8;HhRN+Lp;L}{NC#MSf3!*kPE?U0M#CE^I9|;E?4oWLH6%v08+{)fFNb?~YIqQ^hqpBn^ zCw;M@Nx)goMhQ6FR}DPSl=O1W`~Ws^3E9AIi6})=U%o{?T@5#!uIwrV5CQ%pR;D$pk4YH5%^BWe_7WSurj|;xY3-%eQf>FlQ<&Du0n-ZcU zOtPD46-($x+(L~Dfkpw-iE+YU8YNk6xev2!lhA6<0nK0;|KsZao_%p%3|W*hAS$_Azo!6YxXU3cy}D!^(h% zC{%E1_~j316VM9>6xUVt;QE!RHMd`AU{hB`ciu{+He>_ICEWvFOs;ch7_^!TW_3KP z1w|JFmZgl4m;_P+Rg&8b17dCy6y~ZxmLv}9bL)jH4mOh*MD@!N!xW=lbe~a3O;eZq}b{tjgU48nzsc@*cMYhAE2;84n| z8L(*bc_JjmYIiF6&z4;41my2FX$d-!K{|13o#KamKwq!*0p!yhLe%po?gd`c9>$_< zBZ~suNAce+1ZXFcvS;M7ko~XzXh}P?A*?AM!y+5naof?7ofN3cd;mil#&DhU$GQ{V zx9($0?n>e1lRyB0;L!>ZKU*d{Hc$J7lL6WUSt1ybb>ETyEQrI9mt+WqQ~Lz0I=u&jBt1p=A_jcGUEA* z5`13mEfw@dGE9zSDA6ScgLED*ljJOb7-3%vMPDHwcQc3M zZqv;)&7m)lTN8IUF5Hx6O6uo2p=spkY*IR5%W(~rO8MyHfeHB-@j7l01%c`sModHg zvNUHg-Ald$?lLlT8o4xb^mOtU>&M;DxfIm%3hGJ1U(kr##R}%sMo%0h)B^DoJJ@=; zDvRz{zEEzsBdSmcMhPznCQThp$=4>0c1k!Gv+@oNOh6&Ix3{#=Z^`W7Ts}D@=P_& zG~B^i=aNP;rYEC0(w@*R!MD-!iNya4Exk@}CoMVg43cZ^T z2s&8M-RMRkJ+UXrv-TUG1=6oS6ZQPx#;Xj(!tQQ7($XuFNp6JTGKPOkI(WPQY=1Tz zan7Nmo81hj$cMf#w0{?*ePl^f(nDM2?IGkR8#N|Qo_t6n&K)=|D-tmt;v;(+Fm;TR z@dD<$_d99OOMyOt>Rg#*Cnpwti7a0?^LiuSj2H~R%6DX9-#7GeaVC!F0+SH%mdF)g zhEottJI3(x%}Kh^=Yz+8C7`=>#JP?;>DQ6wRPJpTsd_=$4AR?<>%HCjBfZ5e0t)nq zVb+e^0PJkqLLzK%O4>wPyp90GMkT*$V(#+B=dPCENFvibTGaM{)Yk|-PBvmO5Px;Y zeBu=f{}XN+r({o2XXKlL7=+|Mi6HJjFd9TZKzSyvR-mDK6Cya)zHf{Za@?Evd!#a_ zp8bl#a=~gzpZu~6ZKOZ0@&2&kq(A!Gi3$N-lE^dL#53#lzE(FXA-3dalShc)jEo?} zCMgiaFl)|FRE+f-e=q%}_x^D6d#L6hkH)$gewrjl8(@{RrIy6}z)a9bM&%j2G1`D6 zT|#^q5^v|r{fOZ~UqI|F?i>0nr^(GD^27Vy?c<(-2`>uD<&TB`TD~HWE9A$|>=;CB7gE>#^8J4i z?TN(ppv%Z@iEuUP^WH)T471fZ?C6E#K-$iq86(a*$hPn#B`ih6Y_$xieKMfpxF#zP zsQF(qW?+q*GNB`35ZIq%)@eEK;`ao8NrPn1^+5gz*yArDkWEO~U|K3bCRM|KD~&3! z5k{nb)|AAbm(Hk6X+U9g$1`VKbX4w@-03MpLuEtu*u4CX?labWp&jPf@YxLZq?f^S z(=_Lh8~vyQS9Ek02)ZxHINr9O=Hiac1y$V!C-`>w(s5 z5#;Xs1F`?6sSUTPD5@6ma?g$3m4n~0(__$zhhrbLz?TSW&k` z;w*6m(fusW%#wDMGZjk|jW>ah$jhLuPLOv6;wb}UvrG+nb%|YBr>EF=&Y(q+SEEV8 z%YyBn1aQC#IL=DODoeLy$au)|C&@-Kb+czA!g9z#xDb}^v{VN!gQ7OxHwF?$c;$Y< zO92tu+NGj)sj3};s`@H4=5Sxjn=FJd@%oQ9_2}1Nx%fXzmUpG;XEUcV&W|MLza)OI zH2815VJg$vCpnSWwT)v8O}l=~DVJ>>cK!%A_AOav5CU@k%#l&;fd_ztM?>NTnD|>{lariFc4MQVA}=bCop#g5L8387^kP<*R!Y;@&4dv;JqT@n*TEQpqYgJJ zbhzSANw3efoPzmTo}vz*!k>W3xuN=?f`_gEzh5eC7 z5vZai1W5ggGi=g|2k%Y$dOaLqi+3}5ZH}wdA%uchrKtlrRHv!@Xu)UN5aC1#8b)^Ig4<2!7A; z+0{A4L08)&#R!m{G>=QIZkrkS7S&-(lJ=lB=IxqEIya{%6q^K^%gOoDzMK;73D26^ zx19ZG=4a&GLM}a=crib=(651p8QXwP$#dV5UOR%3iAQRIhp*tAO~434e*7>TEc{CU z$VGil&Pe87wryB)^6+Xj0wZkh&1<7SCuf|iEnBV61?XsU3P(!Y=%b|2)22@!!5HT? zee=~fUk(h6c=CJx4b4Z=B2Kwv8JSERW8F-B?^U~?p-aRoBCQl!+L7=`XbBpcwux1mrpnlt@cTqs~%uzr=Hl2k}5ksSN7 z#pp>}NCR~Q>-aDH5)~2pLm|2p=c$l{b^H$JDG6g?hz|!PN}xuAfTI;%>x~U()Lre) zFbYxdYlg*D8VD^0m(BoM0yc9z%#`>k3?ADALJRCAe5nG@1rNWTo)JU#Cve9KQM3~r zlDxMaHK21tSmG18A4Gov{^ktpPSZW5d{JRpRGQ_0Icb0VS#Ja*c$X1o#&YTdV}~2VI7YaqqBD#VcQCsChA+&~>=6mqFnHbt2esJtt~5jT zAbgU)zcf-8)}l{d574DZyJr?I}XkTHMpA!Lm468$W&qD&MQld#p z;EDZd;1nry6AymUtm9dj9%%YP-^U=31E(6w|J9m4 z{n^;MucS#2ee6UGM6Gb%`6&d!+MUClFjN88a-^47LQe25pN8O{%FrAn;qjUD0SlS) zNeDPdkP$Mhv6*oZyoLO>lATB!d zi-__4s0Th2${FVCDYrr^hZ$!{1{KQca|yGT&A(%I`X|A!r*M4RyQl#Bn2-?=2M*n* zXJ;xc@4kyXBV-BGt`(nta&!gJhaZB}2>Toa7V)3$n4z@neK*uT_CEeW#Gv-v|LMPu z-k*--8%iYKxEYEi>9YwqJJm+C5*V}X)3Kwymv}nC>ZYiFT#lZr$x2-7GiuGM4meFi z=4;)AAP=^{OO(sje1Aj*T{n}uEE=ES6rwxa`h+%K>B=zHAU}7gibBC}orlXDDL6g( ziU3AHO`CojgcOp79sVYCZ$7%F9CnAhR+!afSs)rQD~T@2of@wFRsnZE^n}zPcgA%G zF5QXY(=*VaEjM=PS<<1!(C-pj$G%EqR@Oyh1&MC9AZD2wcCaBL0_qMVD3Kum!t=5_ z2^jgjO2^YMQFhU$I^z>1eZzG~lzKCOAHX_OwL}IIBrtxQEcZB!FUNWlywa~6m0{dN z*4jBM1mipTVzStEP|L~74ah|V+A?Lc9T5va{r*ZiiJfSisk7&ZO{up<%{CAJb8M(@ zlM3<~<3rQ?4?RWk#|b>B^wi;(J$&T5Sr3u=k|=TCB?zt3EjIdZS23kJK|eGiObx#n zmu8=;K(2E$2g@!{G6ga27RuMA47er;DK&MH7BtN8@^E2!*wKfOR5*fiA^K008A&~R zZr_w=qhBRex@?eOyZ7}K7TN9hVd<~CBs*x z5Tv?x0F@G?8o@s&zcV$o17tt8jtu4a65WCW2x?$kMC}?Qee;{1TI77D?KvqeFsUu$a?&d)YKUZdy)+m|>BZ!Ziy)7Z|sKR3VQ)XODgYVEzs*cCh@dFafc`2wL0a}2bY^aMs3qrd`ADSu8^i2pMn<*+A z#gg3{7hzjE$}#p8@M#ki6bxX?k%xDynLVoE9IFxgls?gTi`6Dfq3oJS zU50%rlLhC;FNI~)88xtml@nHg+WLOfcuBG{{H#%Xa*`n-oKGLcE3n?QD=NSiZew}# zJ92@{j}q zq$-v3-=ZgEP1pDT5866;HPqIZq%Dw1a$7t3~5JU$Q*P5F-(HxLBZS;l2 zS#lGipv4w-Wq6Vav0Jz}7HRFa-PNd|9=|1PS2gl8&fEE6Le2Stu=Y1%tRizEPayZ%zO(GCyYQya7R!8EOYS};3?ta~Nh&#u$Z$z&<@ zIU_i(V$i5-sxCKg>g$8n8XrS9evq&>zwCK`#Xao@6Y}C7F$X{Fq|YD62h-=cXrqQU z{|46_)0swj_`;!t^4p>-I2^!0zd;oRr%JN3Aru0nqr1i$$KMl18Lcmj6NH7Z^|IFJ z%|Tj0Iw0JqTw7zz&kjQg_?%Bk8*43M3~k?^kUq=rx@SAGcO=Zt#pCR-AWr!jdkkIu zK|;>s{)&90Xt@Vq*uFoZ%p4qLKio%uctanRq>ttpfXEGf^YHpgAP$JtE}sFUGzfo+%RVVa*Y^bm2g8!H|b-X zx1cnMT-QXqXh@|_t}*)G`2?~lR5EbR#)VzBT$A{ksJ7o6SzC0!)D;-gw!ucq&QpybLQ_=FYnG|{BUVRuM?BA;iGWEU zD_0#Esv749sXDKfR)wlwtI>;1u2#>Uinh$(GS2#isP!;HSpGW_ zQM#@z`N7}5!l*uxRM0a#6;U@d*}@wF?VLR}wD8Uxk~+q`vM8$Ea#gGC3ULmm7# zxplQxwAF8|`wae~WUi37gZ2uQ3h;J%_7kdFoB)PQ{%@Zs_Y z>tZ#hrZ@0L-6&vffl4Z@^Vo3W9?1kjD3w{5;q3I!Yq}N4U&*bodo_&rwm$EaL2uHq zS66w??Tw??kp7r@t>+L0wD+Ap9Q|3nh{RV>#Ho+6uAdvfhWYYdZzBEVJiKQtLd4a< ziXzi-&+(yT&2-04a%(<77CqO`D~=28W1imWsiHSlz+Swg#dvNnpO|ybh74Ghoajw3 z;UM@+>*bAgHIx;hPb+M@<{7t^E%v{*bM41w1=P3mmMm%XPIA;sjr^pNxZA87F}TbW z9i%;2sOMl_`U|RS1=*5S6zma(Mw|~*9t_j-SVeg@ERid{cCQu{l-lUK$e66QWkgEn zM&ExDnsYawh-t6z?y|kp>gU7lycR9tka{zhY{mNwY0avK0JKG(BG>&Dk8$d)UytQ^ zk5-MUfAl{Tx*=tcdsAyhl+rc*){S5#rYp{~qV8Rr4G;#!L!;!fG*ndkCa+sb_Y z^fi7Mi~pk7SoB~qk#uvZ>*JM;A{)07`i8z z*&JS2+=Bmx?$FH6wf1V?itrq73yz72)c*Ke5&6-on*VY&^i&k(i>H<;_BT%+cwPe- z@*L+PtZia3<>q5wcs4HrHWRzTR)@{VSn&A#*A~{%6uy<;>878-Mf}aC#>7IXX z3WMOCb^ZyK}lb{!@@RL9< zzm^begs5X(#-d%-YkeSh*Q>H4&0*`jJF$EpUBYtu_(aS&Bog%g@!PuJNC2cF>k8MJ zEN`BTY$iDVRz29?xlN+_8HT^Dv8C3mZs(`=@lyu*q+wncijnmt&X8~L`vSjEJ|I)? zpjYqeJz4GP1=10{8rLTS7MtfQBnSdLbDR(tC-T@l$)QX^2WksQ0zJIQU+)B0|_CU_H2 zYV5W12}U1sMean@;-aB?kO z9gWmsC3d&xoWRExb_We-f$%D)p8boUY+_N1{2sfk(pk=xRJWxxdM9_>4ZUt7 zKe^dI#nsCxPOh3N%BR=oI+OOVs(Q-X9MSzElO69+X>2*e1&SfGuFRB)(T zDYQ*D5m`|0+T#U^Wf8u%lt3BX?6-S*1zxlL0nAXvW3JvUjees8xPSWd*Jh~{X3vn> z4kp?)iIBhxyjtX=*&-UGNpoXD&9LqCs8E#Hbym>C14WQXH||MfOGcFUG$G32f z0t}4DJ-Gve{-i}_<&x#V1>+M0pxEox2CTq-lK}*Kd2Mswtnsn?R5y&hWr;q0o*tuz zbq-!^t`>co_-aie7j5ia7Adx+aI*%zRGhcRqnMj5+Wo@zT|YCcOQx8hTle%Ddp!@FtS)V{p0fk99SZ^<>AF5lxmRF1pQVg#@HF}4BIa+L zZXom7L+-N~%%?dfJ-I20UcfWy0>gFtxX?9;n7k(S^UV{iH$M5f5GzP9P@MNz1g zRlsEK&CEuvs8JhxJ52N$hP2@WYmabEPO7JWy@wnRKD699c9h5hZ2l+G4 zFwJ{o0ak)S88&FH73o9gnMs4Qkn~fCy=n)z+F6CjGPSuHNHa5c%-GEcnna<9gH*t}pOr zwT3HPrZ>@rg(GIgYA&0@`+;eAzj>#^&L?_$eM*I2$ymRt*2LA8Ys~CH5+Vl@z}j+s z#~cFM$EI$#)uEqUWGZZR-x!1b4CXh{PBryjv_7=IR!G1;6$teSy2N+#QBxavzdsV# zRK|$9-08)3Z$jxgRh2}+(kc1>$fHa6tRvN+Ghuh>%PPuNgW3e)dHEcjM%KGKB)6eW z;5WAa{4qjBlTrAkK^{91aHm8N4tLmgwKfa!vdV&hvwkV&=a}d}=C+ zgzhU33iKpWjmc|xgE-RoTB%CgXf#d;3M}Mcmo#u%Kk#3c7?)cL;3&eb0G*(=(#PT} zynNBy`%@XG2>GhYf)4=s2+GzMk3NYD7b7G$LM|)q3l}$6N19`Z-gbf1+>Usch`609 zt%ues{Ky95!`bR;Z#aG70y+WX10s+rt)hp?EwSt{KI5s%nbibp4knU~x5w)<{Qlb$ zwqyirGlFY3X6~T79;&cKl~>xjehz6Bup$2Kygly1Y{vOd2_@;fG2)f4F`XYtTs$g5 zEvTZR2y|@i=3vheKd*m#r8&$ThLz%{y!|6oEzuzy?LC4xY1l~+CHMeqSvDBJL8f|n z&l%MyyRInDizpuGvCDhS$RK9~g~3pvz6|;1^mjI0$-O%xeTWztd=4W6PLZ^D$uh2F zJ69GhSdb=HepGJAm1qMWxSKXsQSDdRIBuJq>K7{U>$*( zCk0KUz|%Wn7_nse@aMJsOBa{q4h@Z9=oiI#J)ihJFx9?pB*7jUYaV9WHT3CK-#3t$ zEbxfQtfr4isMFGL5ee+f98fdny8a^bBkWelpe4O$Br3b+2s$3J@j!1e_qDZ{{!tbB zkogWmYhUbyj}FyyyUjm|(z?U7so^JyY%_ZE@ls;+;gzQz_<7vuBWJ|!<>;lM!MWNd zmShQ85^(Au5hjMTJnie)Dt*U+vHIi9)xcl$>FV!~>Xy&o`bYm(9#hJd`r}>IDmBgs zkf>Bo&zH6R!JcHkx&2#f4cyOE|B|eydwNo2w{k9lnvz3((u!0}7T3i-J5azRv!b2X z_VI~>Hzb9SB-?+!L$BsHamT(Dg*f=4`{JAk!|}2xB#@f~tUlbPbAf9FLx_R4Y4 zj|2F9j^9`K4dMsby}W0X;SYaz@OZ>I66i0>R$A1pM08=u=|kI(oG3krhh7~!YhV~TkpGt-2gF`8spwZ<&mQ#@5a$}X`0!?xmh^9ou^+!Z>^dA+dbdXWqSSeVc$FOX|j zFL*Ak-q$p+#=oT8nBQ~AKmA_NAutR6v{>E)f$d`@42$!za}OpU2fiY8Pa^1SPcz*DI`#ayOP8N`eKIG3PLDIZy=3XPs=+10BfiC%@=-b z??ZWj)Cth1A$vk7bpmoIAbWz~jRgyIMn$Znx}3m#8n9n2Il-lR?k$j%>uK;BqtPec zrbkt)V;oP7?PivNvWn%-_Akw)d9oo!YsUs^7{nwYAF4RsB)V?@_IWyxF2N5&@Sbb1zrVa}l+E|K_&3ZxKi= zqJHc1ZO>Z_6(3sQZu$Qx;~r}f{mwzuU0-Bs#d`-fY^GH%s=l>iVbJ5RZ(IBMgB43k z%rS%uTg|cS#~R%A4{zq3c!hTDsm%@67v*W5OkwKEsQQQTF<-wYs$X|fH3KzPH5{qm z=+e}tAXYq8?|rgyt)IVD>!Ac*A$TZ1uhSYScLh~%(|R=ZTdm$nCnH@N$Sd%H7)QA* zK7MjFe@i{$X9mM5%N}XA_;xa}U9h|%WyW#!4=;;;PraExu%R=Y^moIqg=L{0zqTvX z-z7`f>aj!a(axFFd+KG;=rCO~oO4gGR!G;KCH?+Ji0Xe56nX~i>)>=p|7Qdf0d&Oy zl3|v3g4}`%>ID@PwH!hV-Fun8VVnmg=(LS|Hb;L>UXb6WkA>c?Z^gTryFkQA98+(x zKBIGC+vHg?|H#$1S^3%Zo7iE=x~F@K7?PZT#Bu zn4}k9cE;n>h6x1le=HT%4>CgEAFQ{at8F%Yy+8duENcDd2a7guJPi8ZFFDssp(Ox` z)gM*5r@qx#q^sZDT2D`}-%P{$_5VB*fXn5)Grm)8=>sGBhy2$3aZ3hf_Jvm=p<3!n z!y+gt>(X?@wUxe}a@M%YnvWN=WV$uW=1z+{Qll$&uZqi7R~FIF%M(M+eY#nm7-Bot z;|6tPv?Vn?=<{`s0jPiuVB6VM!v1WmxlslEVS{Ux`!}Wm1Yup4t}jjpf>FAQsJtRN z5UMX^Zbok;caVqVqtcwS{+>R+`-7|B6oYPn>+q+=ve4;)v1T7FCe5%td+`c6hOr9s zn;2LGh)ZYOjQXU1U{7}A*VytVVzH(v5jb(!YtRqtV|hK}ozd={-sd$9dX03=OKAB( zmC>8c30^&YpWH11E%Z`(m;~ny{>Egq1PCB_=^4&d=ydpOr2yrys6C;feBMMN8zY_?{u9<7t7H-$f$(a{SO)=RucNw-t<6ZtE2_@wT(^PP8 z#q9wpXAwTtk~(rxt~NfbPxgl%e8&D8Q_kGP8T(i zM7#i_`>ocEnT_iz(G(HO%MD#UkJ@FSJbjs5{zyY(-)|@up>Ughk%A^1wZ$c7bNgWk zDeBXMAY~2j$(KDNawl}HP$G0M6Xy4FtVP~Uey&OZ$JTd2YizMmXo|m)<4U-{fWq5)y!fTtFiqm(C^yE>7x5DLk$b%7`#;1 zs}WS|bw4>0DM5(4ARLD}6}Bsg5?wN8@mzM1An?sTMo7c6jye@(RokZ`B3;(&xL6w3 z^?{g1BATy?Bka$=_uj06l)Ah!Oce(7jd5DHz@TQ{b|OMMFZvjUlc!B z3=SVzH@HXFt2<)k`XY=~+BjC=l#_f5YCeXf20cZt32@#BAwW-(tCvrKgz=7YTJS^Y zX6h!-!r1~a_k!YYibIutTD+jf5lO1`E35fLtwDK!kkwq?Mr61~=P+s6OnNa{Hk{Rk z!4X;-MzOw-aKLvo8EMzX>0JV!_#x7;5ZghSus17zeBT6J)re4z0Lv2wd?OGZC?n31 zB8HN;@ahf2they)BqQgnB3=~ zN|K@w8>QJD>w36igINhpa9iab`q$*MGth(*lRh#@6?@hb#qCU@6W&f9a<{CGz>!Ga zc)k^1G?7AAn{^??No%)O?3wK@TNx}Y*#e*feMzu?Ec?yq_SWXT5!eIuMFI?SAC52C zPLYu6h?>)>r^udY5A6x#2G2r$KS0O@{W_>df9qE7dLR+raz02a03G}G;_-J+@O~Y432hoN`7ADzFj#`;U6gQi+tFUTySJ1 ztD`%9B5~mdHf}Cby)Vnxeng$SLFS2J7g5+Ua_~5@j3Z3(iwusAM+!$;hQ2&7-1Ty` z>6Vf|$J7;2_{XU?o|gu@V%MvMBt@+ddohlw%b-eBQK>1_LK4!ea^N-GOI6z87*m?H z;XPFu;?;>eCgdNQ5c5B1y3UkDbFYkm= z?7-+Q+jhR5UJJDsg7I3amon8$6%Y~~+gnHYX-u4w zKlqQd%=Z|iym0FII zNA2ZfOES)>4oGOAg!!)S#1FW1I44&_3oI5H#g6Zw1HPv7h5i>J9c6!5*}$5>n>gna zt2IVG?prY_&h@(falN}O7y0Mfa;l4r9ZyTm)$ztvZjDfp53Ec$ym7P~qEOokJA$Ll zc8yzO#Ky&j<5->GE{doLq$#swuyx%woa$3*z8$nBm3rwv5Fq!gx>N%!8v~^o{jYN< z$c`aoVjsDL%K+rr+|3Gw|GpcUI?y$l)M{3^qH{Qum&dt6j?{y%=snK{E{&de}?qXp{BpfE$A%%C!ow%r}5p&OV`>usYHg#nU6w7hUR zzvuf5s9B%K=lA!=hle@W_x1I9y2hOuFi;4PY0muL87Vx!+%lsy9F( z9}2;1^&d+LY#{F7Nt&d#7nntLBaU~V=gvx8L`T*0aho4^kEEx)+dsi2d{ zL_v9gG|61PKI*1bbBb$QB3m9aXGz-ugJ!X+8uvPvfnv&gM<0p3jFHj#4JFR**6K3?mW zd=D+wP;ijc0S#$Y$$bUSREov#zFB`?Dz)=pO9P2lk&d-h;et-Y*9?=K?npoqLr%mnf#4-w>T7{ZbxF^5Zz>u2i6 z(3*WSlLsjLGsKu1`sI2u+FQtIW2`v|CIwTHV%A_nFdJ6An=ZOB6(CXGcqMXZ>8q(@ z8JnR{iyHN4Ww=CFb;(>!Yj9kRu6i}J&AFC?dZG$kurah@`OAn~z zLy?WMsy@;2jNvEP0nx5R)Qr=*AnpPBk9%;zNik$|Xv2etif-!)m^_MUX*s6p;hHQj+bsE+LHf&0zT3+xB3}v(KAD;X0rD=BU#g^3>ml$J? z8Qf*tD;xUFOZ?iF_!sSV@2sU?Vqg$f;0O7PDyzdY@ts>9ZIFU8bsfYs04qy$0VPg( ziB8D{$5o#<(x-&efw3JT9w=HrRqG zd~LaioW3doZySe1c+;8HoXGJ-l$32>ydZkPwgqKpF^H?M?+4~@gDaWf&)ZDq9=~so zmNjS9U|5Q6*qgOf*yfMc#{H~cAT=*wlY_vfKT}q$_icF(Hw!9rGz**GBC?}aLOwqB zwG8xPq;Y6Mv;pEpS@E7$QN@aZFW&M`f6l+)nXTJPdxy%JGt|m$t*2s6EdeitSPj4}st*Q&DsLcY*R2Q&9f8ubNbun%u+oTNYp2wNBCJww zQnFjIp&z7;K7?d$WzCuXva*_E+Mf%WL4{hfz~zz_kouoM{oL=@Z$|xrWi^0u^B7h? zMhd05HbR>>hBndwc?%&^vk|ro)x-vtYN@r=)C~#+^0d}Tol^TK6zV}5SYLC%hU>oj z1@6Fk``%Km8K_9BHdRxXIsBvqL_rXmgHf(^Js(LzSSPxjv=4o%^v?+Q z%Se}F$tT3m(g&NCDOyJ{QAfcD*i~G1v2uxj$r3-~lHJW^XLlX6 z9qq3$xQ{*S-deMzmeD%{cNI5&P_}(nU4@~dEqF9c@i1xPltmr!7pW6r=Wu2r9MKq2#+M{L9)-W;0dkx@)M)9AOTZa3l%xZY)nZ0npxo zq{YRZ$7k$mz-XpEq_M~FOj*s^`u@`e>!;n7JPOU3><8k8br)KAxCvxiu6`$#1%pswP}){GJ~ ze{p=-!P8%Zz82JM+ej#Ec8;re0Pkf48lalxvhJ^>L$&#kz6)FMmUefLsK$B%p-!N~ z#e(YUA#bns1BpVcEmA|RtgN`PvuwMg4s_INs4$DxXCTJge@%?Z8nOKrVjN66$pnx! zf($;GzY#LL-BJ@~C_4z;N-T4n-FnctJ>`h3^BJUe41<6pht$%eN;H&RG%f*HlogkN z9>2+ET^y#!;G}}>`k^Yl+=oj*stp$%b;Ib?H3S=>vSNs__^hhUzpM_BzfWYIir!Ka zoz)y5R_+R|ivmLw92-!2Ck1XTZ?X~?;G>S9i^PNoUKkvz@=PM{X^n@-5=7~C|C|id zJD7&l6PF@N7ha!?olZ*k!p~TY@Vn#ZWGvcPlY=;B>yomIpnK>N* zw&?C?(~arVjSj9`t>}F=Pt>Vq1ZyC5wK;=`BeJ6&>QgA^b!)B?l`}XXQxdye9g6@E zEyIdaHem=_)00=D#@<)eGpsfJ`>@uun2!9>J)$)&zEx{lOphl|vWjojnx@4Uji^l< z(D>&2-}s;OrlC>9x1k6Y+MRl2x%SEKP0aLzklbOjEuS>!Y~j}@xu`>M{*QX$j?!85 zk+YfdG|Q$~MQ^;?{P8dBp~0%k`#WR$!exEw3eAtHj!pWb0vuOu*e<==gQfv2!tOB^ z!$u0;Wo?@|<_LDBlb8e3b{shfH>U%Un~(G$Tj2EO4{D4T_e=J+>EAh`=Yz6RdoKg5 z0o1VyZfWm=BFN$%_dr#>;qdS3+s_!4G7?zs-`cot0MVioNBLsiVIBV^^xlS@kE z@D*IER=`pWfG9x|CcsY2etPK0_Wl1oa<=^Lt{B)f)anS70o*_}0A;mKstc}E;05HH z3ii)m(c_JDMS~yag3#rb-dKf?Crw2pro6g4JzIvVY< zUG6~)-lf|X*k2x~s+@kLMlToFga7#G^6+}_ACWE}7r9dNRDBo??L?ap5KXm!pr=9MD&kzzs8l0#9h!bYz72`iElf-FO&ZQ4&G{>8T?k3+5Zc zhrhuX9;unDKVT-03;Pf}^GNfzcOALd_`|MEM-J}$y#K%?_ZziL@;Iut5v184DIhQe z@)Bpr2X*Z6!4h4_{t{C@c8&LknC`!V-HOs|%CQLv(|sT^k5mBI*lQN?EK`qUPf7mv zmxnYZgR(Tr`lEaCkEH;jAKgcayJF;b0h*2+>{?QFJToN!r32Q&Lrwc)VfJ#gTBR&$cPHr@XS!U2N77}d4uNcdgY58}Rx-Ne@Np`Jes zp{?MTGWT%>n`~-%R%-5slHA!Pix(IUX3tIv%w7nP&hQDK<4CJPM)Gt)6_svc`5Kym zl(C8x%Uu^qmoxMHNjE&(hcfH^%ycNCH(>vO4>fEei*G8_TXXXP+1PzmK+&WDsb+T! zWCpX1KOHG{)R@(B>s^E{gC)Clp8V$C1;PtC{?-}l{~ApZO@*OtQOl$6!u%dNSi6#` zUCAE!L7OQAWIpIut5bZ0ZOak3SK7ZEtTKm+aPQhO1XroYLjd=HcR02xkkWVp99#c3 zB(q?Fi&ffU{UD6lK55a{Poi}Rs1C&y_5qT~rqCFp?gL1_iUI&E%;RxDY5jWnj1h zj?{4em2w~`VY)=V%Ad?Sc&b>%RvJ^!Ru5q(5i(AtlZ zZtr8du%#|jQo7NXVXy>x|Ds#;pVRGemx}a1_;M*Mc+{6=tj{O0tJtwA`RI_3+{r!} z`X3Z;K0CLQ43tGzH$kt|BY{Tg-us#mq0#(RKeR}ToYoczF%Ik9;W7HpBKjU0@Uv-bGQF|E9nj zbE=YbirA`wC%jS_P!jG(u0eYU={fY%t)yoa&02@5T1J) zRpiP9PpE;Z6O4hO=1cMMqH1nJ3V6{Jikn4v(iERetaha9r4qB0DH7FnQRA89Ss+9x z_u6)hzc?F>f`xaaTO(kIGTOMNfvmeX`xrPkf&e$6k+=3W54yxzJ`gXc!3&o3=m>o< zWnAMZHpHB{?9OZGzk&_pJ}q1|u-k>9Ng!_*)Mz8!S8Cw}sQJm?u?E>+LGjt=2dkKX ztW5=^n~R@z*bm6>0FnHbBr#~?c*T=+&&(n_>xH5bVZlM zT?5^wza=B9_V!F^yX+tT<30xDygG2O8J>V+P~u>+UQ z=>bM3cSlQIP(_6M*j#ngg!Kq*1nmkPISqwbwiESJ(3)=rQEelGUnkKvCXFThe76o1D4{9 z`4qyHgvIA?{yuEMmOmdu7DY?CCWPJpcdWeCNS2cQc%F<}e>k-9c-+*wSXtt3OK~N> zK}ZsIlPqk3_s^}+e&fwp<@%7#ad27K4GmM`bj%M_OXwB46Ey*h0>X0A$A3UqQkBMZ zb2ado{%I;1Cgqwp@$3}HLYJHvpucR6)^%_dP@35ZPmr3O{#B8bRsCn>W;SeV) z@qAmd3+dekG99#L9m4%a?PN+VlztTTMy;er_BIoipW%r~s5-9uPRLg>$x{(Qton?; zqN1`|BlS1zj@r4-c1Nh@ysUt1I>`F&klCD)N+*-&r0M6$AVEouR2dma(Xo|WX3_d3 z8ghqrw&1crodul2?&3r>T}+;fn(Mfk?!tWz)AUA=vR%3qv;W-Lwnd>b>>Yt&SQHA~ zJH^>>vT=9Vk8O*X-3l1_AsSOm(5`{~lDN&)ab*=5pBpO5s#mckpBa$wg4)%GExb)q z+|8WTtNWV(rFCv(b*{dmM~0pxH{Blpw*zC|i392q7#O}D5@D;)~sN`;~C z4B=J3Ni^$sFy(FVlAaIlPSK07j3nit_(QyWhrf-?z_$|-Beyzk>Mh@9>|mx#OsEUH6?;3MFx|Pzynq4?9D5d=Prv|>rW=ukHy5622%(AtWJD3dr{g# z@qT>ymi&)@AiOyR9~ym-q3@$vaZgmot*_9ouU`A9L0@lx?VYWDKwlqIKHnl;wu4?I zU0>OaYF7oWl~S7Z16)W>U_%#aK^o#1!kz?5)*uoJE|8d&_|h_X*lr8me5|*JNk~e9 zu@mPSgByLws>LMCjN#&856nyLqj8Vi2*a+|EE~_VpLXxvN6uX*x}#!Q%qfguOdTY~ z;+I_w*lC0hp*BNnt3xyn&qfuAeZ;N{`fcpZT(qmQMhjamG_Bs5+~Tw|&J<{a*r0B0 z3yeGE`lv$+5?YZ_R;7TcyI?J;(D3*5d-6&Y$ny)JFL%bLoDSm0soNg`{3o#X> z)3S5AW4Xd}>@w`9*_WesMwf!h>UGI2I=jzi3cm7U#SDp;?eXu1yMb6`py?EHb`!(W-H0+O zR?e9|^!4}sE-2t&%44o(SfNYXriFktE?!?ld20iBn6JV(4ONNbkwL~It{YZSXRMcF z74}IgG9umQx@eCDBXVoc+jO(V&i|?p?6t0&eJAnY?C*3nNJ!s36ICb`gRzjz-;L-s zWDos}ICcmLOu`Cc(ma>DM*5&IZ58|Ad8-So6NMh2AE~tGyRIIF02TXccO#5C2>xTQ zk91MusqNO(4smdagWFb;lD$JU67gdsiXf?Tc)m#H@Gcs4x_WM@bER0P>(#DO7(@96 z&h-OoL|#$vzChDGc@r44c=Z;w2`hrlZ^ClM^}TCy4QwWeTh60^@YW!O7b`V*wA)6IlMWR z1oqiex6J>YD98S%5!hGX2E#YzfPClr&n@3^r2gkd;HFb4!i@`gF@FbcQfU$;hNN&O zlladr5TSQ|B1C8m87#KgM_(db+i#&SM~6_ps|(VNNMCG(oAXTaQI}X!%Wy2>;5sd6 z9^ey+)=*6V=E?p(YCtZMgm>kpf1((BaTl3&dtDG3iK$|Z!{3j5+lzTdXeQD}`=>WR zOlkTWA0tMceG>trVYs$?x{?TtCG3-%{(|SOKXl1ZI0+;Xx6Z@f7{41KnuNU~J-&tZ zuyq*6#(E?P#OLd~M5YjmOys7PM;+o!hlfZTpXvfrDAJ>&%3sr?1J@8+IGDN(^f)T!d4ue0_ z$sa@`63;G>vkTz~!8qGsYqbJ1~6s;yIb>rzjgMVq@! zo4eGV_Gdor2~SBiy)2$7sirFaLR+Wvaf#a18{PN5TD0C>TTQ2J0}wku?PqC#h$y#if5VgW}& z2DdV~ZSH`BbLdTytKnR*H;LvLQ;pDj#qE%21-JDfQ`iC$1_l9qdWm0AdXJDQF(7hA z^n|ie8`LR?Co9<&|LtVHQ}9kv6wq8~k1F^44unD}f9w>uG2F;bA9cI&CZVoRELc8! z9S+@kg7OB&G=S)xhy#Ya5DCG7$tsF{K4=vK228i=KDU-CVAiY=bWaEtKLe9+SY>(? z2}QF)(w^0p8?rMNg@Esu8%%Y@sa#rY+82{b2!7#bPXx7T*+N-?K;=G zBUpj!bxezn4z3Fl;c5fMdmRp41L>RT6Cr)3fZFwsQ07PIbUSe{}Z<(?jH#ZJ`mrt-vxjO@PxoQk3s{4$lk5N0Yy@{b{27y@!0 z6^v3>-RPA9dN>0tV8aPLy@(@{|t28&GGbhlBZ>mGuw z`ke89WlB52*P7afM3)2$l1l2{6MU9**A7NU95%~2Sb?71B_wB37{7;vsE|>*2l02b z=>*(nPf9vNl9*C#H&W~)!{B!`)dzkpLkPYpg5NZ`>B}MVDikajh|h*NMV8bO+M|eb zX-|ytOKfXG`=QPL+9yJ~KpJ=()m^h6K-3jcI zKD~L{vvCeu8_z>E8y!)!l;=X>--of;mcQa*cQUP=;d_!>C_cd_E7m`~t|&pREqF3_ zsWv)twc|-HWEsKar`JKWv;G`C!7R?AxtglBsiS9G7r4`sdGa@tkDmB+JQuo<)SNga z&ZgD8+kJL6!i8rkqbCmE<)p3;gh3`%l_QBoC>r)Hp+Jd{pZrOBO`@QQl&+aBoTLqY zIWUu#roS?jorBmS+6nyrlBmOUtW0~qTbu9BKm%qn84!BuwE6Dk{Kj3TKh9@2UJRa^~BD%3{s^+*!9|$Ye%#Gap}g&6H?v z{(k6iyo>;Z>;dXTaER&Kp@d+K=>Y&jr{pRC0Uk7-*+Hqqqm|OlBXHng($j`?=|dJ| z2TzzHH_aI$Z;DD1XYvrI+#s`P29z+E2zt!eUl91u2f2U( z>4wmpfYqhionyEam7E4Bx{7^zes*TsM7jc8#8kebQoA~yu888(R`M{42r8wuPtjTv zuieLk->7~=`_`*z!0*vWluj55zwE5&={79d#W~ie$f*=7o0E^ zoE^1o{nKmRQFI#c+pNu=zj~$k1jOa({1tgck?J(dlj4Ki4NsC!@L*?R46cSR&m{#NnXi&n&Q!8=9xG{;TU?ydh~;-K^f#;2=?_*VqFhveBX zs?3kmm_*%Pfs^2OI)gvt8X1qYNcybXDIg#{xv_)Xxbe8c_jm@Qjn|T=<+naHZ4)>f z?ixvn_-`r`bX#tHLFe*)u6vf0F8&oudFEFyAq5g?g8uImUeZ?=4OjKluU-;{wISy9c}Tf0-tAs4}JCs6V3@l6u(4Bl^cFtxfBm@}4zD z4a!JokoyISL592@%TFFO#SLajH%PJ@7tWAA{ZKMZWxOM#d9?KpQ;Q^#k#Z9+OjjVl z3{l_M?$yzk2rQYO^+kjgG>R9{IRP~P*%Qo0Q}SEI)@bN z_{W1J2kR+y^n@PCVY5G{ScOd?WJ}ep8YHnu$zOS?igIV_ym_zQt`21UVGj?LYoO=TC3 z;hxUmMn_GhH%V8_x;G_l0u77?URf9Ls~6C5QM?sMJ#hr7(|K(rpO&Sq*s0y~XDdN! z>wWw}EZTneI--sDrf{Qnn#r=Z;@NF3vTD!g(;m=9+eNHiI0Yy=jMUa8gfY0+E+Vz~ zU>K>bSx<@&at%*%qZdwL)}pMu70Ytde!kbv1&eQ1KY#@HX>jb${h_J4LIx^h5f>K`x|#UGZ?rG|-snh*nv5CYS(`CLk;}ySGt(p}QSue-Gg#5~su} zQ#k^2d&nFimgF(Ln|&L+)&t;?O{Knh68Wt~h!#vTCq&2p5`T}Wc)%dBguo2?TQLd& zr0946pr}b{L);4}3r=)$5v|ZExQ=)FlrWxcU7GsA(#zOjKtdTJVODhdSnQh`4^ihb zA`3%Q_q23E$3rv~Te`|Kh^%g(jaoeWgx*U-GcWI*Xbp;j=<6S3T@onf#6ljHYXan2 z644Z_xi4R%=?eImSkC%@)|cZ>mo@+*HeoP2;ukZ+BHr>XdM4AHTlyS6(r0j(B16%z zfYNzy@9=M&appisXcNHFulFylw>d$l|YB0fczW*lQ|Ng+Oe18C8^P2Yz zlwx9>n3xdp?mwci>DL|aADNe<{Ws_3%l`juUM7yr%k2M) z^K!YnIfcxN;@AA%^`Rby@cgOD>Ab6ZXoJGS7tj}z20prSamGLa?NH^&QVz4}`})%| zi>!9HbvD2MfmmtE`*f_I7E=CtH#aKf9uO(0$-(rmh3inq&|00efZnL^zi8x^hc8#% z#@d4df#=JG81_hidg6dZiv4TsT4SHOhrz}*93QZeolWppHih=c1P>=Tv-|4``Yp0G zlLiVnPW5!ea$T$Hu$f7Ypw~RuugmS<038E=vVY?mn1h9A00B`UW1RN`P?npn%1*)p z2%ti-n^mbI4kr^>aWJNP`*m~svm^#);S~9rS^XPLSN%?ohJ@&}_H(K%*>Y2Xrd5^u zr1r{azYV4pEvH5gvU4C;Lo^UWUOO-KAG=?>yjb(BGI}x>dPS74T2FtImP%`}+)U9P zv-7KGljY{v5?(t&8}uZteT3HXytah5rf7>wwcDOOwh1!gvG4d4q9ZzeBKqp-<6Q8T znOIb^H$A;JE{g7*Ma0YNmsdkZ42F0G9+Ipo?nt_Kp6^NS67dOP6&GY@6irn3I-V3i zNkgDVd_u~~%+5&D{(QZ!1w7Z9H&^pnveQVw;Y?S z-B?`SV)5gG6K7t59*jBNGKe6&Fz!=$jt}u;`v;lyr~3^`qH5TBmR>+YHJ=>Eg`RFH zI~xU^lr-_-W6!uxA!rJB$9l9PfFBx2f2=?EsvGe`6<{bg(ugeUAfG)iF|}QH(3_a_ zW&H-pHAI1Z31)8#p;~&lKOuMm^xSz)4sI_cPUXgfo_y8YjPCgLf;t1Uq1nh2yU%2X zGV;1(b1<)Ol4l3MzV1LC#=pvA1EFK8+t|GI?CyhfEUBxYZi8qlnoQ#pLShIE2d~F+ z&%~9v9cwHmZJB$cWNS!ai+oCgIX!E;d}@OEUV~DTA%&^?1UKQsrw~58*P4q65mp#Y z&wdZH?bvSBtHBi2`5H=}AmoHk7R)VfU!4h4q^5({jgs`*>m0+&`b~cQMmGJx^;1$K zyFB!i1hNy?F3Uu#ht5TS{mBBX2k3;X8K8BRJ2>bmTt6POQamU?=6 zHuMF{oypkqgh#N&X_WErUpJ(uhxTu5#$fq!>jBP@Dnw#>2vD6E*{UM_2l7CI=H>k< z8h@R7Jf5=qI8}tG{W}b=@=93BnxvNxSe}W%<80 zm`-P0^J`@njZXVXJB%A&Uq`fZ9=r`hl4$Kj9_Rtd3K*hIAQ*xn z^kGOG&&T~9hA?^6)aet61Vus!ib#MWPsAmNC^BmpMM4O?OMoFu-P1%2ArA=&p8!SXr^Wqz{Sr4e0YxaPXQ~lJLhsg2rt z+P%SW!49^_hLPh~OHte<;!}g1hM}IaZKy;_8 zuhI6uLD|p6+xt2-`;a0G{2J9|Q8qEBzdoFFgSV-;PIw#gS7Y)A0Fspv`V!DZmuYwn zr3n6j{gz(WvDZh|(7|gr*U;sY$4INCniK25~p*cwt%{_E1rO|ec^~) z9kF^oh$r-BfQzRWWM{fTTp?FagGLQPJ2yH3pZEbmmK9A?Yr%rg*G5kya&-vNc}XBw zF9io4JrVf4&@9T;8S3Z-P{~`tgX3>9A3Xtb^(dk*XA`Fqy%~6$r>_5oxAC}!z?#5oau5uyjC-QQu*W_;Yr(ElW7 z4tmDNMkze3zj}Y<{`)uXV@HwxoZNTNrXK|31Z3g#kW28=Pt4WRZ~I>4CL15Ff1|do zW|hp3qUblsU2{!ETg_vQ^?)e)RdS;|7|+es4|`*S!y4VaV585px;3i7(re)3QNH=j z7eM=GOn>0iI^&cc=E5t;vr+vp{Q~(Gp`374Q$cShR~o&vfuYPz9&Qr+h}w3@TTLE; ztA)@i*O%|J?VykXA|9VYe<-+1Uk16>s+{BK4bQj#r$*omNo+LaiJm)cV8Pd&ftb{R2Rt< z5*E)ss^nY6TlUB<3+#B<6-xfJ@5aO~iw-xIEBWK%4R%78MU5L!*njQ25rMr!>^$Zx zd6F>~_3OI;Gr8qf^!E zl(%H>qHL2`>@LFfmu0#f;~?azTy&Q$oVA2wx8!uEL7A^tV2Bj1#c=3PqFt?>$gF}d zY)}>6)Abpb+1M}Y?;-RDnBezb-e%F4ziMIfBV-$b3(qC&4A?s%R?0qb6!3w~$^L{K%9Ba1fwwl-OHqYyREaZ%@_{37->*FGclh&3NSpM(xyo3YmI7ODLjW-0s?0EDa7OHPTAiszu$^s~VKj8pqTFG-kvbB~MUiiXe>w^Zu`5)wKx zM+(V!|5K2S*^{zPmTveSXz9A=!o~MqPQ_Lr_R!9EqJku4z9I?%rl{OxZ7hrTJ|ge2 zGcH{G+wgm?vv`laTiJm4TRFlp>pH;Gv8;8+a-Tf5;Yru%55XP4-~bIg(h1!QF;1{s zkj#nyHZPCs9_ zTcsMC)SyqOoLT+}hDz$WEEGQ9Kx~0M5onbU%qKd^6GF8Ylf^c&|#`kX^GE>Wq8xH$hV$h{X`K2gNat>Bk${aCE0A{ zxKP*QUKw$Gfyaes)t8z3L}(cWSJTo!%H$a;siw5nb=s_TTF6)%o&=zc;Okc2)B6Eh zO1r8$eYRf1=p?)*)(Lxzxx6pqHOT(UUW+1&a`p1I?b(sUeBXxsd00`=7n7%-&i(LzPz|0XGQ5JT9}=k6UZhHTMXl zI_SuV$(1L^+YpWmP$Bkk6QVVUmQAj#&c=O6wvFeDy$xW_Fg2v*b^e||dCN;II__EX z$Ja<-$tvVpVINUgn;rJFuFAkCB6+VlgY_P>mm@uVqHclH7a5|=N0=auPmGBxGV$uL;F>|6!2+rC#ve!MyJXEI zawyCq376oD9t<0*Re-&3Z3eZux`eGyF!jqE=G$PhqNXYr@%EiU z7T?Osu*+9i%PFEpjY(or342yBEf{KI2+5@Nq>xt5{~~Diud;^%m-vLCxcR-vDcmZF z`S^1up_Bn@dKl}^6`t-+EESB@BzY+nfi7IDIt!5q*8VD}E+;v~8N;W?M2_`O7&|sH zHV_-S#&Y9+^_0epKXGxv7_o z=6G)@5MCT{%6?I3%L7;cYdgS)QBOIJcW>6`vlas_WebL@!%WzhdGlkT`xI+?MXU|^ z(ovg&LUn-vbyPRT3pPcQN1MJ9U_j-1som5~AYioE3b7p|>tCk;l5;B|H-HB-9G+CbyHYj1c9Xk+;D7z8ij?9QWx7}I%y%{vN)3rXhfx#Y%K-!He> z#`wczVv5#m^EaegVh-4#TY;TH^)bC#zck7alO#)3<>eVsdR3<-2DZE^*H%H~2TDd5 zud8cD)(XrXI4rWUK@5RN1ai=SX{R@MEI^mDM|3)vU#6(jcMe)-!$~fQOPgKc(qdYH zamrh5HNU~!bmADm5%d}8AC8qDO|-sNEApXs@R-m6QS4-I7|fw!B}ueBuBow>*cdB3S4kbouym&~4-pofF!eup^Ghb; z1WoAlUNrA@%z%>#?(g)HqCL-hEu3-2{#jTr$U1~49$;=y(buBT(gcg zXeiIC&BmC_J`&9p#rKf*-bu#9^tOQT_@0-VM+#dF@B00rdvJ4>>nm?$i3VlF%Ro-6yd1A zQH|p@9Q$#+i{ls$k#^HQGAWvFBQ_IAl{wJBXxajZEMfzq4*J z8O%oNXUfJAV?z=KZ%(J1#GGzv(#jIB|J+90cV>^=n;--5!?gwXW{%u5$YOEtG`W{J zaxaLm5xV2#-qewMp|S|vYa#dI$i0@PF`9jT4R-+ZVfDoRi=fsx7%)Otcfgx(hTZ^Y zZ+p+qdC>upHkR`&@rpn5y+#G6YzP@%MI?BqhxwK<&BS}4_}Lg=qk=esftA4Z5mGJ| zVqCvRuHPruA`?g|VBZ2 zE3pWmeQ$TbL)TpA&z^5=sb;xZxc@pCpZy)B4`6iW^7bKT)dmN9!s5%J_8(#7l9GLMjnQsLqclQ97nu$syr)3h8xk~2A zZZ=LrBg;v5Uh4oWigDXEl&WMGG@n9XJ;1lZ6V;r=?A044O?R>nG@qJ8^hNgh0+RPo z=1DZcmLPFYywYnry$3zAc#Y#uPHKF~bk88JUg;=BF7t7Pom+x?vXuD~mvV@e#iTM@ zovt}etxTCSvxPFfM#jjqx1(V+>bD_IqiU} zS|o6#W1E`*mfVP@V+!EVaT69t_}o^;UIHGY+-zVVQkurViJRTpk!&H5h)#16b9n%y z=OchV?BIU_d1AM8l*XayWSx!oYy`|`FFwA<79$l`Mth`}+-IM{57b}bUgNw{2`LG# zBDf}1ESlM}KzYNC&9?wt&E$DBQ}ibXs-7KojplY(}l zQLH^iNES!_xAamRpBp{~U_Vxmj1AU+=0UV~eFt%z0SP7;beZrS>{A_J6e%oIxUjt= zxavBR7(-0Hgf%mPm}4{234%KbSLh)E5?`g8{s!RJ0WXky!LO4EUp_qHfu_R*-dA@( z_A%%i`v|yc6!>e`C^$XVhn8Tqjge+BY#t+9%lK)U22GypCB#;AMCkWiJR*YiC=j+J z+EeA_^uH3t0c#>n8nF?8>dYySKJ6MLwH0)Lpi&ln<0V|NDpI#gN$S1>7K?}Vp!;DM zZoP!*lVIadFOjrKXk&UyNKh%fKrlYy1HDt~d(sjTU`*E}VdHE=y6MI1oPVkc!q1Ji zvR<*R_CT?%Y&mJ`Z|3F(ZuqRAdKgb8<_6;Z%E4HrC#Qo*WnirPBqzDZu>pJk85ui4 zRF|+nHfj23LkuUe|Gmi&V-GqCEc9GxIu&!0Yw&|d8YDw`Gc>{EnkW=Z5d$bNt3%Wz zQRQ!2V&LDkBg!%(YKPujO{Ge(n*ZW8)$S&1vi(ZOu)9oyE+^zuZb6)&W>vd?_SX-GUEZto=Cp6jeI-R%f;@mM@V91o_DS4u+W6| zf=qFq1oEDRGBcF!@J=oXks5S|c5=w_i**%?q1^~F7#!9ETvK``dB4r$#w7!`KqIlD zxT3(5gf(0t`#@lm2r4Ck?+_nFc$1++Cm45EL33%*^LzJyz8ru0)9EcP4hbftMfveyw_~v@Qn3z7!?Cb-Ikqg zHcIAmtb1q3=9GHA;vD>-l=x~<=68ljTaI$3*U6gcGNO;rDcrWEIWPygzIkArsurh$ z@blLW8hQH{9DLES7wmbgqm}tZFE^xflf3&7D@Hb+g0jxQrz-3dIvSwk0YT770UDz* zH<93Um9AJXT(g`|i3mus0V_8=cj-DBpx*>2tv(MP40kYC+{3KBgM0xe#YtW`(bJsj zN^nSTOcAC6Fl}FTUazCVgs7Q6AX&qY-hF>g{{FW?Zb4_obyX(1wRx6yYyu5am_EnM zruwmWc7T*owmL4O&OfhCnnbfp&Xb)bdmTsiq&#kp>_pk|L-wEC9A_gCJ*?6s`_7=@ zH$27(8PCCZkn#_b@)c}oN9i5n`hY=ZmvkU126n?-i#t*oZdNQeNA1b(;N}kk9_-mz zWx1tz80dAVMNi(PY#2_r1Z@Xt2X*a5ecW_HPI2-%BH}i~SQVTKUC&>37jC>>@&CVnlWyr> z3F+VY8~wB2S{=pvoM*qru{VOB=6AjI8^v~yiHMuW+xj@4p z9SttH(O?(p-y`Ibye{@Hk6iH)ed##@oh!b+WN`+lqEVuBUk3c#hy3yUJFzR13zz?Gjs1flJ zT$kFfB1xp?Cn=}uokZ3HutMzU^O{P^K$8`r3mhEz_WFVhr!;D&Dy%h@1GndSkUL>! z8a@%Q_m09mc^nvXa5h;ysifg&=-;p7r1aA7ts}R{26mwxli!A1Lzrx6++6Rqm(t+R zgI|E-pHr{q2yexO#7`Qk-AFfa`DV$nH#C!5yN=2E4x2P7IbP zC75Ngv?rtk&}E)Z zFFAzem{S=P^)+0d)A2=JM{u0JhO^MoIuiEjE-Kkb*dE90!FPZ|`PA%>9a)d6gK#Tm zvlHEm!S^?w*p=+fJCX??o;ec?GUs%Ng51|@M*N&?nA7w?N00ER;9 zn(Z~Mtb%(~6On~opLQTn+c|cyqivp)Y#LqTPNsk6?Bs6<0;@4sn4weZ=1TZNq$&uA zbOEP5d)reLO(3z5_SwAv7MntfBq>p$9DfNb3#^e`?KVydPZkcAMKE50HjP|!i)SEG z=i*6p@Bud@Dh|0W@MV@l8xQC3lEg`i^^22eIeF&ubH3G|qT1IMkm(UX1uMta4MVES z4M^=68z7pKp#Dwm9peH>W1t`P6t*K@%Y6h`>^};}?kicW=Opx(Cx2TFzlaPSs(=lH z&v>Ji`P|9=KY|5VPOd8158HE?<7O&sa`Xa@i&a2r0*ykN=aBuQcBB{$n;EAsf?TLI z9|FyC*KbaEhk@4R(+HzG-W_(yrbIdgtV$gM&g6~mPfD!!mwa*0;`qgSy6GJ>M+Tu0 zk1#hV#B~nK3ha@8ZT2C!F%JA>!omP$#jUF*=GvN5+g+PMafsC7c?X1sP#g%nwe8O{ z9phEvKtKUf;-uM??PY4SQfg2x{v*<3J^Edf-|NBHdii#Po}<<}DZD~ocpGie&!aZb zWoiiHHZc3uLhtO7lzoV1W1C0iDWwkO>KwNiuVthbCT@Mn-YEDeOYY6cVA-(Q+3_hmFEvmU zwK_qZO6cauR_2KQY~T>ar3+>KcK+6q0m1y)Uv8JTRozD!R8f;So-hSm1X*yh+x05x zUa%V4drH2ToM<*nh?$uEx*WH|8lz&ow@b*qn1i5ZQTD~I$;B^+(9KlUhs5|Z{#fA%(L2MtzDqW6_ z422X5Jib7o{kg&F5#AKW>^3#Tr{EU#3Ha^ZKw`Yyt z#cX)Ij9tat)d;PsAAelfvfIBzCSA))*N+KU{y1jBKB>Ln@hsKi{6&ha$;-z+*Sc`; zfzI(KAA-OQKY-vYW?Md@zJCrOhp3S)`G`fWhNs{k*<^oPi-Vo0C6+cOv`C+T5Qf#hcvs9leCg3dsi zR<$x$cF41oizjh@9i#3^R#WD$NL(ZPBklTC6y6CF=C&qG?kfF7C;*lA~s5~RZF2xdARd;NRYs{5B`b<*-fO4 z4kn2KR>X3PEhP>VpX zi6#UjREG0agSd~U?6`IWvS6f(TjD0*(`2I9W6xCJGP=u!yD=CLTJTOoh#|<`;2N zc}woYuWG;9yzEtamE>5yTRtsrnl^4GTggdRpUurYgtQlDX6?wFqN==ETc1ZUNcXC2{3%J5>QBE#ipBOU{vl4BKix>ag=&~OUATBX zDHZu|Ok4Sly1%Mv4|#?qV1w>VJjzW>N}Lhvmm0V@o?b^vEijewXxg`b(ngjfsZQ&o zV-PJ^U(eFp#X5*O5l<{Md4ksJ>4T&^0}bN@PD=ms4K99*<^n$o_(N1BusFYI!Osq! zhXjdPht|n>gV$hV2$wVqY)7c;F0ydUht2n8Pjq`0y^3V(fnq8LT4-1$U=DxnHXt1P z8ZrS6;Mc8kh&^JMyMs|`BuYR0e1K>p4F2x>^P^WOGyg>a_k4ip`i_WakUYWY+24{A zmG!MwEuv2Ql=`GCz+{e9f35@a+BeC~u_53`3d!60TlamgqAh6$U=#HXUv5}w%mP9^^8KdYgMzl@ykUkV<~e=Tj)|st6v#e>uh19v3Aw2V1>5iH z;7}ZN*Q?~RiI~g$v7^8tqBze=Qoh8sTHd1|J3?Y*AGSx97|0o`!l=C-94=blufUrC zL)uf=31iLAP%{wIz5@o(z(o7|_(s8h;$xUUKi>eYHy&WO?1T2qydlesSk4i_Nv_W3 z#(GRFU0h8m2?ux(p4a5bP*V;SY^FV-=fpC>9l>i@kAWKoCcUY+CyYUM)pz9 zOcZsDK8d-jxQDTu-)&;(>qPBi;oc126;n22!@PneSu1Ub+7UZl&26@Rz1c|rRkxeq z1Dxy@tx3ZEDr#$_J-PCrnCcVzSqmfU7vPoxt2+_Ce3ntDA8aM|Yze)-c!;#tlS5|w z2InXUp;Yfo>14{v;Sgcaw?}O6KX0zCPN)onsVx@@s+%RT+O;AHrZ1DWHbDG?D?;IU z@!1lrDkRW=Z7D@x5cOE%UvYdge^uiIz?B7u1IM>@fHnLUyaYQd{O-kZ5{D1*GODRm zI^f_UHL+3i#m-~DJC6a|agILx7Mc)#De6@h+qyK_bQ=%9q&@Mr{Bl2-?^pdS4}8 z$5sb32)3BsP0EdqHCHdy*AGErg^SJ$zFTsApA9K$F~G@yyZymAP!bV;br@!)s)(Y= zwI4D7u3th8r7;x#Vfzfmqx$-*4hHhoY|n~wM)kLAb6}5-0SAlV^_o6Fn>@Qoo3s>v zSRk-BH=WaXTD^meLA_UR3AQYCOQ=Rzf)c1Ts7ongmef~GmuKLa1kaE@1bSsIG)J~v z&9-^<)sIBIqJ$*^FzW>rj1?L!sm_mjMP)+JTaMj9+DG=%sQmGqX)kVpzjAHI-QU_& zVT}z~Ga_PNGsX3;W2beUt*lJNURx9FsURtfm^+D>F{;>U1Ycpjz~0euyHr7F)EN+4 zj!gx@^;<-{{*8SOHt~G9nG0r@wUO1&x2tgrjC%gio}UpYdd}I8owwW1xu%^HA#U=o zAWjgfdd?l<2ZZ!DFMxW{&t7n2Rhq}UCsM1~}fex}8&;2qyMX@t&e~ z?Xh)$CN6}1yj`;o#^;2uaeZ)JJJVFYirsNYH2G(D9U8G$9idZVyV3#j==WY6 z{+EYl9ymYIdO#e9VLO2lj}LnuW`&U85cd7^gUn%bAQmb@XlZsGS*Oq|Hn+X^%(|9p zM#fOsSv)hOJ@cK`TtCQZIB8t+X7JpR8Rpp7lI@{{N%w zZQ!b?()jV2d+%J{=JKleg65q;;bI`%izb>Db9E3?5^hOYT3j^JRyQO}YN-etvR!vm zba!pnwku_|W~pe__6pQc7M4=m<}NSy1v5)c(M(Obzwa{xNY?N7`TzZVj?A4obIzG_ zp7WgN{kcL*4TyV)VdoQRrD(DvBJ_c(;o1=+hevQ9=-?0*p^Npky&M*yLqvVK;ti)5TSAya-9eaAI@1^gX|ZqHfN$o`c9WeMW|ohe0{hsXQxX^#4wE)F zOLh*>i@`JN(B}}S7%XNZi85F7n9>a>od4Hu^K?8k56)_+BCQ2nsoAB@5Zzd{}bI7j!}p=h)hNdEmb zR6t3w(MjT%ODkQCsXp0_ufEKifiwZnxT&rMh=Xyp$ZH8p6Mq1W zF^o}f=mz)wMgp zIOId~y5VsnU7#aRzF9L)=*KpYbD^RRHj1ko^qOH^U2bfaiOv8+3dx;773#a2$Ns$) zec+rW3IsT8|JJ1jI%30iUuF*&JGh5UTMFU4AIT5FDg0o%^2kv;Ox_KZ=_$sqM;V%* zXUeQ+VfdT8hpqat^&N6^iImgPY3&qbEM-2dACBNXk$J{N{DbN0Lr0%62!UW_`qPFS zBO|t6Gaw{*24p`rFE;TEt_AY{EZA!o#pNOM_k-zAk7?wXKN_s*_G+=QGJW%yFI{X> zNG#8Pyo^}+)_aD9K9Smk^Nu+HOLBy`x^4|Zrxpe--dkCA-I|AuTLN%b1TN5yc%}R( z95^ry7?t`-I6sQKH5_SdagMbJf~x9ijmx6?y4*YlLWZzBUY>nK*cV(Hm1Q_!u1sGS zSQLT}GIPH@TA6O&6@1VL*}(2J{;LfiZN1_IoU83!2nTd8M<|h@4go&lVvg_|CA zIv=b$nQJ*ZWPZW^_1FsB0#;sjM0y-?nXpAC6DZN9eJ{L-)vO?-NBSxJN!m>M5L6FPJ zBfAj{&LOgnLR0p1YWjJLuGa8mfMVg?b7M8mZ^^y*)$VjK=dFW2nj+sH@ln2v+S3!X^F6l)EER*Rie9Fu&;>xnnDj9 zLd@hkAAZ6ZqTSyCCa2r;X-9U&tLZf7`zMLGijlrzW9WgO{u&|P-K z!A?ibSHh*wv?}U7xN`&1Y2i|B2BUc)T!L;L&B$);$yWZF>>Kbvc|Kg)tG9NS z_5g5&2i$Yv(k{LJo!adt+@8Kh*%~fU6aes73$@#awA->L9HB&sZRwTo(C+)R`|3Z! zrLB7P1xF<4+HnBy?By0f=`@V=Cw)N+Vw;NLcQjLjU+>|9Lzjccq%6w`1Ce(Z>}33E zXvtu>&EMo&>?7AhmNNYab~yN5xeA{vZzLT$Uv*jWcPEt_Y7=n=adqLB4bsEt8m5+* zcUaRC4T!6Uv@1FNi1eU#rA{~^t=6C7>H+OaNjs8oqw~cEw0&K7O60XS5-qJx>Q1@l zdhL>%)XiH`Cd|2!C`@@`cghWSXqQT6cgoGb(Joa-cgmer#6kW(T$`>Z$>Nczy8LVY zq*ucv0pzf57+JRZ*}uOCs3VZ%B_{?44*Y1KRM@D@3Aq@Y8gh%Dt?BP0N=niCkbMEoqK(LT_IG+W4DmB0 zGv^fx#-=v=*^2)6cqxJ2OH@1h$M)NSmjb|O7Ufm{U+OekL3tz`bQb{vjOQQ5AO{pJ zI)&X&i-Sehse4R=8R$ZN%g+||_ZNi#vCtvJsbBVu6Ya4D16_LYliQ||?Sp(Q57zge zxgeY`2lLoDZ~#+x_%-9Dig4Pq>iyxM&crJ=OcQ&cZ@_tlvx?$BzSw(V<>`l>g6({i zt^vYIsY|>0xT+&GF|HMi`cvS9f!pn8)2@v53)m=wNNNobCILMV$tKZ5;t>6i=kc6I zBmG2VTclj)_jLzTB3sL`hRedq{)$99O7)SfNNEJ3;u0687>|(A05=8DUv);^1-Dax z`E8)KfP*zR|0}0LFi5hxO|R0oujk{Cs1oTb+uS3NtCDoO!{y>|-n7W18JC|4Ts8=2 zgDUb#m^uvby=tMo1pndiBkP`(VB$=4v=Z8F8$F%Pg=1c$iGk!PGmS62lZ*e}sN4Zi z2i5-~#xut*`|t;!O}`f5C@0EWK7vR;IA(Q3kIhl4eF5sk*IlFq(3^m1wHkk<_DGN* zCXp))r+0LIatKm$rkQ?`pAH8M2*Zre!D;kMh_`n0n`YI;O09@yho1Ha_{1p|8xj4& zA3$H)3{(1iqz8q z=xGNB-S4N%^xfcjK^w~)JMp<;D`AsvXSC(jgz5RPt=M`zL^v#M$BNBHsn8kJgBP&mWi!OD6iIF?8E2_?dI>*jb*LVA$ zXR6L_X{HsQBPkyRvSP@dRC8CZ3qbM7Fis6ez^38gBCEXUSA2>4)`w!{bKW2vI(~zd z;hqY>Khz0IVyqdH3jZVmL3uLGx7MJVIqfm|I?c zm*#e~Hn$dSZj(1^@&v^`&^9+=pzQ&_?!ADi$4`#Sc57jH^32Pi)#A;I*ehm{2Mmym zGzB`4Ce!4*vG;VzpK{@Ag#jdD-(b(ktGY{TMq}DQ#+Tz3InNEpp@dlV%3Qz3g6Y`Q zpp?NGIfOVbirC?IpABwkKf2az9oty#Syf$JQM|pndTqt}#h#LQHX*aP`0Tm!OEr6< zaf(r`h7-NpFCKjbvE1!V^u5kR2Fw`9=Zu-v{3za-J#9^xoeM?fD_$(xxp}yt!|JQ`7|it$flQWG*GW|0#wIN0NiINM$3CJupxtw=sa=YcPb7 z>jM0YsnP-5Qy;^k!lVE5f>z^A9N>{o|y9&e}!3M+$^VK&2KzYXGCF59&##ht~z zWU_^pl~ufbz5CXq-qkVp-j>VFii>Qo0Ge9L%~^HNMoNLsli_&lU#4)iMrO|Hdsjp7 zJ9AOU>zmrE&icL#w$>Lc3?AkVBUcyRDvGQ+x2zz4QDe#0;BD81FDS^q6_F5+epwM# z876%kEGu4x?jA}?F-du#4N^=CLWQ}(1(91P9$jFF$nmW9-1e6-hYjwW;Ni&1u%%|< z9UAE}_e%!6W(#foj(lksghb4ov%1uDuH|g-bP|pG;;bUmZE>;fKeTYnQq!D@dp1U7 z&u7Vr4_R$OnAR`xYl^8BxOdL#i>qNtFh4Kk^*?`+GX}``?S?G(iyJ4~Lf;l8TTn;| zW|`hFoSNY&8N%j;3cS-LtiBs*gjvz zgYmT}w?dy(5r{UEGQrhoul z-rj<@kOKws{LMm&G1bN2vZEDyC((#*HOF`+Mz5KiYEwfNhGN-CJ(vIy|#Bl`PXaB z(i6SwZ62GU$Yk{>E0x~cZ@2C`YyIcA1?<0K{wdUlFxJ#b+ePG6+Z>i)d)i(ZQnt3@ z2}ekoRoh%*r7^|4z!Z@TkqqI&9fME{AzaWy2&Wckly^21iVSzSK}`!8u#*IMQJpLJ z`%eu-y>Yw41|e_AQwP^kpU~>4uU=K>?GBAD*E7mzBw8I!`Jm9%BYPd}ts*<$$>zJ* zf)dtM&fem1lUp67CyiE=*MNeN!~5E9ki*1CkJPd>YkgwLF*M~O#hcL1CX55T7VgOx z2JW?^-)@v|P)?zoN6Cjwl7ao_^TQeFUK=&t>jZ;4z0I8lyvfGj!l=w%FtJ>44^hBogu?9oI10*=MLeGV$*V6BbN&A5&F^mU?a(h9Zk#SG2K!p zjy>2x7D0D5fgycEn7=_&0|2OHk%@=fpEk zkAyj+-rv^rHEgPhe$)*NMUJB}x7K4Qe+uK%U^E6qYSf3n>u1AP2HxSKyZJPOkdDbE z#(YAXkk+TC?OU^N2G-}wnjIau7mBs1fFBt6IPh;eBL@Z!j2y6=@_0jOERQhN*yT#6 z-wb&sJ^%(BMlQXZONNs7^xZ++JVRrHN2$xhbQu2t2Q89>5C`FM8)PPsC7dvficO9SBMU_$77zNP1+uGV zPwPMc9;;z5?RB|)poe~on8ADR%09cYj^_u~5i&@K9r> zfLt}4L!&@EWbUcGA_fAOR@`B5z91g=(Bhzz&33U;3F|CpXOM$|053h@AM_sxIN6yl zRxV+4%Gp`akg@9Z+7rcxC%GPl_=@<-s42AB(+Ps=g3N|ZX!Dd74x_Y}W7%izA=-xS^Kp4#J{ z46Fk2U;JW5{zpR#rcc?@pwUh1bi5CD7f?6PLu5pUzyuxdTexom&7YPL>PN)T6}^~d zV1B3-*cp{H<)qYlFCZ0zM+JgD9}wA$9rc7a@eynZRVTEcLBA&Vzo5Jwkmla|L(sP$TX58b2~qc`hJ*4iO8f^+k{vA!j2x{`{u?l)!arK3TkiSz}z{SBv+HQc&S}^z?j1`+N-JMXv2+bGwLC}g)1@y6>vVfB10G0U6El6Bv<6M z3kr%pmG3ux6InRnObbhtMxGH;QQ$KmXw@GO_5`a=SN-9b=N-oMmlqD#YD37CTLD_-w z5lTDCC6rJvcutfIlzfyrk4K}OlX%#~Iz44+INOrj+~fT2u|4iY)<&@I-1!)Nl~Yb2(K=WAJoxO@bR0_df!x>YpHK}9-jvH!6GKBp|f}=Y9=C5E<46k~cXs5sS z3kLr%2Jpex1>QC|n<}VJ<+o^lbcbQC)+Yu0!OPr@bQAE1ZrN7ql+IWQA-B+$Jl$X0 zL~UtmivNa6rBH#;OO+T1I9;qrd=2E}RcE*i^g{}0XHyxs)b9{R>8E(O^o-t*lI0hh z+(1Crz4hMK9;adL551!r#nEV7_3S2b=brE-MtlS)$ z7A0SA#t5Y)Xa+N;*!<@E`e#y6L#4a)<`-+tD{%qDEz~|O7LAX?2!5cpY5TNjZF5n5 zZ7Xl1ZDo?y_B_39RrH&S`rB6D3zd+5hoEJV*0yTtZ=18|ZL8l?+lkm-jau7sSYO-f zKD4c-Yi&=}+vZ05%~F5c+?%1&B&}`rHmz+gw7+dRL~on>mfFt52fV4Ztr+{-=60iP zZoJm^IK6FonBP3UzioMMsASdJ=3H9avZ23ih1J^zafr5OV7~Y2^L^RhH{UPQe2>-I zj@H{&V*F-A!P0gCfI@yXRB38xp8ydb<+aqNC&~{!2L7e7+;19S!^l$ZZj~-!v9PXT z-DvK$2COm;C3R=0rdde_N@y06+Jtd_VQi0(s2@H!M}Qr8Sjb)jLY%O~7#u3B^-?2v z>^B?G{M`+p!9+NuJpolT;!JH1)iEd?W!JO`qxE+319T=0(3p5dp5;ecI#DArAzzYB z{zhwsyrw~;5t%{mwO*x3@(OLb z6!=cZ-$bH91qWvDlz&GFO_a(65bXiB))aFZ_~jCrO(>i86xIMg$$t+uV-KlM6U&C# z;SlP2+FlSEsrtxoo}%HB>Ja%JzBj}sK=%F^mv=!{H)$_ zz0Ll4r1?+B{4b27T<~F;fDADz7c6wYX$!~&HX;D zMfnR~n`AU|jI>Ap{kadD7XRopF=|ItS*Y}i_6%50L#OZf!0{?G|>ef^8srjJ=XeP z8Y*qjYjAr1uleIk@Nsl(yyf2ld_||GnFg>gElhesuiJv};&O28GO*&(ww&sNfKHS+ z?Jz3AN&<&*_{+)_d$4}c{gO3nX=s|ImSgN>_oBY#gB}QmFZ!n_O}@dJ;DtK;koFmV zl~_#h-fUZeLB4;_e_$Rkipc|2i$+2N_S?`H=O@g{Dn9(F`kb={?DKI~@%kMsK1N-r zqxNe8b{AFd@;h0hgT?tZbz(#&cZW9I%Q$N7H`8di4!njnkQZpL$q50-BtQc*u(icw zc^8eeSupo2Td`jU_K`YY+ed2QRr_dg9mTbqaD{T~Rdp)0Zyvylz!Gwg517mup_@Je zxaFNbOn0L4cmLPW8zAiXs@>#arA?uM`&3YB%(Z7@k_DJ>YH#RpVi+qFX!YQWvZZrk3PDgJnK_e6M_VfbZRmxDR!ngP^hb zxMnx}f->9Oc35cC_)E(pwAk$2aadj;2o@2x>K}dN*hR;+!<{N`Y!HQ12!Rj1a?!eW zm6P4&Vt1FY4dv{fscR$Fite=O76^K4q}S!By;!oQ0TH6S_!+aoPAw;tXTHq z307c_Uya-?dUlK#)PH`Ugze@WzZ(8-LD_}!0m>IBXHi1C5f>e0B8u)Kg=vGE)PRE&EF#LWoU#1< z`270`1aWGr>wLAN;NdWxn+s94)#V=LawjZc7sM}70V++CBN3X{JP%yJ!mr|2Wm)0dL7FJ^!}hPrw2b7%`6eWD}6a9={KMp#QX~X z+ci~ZoZ9qn!x59vVVJf?{NOx|;ibMY$gAiNe9cF`t-Qb>CzU|k?zoM6#H`ih&OPwEXC)bOZ8HS zRH1kIH+{x#^2fXM&&l_1X`}B_|AC$$>vV?oaTe+wXm=S7Vn&*!wX5Fl%UO+9Jtk3F zrp=T5V~BK@)~@_#tzB6LfN1TiH~DwO67?@F))ZIhYb%(fjX6`l zG2fR{jHZ`}1(WnKE2l#w{t^Zc0C-AkT)EM&^N8vV{yrX2xs49l7GPD0qOM@R^L;rt zGyG`nNIelEjn?kUf6zyFy&nu1nxunzs=trF8|{a>_ZBSr3EDTGgG9Wf--+7`W#ft!>WU*S6A$ zww2pBtgQ5-&TXqReJx{X)wJe)AySWKh^RcOHLs@o5lMyCiAzW0;2qT%Y8yyH_G@j+ z*Y>roeucKx0y1up{C%AKjlLFaTJ6hwx%Lp`gjgY$K?t71GTh2OVYb=@<4)Z@alkpT zpZ6hL5As@*`BeEL9Q!iEkzXByaQHC!Tw{a!uFiER|3xE%>GFKwy)u+4l=UcEP;4PY z=dOny6?!pf$NKbQFn<4hS1AI{ozV!2G{9r+c4pcKJ|0;*XE#CW;HiY20Q~z7Z#}$w z_Mx_$8TlHGGA;r-I!98f22)kjl(%Mpt0o^xDN3q%5 zZ9XW5E^AtiaA_WP1p!R5udOMIUjq4og{`EvAybZGXJ5e8;SJIsF=!0Ht&JJX?2dA3 z794YYPYgAyx(QtobNbmtCchbB2#7O&d zcvBvZH_f*(gcMS+Q4*DKfDv{6P6&a8$Do|`0b=m4?`Nn#$6!B6aDLW1CGgzYGF*I(% z8BGU*z!~sC0os6voA2wOtB&;Qz$HB%=F6ctX?PX{4t!j}K7As>algW+{o=VE*KqJp zOu~F-eoTJ8-Q^nYj6^h4+pKZn32gd8JenilLkZHyecTBlET3+{I zhoJ;|VyJ6-?0*UJW3!CxXIfh&P$Ps)gHao5vSlr3-oY~B&JU4IKGk5&v{u#Nig(~j zY{~$SE&ukstqDzK9V%=v&^vF^ciI~}E*seCgkJ3LbU?Bdb*zbve-%GbH3gx{(;}r; zgDXESb>X;qC76F(BeI9DT~%EUU2$|-rL}r~jMXOPueN53P-7!yFY8HUAKZGoD`UHq zp&)4@lBV+^zu&(7#pv;D{$o;gjkWQ9_MuA8ZYg66^2|Ol*&uqDzy0B%KmT5wI+ahL zH0cq$>e;fIn6f*hveiod?a+i<%T_gxU-SDvSg)7(k=A5o^&~^Rhp}chmZda$GLbSk z8Lx2}S&jLbjoG)vSjWC*9fx2yuT|dyEvl4V9*yAO*_qMRt7D*NuXeEbANG+LuPc?Q z5yBtbO@{7I4t;RkG!xCtjA!uuHXbv8waP`#uWZ>f-Qx26PF?m1Sf1q{BCghR-w=4X zJc#AwMeSd+k98kePn6*~MVDLGY#&82CEOqAFNE$sIKgu`>SrMz(6{C{91}bo zV>29MZFOPxYh5Rd9j1NbQtUI<BT zVFOK$)#uo_;~K(A2jO?-yU>etiH->{H_!c?GVWbiNtn{i?GI{6l2XZSXP&4fxpg!4Oqm_rZd?1&Z(dyGc%LAUs76H zY9;&xzqDy6xhS`yEJ3M6S&On6B^7nn<1g?xkT=3u>0yqnAXaWVg45oaJj!6+$~3*y zYvWypIqgH;&Cn3?Gx9iB4xAc(;8@OhU?1_Xah%wqWw4P%-q{_L7_t4D+|l1n1;Q<|#2L ztodRv%|tOEkb`P!5~!4Wv`nYpW?uRnUT4V@vkKk}7XMMQaR+Z^vvaNEAAe(L_D(xL z0_muqF&6(u+Vu##YkPIs16I$|)z;+dC%LDGDiP-aXe4BxdH!6Qp=Aknp8fANxi!!< zbok&o5T#BIf#rFWGC2fiOmne(z6FaKrT)uDs%&_>%3U~69O5uhjL*mw5@zlji=@)Z z#1Lt75KqApfV$9Rb4q)Gzny)Lz8Mu9A<}w;nFe^B#MxvE>?o0{+6(^Mj>vWUsEXD4 z1A|=5nO5|b9wOC}JzA9d9qJYwY!?%wrIl25$5mCiv=DMfL$mTR46C4}UAm`TL?UM+ zyY;H7^7s(xetiUAQ`NWHv;4Lm>5g`I8jnXP5cbbkzmOavE!AHL&~X~&FwWtULP&)~ z{rUUu-K35Uk&3l@oX=+mtA~n=k{BW_)L-uMK^p@77hnzU(Pn>67&FS1yd@ly(j3&N z6pG;ra|fU$`K@3rmWQUf8i)XP41@E125o@x2`D6cjw5???p<$_*o)A1SkRF3h@ZTd zbpg-a>dznBICWX7#c*c#R0BwmM*D=| z71M9gh*W&h@bd-Mh_8uCV^!w-Aw+IE6U?#{v6ICyf}z(w#Scm$dtBqx`PphCd#RBY z6P;OF?AY)ZFZ&IQ_lL&G?-^Rsn5GH-w5X5gd*?Uea~DYLX{uZ#;fHm8Biy|3-RuKI zq#XKR5OL7|+vcSJWJdPV)3{ggpP*ygYx!c$^*z?~=MawN)a6ERy7v4mJ;%cgvBu$f z`ua9&+H=-6;b2$e!8FgcB72-3Tg6?Cj+m+9wPMvC_8Yo0KCQjk-qVYZgpHqY@N&Y< zpm4|>06FC@N8Ie3!Pvipfvh+Kp@e=OWDfHWBU+gDsmFu%=F13Cf+d$tA!Hw?&uTE} zWmwh&d{pPz1(_PCf@b%4zuVU1PByr&ZF8qwHl8r$t5)^9A8k#A1_Rqbidg&W|AWYY zokVkB-}}FmCU7H>JMbgr(4mJe7g^R#vT;AgMiYF5d;&8f`C>~>G5{w2PqW2qxYRSr znP4fo3oT~&>P%pro(v!|_TImv0nmp(wg^vL{>D;d==sNR;j3W&U7jp1IS$)AISwiC zSlcyOZd~QWA$LmFO1c-#+MrHov?fMRuCpWV=O+R`)8!t+Cf|n!UBZ|`(a8_VdY2iK z&79pjISPr;%_cVEM(dP!%?1q0_HI=-o@JkX?35Ut^6n=S9C-I8`b;z{j7c_z+Bf!E zlZIe|ac*y3DU@AapS5c3V-9y*^%RH|hghdXJKRI7vsS(2uH4{o$5dzGZnQNk+H-zY z^|!blQI@r;Xsh>otMyIPjP<-ERZqt4c)#0fogD2KhSa--dLho?9+scADtEW{qSfIZ zUM~!-o`hN>t&{LlLiP5T?5tG|_o#YwJCUsy@Lr6=J=!`k+H(^1uc=-uEd?F-l?6V{ z^+LQ~7*XREYlPV9lQEvPAeW>XcZ}aXwA`KO7lxG!!)t_*cvQXG>UT$%yJP*rsB&R+ zy^v6L(pn>2Q!ZGm--_Awx)uFauZ^j9$Jby;&y1)Mga-HM1|hCo7_uvfcZW3yqW_uU z_3jbYm!fNgp)iX z!Hw(T*4Lt4!m#zvB5gN>lf#OOR=M26t%cE$Qo4lE)qk>jwpsDv_4u3z*gE%+8u!pT z0o{Qd9=YpH>-r+J69XQpK^RsijKo)D=StR@(d++Y&7Nbe6Gm0P8B;He*!70hbF8s= zsl~9cwH4ps7h*jd*cwy0;zvFK+BAIEcWl`oV#=;3k{0xA#tqgtpDGJ9{{Hvn9(LEu z(yrH)qnU>tX+BFQufA}wN3VK7T1R`Q?tAkuXzHE zS!{zaB;&dvZ$9pjipn0e_ONW7hndeL(%bazUHED5h(%|5cG z{K%qg_7+(XH7X^QH+?dWJ=j6W3W1jF1^@j-Tx4Po&<$i5`K4b4!kgnr&}_3W*bycC zeg+O`T3EuSmSBg`#zU+6iO7c2yx92DH&i2PBV`T1K!|CNgGrk5w0@lkqr%Nz&}F?p zQN)`Wbb=q|f9c^K3^FaqtA=@eV?<&$W21RIWk3DXF|5i7FnUW#%LT;```>1?aOm5g z4j57_ttFU3b1Z}N(!)4COWFUP!NaP+lyy_KOleoPeVk=U;cdqF^2-SAh={xQe+=`x zqrvv&HVY!m*bI4*+_N9s;H={S2kshyBn(%@!`Aq&fsBfBU3b$bKXn)=ui^V<^@m_# ziTQL*(AWED7MyW%jaaYie7RVHGz-?NT3?mNbKyvY^_qw$bTOOd9`#}!Hwj<<1WKgc zslA&Bn^T7mQMPCSANHnnQM3!#967Hgg;?s<&MzNfp4w54qcA6Et~{6lJz50}wSnAw z+;PM$1cHa2{mEuo*M{t%kjHg(VHI!3e1Y-#7IB{oMM$3bMEQ{Sh1gi_>Qk@%lSjWH zeQkv|96pS!&&9T;D{Mzc~xF)!&b5W!u3 z&&yk0h=m7;+#E!BABM@bY>{Mn59yN?lWBKM~>lM`I{IwAn!Ge|jQ(7OCl7swyj zvG+$`KGDad9=8#m+u>ePxhhM|5j`gi4o~&P)MNzNpkTa3*4pZEdJNeUt!b8ov&zTb6n;+Y(J`jHsGN)NQ-as27Kn2ococ%A z7Hf32?#*zx-~vTQl8xvN##%6U_Qp4x=t@<=4wC?m`;!;ucQ1@i5j~H7=tvYsAMWum z=oPRJQmySka84_?*qjhtcR)B6Ox|+T%;M9bgG!6afli2_N*J>8q_@q(7S{dL@3P)E zqJ_YfLo%Unc7PAYHH37U$fK&;(LB*v!puQp@*m0n_pMIlKOMrkpz>xXT!2IEDT@*P z>Ha?HBIr_m9)YRgvJtitc`Haj8(y6!ezH+$$F$ zGXQef{@GBQ!kj)4bU$7ozq>!9y%8EdQG=?9E&+%xb}p5FT(2Dk34dF z62yW$cgm}|Q_nF^j{>MEH<^1zGmdMRQ>V^m+}N1LXJmBCv(2Zh-Hld8yps_}GuB`R z6O1`^%KpL_EBgtJ&;8hOKC`$dS~C(D?`!!w$k+t6xdSYm2K7b&v|{rKF%J|8w~LT- zoSV^k)j@F_b8k8c{q*2>l)_f`lJFcrrR$O*jG}=<11Qx`gUrK@V0h1`#8? zCDjnJqu28gRVi&<@bO>DW{7YQZoM0eZKl-ZS~%0m<|4LK41t(vi~+gA|!ja+?bMa_bi;>A5 zi`2FqnxUSYY#yXC%fh(G4rHdjhBQ7zuRpwj!heKbSgCx_r8!IU>iaarOw6Q-`><;f zjn)yz$MVL54zlxTzs31!Z?*vyU=#-Chxmop*uA-QIH; z-?I^tabOnMK;k-S!kB^!y(K$)^A~w?xqF7h*ln2q1#tIPhIor&ma@w@d_E=_OLj*G zyaDUO?4P3}b!FFdivDQ)x#TSvycOTG6b0sSH{Q3b?4BxI?_Cz1eQ+-Mc^!n@0iQ_$ z`j0)9!gBk%PIvV3i78PwR(`E3WeoCV%|HO5H@ce4k3_g~AGIM#gzG+|8sWv0Thv83 z_EP9dS?pa`4p4oRAKend5CiSu)CH(Corg|@Zkxe~BaoeVUkGo>nzt^HdzXy`UV_Ix z;_(<#=Gmh7_mlU8!#0eVR95*-mu<{GF&rK&^xL4^+l78I)k1Glc?^O-XBS7?+$0rxzQWXQY7NJ4h&t7vW6gNavb8Ov=0yh~FOS zo01WK0--+WS;EOYBm(BPW9Sg2ZtKdOR~7hpW(p$T1KTrZ+g-^wd}TfpY=Rchh~*uk ztl?Tq>@Q=G%7QNY_8_(&;f+T)5F=^EDe3GsQWPMUO72~U)8l7y{3!P23%HXNWg9c~ z2B(p+W|$f?GngUS6qF7BXKr&Z7H+(GmW;V;W{+W?JB<6b z^xV7P`kg+@v7mpux#=n2wFQZ$GIz>1N9MY9s^`MfJzhDPa z&M^cV!?siBc2V9n+LG#~t`!=*FIy>Zq75|zd3fB)Mgsj?0GS19UDstz*Dlx5&bS}1 zZ0LH}z^_T;AC$NaU6s<(mAUSs0(i4qt#*j6AB3w)aYjX&1qdTQzhXs{x9lv`<{-nb z63YZ9YGYkb222!;2Z|Z(oFNV+3jsVIPy;^ikXnu9k`bZ%C) z!a#01Tr=fTFD$J_6R}KHp6J`kN-cc?K8&mF5+RXDuW{5f--^kJ;qdhPIyR~nexQt& z$WOk$3wdo$Wt=@_t$+kWbjNy;8a&D=#Ok|}o6J$?ijPCYDZD)Ow+X>w@7d&M+tZ?c zP0JAs&g@?g%BZU6#skd+^pGOadTa{jN@*4~v&#&kk49}#k`Q33v}71)NsD|>7b0^b z*}%cf7$p)@2yaB-2Iavn&^AC)77ka%6)6S$++}XqW8;~+x~rs~vAV3@jI%Z=*Zt!Q z5eVK+FQs+i=u=`j#4JV*B{Y7JTUs!kzqj|p`j%fV&L+?-$SI}SmkmyF<#*4$Y*1DL zTY`>@;#Lx7&xC~aELVZKow+YH$`0fFs643u0a&o1V@f>CJ)`e}3~V~IakG^7IdLmL zUJ%_f_>>Z1*2kjg&be&@bg$Wn7d2qa?4Kf3654zgb1m@fa6 z#U?C=Fz@jWkk0>kw#|GxNIE7;ft6;yItkW#djz zL%pO6EYrE*$0Eq>eW{W5bkL%duW4jg%X%&5o%#+Zx@VumY9W0K!Uv4#s{K6x2Ij;= z(@YU3z2nwgHk>L3z)v@oxMin1&*h%0yvOlLE@7@y$iwHBxO1%TYL|PC)16!5p6L*B zsGU%6scSB-vE~cAN(4F2u;rY)9su9?b+sdsQ6K04tXb4Ixe{ScLTQP64$e2mjdX0O zR=tL@vZF-EEos5L=4v(wdc%qVNYv1hgqTQZTOR8b-7}C@xei@y$>Axz3wNg%Z90V+ zTC+LGZ(tN25Au<;7PHJlH7u##=7nC$qPnnmv``S-s~Cu!hp0U9W`n&l_;Dr)&X;S0 zRCXayA(RQ=Qj|(BjT0-2aXQSDMufYk1AXa(n{~rhWDf?cV?DR>7)$ibYBh^K9~sFC zF^8bB%X9xb_Ic|TPq&<-D>=5zg!Gx2^H}0Z-quPX<;=eS(y@(6~ zFqAp;oF*Kzdl7$glW&AbEJqY()7>1Xb!z{F^bff-lUp$@K{%aaC#Qix#OMidn*^%5>IH^JsZ#2zS)`?+`t4Yg(CLi_KQ#F zA#z<>RLxCH`D{j=Ma#`A8#s_wS4mYgd)+oI{@8Sr9&dEr@k-5B zYyH;f>J8P~xAGt9DfGw(eHJFI!?-AXx@kpdUKqANuuq*kyWBmy-YwO*o$6x5W(1T( zc=e{0ncl(a?`UelXbqx25jro44uV9W%cL%T6cd}xq;B>4qj{ru+8RK(!chpJuVMyF zEPnC6*#EwG_4^y~{$syTqmOZ1ej$WGE05_*AH80FUyp zF3f@6{M1%!(E8!KM{pZ*D|OYcwXAHo(z)#AQ3W$x!~$|k+d=z%u5#s9Z93BI(sg5;Cw(qgq@ zKNe$_2K$x|h9eMRa&IRN%S3F)3!RK1`(OqDnOoHNPQN$NRqt>=^}VB<)8E;E*BAW1 z-%)?;dq+OgNlQ3=D|T$*RqqTx106g{HpF}doo9fX;<+^g2$R(zj6ryAdg^*Yj-N8^REo|m_D)}kM-eMg`F z6$to2R+gr-kUgG5Y$ebTJ5YB0(0k)cD4TKp_)Unzc0LHlCQO$uozY}7VJo>;I)$@A z|JLZHo?zAY<4;yyhW>pnvfCXVCAJ=KZXL_6I){lky5%T$=@t8T!KUMg1YThLH!{9R z?7u;B$IUjf%c%+kGlbmPkze5lMPG$s4W!z`=;yD9z=HXD+;SZ@<^Oc*wrVL9ID&_% zT5vDMj?o^Ie3yf8fH2r1Nj7)EUg%`xo>x*LxihaceHgq9+cntWK~Q8(Z)D&40-Y5! z2OBe4#LBmE*)y!;$1WYp$IXI9!dRSH?Y`sutbHLp%Ng-*X39|M{x1p+e!<@VCEmh% zSh#eKw5&fD)=l|SAPZ}P1vw1iPng{gVs3mOcOlGFU?5`vH{~mNh$P9%XI;6=OHIR( z76D4^jA@M-4#ApP1A-}qt0m1Za1(GPcc4q;t?dpyFF9xJ0;jr=Cf$nFEfqt>oi%ig zq+YR6xyzGG;ac0HsoHY1fcXMXr-t+$QT-9hwet-AZg;*-Hh5R?USBLd)~+qlH%DPt zj{OC4?q_>HV}}NJsWWuHLeQBLA&Nv?MZld!tM+@lA%elac#{+bANxy$wD9(F-ZVQNLg{8haoMMc+ex{*Bmg z+&x|GBu|f1-CeCUeR&VL-*)PIR=&GyU4xWC;2X!)beco^_A>V>P}9Ehus-1l_nS^( zeDGk$E^C@+5PeYppQX%P^hrKQ#rV5arv4B13v4Li7jioG$!lKf#Mz#Sz5G(A^;88+ zCL(T_+z=+6qP`QkyF2&Y7={?6_>n0uq0#X(l>Dxw8tf*1hB~h+3Aqtyn~@m2q?2yS zbGz)#4+07GbS^T87O1AB!ZS>g1G)_e$=F(2ks>yC5ny#lYVII#5OS&u!uU{Rih9seJ^@k>r!gD)LAumJ!d$AVcU2&jfY&#?eWK!Y-)%kFs) zo9Nrll;wbM80Y=vIaoR);m$=9>{1}1TjGZbrJ2k{Gj3j!RRu6#L~%wUsY`-#?z~Bd z%fY!U2jfkdlD*2vLpLaAhQ2pJ$|1u5{5ZYAT#PHp6k&f@9}Mjq42LEr06}AdV`p`S zXhq-X`39OE3^7hVWy--8)%F*od~brC9G#8*P>eqMcZU4mfew~X2i=`lI%wUP>N3wr;2>SSopV(FQ{8@}2_xYg_u#C*AvdWO3u-jN{*AxV?~aC#N_Jf0Z*eRac%x&vO=0%K z9fThude)6k)eoTuXy|DcGmcM)Hh+L}g#Ml#JZ)Oc<>&JtcU`FMUrKF2BG+S&T{gtW zMm3A(__rgqCfQvyJ<7*^tQ5bt)q%{mVNkZ@&K2jbrEPXHYgBUFF<(a|fwcVFuG~?i zfduF)E1*V2bcyXc4xqN78;`LelC~kpq|KizkXwf-p zh%Irp!I5YHyQutie-@h(Xa6#2C3O%hed1HGgq$XS}H$8HTBP-S!YvNtvase%0{>Yk9;a`}Y z7BvO2`8n7D8gaUT>AkuKji&Bbz+JG%mxrT+)No94d~+C*j;Gqtptvx*G!dd|aXCya z@jJ(gwwSionK(DX!Pj%)96a8#oTZu5zi}0wgwjX};kX(@))uTy+)cDLvihn&cZ+>h zE0)JzUWuVAw{*dbE-o*UtLvgomo$S*y5CUx95AV3S8&3S*r;uG<=9Q{bToQN1trn z51W5{%DDah)(q#iy`WnodLeziPBIQ97& z%+%-wG*h>7Ti{=0i-EL3j4{VMO{bG95kMc&j@4{T99_uSU0E^C7^MD?M|5QgX^~rI zIAcQM&oc7xE(CeX9A*-(P|BH9V# z;1Lj+7sZd;SeHK>HP5 z2P5MRto^KZyQly5NbKz`$Q`8JJwbP|!?3%>)Oc+9Z+fxikM`G%7gL9!Za}N+AE-M_ zOdXE8PRcG#8?Q)v>yH1Uoj5;=#!{u`A z?n3#YPFH!5fNrKx^ToZ_N$A)M}I5@}sYTKe0}&#D~0z_&Nu$W=~?x4r*%_PDqtdDrDy0 z!CRrQBwBO6#QFR0j*h4n_<#`cqaNshS;UP)$&fKjU_o@qQ+-Lvbn1< zpbkTOoo~(R+;p-skbeV$2!BdCQ_^!X82p01h%&Yg#(tB_hO z)!yLl>P(r3hHY$Vx!sQVu92)=ue`3r#^!`jQ@&-Zo#}M)!ZKlr_Lh1_XUbg&JIR#R zjJK;=7m4&1j@dP2lfJD=ug!4 zg8Ck&uXYY4-UH@(qoXCakH|6RvGVbb6bbS1!3$fIeH~^eOdFG*8^$aZV@mXCmzEi!@JZM<{?G->Jx*Yc5D>MpIy!_lyy zfK8(NMFnWiwR}Vi`ef3$b#2rNJBA+778{A93gdmHgOtroZVbHT4z9;DN9qV$3?Df@ z(eGq(*(?c-upiR{XX;3tE0(Df{WFk!L3yr|zj<9f9lPqDPI37t{!Y+8_#|~}=ME%6 z0F*S~_Gq4_UZeRCH_0Ubk3h2Lgn92T@*Ho0E!26;d+Lv{k3azus@ryO5E7C;>jh>n z+4cs{jV$HkAQ~)WHOp9(p-u!Wc-%3g?F;{ zuL&lg64n5Xn?>Z`olMVx3^?NBgu-#4jDgqyoWfI`v>8Nd#A)IqTVkj^`Lm8ZL;EAH zZH*)6JGQ+sn;QvThg@PP!HrU95<})GQR)&pL&&`};biL<%JnAu$JlbpUpiW5fT)>j z(slpb>@M;FpH=r#?KH+tt|ZE)j-2at>+vN9h_=O8Lt(uUc0Jgybse=6u?E}r>Mv(Y z)k+IQuYj%B=<)iFmQ;MBbK4vE2s~6F1L?8SwpMC7OKTuwf~kP|Xs2)e1G#_HK3$oh z?HXlVXUZS7V;5fsB=Be_3iN#qJ?Ef6lX)4cO}P?@cxf zw<-vF)|v~65O2s%+z2noLKkx?aZS9I)5Iv-P0+v6Y-gD84)+AjwUI$)sl=nTn}daS zo~~^QVvTtv_Arp`!ZMzf@cQhx^t) znZ|SvzLC}+gQWEj!e|TYf1kGgDYX8giH~Z5{2bpR@9c13turY^G8D$m1P=GPwta8~ z93tfmfWrqPOLNWQw#I0&+95KC{!O#y7=Vjl>lfTelf4CN$F1sU$$`viL?2uz$vRvh zd}JWlasy+(o));gqjox37^#_kkip+j=rn1I4;ftTbsB77d;kwx{^zmJko{o-wSQkn z3*t}`qJO=^we1aSb_H23<`+~e83ssbZ`M$HF`z`i_C>8loxYFvL>sg9m)dsiSS1!MOT9LWnhv>aEi zZQUd1qvA4d1rbzMizHt#crk!zn0B|Wq9Y)Abz*eHzLz95`bHp)Nn`-_M1`@!(~ zZC}+K$QZdjEi^Cc$#4haSpSE0ZfhSov&iJw_EG(|?y17a?MuV+PgS@kq@}Rpwy#Et zYYonA-n7t~ZC{L>Idbi0Q)TFMb6(hrC}`W&<81x5gCn=6gp*20bz)tu7%9J4y|L4` zVO8!k+PbPIX$B&dBONKvv}g$r93C@=c)*S}jKH<+p!hk5FN$55#bN)ih~g)uMJjJ# zVQm&=lD4Ea+V&>vjE#WpG`@A>sTph5ZQ_kwj}e<5|K!s~TF_Z0$ZE}i9Bli{Z(E+n zVxIcNhL;u~uQSvbWTZ#T$uS8!n!B{4B1F0aIbA?;&hEe;BX``0^U49LFKVr0-gv*~ zhxlfL_*sTB%8*B-`w)XIN=^MJHwv=ptg$v@t7wZ`R}Ui~uKFY3C$AqHgb~wY9P`#T ze>M~7s_>DEW)lIx^(Jl~>qsYpl>D|xU~$CQ!ZJ2Pq5pi2mx!^eq?X8G3K-m^!J!BC zr+g&rP<4aU0|pqQ9%GNi921V&k4f^=J3v;0`&eXvf#zE~5d-AAb&U*@vNDZ7=JvZe zId z+2o2&az^B~W0OMgmfAUD13&s`tQLI8*)$4Zp0a^Yqa*SEQ1&ixQC-*m_&H}DfE<*U z#DGZ-M;?QM4g*HCnhXPjU_fyI#Y77;FawkDau@=nwnY?z4YxI#Snaj{qEVB!wzbCE z^xph#i4kHFOo*|mNg*}H^d@PN5^EFl(DVPUeP)<}r0wU9Zq8Zzz1LoQ?X}lld!HV| zo6BEibFB99v|lHTk62)#V^90FFGeb2tRNFl z%QLaos`0dEd@Tx zHddde@w5YR$8Wsy#TSOnD1wy;|#dikO@3bs2(>N*5ZPhQ>2vTA0scv zqByyE&i?yNi*D+VS%*6U^pt>q_csWGY||VkBj6nKd)x1Kle}n-&+kpY-<-_e>pAjInT^bqJXu?k>93z z&&gRU3d^z!x1P%5EX}tT9x%OJX{oxy^7uV+^IW<47P&b}UNc{Aj+Uzoa`Ws<%?XyO z*rmUxdmwI7FMSR&l_g;wUpU8MQD_556M!Y9fQ9|`a8@>v;f2&#`IM`^i}HmIIu33Npr)mpCF8BWN|(;J1#lS1WicBQsGR7^}#b~ zSgZ{F`G!7}iL<)mGdas?c^^TG*3i4sUtGTBgcU}65!SbF1S@$kkkz}WX&+Esjh_|b zu0$Jzkt--vO7G&AQmOit9MdU~-cF}Ar6ps-g`Z;~iw!a(7p?7ZR(sfZzb%iGYEGZ9v4t+2g=R zkZ>}ycn9=2)<54+bq!OM9!w^l2q^i_3YhR9WQ^lpVzcoow0Lv%vBI^6k=qKQ1$ohI zmn`%qaW0cEyb@a-LcuytzRmE~tzRs|;sNXRQ5pwKc1eR#8yG{znF6gUyT~vWSrl!# z&A|Vs9g(^ZpY}lN>5Fgg3q=-%I0HT3z&}Dk@}g+Aun42fEQpj}s5RYYK(>y;<;67b!m_&%fYYDcIsd$9d6!PqL<4qt4kz8YWA zefTnF)V>l7Z%;kPcTjnl_~P^HwQ3Ic%0}B@>BXzahE2h8b4-VB<^Ko;FY(AczOOIT zc6g+v5W@Ps--bsgGBcN6g>)tg8$#n`k4+2Y&n5oskRQ|h~w9quI z?eH1L%f|Q$w=V8Rz31?m_;y3c3e4{(@SV|~EpK&Ws_sh*l@}S}ggShd8GTi-nA7h= z!7>Q5Iq^~ickyy=%0h4r1DI(~%$b}!LDjnj{Z2mTHhO-aziZKpcWyb|^R%LW2HF_kAZi&z!X74sNMekOYqUU#t{<}P9TC>A+c=VO;waNpU$gD1;vng@>3BUt!R#h|tBo>A<_opf9`)3~Bb89zbX) zuJXm1*s?eEP7(=dt=Mx;V~OCz`mXXw$KkQkt-0|oboLItIX^eP!g2WWw*@SzTq|aF z>cM<2YarlIzxKsfq=lLeUzBgVqXR3hLQT6Y6l8Msp(DNBkd)BP>q5npY(byGA&*E` z7ZyRCAR3r<&K?@NAtR0qS~8$tIznC13oMlF8Hi35Ia-6x>cnug9X^lo7+)dQ<1w)Er|%Nm(75_&zbZGBh=nhuX4vwynxgpks7= z!SQl_WJMQpcR0DozAi*B3dQDfoszEof9w-F`-7A83ZcDBHrH z#Jhk6J+LtBRk1MaL8ZZJ4567jJ&-Dz#C9bsBSS|N#)SkamDu)hN9#24joZWd_{F_WT8%M)02t><%z&&ji6sRwK!a! zJe3-)4`_z2a)m!($N)Zdgipzb&s%{D#_=+jd#uA)?Tv!4f!!PrP^udu1jlC?G<3x* zwCtd+`1}rS0dz=UJfJ`HlAO%NyU>``KoIaqG}4FKinZ|-sC%f{MRooIc!=&Tl*M=m zt*pQ{*6ip$JVIRWXd!0b%=w=|_Dy?oP?de7O@~Kh%vo}L*1N(5O#zl(Tno;DUcCCi zc>hZ@J7JBwL0ho#2IOc`Q`GDGPiEfy8E(4J@^dH`r~uaApd}j;mR=qH6GV}(F4-WX zV&N@d8}zKOzdOgVKd%rY4;$cxF{!a(cg@>!-t??!#SW-w&4qj@4=BD1=CjY>93OOj z16VhmfV%)^+=O#|cs>Ptl&9e?-%I+xV}c!q;L$i-e9j&vU6MZgSf|(IzVuldK2d|! z=(oq9g}q|Tef2Z!f#CkXu?%teIn|o|A*I-yai+}kz za>?xc{4*T-?Ab8Z`*WnhL_JsYeB;uHv|H+Pp}aqm;zEt)4V8_Hw~LF8o?9{Nu3W@^ zXl(N{isady5z=WN`sJxYtmRkmFD8lkyyqcgTA%xA+&9Dm@lIIeVd3oFYAqQzJ$}z7 zP5suR$JtTSP2=@jHwoAElJRPS3)=?Z{g2-x-o8mAE}~v0pa8&~hKvnDWrkt)n6Py7 zhKJo-dtP|1^5OceIh$oC-;rzD7`sXT>EnX_0c^vpnB_)6H(Y$u5C5dl({BKAd8D@#Al9_9SZ8r{0O9N2tz*hppKxvs(e9)|unj z!9fb^MV62Ck7H@eDHl$Sj*Jk6GJ2Uv$GUJF`^VIZ@iB(z^JAIouF>*GSN&XO#Wh%w zKp3$8Uv4SN2g?;#aR z54|CkdMExNO-y))**9s2^f#cyn7Bf19{CAWTe?5thBF*wfdR-Hc*9W~&Li}7u8mtV zTChUl==W*E!tTRPfr3yqq% ztJ)7<&Ae4HXmHv@bHo-#+LLD#{Y;MAI!9T1vjVtfiPTjnxkG!Nc#hVGoQ%u4x_LQC zSR08i<>9WUe7BB&nl(f0`QkdQ5B>I1m9R-Gha1E=FQog%v8W;2Gb0^%QI$XVxcNKl zcg@OqjKo`+6T4xzpqIFw=P!Ot-}x<^wdK-VZ?>d9g1HJ?YogV|bXh}Bjit>h5tt5B z*EpX3EYvA)j;Ei-M-qNSHG%jk_MF7+KXkj2E*lELgcW!hg0>%uu+w;KdDYrGKJp=5 zR*3H^)7kC8IwXYHjV&eJ?*-o#&;eVhcd?&30Y~4fqwmEvyoNmtz@cA&x50U_U+2GL zcn;vXa1xvWE*tJ$+!JTU6PrweeHLvaU$Tpz{aW|munfb;2s012(BVgG^|%;I4IQc) zr@9ZtV^fKC7j!4ty-(KEaWQ6GD50Z(J)6eGTmO>r4Qi@D-(d%5>;ii5b(<%J!raWA zEy(X4mW^%!{ z$8jK3veYW+%Eqzq#=9|3vaTDijBr^6y_@@_A|_?F`{<*tWI=D>T#JR?46e7Db2){A zJGoDs!te^t)h6^7a;_d>xQrX#0A~CXQpDa>(vxsqjxg9Fk{uB#o`_T^N+Z%T_tBRD zBj)37BiT-vy!kq=g|kE~z-!!feF>NO1I2Pyi}XV`U59t(PRgq%_NzJJZt=7zQ^foX zacLqxJvJ139qM?_5~0o9&h)@h*Wqi4pzX_^$m^tz?~VwuMQ9xnI!}Z?^V`k z!A3^c7un{i?|b1mfekys1!FLJJ_J6NihDsnp$5M5rw_@-6Io)`{NtFb+kkxM4S@~6 zgB@P$x5h?Cy>DH)adABAy70zA^-Dsry?XE+(4IK2=lqzX{^7H6Ko`N}Rlp}Vtxj*Gxm)27ch zi#qJZYgTA+OPQ^Jw-pGs0*$Qz3caEKc^zBEV(jPha0*2fxEM2+e_(}n6E2kJAN?5P z>W};Lae`Ew`}uhu2T6$nz~{++JN-b3ut~!|M3K_F`Tu+oPa6USx)^ceffZ1N^V=!# z)IcpJhlFwYv3G$2{$Yyv+>bx%eNPD=fm(iW@G9R=ej~+OF2NXp<6ow7OcC4?+qnG& z1<5~ujR{HNBNTTl#f?k9&JX#baT>E^d{~Ue-HGcSyI!E>!biktirG#v$I?+y;!{d` zubW?*cnL@Q&ml+tH_X?Jq#|SyZBb_$p7R}F$wcPTo~{5e0U1p()e|bYy3XS3ZGcb;Xl73 z&w}wZAu|6!h8BoiO1Luc)3v6GasmCDs3S z(?GPUy;ZL+9C}mPZ^H@i-0wfX_A0(dyCDV^81#Um=b2{ZlE`~RZvP#L?1-%Ec0{SR@*RnNQ4g#^+O*K6 zbFeA1a;|rLW>;#|MHz?Vgl;>}|NJ$yGxxl*_PoOXjNU8x33F{%eiY?2nk4a$u?R0J zYey9RAia03;VIiawH##%DKjlJamzStB$v+lyzbtQ-X8~94W1o@bzRILZ2(t8e~}UK z6+~i+SMh?aIvnUw&#G9@VlLnBNqk(%Eqs3MFYx8t4bcGTks<15ajzH@Qhvd%DFQ-3pD!Hl8ul*0TZysb1eIoZvC_035hHVB2 ztZhdRYDOo~coAq^%i=wttbIV?OBotV_ zkz<6ogEwIAHn-b?&6DzDs5JHfJlEx01&}0Gd~3)n?UqJi%!cy@5KZ;&M1Ie&;8~xT zp&y3Omow9HtH2la!3(MIRcKh8;w~Kne`S+Ctpt}VZdwu>m80#?E79~`SGd<rBaO|QLA&LkuM{Z|apubfr-PqAH^2dF^oInAXF4bf`fMzd@|};0X7k@N3F7r zYb|p_!!i>pRvunfxIDpT+bGOW8ZAu34RG>YVbbRuwrQ5b17VQn=1?0`gUA`t*G&bDUv$nuvACMu=erddx91pq5|oKa8-l_nt@YloxtnP;un|UBh6;6~Fs}Ph ze?25FPbcGw!%JG6yyq?8aC@j!Iw1}0j45DTCe4vsZ>5v_JED53g`8*lqU17eOwL)3 zJeG>!GtkK7JcD|b5#4~M-Y_jW6cJR{;ZV+&PHTa#9BF1l+Nf?)sH~tVO7Q!2XKKaK8{b8-m3u*^R-^PN!xR`5LhXJ7QZfi`9DjqL;7|9 zK7Hx*^bGZS%K)wu>#_a&^u;)`GFkru&1CgMQ2gqkh`B=D;DRl!cK?&;-~A4J6BvW#R)6P`i1&Ntwc`Pr(!+>yu3(xQ zy5!*dIm;6)7O;bP82k|K#0zWB*nO8e0;i^dP_)&C+sZO~@=#w^EXrg?BxeQMv<%y< zk{IeLYD)isD^H}M$;_UsiYZ#?-;EU8@C_K< z5boxfx^?$2@PSL6{~bQ)Ys^z{@u%%RLI*Cazf@l94&Z{?>}xS=?~KXzW(V5K&RU?k zIMET**blYVg#zpezex>kGb{&J^*6MJ835pvjlZ3bQ9G@RSeJkGED5a5K-eamut_UE ztIO~g3>gY_g3>TJ{8in8e;NL^E-fg0h)*>?2loj%NNmS>TKFa6=}O?+{NtgK}2;%3qX`?2HIpewBF{ zxA^k^A6YWT;mTo5Q2c)~;L3GeqyYT$KO}I4APUBeZ9(%1<-V$F^ zVLE)5cwT+qBqW|Aq~Nv>%?ce*gU<{3>z()_;s9s=Atb){9qa+g+$w`j;OEaLFXx9D2}$$p=foaLT8Z{mH6y;o`37J zU;l^Zx;E_NLgDpSGBoc!b5((%TRBKz;i2pRrdNq=?8k7q3KoD+EQ zR;(zw^e316SPN)@r{Ri}9{Is35+b)P*Fa2L^5Xg|%yjZpt0B+_#0qa-~sYz(K-^P1+S9C6J6YJ@5Pb9wb5d zy$|>$tK$zfeL~pB8JgE$xvmZ1x6p$7TJt0OvnTN@iZ?S1@8k8DTZ;JUI6fDQIFXRNLfmo%n9b$82$R1M2>xjzzk#qU0q@5F^-t<$~h0X zS}F!N%yE>3o8+W)ef1&9_}^QPTe*#YH-00sI!iKH`CW3-L91q$Rp^$JJaTfR+1%B> z)nnB<ZkQN;kkgwuZ8sMp?K_5V4OCZ1`=Z1+Ts(?vOG~q) zfj&v#bO$aeU0qkZIDSXGk(0t^gz----J906Y>?Y9SbB0Bz6`K#TTbTshw=xW7!-B( z++XcHHu&3PeE83*?~N2AOG|fGSMNs7A1vMlq(wc&?^yi1s13sqUhuFyFvC;d8oO+wF8 z347!J%XMtu;J$eDgBa88NLv3CpV01cBzOIG>+vE1xO8CWtk68*+Uh9ckihI$EY2+k^F8_kUs6k-@^*6{6f5q6`B!2xvn7%Qv`qg1H>wh<|A044JdSlFBpYJ z@c*D-$W*rAGOG^oe8&KCS@G41&_1- z;DY^A1qX>TKUHwwp{RQy>jl>f`BM5ZTOL$ooGqWTSwh6t@T_GPyss+@97RR{B7^4> zNva(5@-kKA73m96cwwCMUvZ@QBJ`{~z@Mh7o*LM~Cs3qe4wJVSh6NQrIt-YPC0{7I zPK_vogWe^!xA#O#@sBqn(Wh zum{9HPH~GJ{BK#LFX+}mltEfD>ES_BOaKA_)Gx=+!Fqm{Rb zA(#iD#-YV!*ss&@?V5=dk>dByhCovW-JLOg8|={JM7|~c$!`m|@hn7lL7AwEf|+pF zclq#-5V@rzbKM=+r>{&<1}@d2Pdw|FY~gUE~xwb z4qV}*fvW7eMSNitzHVsXaRbv&{&#wgB-1gOT@{|OT_%2C6vbPhrWqPmMwd&MUQ#B; zqcEF5TeR*wH?WPOO68LqDd<=K`8`wzRoVYYcz(j$ct5LI^-)Fy&a@4Err?_VgpvQ< z|2I{{@}E*gS|W#0Ts%$ZOt5f|-B?DuS)!=>tMbBXlNK#lHG=K5_Z3(FM^h3bEz=2& zKwX=udv|iKfIsmOqOl#+Ux^QXF2=neL-Z0M7){dH0!A9!C`Mr2w%M%M%}Sl~FY!Li98$`Udw^P(nOVlc7LcXbhyE|WO6?NfR zAb(sj2oY|cVqc)FO;d8`EAuPn=g&_m);nMwk)N#GK-%95w! z-pF2NvVm;kCfabLPRs3dOClu8H_DA$2Jg0k4aBwFz766kyg!&HZhP)Yp8p6H}Y4>6Sx4~!VT*=gpHPWmD;)x3i0fX{0WzFm0VpB ziQow(3Ol;mgb{3+>K><|JyMlGN=oszPyR#beL*P}o;!YX?jLVdM!lbe`0LuVnSZ$P z{yg?o1sHqfj^0@N%8mE4-?y$E#is+_uK=Fpd=7|$Vol^M8gBmWmOR)h&tL57p1|RO z5bk+=tfF9C;Sz^#NDGfy@S%n6Uu=TzSriJcPQSx=6l)fKP*I=?*d&;xt8q2j@T^@! z_+s!?`)A65&lKanE{hIdO)^`IW~0}*J=bi`URChD-hr$rkCwB9a`=4E#I~reEaO18 zapg@y7jER7XZ+!#&$By@pf5m9=F?KC`6>yMpDFAfA=nFG0yLI-MPcQmkrt6R=HL== zXiSYs+dy^!(p5UZuLZ6e>m{bs0{yE>EetB*WV%qW03Xp)E{;XLk(~pD%gKc`>8=0! z(5$!h_@DY)OnAC*Nicx(2&kQSK=IZ!D7JP4I-9S~e#d zjpgC(6MvUlTFT8(Io&A@v`5uPwPZz+pO| z>t7D>RxC?=xt4qctS02gbeS&_gs)`0gfCAR_)CqrV`1v;m`2Rw_(@n&{rL+;nWg-` z`NrH(uG$DE!6m_I;X>g=xJWqg0^%mX1u&qua`vZ`#E%rUNhq%4ekqmen|40|CtWc! zaf_YL>*O$2Ine7%sgV@pR^HYHk`vO+iXj`C&y+E*0QFJFdFy>6~xbVcUAq)0Bx!>uDv?b;U=`1-uGEMD$& zN-rj)wa-naOlK)iPfPjCS5yAKATP?lQfpis>8mrYl<+SL6-a!X@^^(88b&j<|L5p#4kb+qg~4 zn3t>4L#0sH^Qjr1+%DVlEY?DI<;$ncD?<1mcY_}N>)f?>QF?r%1X&P8`qD2ZdaBe= z`qJ3`iY-H>l-~5Lng4!pYN~^RF>&$v&9B?vTl-lqYuZ&X!IQFpW6C zil5f~R?wGm2No)u&neQ+2Jw{$lwp|B-u>yp7t9w=M*Y{12o8JZ@a0$DSEP5_y1My6 zPh{6e5VbAIz6Pt8%g3z_W@BXjxd)D8jbnmp)LKpTgJ9w$cJ~JOCDUpW5@p5_exgD zU9TEjKF;ML%o7t2)BdA;AYE(Di=@|fInl8Wcq*7Yn)@9`f7e|^4q^_)}(Td2s{u|wn z?_T`Z&#)FjvzE@V*IwTIQ$?z5!$l_57W(cOHltdQUlwbXIv~Q%Y`$QBckQ)YRf$Jb zQ0jd?^L4Nf>H~15WC1gWvB&EenDyXEp&*U3zkFk}M=51&2L)B?+j~BB44ZME?%gSX zJA?z)%ZU#uEf?Clp5q688##EEKI(yQa2$J@J_yqCElK?1w{w#2s<_*Q=(ZHDbZ=Xi zlOH%7S-p=w{2?Vr4(wx9+$RCU#losAqiJx1X&1TTT9E; z<9y`7hi8EDaG3bvM{jJ+QKU5A(Aq0JxZ~6C_b*=D9{wlHdH9M6YJbf$`jHeq6#heK zw5mt=ojbRW{yB2+C23+GkI>gWJNHvx?CXBIY;Krw-ynB0ZHttAT`^+fhYFAB25Ug* zb8tDBxC`53e>UacZ^FVNL`8=5b_}sm#UV>a;^M0B z-zl{ZbVuj!k`o`?Ev(!T`l8&v>myQy$me+Z)OHq^{#XY3=Jw8g$0P8N?79c~yRsr% zT4FuVU2j>pd*yC^K}Cj+#kKwF_ZAtSJvZ4Jz&}bk z{jz-<+~5KIKw^ zxvkZZSmU=67|6 z3JKifdv)e^NiT3IPYA!=E8z2rKiv5?wK^m;Q7n2Y%J{f+?1A0*PRvu6WMGi?hr%kznPn~3FSzeR$fS&E|CT)SmQE75~g91gpnA)EO ztL=F+Eb=CCc4@w3acpvXItlrE#1IOriiX5BLJv-%Gbjqa|BIZ|p6-h^&xfIV9 zF_9wA!ewYF=Vqr|nvrrPge8{|i!jsCATctIOCv2bKIgeS#;eNtfKYc5f-7_ z65{HaxyusXZ3#VS2|I3?f%T>Kf8*(H^(x4qEhq zx`wd2-Z>dUbqz6DkTxu3yXZ>NqOLsWioKcY1pLo9ZV5kV5lxnv-IiG?aW|)=#Ij1i zb8RwGk?qr(G{=egsL7K{Je1ar)P{;Lhs%eIAI#))7{?l}h8<#lV@qY$h8)=L6vaH0MPQ*URxH)#$cX#3aHTB9iCSa9?jl`| z?4GSg0`8E`IxSuDG0RPvbG1dI+wvQOh35G@UE#r^nxzL>`wf;#&jyW6h+XO_mGC`4oh6Skb*2|QD^!|t ziVe1~%_ThgcE6Cr_dlCp!KHIzQ98sh&_2v?uv@Om_o68}cG18if~Sw<&enE> zv>yU{V|tO-qv~VFHI+#?R)duvzVxdti5S##Ik?C3jaOfPI;}XctEniJvGucEy)sUG z>hxnr3_@zG){s36kx`SDony_(f&n7buHoouHk~Oc$zsal+3OZ#U*YM?y|d^`k`OeL zAYed4e1I!0kKCV}Bgns0@Yy{vddZ<^D25=)Q9P(|mmCtHWQK^}FS7v>&G1Q5#EeSY z^O+elio>x{(pAg9c0bk*<;PA(T6BCu1$pe@MHe(hJ8Pja;^NHQz5`v``5(1^%eAND zMoV?|g7(3>ZTAv0PLO|=55j*;c>J+hztAGKK5)CJW6{ z;F+-@HG-7iZOlyUFO%f%UfjS&(=-bMPAvnoL`~|6umo93%uUEj&Hl&9ZhY5UK6Ons z9in(rR(}7Jl9cq29G<1FEh8qRE9SYl*?N$|3#02}h#Ko2DM(35{Y&-?G5YBfsj;*4 zGjK0le%z7#n3VEJu(TXaq0X2;C~9!S48E@JgJReOY5*k0NC;IYR6^lVp;Fj?Sk${J z#LDO;kB0PX-P(uHTk@&MN+H3uuHuF&xaMdcd^_ACm{!iyv zb*$regex}bibsw?-oe}a@^}tmFeOwVVUo-W%Bre zMxoEMw^$U`N920W#I|I0e_OZgz0}xb?6-6s;#23(O)bCKbF0=+(AC~;c{a8(Zhk7v zjLbz{7$+U+TmC-!s&TYEvNIj!tY#|aAVZ6ed3{-34@Mrn)~(@=K2e`1pMpKc`t>*M z(sNz=_&x7&yW+Gf_l4%fWayX1ffy4i=DQwD9tS07g!=hs{k#Ut&JP6huF{|Va^EyEqu%eigkWY)*$^-35YMqRwcRnA2XBr{$bUetOL`lV5SIZKu2u5Jkg;EPEp%_(Qv2FfUThO%aetme&sBHT(we*PK$naEUi+StTtX6cm^?ofef_P9g#1;GB}uP6 zkObtS-&9tmIAXXXDQhjrFrVLZn(w6}QP84yRq%Us{DSg?eDV<&i%GrM>4-%hwz{M@ z6Uyrj-?GZn9m3sh^B{6%)Pnq$3h8cddy3vx#;uao{@WG9{UwbqkDILTp6vo8qOa8T zTNQh5XN7?jsjLUQytpXLNaS!8LtI>FO3Zg`Kob!2C_k+6Bk3R9g4%?9s3jV;K{#5H z^yh?HQMcsCT?|Y2Iy@MH^@JstbZ`F3dD#iIOO7mBC1V{;dCrTHDx}^J>`0%?yV(Sf zEPnmGNSh$Yf(D!R&=^ri>WE80Ter$G%u`dB%+@E!D|cO`rYm8>&C$=xubbYpdk=x^*{ZyJ|$=$H*zInqHgw02{O81U4cUOG8q~h z)I5tbGzFh4zz~e6l2Cn+;%Asc-iN41`C5zH*M_V9ekX~evRR4yE(7Bk+UuZl#Csyp~1GMBu&b=!w2O% zz0Ml1vo;OwSyWJ*TUH2tQnRPg?)AEx>Li!D!6~(NwtAh73#HNqr@hrFwcFj^g$ozX z;AYI9KVP!iY-?;1-j+#iO?C&Odz&Q}%VD8ZP$o6H>*~Fd!ztA?H@0}18{MtWTBI%V zO72!v@_vFTiN~3t*410@lvX#_I!p2@BzL2|&WYHllN~i-5nGzkEQ-|XwR^l(XtdLkw8a9Wt7ghpt%$XPH;(P+3iyaxLh8ZLbXZ09mfS=ozkUy`%b?x?AC zx~SCUO>GSgcW}xbcSs!mb5*6F#nN*B(?oHSTbCh(o-;5m9Bp-Y_j>F#PKUkbKD-;8 z9uJVz?6?VTN&}j#^1=3domQL&Jz_1iE9bA=)i# zU^q<%#d3E7cGyAKo;pTz(!AtaU$ePJr?D2m@o{6t01SJR`+REp~h zM`fKIKo#geU8+NyP<0H{n)@V>y~owi+^)uSwKdf+l1FDY5Q~`f_)2ol%h(DcqS@^A zt5LZ7?G0_t$)Y*V-2@+Zt<>DYN}(!pRmE#^^R4+@lf9AHQIo5|4H}{`*VtU!2F}G| zaU3x{76;_Dx}vz4aBoICnp>QpCZaL*Ew`-9YAZ*GA-Ohf8CnX4-_*>yf(Xmmbidov z+(e_B7z0Fuyc3gSil|U|qjVa=_z0 zWZNt`+;yBn!RT_XuA$jMFQC{4bSu}^qGoBBPxWZ_*gc(~c8;U$SKO1giQb9t&~t@> z-dHM()%)A_^O-L)7FU~wdsxLb*F_)B49dm|9P(P*TsC(};y%;e;nRN`2vYHq2B z6Oi$0+ZtP>I&?q879TT5c%!|6BGWWU!xK}n!P!*n8VRmh;N9MjDj1!;?Q*5W-hiJ>6-d_WMWg24ae=4;-Cfg!t9e+i4hZgjsr`wZw8b75m`nK94#K#2SpmI+ay%#DOreI@K}6 zf-pz5z+uX5b#fG~tp%JGgNDXP;V&`9w*+Xs6!6|}2jEJ;m$wGsYQWof1mJptzY~C4 z09OX3@0bR60UiiS-v_uOsQiAw7as`Z_XyyYp!oX%fBCII_yFMgp!iP!?g$D$3iv{2 zP<-&g6Y!&T==2}BySvs&vfKks4;U?z1TdHSVX&qaB8EDrcam@W>5DBEXncS8NnKMf}O$uz!kj;^Ys@#vF<(1#EP{GKEv(@-Pob9>!jrfl>}jkJ)%+QIJQrPKyB zUW2>Q?fn9^?8M7fK%_gUvC?7%+ehtnJH>3#3*`U&^pJ7m#6%AZ~ zaS#~8Du1W2n)Ty) z4_2F-Hqp!ySX@zg{(cC`5HT1|*jNb4TSY(8I9tIDAap|%cY+hJnl@l!qJG1a!#ObR z(mJCSwBT&O;Gr~ly3siPO2LjNMVp&*$OB;4Z?w3wLG=_sigU z4UXpR59oOq>)k92bW8 zHO&nTST&J69@GHeN($jsRsIZVyh0Gi46(w{&}_#rwzooXRP_gFp|ds-@hAI=1`;Mb zKT>Egl4OaA&hPcL6-2Z^9+QF_Rhv4$k;!imlEr=)_ z&CSp*HK~$Hb4O=T5LdO5ty5^F%~h?l+RBR7tfu<8TkLKR8svL$_d!sHqz@A6An_A( zbu*hsQ7);9fMbkE=8wsdo=$Iz9YVM7otR}K3H|WLa*Od1;?I-s>Vh5kYilB153Osx zZ79FpV`uqw`qo;lZBQ0~K8UuONE3!UYne0;9>e--vcK!>9tVli;5W4D#C%ZWZgPS5 zpj;wJwS50zL4MTZYE1Q=>P~)s%4>3VFd4Z844lS;$KDQB$CiZjj%=A9nn>+rBuDLK zWwCY#mE~;?@b(ThL#EFpB@)f0By;QFNTvvZ3xy+E9{3H`C~(CmQq0Hjd@Fci& zis$>O`iV&`(=zg&5k{Pvp3tE*HPD#jumI*r7ML73z6q23pbLf)h9*F$-Joch5^p(M zJu_b3+N`c&&=DSIog3ZONqww#9~P~I%jHi2cSC_T76NVvg6qNGyPj3Usjk641L@c> zvnRuIMg+&*qvkBhfN_?b^&iD2p4S9HqZO*ORt!CoK>z7_jd3e?6LA?55d1t>l}Lb4ItTw$>;z;$KR)ksb}~%U7$$_N@l?E`qey))*?+=ZSTDoaon)`^G`F@wXX%CD zLOR4nc^OoYBK_yNg=2j1|dMt?xYFFbyK+|& z$fc_4#8j4ma6$7g)!NR~vwrpg-Hww=4%EZv@pbi>5k`^?O)yxOGWE+sU+jAb4V$Rk zD!7I=J1HltsD_KEF8$8M#g}h`U-^kOGt==Tx2kRQbqQ0-*LFfUg@UfZ z?STH!?F30Or8O;kYQF*Q=LETRHn(|LGch{7XggC@g1&qiv+{z}t;8+ZCX8PWj)g;=uP-sts#&Tq>W4YaNz~5xDe20@ ziLW1v=l`B$9{5L+x#QC$d}AufOl9`}Kgh;clFY^<(2F4*`O)tY_>UmoempND4fFK< zLGLgUgn;BFd^+^Fo~p)oG9SyViJ0SWumWHYqfS_ z8>vGTY$>3__z=>g!&zRFF#__YU(=6uqW={cHaeO~ zwlUDm!PsM(`p!f)-#bZj$d$#Zb2d3WcGPP!48{81QERWKnWjuGbp^IOFlD(hG5SlR zHq!nFJy9*+`iw<`fG{;4Lx3F$o@or;$6Fz3N~tUngydGzI@qamkn1Fope(f$8TXJr^(xmQ^S_2h@e=dZ!)%PQo=4f+ab=g?c(pg0;mz(B? zrZrFc(LCD%fx#b#Htk7%@GO8V1ZRg+x5O1?=dxsTG2F;ElFf(Uw!qDStA%?C{)Kps z;+eiQ*}U=2Wb@qR$>s^X?}gg}R}Dva%Ez-MC)s=gaR{bgEd0KNpDKS5J*X>a?3IBV z)HeGWZ3o0fik}wRvvZee;X!0cH?+Q?S6MuZo8`n<4)VOyVS`l?o_j7SSfatib(-hhWcq{dT&&1djx zni#48W!}!Ie^ou?u~X1P>`9)~-9H8R!Xp8A5b!`S44M7>?m+k%gqH`wqku2&3WSeQ z`XKl+;5k9?1mLlU1M#l`J`@CpK8rn;M+4z=02_kBCBR)l;Re7vcLw5T1D@jxCp-lI zuuy1fZf}C(A7jh6OG)9dCvmcA)qX$L@-(xiL&w5)J;8^urCHa+b=KP1`nKKo>_ksc z+D7c0kykyYV1iqnHJrzbZB{JTsmIYtoN5+Q1vQzv&s57Qfb}PPR)?LK{f0Zw{hf>Ajr?l9k@#BeLjQlX$pbyAIs;5m#Yp!UGm>kWOyrlXYnw0=`Qj7N zV{4!O`PMu%=DeLP;AGfJ;QVRaE{P2gKMdsn_9yL7#;W7Sr|wd>W|1d&j|=sg+zM?8&#SqOH~e41Y5(cat!5sz)^l8n;?oe=HW*d16PQNINF z`G;|^ADgHV4dWjM25Neyhwzt!ma@HnL;)?-QXPOmiD^Nau>I=tRo`#O6r6{jX8jFR z`4zV5Am>niDooS6YOI0$7OFavG8OY|YnFT~@=JaAM%l!MCEBS#Lnm>s_6F&5{CVUB zu<0my;o$JD#_Xy)M(5zgeA;D7+w%2e6r4D zn;Su3P;kMFhQGd{H8lo5Q=mr|5kZaX9__sKLAmX);JdgdX{|@lZLxA56 zf}a9h9t58O?0qT_{{rCZAb0@Z)wueCy8lJ_zl(6v;pyNA{s1uP^ZanmlgQr}AKp`b z6n_HoBYztxk3-!3Cj)RK;Mo6C;VFp$Q2IF(|NjNzOMstxE&yxaME=hNU<1Ovrvfmw zhZ_pOMubbl0XQ3QXi$E%{_~y*gp&Ew%QhT7(&TmA3Wb=KAX_ci(Xs=k2a($bMY|8<vXpPrWfOi+A^7yPS*vF+C_8sN`l z`Ap!577ZO89Jl5!pKWVZUZFMbuCfZ~v6!uERe4c~bxlRNPxd1@I{)QB`;NT?yP%f> z@Kb=dpAEo+fT>RY`kw|&OEf=x9x(1TU~q8V>D_Ir`P%x|wYXvZ_0`o7<^W1UngF)Q z0l-14zzC(Rc+Gmsv)q=ux~!zAyxeNzY}Pz$5%!SKG$z+lU!OP^sQccR!7GAb+RIoT z1b+$M<9#&{pJ?IyXaFW$8G_&el^b4)D zRV@Ishjw<3J%uksBuWfYFCRx{spiOttwirK8gJCD_H|SwM6xu3WI-HVNpRj6xJ(?@`B*J zB3oWXajs3pEv1KUlT=k0bIkq+_C_7(7q`pn8(SNpOWZ#epr6yPz)tVA08I2%JRX2Y z5$>lKnyW4Vru_Z%ba@&)F)jX=)567bf&3_+;2-5rwm`)}^_z?MNq-E~CkgPOKLub~ z7cRdLfYT9vGziWHy#0+pxbzP8^MdlDb*A_AKzI(~_y0Knj|^g685Eyvf3^hSi)T-+}^GeLLKw#c{HtM0Xtehhk5 zM$_0R%_{` zCy*uETUr*mn`#=`YMqNnY$pR*%;5{`Wr^(R!BAS+MuJq^#@Ix`dQ=m(_c++Wa8~PF z$aEBjG+GfrC*oI-aQ=S7s@mO*x|4Fm@8{PeQXb_vCL+P^2ZrMQ&9{XT^Q0c3b0uu4 zjQ&ykANotCA5(YaNzc`KALXO!N=jg@3K_rN-9o*}&aU8vJ$=elcT)>i{~U+qKYQ`1 zVY$50iX3A};oX!M-ZO9a0a#zuw6sAB35#Tsas2PFjlgEHy%o!2@DW%w;0yudnZ5%O zPM9=P?I}M@c{o;4w1y-df=jIVMHM9hufn30g#ie3>x9KE3=U8>Bm32B%Byno$}vSk zK3H9qTU@**uc{!osJOxgALdtLEvYIl!hA|_Zt?ou4P~m_bny?+r~PkW?9n%@wgkZw z1YZb@MY0j-|4Se~>5Rl6_!{D$e ze>{w+5e+)4zzpwhg;73q33z&HNgzTxyw|&HYncHa-f?7&`7sqWQ-C54^gyH!W##z} zwMl;7#tKvqx=kwZ0%y)3Uc%;9t(6*y>gw}F71T3owC*Q=#=B`V5AP&v`(8O$YmH0Q zK{**8aW%BHlE4Eg3Nr+BuB6~cy z--z(b69JfPB>IBj97-RQzZvk+p!^B}U;JAjeJS9MAh;6n2mc6!)4FS85L}J$%O9xW zgp=SO;in$qmA-I-Nj5n8CzWP{{eU9$&uAR5P@*{*>#|hZy@ym-)8NLEh^f@e%5%$M zs7SUe7~4g@^Jw*$r+sQwt|T{aSwX?H|0r`EJGsWB%ViKRnI6MI6~Y!9F$DIG=VnMc z$*t+hwd#M)_wuh=hL~#Gmig9O%ZwRWP>rzmE+a8WT`MtI@*P+tL;w##Np8=E7xN2B zqSkAf^mR@0g$2jP{zDr(+Qgo$Y@ZP*<=x6Ouj+Gp7?4i;B2_gG@bt-d7Hd-63+TpK zv>;tM;Hgnr|57hiQ3qpuP`=dXQ~jnU!qLVmcZ-@g-r4Ka7?2a|Yg(#&n?MwE8azEZ zwFLsPZv+ymn6XhJ>^4y=bQJYdunhixm$Naf|Am;{j`OVxeP&hJnnC zOh$K1zk@i-CiAsVo{Ru5W2x2W)RcZd>``F6LM_rjyI;&4$DbwVkK?aaAZO5fGfruN z@u|;1=|)hd1#%8nDbTex z((=u^fywJRrs4R+=qG<<1%__1ru$Y$e3 zJ;XezF2dS~@k@U+bYE7$kMiM$&W`rOi}zS0XCn+3t9iO_n`DDA4agzm~lJK zvKfItzh6)^##7Wf`f~+;fhDBMLYyER*o{qvzcNM<9$+nM5=t}8Z)!5y_r(f#Gvy!j zJ~a~R95j#E|Nr*RCpNC5j^i)Ig;cn0Xj6z#g?va`BL$PBNt=LMyxCo6x3PD(-gV+s zk(T&R>PSvv9EZ4)4>|OZgOPg3Are0LV5A7;5UH-378eDuL<$B46eJ4;DF;gg6lj15 z0=SgVcjmn}zif@f2`+xo`n}K0ym|BH-<$dUelu~4j;iI(TBZ_zLE=8T-4$iXN1tiR zTFLuPC!=6eIhSZC!1Q+U2SdXIAMSM#JrE6`XwTyu6*SIn7)1#H6X~ zdUW`;G<!X{G}Mc^t|UG6Y`Ij*GgmJ0F!>$mDVO$E4&)SvI8$LZ-C6D};Ud;FI`P|Et`(K` zEZ()AgY`^rtt`KUyE7#xXk^`h8+}k7&gg)=b!WJL4CB!O%n@`StSv^|JYHv&pBsyK zzqoAu7e?XrEz()v;J5*}I`wKS^B7M-#4fkJb2*1?ezYN>-+=QD< z{C67eUxDrWHKS{_@Ao8Z&E7IHdm?eAn;|c+~JD`Biu*gqN;-Zhhce@Py&J z@D<11>}%Ju2^WCVy3)HIu%^_OJCx&2fB<`F-NZ5xT!R5+3AS{#wh&u&W$7{F)~0 z9An6OWu2Eecs`0*jI)n&p`06ESnRMIGjwJl+A-$g$F*959VooqI+rgURGjEYQyVp| zrFd@%(sPX+QNp!v+rFzM?V6n(a3H=buN@yie-I4Uh!;aViOP=+oN60o`Ci-c@zJ&u zW2`&jLeJGb?mRT^Ul-t;5MO)!Ys()fk1vP(ZiQ=42i^f+f5x-ovPVxXs~2nWHggi` zvoenW$SZJ`T)P45#e1G4V{Rv389T*JE`0q6 zgH~urVH15rYRD9iYrIXIUu>G#v?XyV2Jg?62E%QPJ=~rdtB3d1LKDi9W_}Q_6_;tX zyvAh9Po2WJRO#wJ;bj-Y?6D)39$jY?FfvVKZ>6IWNk+v|Ekfm4k=9e=pj=M|O{mPeORmB8Td)M%Z_6^Qv?Sk>+YRCGHu&Fb;OK)8 zzv8jS$$nJY*aWS2-|uZ!`VS0s9EI8E`zmYv(Sqvw+>n0Tni1FURSnT@k+4Ff6; z+EJaoD_mL9{EwgX$~1(~gsyMjB{v3o94%Q#ya zEVm1puFhOG(LVNs_iy?$x}r?rW_Z%@2DsJm zCV0-=-vXa8+zNLYzQ^hmGC*kyWl3n9q_`}{QY`odpI2^!b6rOB&Nb% zFA8d#fW*;<^P29&jTz0V?FM((pMP_3@Y!d17`m5%A@+AVswRPewOA^mxXfjh4tKpj zmm{F7tLj&-XT!UW{)K+X@FW}=o)U8;b?rPX<%_uS7(X`F7I(YOc0b*k4$%oc`Vgix zDA|y88U) z*f++<+hXfWb8V}l#-UC<8QW?5vEayQZB#dUl+l|T8;X+vyt6k*OKm8&V7)DY>dD!m;ZTw(s28W`2?KQ_sl8LKew_oPej! zo`BdFVr5#Z$FiT`=d3H7+=$h}_3r9ktDi!hsHa};VL5bFuk*2ZTn_Zs3K*!oqEwEa>PK-ltUan!UHXT(C#^gX zRnL7No9^*_d?mEwW|;q{FSRLcg;xyc;13Pg;Kb%s?RFH#JH3Aj#yRZ=X5ggVEBqDM z_6s*)JC=<8e!rYzGps%(=~pC&7{*O;G#-jy^XQ3J!~041Ja{m0j(evM1nz<-dIR@~ ztAPjMm6rocS3X+_tbXK9DX{vH!ar6|U$t6v^=VIh!P14gq>}L#iu4hu?_>0uQHEQ3 z2(NclcrPVZn?0RgJ6SJVDZ55`RBB=^1s)pIJ{Y+wYQ?IagIErD9hLV znJ$%dcQKfJ?ZCXNPPkmPklB|HIkvZ_+*_&d%O9-wR+uvwpE$0%yE9kp>}129DDvU6 z#Y%zxA$^i;@{2tOiq(9*!7H<`yJEwUkG+*jy{B5Llhm*YP#jg_!E3TV@z(A2ZG94{ z7hIRDe2b&6_7+KN+RI^UoL8ZT_bQbU+s7Su8bMknUV{Je?C`P-jRo3Igf^wIiRJNs zKHWi7X`k>qZ2Oq=uqkY=UK6nS>uf z7JoaIP2+sup?EhF-llgeY}4Bg+w>M-o8CUyrgs>&=^ck{de6Xijy459L^_i6&cHVP zbMU8)|04Xb;U)MH!^`lahF9PXhBtlqbjN25Z-E~(oP!@XddO1WC>i`tN5ty>pSzxm6FzuE$PTkCU&`*%M- zwEK(EN5jA3oBTue3HdH_hx%&?FhjZ>--_B>5Q|ry%c%S*_ zo2>i)ndgf?_vdrWZR9`y3v^7ZDOn z{5!sVi}h}`%Ykq4jva3YzC(OxuxC|&pzu3*ha2yO{gB$>iSGsOf}b?Ji!?938~khd z&l)}i4;vnYFML0QABSgt5cmu{X`X);UNZjY;2kEuX}Du9+<%Gpop~qlEdGZKUxK$7 zz6^I=4&krBH{T9?749>94Sv$>YjzVp^i~MJVUF@J`1Qr&M)y-9bM*^uTWakzKOr; z@YJsZt1fT(P2hRzbfTBj^HsMy_$BwNj$bmYy59al@K>F`$1e%5x?eyhm9W~tEWd=+ s7Vhv%SZ$(lJg)h`+Od`cYdNr%18X_3mIG@!u$BXBIk1)k|0xIl4XM-iMF0Q* literal 331491 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 set the device into the bootloader!" exit 1 fi -echo "Flashing the old one" -./esptool.py --port /dev/$DEVICE $BAUD write_flash 0x00000 0x00000.bin 0x10000 0x10000.bin -sleep 1 echo "Flashing the new" -./esptool.py --port /dev/$DEVICE $BAUD write_flash -fm dio 0x00000 nodemcu2.bin +#./esptool.py --port /dev/$DEVICE $BAUD write_flash -fm dio 0x00000 nodemcu2.bin # 0x3fc000 esp_init_data_default_v08.bin 0x07e000 blank.bin 0x3fe000 blank.bin -#./esptool.py --port /dev/$DEVICE $BAUD write_flash 0x00000 0x00000.bin 0x10000 0x10000.bin +./esptool.py --port /dev/$DEVICE $BAUD write_flash 0x00000 0x00000.bin 0x10000 0x10000.bin From c94e046f6cca61ceb39f338522339fe123bf6db2 Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 22 Mar 2019 23:52:25 +0100 Subject: [PATCH 045/151] added ADC brightness reading --- displayword.lua | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/displayword.lua b/displayword.lua index c7fe7fe..113d205 100644 --- a/displayword.lua +++ b/displayword.lua @@ -85,15 +85,24 @@ function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, co minutes = minutes + 4 end data.charsPerMinute = round( (characters / minutes) ) - - -- devide by five (Minute 0, Minute 1 to Minute 4 takes the last chars) - print("Minutes : " .. tostring(minutes) .. " Char minutes: " .. tostring(data.charsPerMinute) ) + if (adc ~= nil) then + briPercent=(100*adc.read(0)/900) + print("Minutes : " .. tostring(minutes) .. " Char minutes: " .. tostring(data.charsPerMinute) .. " bright: " .. tostring(briPercent) .. "%") + data.colorFg = colorForground + data.colorMin1 = colorMin1 + data.colorMin2 = colorMin2 + data.colorMin3 = colorMin3 + data.colorMin4 = colorMin4 + else + -- devide by five (Minute 0, Minute 1 to Minute 4 takes the last chars) + print("Minutes : " .. tostring(minutes) .. " Char minutes: " .. tostring(data.charsPerMinute) ) + data.colorFg=colorForground + data.colorMin1=colorMin1 + data.colorMin2=colorMin2 + data.colorMin3=colorMin3 + data.colorMin4=colorMin4 + end data.words=words - data.colorFg=colorForground - data.colorMin1=colorMin1 - data.colorMin2=colorMin2 - data.colorMin3=colorMin3 - data.colorMin4=colorMin4 data.drawnCharacters=0 data.drawnWords=0 data.amountWords=display_countwords_de(words) From df1952ca04743156843326b4406887fb0939aa25 Mon Sep 17 00:00:00 2001 From: ollo Date: Sat, 23 Mar 2019 00:29:18 +0100 Subject: [PATCH 046/151] Tweaking arround --- webserver.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/webserver.lua b/webserver.lua index 8568412..9f18198 100644 --- a/webserver.lua +++ b/webserver.lua @@ -47,8 +47,8 @@ function sendPage(conn, nameOfFile, replaceMap) end buf = buf .. line - -- Sent after 1k data - if (string.len(buf) >= 700) then + -- Sent after 500 bytes data + if ( (string.len(buf) >= 500) or (node.heap() < 2000) ) then line=nil conn:send(buf) print("Sent part of " .. sentBytes .. "B") @@ -128,9 +128,10 @@ function startWebServer() if (payload:find("GET /") ~= nil) then --here is code for handling http request from a web-browser + collectgarbage() if (sendPage ~= nil) then - print("Sending webpage.html ...") + print("Sending webpage.html (" .. tostring(node.heap()) .. "B free) ...") -- Load the sendPagewebcontent replaceMap=fillDynamicMap() sendPage(conn, "webpage.html", replaceMap) From 4155d0018e5c6f38dfb2c347328a7b7f9f44e41c Mon Sep 17 00:00:00 2001 From: ollo Date: Sat, 23 Mar 2019 13:54:29 +0100 Subject: [PATCH 047/151] added: halb einS --- wordclock.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wordclock.lua b/wordclock.lua index c537ad1..f95b4c0 100755 --- a/wordclock.lua +++ b/wordclock.lua @@ -105,7 +105,7 @@ function display_timestat(hours, minutes, longmode) end if (hours == 1) then - if (ret.it == 1) then + if ((ret.it == 1) and (ret.half == 0) ) then ret.one=1 else ret.oneLong=1 From 1d98087c98fb456ca0050e36d71d8680606366bf Mon Sep 17 00:00:00 2001 From: ollo Date: Sun, 24 Mar 2019 21:32:52 +0100 Subject: [PATCH 048/151] Added used modules --- os/Readme.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/os/Readme.md b/os/Readme.md index dccf967..c8a60f3 100644 --- a/os/Readme.md +++ b/os/Readme.md @@ -1,16 +1,20 @@ # Firmware was compiled with the following modules: - * LUA_USE_BUILTIN_STRING // for string.xxx() - * LUA_USE_BUILTIN_TABLE // for table.xxx() - * LUA_USE_BUILTIN_COROUTINE // for coroutine.xxx() - * LUA_USE_BUILTIN_MATH // for math.xxx(), partially work - * LUA_USE_BUILTIN_DEBUG_MINIMAL // for debug.getregistry() and debug.traceback() + * LUA_USE_MODULES_ADC + * LUA_USE_MODULES_BIT + * LUA_USE_MODULES_DHT * LUA_USE_MODULES_FILE * LUA_USE_MODULES_GPIO + * LUA_USE_MODULES_I2C + * LUA_USE_MODULES_MQTT * LUA_USE_MODULES_NET * LUA_USE_MODULES_NODE + * LUA_USE_MODULES_OW + * LUA_USE_MODULES_RTCFIFO + * LUA_USE_MODULES_RTCMEM * LUA_USE_MODULES_RTCTIME * LUA_USE_MODULES_SNTP + * LUA_USE_MODULES_SPI * LUA_USE_MODULES_TMR * LUA_USE_MODULES_UART * LUA_USE_MODULES_WIFI From 0adb96174ee348b6ac81aca57508044cd7a667b4 Mon Sep 17 00:00:00 2001 From: ollo Date: Sun, 24 Mar 2019 22:01:51 +0100 Subject: [PATCH 049/151] Updated flashing command --- os/flash.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/os/flash.sh b/os/flash.sh index 1dfde8a..552208d 100755 --- a/os/flash.sh +++ b/os/flash.sh @@ -33,5 +33,4 @@ if [ $? -ne 0 ]; then fi echo "Flashing the new" #./esptool.py --port /dev/$DEVICE $BAUD write_flash -fm dio 0x00000 nodemcu2.bin -# 0x3fc000 esp_init_data_default_v08.bin 0x07e000 blank.bin 0x3fe000 blank.bin -./esptool.py --port /dev/$DEVICE $BAUD write_flash 0x00000 0x00000.bin 0x10000 0x10000.bin +./esptool.py --port /dev/$DEVICE $BAUD write_flash -fm dio 0x00000 0x00000.bin 0x10000 0x10000.bin 0x3fc000 esp_init_data_default.bin 0x07e000 blank.bin 0x3fe000 blank.bin From 7052c4c25af4c9c6ef314949939a86b7e3e40f5c Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 29 Mar 2019 18:35:07 +0100 Subject: [PATCH 050/151] Moved length calculation after manipulation --- webserver.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/webserver.lua b/webserver.lua index 9f18198..c5d9070 100644 --- a/webserver.lua +++ b/webserver.lua @@ -32,8 +32,6 @@ function sendPage(conn, nameOfFile, replaceMap) local line = file.readline() while (line ~= nil) do - -- increase the amount of sent bytes - sentBytes=sentBytes+string.len(line) -- all placeholder begin with a $, so search for it in the current line if (line:find("$") ~= nil) then @@ -45,6 +43,9 @@ function sendPage(conn, nameOfFile, replaceMap) end end end + -- increase the amount of sent bytes + sentBytes=sentBytes+string.len(line) + buf = buf .. line -- Sent after 500 bytes data From 784a75241c3c43f9d28b07748f3a52dca2a27876 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 3 Apr 2019 20:23:07 +0200 Subject: [PATCH 051/151] Only one request at a time --- webserver.lua | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/webserver.lua b/webserver.lua index c5d9070..3b2915a 100644 --- a/webserver.lua +++ b/webserver.lua @@ -1,7 +1,7 @@ --TODO: - configFile="config.lua" +httpSending=false sentBytes=0 function sendPage(conn, nameOfFile, replaceMap) collectgarbage() @@ -11,8 +11,9 @@ function sendPage(conn, nameOfFile, replaceMap) conn:close() print("Page sent") collectgarbage() + httpSending=false else - print("Next") + collectgarbage() sendPage(conn, nameOfFile, replaceMap) end end) @@ -32,7 +33,6 @@ function sendPage(conn, nameOfFile, replaceMap) local line = file.readline() while (line ~= nil) do - -- all placeholder begin with a $, so search for it in the current line if (line:find("$") ~= nil) then -- Replace the placeholder with the dynamic content @@ -43,6 +43,8 @@ function sendPage(conn, nameOfFile, replaceMap) end end end + + -- increase the amount of sent bytes sentBytes=sentBytes+string.len(line) @@ -126,8 +128,14 @@ function startWebServer() srv=net.createServer(net.TCP) srv:listen(80,function(conn) conn:on("receive", function(conn,payload) + if (httpSending) then + print("HTTP sending... be patient!") + return + end + if (payload:find("GET /") ~= nil) then + httpSending=true --here is code for handling http request from a web-browser collectgarbage() @@ -167,8 +175,8 @@ function startWebServer() file.remove(configFile .. ".new") sec, _ = rtctime.get() file.open(configFile.. ".new", "w+") - file.write("-- Config\n" .. "station_cfg={}\nstation_cfg.ssid=\"" .. _POST.ssid .. "\"\nstation_cfg.pwd=\"" .. _POST.password .. "\"\nstation_cfg.save=false\nwifi.sta.config(station_cfg)\n") - file.write("sntpserverhostname=\"" .. _POST.sntpserver .. "\"\n" .. "timezoneoffset=\"" .. _POST.timezoneoffset .. "\"\n".. "inv46=\"" .. tostring(_POST.inv46) .. "\"\n") + file.write("-- Config\n" .. "station_cfg={}\nstation_cfg.ssid=\"" .. _POST.ssid .. "\"\nstation_cfg.pwd=\"" .. _POST.password .. "\"\nstation_cfg.save=false\nwifi.sta.config(station_cfg)\n") + file.write("sntpserverhostname=\"" .. _POST.sntpserver .. "\"\n" .. "timezoneoffset=\"" .. _POST.timezoneoffset .. "\"\n".. "inv46=\"" .. tostring(_POST.inv46) .. "\"\n") if ( _POST.fcolor ~= nil) then -- color=string.char(_POST.green, _POST.red, _POST.blue) @@ -297,3 +305,4 @@ function startWebServer() end) end +--FileView done. From c3b94e0adeb785c4a34168d8df661296463c54a6 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 3 Apr 2019 21:08:27 +0200 Subject: [PATCH 052/151] Stop all timer, when someone connected --- webserver.lua | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/webserver.lua b/webserver.lua index 3b2915a..261742f 100644 --- a/webserver.lua +++ b/webserver.lua @@ -138,7 +138,21 @@ function startWebServer() httpSending=true --here is code for handling http request from a web-browser collectgarbage() + -- Stop all + tmr.stop(0) + tmr.stop(1) + tmr.stop(2) + tmr.stop(3) + tmr.stop(4) + tmr.stop(5) + -- Start Time after 1 minute + tmr.alarm(6, 60000, 0 ,function() + -- Start the time Thread + tmr.alarm(1, 20000, 1 ,function() + displayTime() + end) + end) if (sendPage ~= nil) then print("Sending webpage.html (" .. tostring(node.heap()) .. "B free) ...") -- Load the sendPagewebcontent @@ -298,7 +312,7 @@ function startWebServer() conn:on("disconnection", function(c) print("Goodbye") node.output(nil) -- un-register the redirect output function, output goes to serial - + collectgarbage() --reset amount of sent bytes, as we reached the end sentBytes=0 end) From e03ecf97b68507780ea5a5ad95f3646360c6a70e Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 10 Apr 2019 21:23:15 +0200 Subject: [PATCH 053/151] Added colored output, if the website was requested --- webserver.lua | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/webserver.lua b/webserver.lua index 261742f..1575109 100644 --- a/webserver.lua +++ b/webserver.lua @@ -139,13 +139,9 @@ function startWebServer() --here is code for handling http request from a web-browser collectgarbage() -- Stop all - tmr.stop(0) - tmr.stop(1) - tmr.stop(2) - tmr.stop(3) - tmr.stop(4) - tmr.stop(5) - + for i=0,5 do tmr.stop(i) end + + ws2812.write(string.char(0,0,0):rep(56) .. color:rep(2) .. string.char(0,0,0):rep(4) .. color:rep(2) .. string.char(0,0,0):rep(48)) -- Start Time after 1 minute tmr.alarm(6, 60000, 0 ,function() -- Start the time Thread From 883adb671ca0854bce9942659d5e2ff08179a259 Mon Sep 17 00:00:00 2001 From: calculator Date: Tue, 16 Apr 2019 19:20:01 +0200 Subject: [PATCH 054/151] Unload all files --- webserver.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/webserver.lua b/webserver.lua index 1575109..2aad4cf 100644 --- a/webserver.lua +++ b/webserver.lua @@ -140,13 +140,17 @@ function startWebServer() collectgarbage() -- Stop all for i=0,5 do tmr.stop(i) end - + -- unload all other modules + package.loaded['displayword.lc']=nil + package.loaded['main.lc']=nil + package.loaded['wordclock']=nil + collectgarbage() ws2812.write(string.char(0,0,0):rep(56) .. color:rep(2) .. string.char(0,0,0):rep(4) .. color:rep(2) .. string.char(0,0,0):rep(48)) -- Start Time after 1 minute tmr.alarm(6, 60000, 0 ,function() -- Start the time Thread tmr.alarm(1, 20000, 1 ,function() - displayTime() + dofile("main.lc") end) end) if (sendPage ~= nil) then From b4e8eec9bf2cbb3c8841a0a8ecd9d1bb510ee115 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 17 Apr 2019 20:13:25 +0200 Subject: [PATCH 055/151] Unload all functions, not necessary for the webserver --- webserver.lua | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/webserver.lua b/webserver.lua index 2aad4cf..bf3f542 100644 --- a/webserver.lua +++ b/webserver.lua @@ -135,31 +135,45 @@ function startWebServer() if (payload:find("GET /") ~= nil) then - httpSending=true - --here is code for handling http request from a web-browser + httpSending=true + --here is code for handling http request from a web-browser collectgarbage() -- Stop all for i=0,5 do tmr.stop(i) end - -- unload all other modules - package.loaded['displayword.lc']=nil - package.loaded['main.lc']=nil - package.loaded['wordclock']=nil + -- unload all other functions + -- grep function *.lua | grep -v webserver | cut -f 2 -d ':' | grep "^function" | sed "s/function //g" | grep -o "^[a-zA-Z0-9\_]*" + updateColor = nil + drawLEDs = nil + round = nil + generateLEDs = nil + startSetupMode = nil + syncTimeFromInternet = nil + displayTime = nil + normalOperation = nil + isSummerTime = nil + getUTCtime = nil + getTime = nil + display_timestat = nil + display_countcharacters_de = nil + display_countwords_de = nil collectgarbage() ws2812.write(string.char(0,0,0):rep(56) .. color:rep(2) .. string.char(0,0,0):rep(4) .. color:rep(2) .. string.char(0,0,0):rep(48)) -- Start Time after 1 minute - tmr.alarm(6, 60000, 0 ,function() + tmr.alarm(5, 60000, 0 ,function() -- Start the time Thread tmr.alarm(1, 20000, 1 ,function() dofile("main.lc") end) end) - if (sendPage ~= nil) then - print("Sending webpage.html (" .. tostring(node.heap()) .. "B free) ...") - -- Load the sendPagewebcontent - replaceMap=fillDynamicMap() - sendPage(conn, "webpage.html", replaceMap) - end - + -- send response after 100ms + tmr.alarm(5, 100, 0 ,function() + if (sendPage ~= nil) then + print("Sending webpage.html (" .. tostring(node.heap()) .. "B free) ...") + -- Load the sendPagewebcontent + replaceMap=fillDynamicMap() + sendPage(conn, "webpage.html", replaceMap) + end + end) else if (payload:find("POST /") ~=nil) then --code for handling the POST-request (updating settings) _, postdatastart = payload:find("\r\n\r\n") From 287d1eef42847960eb88cefe1f3b63c207db1abc Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 17 Apr 2019 20:23:46 +0200 Subject: [PATCH 056/151] Fixed webpage --- webpage.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webpage.html b/webpage.html index fad40f7..2ba586a 100644 --- a/webpage.html +++ b/webpage.html @@ -45,8 +45,8 @@ Please note that all settings are mandatory

- - + + From 6def7cbc10ad09511416f3884840551fdeae264d Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 17 Apr 2019 20:39:54 +0200 Subject: [PATCH 057/151] 1 minute after a request via the webserver the time is displayed again --- webserver.lua | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/webserver.lua b/webserver.lua index bf3f542..5d2478e 100644 --- a/webserver.lua +++ b/webserver.lua @@ -141,15 +141,11 @@ function startWebServer() -- Stop all for i=0,5 do tmr.stop(i) end -- unload all other functions - -- grep function *.lua | grep -v webserver | cut -f 2 -d ':' | grep "^function" | sed "s/function //g" | grep -o "^[a-zA-Z0-9\_]*" + -- grep function *.lua | grep -v webserver | grep -v init.lua | grep -v main.lua | cut -f 2 -d ':' | grep "^function" | sed "s/function //g" | grep -o "^[a-zA-Z0-9\_]*" updateColor = nil drawLEDs = nil round = nil generateLEDs = nil - startSetupMode = nil - syncTimeFromInternet = nil - displayTime = nil - normalOperation = nil isSummerTime = nil getUTCtime = nil getTime = nil @@ -160,13 +156,20 @@ function startWebServer() ws2812.write(string.char(0,0,0):rep(56) .. color:rep(2) .. string.char(0,0,0):rep(4) .. color:rep(2) .. string.char(0,0,0):rep(48)) -- Start Time after 1 minute tmr.alarm(5, 60000, 0 ,function() - -- Start the time Thread + dependModules = { "timecore" , "wordclock", "displayword" } + for _,mod in pairs(dependModules) do + print("Loading " .. mod) + mydofile(mod) + end + -- Start the time Thread + displayTime() + -- Start the time Thread tmr.alarm(1, 20000, 1 ,function() - dofile("main.lc") + displayTime() end) end) -- send response after 100ms - tmr.alarm(5, 100, 0 ,function() + tmr.alarm(4, 100, 0 ,function() if (sendPage ~= nil) then print("Sending webpage.html (" .. tostring(node.heap()) .. "B free) ...") -- Load the sendPagewebcontent From b38269166bd6296dabd610c41a347c4768174d30 Mon Sep 17 00:00:00 2001 From: ollo Date: Thu, 18 Apr 2019 16:32:35 +0200 Subject: [PATCH 058/151] Add remote flashing procedure --- Readme.md | 8 +++++++ tools/remoteFlash.sh | 50 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100755 tools/remoteFlash.sh diff --git a/Readme.md b/Readme.md index 751ac1d..36f3cf0 100644 --- a/Readme.md +++ b/Readme.md @@ -1,6 +1,7 @@ # ESP Wordclock ## Setup +### Initial Setup Install the firmware on the ESP: The ESP must be set into the bootloader mode, like [this](https://www.ccc-mannheim.de/wiki/ESP8266#Boot_Modi) @@ -22,5 +23,12 @@ Then disconnect the serial terminal and copy the required files to the microcont ./tools/initialFlash.sh /dev/ttyUSB0 +### Upgrade + +Determine the IP address of your clock and execute the following script: +
+./tools/remoteFlash.sh IP-Address
+
+ ## Internal Setup * GPIO2 LEDs diff --git a/tools/remoteFlash.sh b/tools/remoteFlash.sh new file mode 100755 index 0000000..5cd5834 --- /dev/null +++ b/tools/remoteFlash.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +IP=$1 + +FLASHTOOL=./tools/tcpFlash.py + +if [ ! -f $FLASHTOOL ]; then + echo "Execute the script in root folder of the project" + exit 2 +fi + +if [ "$IP" == "" ]; then + echo "IP address of ESP required" + echo "usage:" + echo "$0 " + echo "$0 192.168.0.2" + exit 1 +fi + +# check the connection +echo "Searching $IP ..." +ping $IP -c 2 >> /dev/null +if [ $? -ne 0 ]; then + echo "Entered IP address: $IP is NOT online" + exit 2 +fi +echo "Upgrading $IP" +exit 3 + +FILES="displayword.lua main.lua timecore.lua webpage.html webserver.lua wordclock.lua init.lua" + +echo "Start Flasing ..." +for f in $FILES; do + if [ ! -f $f ]; then + echo "Cannot find $f" + echo "place the terminal into the folder where the lua files are present" + exit 1 + fi + echo "------------- $f ------------" + $FLASHTOOL -t $IP -f $f + if [ $? -ne 0 ]; then + echo "STOOOOP" + exit 1 + fi +done + +echo "Reboot the ESP" +echo "node.restart()" | nc $IP 80 + +exit 0 From 1543af8777067061dfc23cfb17ca71178d604a11 Mon Sep 17 00:00:00 2001 From: ollo Date: Thu, 18 Apr 2019 16:41:04 +0200 Subject: [PATCH 059/151] Activated remote flashing --- tools/remoteFlash.sh | 5 ++--- tools/tcpFlash.py | 4 ++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/remoteFlash.sh b/tools/remoteFlash.sh index 5cd5834..8b93b92 100755 --- a/tools/remoteFlash.sh +++ b/tools/remoteFlash.sh @@ -25,7 +25,6 @@ if [ $? -ne 0 ]; then exit 2 fi echo "Upgrading $IP" -exit 3 FILES="displayword.lua main.lua timecore.lua webpage.html webserver.lua wordclock.lua init.lua" @@ -44,7 +43,7 @@ for f in $FILES; do fi done -echo "Reboot the ESP" -echo "node.restart()" | nc $IP 80 +echo "TODO: Reboot the ESP" +#echo "node.restart()" | nc $IP 80 exit 0 diff --git a/tools/tcpFlash.py b/tools/tcpFlash.py index a0c92c7..5a82873 100755 --- a/tools/tcpFlash.py +++ b/tools/tcpFlash.py @@ -87,6 +87,10 @@ def main(nodeip, luafile, volatile=None): print "\rSending " + str(i) + "/" + str(len(contents)) + " ...", sys.stdout.flush() l = line.rstrip() + if ( l.endswith("]") ): + l = l + " " + print "add a space at the end" + if (volatile is None): if (not sendCmd(s, "w([[" + l + "]]);")): print "Cannot write line " + str(i) From 0e49a6842b219e7df7710369c81da23c2d9c5e68 Mon Sep 17 00:00:00 2001 From: ollo Date: Thu, 18 Apr 2019 16:45:50 +0200 Subject: [PATCH 060/151] extracted stopping function --- webserver.lua | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/webserver.lua b/webserver.lua index 5d2478e..6c7b953 100644 --- a/webserver.lua +++ b/webserver.lua @@ -124,20 +124,7 @@ function fillDynamicMap() return replaceMap end -function startWebServer() - srv=net.createServer(net.TCP) - srv:listen(80,function(conn) - conn:on("receive", function(conn,payload) - if (httpSending) then - print("HTTP sending... be patient!") - return - end - - - if (payload:find("GET /") ~= nil) then - httpSending=true - --here is code for handling http request from a web-browser - collectgarbage() +function stopWordclock() -- Stop all for i=0,5 do tmr.stop(i) end -- unload all other functions @@ -153,6 +140,24 @@ function startWebServer() display_countcharacters_de = nil display_countwords_de = nil collectgarbage() +end + +function startWebServer() + srv=net.createServer(net.TCP) + srv:listen(80,function(conn) + conn:on("receive", function(conn,payload) + if (httpSending) then + print("HTTP sending... be patient!") + return + end + + + if (payload:find("GET /") ~= nil) then + httpSending=true + --here is code for handling http request from a web-browser + collectgarbage() + stopWordclock() + ws2812.write(string.char(0,0,0):rep(56) .. color:rep(2) .. string.char(0,0,0):rep(4) .. color:rep(2) .. string.char(0,0,0):rep(48)) -- Start Time after 1 minute tmr.alarm(5, 60000, 0 ,function() From a8ca5ee47b56232578060085320cbe27056a4a15 Mon Sep 17 00:00:00 2001 From: ollo Date: Thu, 18 Apr 2019 19:31:48 +0200 Subject: [PATCH 061/151] Added debug output --- tools/remoteFlash.sh | 2 ++ webserver.lua | 1 + 2 files changed, 3 insertions(+) diff --git a/tools/remoteFlash.sh b/tools/remoteFlash.sh index 8b93b92..4aaaaeb 100755 --- a/tools/remoteFlash.sh +++ b/tools/remoteFlash.sh @@ -26,6 +26,8 @@ if [ $? -ne 0 ]; then fi echo "Upgrading $IP" +echo "stopWordclock()" | nc $IP 80 + FILES="displayword.lua main.lua timecore.lua webpage.html webserver.lua wordclock.lua init.lua" echo "Start Flasing ..." diff --git a/webserver.lua b/webserver.lua index 6c7b953..e8427ac 100644 --- a/webserver.lua +++ b/webserver.lua @@ -125,6 +125,7 @@ function fillDynamicMap() end function stopWordclock() + print("Stop all Wordclock") -- Stop all for i=0,5 do tmr.stop(i) end -- unload all other functions From 18da5e7e3beefdc78337e94d185445e46151c701 Mon Sep 17 00:00:00 2001 From: ollo Date: Thu, 18 Apr 2019 20:28:57 +0200 Subject: [PATCH 062/151] Automatic compile software after upgrade --- init.lua | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/init.lua b/init.lua index 54c20bf..18d711f 100644 --- a/init.lua +++ b/init.lua @@ -11,8 +11,9 @@ tmr.alarm(2, 85, 1, function() ws2812.write(string.char(128,0,0):rep(counter1) .. string.char(0,0,0):rep(spaceLeds) .. string.char(0,0,64):rep(counter1)) end) -local blacklistfile="init.lua config.lua config.lua.new" +local blacklistfile="init.lua config.lua config.lua.new webpage.html" function recompileAll() + for i=0,5 do tmr.stop(i) end -- compile all files l = file.list(); for k,_ in pairs(l) do @@ -43,7 +44,14 @@ end tmr.alarm(1, 5000, 0, function() tmr.stop(2) - if (file.open("main.lua")) then + if ( + (file.open("main.lua")) or + (file.open("timecore.lua")) or + (file.open("wordclock.lua")) or + (file.open("displayword.lua")) or + (file.open("webserver.lua")) + ) then + ws2812.write(string.char(0,0,0):rep(4) .. string.char(128,0,0) .. string.char(0,0,0) ..string.char(128,0,0) .. string.char(0,0,0):rep(21) .. string.char(0,0,0):rep(30) .. string.char(128,0,0) .. string.char(0,0,0):rep(80)) recompileAll() print("Rebooting ...") -- reboot repairs everything From f67f53d223156c52eee5b8585494c24f8fdd6ec3 Mon Sep 17 00:00:00 2001 From: ollo Date: Thu, 18 Apr 2019 20:34:28 +0200 Subject: [PATCH 063/151] Flash tool works with Nodemcu 2.2 --- tools/remoteFlash.sh | 3 ++- tools/tcpFlash.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/remoteFlash.sh b/tools/remoteFlash.sh index 4aaaaeb..fa8e440 100755 --- a/tools/remoteFlash.sh +++ b/tools/remoteFlash.sh @@ -26,7 +26,8 @@ if [ $? -ne 0 ]; then fi echo "Upgrading $IP" -echo "stopWordclock()" | nc $IP 80 +echo "stopWordclock()" > /tmp/wordClockCMD.txt +$FLASHTOOL -f /tmp/wordClockCMD.txt -t $IP -v FILES="displayword.lua main.lua timecore.lua webpage.html webserver.lua wordclock.lua init.lua" diff --git a/tools/tcpFlash.py b/tools/tcpFlash.py index 5a82873..6059719 100755 --- a/tools/tcpFlash.py +++ b/tools/tcpFlash.py @@ -112,7 +112,7 @@ def main(nodeip, luafile, volatile=None): sys.exit(4) # Check if the file exists: - if (not sendRecv(s, "=file.open(\"" + luafile + "\")", "true")): + if (not sendRecv(s, "=file.exists(\"" + luafile + "\")", "true")): print("Cannot send " + luafile + " to the ESP") sys.exit(4) else: From e4c8118731e23db5cef05e002379f0deba1b3aa8 Mon Sep 17 00:00:00 2001 From: ollo Date: Thu, 18 Apr 2019 20:44:18 +0200 Subject: [PATCH 064/151] Increased webserver delay --- webserver.lua | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/webserver.lua b/webserver.lua index e8427ac..70bcbf8 100644 --- a/webserver.lua +++ b/webserver.lua @@ -68,7 +68,6 @@ function sendPage(conn, nameOfFile, replaceMap) conn:send(buf) print("Sent rest") end - end function fillDynamicMap() @@ -151,38 +150,28 @@ function startWebServer() print("HTTP sending... be patient!") return end - - if (payload:find("GET /") ~= nil) then httpSending=true - --here is code for handling http request from a web-browser - collectgarbage() stopWordclock() - ws2812.write(string.char(0,0,0):rep(56) .. color:rep(2) .. string.char(0,0,0):rep(4) .. color:rep(2) .. string.char(0,0,0):rep(48)) - -- Start Time after 1 minute - tmr.alarm(5, 60000, 0 ,function() + -- Start Time after 3 minute + tmr.alarm(5, 180000, 0 ,function() dependModules = { "timecore" , "wordclock", "displayword" } for _,mod in pairs(dependModules) do print("Loading " .. mod) mydofile(mod) end - -- Start the time Thread - displayTime() - -- Start the time Thread + -- Start the time Thread again tmr.alarm(1, 20000, 1 ,function() displayTime() end) end) - -- send response after 100ms - tmr.alarm(4, 100, 0 ,function() - if (sendPage ~= nil) then - print("Sending webpage.html (" .. tostring(node.heap()) .. "B free) ...") - -- Load the sendPagewebcontent - replaceMap=fillDynamicMap() - sendPage(conn, "webpage.html", replaceMap) - end - end) + if (sendPage ~= nil) then + print("Sending webpage.html (" .. tostring(node.heap()) .. "B free) ...") + -- Load the sendPagewebcontent + replaceMap=fillDynamicMap() + sendPage(conn, "webpage.html", replaceMap) + end else if (payload:find("POST /") ~=nil) then --code for handling the POST-request (updating settings) _, postdatastart = payload:find("\r\n\r\n") @@ -326,12 +315,10 @@ function startWebServer() node.output(nil) global_c=nil end) - print("Welcome to Word Clock") - + print("Welcome to Word Clock") end end end) - conn:on("disconnection", function(c) print("Goodbye") node.output(nil) -- un-register the redirect output function, output goes to serial From b138b3c73340abc4eb6f60d73d07eb4950370682 Mon Sep 17 00:00:00 2001 From: ollo Date: Thu, 18 Apr 2019 21:37:55 +0200 Subject: [PATCH 065/151] setup LEDs before flashing --- tools/remoteFlash.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/remoteFlash.sh b/tools/remoteFlash.sh index fa8e440..c8d3446 100755 --- a/tools/remoteFlash.sh +++ b/tools/remoteFlash.sh @@ -27,6 +27,10 @@ fi echo "Upgrading $IP" echo "stopWordclock()" > /tmp/wordClockCMD.txt +echo "uart.write(0, tostring(node.heap())" >> /tmp/wordClockCMD.txt +echo "c = string.char(0,0,128)" >> /tmp/wordClockCMD.txt +echo "w = string.char(0,0,0)" >> /tmp/wordClockCMD.txt +echo "ws2812.write(w:rep(4) .. c .. w:rep(15) .. c .. w:rep(9) .. c .. w:rep(30) .. c .. w:rep(41) .. c )" >> /tmp/wordClockCMD.txt $FLASHTOOL -f /tmp/wordClockCMD.txt -t $IP -v FILES="displayword.lua main.lua timecore.lua webpage.html webserver.lua wordclock.lua init.lua" From 1b5ce385df2f000cb7087dd4f693709953d784a0 Mon Sep 17 00:00:00 2001 From: ollo Date: Thu, 18 Apr 2019 21:46:15 +0200 Subject: [PATCH 066/151] Clean memory before writing file --- tools/tcpFlash.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/tcpFlash.py b/tools/tcpFlash.py index 6059719..2c32002 100755 --- a/tools/tcpFlash.py +++ b/tools/tcpFlash.py @@ -72,6 +72,8 @@ def main(nodeip, luafile, volatile=None): s.close() sys.exit(3) + sendCmd(s, "for i=0,5 do tmr.stop(i) end") + sendCmd(s, "collectgarbage()") if (volatile is None): print "Flashing " + luafile sendCmd(s, "file.remove(\"" + luafile+"\");", True) From 4577a0768e19374b34698b146252ad1fe4f4e285 Mon Sep 17 00:00:00 2001 From: ollo Date: Thu, 18 Apr 2019 22:51:09 +0200 Subject: [PATCH 067/151] Visualize compiling --- init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 18d711f..5a107f2 100644 --- a/init.lua +++ b/init.lua @@ -51,7 +51,9 @@ tmr.alarm(1, 5000, 0, function() (file.open("displayword.lua")) or (file.open("webserver.lua")) ) then - ws2812.write(string.char(0,0,0):rep(4) .. string.char(128,0,0) .. string.char(0,0,0) ..string.char(128,0,0) .. string.char(0,0,0):rep(21) .. string.char(0,0,0):rep(30) .. string.char(128,0,0) .. string.char(0,0,0):rep(80)) + c = string.char(0,128,0) + w = string.char(0,0,0) + ws2812.write(w:rep(4) .. c .. w:rep(15) .. c .. w:rep(9) .. c .. w:rep(30) .. c .. w:rep(41) .. c ) recompileAll() print("Rebooting ...") -- reboot repairs everything From da743d8b0af19fe2a13d22dc8059a455747d8b13 Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 19 Apr 2019 21:03:43 +0200 Subject: [PATCH 068/151] Added binary files --- os/blank.bin | 1 + os/esp_init_data_default.bin | Bin 0 -> 128 bytes 2 files changed, 1 insertion(+) create mode 100644 os/blank.bin create mode 100644 os/esp_init_data_default.bin diff --git a/os/blank.bin b/os/blank.bin new file mode 100644 index 0000000..7de9e36 --- /dev/null +++ b/os/blank.bin @@ -0,0 +1 @@ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/os/esp_init_data_default.bin b/os/esp_init_data_default.bin new file mode 100644 index 0000000000000000000000000000000000000000..3db53ccbad9f34989570ff13679c3e4778f04713 GIT binary patch literal 128 zcmZQ&U}0iqWo2SzU}0qip?`n>fB5j>!Gi}6x&HtE!SLfpke`=}g9QTvBO? Date: Fri, 19 Apr 2019 21:49:27 +0200 Subject: [PATCH 069/151] set an default color if not already set --- webserver.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/webserver.lua b/webserver.lua index 70bcbf8..9ffba93 100644 --- a/webserver.lua +++ b/webserver.lua @@ -65,8 +65,10 @@ function sendPage(conn, nameOfFile, replaceMap) --reset amount of sent bytes, as we reached the end sentBytes=0 -- send the rest - conn:send(buf) - print("Sent rest") + if (string.len(buf) > 0) then + conn:send(buf) + print("Sent rest") + end end end @@ -153,6 +155,9 @@ function startWebServer() if (payload:find("GET /") ~= nil) then httpSending=true stopWordclock() + if (color == nil) then + color=string.char(0,128,0) + end ws2812.write(string.char(0,0,0):rep(56) .. color:rep(2) .. string.char(0,0,0):rep(4) .. color:rep(2) .. string.char(0,0,0):rep(48)) -- Start Time after 3 minute tmr.alarm(5, 180000, 0 ,function() From e5d7ec016be5a5f7f3925f67a4300d4eb2f215d0 Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 19 Apr 2019 22:05:00 +0200 Subject: [PATCH 070/151] Button included --- main.lua | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/main.lua b/main.lua index 060e438..a3241ff 100644 --- a/main.lua +++ b/main.lua @@ -160,3 +160,20 @@ else -- Logic for inital setup startSetupMode() end +----------- button --------- +gpio.mode(3, gpio.INPUT) +btnCounter=0 +-- Start the time Thread +tmr.alarm(4, 500, 1 ,function() + if (gpio.read(3) == 0) then + tmr.stop(1) -- stop the LED thread + print("Button pressed " .. tostring(btnCounter)) + btnCounter = btnCounter + 5 + local ledBuf= string.char(128,0,0):rep(btnCounter) .. string.char(0,0,0):rep(110 - btnCounter) + ws2812.write(ledBuf) + if (btnCounter >= 110) then + file.remove("config.lua") + node.restart() + end + end +end) From e33ad2639ea82f32101724c5baeb465d8a150fa9 Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 19 Apr 2019 23:38:46 +0200 Subject: [PATCH 071/151] Added brightness dimming --- displayword.lua | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/displayword.lua b/displayword.lua index 113d205..8f6aa3a 100644 --- a/displayword.lua +++ b/displayword.lua @@ -42,7 +42,7 @@ function drawLEDs(data, numberNewChars, inverseRow) if (numberNewChars == nil) then numberNewChars=0 end - print(tostring(numberNewChars) .. " charactes " .. tostring(data.charsPerMinute) .. " per minute; " .. tonumber(data.drawnCharacters) .. " used characters") + --print(tostring(numberNewChars) .. " charactes " .. tostring(data.charsPerMinute) .. " per minute; " .. tonumber(data.drawnCharacters) .. " used characters") local tmpBuf=nil for i=1,numberNewChars do if (tmpBuf == nil) then @@ -69,6 +69,9 @@ function round(num) end end +-- Initial value of percentage +briPercent=50 + -- Module displaying of the words function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4, characters) -- Set the local variables needed for the colored progress bar @@ -86,13 +89,14 @@ function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, co end data.charsPerMinute = round( (characters / minutes) ) if (adc ~= nil) then - briPercent=(100*adc.read(0)/900) - print("Minutes : " .. tostring(minutes) .. " Char minutes: " .. tostring(data.charsPerMinute) .. " bright: " .. tostring(briPercent) .. "%") - data.colorFg = colorForground - data.colorMin1 = colorMin1 - data.colorMin2 = colorMin2 - data.colorMin3 = colorMin3 - data.colorMin4 = colorMin4 + local per = (100*adc.read(0)/1024) + briPercent = ( ((briPercent * 4) + per) / 5) + print("Minutes : " .. tostring(minutes) .. " Char minutes: " .. tostring(data.charsPerMinute) .. " bright: " .. tostring(briPercent) .. "% " .. tostring(per) .. "%") + data.colorFg = string.char(string.byte(colorForground,1) * briPercent / 100, string.byte(colorForground,2) * briPercent / 100, string.byte(colorForground,3) * briPercent / 100) + data.colorMin1 = string.char(string.byte(colorMin1,1) * briPercent / 100, string.byte(colorMin1,2) * briPercent / 100, string.byte(colorMin1,3) * briPercent / 100) + data.colorMin2 = string.char(string.byte(colorMin2,1) * briPercent / 100, string.byte(colorMin2,2) * briPercent / 100, string.byte(colorMin2,3) * briPercent / 100) + data.colorMin3 = string.char(string.byte(colorMin3,1) * briPercent / 100, string.byte(colorMin3,2) * briPercent / 100, string.byte(colorMin3,3) * briPercent / 100) + data.colorMin4 = string.char(string.byte(colorMin4,1) * briPercent / 100, string.byte(colorMin4,2) * briPercent / 100, string.byte(colorMin4,3) * briPercent / 100) else -- devide by five (Minute 0, Minute 1 to Minute 4 takes the last chars) print("Minutes : " .. tostring(minutes) .. " Char minutes: " .. tostring(data.charsPerMinute) ) From 902ebdb85f23bf59f69c5081426cd4ad22d006ae Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 19 Apr 2019 23:54:32 +0200 Subject: [PATCH 072/151] Added garbage collection --- main.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/main.lua b/main.lua index a3241ff..7fc1fb6 100644 --- a/main.lua +++ b/main.lua @@ -136,6 +136,7 @@ function normalOperation() -- Start the time Thread tmr.alarm(1, 20000, 1 ,function() displayTime() + collectgarbage() end) end From 0aacfc2222cf02d8d30e48f4fa4a2d7cd3856a54 Mon Sep 17 00:00:00 2001 From: ollo Date: Sat, 20 Apr 2019 21:39:50 +0200 Subject: [PATCH 073/151] Remove display_countcharacters_de and display_countwords_de --- displayword.lua | 51 +++------------------- main.lua | 7 +-- unit/testWordClock.lua | 20 --------- webserver.lua | 2 - wordclock.lua | 99 ------------------------------------------ 5 files changed, 9 insertions(+), 170 deletions(-) diff --git a/displayword.lua b/displayword.lua index 8f6aa3a..91e59a9 100644 --- a/displayword.lua +++ b/displayword.lua @@ -1,38 +1,8 @@ -- Module filling a buffer, sent to the LEDs -function updateColor(data, inverseRow, characters2draw) - if (inverseRow == nil) then - inverseRow=false - end - -- special case, and there are exactly 4 words to display (so each word for each minute) - if (not inverseRow) then -- nomral row - if (data.drawnCharacters < data.charsPerMinute) then - return data.colorFg - elseif (data.drawnCharacters < data.charsPerMinute*2) then - return data.colorMin1 - elseif (data.drawnCharacters < data.charsPerMinute*3) then - return data.colorMin2 - elseif (data.drawnCharacters > data.charsPerMinute*4) then - return data.colorMin3 - elseif (data.drawnCharacters > data.charsPerMinute*5) then - return data.colorMin4 - else - return data.colorFg - end - else -- inverse row - --FIXME magic missing to start on the left side - if (data.drawnCharacters < data.charsPerMinute) then - return data.colorMin1 - elseif (data.drawnCharacters < data.charsPerMinute*2) then - return data.colorMin2 - elseif (data.drawnCharacters < data.charsPerMinute*3) then - return data.colorMin3 - elseif (data.drawnCharacters > data.charsPerMinute*4) then - return data.colorMin4 - else - return data.colorFg - end - end +function updateColor(data, inverseRow) + --FIXME magic missing to start on the left side + return data.colorFg end function drawLEDs(data, numberNewChars, inverseRow) @@ -42,17 +12,15 @@ function drawLEDs(data, numberNewChars, inverseRow) if (numberNewChars == nil) then numberNewChars=0 end - --print(tostring(numberNewChars) .. " charactes " .. tostring(data.charsPerMinute) .. " per minute; " .. tonumber(data.drawnCharacters) .. " used characters") local tmpBuf=nil for i=1,numberNewChars do if (tmpBuf == nil) then - tmpBuf = updateColor(data, inverseRow, numberNewChars) + tmpBuf = updateColor(data, inverseRow) else - tmpBuf=tmpBuf .. updateColor(data, inverseRow, numberNewChars) + tmpBuf=tmpBuf .. updateColor(data, inverseRow) end data.drawnCharacters=data.drawnCharacters+1 end - data.drawnWords=data.drawnWords+1 return tmpBuf end @@ -73,7 +41,7 @@ end briPercent=50 -- Module displaying of the words -function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4, characters) +function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4) -- Set the local variables needed for the colored progress bar data={} @@ -87,11 +55,10 @@ function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, co elseif (words.min4 == 1) then minutes = minutes + 4 end - data.charsPerMinute = round( (characters / minutes) ) if (adc ~= nil) then local per = (100*adc.read(0)/1024) briPercent = ( ((briPercent * 4) + per) / 5) - print("Minutes : " .. tostring(minutes) .. " Char minutes: " .. tostring(data.charsPerMinute) .. " bright: " .. tostring(briPercent) .. "% " .. tostring(per) .. "%") + print("Minutes : " .. tostring(minutes) .. " bright: " .. tostring(briPercent) .. "% current: " .. tostring(per) .. "%") data.colorFg = string.char(string.byte(colorForground,1) * briPercent / 100, string.byte(colorForground,2) * briPercent / 100, string.byte(colorForground,3) * briPercent / 100) data.colorMin1 = string.char(string.byte(colorMin1,1) * briPercent / 100, string.byte(colorMin1,2) * briPercent / 100, string.byte(colorMin1,3) * briPercent / 100) data.colorMin2 = string.char(string.byte(colorMin2,1) * briPercent / 100, string.byte(colorMin2,2) * briPercent / 100, string.byte(colorMin2,3) * briPercent / 100) @@ -99,7 +66,6 @@ function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, co data.colorMin4 = string.char(string.byte(colorMin4,1) * briPercent / 100, string.byte(colorMin4,2) * briPercent / 100, string.byte(colorMin4,3) * briPercent / 100) else -- devide by five (Minute 0, Minute 1 to Minute 4 takes the last chars) - print("Minutes : " .. tostring(minutes) .. " Char minutes: " .. tostring(data.charsPerMinute) ) data.colorFg=colorForground data.colorMin1=colorMin1 data.colorMin2=colorMin2 @@ -109,7 +75,6 @@ function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, co data.words=words data.drawnCharacters=0 data.drawnWords=0 - data.amountWords=display_countwords_de(words) local charsPerLine=11 -- Space / background has no color by default local space=string.char(0,0,0) @@ -275,7 +240,5 @@ if (words.fiveMin== 1) then buf= buf .. space:rep(1) end collectgarbage() - return buf end - diff --git a/main.lua b/main.lua index 7fc1fb6..5ed07d4 100644 --- a/main.lua +++ b/main.lua @@ -50,12 +50,9 @@ function displayTime() time = getTime(sec, timezoneoffset) words = display_timestat(time.hour, time.minute) - local charactersOfTime = display_countcharacters_de(words) - local wordsOfTime = display_countwords_de(words) - ledBuf = generateLEDs(words, color, color1, color2, color3, color4, - charactersOfTime) + ledBuf = generateLEDs(words, color, color1, color2, color3, color4) - print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " in " .. charactersOfTime .. " chars " .. wordsOfTime .. " words") + print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second) --if lines 4 to 6 are inverted due to hardware-fuckup, unfuck it here if ((inv46 ~= nil) and (inv46 == "on")) then diff --git a/unit/testWordClock.lua b/unit/testWordClock.lua index e722669..ea33f55 100644 --- a/unit/testWordClock.lua +++ b/unit/testWordClock.lua @@ -56,7 +56,6 @@ expected.itis=1 expected.one=1 expected.clock=1 checkWords(leds, expected, 1, 0) -checkCharacter(display_countwords_de(leds), 11) leds=display_timestat(2,5) expected={} @@ -64,7 +63,6 @@ expected.two=1 expected.fiveMin=1 expected.after=1 checkWords(leds, expected, 2 , 5) -checkCharacter(display_countwords_de(leds), 12) leds=display_timestat(3,10) expected={} @@ -72,7 +70,6 @@ expected.three=1 expected.tenMin=1 expected.after=1 checkWords(leds, expected, 3 , 10) -checkCharacter(display_countwords_de(leds), 12) leds=display_timestat(4,15) expected={} @@ -80,7 +77,6 @@ expected.four=1 expected.after=1 expected.quater=1 checkWords(leds, expected, 4 , 15) -checkCharacter(display_countwords_de(leds), 15) leds=display_timestat(5,20) expected={} @@ -88,7 +84,6 @@ expected.five=1 expected.twenty=1 expected.after=1 checkWords(leds, expected, 5 , 20) -checkCharacter(display_countwords_de(leds), 15) leds=display_timestat(6,25) expected={} @@ -97,7 +92,6 @@ expected.fiveMin=1 expected.before=1 expected.half=1 checkWords(leds, expected, 6 , 25) -checkCharacter(display_countwords_de(leds), 17) leds=display_timestat(7,30) expected={} @@ -105,7 +99,6 @@ expected.itis=1 expected.eight=1 expected.half=1 checkWords(leds, expected, 7 , 30) -checkCharacter(display_countwords_de(leds), 13) leds=display_timestat(8,35) expected={} @@ -114,7 +107,6 @@ expected.half=1 expected.fiveMin=1 expected.after=1 checkWords(leds, expected, 8 , 35) -checkCharacter(display_countwords_de(leds), 16) leds=display_timestat(9,40) expected={} @@ -122,7 +114,6 @@ expected.ten=1 expected.twenty=1 expected.before=1 checkWords(leds, expected, 9 , 40) -checkCharacter(display_countwords_de(leds), 14) leds=display_timestat(10,45) expected={} @@ -130,7 +121,6 @@ expected.eleven=1 expected.quater=1 expected.before=1 checkWords(leds, expected, 10 , 45) -checkCharacter(display_countwords_de(leds), 13) leds=display_timestat(11,50) expected={} @@ -138,7 +128,6 @@ expected.twelve=1 expected.tenMin=1 expected.before=1 checkWords(leds, expected, 11 , 50) -checkCharacter(display_countwords_de(leds), 12) leds=display_timestat(12,55) expected={} @@ -146,7 +135,6 @@ expected.oneLong=1 expected.fiveMin=1 expected.before=1 checkWords(leds, expected, 12 , 55) -checkCharacter(display_countwords_de(leds), 11) leds=display_timestat(13,00) expected={} @@ -154,7 +142,6 @@ expected.itis=1 expected.one=1 expected.clock=1 checkWords(leds, expected, 13 , 00) -checkCharacter(display_countwords_de(leds), 11) -- test the minutes inbetween leds=display_timestat(14,01) @@ -164,7 +151,6 @@ expected.two=1 expected.min1=1 expected.clock=1 checkWords(leds, expected, 14 , 01) -checkCharacter(display_countwords_de(leds), 12) leds=display_timestat(15,02) expected={} @@ -173,7 +159,6 @@ expected.three=1 expected.min2=1 expected.clock=1 checkWords(leds, expected, 15 , 02) -checkCharacter(display_countwords_de(leds), 12) leds=display_timestat(16,03) expected={} @@ -182,7 +167,6 @@ expected.four=1 expected.min3=1 expected.clock=1 checkWords(leds, expected, 16 , 03) -checkCharacter(display_countwords_de(leds), 12) leds=display_timestat(17,04) expected={} @@ -191,7 +175,6 @@ expected.five=1 expected.min4=1 expected.clock=1 checkWords(leds, expected, 17 , 04) -checkCharacter(display_countwords_de(leds), 12) leds=display_timestat(18,06) expected={} @@ -200,7 +183,6 @@ expected.after=1 expected.min1=1 expected.six=1 checkWords(leds, expected, 18 , 06) -checkCharacter(display_countwords_de(leds), 13) leds=display_timestat(19,09) expected={} @@ -209,7 +191,6 @@ expected.after=1 expected.min4=1 expected.seven=1 checkWords(leds, expected, 19 , 09) -checkCharacter(display_countwords_de(leds), 14) leds=display_timestat(20,17) expected={} @@ -218,7 +199,6 @@ expected.after=1 expected.min2=1 expected.eight=1 checkWords(leds, expected, 20 , 17) -checkCharacter(display_countwords_de(leds), 15) diff --git a/webserver.lua b/webserver.lua index 70bcbf8..7162400 100644 --- a/webserver.lua +++ b/webserver.lua @@ -137,8 +137,6 @@ function stopWordclock() getUTCtime = nil getTime = nil display_timestat = nil - display_countcharacters_de = nil - display_countwords_de = nil collectgarbage() end diff --git a/wordclock.lua b/wordclock.lua index f95b4c0..ef3136e 100755 --- a/wordclock.lua +++ b/wordclock.lua @@ -136,102 +136,3 @@ function display_timestat(hours, minutes, longmode) collectgarbage() return ret end - --- @fn display_countcharacters_de --- Count the amount of characters, used to describe the current time in words --- @param words the same structure, as generated with the function @see display_timestat --- @return the amount of characters, used to describe the time or 0 on errors -function display_countcharacters_de(words) - local amount=0 - if (words.it == 1) then - amount = amount + 2 - end - if (words.is == 1) then - amount = amount + 3 - end - if (words.fiveMin == 1) then - amount = amount + 4 - end - if (words.tenMin == 1) then - amount = amount + 4 - end - if (words.twenty == 1) then - amount = amount + 7 - end - if (words.threequater == 1) then - amount = amount + 11 - end - if (words.quater == 1) then - amount = amount + 7 - end - if (words.before == 1) then - amount = amount + 3 - end - if (words.after == 1) then - amount = amount + 4 - end - if (words.half == 1) then - amount = amount + 4 - end - if (words.twelve == 1) then - amount = amount + 5 - end - if (words.seven == 1) then - amount = amount + 6 - end - if (words.one == 1) then - amount = amount + 3 - end - if (words.oneLong == 1) then - amount = amount + 4 - end - if (words.two == 1) then - amount = amount + 4 - end - if (words.three == 1) then - amount = amount + 4 - end - if (words.five == 1) then - amount = amount + 4 - end - if (words.four == 1) then - amount = amount + 4 - end - if (words.nine == 1) then - amount = amount + 4 - end - if (words.eleven == 1) then - amount = amount + 3 - end - if (words.eight == 1) then - amount = amount + 4 - end - if (words.ten == 1) then - amount = amount + 4 - end - if (words.clock == 1) then - amount = amount + 3 - end - if (words.six == 1) then - amount = amount + 5 - end - - return amount -end - --- @fn display_countcharacters_de --- Count the amount of words, used to describe the current time in words! --- (min1 to min4 are ignored) --- @param words the same structure, as generated with the function @see display_timestat --- @return the amount of words, used to describe the time or 0 on errors -function display_countwords_de(words) - local amount = 0 - for k,v in pairs(words) do - if (v ~= nil and v == 1) then - if (k ~= "min1" and k ~= "min2" and k ~= "min3" and k ~= "min4") then - amount = amount + 1 - end - end - end - return amount -end From 8c73a1a8a08651b00dfececcd108823f7980bf8b Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 24 Apr 2019 21:00:12 +0200 Subject: [PATCH 074/151] Removed original config.lua file, before the simulation one is integrated --- simulation/config.lua | 1 - simulation/src/de/c3ma/ollo/WS2812Simulation.java | 13 ++++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/simulation/config.lua b/simulation/config.lua index 5b81003..7c38a41 100644 --- a/simulation/config.lua +++ b/simulation/config.lua @@ -12,4 +12,3 @@ color4=string.char(tonumber(green2*0.2), 0, 0) colorBg=string.char(0,0,0) -- black is the default background color sntpserverhostname="ptbtime1.ptb.de" timezoneoffset=1 - diff --git a/simulation/src/de/c3ma/ollo/WS2812Simulation.java b/simulation/src/de/c3ma/ollo/WS2812Simulation.java index 08b80a2..e88976c 100644 --- a/simulation/src/de/c3ma/ollo/WS2812Simulation.java +++ b/simulation/src/de/c3ma/ollo/WS2812Simulation.java @@ -93,9 +93,16 @@ public class WS2812Simulation implements LuaSimulation { if (args.length >= 3) { File additionalFile = new File(args[2]); if (additionalFile.exists() && (simu.doFile != null)) { - - Files.copy(additionalFile.toPath(), new File(simu.doFile.getWorkingDirectory() - + File.separator + additionalFile.getName()).toPath()); + File targetFile = new File(simu.doFile.getWorkingDirectory() + + File.separator + additionalFile.getName()); + if (targetFile.exists()) { + if (targetFile.delete()) { + System.out.println("Removed original " + targetFile.getName() + ""); + } else { + System.err.println("Cannot removed original " + targetFile.getName() + ""); + } + } + Files.copy(additionalFile.toPath(), targetFile.toPath()); System.out.println("Integrate " + additionalFile.getName() + " into simulation"); } else { System.err.println("Script " + args[2] + " cannot be found"); From 417c93583d20adef7a0c1a3d9e5c03ba3b1c2441 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 24 Apr 2019 21:09:41 +0200 Subject: [PATCH 075/151] Added brightness scrollbar into the GUI --- .../de/c3ma/ollo/mockup/ui/WS2812Layout.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java index ba32513..f836c66 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java +++ b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java @@ -21,7 +21,10 @@ import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JSlider; import javax.swing.JTextField; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; @@ -42,6 +45,13 @@ public class WS2812Layout extends JFrame { */ private static final long serialVersionUID = -6815557232118826140L; + /** + * Parameter for the ADC brightness control + */ + private static final int ADC_INIT = 512; + private static final int ADC_MIN = 0; + private static final int ADC_MAX = 1024; + private ArrayList mLines = new ArrayList(); private int mColumn = 0; private int mRow = 0; @@ -106,6 +116,19 @@ public class WS2812Layout extends JFrame { } contentPane.add(ledPanel, BorderLayout.CENTER); + JSlider adc = new JSlider(JSlider.VERTICAL, + ADC_MIN, ADC_MAX, ADC_INIT); + adc.addChangeListener(new ChangeListener() { + + @Override + public void stateChanged(ChangeEvent e) { + // TODO Auto-generated method stub + + } + }); + + contentPane.add(adc, BorderLayout.EAST); + JPanel bottomPanel = new JPanel(); final JTextField dateTime = new JTextField("yyyy-mm-dd HH:MM:SS"); From aeb5dab9fd25d28260403507d32a0b0a615ef588 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 24 Apr 2019 21:21:19 +0200 Subject: [PATCH 076/151] Added ADC stimulation into the simulation --- .../src/de/c3ma/ollo/LuaSimulation.java | 4 +- .../src/de/c3ma/ollo/WS2812Simulation.java | 8 ++++ .../src/de/c3ma/ollo/mockup/ESP8266Adc.java | 47 +++++++++++++++++++ .../de/c3ma/ollo/mockup/ui/WS2812Layout.java | 3 +- 4 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 simulation/src/de/c3ma/ollo/mockup/ESP8266Adc.java diff --git a/simulation/src/de/c3ma/ollo/LuaSimulation.java b/simulation/src/de/c3ma/ollo/LuaSimulation.java index 5d3023d..7c1223d 100644 --- a/simulation/src/de/c3ma/ollo/LuaSimulation.java +++ b/simulation/src/de/c3ma/ollo/LuaSimulation.java @@ -11,5 +11,7 @@ public interface LuaSimulation { public void rebootTriggered(); - public void setSimulationTime(long timeInMillis); + public void setSimulationTime(long timeInMillis); + + public void setADC(int value); } diff --git a/simulation/src/de/c3ma/ollo/WS2812Simulation.java b/simulation/src/de/c3ma/ollo/WS2812Simulation.java index e88976c..388d3f0 100644 --- a/simulation/src/de/c3ma/ollo/WS2812Simulation.java +++ b/simulation/src/de/c3ma/ollo/WS2812Simulation.java @@ -11,6 +11,7 @@ import org.luaj.vm2.LuaValue; import org.luaj.vm2.lib.jse.JsePlatform; import de.c3ma.ollo.mockup.DoFileFunction; +import de.c3ma.ollo.mockup.ESP8266Adc; import de.c3ma.ollo.mockup.ESP8266File; import de.c3ma.ollo.mockup.ESP8266Net; import de.c3ma.ollo.mockup.ESP8266Node; @@ -36,6 +37,7 @@ public class WS2812Simulation implements LuaSimulation { private ESP8266Node espNode = new ESP8266Node(this); private DoFileFunction doFile = new DoFileFunction(globals); private ESP8266Ws2812 ws2812 = new ESP8266Ws2812(); + private ESP8266Adc adc = new ESP8266Adc(); private String scriptName; public WS2812Simulation(File sourceFolder) { @@ -44,6 +46,7 @@ public class WS2812Simulation implements LuaSimulation { globals.load(espTmr); globals.load(espFile); globals.load(espNode); + globals.load(adc); globals.load(new ESP8266Wifi()); globals.load(new ESP8266Net()); globals.load(new ESP8266Time()); @@ -177,4 +180,9 @@ public class WS2812Simulation implements LuaSimulation { public void setSimulationTime(long timeInMillis) { ESP8266Time.setOverwrittenTime(timeInMillis); } + + @Override + public void setADC(int value) { + adc.setADC(value); + } } diff --git a/simulation/src/de/c3ma/ollo/mockup/ESP8266Adc.java b/simulation/src/de/c3ma/ollo/mockup/ESP8266Adc.java new file mode 100644 index 0000000..4e8b45f --- /dev/null +++ b/simulation/src/de/c3ma/ollo/mockup/ESP8266Adc.java @@ -0,0 +1,47 @@ +package de.c3ma.ollo.mockup; + +import org.luaj.vm2.LuaTable; +import org.luaj.vm2.LuaValue; +import org.luaj.vm2.Varargs; +import org.luaj.vm2.lib.TwoArgFunction; +import org.luaj.vm2.lib.VarArgFunction; + +/** + * created at 24.04.2019 - 21:12:03
+ * creator: ollo
+ * project: WS2812Emulation
+ * $Id: $
+ * @author ollo
+ */ +public class ESP8266Adc extends TwoArgFunction { + + private int mAdc = 0; + + @Override + public LuaValue call(LuaValue modname, LuaValue env) { + env.checkglobals(); + final LuaTable adc = new LuaTable(); + adc.set("read", new Read(this)); + env.set("adc", adc); + env.get("package").get("loaded").set("adc", adc); + return adc; + } + + private class Read extends VarArgFunction { + + private ESP8266Adc adc; + + public Read(ESP8266Adc a) { + this.adc = a; + } + + public Varargs invoke(Varargs varargs) { + return LuaValue.valueOf(this.adc.mAdc); + } + } + + public void setADC(int newValue) { + this.mAdc = newValue; + System.out.println("[ADC] updated to " + this.mAdc); + } +} diff --git a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java index f836c66..f59fa4b 100644 --- a/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java +++ b/simulation/src/de/c3ma/ollo/mockup/ui/WS2812Layout.java @@ -122,8 +122,7 @@ public class WS2812Layout extends JFrame { @Override public void stateChanged(ChangeEvent e) { - // TODO Auto-generated method stub - + nodemcuSimu.setADC(adc.getValue()); } }); From a11f756c4200f054ebba6c4a95433a6cabec3850 Mon Sep 17 00:00:00 2001 From: ollo Date: Sat, 27 Apr 2019 00:14:27 +0200 Subject: [PATCH 077/151] Round percentage of adc --- displayword.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/displayword.lua b/displayword.lua index 91e59a9..3142b2c 100644 --- a/displayword.lua +++ b/displayword.lua @@ -57,7 +57,7 @@ function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, co end if (adc ~= nil) then local per = (100*adc.read(0)/1024) - briPercent = ( ((briPercent * 4) + per) / 5) + briPercent = math.floor( ((briPercent * 4) + per) / 5) print("Minutes : " .. tostring(minutes) .. " bright: " .. tostring(briPercent) .. "% current: " .. tostring(per) .. "%") data.colorFg = string.char(string.byte(colorForground,1) * briPercent / 100, string.byte(colorForground,2) * briPercent / 100, string.byte(colorForground,3) * briPercent / 100) data.colorMin1 = string.char(string.byte(colorMin1,1) * briPercent / 100, string.byte(colorMin1,2) * briPercent / 100, string.byte(colorMin1,3) * briPercent / 100) From aeae13642f63da6321f92d88968c8331c00cb691 Mon Sep 17 00:00:00 2001 From: ollo Date: Sat, 27 Apr 2019 00:22:29 +0200 Subject: [PATCH 078/151] More math --- displayword.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/displayword.lua b/displayword.lua index 3142b2c..057aba7 100644 --- a/displayword.lua +++ b/displayword.lua @@ -43,7 +43,7 @@ briPercent=50 -- Module displaying of the words function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4) -- Set the local variables needed for the colored progress bar - data={} + local data={} local minutes=1 if (words.min1 == 1) then @@ -56,7 +56,7 @@ function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, co minutes = minutes + 4 end if (adc ~= nil) then - local per = (100*adc.read(0)/1024) + local per = math.floor(100*adc.read(0)/1000) briPercent = math.floor( ((briPercent * 4) + per) / 5) print("Minutes : " .. tostring(minutes) .. " bright: " .. tostring(briPercent) .. "% current: " .. tostring(per) .. "%") data.colorFg = string.char(string.byte(colorForground,1) * briPercent / 100, string.byte(colorForground,2) * briPercent / 100, string.byte(colorForground,3) * briPercent / 100) From ab37d2890486492662aa7c4e39c564bc91414be6 Mon Sep 17 00:00:00 2001 From: ollo Date: Sat, 27 Apr 2019 00:40:21 +0200 Subject: [PATCH 079/151] Count words with drawing function --- displayword.lua | 3 ++- main.lua | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/displayword.lua b/displayword.lua index 057aba7..d9acb16 100644 --- a/displayword.lua +++ b/displayword.lua @@ -39,11 +39,12 @@ end -- Initial value of percentage briPercent=50 +data={} -- Module displaying of the words function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4) -- Set the local variables needed for the colored progress bar - local data={} + data={} local minutes=1 if (words.min1 == 1) then diff --git a/main.lua b/main.lua index 5ed07d4..a46bf4a 100644 --- a/main.lua +++ b/main.lua @@ -52,7 +52,7 @@ function displayTime() ledBuf = generateLEDs(words, color, color1, color2, color3, color4) - print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second) + print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " char: " .. tostring(data.drawnCharacters)) --if lines 4 to 6 are inverted due to hardware-fuckup, unfuck it here if ((inv46 ~= nil) and (inv46 == "on")) then From 97de5dbb78eacc9f0cab3ed258619afa42cfb214 Mon Sep 17 00:00:00 2001 From: ollo Date: Sat, 27 Apr 2019 18:34:57 +0200 Subject: [PATCH 080/151] reworked displayword into module --- displayword.lua | 17 +++++++++++------ main.lua | 16 +++++++++------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/displayword.lua b/displayword.lua index d9acb16..63056ae 100644 --- a/displayword.lua +++ b/displayword.lua @@ -1,11 +1,16 @@ -- Module filling a buffer, sent to the LEDs -function updateColor(data, inverseRow) +local moduleName = ... +local M = {} -- public interface +_G[moduleName] = M + + +function M.updateColor(data, inverseRow) --FIXME magic missing to start on the left side return data.colorFg end -function drawLEDs(data, numberNewChars, inverseRow) +function M.drawLEDs(data, numberNewChars, inverseRow) if (inverseRow == nil) then inverseRow=false end @@ -25,7 +30,7 @@ function drawLEDs(data, numberNewChars, inverseRow) end -- Utility function for round -function round(num) +function M.round(num) under = math.floor(num) upper = math.floor(num) + 1 underV = -(under - num) @@ -38,11 +43,11 @@ function round(num) end -- Initial value of percentage -briPercent=50 -data={} +local briPercent=50 +local data={} -- Module displaying of the words -function generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4) +function M.generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4) -- Set the local variables needed for the colored progress bar data={} diff --git a/main.lua b/main.lua index a46bf4a..6f926aa 100644 --- a/main.lua +++ b/main.lua @@ -42,18 +42,20 @@ function syncTimeFromInternet() end function displayTime() - sec, usec = rtctime.get() + local sec, usec = rtctime.get() -- Handle lazy programmer: if (timezoneoffset == nil) then timezoneoffset=0 end - time = getTime(sec, timezoneoffset) - words = display_timestat(time.hour, time.minute) + local time = getTime(sec, timezoneoffset) + local words = display_timestat(time.hour, time.minute) + print(package.path) + dp = require("displayword") - ledBuf = generateLEDs(words, color, color1, color2, color3, color4) - - print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " char: " .. tostring(data.drawnCharacters)) + ledBuf = dp.generateLEDs(words, color, color1, color2, color3, color4) + print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " char: " .. tostring(dp.data.drawnCharacters)) + dp = nil --if lines 4 to 6 are inverted due to hardware-fuckup, unfuck it here if ((inv46 ~= nil) and (inv46 == "on")) then tempstring = ledBuf:sub(1,99) -- first 33 leds @@ -115,7 +117,7 @@ function normalOperation() print('IP: ',wifi.sta.getip()) -- Here the WLAN is found, and something is done print("Solving dependencies") - local dependModules = { "timecore" , "wordclock", "displayword" } + local dependModules = { "timecore" , "wordclock" } for _,mod in pairs(dependModules) do print("Loading " .. mod) mydofile(mod) From c3e48fb17a7ec4ba563963efd412bad0471604ac Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 3 May 2019 20:19:12 +0200 Subject: [PATCH 081/151] Reworked require with dofile --- displayword.lua | 24 ++++++++++++++---------- main.lua | 17 ++++++++--------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/displayword.lua b/displayword.lua index 63056ae..0b446ca 100644 --- a/displayword.lua +++ b/displayword.lua @@ -1,16 +1,12 @@ -- Module filling a buffer, sent to the LEDs - -local moduleName = ... -local M = {} -- public interface -_G[moduleName] = M - - -function M.updateColor(data, inverseRow) +local M +do +local updateColor = function (data, inverseRow) --FIXME magic missing to start on the left side return data.colorFg end -function M.drawLEDs(data, numberNewChars, inverseRow) +local drawLEDs = function(data, numberNewChars, inverseRow) if (inverseRow == nil) then inverseRow=false end @@ -30,7 +26,7 @@ function M.drawLEDs(data, numberNewChars, inverseRow) end -- Utility function for round -function M.round(num) +local round = function(num) under = math.floor(num) upper = math.floor(num) + 1 underV = -(under - num) @@ -47,7 +43,7 @@ local briPercent=50 local data={} -- Module displaying of the words -function M.generateLEDs(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4) +local generateLEDs = function(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4) -- Set the local variables needed for the colored progress bar data={} @@ -248,3 +244,11 @@ if (words.fiveMin== 1) then collectgarbage() return buf end +M = { + generateLEDs = generateLEDs, + round = round, + drawLEDs = drawLEDs, + updateColor = updateColor, +} +end +return M \ No newline at end of file diff --git a/main.lua b/main.lua index 6f926aa..0cdeb43 100644 --- a/main.lua +++ b/main.lua @@ -50,12 +50,13 @@ function displayTime() local time = getTime(sec, timezoneoffset) local words = display_timestat(time.hour, time.minute) print(package.path) - dp = require("displayword") - - ledBuf = dp.generateLEDs(words, color, color1, color2, color3, color4) - - print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " char: " .. tostring(dp.data.drawnCharacters)) - dp = nil + dp = dofile("displayword.lc") + if (dp ~= nil) then + ledBuf = dp.generateLEDs(words, color, color1, color2, color3, color4) + print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " char: " .. tostring(dp.data.drawnCharacters)) + end + dp = nil + if (ledBuf ~= nil) then --if lines 4 to 6 are inverted due to hardware-fuckup, unfuck it here if ((inv46 ~= nil) and (inv46 == "on")) then tempstring = ledBuf:sub(1,99) -- first 33 leds @@ -72,9 +73,7 @@ function displayTime() ws2812.write(ledBuf) ledBuf=nil end - - - + end -- Used for debugging if (clockdebug ~= nil) then for key,value in pairs(words) do From ba6734d5ad9ee19d971ac66fc74fbcb4788c22d6 Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 3 May 2019 20:45:16 +0200 Subject: [PATCH 082/151] refactoring displayword to a module --- displayword.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/displayword.lua b/displayword.lua index 0b446ca..255efa5 100644 --- a/displayword.lua +++ b/displayword.lua @@ -46,6 +46,10 @@ local data={} local generateLEDs = function(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4) -- Set the local variables needed for the colored progress bar data={} + + if (words == nil) then + return nil + end local minutes=1 if (words.min1 == 1) then @@ -249,6 +253,7 @@ M = { round = round, drawLEDs = drawLEDs, updateColor = updateColor, + data = data, } end return M \ No newline at end of file From 467f525764c1f59a2887a76ec9f3d31cc240d7be Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 3 May 2019 21:09:36 +0200 Subject: [PATCH 083/151] increased update cycle to 10s --- main.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/main.lua b/main.lua index 0cdeb43..635d376 100644 --- a/main.lua +++ b/main.lua @@ -49,7 +49,6 @@ function displayTime() end local time = getTime(sec, timezoneoffset) local words = display_timestat(time.hour, time.minute) - print(package.path) dp = dofile("displayword.lc") if (dp ~= nil) then ledBuf = dp.generateLEDs(words, color, color1, color2, color3, color4) @@ -132,7 +131,7 @@ function normalOperation() end) displayTime() -- Start the time Thread - tmr.alarm(1, 20000, 1 ,function() + tmr.alarm(1, 10000, 1 ,function() displayTime() collectgarbage() end) From 13343fa645f0da3c116b5bb3f5aeae0d30307653 Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 3 May 2019 21:26:10 +0200 Subject: [PATCH 084/151] Dim functionality is always activated --- displayword.lua | 11 +++++++---- main.lua | 5 +++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/displayword.lua b/displayword.lua index 255efa5..ed67ac4 100644 --- a/displayword.lua +++ b/displayword.lua @@ -38,8 +38,6 @@ local round = function(num) end end --- Initial value of percentage -local briPercent=50 local data={} -- Module displaying of the words @@ -50,6 +48,11 @@ local generateLEDs = function(words, colorForground, colorMin1, colorMin2, color if (words == nil) then return nil end + + -- Initial value of percentage + if (words.briPercent == nil) then + words.briPercent=50 + end local minutes=1 if (words.min1 == 1) then @@ -63,8 +66,8 @@ local generateLEDs = function(words, colorForground, colorMin1, colorMin2, color end if (adc ~= nil) then local per = math.floor(100*adc.read(0)/1000) - briPercent = math.floor( ((briPercent * 4) + per) / 5) - print("Minutes : " .. tostring(minutes) .. " bright: " .. tostring(briPercent) .. "% current: " .. tostring(per) .. "%") + words.briPercent = tonumber( ((words.briPercent * 4) + per) / 5) + print("Minutes : " .. tostring(minutes) .. " bright: " .. tostring(words.briPercent) .. "% current: " .. tostring(per) .. "%") data.colorFg = string.char(string.byte(colorForground,1) * briPercent / 100, string.byte(colorForground,2) * briPercent / 100, string.byte(colorForground,3) * briPercent / 100) data.colorMin1 = string.char(string.byte(colorMin1,1) * briPercent / 100, string.byte(colorMin1,2) * briPercent / 100, string.byte(colorMin1,3) * briPercent / 100) data.colorMin2 = string.char(string.byte(colorMin2,1) * briPercent / 100, string.byte(colorMin2,2) * briPercent / 100, string.byte(colorMin2,3) * briPercent / 100) diff --git a/main.lua b/main.lua index 635d376..241c4a7 100644 --- a/main.lua +++ b/main.lua @@ -40,7 +40,7 @@ function syncTimeFromInternet() end ) end - +briPercent = 50 function displayTime() local sec, usec = rtctime.get() -- Handle lazy programmer: @@ -49,6 +49,7 @@ function displayTime() end local time = getTime(sec, timezoneoffset) local words = display_timestat(time.hour, time.minute) + words.briPercent=briPercent dp = dofile("displayword.lc") if (dp ~= nil) then ledBuf = dp.generateLEDs(words, color, color1, color2, color3, color4) @@ -82,7 +83,7 @@ function displayTime() end end -- cleanup - + briPercent=words.briPercent words=nil time=nil collectgarbage() From 69a2158ca6b7af5e828522e2750b9e76a99ecef5 Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 3 May 2019 22:11:44 +0200 Subject: [PATCH 085/151] Brightness control can be activated and deactivated --- displayword.lua | 7 +------ main.lua | 6 +++++- webpage.html | 4 ++-- webserver.lua | 4 +++- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/displayword.lua b/displayword.lua index ed67ac4..da094f2 100644 --- a/displayword.lua +++ b/displayword.lua @@ -49,11 +49,6 @@ local generateLEDs = function(words, colorForground, colorMin1, colorMin2, color return nil end - -- Initial value of percentage - if (words.briPercent == nil) then - words.briPercent=50 - end - local minutes=1 if (words.min1 == 1) then minutes = minutes + 1 @@ -64,7 +59,7 @@ local generateLEDs = function(words, colorForground, colorMin1, colorMin2, color elseif (words.min4 == 1) then minutes = minutes + 4 end - if (adc ~= nil) then + if ( (adc ~= nil) and (words.briPercent ~= nil) ) then local per = math.floor(100*adc.read(0)/1000) words.briPercent = tonumber( ((words.briPercent * 4) + per) / 5) print("Minutes : " .. tostring(minutes) .. " bright: " .. tostring(words.briPercent) .. "% current: " .. tostring(per) .. "%") diff --git a/main.lua b/main.lua index 241c4a7..3e75444 100644 --- a/main.lua +++ b/main.lua @@ -49,7 +49,11 @@ function displayTime() end local time = getTime(sec, timezoneoffset) local words = display_timestat(time.hour, time.minute) - words.briPercent=briPercent + if ((dim ~= nil) and (dim == "on")) then + words.briPercent=briPercent + else + words.briPercent=nil + end dp = dofile("displayword.lc") if (dp ~= nil) then ledBuf = dp.generateLEDs(words, color, color1, color2, color3, color4) diff --git a/webpage.html b/webpage.html index 2ba586a..25d1c80 100644 --- a/webpage.html +++ b/webpage.html @@ -45,7 +45,7 @@ Please note that all settings are mandatory

WIFI-SSIDSSID of the wireless network
WIFI-PasswordPassword of the wireless network
SNTP ServerServer to sync the time with. Only one ntp server is allowed.
Offset to UTC timeDefine the offset to UTC time in hours. For example +1 hour for Germany
SNTP ServerServer to sync the time with. Only one ntp server is allowed.
Offset to UTC timeDefine the offset to UTC time in hours. For example +1 hour for Germany
Foreground ColorLED Color for all minutes, divisible by five
Background ColorBackground LED Color
1. Minute ColorFirst minute after
- + @@ -53,9 +53,9 @@ Please note that all settings are mandatory

- + diff --git a/webserver.lua b/webserver.lua index 7162400..5a7d178 100644 --- a/webserver.lua +++ b/webserver.lua @@ -120,6 +120,8 @@ function fillDynamicMap() replaceMap["$HEXCOLOR3"]=hexColor3 replaceMap["$HEXCOLOR4"]=hexColor4 replaceMap["$HEXCOLORBG"]=hexColorBg + replaceMap["$INV46"]=((inv46 ~= nil and inv46 == "on") and "checked" or "") + replaceMap["$AUTODIM"]=((dim ~= nil and dim == "on") and "checked" or "") return replaceMap end @@ -200,7 +202,7 @@ function startWebServer() sec, _ = rtctime.get() file.open(configFile.. ".new", "w+") file.write("-- Config\n" .. "station_cfg={}\nstation_cfg.ssid=\"" .. _POST.ssid .. "\"\nstation_cfg.pwd=\"" .. _POST.password .. "\"\nstation_cfg.save=false\nwifi.sta.config(station_cfg)\n") - file.write("sntpserverhostname=\"" .. _POST.sntpserver .. "\"\n" .. "timezoneoffset=\"" .. _POST.timezoneoffset .. "\"\n".. "inv46=\"" .. tostring(_POST.inv46) .. "\"\n") + file.write("sntpserverhostname=\"" .. _POST.sntpserver .. "\"\n" .. "timezoneoffset=\"" .. _POST.timezoneoffset .. "\"\n".. "inv46=\"" .. tostring(_POST.inv46) .. "\"\n" .. "dim=\"" .. tostring(_POST.dim) .. "\"\n") if ( _POST.fcolor ~= nil) then -- color=string.char(_POST.green, _POST.red, _POST.blue) From e14a7a576e0f86d3f6dee33b7fa6052c76927ec8 Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 3 May 2019 23:18:27 +0200 Subject: [PATCH 086/151] Show WLAN when connecting --- main.lua | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/main.lua b/main.lua index 3e75444..bd88399 100644 --- a/main.lua +++ b/main.lua @@ -102,15 +102,37 @@ function normalOperation() connect_counter=0 -- Wait to be connect to the WiFi access point. - tmr.alarm(0, 1000, 1, function() + tmr.alarm(0, 500, 1, function() connect_counter=connect_counter+1 if wifi.sta.status() ~= 5 then print(connect_counter .. "/60 Connecting to AP...") - if (connect_counter % 2 == 0) then + if (connect_counter % 5 ~= 4) then local wlanColor=string.char((connect_counter % 6)*20,(connect_counter % 5)*20,(connect_counter % 3)*20) local space=string.char(0,0,0) - local buf=space:rep(6) .. wlanColor .. space:rep(4) - buf= buf .. space:rep(3) .. wlanColor:rep(3) + local buf=space:rep(6) + if ((connect_counter % 5) >= 1) then + buf = buf .. wlanColor + else + buf = buf .. space + end + buf = buf .. space:rep(4) + buf= buf .. space:rep(3) + if ((connect_counter % 5) >= 3) then + buf = buf .. wlanColor + else + buf = buf .. space + end + if ((connect_counter % 5) >= 2) then + buf = buf .. wlanColor + else + buf = buf .. space + end + if ((connect_counter % 5) >= 0) then + buf = buf .. wlanColor + else + buf = buf .. space + end + buf = buf .. space:rep(100) ws2812.write(buf) else ws2812.write(string.char(0,0,0):rep(114)) From b9e3812a72d2c5b30f218ba4a57890be4ad7e43c Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 8 May 2019 21:12:02 +0200 Subject: [PATCH 087/151] module display word loadable in the simulation --- displayword.lua | 2 +- main.lua | 12 +++++++----- simulation/src/de/c3ma/ollo/WS2812Simulation.java | 3 +-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/displayword.lua b/displayword.lua index da094f2..c1358e7 100644 --- a/displayword.lua +++ b/displayword.lua @@ -254,4 +254,4 @@ M = { data = data, } end -return M \ No newline at end of file +displayword = M diff --git a/main.lua b/main.lua index 3e75444..fa89b32 100644 --- a/main.lua +++ b/main.lua @@ -1,5 +1,7 @@ -- Main Module +displayword = {} + function startSetupMode() tmr.stop(0) tmr.stop(1) @@ -54,12 +56,12 @@ function displayTime() else words.briPercent=nil end - dp = dofile("displayword.lc") - if (dp ~= nil) then - ledBuf = dp.generateLEDs(words, color, color1, color2, color3, color4) - print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " char: " .. tostring(dp.data.drawnCharacters)) + dofile("displayword.lc") + if (displayword ~= nil) then + ledBuf = displayword.generateLEDs(words, color, color1, color2, color3, color4) + print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " char: " .. tostring(displayword.data.drawnCharacters)) end - dp = nil + displayword = nil if (ledBuf ~= nil) then --if lines 4 to 6 are inverted due to hardware-fuckup, unfuck it here if ((inv46 ~= nil) and (inv46 == "on")) then diff --git a/simulation/src/de/c3ma/ollo/WS2812Simulation.java b/simulation/src/de/c3ma/ollo/WS2812Simulation.java index 388d3f0..1c4cff9 100644 --- a/simulation/src/de/c3ma/ollo/WS2812Simulation.java +++ b/simulation/src/de/c3ma/ollo/WS2812Simulation.java @@ -160,9 +160,8 @@ public class WS2812Simulation implements LuaSimulation { callScript(this.scriptName); } } catch (InterruptedException e) { - + } - } private void callScript(String filename) { From 32106035c245ba9c70bf4dc90ba5f254c744445b Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 10 May 2019 22:58:42 +0200 Subject: [PATCH 088/151] Refactoring line generation --- displayword.lua | 170 +++++++++++++++++++++++++++--------------------- 1 file changed, 96 insertions(+), 74 deletions(-) diff --git a/displayword.lua b/displayword.lua index c1358e7..eedf0e9 100644 --- a/displayword.lua +++ b/displayword.lua @@ -6,10 +6,7 @@ local updateColor = function (data, inverseRow) return data.colorFg end -local drawLEDs = function(data, numberNewChars, inverseRow) - if (inverseRow == nil) then - inverseRow=false - end +local drawLEDs = function(data, numberNewChars) if (numberNewChars == nil) then numberNewChars=0 end @@ -87,7 +84,7 @@ local generateLEDs = function(words, colorForground, colorMin1, colorMin2, color -- Set the foreground color as the default color local buf=colorFg - + local line=space -- line 1---------------------------------------------- if (words.it==1) then buf=drawLEDs(data,2) -- ES @@ -109,120 +106,145 @@ if (words.fiveMin== 1) then buf= buf .. space:rep(4) end -- line 2-- even row (so inverted) -------------------- - if (words.twenty == 1) then - buf= buf .. drawLEDs(data,7,true) -- ZWANZIG - else - buf= buf .. space:rep(7) - end if (words.tenMin == 1) then - buf= buf .. drawLEDs(data,4,true) -- ZEHN + line= drawLEDs(data,4) -- ZEHN else - buf= buf .. space:rep(4) + line= space:rep(4) end + if (words.twenty == 1) then + line= line .. drawLEDs(data,7) -- ZWANZIG + else + line= line .. space:rep(7) + end + -- fill, the buffer + for i = 0,10 do + buf = buf .. line:sub((11-i)*3-2,(11-i)*3) + end + -- line3---------------------------------------------- if (words.threequater == 1) then - buf= buf .. drawLEDs(data,11) -- Dreiviertel + line= drawLEDs(data,11) -- Dreiviertel elseif (words.quater == 1) then - buf= buf .. space:rep(4) - buf= buf .. drawLEDs(data,7) -- VIERTEL + line= space:rep(4) + line= line .. drawLEDs(data,7) -- VIERTEL else - buf= buf .. space:rep(11) + line= space:rep(11) end + -- fill, the buffer + buf = buf .. line --line 4-------- even row (so inverted) ------------- - if (words.before == 1) then - buf=buf .. space:rep(2) - buf= buf .. drawLEDs(data,3,true) -- VOR - else - buf= buf .. space:rep(5) - end if (words.after == 1) then - buf= buf .. drawLEDs(data,4,true) -- NACH - buf= buf .. space:rep(2) -- TG + line= line .. space:rep(2) -- TG + line= drawLEDs(data,4) -- NACH else - buf= buf .. space:rep(6) + line= space:rep(6) + end + if (words.before == 1) then + line= line .. drawLEDs(data,3) -- VOR + line= line .. space:rep(2) + else + line= line .. space:rep(5) + end + for i = 0,10 do + buf = buf .. line:sub((11-i)*3-2,(11-i)*3) end ------------------------------------------------ if (words.half == 1) then - buf= buf .. drawLEDs(data,4) -- HALB - buf= buf .. space:rep(1) -- X + line= drawLEDs(data,4) -- HALB + line= line .. space:rep(1) -- X else - buf= buf .. space:rep(5) + line= space:rep(5) end if (words.twelve == 1) then - buf= buf .. drawLEDs(data,5) -- ZWOELF - buf= buf .. space:rep(1) -- P + line= line .. drawLEDs(data,5) -- ZWOELF + line= line .. space:rep(1) -- P else - buf= buf .. space:rep(6) + line= line .. space:rep(6) end + buf=buf .. line ------------even row (so inverted) --------------------- if (words.seven == 1) then - buf= buf .. drawLEDs(data,6,true) -- SIEBEN - buf= buf .. space:rep(5) + line= space:rep(5) + line= line .. drawLEDs(data,6) -- SIEBEN elseif (words.oneLong == 1) then - buf= buf .. space:rep(5) - buf= buf .. drawLEDs(data,4,true) -- EINS - buf= buf .. space:rep(2) + line= space:rep(2) + line= line .. drawLEDs(data,4) -- EINS + line= line .. space:rep(5) elseif (words.one == 1) then - buf= buf .. space:rep(6) - buf= buf .. drawLEDs(data,3,true) -- EIN - buf= buf .. space:rep(2) + line= space:rep(2) + line= line .. drawLEDs(data,3) -- EIN + line= line .. space:rep(6) elseif (words.two == 1) then - buf= buf .. space:rep(7) - buf= buf .. drawLEDs(data,4,true) -- ZWEI + line= drawLEDs(data,4) -- ZWEI + line= line .. space:rep(7) else - buf= buf .. space:rep(11) + line= space:rep(11) + end + + for i = 0,10 do + buf = buf .. line:sub((11-i)*3-2,(11-i)*3) end ------------------------------------------------ if (words.three == 1) then - buf= buf .. space:rep(1) - buf= buf .. drawLEDs(data,4) -- DREI - buf= buf .. space:rep(6) - elseif (words.five == 1) then - buf= buf .. space:rep(7) - buf= buf .. drawLEDs(data,4) -- FUENF + line= space:rep(1) + line= line .. drawLEDs(data,4) -- DREI + line= line .. space:rep(6) + elseif (words.five == 1) then + line= space:rep(7) + line= line .. drawLEDs(data,4) -- FUENF else - buf= buf .. space:rep(11) + line= space:rep(11) end + buf = buf .. line ------------even row (so inverted) --------------------- if (words.four == 1) then - buf= buf .. drawLEDs(data,4,true) -- VIER - buf= buf .. space:rep(7) + line= space:rep(7) + line= line .. drawLEDs(data,4) -- VIER elseif (words.nine == 1) then - buf= buf .. space:rep(4) - buf= buf .. drawLEDs(data,4,true) -- NEUN - buf= buf .. space:rep(3) + line= space:rep(3) + line= line .. drawLEDs(data,4) -- NEUN + line= line .. space:rep(4) elseif (words.eleven == 1) then - buf= buf .. space:rep(8) - buf= buf .. drawLEDs(data,3,true) -- ELEVEN + line= drawLEDs(data,3) -- ELEVEN + line= line .. space:rep(8) else - buf= buf .. space:rep(11) + line= space:rep(11) + end + + for i = 0,10 do + buf = buf .. line:sub((11-i)*3-2,(11-i)*3) end ------------------------------------------------ if (words.eight == 1) then - buf= buf .. space:rep(1) - buf= buf .. drawLEDs(data,4) -- ACHT - buf= buf .. space:rep(6) + line= space:rep(1) + line= line .. drawLEDs(data,4) -- ACHT + line= line .. space:rep(6) elseif (words.ten == 1) then - buf= buf .. space:rep(5) - buf= buf .. drawLEDs(data,4) -- ZEHN - buf= buf .. space:rep(2) + line= space:rep(5) + line= line .. drawLEDs(data,4) -- ZEHN + line= line .. space:rep(2) else - buf= buf .. space:rep(11) + line= space:rep(11) end + buf = buf .. line ------------even row (so inverted) --------------------- - if (words.clock == 1) then - buf= buf .. drawLEDs(data,3,true) -- UHR - else - buf= buf .. space:rep(3) - end if (words.six == 1) then - buf= buf .. space:rep(2) - buf= buf .. drawLEDs(data,5,true) -- SECHS - buf= buf .. space:rep(1) + line= space:rep(1) + line= line .. drawLEDs(data,5) -- SECHS + line= line .. space:rep(2) else - buf= buf .. space:rep(8) + line= space:rep(8) end - + if (words.clock == 1) then + line= line .. drawLEDs(data,3) -- UHR + else + line= line .. space:rep(3) + end + + for i = 0,10 do + buf = buf .. line:sub((11-i)*3-2,(11-i)*3) + end +------ Minutes ----------- if (words.min1 == 1) then buf= buf .. colorFg else From a81cf8f31da6a56851e1675008cd6623a912f7b3 Mon Sep 17 00:00:00 2001 From: ollo Date: Fri, 10 May 2019 23:42:20 +0200 Subject: [PATCH 089/151] new algorithom works --- displayword.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/displayword.lua b/displayword.lua index eedf0e9..d03cd0d 100644 --- a/displayword.lua +++ b/displayword.lua @@ -1,7 +1,7 @@ -- Module filling a buffer, sent to the LEDs local M do -local updateColor = function (data, inverseRow) +local updateColor = function (data) --FIXME magic missing to start on the left side return data.colorFg end @@ -13,9 +13,9 @@ local drawLEDs = function(data, numberNewChars) local tmpBuf=nil for i=1,numberNewChars do if (tmpBuf == nil) then - tmpBuf = updateColor(data, inverseRow) + tmpBuf = updateColor(data) else - tmpBuf=tmpBuf .. updateColor(data, inverseRow) + tmpBuf=tmpBuf .. updateColor(data) end data.drawnCharacters=data.drawnCharacters+1 end @@ -134,8 +134,8 @@ if (words.fiveMin== 1) then buf = buf .. line --line 4-------- even row (so inverted) ------------- if (words.after == 1) then - line= line .. space:rep(2) -- TG - line= drawLEDs(data,4) -- NACH + line= space:rep(2) -- TG + line= line .. drawLEDs(data,4) -- NACH else line= space:rep(6) end From e68ab9f715846a5c38e361ffb7733a9aef8ba847 Mon Sep 17 00:00:00 2001 From: ollo Date: Sat, 11 May 2019 12:09:44 +0200 Subject: [PATCH 090/151] Display amount of used characers --- displayword.lua | 4 ---- 1 file changed, 4 deletions(-) diff --git a/displayword.lua b/displayword.lua index d03cd0d..2ec301b 100644 --- a/displayword.lua +++ b/displayword.lua @@ -40,8 +40,6 @@ local data={} -- Module displaying of the words local generateLEDs = function(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4) -- Set the local variables needed for the colored progress bar - data={} - if (words == nil) then return nil end @@ -73,9 +71,7 @@ local generateLEDs = function(words, colorForground, colorMin1, colorMin2, color data.colorMin3=colorMin3 data.colorMin4=colorMin4 end - data.words=words data.drawnCharacters=0 - data.drawnWords=0 local charsPerLine=11 -- Space / background has no color by default local space=string.char(0,0,0) From 26b16a1e3f35138415e6832f67050469316badd8 Mon Sep 17 00:00:00 2001 From: ollo Date: Sat, 11 May 2019 12:16:16 +0200 Subject: [PATCH 091/151] Fixed minute bug --- displayword.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/displayword.lua b/displayword.lua index 2ec301b..f1436f3 100644 --- a/displayword.lua +++ b/displayword.lua @@ -44,7 +44,7 @@ local generateLEDs = function(words, colorForground, colorMin1, colorMin2, color return nil end - local minutes=1 + local minutes=0 if (words.min1 == 1) then minutes = minutes + 1 elseif (words.min2 == 1) then From a7f566f7061d061fd75db5b945dc34a1babda991 Mon Sep 17 00:00:00 2001 From: ollo Date: Sat, 11 May 2019 12:28:23 +0200 Subject: [PATCH 092/151] Refactored swapping of line 4,5 and 6 --- displayword.lua | 33 ++++++++++++++++++++++++++------- main.lua | 30 +++++++++++++++--------------- 2 files changed, 41 insertions(+), 22 deletions(-) diff --git a/displayword.lua b/displayword.lua index f1436f3..b5f02f9 100644 --- a/displayword.lua +++ b/displayword.lua @@ -38,11 +38,17 @@ end local data={} -- Module displaying of the words -local generateLEDs = function(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4) +local generateLEDs = function(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4, invertRows) -- Set the local variables needed for the colored progress bar if (words == nil) then return nil end + if (invertRows == nil) then + invertRows=false + end + + -- DEBUG code, to determine, if the color argmuments are necessary or not + print(tostring(color) .. " " .. tostring(color1)) local minutes=0 if (words.min1 == 1) then @@ -141,8 +147,12 @@ if (words.fiveMin== 1) then else line= line .. space:rep(5) end - for i = 0,10 do - buf = buf .. line:sub((11-i)*3-2,(11-i)*3) + if (invertRows == true) then + buf = buf .. line + else + for i = 0,10 do + buf = buf .. line:sub((11-i)*3-2,(11-i)*3) + end end ------------------------------------------------ if (words.half == 1) then @@ -157,7 +167,13 @@ if (words.fiveMin== 1) then else line= line .. space:rep(6) end - buf=buf .. line + if (invertRows == true) then + for i = 0,10 do + buf = buf .. line:sub((11-i)*3-2,(11-i)*3) + end + else + buf=buf .. line + end ------------even row (so inverted) --------------------- if (words.seven == 1) then line= space:rep(5) @@ -176,9 +192,12 @@ if (words.fiveMin== 1) then else line= space:rep(11) end - - for i = 0,10 do - buf = buf .. line:sub((11-i)*3-2,(11-i)*3) + if (invertRows == true) then + buf = buf .. line + else + for i = 0,10 do + buf = buf .. line:sub((11-i)*3-2,(11-i)*3) + end end ------------------------------------------------ if (words.three == 1) then diff --git a/main.lua b/main.lua index 29fc813..ca40d99 100644 --- a/main.lua +++ b/main.lua @@ -58,26 +58,26 @@ function displayTime() end dofile("displayword.lc") if (displayword ~= nil) then - ledBuf = displayword.generateLEDs(words, color, color1, color2, color3, color4) + --if lines 4 to 6 are inverted due to hardware-fuckup, unfuck it here + local invertRows=false + if ((inv46 ~= nil) and (inv46 == "on")) then + invertRows=true + end + ledBuf = displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows) print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " char: " .. tostring(displayword.data.drawnCharacters)) end displayword = nil if (ledBuf ~= nil) then - --if lines 4 to 6 are inverted due to hardware-fuckup, unfuck it here - if ((inv46 ~= nil) and (inv46 == "on")) then - tempstring = ledBuf:sub(1,99) -- first 33 leds - rowend = {44,55,66} - for _, startled in ipairs(rowend) do - for i = 0,10 do - tempstring = tempstring .. ledBuf:sub((startled-i)*3-2,(startled-i)*3) - end - end - tempstring = tempstring .. ledBuf:sub((67*3)-2,ledBuf:len()) - ws2812.write(tempstring) - tempstring=nil + ws2812.write(ledBuf) else - ws2812.write(ledBuf) - ledBuf=nil + if ((colorBg ~= nil) and (color ~= nil)) then + ws2812.write(colorBg:rep(107) .. color:rep(3)) + else + local space=string.char(0,0,0) + -- set FG to fix value: + colorFg = string.char(255,0,0) + ws2812.write(space:rep(107) .. colorFg:rep(3)) + end end end -- Used for debugging From 70602f1095e19aa04edb51beefa3de48ec87bf85 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 15 May 2019 20:15:43 +0200 Subject: [PATCH 093/151] Fixed syntax --- main.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/main.lua b/main.lua index ca40d99..002bfa0 100644 --- a/main.lua +++ b/main.lua @@ -78,7 +78,6 @@ function displayTime() colorFg = string.char(255,0,0) ws2812.write(space:rep(107) .. colorFg:rep(3)) end - end end -- Used for debugging if (clockdebug ~= nil) then From 401c4fd293fc1d0270dc93f1808f21528cf95918 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 15 May 2019 20:17:48 +0200 Subject: [PATCH 094/151] Removed debugging for dofile from the simulation --- simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java b/simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java index c9e6250..0d3d741 100644 --- a/simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java +++ b/simulation/src/de/c3ma/ollo/mockup/DoFileFunction.java @@ -26,8 +26,6 @@ public class DoFileFunction extends OneArgFunction { public LuaValue call(LuaValue luaFilename) { String filename = luaFilename.checkjstring(); - System.out.println("[Nodemcu] dofile " + filename); - File f = new File(workingDir.getAbsolutePath() + File.separator + filename); if (f.exists()) { From e7d0ce1c43d6443754fd8c1e4a103a643a1da24d Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 15 May 2019 20:40:41 +0200 Subject: [PATCH 095/151] Refactored color --- displayword.lua | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/displayword.lua b/displayword.lua index b5f02f9..0a9ed63 100644 --- a/displayword.lua +++ b/displayword.lua @@ -60,18 +60,25 @@ local generateLEDs = function(words, colorForground, colorMin1, colorMin2, color elseif (words.min4 == 1) then minutes = minutes + 4 end + -- always set a foreground value + local colorFg = string.char(255,255,255) + + if (colorForground ~= nil) then + colorFg = colorForground + end + if ( (adc ~= nil) and (words.briPercent ~= nil) ) then local per = math.floor(100*adc.read(0)/1000) words.briPercent = tonumber( ((words.briPercent * 4) + per) / 5) print("Minutes : " .. tostring(minutes) .. " bright: " .. tostring(words.briPercent) .. "% current: " .. tostring(per) .. "%") - data.colorFg = string.char(string.byte(colorForground,1) * briPercent / 100, string.byte(colorForground,2) * briPercent / 100, string.byte(colorForground,3) * briPercent / 100) + data.colorFg = string.char(string.byte(colorFg,1) * briPercent / 100, string.byte(colorFg,2) * briPercent / 100, string.byte(colorFg,3) * briPercent / 100) data.colorMin1 = string.char(string.byte(colorMin1,1) * briPercent / 100, string.byte(colorMin1,2) * briPercent / 100, string.byte(colorMin1,3) * briPercent / 100) data.colorMin2 = string.char(string.byte(colorMin2,1) * briPercent / 100, string.byte(colorMin2,2) * briPercent / 100, string.byte(colorMin2,3) * briPercent / 100) data.colorMin3 = string.char(string.byte(colorMin3,1) * briPercent / 100, string.byte(colorMin3,2) * briPercent / 100, string.byte(colorMin3,3) * briPercent / 100) data.colorMin4 = string.char(string.byte(colorMin4,1) * briPercent / 100, string.byte(colorMin4,2) * briPercent / 100, string.byte(colorMin4,3) * briPercent / 100) else -- devide by five (Minute 0, Minute 1 to Minute 4 takes the last chars) - data.colorFg=colorForground + data.colorFg=colorFg data.colorMin1=colorMin1 data.colorMin2=colorMin2 data.colorMin3=colorMin3 @@ -81,11 +88,9 @@ local generateLEDs = function(words, colorForground, colorMin1, colorMin2, color local charsPerLine=11 -- Space / background has no color by default local space=string.char(0,0,0) - -- set FG to fix value: - colorFg = string.char(255,255,255) -- Set the foreground color as the default color - local buf=colorFg + local buf=data.colorFg local line=space -- line 1---------------------------------------------- if (words.it==1) then From 7bc6ec1fbe897f78370b860f6e6341621372db35 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 15 May 2019 20:59:31 +0200 Subject: [PATCH 096/151] Added parameter with the amount of characters --- displayword.lua | 12 +++++++----- main.lua | 3 ++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/displayword.lua b/displayword.lua index 0a9ed63..714b74c 100644 --- a/displayword.lua +++ b/displayword.lua @@ -38,7 +38,7 @@ end local data={} -- Module displaying of the words -local generateLEDs = function(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4, invertRows) +local generateLEDs = function(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4, invertRows, amountOfChars) -- Set the local variables needed for the colored progress bar if (words == nil) then return nil @@ -47,9 +47,6 @@ local generateLEDs = function(words, colorForground, colorMin1, colorMin2, color invertRows=false end - -- DEBUG code, to determine, if the color argmuments are necessary or not - print(tostring(color) .. " " .. tostring(color1)) - local minutes=0 if (words.min1 == 1) then minutes = minutes + 1 @@ -62,11 +59,16 @@ local generateLEDs = function(words, colorForground, colorMin1, colorMin2, color end -- always set a foreground value local colorFg = string.char(255,255,255) - if (colorForground ~= nil) then colorFg = colorForground end + if (amountOfChars ~= nil) then + data.amountOfChars = amountOfChars + else + data.amountOfChars = 0 + end + if ( (adc ~= nil) and (words.briPercent ~= nil) ) then local per = math.floor(100*adc.read(0)/1000) words.briPercent = tonumber( ((words.briPercent * 4) + per) / 5) diff --git a/main.lua b/main.lua index 002bfa0..b230fb8 100644 --- a/main.lua +++ b/main.lua @@ -63,7 +63,8 @@ function displayTime() if ((inv46 ~= nil) and (inv46 == "on")) then invertRows=true end - ledBuf = displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows) + displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows) + ledBuf = displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows, displayword.data.drawnCharacters) print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " char: " .. tostring(displayword.data.drawnCharacters)) end displayword = nil From 91c0a1521217c0d9f74bb4670f3c296b9b1f2824 Mon Sep 17 00:00:00 2001 From: ollo Date: Wed, 22 May 2019 21:25:33 +0200 Subject: [PATCH 097/151] Display one color after the other --- displayword.lua | 37 +++++++++++++++++++++++++++++-------- main.lua | 7 +++++-- simulation/config.lua | 15 +++++++-------- 3 files changed, 41 insertions(+), 18 deletions(-) diff --git a/displayword.lua b/displayword.lua index 714b74c..93c8eaf 100644 --- a/displayword.lua +++ b/displayword.lua @@ -2,8 +2,30 @@ local M do local updateColor = function (data) - --FIXME magic missing to start on the left side - return data.colorFg + if (data.amountOfChars > 0) then + local div = tonumber(data.drawnCharacters/data.amountOfChars) + if (div < 1) then + print(tostring(data.drawnCharacters) .. " blocks: " .. tostring(data.amountOfChars) .. " FG " .. tostring(string.byte(data.colorFg,1)) .. "x" .. tostring(string.byte(data.colorFg,2)) .. "x" .. tostring(string.byte(data.colorFg,3)) ) + return data.colorFg + elseif (div < 2) then + print(tostring(data.drawnCharacters) .. " blocks: " .. tostring(data.amountOfChars) .. " C1") + return data.colorMin1 + elseif (div < 3) then + print(tostring(data.drawnCharacters) .. " blocks: " .. tostring(data.amountOfChars) .. " C2") + return data.colorMin2 + elseif (div < 4) then + print(tostring(data.drawnCharacters) .. " blocks: " .. tostring(data.amountOfChars) .. " C3") + return data.colorMin3 + elseif (div < 5) then + print(tostring(data.drawnCharacters) .. " blocks: " .. tostring(data.amountOfChars) .. " C4") + return data.colorMin4 + else + print(tostring(data.drawnCharacters) .. " blocks: " .. tostring(data.amountOfChars) .. " ELSE") + return data.colorFg + end + else + return data.colorFg + end end local drawLEDs = function(data, numberNewChars) @@ -38,7 +60,7 @@ end local data={} -- Module displaying of the words -local generateLEDs = function(words, colorForground, colorMin1, colorMin2, colorMin3, colorMin4, invertRows, amountOfChars) +local generateLEDs = function(words, colorFg, colorMin1, colorMin2, colorMin3, colorMin4, invertRows, amountOfChars) -- Set the local variables needed for the colored progress bar if (words == nil) then return nil @@ -47,7 +69,7 @@ local generateLEDs = function(words, colorForground, colorMin1, colorMin2, color invertRows=false end - local minutes=0 + local minutes=1 if (words.min1 == 1) then minutes = minutes + 1 elseif (words.min2 == 1) then @@ -58,13 +80,12 @@ local generateLEDs = function(words, colorForground, colorMin1, colorMin2, color minutes = minutes + 4 end -- always set a foreground value - local colorFg = string.char(255,255,255) - if (colorForground ~= nil) then - colorFg = colorForground + if (colorFg == nil) then + colorFg = string.char(255,255,255) end if (amountOfChars ~= nil) then - data.amountOfChars = amountOfChars + data.amountOfChars = amountOfChars/minutes else data.amountOfChars = 0 end diff --git a/main.lua b/main.lua index b230fb8..928bd81 100644 --- a/main.lua +++ b/main.lua @@ -64,8 +64,10 @@ function displayTime() invertRows=true end displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows) - ledBuf = displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows, displayword.data.drawnCharacters) - print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " char: " .. tostring(displayword.data.drawnCharacters)) + if (displayword.data.drawnCharacters ~= nil) then + ledBuf = displayword.generateLEDs(words, color, color1, color2, color3, color4, invertRows, displayword.data.drawnCharacters) + print("Local time : " .. time.year .. "-" .. time.month .. "-" .. time.day .. " " .. time.hour .. ":" .. time.minute .. ":" .. time.second .. " char: " .. tostring(displayword.data.drawnCharacters)) + end end displayword = nil if (ledBuf ~= nil) then @@ -101,6 +103,7 @@ function normalOperation() -- Color is defined as GREEN, RED, BLUE color=string.char(0,0,250) end + print("Fg Color: " .. tostring(string.byte(color,1)) .. "x" .. tostring(string.byte(color,2)) .. "x" .. tostring(string.byte(color,3)) ) connect_counter=0 -- Wait to be connect to the WiFi access point. diff --git a/simulation/config.lua b/simulation/config.lua index 7c38a41..c6b8f5e 100644 --- a/simulation/config.lua +++ b/simulation/config.lua @@ -1,13 +1,12 @@ -green=0 -green2=128 +green2=200 red=128 -blue=0 +blue=200 -color=string.char(0, 0, 128) -color1=string.char(128, 0, 0) -color2=string.char(tonumber(green2*0.8), 0, 0) -color3=string.char(tonumber(green2*0.4), 0, 0) -color4=string.char(tonumber(green2*0.2), 0, 0) +color=string.char(0, 0, blue) +color1=string.char(red, 0, 0) +color2=string.char(tonumber(red*0.8), 0, 0) +color3=string.char(0, tonumber(green2*0.4), 0) +color4=string.char(0,0 ,tonumber(blue*0.2)) colorBg=string.char(0,0,0) -- black is the default background color sntpserverhostname="ptbtime1.ptb.de" From aed713a1ff4d0b152a3d25d2951673d1610b40b4 Mon Sep 17 00:00:00 2001 From: Felix Rublack Date: Fri, 26 Jul 2019 21:33:48 +0200 Subject: [PATCH 098/151] clarification of initial flash process --- Readme.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Readme.md b/Readme.md index 36f3cf0..813d863 100644 --- a/Readme.md +++ b/Readme.md @@ -11,11 +11,10 @@ cd os/ ./flash.sh ttyUSB0 -Reboot the ESP, with a serial terminal, -format the filesystem with the following command and reboot it: +Connect to the ESP via a terminal emulator like screen using a baud rate of 115200. Then format the filesystem and reboot the ESP with the following commands:
 file.format()
-node.reboot()
+node.restart()
 
Then disconnect the serial terminal and copy the required files to the microcontroller: From c9b248531a27d23c9d8b2bed0cd1404c76812ebd Mon Sep 17 00:00:00 2001 From: Ollo Date: Wed, 12 Feb 2020 20:14:01 +0100 Subject: [PATCH 099/151] Reduced html stuff --- index.html | 22 ---------------------- webpage.html | 9 --------- 2 files changed, 31 deletions(-) delete mode 100644 index.html diff --git a/index.html b/index.html deleted file mode 100644 index a938ea3..0000000 --- a/index.html +++ /dev/null @@ -1,22 +0,0 @@ - -WordClock Setup Page - -

Welcome to the WordClock

-
-
WIFI-SSIDSSID of the wireless network
WIFI-PasswordPassword of the wireless network
SNTP ServerServer to sync the time with. Only one ntp server is allowed.
SNTP ServerServer to sync the time with. Only one ntp server is allowed.
Offset to UTC timeDefine the offset to UTC time in hours. For example +1 hour for Germany
Foreground ColorLED Color for all minutes, divisible by five
Background ColorBackground LED Color
2. Minute ColorSecond minute after
3. Minute ColorThird minute after
4. Minute ColorFourth minute after
Three quaterDreiviertel Joa/nei
Invert lines 4-6invert
Adjust brightnesAdjust brightness of LEDs
- - - - - -" -" -" -" - - - - -
WIFI-SSID
WIFI-Password
SNTP Serverntp server to sync the time
Offset to UTC timeDefine the offset to UTC time in hours. E.g +1
Color
1. Minute Color
2. Minute Color
3. Minute Color
4. Minute Color
Three quaterDreiviertel Joa/nei
ColorModeIf checked, words are dark, rest is colored
-$ADDITIONAL_LINE - diff --git a/webpage.html b/webpage.html index 25d1c80..7266fa7 100644 --- a/webpage.html +++ b/webpage.html @@ -48,15 +48,6 @@ Please note that all settings are mandatory

SNTP ServerServer to sync the time with. Only one ntp server is allowed. Offset to UTC timeDefine the offset to UTC time in hours. For example +1 hour for Germany Foreground ColorLED Color for all minutes, divisible by five -Background ColorBackground LED Color -1. Minute ColorFirst minute after -2. Minute ColorSecond minute after -3. Minute ColorThird minute after -4. Minute ColorFourth minute after -Three quaterDreiviertel Joa/nei -Invert lines 4-6invert -Adjust brightnesAdjust brightness of LEDs -

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�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 diff --git a/os/nodemcu2.bin b/os/nodemcu2.bin new file mode 100644 index 0000000000000000000000000000000000000000..1644bdf71aa9352b5a19930393d26500cd36044e GIT binary patch literal 458752 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