diff --git a/BarracksSpr.inc b/BarracksSpr.i
similarity index 100%
rename from BarracksSpr.inc
rename to BarracksSpr.i
diff --git a/BitmapEncoder-master/.gitattributes b/BitmapEncoder-master/.gitattributes
new file mode 100644
index 0000000..32fdc60
--- /dev/null
+++ b/BitmapEncoder-master/.gitattributes
@@ -0,0 +1,23 @@
+# Auto detect text files and perform LF normalization
+* text=auto
+*.jar binary
+
+# Custom for Visual Studio
+*.cs diff=csharp
+*.sln merge=union
+*.csproj merge=union
+*.vbproj merge=union
+*.fsproj merge=union
+*.dbproj merge=union
+
+# Standard to msysgit
+*.doc diff=astextplain
+*.DOC diff=astextplain
+*.docx diff=astextplain
+*.DOCX diff=astextplain
+*.dot diff=astextplain
+*.DOT diff=astextplain
+*.pdf diff=astextplain
+*.PDF diff=astextplain
+*.rtf diff=astextplain
+*.RTF diff=astextplain
diff --git a/BitmapEncoder-master/.gitignore b/BitmapEncoder-master/.gitignore
new file mode 100644
index 0000000..f05169a
--- /dev/null
+++ b/BitmapEncoder-master/.gitignore
@@ -0,0 +1,3 @@
+/build/
+/dist/
+/settings.dat
\ No newline at end of file
diff --git a/BitmapEncoder-master/BitmapEncoder.jar b/BitmapEncoder-master/BitmapEncoder.jar
new file mode 100755
index 0000000..91a4514
Binary files /dev/null and b/BitmapEncoder-master/BitmapEncoder.jar differ
diff --git a/BitmapEncoder-master/README.md b/BitmapEncoder-master/README.md
new file mode 100644
index 0000000..1801a22
--- /dev/null
+++ b/BitmapEncoder-master/README.md
@@ -0,0 +1,10 @@
+BitmapEncoder
+=============
+
+**Encode images to display them on your Gamebuino**
+
+The encoder is programmed using Java 8, so you have to install the Java 8 JRE if you don't already have it.
+
+You can download it here: [Java 8 Download](http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html)
+
+Once Java is installed, simply double click on BitmapEncoder.jar to run it.
diff --git a/BitmapEncoder-master/changelog.md b/BitmapEncoder-master/changelog.md
new file mode 100644
index 0000000..5aa424a
--- /dev/null
+++ b/BitmapEncoder-master/changelog.md
@@ -0,0 +1,13 @@
+#2014-08-12
+* larger output text area
+* upper case output hex value
+* bitmap takes the name of the selected file
+
+#2014-08-19
+* added radio buttons to choose single or multi-file mode
+* added method for handling multiple image files in a single operation
+* various tweaks to the interface to accommodate new layout and modes
+* minor code cleanup/standardization (access modifiers, getters/setters, etc.)
+
+#2014-08-26
+* fixed issue with saved directories for FileChooser that no longer exist
\ No newline at end of file
diff --git a/BitmapEncoder-master/nbproject/build-impl.xml b/BitmapEncoder-master/nbproject/build-impl.xml
new file mode 100644
index 0000000..b9ba6da
--- /dev/null
+++ b/BitmapEncoder-master/nbproject/build-impl.xml
@@ -0,0 +1,1413 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set src.dir
+ Must set test.src.dir
+ Must set build.dir
+ Must set dist.dir
+ Must set build.classes.dir
+ Must set dist.javadoc.dir
+ Must set build.test.classes.dir
+ Must set build.test.results.dir
+ Must set build.classes.excludes
+ Must set dist.jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No tests executed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set JVM to use for profiling in profiler.info.jvm
+ Must set profiler agent JVM arguments in profiler.info.jvmargs.agent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ To run this application from the command line without Ant, try:
+
+ java -jar "${dist.jar.resolved}"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set debug.class
+
+
+
+
+ Must select one file in the IDE or set debug.class
+
+
+
+
+ Must set fix.includes
+
+
+
+
+
+
+
+
+
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set profile.class
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+
+
+
+
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+
+ Must select some files in the IDE or set test.includes
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Some tests failed; see details above.
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set test.includes
+
+
+
+ Some tests failed; see details above.
+
+
+
+ Must select some files in the IDE or set test.class
+ Must select some method in the IDE or set test.method
+
+
+
+ Some tests failed; see details above.
+
+
+
+
+ Must select one file in the IDE or set test.class
+
+
+
+ Must select one file in the IDE or set test.class
+ Must select some method in the IDE or set test.method
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BitmapEncoder-master/nbproject/genfiles.properties b/BitmapEncoder-master/nbproject/genfiles.properties
new file mode 100644
index 0000000..1694cfd
--- /dev/null
+++ b/BitmapEncoder-master/nbproject/genfiles.properties
@@ -0,0 +1,8 @@
+build.xml.data.CRC32=64fa75ef
+build.xml.script.CRC32=478ad818
+build.xml.stylesheet.CRC32=8064a381@1.74.2.48
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=64fa75ef
+nbproject/build-impl.xml.script.CRC32=9209127f
+nbproject/build-impl.xml.stylesheet.CRC32=876e7a8f@1.74.2.48
diff --git a/BitmapEncoder-master/nbproject/private/private.properties b/BitmapEncoder-master/nbproject/private/private.properties
new file mode 100644
index 0000000..eda7286
--- /dev/null
+++ b/BitmapEncoder-master/nbproject/private/private.properties
@@ -0,0 +1,2 @@
+compile.on.save=true
+user.properties.file=D:\\Dropbox\\Program Files\\netbean_user\\build.properties
diff --git a/BitmapEncoder-master/nbproject/private/private.xml b/BitmapEncoder-master/nbproject/private/private.xml
new file mode 100644
index 0000000..52944c4
--- /dev/null
+++ b/BitmapEncoder-master/nbproject/private/private.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ file:/D:/Dropbox/Gamebuino/BitmapEncoder/src/bitmapencoder/BitmapFrame.java
+ file:/D:/Dropbox/Gamebuino/BitmapEncoder/src/bitmapencoder/BitmapEncoder.java
+
+
+
diff --git a/BitmapEncoder-master/nbproject/project.properties b/BitmapEncoder-master/nbproject/project.properties
new file mode 100644
index 0000000..fe31650
--- /dev/null
+++ b/BitmapEncoder-master/nbproject/project.properties
@@ -0,0 +1,73 @@
+annotation.processing.enabled=true
+annotation.processing.enabled.in.editor=false
+annotation.processing.processor.options=
+annotation.processing.processors.list=
+annotation.processing.run.all.processors=true
+annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+# Uncomment to specify the preferred debugger connection transport:
+#debug.transport=dt_socket
+debug.classpath=\
+ ${run.classpath}
+debug.test.classpath=\
+ ${run.test.classpath}
+# Files in build.classes.dir which should be excluded from distribution jar
+dist.archive.excludes=
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/BitmapEncoder.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+excludes=
+includes=**
+jar.compress=false
+javac.classpath=
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.processorpath=\
+ ${javac.classpath}
+javac.source=1.8
+javac.target=1.8
+javac.test.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+javac.test.processorpath=\
+ ${javac.test.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+main.class=bitmapencoder.BitmapFrame
+manifest.file=manifest.mf
+meta.inf.dir=${src.dir}/META-INF
+mkdist.disabled=false
+platform.active=default_platform
+run.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project.
+# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
+# To set system properties for unit tests define test-sys-prop.name=value:
+run.jvmargs=
+run.test.classpath=\
+ ${javac.test.classpath}:\
+ ${build.test.classes.dir}
+source.encoding=UTF-8
+src.dir=src
+test.src.dir=test
diff --git a/BitmapEncoder-master/nbproject/project.xml b/BitmapEncoder-master/nbproject/project.xml
new file mode 100644
index 0000000..6bfac51
--- /dev/null
+++ b/BitmapEncoder-master/nbproject/project.xml
@@ -0,0 +1,15 @@
+
+
+ org.netbeans.modules.java.j2seproject
+
+
+ BitmapEncoder
+
+
+
+
+
+
+
+
+
diff --git a/BitmapEncoder-master/src/bitmapencoder/BitmapEncoder.java b/BitmapEncoder-master/src/bitmapencoder/BitmapEncoder.java
new file mode 100644
index 0000000..3f9601d
--- /dev/null
+++ b/BitmapEncoder-master/src/bitmapencoder/BitmapEncoder.java
@@ -0,0 +1,224 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package bitmapencoder;
+
+import java.io.IOException;
+import javax.imageio.ImageIO;
+import java.io.File;
+import java.awt.image.*;
+
+/**
+ *
+ * @author Rodot
+ */
+public class BitmapEncoder {
+
+ private BufferedImage inputImage;
+ private BufferedImage outputImage;
+ private String bitmapName = "myBitmap";
+ private boolean hexFormatting = false;
+ private boolean wrapping = true;
+ private static File[] filesToConvert;
+ private static int imageCounter;
+ private static int fileCount;
+
+ protected void BitmapEncoder() {
+ }
+
+ protected void open(File file) {
+ try {
+ inputImage = ImageIO.read(file);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ if (inputImage != null) {
+ if ((inputImage.getWidth() > 200) || (inputImage.getHeight() > 200)) {
+ inputImage = null;
+ return;
+ }
+ outputImage = deepCopy(inputImage);
+ }
+ }
+
+ protected void threshold(int thres) {
+ if (inputImage == null) {
+ return;
+ }
+ for (int y = 0; y < inputImage.getHeight(); y++) {
+ for (int x = 0; x < inputImage.getWidth(); x++) {
+ int rgb = inputImage.getRGB(x, y);
+ int red = (rgb >> 16) & 0x000000FF;
+ int green = (rgb >> 8) & 0x000000FF;
+ int blue = (rgb) & 0x000000FF;
+ int value = red + green + blue;
+ if (value > thres) {
+ outputImage.setRGB(x, y, 0x00FFFFFF);
+ } else {
+ outputImage.setRGB(x, y, 0);
+ }
+ }
+ }
+ }
+
+ protected String generateOutput(int thres) {
+ if (inputImage == null) {
+ return "";
+ }
+ String output = "";
+ output = output.concat("const byte ");
+ output = output.concat(bitmapName);
+ output = output.concat("[] PROGMEM = {");
+ int width = ((inputImage.getWidth() - 1) / 8 + 1) * 8; //round to the closest larger multiple of 8
+ output = output.concat(width + "," + inputImage.getHeight() + ",");
+ if (wrapping) {
+ output = output.concat("\n");
+ }
+ for (int y = 0; y < inputImage.getHeight(); y++) {
+ for (int x = 0; x < inputImage.getWidth(); x += 8) {
+ if (hexFormatting) {
+ output = output.concat("0x");
+ } else {
+ output = output.concat("B");
+ }
+ int thisByte = 0;
+ for (int b = 0; b < 8; b++) {
+ int value = 0xFFFF;
+ if (x + b < inputImage.getWidth()) {
+ int rgb = inputImage.getRGB(x + b, y);
+ int red = (rgb >> 16) & 0x000000FF;
+ int green = (rgb >> 8) & 0x000000FF;
+ int blue = (rgb) & 0x000000FF;
+ value = red + green + blue;
+ }
+ if (hexFormatting) {
+ thisByte *= 2;
+ if (value < thres) {
+ thisByte++;
+ }
+ } else {//binary formattning
+ if (value < thres) {
+ output = output.concat("1");
+ } else {
+ output = output.concat("0");
+ }
+
+ }
+ }
+ if (hexFormatting) {
+ output = output.concat(Integer.toString(thisByte, 16).
+ toUpperCase());
+ }
+ output = output.concat(",");
+ }
+ if (wrapping) {
+ output = output.concat("\n");
+ }
+ }
+ output = output.concat("};");
+ return output;
+ }
+
+ protected static BufferedImage deepCopy(BufferedImage bi) {
+ ColorModel cm = bi.getColorModel();
+ boolean isAlphaPremultiplied = cm.isAlphaPremultiplied();
+ WritableRaster raster = bi.copyData(null);
+ return new BufferedImage(cm, raster, isAlphaPremultiplied, null);
+ }
+
+ protected static int countFiles(File[] list, boolean recursed) {
+
+ if (list == null) {
+ return 0;
+ }
+
+ if (!recursed) {
+ fileCount = 0;
+ }
+
+ for (File f : list) {
+ if (f.isDirectory()) {
+ countFiles(f.listFiles(), true);
+ } else {
+ if (isImage(f)) {
+ fileCount++;
+ }
+ }
+ }
+ return fileCount;
+ }
+
+ protected static boolean isImage(File f) {
+ boolean isImage = false;
+ if (f.getName().endsWith(".bmp") || f.getName().endsWith(".png")
+ || f.getName().endsWith(".jpeg")
+ || f.getName().endsWith(".jpg")) {
+ isImage = true;
+ }
+ return isImage;
+ }
+
+ protected static File[] processSelectedFiles(File[] list, boolean recursed) {
+ if (!recursed) {
+ filesToConvert = new File[countFiles(list, false)];
+ imageCounter = 0;
+ }
+ if (list == null) {
+ return null;
+ }
+
+ for (File f : list) {
+ if (f.isDirectory()) {
+ processSelectedFiles(f.listFiles(), true);
+ } else {
+ if (isImage(f)) {
+ filesToConvert[imageCounter] = f;
+ imageCounter++;
+ }
+ }
+ }
+ return filesToConvert;
+ }
+
+ protected BufferedImage getInputImage() {
+ return inputImage;
+ }
+
+ protected BufferedImage getOutputImage() {
+ return outputImage;
+ }
+
+ protected String getBitmapName() {
+ return bitmapName;
+ }
+
+ protected boolean isHexFormatting() {
+ return hexFormatting;
+ }
+
+ protected boolean isWrapping() {
+ return wrapping;
+ }
+
+ protected void setInputImage(BufferedImage inputImage) {
+ this.inputImage = inputImage;
+ }
+
+ protected void setOutputImage(BufferedImage outputImage) {
+ this.outputImage = outputImage;
+ }
+
+ protected void setBitmapName(String bitmapName) {
+ this.bitmapName = bitmapName;
+ }
+
+ protected void setHexFormatting(boolean hexFormatting) {
+ this.hexFormatting = hexFormatting;
+ }
+
+ protected void setWrapping(boolean wrapping) {
+ this.wrapping = wrapping;
+ }
+}
diff --git a/BitmapEncoder-master/src/bitmapencoder/BitmapFrame.form b/BitmapEncoder-master/src/bitmapencoder/BitmapFrame.form
new file mode 100644
index 0000000..cbf18c6
--- /dev/null
+++ b/BitmapEncoder-master/src/bitmapencoder/BitmapFrame.form
@@ -0,0 +1,530 @@
+
+
+
diff --git a/BitmapEncoder-master/src/bitmapencoder/BitmapFrame.java b/BitmapEncoder-master/src/bitmapencoder/BitmapFrame.java
new file mode 100644
index 0000000..3bb5af3
--- /dev/null
+++ b/BitmapEncoder-master/src/bitmapencoder/BitmapFrame.java
@@ -0,0 +1,799 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package bitmapencoder;
+
+import static bitmapencoder.BitmapEncoder.deepCopy;
+import static bitmapencoder.BitmapEncoder.isImage;
+import static bitmapencoder.BitmapEncoder.processSelectedFiles;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.imageio.ImageIO;
+import javax.swing.*;
+
+/**
+ *
+ * @author Rodot
+ */
+public class BitmapFrame extends javax.swing.JFrame {
+
+ BitmapEncoder encoder = new BitmapEncoder();
+ final JFileChooser fileChooser = new JFileChooser();
+ final JFileChooser multiFileChooser = new JFileChooser();
+ private File[] filesSelected = null;
+ private String lastSingleDirectory = System.getProperty("user.home");
+ private String lastMultiDirectory = System.getProperty("user.home");
+ private byte multiFormattingSetting = 1;
+ private byte singleFormattingSetting = 0;
+ private boolean multiWrapSetting = false;
+ private boolean singleWrapSetting = true;
+ private boolean allowDirectorySelection = false;
+
+ /**
+ * Creates new form BitmapFrame
+ */
+ private BitmapFrame() {
+ initComponents();
+ try {
+ loadSettingsFromDisk();
+ } catch (IOException ex) {
+ Logger.getLogger(BitmapFrame.class.getName()).
+ log(Level.SEVERE, null, ex);
+ }
+ formattingBox.setSelectedIndex((int) singleFormattingSetting);
+ encoder.setHexFormatting(formattingBox.getSelectedIndex() == 1);
+ wrapCheckbox.setSelected(singleWrapSetting);
+ encoder.setWrapping(wrapCheckbox.isSelected());
+ allowDirectorySelectionCheckBox.setSelected(allowDirectorySelection);
+ File singleDirectory = new File(lastSingleDirectory);
+ if (!singleDirectory.exists()) {
+ lastSingleDirectory = System.getProperty("user.home");
+ }
+ fileChooser.setCurrentDirectory(new File(lastSingleDirectory));
+ File multiDirectory = new File(lastMultiDirectory);
+ if (!multiDirectory.exists()) {
+ lastMultiDirectory = System.getProperty("user.home");
+ }
+ multiFileChooser.setCurrentDirectory(new File(lastMultiDirectory));
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ buttonGroup1 = new javax.swing.ButtonGroup();
+ jPanel1 = new javax.swing.JPanel();
+ openButton = new javax.swing.JButton();
+ message = new javax.swing.JLabel();
+ originalPanel = new javax.swing.JPanel();
+ original = new javax.swing.JLabel();
+ previewPanel = new javax.swing.JPanel();
+ preview = new javax.swing.JLabel();
+ thresholdSlider = new javax.swing.JSlider();
+ FileSelectionPanel = new javax.swing.JPanel();
+ singleFileModeRadioButton = new javax.swing.JRadioButton();
+ multiFileModeRadioButton = new javax.swing.JRadioButton();
+ allowDirectorySelectionCheckBox = new javax.swing.JCheckBox();
+ jPanel2 = new javax.swing.JPanel();
+ outputScrollPane = new javax.swing.JScrollPane();
+ outputTextArea = new javax.swing.JTextArea();
+ jPanel3 = new javax.swing.JPanel();
+ scaleSlider = new javax.swing.JSlider();
+ scaleLabel = new javax.swing.JLabel();
+ nameTextField = new javax.swing.JTextField();
+ nameLabel = new javax.swing.JLabel();
+ formattingBox = new javax.swing.JComboBox();
+ formattingLabel = new javax.swing.JLabel();
+ wrapCheckbox = new javax.swing.JCheckBox();
+ wrapLabel = new javax.swing.JLabel();
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+ setTitle("Bitmap Encoder - Gamebuino");
+ setMinimumSize(new java.awt.Dimension(600, 502));
+ setName("bitmapFrame"); // NOI18N
+ setPreferredSize(new java.awt.Dimension(800, 600));
+ addWindowListener(new java.awt.event.WindowAdapter() {
+ public void windowClosing(java.awt.event.WindowEvent evt) {
+ formWindowClosing(evt);
+ }
+ });
+
+ jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Input"));
+
+ openButton.setText("Open");
+ openButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ openButtonActionPerformed(evt);
+ }
+ });
+
+ message.setText("Please select a file to encode");
+
+ originalPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+ originalPanel.setMaximumSize(new java.awt.Dimension(400, 400));
+ originalPanel.setMinimumSize(new java.awt.Dimension(120, 120));
+ originalPanel.setPreferredSize(new java.awt.Dimension(120, 120));
+
+ original.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+ original.setText("original");
+
+ javax.swing.GroupLayout originalPanelLayout = new javax.swing.GroupLayout(originalPanel);
+ originalPanel.setLayout(originalPanelLayout);
+ originalPanelLayout.setHorizontalGroup(
+ originalPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(original, javax.swing.GroupLayout.DEFAULT_SIZE, 116, Short.MAX_VALUE)
+ );
+ originalPanelLayout.setVerticalGroup(
+ originalPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(original, javax.swing.GroupLayout.DEFAULT_SIZE, 116, Short.MAX_VALUE)
+ );
+
+ previewPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+ previewPanel.setMaximumSize(new java.awt.Dimension(400, 400));
+ previewPanel.setMinimumSize(new java.awt.Dimension(120, 120));
+ previewPanel.setPreferredSize(new java.awt.Dimension(120, 120));
+
+ preview.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+ preview.setText("preview");
+
+ javax.swing.GroupLayout previewPanelLayout = new javax.swing.GroupLayout(previewPanel);
+ previewPanel.setLayout(previewPanelLayout);
+ previewPanelLayout.setHorizontalGroup(
+ previewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(preview, javax.swing.GroupLayout.DEFAULT_SIZE, 116, Short.MAX_VALUE)
+ );
+ previewPanelLayout.setVerticalGroup(
+ previewPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(preview, javax.swing.GroupLayout.DEFAULT_SIZE, 116, Short.MAX_VALUE)
+ );
+
+ thresholdSlider.setMaximum(765);
+ thresholdSlider.setOrientation(javax.swing.JSlider.VERTICAL);
+ thresholdSlider.setToolTipText("Use to adjust the thresold between black and white.");
+ thresholdSlider.setValue(384);
+ thresholdSlider.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
+ thresholdSlider.setMaximumSize(new java.awt.Dimension(20, 32767));
+ thresholdSlider.setMinimumSize(new java.awt.Dimension(20, 36));
+ thresholdSlider.setPreferredSize(new java.awt.Dimension(20, 150));
+ thresholdSlider.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseReleased(java.awt.event.MouseEvent evt) {
+ thresholdSliderMouseReleased(evt);
+ }
+ });
+
+ FileSelectionPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("File Selection Mode"));
+ FileSelectionPanel.setName(""); // NOI18N
+
+ buttonGroup1.add(singleFileModeRadioButton);
+ singleFileModeRadioButton.setSelected(true);
+ singleFileModeRadioButton.setText("Single File Mode");
+ singleFileModeRadioButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ singleFileModeRadioButtonActionPerformed(evt);
+ }
+ });
+
+ buttonGroup1.add(multiFileModeRadioButton);
+ multiFileModeRadioButton.setText("Multi File Mode (disables preview)");
+ multiFileModeRadioButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ multiFileModeRadioButtonActionPerformed(evt);
+ }
+ });
+
+ allowDirectorySelectionCheckBox.setText("Allow directory selection");
+ allowDirectorySelectionCheckBox.setEnabled(false);
+ allowDirectorySelectionCheckBox.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ allowDirectorySelectionCheckBoxActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout FileSelectionPanelLayout = new javax.swing.GroupLayout(FileSelectionPanel);
+ FileSelectionPanel.setLayout(FileSelectionPanelLayout);
+ FileSelectionPanelLayout.setHorizontalGroup(
+ FileSelectionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(FileSelectionPanelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(FileSelectionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(FileSelectionPanelLayout.createSequentialGroup()
+ .addGap(21, 21, 21)
+ .addComponent(allowDirectorySelectionCheckBox))
+ .addComponent(singleFileModeRadioButton)
+ .addComponent(multiFileModeRadioButton))
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+ FileSelectionPanelLayout.setVerticalGroup(
+ FileSelectionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(FileSelectionPanelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(singleFileModeRadioButton)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(multiFileModeRadioButton)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(allowDirectorySelectionCheckBox)
+ .addContainerGap(8, Short.MAX_VALUE))
+ );
+
+ javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
+ jPanel1.setLayout(jPanel1Layout);
+ jPanel1Layout.setHorizontalGroup(
+ jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(originalPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(previewPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(FileSelectionPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(openButton)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(message)))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(thresholdSlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap())
+ );
+ jPanel1Layout.setVerticalGroup(
+ jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addGap(45, 45, 45)
+ .addComponent(thresholdSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(FileSelectionPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(openButton)
+ .addComponent(message, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(originalPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(previewPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+
+ jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Output"));
+
+ outputScrollPane.setFont(new java.awt.Font("Monospaced", 0, 11)); // NOI18N
+ outputScrollPane.setPreferredSize(new java.awt.Dimension(200, 200));
+
+ outputTextArea.setColumns(20);
+ outputTextArea.setFont(new java.awt.Font("Consolas", 0, 10)); // NOI18N
+ outputTextArea.setRows(5);
+ outputTextArea.setAutoscrolls(false);
+ outputScrollPane.setViewportView(outputTextArea);
+
+ javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
+ jPanel2.setLayout(jPanel2Layout);
+ jPanel2Layout.setHorizontalGroup(
+ jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(outputScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 444, Short.MAX_VALUE)
+ );
+ jPanel2Layout.setVerticalGroup(
+ jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(outputScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ );
+
+ jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Settings"));
+
+ scaleSlider.setMaximum(4);
+ scaleSlider.setMinimum(1);
+ scaleSlider.setMinorTickSpacing(1);
+ scaleSlider.setPaintLabels(true);
+ scaleSlider.setPaintTicks(true);
+ scaleSlider.setSnapToTicks(true);
+ scaleSlider.setValue(2);
+ scaleSlider.setMaximumSize(new java.awt.Dimension(150, 31));
+ scaleSlider.setMinimumSize(new java.awt.Dimension(150, 31));
+ scaleSlider.setPreferredSize(new java.awt.Dimension(150, 31));
+ scaleSlider.addChangeListener(new javax.swing.event.ChangeListener() {
+ public void stateChanged(javax.swing.event.ChangeEvent evt) {
+ scaleSliderStateChanged(evt);
+ }
+ });
+
+ scaleLabel.setText("Preview scale");
+
+ nameTextField.setFont(new java.awt.Font("Consolas", 0, 11)); // NOI18N
+ nameTextField.setText("bitmapName");
+
+ nameLabel.setText("Bitmap name");
+
+ formattingBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Binary (ex: B00110010)", "Hexadecimal (ex: 0x32)" }));
+ formattingBox.setName(""); // NOI18N
+ formattingBox.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ formattingBoxActionPerformed(evt);
+ }
+ });
+
+ formattingLabel.setText("Output number formatting");
+
+ wrapCheckbox.setSelected(true);
+ wrapCheckbox.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ wrapCheckboxActionPerformed(evt);
+ }
+ });
+
+ wrapLabel.setText("Wrap output lines");
+
+ javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
+ jPanel3.setLayout(jPanel3Layout);
+ jPanel3Layout.setHorizontalGroup(
+ jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+ .addComponent(wrapCheckbox)
+ .addComponent(formattingBox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(nameTextField, javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(scaleSlider, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addComponent(scaleLabel)
+ .addGap(0, 0, Short.MAX_VALUE))
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(nameLabel)
+ .addComponent(formattingLabel)
+ .addComponent(wrapLabel))
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
+ );
+ jPanel3Layout.setVerticalGroup(
+ jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addComponent(scaleLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED))
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
+ .addComponent(scaleSlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(8, 8, 8)))
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(nameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(nameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(formattingLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(formattingBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(wrapCheckbox, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(wrapLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap())
+ );
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+ getContentPane().setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addContainerGap())
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+ .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 98, Short.MAX_VALUE)))
+ .addContainerGap())
+ );
+
+ getAccessibleContext().setAccessibleDescription("");
+
+ pack();
+ }// //GEN-END:initComponents
+
+ private void scaleSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_scaleSliderStateChanged
+ if (singleFileModeRadioButton.isSelected()) {
+ redrawPreview();
+ }
+ }//GEN-LAST:event_scaleSliderStateChanged
+
+ private void formattingBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_formattingBoxActionPerformed
+ encoder.setHexFormatting(formattingBox.getSelectedIndex() == 1);
+ if (singleFileModeRadioButton.isSelected()) {
+ singleFormattingSetting = (byte) formattingBox.getSelectedIndex();
+ updateOutput();
+ } else {
+ multiFormattingSetting = (byte) formattingBox.getSelectedIndex();
+ processMultiFiles();
+ }
+ }//GEN-LAST:event_formattingBoxActionPerformed
+
+ private void wrapCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_wrapCheckboxActionPerformed
+ encoder.setWrapping(wrapCheckbox.isSelected());
+ if (singleFileModeRadioButton.isSelected()) {
+ singleWrapSetting = wrapCheckbox.isSelected();
+ updateOutput();
+ } else {
+ multiWrapSetting = wrapCheckbox.isSelected();;
+ processMultiFiles();
+ }
+ }//GEN-LAST:event_wrapCheckboxActionPerformed
+
+ private void thresholdSliderMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_thresholdSliderMouseReleased
+ if (encoder.getInputImage() == null && singleFileModeRadioButton.isSelected()) {
+ message.setText("Open a image before you play with that slider!");
+ } else if (singleFileModeRadioButton.isSelected()) {
+ message.setText("Loading...");
+ redrawPreview();
+ message.setText("Output updated");
+ } else if (multiFileModeRadioButton.isSelected()) {
+ processMultiFiles();
+ }
+ }//GEN-LAST:event_thresholdSliderMouseReleased
+
+ private void openButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openButtonActionPerformed
+ if (singleFileModeRadioButton.isSelected()) {
+ int returnVal = fileChooser.showOpenDialog(BitmapFrame.this);
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
+ lastSingleDirectory = fileChooser.getCurrentDirectory().
+ getAbsolutePath();
+ File file = fileChooser.getSelectedFile();
+ encoder.open(file);
+ if (encoder.getInputImage() == null) {
+ message.setText("Can't open the selected image");
+ } else {
+ message.setText("Image succesfully loaded");
+ String fileName = file.getName();
+ fileName = fileName.substring(0, fileName.lastIndexOf('.'));
+ nameTextField.setText(fileName);
+ redrawPreview();
+ }
+ }
+ } else {
+
+ if (allowDirectorySelectionCheckBox.isSelected()) {
+ multiFileChooser.setFileSelectionMode(
+ JFileChooser.FILES_AND_DIRECTORIES);
+ } else {
+ multiFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
+ }
+ multiFileChooser.setMultiSelectionEnabled(true);
+ int returnVal = multiFileChooser.showOpenDialog(this);
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
+ lastMultiDirectory = multiFileChooser.getCurrentDirectory().
+ getAbsolutePath();
+ filesSelected = multiFileChooser.getSelectedFiles();
+ processMultiFiles();
+ }
+ }
+ try {
+ saveSettingsToDisk(new File("settings.dat"));
+ } catch (IOException ex) {
+ Logger.getLogger(BitmapFrame.class.getName()).
+ log(Level.SEVERE, null, ex);
+ }
+ }//GEN-LAST:event_openButtonActionPerformed
+
+ private void processMultiFiles() {
+ outputTextArea.setText("");
+ String eol = System.lineSeparator();
+ File[] filesToConvert = processSelectedFiles(filesSelected, false);
+ if (filesToConvert == null) {
+ return;
+ }
+ for (File f : filesToConvert) {
+ if (f != null) {
+ if (isImage(f)) {
+ try {
+ System.out.println("Reading image " + f.getName()
+ + "...");
+ BufferedImage img = ImageIO.read(f);
+ if (img != null) {
+ if ((img.getWidth() > 200) || (img.getHeight()
+ > 200)) {
+ System.out.println("File " + f.getName()
+ + " is too large.");
+ continue;
+ }
+ System.out.println("Deep copy of " + f.getName()
+ + ".");
+ BufferedImage newImg = deepCopy(img);
+ int threshold = thresholdSlider.getValue();
+ System.out.println(
+ "Setting threshold for new image.");
+ for (int y = 0; y < img.getHeight(); y++) {
+ for (int x = 0; x < img.getWidth(); x++) {
+ int rgb = img.getRGB(x, y);
+ int red = (rgb >> 16) & 0x000000FF;
+ int green = (rgb >> 8) & 0x000000FF;
+ int blue = (rgb) & 0x000000FF;
+ int value = red + green + blue;
+ if (value > threshold) {
+ newImg.setRGB(x, y, 0x00FFFFFF);
+ } else {
+ newImg.setRGB(x, y, 0);
+ }
+ }
+ }
+ String bitmapName = f.getName().substring(0, f.
+ getName().lastIndexOf("."));
+ System.out.println("Generating output for " + f.
+ getName() + ".");
+ String output = outputTextArea.getText();
+ output = output.concat("const byte ");
+ output = output.concat(bitmapName);
+ output = output.concat("[] PROGMEM = {");
+ if (encoder.isWrapping()) {
+ output = output.concat(eol);
+ }
+ int width = ((img.getWidth() - 1) / 8 + 1) * 8; //round to the closest larger multiple of 8
+ output = output.concat(width + "," + img.
+ getHeight() + ",");
+ if (encoder.isWrapping()) {
+ output = output.concat(eol);
+ }
+ for (int y = 0; y < img.getHeight(); y++) {
+ for (int x = 0; x < img.getWidth(); x += 8) {
+ if (encoder.isHexFormatting()) {
+ output = output.concat("0x");
+ } else {
+ output = output.concat("B");
+ }
+ int thisByte = 0;
+ for (int b = 0; b < 8; b++) {
+ int value = 0xFFFF;
+ if (x + b < img.getWidth()) {
+ int rgb = img.getRGB(x + b, y);
+ int red = (rgb >> 16)
+ & 0x000000FF;
+ int green = (rgb >> 8)
+ & 0x000000FF;
+ int blue = (rgb) & 0x000000FF;
+ value = red + green + blue;
+ }
+ if (encoder.isHexFormatting()) {
+ thisByte *= 2;
+ if (value < threshold) {
+ thisByte++;
+ }
+ } else {//binary formatting
+ if (value < threshold) {
+ output = output.concat("1");
+ } else {
+ output = output.concat("0");
+ }
+
+ }
+ }
+ if (encoder.isHexFormatting()) {
+ output = output.concat(Integer.
+ toString(thisByte, 16).
+ toUpperCase());
+ }
+ output = output.concat(",");
+ }
+ if (encoder.isWrapping()) {
+ output = output.concat(eol);
+ }
+ }
+ output = output.concat("};" + eol);
+ if (encoder.isWrapping()) {
+ output = output.concat(eol);
+ }
+ outputTextArea.setText(output);
+ }
+ } catch (IOException ex) {
+ Logger.getLogger(BitmapFrame.class.
+ getName()).
+ log(Level.SEVERE, null, ex);
+ }
+ } else {
+ System.out.println("File " + f.getName()
+ + " is not an image.");
+ }
+ }
+ }
+ }
+ private void singleFileModeRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_singleFileModeRadioButtonActionPerformed
+ scaleSlider.setEnabled(true);
+ nameTextField.setEnabled(true);
+ allowDirectorySelectionCheckBox.setEnabled(false);
+ formattingBox.setSelectedIndex((int) singleFormattingSetting);
+ encoder.setHexFormatting(formattingBox.getSelectedIndex() == 1);
+ wrapCheckbox.setSelected(singleWrapSetting);
+ encoder.setWrapping(wrapCheckbox.isSelected());
+ updateOutput();
+ }//GEN-LAST:event_singleFileModeRadioButtonActionPerformed
+
+ private void multiFileModeRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_multiFileModeRadioButtonActionPerformed
+ scaleSlider.setEnabled(false);
+ nameTextField.setEnabled(false);
+ allowDirectorySelectionCheckBox.setEnabled(true);
+ formattingBox.setSelectedIndex((int) multiFormattingSetting);
+ encoder.setHexFormatting(formattingBox.getSelectedIndex() == 1);
+ wrapCheckbox.setSelected(multiWrapSetting);
+ encoder.setWrapping(wrapCheckbox.isSelected());
+ processMultiFiles();
+ }//GEN-LAST:event_multiFileModeRadioButtonActionPerformed
+
+ private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
+ try {
+ saveSettingsToDisk(new File("settings.dat"));
+ } catch (IOException ex) {
+ Logger.getLogger(BitmapFrame.class.getName()).
+ log(Level.SEVERE, null, ex);
+ }
+ }//GEN-LAST:event_formWindowClosing
+
+ private void allowDirectorySelectionCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_allowDirectorySelectionCheckBoxActionPerformed
+ allowDirectorySelection = allowDirectorySelectionCheckBox.isSelected();
+ }//GEN-LAST:event_allowDirectorySelectionCheckBoxActionPerformed
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(String args[]) {
+ /* Set the Nimbus look and feel */
+ //
+ /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
+ * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
+ */
+ try {
+ /*for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
+ if ("Nimbus".equals(info.getName())) {
+ javax.swing.UIManager.setLookAndFeel(info.getClassName());
+ break;
+ }
+ }*/
+ javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.
+ getSystemLookAndFeelClassName());
+ } catch (ClassNotFoundException | InstantiationException |
+ IllegalAccessException |
+ javax.swing.UnsupportedLookAndFeelException ex) {
+ java.util.logging.Logger.getLogger(BitmapFrame.class.getName()).log(
+ java.util.logging.Level.SEVERE, null, ex);
+ }
+ //
+
+ /* Create and display the form */
+ java.awt.EventQueue.invokeLater(() -> {
+ new BitmapFrame().setVisible(true);
+ });
+ }
+
+ private void redrawPreview() {
+ int scale = scaleSlider.getValue();
+ //input image
+ Image in = BitmapEncoder.deepCopy(encoder.getInputImage());
+ in = in.getScaledInstance(in.getWidth(null) * scale, in.getHeight(null)
+ * scale, java.awt.Image.SCALE_REPLICATE);
+ ImageIcon originalIcon = new ImageIcon(in);
+ original.setText("");
+ original.setIcon(originalIcon);
+ //output image
+ encoder.threshold(thresholdSlider.getValue());
+ Image out = BitmapEncoder.deepCopy(encoder.getOutputImage());
+ out = out.getScaledInstance(out.getWidth(null) * scale, out.getHeight(
+ null) * scale, java.awt.Image.SCALE_REPLICATE);
+ ImageIcon previewIcon = new ImageIcon(out);
+ preview.setText("");
+ preview.setIcon(previewIcon);
+ updateOutput();
+ }
+
+ private void updateOutput() {
+ encoder.setBitmapName(nameTextField.getText());
+ outputTextArea.setText(encoder.
+ generateOutput(thresholdSlider.getValue()));
+ outputTextArea.setCaretPosition(0);
+ }
+
+ private void loadSettingsFromDisk() throws IOException {
+ File saveFile = new File("settings.dat");
+ if (saveFile.createNewFile()) {
+ saveSettingsToDisk(saveFile);
+ } else {
+ BufferedReader br = new BufferedReader(new FileReader(saveFile));
+ for (String line; (line = br.readLine()) != null;) {
+ String settingName = line.trim().substring(0, line.indexOf(":"));
+ String setting = line.substring((line.indexOf(":") + 1)).trim();
+ switch (settingName) {
+ case "LAST_SINGLE_DIRECTORY":
+ lastSingleDirectory = setting;
+ break;
+ case "LAST_MULTI_DIRECTORY":
+ lastMultiDirectory = setting;
+ break;
+ case "SINGLE_FORMATTING":
+ singleFormattingSetting = Byte.valueOf(setting);
+ break;
+ case "MULTI_FORMATTING":
+ multiFormattingSetting = Byte.valueOf(setting);
+ break;
+ case "SINGLE_WRAPPING":
+ singleWrapSetting = Boolean.valueOf(setting);
+ break;
+ case "MULTI_WRAPPING":
+ multiWrapSetting = Boolean.valueOf(setting);
+ break;
+ case "ALLOW_DIRECTORY_SELECTION":
+ allowDirectorySelection = Boolean.valueOf(setting);
+ break;
+ default:
+ break;
+ }
+ }
+ // line is not visible here.
+ }
+ }
+
+ private void saveSettingsToDisk(File saveFile) throws IOException {
+ try (BufferedWriter out = new BufferedWriter(new FileWriter(saveFile))) {
+ out.write("LAST_SINGLE_DIRECTORY: " + lastSingleDirectory);
+ out.newLine();
+ out.write("LAST_MULTI_DIRECTORY: " + lastMultiDirectory);
+ out.newLine();
+ out.write("SINGLE_FORMATTING: " + singleFormattingSetting);
+ out.newLine();
+ out.write("MULTI_FORMATTING: " + multiFormattingSetting);
+ out.newLine();
+ out.write("SINGLE_WRAPPING: " + singleWrapSetting);
+ out.newLine();
+ out.write("MULTI_WRAPPING: " + multiWrapSetting);
+ out.newLine();
+ out.write("ALLOW_DIRECTORY_SELECTION: " + allowDirectorySelection);
+ out.newLine();
+ out.close();
+ }
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JPanel FileSelectionPanel;
+ private javax.swing.JCheckBox allowDirectorySelectionCheckBox;
+ private javax.swing.ButtonGroup buttonGroup1;
+ private javax.swing.JComboBox formattingBox;
+ private javax.swing.JLabel formattingLabel;
+ private javax.swing.JPanel jPanel1;
+ private javax.swing.JPanel jPanel2;
+ private javax.swing.JPanel jPanel3;
+ private javax.swing.JLabel message;
+ private javax.swing.JRadioButton multiFileModeRadioButton;
+ private javax.swing.JLabel nameLabel;
+ private javax.swing.JTextField nameTextField;
+ private javax.swing.JButton openButton;
+ private javax.swing.JLabel original;
+ private javax.swing.JPanel originalPanel;
+ private javax.swing.JScrollPane outputScrollPane;
+ private javax.swing.JTextArea outputTextArea;
+ private javax.swing.JLabel preview;
+ private javax.swing.JPanel previewPanel;
+ private javax.swing.JLabel scaleLabel;
+ private javax.swing.JSlider scaleSlider;
+ private javax.swing.JRadioButton singleFileModeRadioButton;
+ private javax.swing.JSlider thresholdSlider;
+ private javax.swing.JCheckBox wrapCheckbox;
+ private javax.swing.JLabel wrapLabel;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/Camera.c b/Camera.c
index 5b5c9c7..7428d30 100644
--- a/Camera.c
+++ b/Camera.c
@@ -43,7 +43,7 @@ TYPE_COLLISION_BLOCK CameraApplyCoordinatesToCoordinates( TYPE_CAMERA* ptrCamera
}
void CameraApplyCoordinatesToSprite(TYPE_CAMERA* ptrCamera,
- TYPE_SPRITE * spr,
+ TYPE_SPRITE* spr,
uint16_t x,
uint16_t y )
{
diff --git a/Camera.h b/Camera.h
index 66a9fad..cbefc6b 100644
--- a/Camera.h
+++ b/Camera.h
@@ -42,7 +42,7 @@ void CameraInit(TYPE_CAMERA* ptrCamera);
void CameraHandler(TYPE_CAMERA* ptrCamera);
void CameraSetLock(TYPE_CAMERA* ptrCamera, bool value);
void CameraApplyCoordinatesToSprite( TYPE_CAMERA* ptrCamera,
- TYPE_SPRITE * spr,
+ TYPE_SPRITE* spr,
uint16_t x,
uint16_t y );
TYPE_COLLISION_BLOCK CameraApplyCoordinatesToCoordinates( TYPE_CAMERA* ptrCamera,
diff --git a/Exe/POCKET.ELF b/Exe/POCKET.ELF
index eb822fe..94e29f1 100755
Binary files a/Exe/POCKET.ELF and b/Exe/POCKET.ELF differ
diff --git a/Exe/POCKET.HEX b/Exe/POCKET.HEX
index a7fbb1b..f911339 100644
--- a/Exe/POCKET.HEX
+++ b/Exe/POCKET.HEX
@@ -1,1314 +1,1334 @@
-:100000000C9439030C9461030C9461030C94610308
-:100010000C9461030C9461030C9461030C946103D0
-:100020000C9461030C9461030C9461030C94DF1E27
-:100030000C9461030C9461030C9461030C946103B0
-:100040000C94C41F0C9461030C9461030C94610321
-:100050000C9461030C9461030C9461030C94610390
-:100060000C9461030C946103506F636B65742045BD
+:100000000C9483030C94AB030C94AB030C94AB03E0
+:100010000C94AB030C94AB030C94AB030C94AB03A8
+:100020000C94AB030C94AB030C94AB030C947D1FAA
+:100030000C94AB030C94AB030C94AB030C94AB0388
+:100040000C9462200C94AB030C94AB030C94AB03A4
+:100050000C94AB030C94AB030C94AB030C94AB0368
+:100060000C94AB030C94AB03506F636B6574204529
:100070006D70697265730080007B00517569740052
:10008000526573756D65000808FC848884A2D10AE6
:10009000044661696C656420746F206372656174E5
:1000A0006520756E697421004661696C6564207411
:1000B0006F20637265617465206275696C64696E36
-:1000C00067210018180000000000FEFE00FEFE0080
-:1000D0003E3E00FEFE00FEFE001E1E001E1E001E16
-:1000E0001E001E1E001E1E001E1E001E1E001E1EC6
-:1000F000001E1E001E1E001E1E001E1E00FEFE0014
-:10010000FEFE003E3E00FEFE00FEFE00FE1818E76A
-:1001100000E7BD00BDE7FFE7BD00BD81FF81E7004F
-:10012000E7A500A5BDFFBDA500A5A500A5A500A547
-:10013000A500A5A500A5A500A5A500A5A500A5E766
-:1001400000E7BD00BDE7FFE7BD00BD81FF8181186D
-:1001500081812481FFFFFF0808003C4299A56618B1
-:1001600000080860BCC299A5671D02910180017852
-:1001700001730151756974004F7074696F6E73007B
-:100180004D756C7469706C617965722067616D651D
-:100190000053696E676C6520706C617965722067C9
-:1001A000616D6500030307050705040505040503E4
-:1001B00006030207020201020203020E090E0E0DDF
-:1001C0000E0E0F0E070507050307050F05070507A8
-:1001D00006070102050200070202070002070200EB
-:1001E00002070200070603060707020205050201CF
-:1001F00002020402000502020500060705050705C4
-:10020000020302020602000000000B0003000307C5
-:10021000050704070105020507070400030000079E
-:1002200005050700050005020702000C0002020296
-:10023000000400040201070507050704010704057F
-:100240000702030207040701070606010107070763
-:1002500007030307000500000D0002050005050562
-:100260000005020107030F09030603060707020240
-:10027000050507070207070507030107050607022B
-:10028000070507050404030702050704040703071D
-:10029000070106070507070303070503070306040D
-:1002A0000701010701070407030403070607050206
-:1002B0000501060101070400070501020405070006
-:1002C00002010208080800030006030607070202ED
-:1002D00005050705020707050703010705060702CD
-:1002E00007050705040403070205070404070307BD
-:1002F00007010607050707030307050307030604AD
-:1003000007010107010704070304030706070502A5
-:1003100005010601010704020705000700050702A1
-:1003200006020307050703053F213F1208120A10C2
-:100330000A0E1C0E0C1E0C141A14161F161E131E69
-:100340001E1B1E1E1F1E3F213F3A2F3A173D173F0F
-:10035000213F181F02040A041F0E04040E1F0A1F67
-:100360000A0E0E1F04110E2E252E2F2A2E262929A5
-:10037000021F02081F08150E04040E150E15151B8A
-:10038000151B040604040C04000000001700030001
-:10039000031F0A1F16371A1904130A153A0003001F
-:1003A000000E11110E000A040A040E0400300004AD
-:1003B00004040010001804031F111F121F101D1544
-:1003C0001711151F07041F17151D1F151D01011FEC
-:1003D0001F151F17151F000A00003200040A110A1A
-:1003E0000A0A110A040115020E11171E051E1F1517
-:1003F0000A0E110A1F110E1F15111F05010E111DE6
-:100400001F041F111F1108100F1F041B1F10101FA6
-:10041000061F1E040F0E110E1F09060E112E1F05BA
-:100420001A121509011F011F101F0F180F1F0C1F93
-:100430001B041B031C03191513001F1103041811BF
-:100440001F000201022020200001020C121E1F12B8
-:100450000C0C12120C121F0C1A14041E05242A1E56
-:100460001F021C141D1020201D1F0814111F101E18
-:10047000041E1E021C0C120C3E0A040C123E1E042A
-:100480000214160A020F120E101E0E100E1E081E67
-:10049000120C1226281E322A26041E21001F0021BB
-:1004A0001E040102013F213F0A4E6F205344206386
-:1004B000617264206F720A6E6F204C4F4144455246
-:1004C0002E4845580A0A153A45786974001D204699
-:1004D0006C617368696E670A20206C6F6164657275
-:1004E0002E2E2E0A0A444F4E2754205455524E2089
-:1004F0004F464621000A0A153A49676E6F72650039
-:100500006D560A0A504C45415345205455524E20D1
-:100510004F464620004C4F572042415454455259B3
-:1005200021200017534400161378001613140015E9
-:1005300010200015201000540A03E181867F3E1828
-:100540006D830F0F0E0183866033186DC3198F18EA
-:1005500003C38E6033186DE330CF1803C39E60363B
-:1005600030CDE360CF3006C79E7E3E30CDB360CF46
-:10057000300CC6F6603330D9B660CF33CFCCF660DE
-:1005800061B0DB1E60CF30D86CE6C061B0DB1E61AD
-:100590008F19986CC6C063B19B0E330F0FB078C62D
-:1005A000FF7E1F1B061E0F05008930080238024916
-:1005B0007868140000F6E8DBCFC3B8AEA49B928A3B
-:1005C000827B746E68625C57524E4945413E3A37B1
-:1005D00034312E2C29272523211F1D1C1A191716EB
-:1005E0001514131211100F0E0D0C0B0A0908070633
-:1005F00045006801000005006801380100000500A1
-:100600003801680100000E060A060101FF0301011E
-:10061000F7030000000700020100000304060000C9
-:1006200000000000000001020408102040800102C8
-:100630000408102001020408102004040404040427
-:100640000404020202020202030303030303000084
-:1006500000002300260029000000000025002800DB
-:100660002B0000000000240027002A007403C403AC
-:10067000C80311241FBECFEFD8E0DEBFCDBF11E00D
-:10068000A0E0B1E0E8E9F1E502C005900D92A835DF
-:10069000B107D9F727E0A8E5B1E001C01D92AF3559
-:1006A000B207E1F713E0C8E3D3E004C02197FE01ED
-:1006B0000E943024C633D107C9F70E9463030C940B
-:1006C000BF280C9400000E9465200E944B0488E51E
-:1006D00091E00E94FC1B68E670E088E591E00E94D2
-:1006E0007F1B0E94750FF7CF1092A9011092A801ED
-:1006F0008CE491E09093A7018093A601089588EE81
-:1007000091E00E946C0781E08093E80187E890E027
-:100710009093E7018093E60182E08093E5011092D7
-:10072000E3011092E40186E28093DF0184E180938B
-:10073000E0010E94080586E090E00E941A068823E6
-:1007400049F042E067E770E088E591E00E94BA185E
-:100750008111089588EE91E00E949A0B0E944E0646
-:1007600081110E94CC030E9410058823E1F30E94AE
-:100770001A0588EE91E00E94D60A8FED91E00E9462
-:100780002A050E94E803D7CF88EE91E00C945E061C
-:1007900088EE91E00C945F068091ED04811117C002
-:1007A00081E08093ED043091EE042091EF0480917C
-:1007B000F0048091F1048091F2048091F30480911F
-:1007C000F4048091F504832F922F0C94C025089592
-:1007D0002091EE043091EF044091F0045091F10427
-:1007E0006091F2047091F3048091F4049091F50407
-:1007F000A1E00E9424242093EE043093EF04409360
-:10080000F0045093F1046093F2047093F304809326
-:10081000F4049093F50408958F929F92AF92BF9243
-:10082000CF92DF92EF92FF924B015C0169017A0156
-:100830000E94BB25BC01990F880B990BC818D908D9
-:10084000EA08FB08A70196012F5F3F4F4F4F5F4F0C
-:100850000E94D823680D791D8A1D9B1DFF90EF9083
-:10086000DF90CF90BF90AF909F908F900895EBE86E
-:10087000F4E013861286118610861082118212828D
-:10088000138214821582168217823C9684E0EB3E16
-:10089000F80779F708951092EE041092EF04109281
-:1008A000F0041092F1041092F2041092F3041092EA
-:1008B000F4041092F5041092EC040E943704109294
-:1008C000EB040895EF92FF920F931F93CF93DF9362
-:1008D000CDB7DEB72C970FB6F894DEBF0FBECDBFF5
-:1008E00049835A836B837C839E83EF82F8860987D2
-:1008F0001A873C8769817A814F815885240F352F6B
-:10090000311D62177307C8F4860F972F911D481782
-:10091000590798F46B817C8149855A858C85840FB1
-:10092000952F911D6817790740F42E81260F372FD8
-:10093000311D81E04217530708F080E081702C964A
-:100940000FB6F894DEBF0FBECDBFDF91CF911F91E0
-:100950000F91FF90EF90089550E0480F511D87FDD3
-:100960005A9557FD0CC0843554F430E0260F311DE4
-:1009700067FD3A9537FD03C081E060330CF080E0FD
-:100980000895DC01643508F042C0403308F03FC0F0
-:1009900090968C919097E62F062E000CFF0B242F3B
-:1009A00025952595259594E52902E00DF11D112445
-:1009B000E05BFA4F2081342F37708230A1F4822F10
-:1009C00090E0032E02C0959587950A94E2F78095F2
-:1009D0008170882399F081E090E001C0880F3A95FA
-:1009E000EAF7822B13C08330A1F71C968C91642701
-:1009F000062E000C770B682760FDEDCF81E090E0BC
-:100A000001C0880F3A95EAF7809582238083089584
-:100A10001092AC0166E273E086EA91E00C94251531
-:100A200088E591E00E94021891E0811101C090E0F8
-:100A3000892F089560E086EA91E00E94271086EAF7
-:100A400091E00C941610FC01238142816181808128
-:100A50000C94AC04EF920F931F93CF93DF93EC01B0
-:100A60000E9423058823E1F01091C60140E06E81C9
-:100A700086EA91E00E9478102F813885ED800C8104
-:100A80004981688186EA91E00E943E14612F86EADE
-:100A900091E0DF91CF911F910F91EF900C94741022
-:100AA000DF91CF911F910F91EF900895FC018491F8
-:100AB00008950196FC01849108954CE3BC0188E5FA
-:100AC00091E00C94DA160F931F93CF93DF938C0170
-:100AD000C091C401D091C50122974093AF012093EA
-:100AE000B00186EA91E00E94251540E061E086EAC7
-:100AF00091E00E947810B80186EA91E00E942E22CF
-:100B0000209749F0BE0186EA91E0DF91CF911F91D5
-:100B10000F910C942515DF91CF911F910F9108959E
-:100B2000FF920F931F93CF93DF93D82F162FC42FCD
-:100B3000F22E242F0E94AC048823C1F00091C6013C
-:100B40006F2D86EA91E00E9474102C2F412F6D2F9B
-:100B500086EA91E00E940511602F86EA91E0DF911C
-:100B6000CF911F910F91FF900C947410DF91CF9152
-:100B70001F910F91FF900895EF92FF920F931F9393
-:100B8000CF93DF93C82FD62F142FF22E0E94AC04E0
-:100B90008823D1F0E090C601602F86EA91E00E94A0
-:100BA00074100F2D212F4D2F6C2F86EA91E00E949B
-:100BB000B4106E2D86EA91E0DF91CF911F910F91D5
-:100BC000FF90EF900C947410DF91CF911F910F91D3
-:100BD000FF90EF900895EF92FF920F931F93CF93A2
-:100BE000DF93C82FD62F142FF22E0E94AC04882337
-:100BF000D1F0E090C601602F86EA91E00E94741067
-:100C00000F2D212F4D2F6C2F86EA91E00E94DC10D2
-:100C10006E2D86EA91E0DF91CF911F910F91FF90A9
-:100C2000EF900C947410DF91CF911F910F91FF9072
-:100C3000EF900895682F82E691E00E94CB0F91E03B
-:100C4000811101C090E0892F0895CF93C62F682F9E
-:100C500082E691E00E94EA0F91E0C81708F090E068
-:100C6000892FCF91089560E00C94250681E090E0F3
-:100C70000E943306811110C083E090E00E94330689
-:100C800081110AC090E080E00E943306811104C007
-:100C900082E090E00C94330681E008950E943606CD
-:100CA00081110AC084E090E00E943306811104C0E3
-:100CB00085E090E00C94330681E00895089508954E
-:100CC0000F931F93CF93DF93CDB7DEB728970FB65F
-:100CD000F894DEBF0FBECDBF162F00E028E044E53C
-:100CE0006BE280E00E94EB051F921F9386E091E08B
-:100CF0009F938F931F9288E08F938E010F5F1F4FFA
-:100D00001F930F930E94D2252CE244E064EA71E025
-:100D1000C8010E9463050FB6F894DEBF0FBECDBFB9
-:100D200028960FB6F894DEBF0FBECDBFDF91CF91EE
-:100D30001F910F910895CF92DF92FF920F931F930F
-:100D4000CF93DF93CDB7DEB760970FB6F894DEBFD1
-:100D50000FBECDBF6C0160E086EA91E00E94741086
-:100D600005E024E540E060E086EA91E00E94DC10C6
-:100D7000F60181891F928F938CE091E09F938F936E
-:100D80001F9280E1F82EFF928E010F5F1F4F1F937D
-:100D90000F930E94D22521E042E064EA71E0C8018D
-:100DA0000E946305F60182891F928F9381E191E091
-:100DB0009F938F931F92FF921F930F930E94D225B0
-:100DC00021E046E164EA71E0C8010E946305F60192
-:100DD00083891F928F9386E191E09F938F931F9257
-:100DE000FF921F930F930E94D22521E04AE264EA0A
-:100DF00071E0C8010E9463050FB6F894DEBF0FBE14
-:100E0000CDBF60960FB6F894DEBF0FBECDBFDF91A9
-:100E1000CF911F910F91FF90DF90CF900895CF92C7
-:100E2000DF92EF92FF920F931F93CF93DF9300D047
-:100E300000D000D0CDB7DEB76B0109831A832B83B6
-:100E40003C837C012CE6E21A2DEFF20AF701408187
-:100E5000403208F03FC054E1242F30E08C01549F11
-:100E6000000D111D1124F801658F2F5F3F4F529F18
-:100E7000B001539F700D1124860F971F29813A816D
-:100E8000FC01318320838B819C81F801978B868BB9
-:100E90008C2D0E942B0EF801848F81E083A3F2E059
-:100EA000CF16D1040CF480E0F80181A3F701808112
-:100EB0008F5F808381E026960FB6F894DEBF0FBE69
-:100EC000CDBFDF91CF911F910F91FF90EF90DF90F9
-:100ED000CF90089580E0EFCFEF92FF920F931F9392
-:100EE000CF93DF9300D000D000D0CDB7DEB77C0128
-:100EF0008C010C561D4FD8011C92FC01E256FD4F8F
-:100F00008FEF8083C7018B569D4F0E94BC0B0E94C0
-:100F1000A50CF701749684E1DF01982F1D929A9534
-:100F2000E9F77496E017F107B9F789E1D70151960F
-:100F30008C93519782E352968C9352978BE45396FD
-:100F40008C9324E130E040E050E060E070E0CB01C1
-:100F50000E940C047A83698324E130E040E050E091
-:100F600060E070E0CB010E940C04262F7C836B8331
-:100F700009811A813C814D815E8162E070E0C70188
-:100F80000E940F07811104C088EA90E00E945D056D
-:100F900028E330E040E050E060E370E080E090E083
-:100FA0000E940C047A83698328E330E040E050E03B
-:100FB00060E370E080E090E00E940C047C836B832F
-:100FC00080E00E94F90C8D8380E00E94030DF70100
-:100FD000EF55FD4F10823196108232971082339771
-:100FE000108209811A812B813C814D81582F70E03C
-:100FF00060E0C7010E940F07811110C081E990E0F5
-:1010000026960FB6F894DEBF0FBECDBFDF91CF910D
-:101010001F910F91FF90EF900C945D0526960FB6EF
-:10102000F894DEBF0FBECDBFDF91CF911F910F911E
-:10103000FF90EF900895CF93DF9300D000D000D0C1
-:10104000CDB7DEB7FC01E956FD4F2081318144E187
-:1010500050E0421B530B8B569D4FFC0180819181C8
-:1010600026E230E0281B390B3A8329835C834B83CB
-:101070003A815C8168E078E080E090E026960FB6E7
-:10108000F894DEBF0FBECDBFDF91CF9108953F92A0
-:101090004F925F926F927F928F929F92AF92BF9288
-:1010A000CF92DF92EF92FF920F931F93CF93DF9334
-:1010B00000D000D000D0CDB7DEB75C018C01912C00
-:1010C00088248A9444244A94542C3201F80183A140
-:1010D000882309F444C084A1811141C0C5010E9444
-:1010E0001B0829833A834B835C836D837E83F801DD
-:1010F000C488D588E688F788858D0E94F90C382E3B
-:10110000F801858D0E94030D29813A81C21AD30A04
-:10111000232D30E035952795C20ED31E2B813C81BF
-:10112000E21AF30A90E095958795E80EF91ECC9C9B
-:10113000C001CD9C900D900D1124EE9C9001EF9C70
-:10114000300D300D1124820F931FB0E0A0E0841504
-:101150009505A605B70518F4892C2C013D010C5EF8
-:101160001F4F9394F0E29F12B1CFF501E256FD4F6D
-:10117000808226960FB6F894DEBF0FBECDBFDF91FA
-:10118000CF911F910F91FF90EF90DF90CF90BF9084
-:10119000AF909F908F907F906F905F904F903F9017
-:1011A0000895FC01E356FD4F2081222351F0339630
-:1011B0002081211106C031968081853010F48F5F27
-:1011C00080830895BF92CF92DF92EF92FF920F93A8
-:1011D0001F93CF93DF9300D000D000D0CDB7DEB700
-:1011E0007C016B01FC01EE55FD4F8081823009F0DE
-:1011F00047C0FB0181850E94F90C182FF6018185FB
-:101200000E94030D082FF601B080812F90E09C0111
-:1012100035952795280F391F032E000C440B550BCD
-:10122000612F70E090E080E00E940C04B60EF601A1
-:101230001281802F90E09C0135952795280F391F4A
-:10124000032E000C440B550B602F70E090E080E003
-:101250000E940C041E821D828B2D90E00B2D9A8320
+:1000C00067210018181F80007E0000F80000F00073
+:1000D00000E00000E00004E00004E00004E2E004CE
+:1000E000E28004E28004E28004E28004E28004E230
+:1000F000E004E0600CE00010E00000E00000E0013F
+:1001000080F00180F801807E01801F818018180333
+:10011000FFC00C003037FFEC780016AFFFF5A800E9
+:1001200015A8FF15A88115A8FFD5AB8155AAA5D59F
+:10013000AB8155AAA555AB81D5A89915A8FF15A6E1
+:10014000006591C3898C423183C3C1404202304271
+:100150000C0C423003C3C018180000000000FEFE63
+:1001600000FEFE003E3E00FEFE00FEFE001E1E00E3
+:100170001E1E001E1E001E1E001E1E001E1E001E35
+:100180001E001E1E001E1E001E1E001E1E001E1E25
+:1001900000FEFE00FEFE003E3E00FEFE00FEFE00F3
+:1001A000FE1818E700E7BD00BDE7FFE7BD00BD8111
+:1001B000FF81E700E7A500A5BDFFBDA500A5A5003F
+:1001C000A5A500A5A500A5A500A5A500A5A500A518
+:1001D000A500A5E700E7BD00BDE7FFE7BD00BD81C5
+:1001E000FF81811881812481FFFFFF0808003C42C4
+:1001F00099A5661800080860BCC299A5671D02256C
+:100200000214020C02070251756974004F70746980
+:100210006F6E73004D756C7469706C6179657220D6
+:1002200067616D650053696E676C6520706C6179FC
+:1002300065722067616D6500030307050705040506
+:100240000504050306030207020201020203020E6F
+:10025000090E0E0D0E0E0F0E070507050307050FFD
+:10026000050705070607010205020007020207004D
+:100270000207020002070200070603060707020240
+:10028000050502010202040200050202050006073C
+:1002900005050705020302020602000000000B002C
+:1002A000030003070507040701050205070704000B
+:1002B0000300000705050700050005020702000C02
+:1002C00000020202000400040201070507050704FA
+:1002D00001070405070203020704070107060601D8
+:1002E0000107070707030307000500000D000205CB
+:1002F000000505050005020107030F0903060306B3
+:10030000070702020505070702070705070301079C
+:10031000050607020705070504040307020507048D
+:10032000040703070701060705070703030705037B
+:100330000703060407010107010704070304030775
+:100340000607050205010601010704000705010271
+:10035000040507000201020808080003000603065E
+:10036000070702020505070502070705070301073E
+:10037000050607020705070504040307020507042D
+:10038000040703070701060705070703030705031B
+:100390000703060407010107010704070304030715
+:1003A000060705020501060101070402070500070B
+:1003B0000005070206020307050703053F213F1258
+:1003C00008120A100A0E1C0E0C1E0C141A14161F0A
+:1003D000161E131E1E1B1E1E1F1E3F213F3A2F3AC4
+:1003E000173D173F213F181F02040A041F0E040483
+:1003F0000E1F0A1F0A0E0E1F04110E2E252E2F2A65
+:100400002E262929021F02081F08150E04040E15A6
+:100410000E15151B151B040604040C040000000037
+:1004200017000300031F0A1F16371A1904130A15B1
+:100430003A000300000E11110E000A040A040E0413
+:100440000030000404040010001804031F111F12E0
+:100450001F101D151711151F07041F17151D1F1538
+:100460001D01011F1F151F17151F000A0000320074
+:10047000040A110A0A0A110A040115020E11171EB4
+:10048000051E1F150A0E110A1F110E1F15111F053B
+:10049000010E111D1F041F111F1108100F1F041B37
+:1004A0001F10101F061F1E040F0E110E1F09060E2F
+:1004B000112E1F051A121509011F011F101F0F18F9
+:1004C0000F1F0C1F1B041B031C03191513001F1106
+:1004D000030418111F000201022020200001020C59
+:1004E000121E1F120C0C12120C121F0C1A14041ED6
+:1004F00005242A1E1F021C141D1020201D1F081475
+:10050000111F101E041E1E021C0C120C3E0A040CAD
+:10051000123E1E040214160A020F120E101E0E10B6
+:100520000E1E081E120C1226281E322A26041E2118
+:10053000001F00211E040102013F213F0A4E6F20CF
+:1005400053442063617264206F720A6E6F204C4FB7
+:10055000414445522E4845580A0A153A457869746F
+:10056000001D20466C617368696E670A20206C6FFD
+:10057000616465722E2E2E0A0A444F4E2754205471
+:1005800055524E204F464621000A0A153A49676ED9
+:100590006F7265006D560A0A504C45415345205410
+:1005A00055524E204F464620004C4F572042415452
+:1005B0005445525921200017534400161378001651
+:1005C0001314001510200015201000540A03E181B7
+:1005D000867F3E186D830F0F0E0183866033186D82
+:1005E000C3198F1803C38E6033186DE330CF18031F
+:1005F000C39E603630CDE360CF3006C79E7E3E306E
+:10060000CDB360CF300CC6F6603330D9B660CF338F
+:10061000CFCCF66061B0DB1E60CF30D86CE6C06135
+:10062000B0DB1E618F19986CC6C063B19B0E330F8F
+:100630000FB078C6FF7E1F1B061E0F05008930080D
+:10064000023802497868140000F6E8DBCFC3B8AE80
+:10065000A49B928A827B746E68625C57524E4945B5
+:10066000413E3A3734312E2C29272523211F1D1CCA
+:100670001A1917161514131211100F0E0D0C0B0A60
+:1006800009080706450068010000050068013801F7
+:1006900000000500380168010000A2069E06010165
+:1006A000FF030101F703000000070002010000033F
+:1006B00004060000000000000000010204081020F1
+:1006C00040800102040810200102040810200404E4
+:1006D00004040404040402020202020203030303EA
+:1006E0000303000000002300260029000000000092
+:1006F000250028002B0000000000240027002A000D
+:10070000BE030E04120411241FBECFEFD8E0DEBFDB
+:10071000CDBF11E0A0E0B1E0E4EDF2E502C005904C
+:100720000D92AE35B107D9F727E0AEE5B1E001C0D3
+:100730001D92A837B207E1F713E0C2E8D3E004C086
+:100740002197FE010E94CE24C038D107C9F70E942C
+:10075000AD030C945D290C9400000E9403210E94BB
+:1007600095048EE591E00E949A1C68E670E08EE5A3
+:1007700091E00E941D1C0E94CC0FF7CF1092AF0198
+:100780001092AE0183E591E09093AD018093AC01AE
+:1007900008958EEE91E00E94710781E08093EE0152
+:1007A00087E890E09093ED018093EC0182E08093E4
+:1007B000EB011092E9011092EA0186E28093E501D3
+:1007C00084E18093E6010E940B0586E090E00E94A0
+:1007D0001F06882349F042E067E770E08EE591E06C
+:1007E0000E945819811108958EEE91E00E94CB0B62
+:1007F0000E94530681110E9416040E94130588234B
+:10080000E1F30E941D058EEE91E00E94070B85EE3C
+:1008100091E00E942D050E943204D7CF8EEE91E028
+:100820000C9463068EEE91E00C9464068091F404BF
+:10083000811117C081E08093F4043091F504209178
+:10084000F6048091F7048091F8048091F904809176
+:10085000FA048091FB048091FC04832F922F0C9466
+:100860005E2608952091F5043091F6044091F70436
+:100870005091F8046091F9047091FA048091FB049E
+:100880009091FC04A1E00E94C2242093F5043093CF
+:10089000F6044093F7045093F8046093F9047093BE
+:1008A000FA048093FB049093FC0408958F929F9226
+:1008B000AF92BF92CF92DF92EF92FF924B015C0119
+:1008C00069017A010E945926BC01990F880B990B86
+:1008D000C818D908EA08FB08A70196012F5F3F4F07
+:1008E0004F4F5F4F0E947624680D791D8A1D9B1D16
+:1008F000FF90EF90DF90CF90BF90AF909F908F9040
+:100900000895E2E9F4E013861286118610861082BB
+:1009100011821282138214821582168217823C96EB
+:1009200084E0E23FF80779F708951092F5041092F9
+:10093000F6041092F7041092F8041092F904109241
+:10094000FA041092FB041092FC041092F3040E942B
+:1009500081041092F2040895EF92FF920F931F9377
+:10096000CF93DF93CDB7DEB72C970FB6F894DEBFE9
+:100970000FBECDBF49835A836B837C839E83EF82F6
+:10098000F88609871A873C8769817A814F81588563
+:10099000240F352F311D62177307C8F4860F972F68
+:1009A000911D4817590798F46B817C8149855A85B8
+:1009B0008C85840F952F911D6817790740F42E813F
+:1009C000260F372F311D81E04217530708F080E0D2
+:1009D00081702C960FB6F894DEBF0FBECDBFDF91AD
+:1009E000CF911F910F91FF90EF90089550E0480F25
+:1009F000511D87FD5A9557FD0CC0843554F430E0E5
+:100A0000260F311D67FD3A9537FD03C081E0603345
+:100A10000CF080E008951092B2016AEB73E08CEA6A
+:100A200091E00C94C3158EE591E00E94A01891E02E
+:100A3000811101C090E0892F089560E08CEA91E077
+:100A40000E94C5108CEA91E00C94B410FC01238143
+:100A50004281618180810C94F604EF920F931F9381
+:100A6000CF93DF93EC01009701F10E9426058823C4
+:100A7000E1F01091CC0140E06E818CEA91E00E949F
+:100A800016112F813885ED800C81498168818CEAAF
+:100A900091E00E94DC14612F8CEA91E0DF91CF910C
+:100AA0001F910F91EF900C941211DF91CF911F9134
+:100AB0000F91EF900895FC01849108950196FC0137
+:100AC000849108954CE3BC018EE591E00C94781775
+:100AD0000F931F93CF93DF938C01C091CA01D091E4
+:100AE000CB0122974093B5012093B6018CEA91E0A7
+:100AF0000E94C31540E061E08CEA91E00E9416116B
+:100B0000B8018CEA91E00E94CC22209749F0BE0106
+:100B10008CEA91E0DF91CF911F910F910C94C31556
+:100B2000DF91CF911F910F910895FF920F931F9323
+:100B3000CF93DF93D82F162FC42FF22E242F0E948D
+:100B4000F6048823C1F00091CC016F2D8CEA91E06E
+:100B50000E9412112C2F412F6D2F8CEA91E00E94E0
+:100B6000A311602F8CEA91E0DF91CF911F910F913B
+:100B7000FF900C941211DF91CF911F910F91FF9074
+:100B80000895EF92FF920F931F93CF93DF93C82F97
+:100B9000D62F142FF22E0E94F6048823D1F0E09075
+:100BA000CC01602F8CEA91E00E9412110F2D212FB1
+:100BB0004D2F6C2F8CEA91E00E9452116E2D8CEA21
+:100BC00091E0DF91CF911F910F91FF90EF900C94E6
+:100BD0001211DF91CF911F910F91FF90EF90089527
+:100BE000EF92FF920F931F93CF93DF93C82FD62FCF
+:100BF000142FF22E0E94F6048823D1F0E090CC014D
+:100C0000602F8CEA91E00E9412110F2D212F4D2FA1
+:100C10006C2F8CEA91E00E947A116E2D8CEA91E0A3
+:100C2000DF91CF911F910F91FF90EF900C941211D3
+:100C3000DF91CF911F910F91FF90EF900895682F52
+:100C400088E691E00E94221091E0811101C090E0BD
+:100C5000892F0895CF93C62F682F88E691E00E94D0
+:100C6000411091E0C81708F090E0892FCF910895C6
+:100C700060E00C942A0681E090E00E943806811121
+:100C800010C083E090E00E94380681110AC090E015
+:100C900080E00E943806811104C082E090E00C944C
+:100CA000380681E008950E943B0681110AC084E065
+:100CB00090E00E943806811104C085E090E00C9419
+:100CC000380681E00895089508950F931F93CF93F8
+:100CD000DF93CDB7DEB728970FB6F894DEBF0FBE0F
+:100CE000CDBF162F00E028E044E56BE280E00E94D3
+:100CF000F0051F921F9386E091E09F938F931F92C0
+:100D000088E08F938E010F5F1F4F1F930F930E94F8
+:100D100070262CE244E068E372E0C8010E94680596
+:100D20000FB6F894DEBF0FBECDBF28960FB6F8946D
+:100D3000DEBF0FBECDBFDF91CF911F910F91089500
+:100D4000CF92DF92FF920F931F93CF93DF93CDB794
+:100D5000DEB760970FB6F894DEBF0FBECDBF6C0153
+:100D600060E08CEA91E00E94121105E024E540E089
+:100D700060E08CEA91E00E947A11F60181891F926D
+:100D80008F938CE091E09F938F931F9280E1F82ED8
+:100D9000FF928E010F5F1F4F1F930F930E947026CB
+:100DA00021E042E068E372E0C8010E946805F601B4
+:100DB00082891F928F9381E191E09F938F931F927D
+:100DC000FF921F930F930E94702621E046E168E393
+:100DD00072E0C8010E946805F60183891F928F9313
+:100DE00086E191E09F938F931F92FF921F930F9341
+:100DF0000E94702621E04AE268E372E0C8010E9486
+:100E000068050FB6F894DEBF0FBECDBF60960FB673
+:100E1000F894DEBF0FBECDBFDF91CF911F910F9130
+:100E2000FF90DF90CF900895CF92DF92EF92FF92E4
+:100E30000F931F93CF93DF9300D000D000D0CDB796
+:100E4000DEB76B0109831A832B833C837C012CE67C
+:100E5000E21A2DEFF20AF7014081403208F03FC05C
+:100E600054E1242F30E08C01549F000D111D1124FA
+:100E7000F801658F2F5F3F4F529FB001539F700D58
+:100E80001124860F971F29813A81FC013183208329
+:100E90008B819C81F801978B868B8C2D0E947C0E18
+:100EA000F801848F81E083A3F2E0CF16D1040CF423
+:100EB00080E0F80181A3F70180818F5F808381E06A
+:100EC00026960FB6F894DEBF0FBECDBFDF91CF914F
+:100ED0001F910F91FF90EF90DF90CF90089580E0E9
+:100EE000EFCFEF92FF920F931F93CF93DF9300D03A
+:100EF00000D000D0CDB7DEB77C018C010C561D4F61
+:100F0000D8011C92FC01E256FD4F8FEF8083C70190
+:100F10008B569D4F0E94ED0B0E94D60CF7017496E4
+:100F200084E1DF01982F1D929A95E9F77496E017F6
+:100F3000F107B9F789E1D70151968C93519782E374
+:100F400052968C9352978BE453968C9324E130E025
+:100F500040E050E060E070E0CB010E9456047A83EC
+:100F6000698324E130E040E050E060E070E0CB01D4
+:100F70000E945604262F7C836B8309811A813C8151
+:100F80004D815E8164E070E0C7010E941407811109
+:100F900004C088EA90E00E94620528E330E040E067
+:100FA00050E060E370E080E090E00E9456047A83B5
+:100FB000698328E330E040E050E060E370E080E0E7
+:100FC00090E00E9456047C836B8380E00E944A0D6F
+:100FD0008D8380E00E94540DF701EF55FD4F108284
+:100FE00031961082329710823397108209811A81CC
+:100FF0002B813C814D81582F70E060E0C7010E9439
+:101000001407811110C081E990E026960FB6F8947C
+:10101000DEBF0FBECDBFDF91CF911F910F91FF902B
+:10102000EF900C94620526960FB6F894DEBF0FBEC3
+:10103000CDBFDF91CF911F910F91FF90EF90089559
+:10104000CF93DF9300D000D000D0CDB7DEB7FC0146
+:10105000E956FD4F2081318144E150E0421B530BA2
+:101060008B569D4FFC018081918126E230E0281B48
+:10107000390B3A8329835C834B833A815C8168E036
+:1010800078E080E090E026960FB6F894DEBF0FBEC1
+:10109000CDBFDF91CF9108953F924F925F926F92B3
+:1010A0007F928F929F92AF92BF92CF92DF92EF92F8
+:1010B000FF920F931F93CF93DF9300D000D000D007
+:1010C000CDB7DEB75C018C01912C88248A9444242E
+:1010D0004A94542C3201F80183A1882309F444C0B6
+:1010E00084A1811141C0C5010E94200829833A834F
+:1010F0004B835C836D837E83F801C488D588E68842
+:10110000F788858D0E944A0D382EF801858D0E9442
+:10111000540D29813A81C21AD30A232D30E0359526
+:101120002795C20ED31E2B813C81E21AF30A90E070
+:1011300095958795E80EF91ECC9CC001CD9C900D2D
+:10114000900D1124EE9C9001EF9C300D300D112478
+:10115000820F931FB0E0A0E084159505A605B705A2
+:1011600018F4892C2C013D010C5E1F4F9394F0E282
+:101170009F12B1CFF501E256FD4F808226960FB641
+:10118000F894DEBF0FBECDBFDF91CF911F910F91BD
+:10119000FF90EF90DF90CF90BF90AF909F908F9097
+:1011A0007F906F905F904F903F900895FC01E356C1
+:1011B000FD4F2081222351F033962081211106C05A
+:1011C00031968081853010F48F5F808308958F92EF
+:1011D0009F92BF92CF92DF92EF92FF920F931F9355
+:1011E000CF93DF9300D000D000D0CDB7DEB77C0125
+:1011F0004B016A01FB0181850E944A0D182FF40101
+:1012000081850E94540DB82EF4010081812F90E059
+:101210009C0135952795280F391F032E000C440B90
+:10122000550B612F70E090E080E00E945604060F9D
+:10123000F40112818B2D90E09C0135952795280FA4
+:10124000391F032E000C440B550B6B2D70E090E002
+:1012500080E00E9456041E821D82802F90E09A83B7
:101260008983160F612F70E0212F7C836B831A8195
-:101270003C8140E05E8170E060E0C7010E940F07A2
-:1012800026960FB6F894DEBF0FBECDBFDF91CF918B
-:101290001F910F91FF90EF90DF90CF90BF90089536
-:1012A0000F931F93CF93DF93EC01CF55DD4F288130
-:1012B0008C0100561D4F253018F5FC01E256FD4FFC
-:1012C00020812F3F81F0FC0134E12302E00DF11D6C
-:1012D000112421E024A3FC01E356FD4F20838E5509
-:1012E0009D4FFC011082188281E09881953008F4AE
-:1012F00080E0F8018083DF91CF911F910F910895D5
-:10130000F8012081222381F3FC0130E020E044A198
-:10131000442399F0FC01EE55FD4F4081423021F706
-:101320002F5F3F4F44E1429FB001439F700D112456
-:10133000680F791F0E94E208D7CF2F5F3F4F749646
-:101340002032310521F7D0CFCF93DF93EC01C35684
-:10135000DD4F28812223D9F0DC01A156BD4F2C910D
-:101360002530C0F0FC019C0120583D4F44A14111A3
-:1013700014A27496E217F307C9F71C921882FC01B5
-:10138000E056FD4F10828F559D4FFC011082DF917A
-:10139000CF9108952F5F2C93FACFCF92DF92EF92E7
-:1013A000FF920F931F93CF93DF9300D000D000D014
-:1013B000CDB7DEB78C01FC01E356FD4F8081882359
-:1013C00009F1C8010E941B0829833A834B835C837F
-:1013D0006D837E83F801680120E8C21A2DEFD20ADE
-:1013E00084A19F012C5E3F4F7901882339F04B8106
-:1013F0005C8169817A81C9010E94310EF701EC1488
-:10140000FD0471F7F801E156FD4F108226960FB6E4
-:10141000F894DEBF0FBECDBFDF91CF911F910F912A
-:10142000FF90EF90DF90CF900895EF92FF920F938F
-:101430001F93CF93DF93FC01E056FD4F20812223C1
-:1014400049F1EC017C0180E8E81A8DEFF80A8E0181
-:101450000E551D4F8CA164968823C9F0CE010E94C1
-:10146000590FF80140819FEF940F282F30E0491762
-:1014700071F0993008F097E0B901092E02C0759516
-:1014800067950A94E2F760FF0CC0F8019083CE15CF
-:10149000DF0501F7DF91CF911F910F91FF90EF9042
-:1014A00008959150E4CFEF92FF920F931F93CF9343
-:1014B000DF93FC01E056FD4F2081222349F1EC012E
-:1014C0007C0180E8E81A8DEFF80A8E010E551D4F59
-:1014D0008CA164968823C9F0CE010E94590FF801AF
-:1014E000408191E0940F282F30E0491771F0983037
-:1014F00008F090E0B901092E02C0759567950A942D
-:10150000E2F760FF0CC0F8019083CE15DF0501F70C
-:10151000DF91CF911F910F91FF90EF9008959F5F02
-:10152000E4CF0F931F93CF93DF93EC01FC01E056C0
-:10153000FD4F80818823A9F1FE0190E080E024A185
-:101540000196222351F144E1489F9001499F300DBB
-:101550001124CE01820F931F0E94590F90E08E013B
-:101560000E551D4FF801208102C0959587952A954B
-:10157000E2F780FD03C0CE010E94530AF80180818A
-:1015800090E00E94610F2CE248E264EA71E0DF9192
-:10159000CF911F910F910C94630574968032910541
-:1015A00071F6DF91CF911F910F9108958F929F92C5
-:1015B000AF92BF92CF92DF92EF92FF920F931F9361
-:1015C000CF93DF93EC018C010C5E1F4FF12CE12CCB
-:1015D000912C6C0182E6C81A8DEFD80A5E01EBE609
-:1015E000AE1AEDEFBE0AF80187858823D9F0F6011F
-:1015F00080818F3F39F0082E000C990B41E08E1549
-:101600009F0509F040E0B501C8010E940D0DF801E9
-:101610008088882039F0911005C06085CE010E9435
-:101620006006982CFFEFEF1AFF0A0C5E1F4F80E256
-:10163000E816F104C1F68881882339F1992099F0E0
-:1016400001E023E04AE06CE284E40E94BC05FE0174
-:10165000EF55FD4F4081442331F0440F23E06CE20D
-:1016600084E40E94EB05CE010E94910ACE01DF9135
-:10167000CF911F910F91FF90EF90DF90CF90BF908F
-:10168000AF909F908F900C949B06DF91CF911F910C
-:101690000F91FF90EF90DF90CF90BF90AF909F9011
-:1016A0008F900895CF93DF93EC0184E090E00E9447
-:1016B0003306882329F0CE01DF91CF910C94D10815
-:1016C00084E090E00E941A06882329F0CE01DF9181
-:1016D000CF910C94500985E090E00E943306882356
-:1016E00029F0CE01DF91CF910C94A40985E090E020
-:1016F0000E941A06882329F0CE01DF91CF910C9425
-:10170000CD0990E080E00E941A06882329F0CE01DE
-:10171000DF91CF910C94150A82E090E00E941A06A6
-:10172000882329F0CE01DF91CF910C94530ADF91E9
-:10173000CF9108950F931F93CF93DF93EC018C010A
-:101740000B561D4FFC01E056FD4F6081C8010E9401
-:10175000A20CC8010E94040CCE010E94470860E25E
-:1017600070E0CE0144960E94390ECE01DF91CF91F8
-:101770001F910F910C94520BFC0111821082138265
-:1017800012821482158283E0868317820895CF9394
-:10179000DF93CDB7DEB72C970FB6F894DEBF0FBE40
-:1017A000CDBF1C861B86FC0122813381420F531F53
-:1017B00080819181680F791F78876F835A87498765
-:1017C00086E0FE013796DE01119601900D928A9512
-:1017D000E1F729813A814B815C816D817E8180E0D6
-:1017E00090E02C960FB6F894DEBF0FBECDBFDF9110
-:1017F000CF910895FC019081490FDB014C938281C8
-:10180000280F11962C930895CF93DF93EC018F81CD
-:10181000882319F01C821D821BC08E818330D8F46E
-:101820008F5F8E832C8188819981820F911D27FD86
-:101830009A9597FF80C0998388832D818A819B81A7
-:10184000820F911D27FD9A9597FF79C09B838A830C
-:10185000DF91CF9108951E820E943606882369F198
-:1018600090E080E00E943306882329F08C8187FF76
-:1018700047C08E5F8C8381E090E00E94330688230E
-:1018800029F08D8187FF41C08E5F8D8383E090E0DA
-:101890000E943306882331F08D8118160CF03AC06F
-:1018A00082508D8382E090E00E943306882329F0E5
-:1018B0008C8118169CF582508C8390E080E00E9409
-:1018C000330681110BC082E090E00E943306811143
-:1018D00005C08C81181634F581508C8381E090E02E
-:1018E0000E94330681119ECF83E090E00E94330670
-:1018F000811198CF8D811816CCF481508D8392CFB1
-:1019000085300CF0B8CF8F5FB5CF85300CF0BECFEF
-:101910008F5FBBCF8C3F34F28150C3CF8C3F6CF2D2
-:101920008150CACF8823D1F28F5FD7CF882309F4A3
-:1019300079CF8F5FE3CF198218821C827ECF1B8202
-:101940001A8269CFFC0167830895FF920F931F935A
-:10195000CF93DF9303E215E087E591E0F8019087EC
-:1019600087830E945605F801828387E591E00E94F3
-:101970005905F801838315821482FF24F394F682BB
-:10198000C6EFD4E081E691E098878F830E945605E8
-:101990008A8381E691E00E9459058B831D821C8217
-:1019A000FE828DE091E0F801928F818F0E945605B2
-:1019B000F801848B8DE091E00E945905F801858B38
-:1019C000178A168AF08E83EC90E09A8F898F0E9496
-:1019D00056058C8B83EC90E00E9459058D8B1F8AF5
-:1019E0001E8A83E0888FDF91CF911F910F91FF9026
-:1019F000089599E0899FF0011124ED5DFA4F8781E8
-:101A000090850C94560599E0899FF0011124ED5DB5
-:101A1000FA4F878190850C9459058F929F92AF92CF
-:101A2000BF92CF92DF92EF92FF920F931F93CF93CB
-:101A3000DF9300D000D000D0CDB7DEB77C016B01C2
-:101A4000842EDC011F968C911F97882309F480C097
-:101A500019969C90E92DF0E0B9E09B9E800111243D
-:101A6000D7011D968C911D978111B3C01E968C9144
-:101A7000882309F480C00A501B4FF8011482158294
-:101A8000882351F0D70153968C9153978F5F8530FF
-:101A900008F074C053968C93D7011A968D919C913F
-:101AA0001B978130910509F48AC008F484C0823004
-:101AB000910509F46AC0039709F473C0F701228104
-:101AC000338140815181B801C6010E94FA0BC801DF
-:101AD0000E942A05811005C0D70150968C91882359
-:101AE000B9F1F7014281538160817181C6010E9481
-:101AF000C70B29833A834B835C83C980DA80AB8030
-:101B0000BC80D70150968C9101E0811101C003E0A7
-:101B1000892D0E94F90C182F892D0E94030DF701C1
-:101B20009585992309F477C0282F26952695280FA7
-:101B3000412F46954695410F8695869586956A2D47
-:101B4000681B1695169516958C2D811B0E94BC0559
-:101B500026960FB6F894DEBF0FBECDBFDF91CF91B2
-:101B60001F910F91FF90EF90DF90CF90BF90AF90BB
-:101B70009F908F9008950D5D1A4F7FCFF701138AC4
-:101B8000848591E08927848787CF82E0F801858367
-:101B9000D7011C968C91882309F490CF83E085832C
-:101BA0008DCFF7018485882309F488CF81E0D8019F
-:101BB00015968C9383CF81E0F8018483E8CF81E090
-:101BC000F80184831C968C91882309F477CF82E0F6
-:101BD000E6CFC8018A509B4F5C01EE0FFF1FE95E04
-:101BE000FE4F818112962D913C911397280F311D44
-:101BF00087FD3A9580814D915C91480F511D87FD7D
-:101C00005A95B501C6010E94FA0BC5010E942A052A
-:101C10000D5D1A4F53CF682F66956A0D7B2D711D90
-:101C2000812F8695202F412F8C0D9D2D911D26965D
-:101C30000FB6F894DEBF0FBECDBFDF91CF911F91DD
-:101C40000F91FF90EF90DF90CF90BF90AF909F905B
-:101C50008F900C949005E82FF0E0ED5BFE4F8081B3
-:101C60000895FC01758364835783468381E08687EA
-:101C700008952F923F924F925F926F927F928F9230
-:101C80009F92AF92BF92CF92DF92EF92FF920F930B
-:101C90001F93CF93DF93CDB7DEB762970FB6F8945B
-:101CA000DEBF0FBECDBF382E292E7E876D87C82E92
-:101CB000D92E912C812C4D855E8584169506C9F40C
-:101CC00062960FB6F894DEBF0FBECDBFDF91CF9105
-:101CD0001F910F91FF90EF90DF90CF90BF90AF904A
-:101CE0009F908F907F906F905F904F903F902F903C
-:101CF0000895D6011F968C911F97882309F4D2C0AE
-:101D00001E968C911E97882309F4CCC04D915C914E
-:101D100011971996EC911997F0E0E25CFE4F508014
-:101D2000252D30E014966D917C911597FA01E21BF8
-:101D3000F30B6E177F07A0F51B961C921E921A9745
-:101D4000452C4194982FD60112966D917C91139752
-:101D500016964D915C911797FB01E21BF30B4E1702
-:101D60005F0760F5E2E0F0E01B96FC93EE931A97B4
-:101D70005194D6011E968C93882309F493C0A32C0A
-:101D8000B22C712C612C442D042C000C550B588B5B
-:101D90004F87852D052C000C990B9A8B898B23C0BE
-:101DA000420F531F412C90E04617570760F641E061
-:101DB00050E0F60153874287452CC4CF260F371FCA
-:101DC0002417350738F4E3E0F0E01B96FC93EE931C
-:101DD0001A97CFCF892F512CCCCFFFEF6F1A7F0AE4
-:101DE00024E1A20EB11CAD85BE856A167B0609F4FE
-:101DF00045C0F601808191812F853889820F931F1C
-:101E000098878F838281938149895A89840F951F8E
-:101E10009A87898781850E94F90C8B87D60119964C
-:101E20008C910E94030D8C87F50187858823A9F288
-:101E30008614970491F2808191819A8389839C838F
-:101E40008B8381850E94F90C8D83D50119968C9125
-:101E50000E94030D8E83E980FA800B811C812D8105
-:101E6000382F4F81588569857A858B859C850E949E
-:101E70006204882309F4B1CFF6011686F60186853F
-:101E8000882381F080819181840D911D47FC9A9572
-:101E90009183808382819381850D911D57FC9A9552
-:101EA00093838283FFEF8F1A9F0A24E1C20ED11C15
-:101EB00002CFDC011996EC91F0E0E15EFE4F8081EB
-:101EC0000895880F991FFC01E85CFE4F8081918185
-:101ED0000895BC016F5F7F4F80E1FB0111928A95ED
-:101EE000E9F788E591E00C94571C43E06BE671E05C
-:101EF00088E591E00E94BA18811106C088EE91E051
-:101F00000E94690F0C947F030895FC0188E0808390
-:101F100089E0818387E0828386E0838384E0848311
-:101F200082E0858381E186830895FF920F931F935A
-:101F3000CF93DF93EC018C01095F1F4FFF24FA94CC
-:101F400062E088810E94412188810E94AB212F811B
-:101F5000892B81F42F5F2F8360E088810E944121CB
-:101F60002196C017D10761F7DF91CF911F910F9193
-:101F7000FF9008952223A1F32F3F11F41F82ECCF8D
-:101F8000FF82EACFFC01E60FF11D81E097819130DD
-:101F900009F080E00895FC01E60FF11D81E09781D2
-:101FA0009F3F09F080E00895860F911DFC01878115
-:101FB000423038F49FEF980F81E09E3F50F080E070
-:101FC00008C08F3FE1F3642F0E94A42381E0913089
-:101FD000B1F70895860F911DFC0187818F3F09F4A9
-:101FE00080E008958EBD0DB407FEFDCF8EB5089537
-:101FF0001F93CF93DF93EC01162FF89460E08F8549
-:102000000E947D21888918161CF460E00E947D21C1
-:10201000812F0E94F20F888918161CF461E00E943B
-:102020007D217894DF91CF911F910895E0E5F5E04F
-:1020300028EF31E0DF01A9011D9241505040E1F746
-:10204000DC0119961C9219971A961C92089548EF74
-:1020500051E06FEF7FEF80E595E00C94CB25CF92B8
-:10206000DF92EF92FF920F931F93CF93DF93EC01D8
-:102070008C858F5F8C8780E5E82E85E0F82E10E058
-:10208000612F6064CE010E94F80F60E8CE010E94CB
-:10209000F80F61E08F850E947D21888918161CF455
-:1020A00060E00E947D21670104E5F60181916F01E6
-:1020B0000E94F20F0150C9F7888918161CF461E0DC
-:1020C0000E947D211F5FF4E5EF0EF11C1630C1F672
-:1020D00060E4CE01DF91CF911F910F91FF90EF90BF
-:1020E000DF90CF900C94F80FFC0160A361A30895DA
-:1020F000FC0160A341A30895EF92FF920F931F93F9
-:10210000CF93DF938C01D62FF42EE22EC0E0CE15B4
-:1021100044F44F2D4C0F6D2FC8010E94C104CF5FB6
-:10212000F6CFDF91CF911F910F91FF90EF9008951F
-:10213000EF92FF920F931F93CF93DF938C01F62EB4
-:10214000D42FE22EC0E0CE1544F46F2D6C0F4D2F2E
-:10215000C8010E94C104CF5FF6CFDF91CF911F91DC
-:102160000F91FF90EF900895EF92FF920F931F93BE
-:10217000CF93DF937C01162FD42FC22F0E9498108B
-:102180004FEF400F4D0F2C2F612FC7010E94981069
-:10219000202F4D2F612FC7010E947C106FEF6C0F15
-:1021A000610F202F4D2FC701DF91CF911F910F910C
-:1021B000FF90EF900C947C10DF92EF92FF920F93C0
-:1021C0001F93CF93DF937C01D62FD22EC42F002EE6
-:1021D000000C110B040F111D47FD1A958C2F0C2EAE
-:1021E000000C990B8017910744F42D2D4C2F6D2F67
-:1021F000C7010E949810CF5FF1CFDF91CF911F915F
-:102200000F91FF90EF90DF9008959F92AF92BF9251
-:10221000CF92DF92EF92FF920F931F93CF93DF93B2
-:102220008C01E62EF42EC22F81E0D82ED21AC22EB7
-:10223000C194CC0C422F4F0DC8010E94C1044F2DF8
-:102240004C1B6E2DC8010E94C1046C2F6E0D4F2DCA
-:10225000C8010E94C1046E2D6C1B4F2DC8010E9445
-:10226000C104D0E0DC170CF044C0D7FC04C0C1505E
-:10227000C394C394DC0CDF5F8D2F880F8F5FD80E63
-:102280009E2C9D0EBF2CBC0E4B2D692DC8010E94AB
-:10229000C104AE2CAD1A4B2D6A2DC8010E94C10499
-:1022A000BF2CBC1A4B2D692DC8010E94C1044B2DB7
-:1022B0006A2DC8010E94C104BF2CBD0E4B2DAE2C4F
-:1022C000AC0E6A2DC8010E94C1044B2DBE2CBC1A55
-:1022D0006B2DC8010E94C1049F2C9D1A492D6A2DA7
-:1022E000C8010E94C104492D6B2DC8010E94C10480
-:1022F000B9CFDF91CF911F910F91FF90EF90DF90B9
-:10230000CF90BF90AF909F9008958F929F92AF9281
-:10231000BF92CF92DF92EF92FF920F931F93CF93D2
-:10232000DF937C01162FD42EC22F81E0C82EC21A53
-:10233000B22EB194BB0CD0E0802F8470A82E802FD9
-:102340008270982E802F8870882E0170DC170CF018
-:102350004DC0C7FC04C0C150B394B394CB0CDF5F35
-:102360008D2F880F8F5FC80EAA2071F04D2D4C0F56
-:10237000612F6D0FC7010E94C1044D2D4D0F6C2FB1
-:10238000610FC7010E94C104992071F04D2D4C1BB3
-:10239000612F6D0FC7010E94C1044D2D4D1B6C2F85
-:1023A000610FC7010E94C104882071F04D2D4D0FAF
-:1023B000612F6C1BC7010E94C1044D2D4C0F612F72
-:1023C0006D1BC7010E94C104002309F4BFCF4D2D2E
-:1023D0004D1B612F6C1BC7010E94C1044D2D4C1B6E
-:1023E000612F6D1BC7010E94C104B0CFDF91CF9157
-:1023F0001F910F91FF90EF90DF90CF90BF90AF9023
-:102400009F908F9008957F928F929F92AF92BF92EC
-:10241000CF92DF92EF92FF920F931F93CF93DF93B0
-:102420005C01C62E942EC22F11E0121BD22ED19425
-:10243000DD0C83E0F82ED0E0802F8170782E882488
-:1024400083948E0C0270DC17ACF517FD04C0C150EC
-:10245000D394D3941D0DDF5F1F0D772099F02C2F9F
-:10246000220F280D492D4C1B6C2D6D0FC5010E94AC
-:102470007C102E2D2F0D492D4D1B6C2F6C0DC50181
-:102480000E947C10002399F02C2F220F280D492D3B
-:102490004C1B6C2D6D1BC5010E947C102E2D2F0D29
-:1024A000492D4D1B6C2D6C1BC5010E947C10F394B3
-:1024B000F394C9CFDF91CF911F910F91FF90EF90CF
-:1024C000DF90CF90BF90AF909F908F907F900895B6
-:1024D0009F92AF92BF92CF92DF92EF92FF920F93B3
-:1024E0001F93CF93DF93EC01B62E142FD22EAE2C78
-:1024F000AA0C922E9A18CE2CC60E292D6C2D0E9455
-:102500009810FF24FA94F00EF10E292D4F2D6C2D0A
-:10251000CE010E9498100A191E0D202F412F6B2DFD
-:10252000CE010E947C10DB0C6FEF6D0D202F412F30
-:10253000CE010E947C1001E02E2D412F6C2DCE018A
-:102540000E9485118E2D8095D80E02E02E2D412FF0
-:102550006D2DCE010E948511FE1804E02E2D4F2D09
-:102560006D2DCE010E94851108E02E2D4F2D6C2D72
-:10257000CE010E948511DF91CF911F910F91FF90A5
-:10258000EF90DF90CF90BF90AF909F900895AF9263
-:10259000BF92CF92DF92EF92FF920F931F93CF9350
-:1025A000DF936C01C62FF42EA22ED02F1E2DEE0C21
-:1025B000B12EB60E2E196B2D0E94DC10D150DE19F3
-:1025C000F10E6FEF6C0F6A0D611BED2E01E0212FF4
-:1025D0004F2DC6010E94031202E0212F4F2D6B2DBB
-:1025E000C6010E940312DF91CF911F910F91FF90BE
-:1025F000EF90DF90CF90BF90AF9008952F923F92D1
-:102600005F926F927F928F929F92AF92BF92CF9282
-:10261000DF92EF92FF920F931F93CF93DF93EC0122
-:10262000F901E4903196849164350CF015C10E2CBB
-:10263000000CFF08062F062E000C110BF701E00F0F
-:10264000F11F1E161F060CF007C140330CF004C129
-:10265000A82FC42E042E000CDD085601A80EB11CB4
-:1026600087FDBA941A141B040CF0F6C02E5F3F4F7E
-:10267000570197E0A90EB11CB7FE04C05701BEE098
-:10268000AB0EB11CB3E0B594A794BA95E1F747FF40
-:102690000AC0A42FA80FAC9CC001AD9C900D1124C2
-:1026A000281B390B40E08A2F0A2E000C990B840F4F
-:1026B000911D47FD9A95C19714F0A0E3A41BF8A0C3
-:1026C00067FD60E0E535F10514F0E4E5F0E09E2FEC
-:1026D000CC85C427C62E062E000CDD08F601E01BB3
-:1026E000F10B8F014F01F7E08F229924E0E8F0E031
-:1026F00002C0F595E7958A94E2F77E2F17FF02C096
-:10270000095F1F4FF3E015950795FA95E1F7200F44
-:10271000311F542F577081E001C0880F5A95EAF796
-:10272000459545954595F601B4E54B02E00DF11D43
-:102730001124AF01405B5A4FD0E02A2EAA0F330874
-:10274000EE24E394BB24D21513040CF085C0F901E8
-:102750005490F1E0FF121AC06901962E8A01E72F0A
-:10276000991608F057C08E2E852021F0D8018C9044
-:10277000882A8C92E69531F4BFEFCB1ADB0AF6017A
-:102780005490E0E893940F5F1F4FEACFF1101CC004
-:10279000782E70946901962E8A01E72F991608F019
-:1027A00039C08E2E852021F0D8018C9087208C9204
-:1027B000E69531F4BFEFCB1ADB0AF6015490E0E85E
-:1027C00093940F5F1F4FEACFF3E0FF122CC0782ED7
-:1027D00070946901862E8A01972E8916D0F4E92D0E
-:1027E000E52141F0D801EC916C2E682460FE0FC009
-:1027F000E82BEC93969439F4BFEFCB1ADB0AF60181
-:102800005490E0E89E2E83940F5F1F4FE6CFE721A0
-:10281000F0CFCE25880F19F44C5A5F4F81E0DF5F6F
-:102820002A0D3B1D90CF6901962E8A01E72F99163C
-:1028300088F78E2E852021F0D8018C9088268C92E6
-:10284000E69531F4BFEFCB1ADB0AF6015490E0E8CD
-:1028500093940F5F1F4FEBCFDF91CF911F910F919B
-:10286000FF90EF90DF90CF90BF90AF909F908F90B0
-:102870007F906F905F903F902F9008952F923F929E
-:102880004F925F926F927F928F929F92AF92BF9280
-:10289000CF92DF92EF92FF920F931F93CF93DF932C
-:1028A00000D000D000D01F92CDB7DEB74C01462E2D
-:1028B000342E69018E2D01111DC0E1101BC0C40111
-:1028C00027960FB6F894DEBF0FBECDBFDF91CF9134
-:1028D0001F910F91FF90EF90DF90CF90BF90AF903E
-:1028E0009F908F907F906F905F904F903F902F9030
-:1028F0000C94FE12F60154903196E490A52CB12C64
-:102900009501295F3F4FA90133E0559547953A95C9
-:10291000E1F75B834A830370F12CEE2DF0E0FD8339
-:10292000EC835A941FEF1E0D2F2D0F2C000C330B30
-:102930002A153B050CF070C0F982F7FE03C0F7E0E2
-:10294000FF0DF983298125952595259529839F2DAF
-:10295000977897FF03C09150986F9F5F20E8622E91
-:10296000712C02C0759467949A95E2F7212C4981E5
-:10297000042E000C550B4E5F5F4F5F834E83222D5C
-:10298000022C000C330BEC81FD812E173F070CF05D
-:1029900041C04A815B81429FF001439FF00D529FED
-:1029A000F00D11242E813F81E20FF31FEC0DFD1D70
-:1029B000E491F0E0E621F721EF2B41F1023069F0DC
-:1029C000612F62194F2D033061F0452D4F19622D93
-:1029D000013039F0422D6F2D04C0652D6F19412F44
-:1029E00042198823A9F0382F3370398380FF03C040
-:1029F000552D561B652F81FF03C08E2D841B482F3C
-:102A0000640D430DC4010E94C10489812394B7CF92
-:102A10001982F6CFF39488CF27960FB6F894DEBFCD
-:102A20000FBECDBFDF91CF911F910F91FF90EF901F
-:102A3000DF90CF90BF90AF909F908F907F906F90DE
-:102A40005F904F903F902F900895DC01FB0184919F
-:102A50008F5F14968C9314973196E491EF5F1596DF
-:102A6000EC9315976E5F7F4F5F967C936E935E97A6
-:102A70000895EF920F93CF93DF93EC014E876D870C
-:102A80002F87E98A088B81E0888788A319A28F8322
-:102A900066E273E0CE010E9425150E94612381E069
-:102AA0000E94772385E00E9485238CE00E9480238A
-:102AB00061E08E850E94412161E08D850E94412167
-:102AC00061E08F850E944121898918161CF461E01C
-:102AD0000E944121888918161CF461E00E9441215E
-:102AE000898918166CF460E00E947D216AE070E02C
-:102AF00080E090E00E943F2061E089890E947D2172
-:102B00008D85082E000C990BFC01E65CF94FE491D1
-:102B1000F0E0EE0FFF1FE85AF94F259134913D8BFD
-:102B20002C8BFC01EA5DF94FE491EB8F8E85082E2A
-:102B3000000C990BFC01E65CF94FE491F0E0EE0F1C
-:102B4000FF1FE85AF94F259134913B8B2A8BFC01EA
-:102B5000EA5DF94FE491EA8F8889082E000C990B01
-:102B6000FC01E65CF94FE491F0E0EE0FFF1FE85A3C
-:102B7000F94F259134913F8B2E8BFC01EA5DF94F83
-:102B8000E491EC8F8F85082E000C990BFC01E65C1C
-:102B9000F94FE491F0E0EE0FFF1FE85AF94F25914D
-:102BA0003491398F288FFC01EA5DF94FE491ED8F64
-:102BB00061E2CE010E94F80F64E1CE010E94F80F9D
-:102BC0008B8587FF02C08FE78B876B856068CE019E
-:102BD0000E94F80F60E2CE010E94F80F6CE0CE0177
-:102BE0000E94F80FCE01DF91CF910F91EF900C94DE
-:102BF0002F104F925F926F927F928F929F92AF921F
-:102C0000BF92CF92DF92EF92FF920F931F93CF93D9
-:102C1000DF93EC01862EF42E102F83E586170CF43B
-:102C200085C08FE284170CF481C04C814150550B54
-:102C3000049FC001059F900D1124860F911D67FD13
-:102C40009A95181619060CF071C03D818F2D0F2C26
-:102C5000000C990B039F800D911D11241816190665
-:102C60000CF064C078A0E62E912CC22ED12C292D18
-:102C7000092C000C330B8C8190E0281739070CF0DD
-:102C800054C00197E0E02817390771F0C89EF001A1
-:102C9000C99EF00DD89EF00D11242E0F3F1FEE8D12
-:102CA000FF8DE20FF31FE4915F2C612C492C480C3F
-:102CB0002D81862D062C000C990B2817190691F1F1
-:102CC0008CF1AE2EB12CE0FF16C0113061F4462D10
-:102CD0004F0D642DCE010E94C104F501F595E795D5
-:102CE0006394510EE5CF012F212F452D6E2DCE017E
-:102CF0000E94DC10F2CF89A198A1891771F388A3F3
-:102D0000113041F4462D4F0D642DCE010E94C104B7
-:102D100078A2E3CF012F212F452D6E2DCE010E94E9
-:102D2000DC10F6CF9394E10EA2CF78A2DF91CF9181
-:102D30001F910F91FF90EF90DF90CF90BF90AF90D9
-:102D40009F908F907F906F905F904F9008950F931A
-:102D5000CF93DF93EC01262F6A3049F428859D81BB
-:102D60008A85299F800D11248A8719861DC06D30A0
-:102D7000D9F008854A8569850E94F91528853C8126
-:102D80008985239F800D112489879F81992361F074
-:102D9000082E000C990B44E550E0239F401951097F
-:102DA000112448175907DCF281E090E0DF91CF91C0
-:102DB0000F910895FC01EC57FF4F718360838A5790
-:102DC0009F4F445FFC01408308956F927F928F92E2
-:102DD0009F92AF92BF92CF92DF92EF920F93CF93D9
-:102DE000DF934C015C0186E8A80EB11CD5018C91E3
-:102DF000882309F44AC0CCE0C81B8C3008F0C0E03E
-:102E0000F401EA5AFF4F81E080836401BEE4CB0EF7
-:102E1000D11C60E0C6010E9474103401E3E56E0E1F
-:102E2000711CD3018C9103E0080FDDE24D2F481B8C
-:102E30004C0F83E0E82E24E560E0C6010E94C71233
-:102E400061E0C6010E947410F301808103E0080F65
-:102E50004D2F481B4C0F24E560E0C6010E9468120C
-:102E6000F401E95AFF4F84E080833196D3018C91BD
-:102E7000C81BC15DC083BC9660817181C6010E9480
-:102E80000B22F501808181508083DF91CF910F91DA
-:102E9000EF90DF90CF90BF90AF909F908F907F90FA
-:102EA0006F900895CF92DF92FF920F931F93CF936D
-:102EB000DF93EC018C8D9D8D892B01F18E01025BDE
-:102EC0001F4F40E061E0C8010E947810FE01E95AFE
-:102ED000FF4FDE01AE5ABF4F9C9185E5891B808371
-:102EE00031961082698D613009F46DC078F0888D5B
-:102EF000653008F082C06B5F811175C0DF91CF91A2
-:102F00001F910F91FF90DF90CF900895CE0185968D
-:102F10000E94AC1E81E0FE01EA5AFF4F808366E208
-:102F200073E0C8010E9425151D8E1C8EFE01EC5A0F
-:102F3000FF4F108288EAF82E6E018AE0C80ED11C7D
-:102F4000CE010E9402188823D9F365E175E0C8011B
-:102F50000E940B226A8D7B8D4AE050E0C8010E94DE
-:102F60001A2360E075E0C8010E940B226F2D629564
-:102F70006F7070E04AE050E0C8010E94062365EFE0
-:102F800074E0C8010E940B2264E0C6010E94C20FD7
-:102F90008111B4CFFA94F110D3CF60E0CE010E943A
-:102FA0001F1F83B7817F846083BF83B7816083BF26
-:102FB00083B7816083BF889583B78E7F83BF83B7D4
-:102FC0008E7F83BFBDCFCF58DF4F88819981AA8183
-:102FD000BB818F709927AA27BB2767E00897A105B7
-:102FE000B10508F068E7C801DF91CF911F910F91FB
-:102FF000FF90DF90CF900C943622882309F47ECF87
-:103000006FE2F1CF8F929F92AF92BF92CF92DF92F9
-:10301000EF92FF920F931F93CF93DF93EC017C010C
-:1030200080E8E80EF11CF70180809180A280B380D7
-:103030000E940E20861A970AA80AB90A6E01FFE7B5
-:10304000CF0ED11CF601808190E0B0E0A0E08E01AF
-:1030500005581F4F88159905AA05BB0508F04AC0F9
-:10306000F80180819181A281B381892B8A2B8B2BDE
-:1030700009F440C00E940E20F6012081620F711DEC
-:10308000811D911DF70160837183828393833F9734
-:1030900080819181A281B3810196A11DB11D8083A0
-:1030A0009183A283B383F80110821182128213826A
-:1030B0000E941A20FE01E958FF4F608371838283CA
-:1030C0009383CE010E94231FCE010A960E94950F82
-:1030D000CE0148960E948C1F81E0DF91CF911F9115
-:1030E0000F91FF90EF90DF90CF90BF90AF909F90A7
-:1030F0008F900895F80180819181A281B381892BFD
-:103100008A2B8B2BA9F57E01F5E2EF0EF11CC7018E
-:103110000E94671DC7010E94DA1DC7010E949E1E02
-:10312000CE010E94E516CE010E9452177E018EE468
-:10313000E80EF11CC7010E942F10FE01EC5AFF4F50
-:103140008081811103C0C7010E9416100E941A20BD
-:10315000F8016083718382839383FE01EB58FF4FF4
-:10316000C958DF4F28813981621B730B71836083DB
-:1031700080E0B3CF2F923F924F925F926F927F92F7
-:103180008F929F92AF92BF92CF92DF92EF92FF9277
-:103190000F931F93CF93DF93CDB7DEB765970FB62D
-:1031A000F894DEBF0FBECDBF6C016A8B7B8B4B8367
-:1031B000FC01EC5AFF4F10822FEF2D831C821D8AD9
-:1031C00010E31C8A3C013AE0630E711C842F90E0EE
-:1031D0009F838E832601E3E54E0E511C4601F5E2E6
-:1031E0008F0E911C9601295A3F4F39872887C601B7
-:1031F000885A9F4F9B878A87F601EA5AFF4FFF87BD
-:10320000EE8722503109398B288B0A971C01C601A1
-:103210000E9402188823D9F364E0C3010E94C20F00
-:10322000012F110F110B882399F0F201F081F19514
-:103230002B81F29F202D112422502D8B64E0C3019D
-:103240000E94C20F811193C0C4010E94071F94C045
-:1032500065E0C3010E94C20F8111E7CF66E0C301A0
-:103260000E94C20F8111E1CF8C81811185C044E0A1
-:1032700063E0C3010E94D40F882331F09C899F5FD3
-:103280009C8BC4010E940B1F44E061E0C3010E94BB
-:10329000D40F882331F0EC89E150EC8BC4010E94FB
-:1032A0000B1FFC898F2F0F2E000C990B2E813F8155
-:1032B0008217930709F46BC0F7FF03C03B813150BD
-:1032C0003C8BF2018081F4E0F80F2C89829FF01989
-:1032D0001124FD8B9D89090F111D97FD1A9517FF6C
-:1032E00002C00F5F1F4FF801F595E795FA83E98358
-:1032F0000981102FE885F9851082EA85FB85008316
-:1033000021E0EE85FF852083E889F9891082EA882B
-:10331000FB88B12CA12C2C89022E000C330B3D878D
-:103320002C878E819F818A159B0599F1EC85FD85FF
-:10333000EA15FB0579F423E0E885F9852083F2019D
-:103340008081F02F2C89289FF00D11248F2FEA8582
-:10335000FB858083F70165917491C1010E94512220
-:10336000FFEFAF1ABF0A22E0E20EF11CDACFC40170
-:103370000E94031F3C893D83C8013D89831B91093D
-:1033800037FD9395029764F181E08C83A3CF1C8A6B
-:1033900098CF60E0C1010E947410F20180814981E0
-:1033A000FC89F89F400D1124415024E560E0C101E3
-:1033B0000E94981061E0C1010E947410F2018081A6
-:1033C00003E0080F4981FC898F9F400D1124425072
-:1033D00083E0E82E24E560E0C1010E94681217CF67
-:1033E0008D8165960FB6F894DEBF0FBECDBFDF911D
-:1033F000CF911F910F91FF90EF90DF90CF90BF90F2
-:10340000AF909F908F907F906F905F904F903F9084
-:103410002F9008950F931F93CF93DF93EC018C01AE
-:10342000025B1F4FC8010E9416106DEC74E0C801CA
-:103430000E940B22C8010E942F1083E00E94852366
-:1034400080E591E0EEEFFFE30995FE01EC5AFF4FB6
-:10345000108268EA74E0C8010E945122C8010E94EB
-:103460002F102A96CE010E94950F64E0CE010E9493
-:10347000C20F811107C062E370E080E090E00E941B
-:103480003F20F0CFDF91CF911F910F9108952F92A0
-:103490003F924F925F926F927F928F929F92AF92E4
-:1034A000BF92CF92DF92EF92FF920F931F93CF9331
-:1034B000DF93CDB7DEB729970FB6F894DEBF0FBE06
-:1034C000CDBF998788877B836A832A013C0180E787
-:1034D000680E711CF3018081882309F4F7C081E034
-:1034E000E885F985EA5AFF4F8083E885F985EB5A2C
-:1034F000FF4F1082E885F985EC5AFF4F1082E8856E
-:10350000F985108E8F01025B1F4F61E0C8010E9498
-:103510007410888599858D5A9F4F9F838E83A884C8
-:10352000B98497E5A90EB11CE884F984E8E5EE0EAC
-:10353000F11C88849984F2E58F0E911C8885998509
-:103540008F589F4F9D838C83288439849AE0290E5D
-:10355000311CC884D984E5E2CE0ED11C88859985BA
-:103560000E9402188823D1F3EA81FB81F491F98348
-:10357000FF2321F0EE81FF81F081F98327E335E01D
-:1035800040E060E0C8010E94FE124114510439F08D
-:103590004981445F920160E0C8010E94FE12F5017A
-:1035A00010828CE0F70180836A817B81C8010E94D0
-:1035B0000B22F4018081982F990F990F891B8D5A46
-:1035C000F5018083EE81FF818081982F990F990FFB
-:1035D000891B835DF7018083EC81FD81808163E33A
-:1035E00075E084FD02C06FE275E0C8010E945122BF
-:1035F000F4018081982F990F990F891B8D5AF5013D
-:103600008083F70180818F5F8083E885F98582A5BB
-:103610006BE275E0811102C067E275E0C8010E94AB
-:103620005122F4018081982F990F990F891B8D5A8F
-:10363000F5018083F70180818F5F808363E275E00D
-:10364000C8010E94512265E0C1010E94C20F882377
-:1036500051F0E885F98562A56F5FC6010E940F1FD2
-:10366000C6010E940B1F64E0C1010E94C20F8111BC
-:103670001FC0F3012081422F50E070E060E0EC8138
-:10368000FD8180819181A281B38184179507A6076E
-:10369000B70710F02F3F61F466E0C1010E94C20F2E
-:1036A000882309F45BCF888599850E940A1A56CF32
-:1036B0008FEFF301808360E0C6010E94A11EC60166
-:1036C0000E94031F81E0E885F985808F29960FB657
-:1036D000F894DEBF0FBECDBFDF91CF911F910F9148
-:1036E000FF90EF90DF90CF90BF90AF909F908F9022
-:1036F0007F906F905F904F903F902F90089550E093
-:1037000040E00C94471AE0E8F7E72591349181E016
-:103710002130304C09F080E00895CF93DF93EC0125
-:103720000E94831B9E01275A3F4FDE01A059BF4FC5
-:10373000882309F440C0E6E9F7E78491F901808322
-:10374000E7E9F7E7E491EC83E8E9F7E7E491ED8353
-:10375000E9E9F7E7859194919F838E83EBE9F7E799
-:103760008591949199878887EDE9F7E7E491EBA734
-:10377000EEE9F7E7E491EAA7EFE9F7E7E491EC93E4
-:10378000E0EAF7E7859194919D8F8C8FE2EAF7E765
-:10379000859194919F8F8E8FE4EAF7E785919491BC
-:1037A00099A388A3E6EAF7E7859194919BA38AA35E
-:1037B000DF91CF9108958CE3F90180831C828FEF14
-:1037C0008D8320E233E03F832E8324ED33E039877D
-:1037D000288791E09BA79AA78C938CEA9DE09D8F08
-:1037E0008C8F8EED9DE09F8F8E8F84E79EE099A356
-:1037F00088A38CE39FE0DACFCF92DF92EF920F9312
-:10380000CF93DF93EC01FC01E158FF4F82E380830B
-:10381000349781E090E0A0E0B0E080839183A283C0
-:10382000B3833B978FEF8083CE010E948D1BCE0127
-:103830000E941B1F6FEFCE010E941F1F6E018AE0C6
-:10384000C80ED11CC6010E94850FC6010E94950FAB
-:10385000CE0148960E94821F8EE0E82E0FE020E104
-:103860004BE06DE0CE01825B9F4F0E943915A5961B
-:10387000CE010E94A01C65E0C6010E94C20F8823F1
-:1038800051F060E0CE01DF91CF910F91EF90DF908A
-:10389000CF900C940F1F40E067EA75E0CE01DF91F6
-:1038A000CF910F91EF90DF90CF900C94341DCF9378
-:1038B000DF93D62FC72F0E94831B882359F0AD2F8B
-:1038C000BC2FEBE8F7E784918D933196E53987E7D4
-:1038D000F807C9F7DF91CF910895CF93DF93DC010B
-:1038E00070E0660F771F1F96ED91FC915097E60FE1
-:1038F000F71F2591349190963C932E935F97F90191
-:103900004591549114968C911497849F402D1124C5
-:1039100091964C939197F901C591D4916D2F70E0D8
-:103920004617170629F020F0F90125913491432F0D
-:10393000849F402D112492964C93DF91CF9108954E
-:1039400021E0FC01248324E020A726E036E0308B30
-:10395000278760E00E946D1C61E070E083E00E94B8
-:10396000BB20E1EBF0E08081887F81608083F89468
-:1039700010928000E1E8F0E0108210928500109231
-:10398000840088E191E09093890080938800808191
-:1039900088608083808181608083EFE6F0E08081B1
-:1039A00082608083789408950F93FC01011107C011
-:1039B0006230D9F030F4662379F0613091F00F91E4
-:1039C00008956330C9F06430D1F76481649F402D5D
-:1039D0001124458F268FF3CF4B3008F04AE0468BF9
-:1039E000EECF642F0F910C946D1C6481649F402D69
-:1039F0001124418F228FE3CF6481649F402D1124D5
-:103A0000438F248FDCCF80915407882329F0809145
-:103A100051078093B400089580E0FBCFFC01178A22
-:103A2000158A14A213A2108E1092510710925207F9
-:103A3000109254070C94031D0F931F93CF93DF93A1
-:103A4000EC018B010E940E1D1E870D871B8A1A8AAE
-:103A500081E0898389E08E8B198E1B8E1D8EDF910C
-:103A6000CF911F910F910895411102C00C941C1D1C
-:103A70000895CF93DF93EC01611115C088818823ED
-:103A800091F0898181110FC0E9858E2F90E0880F18
-:103A9000991FEF81F885E80FF91F859194918F3F69
-:103AA000980721F41882DF91CF9108959C87992778
-:103AB000880F991FEA85FB85E80FF91F65917491BE
-:103AC000CE010E941C1D89858F5F8987ECCF60E045
-:103AD0000C94391D0F93CF93DF93EC01611166C0F5
-:103AE0008981882309F462C08D8981115FC08D8529
-:103AF0009E85EA89FB89EE0FFF1FE80FF91F4591AC
-:103B000054914115510541F42989213021F51B8A31
-:103B10001A8AFC0145915491BA017695679576957C
-:103B20006795862F40FF2EC0252F26952695269532
-:103B3000205186E0569547958A95E1F74F716F7051
-:103B400000E0CE010E94D41CEA89FB893196FB8BF0
-:103B5000EA8BCF010AC019828881882369F060E06E
-:103B6000CE010E94391D8A899B89880F991FED8596
-:103B7000FE85E80FF91FCECFCE01DF91CF910F91D7
-:103B80000C940E1D8F738C8B8C81859F802D11243E
-:103B90008D8B1DA21CA21BA281E08F8B80935407EA
-:103BA000188E8A899B8901969B8B8A8BDF91CF9196
-:103BB0000F91089560E00C946A1DCF93DF93EC01A0
-:103BC0006111B3C08F89882309F4AFC08D89811139
-:103BD00005C0CE01DF91CF910C940E1D81508D8BCD
-:103BE0008DA1811134C02BA13CA12F5F3F4FC90192
-:103BF000880F991FEF8DF8A1E80FF91F8591949117
-:103C0000482F47704EA3492F469546954FA3AC01C8
-:103C100064E0569547956A95E1F74F739C81499FFB
-:103C2000402D11244DA383FB882780F980935007F2
-:103C30003CA32BA389A190E02817390740F02AA1C3
-:103C4000222309F475C0821B91099CA38BA38DA12B
-:103C500081508DA3888D31E0380F388F4C892FA18A
-:103C6000240F8C85280F2A836B8D662361F070E00A
-:103C7000832F032E000C990B0E94C4238C8D869FEA
-:103C8000200D11242A838A8190E0CB966BE370E0AB
-:103C90000E94C4238A832E892B83698D662371F049
-:103CA000062E000C770B832F032E000C990B0E941D
-:103CB000C4238A8D869F200D11242B836D8D66234E
-:103CC00089F0832F330F990B70E00E94C423CB013E
-:103CD00062E070E00E94C4232E8D9B81289F900D8E
-:103CE00011249B834F3341F18B818A300CF089E0A2
-:103CF00087FD80E08B83F894EA81F0E0EB54FA4F83
-:103D0000E491E09353078D8198A5899F802D11241C
-:103D10009B81899F802D11249EA1899F802D112434
-:103D200080935207809351077894DF91CF91089543
-:103D3000CE010E940E1D8BCF1B82DDCF60E00C9464
-:103D4000DD1DCF93DF93EC01611103C00E940E1DB6
-:103D50001982DF91CF910895CF93DF93EC010E94F8
-:103D60000E1D1982DF91CF9108956091520766234D
-:103D700029F1809155078F5F8093550790915307E4
-:103D80008917E0F081E090915407911180E08093D1
-:103D900054071092550780915007882369F080914D
-:103DA000040193E4899F802D1124895B8093040191
-:103DB0000E94A423909351070C94031D08951F9211
-:103DC0000F920FB60F9211242F933F934F935F934F
-:103DD0006F937F938F939F93AF93BF93EF93FF93D3
-:103DE0000E94B51EFF91EF91BF91AF919F918F916E
-:103DF0007F916F915F914F913F912F910F900FBEE7
-:103E00000F901F9018956EEF75E00C941C1D66EFD7
-:103E100075E00C941C1D60EF75E00C941C1DFC01FA
-:103E2000862F660F990B668170E06F5F7F4F0E944F
-:103E3000C4238583089521E0FC012083089570E068
-:103E400085E00C94BB20AF92BF92CF92DF92EF92AD
-:103E5000FF920F931F93CF93DF93EC0189819A8197
-:103E60002FE0289F8001299F100D112485E10E94D9
-:103E7000A020800F911F24E0969587952A95E1F761
-:103E80009A8389832881222391F1EC81AD80B12C22
-:103E9000D12CC12CA885B9857D0110E000E06E8190
-:103EA0007F819B0150E040E08617970728F0BC0116
-:103EB000A817B90708F4BD0190E080E01F921F9297
-:103EC0001F92EF930E9420236B830F900F900F900F
-:103ED0000F9070E085E0DF91CF911F910F91FF90DF
-:103EE000EF90DF90CF90BF90AF900C94BB20DF910C
-:103EF000CF911F910F91FF90EF90DF90CF90BF90E7
-:103F0000AF900895FC018CE39FE09383828384E06B
-:103F1000818381E084870895CF93DF93EC018C81C6
-:103F20009D81892B21F18C858F7139F584E10E9467
-:103F3000A020BC01990F880B990B0E94762426EED5
-:103F40003FE34EEC50E40E9402250E9445249B0171
-:103F50007B836A83672BA9F084E08983FE01349612
-:103F600080E0419151912417350720F48983DF9136
-:103F7000CF9108958F5F8430A1F78C858F5F8C87F8
-:103F8000F6CF8FEF8983F9CF1F920F920FB60F9262
-:103F900011242F933F938F939F93AF93BF9380915F
-:103FA000570790915807A0915907B0915A0730913F
-:103FB000560723E0230F2D3758F50196A11DB11D9B
-:103FC000209356078093570790935807A09359075B
-:103FD000B0935A0780915B0790915C07A0915D07B1
-:103FE000B0915E070196A11DB11D80935B07909370
-:103FF0005C07A0935D07B0935E07BF91AF919F915F
-:104000008F913F912F910F900FBE0F901F90189599
-:1040100026E8230F0296A11DB11DD2CF2FB7F89429
-:1040200060915707709158078091590790915A07EE
-:104030002FBF08953FB7F89480915B0790915C077C
-:10404000A0915D07B0915E0726B5A89B05C02F3FE4
-:1040500019F00196A11DB11D3FBFBA2FA92F982FAE
-:104060008827BC01CD01620F711D811D911D42E0A9
-:10407000660F771F881F991F4A95D1F70895CF9231
-:10408000DF92EF92FF92CF93DF936B017C010E944E
-:104090001A20EB01C114D104E104F10439F4DF91D9
-:1040A000CF91FF90EF90DF90CF9008950E941A205B
-:1040B0006C1B7D0B683E734068F381E0C81AD10821
-:1040C000E108F108C851DC4FE5CF789484B58260EF
-:1040D00084BD84B5816084BD85B5826085BD85B5AC
-:1040E000816085BDEEE6F0E0808181608083E1E85B
-:1040F000F0E0108280818260808380818160808393
-:10410000E0E8F0E0808181608083E1EBF0E0808195
-:1041100084608083E0EBF0E0808181608083EAE767
-:10412000F0E08081846080838081826080838081F0
-:10413000816080838081806880831092C1000895AF
-:104140008E3008F08E502091050190E4299F900157
-:1041500011248770822B80937C0080917A00806488
-:1041600080937A0080917A0086FDFCCF8091780060
-:104170009091790008951F93CF93DF93182FEB014F
-:1041800061E00E944121209739F460E0812FDF91A6
-:10419000CF911F910C947D21CF3FD10511F461E0A7
-:1041A000F5CFE12FF0E0EE5EF94FE491E33031F12D
-:1041B00040F4E130B1F0E230E1F0C038D1057CF7F5
-:1041C000E4CFE63029F1E73059F1E430B1F78091DE
-:1041D0008000806280938000D0938B00C0938A001F
-:1041E00004C084B5806884BDC7BDDF91CF911F91A5
-:1041F000089584B5806284BDC8BDF7CF80918000EA
-:10420000806880938000D0938900C0938800EDCFB0
-:104210008091B00080688093B000C093B300E5CF78
-:104220008091B00080628093B000C093B400DDCF75
-:10423000833081F028F4813099F08230A9F008951C
-:104240008630A9F08730C9F08430B1F480918000C5
-:104250008F7D03C0809180008F77809380000895C8
-:1042600084B58F7784BD089584B58F7DFBCF809111
-:10427000B0008F778093B00008958091B0008F7D5B
-:10428000F9CFCF93DF9390E0FC01EA5DF94F2491E1
-:10429000865C994FFC0184918823C9F090E0880FD7
-:1042A000991FFC01EE59F94FA591B491FC01E85A10
-:1042B000F94FC591D49161110DC09FB7F8948C91BD
-:1042C000209582238C938881282328839FBFDF91A8
-:1042D000CF910895623051F49FB7F8943C91822FAA
-:1042E000809583238C93E8812E2BEFCF8FB7F894A2
-:1042F000EC912E2B2C938FBFEACF1F93CF93DF939C
-:10430000162F282F30E0F901EE5EF94F8491F90164
-:10431000EA5DF94FD491F901E65CF94FC491CC23E1
-:10432000A1F081110E941821EC2FF0E0EE0FFF1F89
-:10433000E85AF94FA591B4918FB7F894EC91111107
-:1043400008C0D095DE23DC938FBFDF91CF911F9102
-:104350000895DE2BF8CFCF93DF93282F30E0F901BB
-:10436000EE5EF94F8491F901EA5DF94FD491F901BC
-:10437000E65CF94FC491CC23A1F081110E94182171
-:10438000EC2FF0E0EE0FFF1FE25BF94FA591B49127
-:10439000EC91ED2381E090E009F480E0DF91CF9192
-:1043A000089580E090E0FACFCF92DF92EF92FF92F3
-:1043B0000F931F93CF93DF936C01EB017B01E40E0E
-:1043C000F51E10E000E0CE15DF0561F06991D60121
-:1043D000ED91FC910190F081E02DC6010995080F47
-:1043E000191FF1CFC801DF91CF911F910F91FF905D
-:1043F000EF90DF90CF900895FB0101900020E9F746
-:104400003197AF01461B570BDC01ED91FC91028007
-:10441000F381E02D0994EF92FF920F931F93CF93B6
-:10442000DF937C018B01D0E0C0E0F80164910F5F65
-:104430001F4F662359F0D701ED91FC910190F08157
-:10444000E02DC7010995C80FD91FEFCFCE01DF912D
-:10445000CF911F910F91FF90EF9008956115710515
-:1044600011F00C94FC2190E080E00895DC01ED91C6
-:10447000FC910190F081E02D09940F931F93CF934D
-:10448000DF93EC016DE00E9436228C016AE0CE01E0
-:104490000E943622800F911FDF91CF911F910F91C3
-:1044A00008950F931F93CF93DF93EC010E940B228B
-:1044B0008C01CE010E943D22800F911FDF91CF9190
-:1044C0001F910F9108958F929F92AF92BF92CF92BA
-:1044D000DF92EF92FF920F931F93CF93DF93CDB7AD
-:1044E000DEB7A1970FB6F894DEBF0FBECDBF6C014B
-:1044F000142FE52FCB01022F19A2223008F40AE075
-:104500007E0121E2E20EF11C802E912CB12CA12C17
-:10451000612F7E2FA50194010E94D823029F1019BC
-:1045200011241A303CF5105DF70112937F01122F10
-:10453000E32FCA01232B242B252B51F790E080E099
-:10454000E114F10421F0B701C6010E94FC21A196FB
-:104550000FB6F894DEBF0FBECDBFDF91CF911F9194
-:104560000F91FF90EF90DF90CF90BF90AF909F9012
-:104570008F900895195CD8CFCF92DF92EF92FF927F
-:104580000F931F93CF93DF93EC016A017B012115F9
-:10459000310579F4E881F9810190F081E02D642FF3
-:1045A000DF91CF911F910F91FF90EF90DF90CF900F
-:1045B00009942A303105E9F42AE0F7FE1AC06DE2C9
-:1045C0000E9436228C0144275527BA014C195D09F7
-:1045D0006E097F092AE0CE010E946322800F911F9D
-:1045E000DF91CF911F910F91FF90EF90DF90CF90CF
-:1045F0000895B701A601CE01DF91CF911F910F91D0
-:10460000FF90EF90DF90CF900C9463229A01AB0162
-:10461000770F660B770B0C94BC222115310541F402
-:10462000DC01ED91FC910190F081E02D642F099463
-:104630000C9463229A01AB0170E060E00C940D23AE
-:104640004F925F926F927F92AF92BF92CF92DF9222
-:10465000EF92FF920F931F93CF93DF93CDB7DEB707
-:1046600029013A019B01AC01241935094609570972
-:1046700089899A89AB89BC89BC01CD016A197B09FA
-:104680008C099D090E949423A801970124193509DA
-:10469000460957090E94FA23CA01B9016A0D7B1D18
-:1046A0008C1D9D1DDF91CF911F910F91FF90EF9079
-:1046B000DF90CF90BF90AF907F906F905F904F90C2
-:1046C000089561E08AE00E947D2161E08AE00E9415
-:1046D00041218CB580618CBD8CB580648CBD61E05E
-:1046E0008DE00E94412161E08BE00C944121811119
-:1046F00004C08CB580628CBD08958CB58F7DFBCFD6
-:104700009CB5937F892B8CBD08959CB59C7F282FE9
-:104710002370922B9CBD9DB582FB222720F9892F07
-:104720008E7F822B8DBD0895DB018F939F930E9416
-:104730001924BF91AF91A29F800D911DA39F900D51
-:10474000B29F900D11240895991B79E004C0991F20
-:10475000961708F0961B881F7A95C9F780950895DB
-:10476000AA1BBB1B51E107C0AA1FBB1FA617B70797
-:1047700010F0A61BB70B881F991F5A95A9F78095B3
-:104780009095BC01CD01089597FB072E16F4009477
-:1047900007D077FD09D00E94B02307FC05D03EF476
-:1047A000909581959F4F0895709561957F4F0895DD
-:1047B000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F25
-:1047C000EE1FFF1FA217B307E407F50720F0A21B97
-:1047D000B30BE40BF50B661F771F881F991F1A9404
-:1047E00069F760957095809590959B01AC01BD012E
-:1047F000CF010895052E97FB1EF400940E9411240A
-:1048000057FD07D00E94D82307FC03D04EF40C9428
-:10481000112450954095309521953F4F4F4F5F4F54
-:10482000089590958095709561957F4F8F4F9F4F1C
-:1048300008950E943624A59F900DB49F900DA49FCB
-:10484000800D911D112408950024A7FD00942A0FC6
-:10485000301D401D501D601D701D801D901D089550
-:10486000EE0FFF1F0590F491E02D0994A29FB00177
-:10487000B39FC001A39F700D811D1124911DB29F94
-:10488000700D811D1124911D08950E94E12488F06E
-:104890009F5798F0B92F9927B751B0F0E1F0660F04
-:1048A000771F881F991F1AF0BA95C9F714C0B13045
-:1048B00091F00E94FB24B1E008950C94FB24672F33
-:1048C000782F8827B85F39F0B93FCCF38695779574
-:1048D0006795B395D9F73EF490958095709561955D
-:1048E0007F4F8F4F9F4F0895E89409C097FB3EF488
-:1048F00090958095709561957F4F8F4F9F4F99232D
-:10490000A9F0F92F96E9BB279395F69587957795AA
-:104910006795B795F111F8CFFAF4BB0F11F460FF6A
-:104920001BC06F5F7F4F8F4F9F4F16C0882311F0C2
-:1049300096E911C0772321F09EE8872F762F05C0D6
-:10494000662371F096E8862F70E060E02AF09A9571
-:10495000660F771F881FDAF7880F9695879597F966
-:10496000089597F99F6780E870E060E008959FEFF1
-:1049700080EC089500240A941616170618060906F6
-:10498000089500240A9412161306140605060895C5
-:10499000092E0394000C11F4882352F0BB0F40F44D
-:1049A000BF2B11F460FF04C06F5F7F4F8F4F9F4F8D
-:1049B000089557FD9058440F551F59F05F3F71F00F
-:1049C0004795880F97FB991F61F09F3F79F0879576
-:1049D0000895121613061406551FF2CF4695F1DFFF
-:1049E00008C0161617061806991FF1CF869571058F
-:1049F000610508940895E894BB2766277727CB01C3
-:104A000097F908950E9415250C94C8240E94BA2491
-:104A100038F00E94C12420F0952311F00C94B124A9
-:104A20000C94B72411240C94FC240E94D92470F314
-:104A3000959FC1F3950F50E0551F629FF001729F43
-:104A4000BB27F00DB11D639FAA27F00DB11DAA1F52
-:104A5000649F6627B00DA11D661F829F2227B00D9F
-:104A6000A11D621F739FB00DA11D621F839FA00D2A
-:104A7000611D221F749F3327A00D611D231F849F7A
-:104A8000600D211D822F762F6A2F11249F575040D1
-:104A90009AF0F1F088234AF0EE0FFF1FBB1F661F4C
-:104AA000771F881F91505040A9F79E3F510580F015
-:104AB0000C94B1240C94FC245F3FE4F3983ED4F3AF
-:104AC000869577956795B795F795E7959F5FC1F7B9
-:104AD000FE2B880F911D9695879597F908958F92D3
-:104AE0009F92AF92BF92CF92DF92EF92FF92CF93BD
-:104AF000DF93EC01688179818A819B816115710561
-:104B00008105910521F464E279ED8BE597E02DE1D3
-:104B100033EF41E050E00E94FA2349015A019B0122
-:104B2000AC01A7EAB1E40E9419246B017C01ACEE50
-:104B3000B4EFA50194010E948328DC01CB018C0D08
-:104B40009D1DAE1DBF1DB7FF03C00197A109B04851
-:104B500088839983AA83BB839F77DF91CF91FF904E
-:104B6000EF90DF90CF90BF90AF909F908F9008957F
-:104B70000E946F25089580E091E00E946F250895BE
-:104B8000B0E0A0E08093000190930101A0930201A6
-:104B9000B09303010895DC0101C06D934150504072
-:104BA000E0F70895AEE0B0E0E8EDF5E20C94962869
-:104BB0000D891E898F89988D26E02C831A8309839D
-:104BC00097FF02C080E090E801979E838D83AE013D
-:104BD000455E5F4F698D7A8DCE0101960E94022657
-:104BE0004D815E8157FD0AC02F81388542175307DA
-:104BF0000CF49A01020F131FF80110822E96E4E0C4
-:104C00000C94B228ABE0B0E0E8E0F6E20C9488281F
-:104C10007C013B018A01FC0117821682838181FF9E
-:104C2000C8C1CE0101965C01F7019381F30193FDA8
-:104C3000859193FF81913F01882309F453C1853207
-:104C400039F493FD859193FF81913F01853229F4D9
-:104C5000B70190E00E94F227E7CF912C212C312C54
-:104C6000FFE1F31538F08B3211F190F4803209F145
-:104C7000833229F137FC3CC020ED280F2A3050F553
-:104C800036FE20C08AE0989E200D1124922E06C088
-:104C90008D3291F0803371F7689430F8F30193FD11
-:104CA000859193FF81913F018111DACF21C06894F2
-:104CB00031F8689432F8F2CF689433F8EFCF689403
-:104CC00034F8ECCFEAE02E9E200D1124222E6894B9
-:104CD00035F8E4CF8E3229F436FC04C1689436F8F6
-:104CE000DDCF8C3619F4689437F8D8CF8836B1F216
-:104CF000982F9F7D95549330E0F08336A1F1833750
-:104D0000C1F1833509F063C02801F2E04F0E511C58
-:104D1000F801C080D180692D70E036FC02C06FEFD1
-:104D20007FEFC6010E94DC274C01689437F88201AE
-:104D30000AC00C5F1F4FFFE3F98388248394912CF2
-:104D40006501E89437F833FE2DC0522C811491048C
-:104D500071F5552009F468CFB70180E290E00E9418
-:104D6000F2275A94F6CFF801808189830E5F1F4F96
-:104D7000E4CF2801F2E04F0E511CF801C080D18031
-:104D8000692D70E036FC02C06FEF7FEFC6010E9414
-:104D9000E7274C018201D5CFB70180E290E00E9465
-:104DA000F2272A942814190409F0B0F7CECFF6019F
-:104DB00037FC859137FE81916F01B70190E00E9429
-:104DC000F22751105A94F1E08F1A9108BFCF843620
-:104DD00019F0893609F077C0F80137FE6BC06081A1
-:104DE0007181828193810C5F1F4FF32DFF763F2EDF
-:104DF00097FF09C090958095709561957F4F8F4F73
-:104E00009F4F689437F82AE030E0A5010E942228DD
-:104E1000C82ECA188C2C432C36FE0CC0E89440F8DF
-:104E2000C91440F434FE05C032FC03C0F32DFE7EED
-:104E30004F2E892C44FE95C0FE01EC0DF11D8081A2
-:104E4000803309F087C0242D297E422E842D88705E
-:104E5000582E43FC95C040FE8FC09C2C821418F441
-:104E60002C0C922C981844FE91C0B70180E390E07E
-:104E70000E94F22742FE09C088E790E041FE02C08E
-:104E800088E590E0B7010E94F227C91408F48AC0AF
-:104E9000CA94D12C9FEFC91AD90ACA0CDB1CF6019F
-:104EA00082916F01B70190E00E94F227AC14BD041B
-:104EB000B1F74FCF60817181072E000C880B990BE1
-:104EC0000E5F1F4F92CFD32CE894D4F82AE030E045
-:104ED000853739F1232D297FD22E8F3601F148F401
-:104EE0008835A9F0F701868197812B96E2E10C9431
-:104EF000A428803749F08837A9F7D4FE02C0689407
-:104F0000D2F820E130E00DC06894D4F8F6CF34FE3A
-:104F100003C0822F8660D82E20E132E002C028E054
-:104F200030E0F801D7FE0FC06081718182819381EA
-:104F30000C5F1F4FA5010E942228C82ECA183D2CC5
-:104F4000E89437F867CF6081718190E080E00E5F70
-:104F50001F4FF0CF42FC02C0839478CF8394839498
-:104F600075CF842D867809F471CFF6CFB70180E232
-:104F700090E00E94F22783948214C0F3512C73CFE7
-:104F8000522C5818821408F46ECFF8CF842D8678EE
-:104F900009F47BCF8BE241FE80E247FC8DE2B70152
-:104FA00090E071CFB70180E390E00E94F2279A94DD
-:104FB0006CCF8FEF9FEF99CFFC010590615070404F
-:104FC0000110D8F7809590958E0F9F1F0895FC01D2
-:104FD0006150704001900110D8F7809590958E0F28
-:104FE0009F1F08950F931F93CF93DF93182F092FBF
-:104FF000EB018B8181FD09C01FEF0FEF812F902FF7
-:10500000DF91CF911F910F91089582FF14C02E81DF
-:105010003F818C819D81281739073CF4E881F98113
-:10502000CF0101969983888310838E819F81019699
-:105030009F838E83E3CFE885F985812F0995892B9E
-:10504000A1F3DACFFA01AA27283051F1203181F1FA
-:10505000E8946F936E7F6E5F7F4F8F4F9F4FAF4F80
-:10506000B1E03ED0B4E03CD0670F781F891F9A1F93
-:10507000A11D680F791F8A1F911DA11D6A0F711D47
-:10508000811D911DA11D20D009F468943F912AE053
-:10509000269F11243019305D3193DEF6CF0108953B
-:1050A000462F4770405D4193B3E00FD0C9F7F6CF6C
-:1050B000462F4F70405D4A3318F0495D31FD405234
-:1050C000419302D0A9F7EACFB4E0A69597958795CA
-:1050D00077956795BA95C9F70097610571050895A9
-:1050E0009B01AC010A2E0694579547953795279555
-:1050F000BA95C9F7620F731F841F951FA01D0895ED
-:10510000B7FF0C9419240E941924821B930B089555
-:105110002F923F924F925F926F927F928F929F92C7
-:10512000AF92BF92CF92DF92EF92FF920F931F93B5
-:10513000CF93DF93CDB7DEB7CA1BDB0B0FB6F89466
-:10514000DEBF0FBECDBF09942A88398848885F84A6
-:105150006E847D848C849B84AA84B984C884DF8017
-:10516000EE80FD800C811B81AA81B981CE0FD11DFB
-:105170000FB6F894DEBF0FBECDBFED01089513E06A
-:10518000C8E3D3E004C0FE010E9430242196C93355
-:08519000D107C9F7F894FFCF25
-:1051980001000000010148503D257500573D256478
-:1051A80000473D256400463D256400FA00000003E1
-:1051B800000400004255494C440041545441434BBB
-:1051C800004352454154450024012A0131010100A0
-:1051D800000000190064000000000000A716D42198
-:0851E8004C4F41444552000008
-:04000003000006C62D
+:101270003C8140E05E81B601C7010E9414072696BA
+:101280000FB6F894DEBF0FBECDBFDF91CF911F9197
+:101290000F91FF90EF90DF90CF90BF909F908F9035
+:1012A0000895CF92DF92EF92FF920F931F93CF9307
+:1012B000DF9300D000D000D0CDB7DEB77C016A014B
+:1012C0000E94200889019A01AB01B601C7010E9462
+:1012D000140726960FB6F894DEBF0FBECDBFDF9180
+:1012E000CF911F910F91FF90EF90DF90CF900895D5
+:1012F0000F931F93CF93DF93EC01CF55DD4F2881E0
+:101300008C0100561D4F253018F5FC01E256FD4FAB
+:1013100020812F3F81F0FC0134E12302E00DF11D1B
+:10132000112421E024A3FC01E356FD4F20838E55B8
+:101330009D4FFC011082188281E09881953008F45D
+:1013400080E0F8018083DF91CF911F910F91089584
+:10135000F8012081222381F3FC0130E020E044A148
+:101360002F5F3F4F4423E1F044E1429FB001439F90
+:10137000700D1124680F791FFC01ED55FD4F10828F
+:1013800031972081222339F02230B1F650E040E03D
+:101390000E94E708D1CF42E050E00E945109CCCF33
+:1013A000749620323105D9F6C7CFCF93DF93EC0185
+:1013B000C356DD4F28812223D9F0DC01A156BD4F51
+:1013C0002C912530C0F0FC019C0120583D4F44A1D8
+:1013D000411114A27496E217F307C9F71C92188200
+:1013E000FC01E056FD4F10828F559D4FFC0110828D
+:1013F000DF91CF9108952F5F2C93FACFCF92DF9298
+:10140000EF92FF920F931F93CF93DF9300D000D002
+:1014100000D0CDB7DEB78C01FC01E356FD4F8081D3
+:10142000882309F1C8010E94200829833A834B834D
+:101430005C836D837E83F801680120E8C21A2DEF7A
+:10144000D20A84A19F012C5E3F4F7901882339F095
+:101450004B815C8169817A81C9010E94820EF7010A
+:10146000EC14FD0471F7F801E156FD4F1082269649
+:101470000FB6F894DEBF0FBECDBFDF91CF911F91A5
+:101480000F91FF90EF90DF90CF900895EF92FF9231
+:101490000F931F93CF93DF93FC01E056FD4F208104
+:1014A000222349F1EC017C0180E8E81A8DEFF80A6B
+:1014B0008E010E551D4F8CA164968823C9F0CE0174
+:1014C0000E94B00FF80140819FEF940F282F30E069
+:1014D000491771F0993008F097E0B901092E02C060
+:1014E000759567950A94E2F760FF0CC0F801908348
+:1014F000CE15DF0501F7DF91CF911F910F91FF907E
+:10150000EF9008959150E4CFEF92FF920F931F93C5
+:10151000CF93DF93FC01E056FD4F2081222349F158
+:10152000EC017C0180E8E81A8DEFF80A8E010E5577
+:101530001D4F8CA164968823C9F0CE010E94B00F84
+:10154000F801408191E0940F282F30E0491771F0A5
+:10155000983008F090E0B901092E02C075956795A2
+:101560000A94E2F760FF0CC0F8019083CE15DF0506
+:1015700001F7DF91CF911F910F91FF90EF900895A8
+:101580009F5FE4CF0F931F93CF93DF93EC01FC0198
+:10159000E056FD4F80818823A9F1FE0190E080E0B4
+:1015A00024A10196222351F144E1489F9001499FD3
+:1015B000300D1124CE01820F931F0E94B00F90E0D6
+:1015C0008E010E551D4FF801208102C0959587951B
+:1015D0002A95E2F780FD03C0CE010E94840AF8013B
+:1015E000808190E00E94B80F2CE248E268E372E04C
+:1015F000DF91CF911F910F910C9468057496803202
+:10160000910571F6DF91CF911F910F9108958F92FF
+:101610009F92AF92BF92CF92DF92EF92FF920F9381
+:101620001F93CF93DF93EC018C010C5E1F4FF12CC5
+:10163000E12C912C6C0182E6C81A8DEFD80A5E016C
+:10164000EBE6AE1AEDEFBE0AF80187858823D9F0E4
+:10165000F60180818F3F39F0082E000C990B41E094
+:101660008E159F0509F040E0B501C8010E945E0D8E
+:10167000F8018088882039F0911005C06085CE017E
+:101680000E946506982CFFEFEF1AFF0A0C5E1F4FB1
+:1016900080E2E816F104C1F68881882339F19920A7
+:1016A00099F001E023E04AE06CE284E40E94C10585
+:1016B000FE01EF55FD4F4081442331F0440F23E0FC
+:1016C0006CE284E40E94F005CE010E94C20ACE01C1
+:1016D000DF91CF911F910F91FF90EF90DF90CF900E
+:1016E000BF90AF909F908F900C94A006DF91CF9108
+:1016F0001F910F91FF90EF90DF90CF90BF90AF9030
+:101700009F908F900895CF93DF93EC0184E090E059
+:101710000E943806882329F0CE01DF91CF910C94E6
+:10172000D60884E090E00E941F06882329F0CE01AD
+:10173000DF91CF910C94780985E090E00E94380603
+:10174000882329F0CE01DF91CF910C94D50985E053
+:1017500090E00E941F06882329F0CE01DF91CF91EF
+:101760000C94FE0990E080E00E941F06882329F077
+:10177000CE01DF91CF910C94460A82E090E00E9466
+:101780001F06882329F0CE01DF91CF910C94840AA3
+:10179000DF91CF9108950F931F93CF93DF93EC01C7
+:1017A0008C010B561D4FFC01E056FD4F6081C801B6
+:1017B0000E94D30CC8010E94350CCE010E944C0837
+:1017C00060E270E0CE0144960E948A0ECE01DF9165
+:1017D000CF911F910F910C94830BFC011182108209
+:1017E000138212821482158283E086831782089501
+:1017F000CF93DF93CDB7DEB72C970FB6F894DEBF4B
+:101800000FBECDBF1C861B86FC0122813381420F97
+:10181000531F80819181680F791F78876F835A8762
+:10182000498786E0FE013796DE01119601900D9200
+:101830008A95E1F729813A814B815C816D817E81B6
+:1018400080E090E02C960FB6F894DEBF0FBECDBFBF
+:10185000DF91CF910895FC019081490FDB014C93FA
+:101860008281280F11962C930895CF93DF93EC017A
+:101870008F81882319F01C821D821BC08E818330CA
+:10188000D8F48F5F8E832C8188819981820F911D7E
+:1018900027FD9A9597FF80C0998388832D818A813F
+:1018A0009B81820F911D27FD9A9597FF79C09B839D
+:1018B0008A83DF91CF9108951E820E943B06882380
+:1018C00069F190E080E00E943806882329F08C813D
+:1018D00087FF47C08E5F8C8381E090E00E943806CE
+:1018E000882329F08D8187FF41C08E5F8D8383E03F
+:1018F00090E00E943806882331F08D8118160CF094
+:101900003AC082508D8382E090E00E94380688239E
+:1019100029F08C8118169CF582508C8390E080E031
+:101920000E94380681110BC082E090E00E943806C8
+:10193000811105C08C81181634F581508C8381E0AB
+:1019400090E00E94380681119ECF83E090E00E94D3
+:101950003806811198CF8D811816CCF481508D8373
+:1019600092CF85300CF0B8CF8F5FB5CF85300CF0BB
+:10197000BECF8F5FBBCF8C3F34F28150C3CF8C3F43
+:101980006CF28150CACF8823D1F28F5FD7CF8823E2
+:1019900009F479CF8F5FE3CF198218821C827ECF42
+:1019A0001B821A8269CFFC0167830895FF920F930F
+:1019B0001F93CF93DF9303E315E08BEE91E0F801E3
+:1019C000908787830E945B05F80182838BEE91E00C
+:1019D0000E945E05F801838315821482FF24F3942C
+:1019E000F682CDEFD4E085EF91E098878F830E9457
+:1019F0005B058A8385EF91E00E945E058B831D82E3
+:101A00001C82FE8281EA91E0F801928F818F0E9410
+:101A10005B05F801848B81EA91E00E945E05F80184
+:101A2000858B178A168AF08E8DE091E094A783A7A4
+:101A30000E945B05F80186A38DE091E00E945E059F
+:101A4000F80187A311A610A6F2A687E591E09A8F68
+:101A5000898F0E945B058C8B87E591E00E945E0573
+:101A60008D8B1F8A1E8A13E0188F83EC90E09CA751
+:101A70008BA70E945B058EA383EC90E00E945E051D
+:101A80008FA319A618A61AA7DF91CF911F910F91C6
+:101A9000FF90089599E0899FF0011124ED5CFA4FC1
+:101AA000878190850C945B0599E0899FF001112452
+:101AB000ED5CFA4F878190850C945E058F929F9222
+:101AC000AF92BF92CF92DF92EF92FF920F931F934C
+:101AD000CF93DF9300D000D000D0CDB7DEB77C012C
+:101AE0006B01842EDC011F968C911F97882309F4CB
+:101AF00080C019969C90E92DF0E0B9E09B9E800192
+:101B00001124D7011D968C911D978111B3C01E968B
+:101B10008C91882309F480C003501B4FF801148274
+:101B20001582882351F0D70153968C9153978F5F7C
+:101B3000853008F074C053968C93D7011A968D9116
+:101B40009C911B978130910509F48AC008F484C0E8
+:101B50008230910509F46AC0039709F473C0F70154
+:101B60002281338140815181B801C6010E942B0C32
+:101B7000C8010E942D05811005C0D70150968C9197
+:101B80008823B9F1F7014281538160817181C601D7
+:101B90000E94F80B29833A834B835C83C980DA80E7
+:101BA000AB80BC80D70150968C9101E0811101C0BF
+:101BB00003E0892D0E944A0D182F892D0E94540D93
+:101BC000F7019585992309F477C0282F2695269546
+:101BD000280F412F46954695410F86958695869507
+:101BE0006A2D681B1695169516958C2D811B0E94E3
+:101BF000C10526960FB6F894DEBF0FBECDBFDF91AC
+:101C0000CF911F910F91FF90EF90DF90CF90BF90F9
+:101C1000AF909F908F9008950D5C1A4F7FCFF70182
+:101C2000138A848591E08927848787CF82E0F80131
+:101C30008583D7011C968C91882309F490CF83E08B
+:101C400085838DCFF7018485882309F488CF81E0CF
+:101C5000D80115968C9383CF81E0F8018483E8CF77
+:101C600081E0F80184831C968C91882309F477CF56
+:101C700082E0E6CFC80183509B4F5C01EE0FFF1F4F
+:101C8000E95EFE4F818112962D913C911397280FAA
+:101C9000311D87FD3A9580814D915C91480F511D12
+:101CA00087FD5A95B501C6010E942B0CC5010E9403
+:101CB0002D050D5C1A4F53CF682F66956A0D7B2D4D
+:101CC000711D812F8695202F412F8C0D9D2D911DEB
+:101CD00026960FB6F894DEBF0FBECDBFDF91CF9131
+:101CE0001F910F91FF90EF90DF90CF90BF90AF903A
+:101CF0009F908F900C949505E82FF0E0E75BFE4FE6
+:101D000080810895FC01758364835783468381E055
+:101D1000868708952F923F924F925F926F927F92A3
+:101D20008F929F92AF92BF92CF92DF92EF92FF92EB
+:101D30000F931F93CF93DF93CDB7DEB762970FB6A4
+:101D4000F894DEBF0FBECDBF882E592E7E876D87DB
+:101D5000C82ED92E312C212C8D859E85281639062A
+:101D6000C9F462960FB6F894DEBF0FBECDBFDF9107
+:101D7000CF911F910F91FF90EF90DF90CF90BF9088
+:101D8000AF909F908F907F906F905F904F903F901B
+:101D90002F900895D6011F968C911F97882309F4E0
+:101DA000D8C01E96BC901E97BB2009F4D2C0ED91FE
+:101DB000FC91119719968C91A82FB0E0AD5BBE4FA6
+:101DC0004C90842D90E0D60114966D917C911597DE
+:101DD0009F01281B390B6217730788F51B961C920D
+:101DE0001E921A97942C9194D60112964D915C9163
+:101DF000139716962D913C91DA01A81BB90B2A175F
+:101E00003B0760F522E030E0F601338722874194FA
+:101E1000D6011E96BC92BB2009F49BC0A82CB52C01
+:101E2000712C612C292D092C000C330B388B2F873A
+:101E3000842D042C000C990B9A8B898B28C09F0150
+:101E4000280F391F912C2617370770F621E030E054
+:101E50001B963C932E931A97942CC6CF840F951FF4
+:101E60008217930740F4E3E0F0E0D6011B96FC9361
+:101E7000EE931A97CDCF9E2E961A442E421AB12C6D
+:101E8000C7CFBFEF6B1A7B0AE4E1AE0EB11CAD8584
+:101E9000BE856A167B0609F448C0F60180819181EF
+:101EA0002F853889820F931F98878F838281938132
+:101EB000A989BA898A0F9B1F9A87898781850E9481
+:101EC0004A0D8B87F60181850E94540D8C87D501C0
+:101ED0001F968C911F978823A1F22614370489F24C
+:101EE0008D919C9111979A8389839C838B831996FA
+:101EF0008C910E944A0D8D83F50181850E94540DBD
+:101F00008E83E980FA800B811C812D81382F4F81CF
+:101F1000588569857A858B859C850E94AC048823C9
+:101F200009F4AFCFD6011E961C92F6018685882350
+:101F300081F080819181890D911D97FC9A95918303
+:101F4000808382819381840D911D47FC9A959383B0
+:101F50008283FFEF2F1A3F0A24E1C20ED11CFCCE70
+:101F6000DC011996EC91F0E0EF5DFE4F8081089561
+:101F7000880F991FFC01E35CFE4F808191810895D9
+:101F8000BC016F5F7F4F80E1FB0111928A95E9F7F9
+:101F90008EE591E00C94F51C43E06FEF71E08EE567
+:101FA00091E00E945819811106C08EEE91E00E94C6
+:101FB000C00F0C94C9030895FC0188E0808389E078
+:101FC000818387E0828386E0838384E0848382E068
+:101FD000858381E186830895FF920F931F93CF93AA
+:101FE000DF93EC018C01095F1F4FFF24FA9462E03C
+:101FF00088810E94DF2188810E9449222F81892BBC
+:1020000081F42F5F2F8360E088810E94DF21219679
+:10201000C017D10761F7DF91CF911F910F91FF900A
+:1020200008952223A1F32F3F11F41F82ECCFFF82EA
+:10203000EACFFC01E60FF11D81E09781913009F0B4
+:1020400080E00895FC01E60FF11D81E097819F3F3C
+:1020500009F080E00895860F911DFC0187814230D0
+:1020600038F49FEF980F81E09E3F50F080E008C069
+:102070008F3FE1F3642F0E94422481E09130B1F759
+:102080000895860F911DFC0187818F3F09F480E040
+:1020900008958EBD0DB407FEFDCF8EB50895DC0109
+:1020A000643508F042C0403308F03FC090968C91F0
+:1020B0009097E62F062E000CFF0B242F25952595D3
+:1020C000259594E52902E00DF11D1124E759FA4FF9
+:1020D0002081342F37708230A1F4822F90E0032EBC
+:1020E00002C0959587950A94E2F7809581708823C0
+:1020F00099F081E090E001C0880F3A95EAF7822BD1
+:1021000013C08330A1F71C968C916427062E000C17
+:10211000770B682760FDEDCF81E090E001C0880F6C
+:102120003A95EAF780958223808308951F93CF9391
+:10213000DF93EC01162FF89460E08F850E941B223C
+:10214000888918161CF460E00E941B22812F0E94CF
+:102150004910888918161CF461E00E941B227894AB
+:10216000DF91CF911F910895E9E6F5E028EF31E086
+:10217000DF01A9011D9241505040E1F7DC011996A1
+:102180001C9219971A961C92089548EF51E06FEF30
+:102190007FEF89E695E00C946926CF92DF92EF926B
+:1021A000FF920F931F93CF93DF93EC018C858F5F8A
+:1021B0008C8789E6E82E85E0F82E10E0612F6064B8
+:1021C000CE010E94961060E8CE010E94961061E058
+:1021D0008F850E941B22888918161CF460E00E94DB
+:1021E0001B22670104E5F60181916F010E944910ED
+:1021F0000150C9F7888918161CF461E00E941B225F
+:102200001F5FF4E5EF0EF11C1630C1F660E4CE015D
+:10221000DF91CF911F910F91FF90EF90DF90CF90C2
+:102220000C949610FC0160A361A30895FC0160A3C7
+:1022300041A30895EF92FF920F931F93CF93DF93E3
+:102240008C01D62FF42EE22EC0E0CE1544F44F2D93
+:102250004C0F6D2FC8010E944F10CF5FF6CFDF915A
+:10226000CF911F910F91FF90EF900895EF92FF9201
+:102270000F931F93CF93DF938C01F62ED42FE22E72
+:10228000C0E0CE1544F46F2D6C0F4D2FC8010E9495
+:102290004F10CF5FF6CFDF91CF911F910F91FF903D
+:1022A000EF900895EF92FF920F931F93CF93DF93D8
+:1022B0007C01162FD42FC22F0E9436114FEF400FF2
+:1022C0004D0F2C2F612FC7010E943611202F4D2F4B
+:1022D000612FC7010E941A116FEF6C0F610F202F41
+:1022E0004D2FC701DF91CF911F910F91FF90EF907C
+:1022F0000C941A11DF92EF92FF920F931F93CF93DA
+:10230000DF937C01D62FD22EC42F002E000C110B90
+:10231000040F111D47FD1A958C2F0C2E000C990BE4
+:102320008017910744F42D2D4C2F6D2FC7010E946B
+:102330003611CF5FF1CFDF91CF911F910F91FF90B9
+:10234000EF90DF9008959F92AF92BF92CF92DF926D
+:10235000EF92FF920F931F93CF93DF938C01E62EA2
+:10236000F42EC22F81E0D82ED21AC22EC194CC0CEA
+:10237000422F4F0DC8010E944F104F2D4C1B6E2D48
+:10238000C8010E944F106C2F6E0D4F2DC8010E9486
+:102390004F106E2D6C1B4F2DC8010E944F10D0E0C6
+:1023A000DC170CF044C0D7FC04C0C150C394C394E4
+:1023B000DC0CDF5F8D2F880F8F5FD80E9E2C9D0E5B
+:1023C000BF2CBC0E4B2D692DC8010E944F10AE2CA6
+:1023D000AD1A4B2D6A2DC8010E944F10BF2CBC1A9C
+:1023E0004B2D692DC8010E944F104B2D6A2DC8013D
+:1023F0000E944F10BF2CBD0E4B2DAE2CAC0E6A2D83
+:10240000C8010E944F104B2DBE2CBC1A6B2DC80169
+:102410000E944F109F2C9D1A492D6A2DC8010E94C1
+:102420004F10492D6B2DC8010E944F10B9CFDF917D
+:10243000CF911F910F91FF90EF90DF90CF90BF90C1
+:10244000AF909F9008958F929F92AF92BF92CF923C
+:10245000DF92EF92FF920F931F93CF93DF937C0154
+:10246000162FD42EC22F81E0C82EC21AB22EB194DC
+:10247000BB0CD0E0802F8470A82E802F8270982E05
+:10248000802F8870882E0170DC170CF04DC0C7FCBF
+:1024900004C0C150B394B394CB0CDF5F8D2F880F71
+:1024A0008F5FC80EAA2071F04D2D4C0F612F6D0F5C
+:1024B000C7010E944F104D2D4D0F6C2F610FC701AA
+:1024C0000E944F10992071F04D2D4C1B612F6D0F04
+:1024D000C7010E944F104D2D4D1B6C2F610FC7017E
+:1024E0000E944F10882071F04D2D4D0F612F6C1BF5
+:1024F000C7010E944F104D2D4C0F612F6D1BC7015E
+:102500000E944F10002309F4BFCF4D2D4D1B612FAA
+:102510006C1BC7010E944F104D2D4C1B612F6D1B72
+:10252000C7010E944F10B0CFDF91CF911F910F9143
+:10253000FF90EF90DF90CF90BF90AF909F908F90E3
+:1025400008957F928F929F92AF92BF92CF92DF9227
+:10255000EF92FF920F931F93CF93DF935C01C62EF0
+:10256000942EC22F11E0121BD22ED194DD0C83E0E9
+:10257000F82ED0E0802F8170782E882483948E0CE2
+:102580000270DC17ACF517FD04C0C150D394D3948E
+:102590001D0DDF5F1F0D772099F02C2F220F280DC6
+:1025A000492D4C1B6C2D6D0FC5010E941A112E2D4B
+:1025B0002F0D492D4D1B6C2F6C0DC5010E941A115A
+:1025C000002399F02C2F220F280D492D4C1B6C2D28
+:1025D0006D1BC5010E941A112E2D2F0D492D4D1B6B
+:1025E0006C2D6C1BC5010E941A11F394F394C9CF92
+:1025F000DF91CF911F910F91FF90EF90DF90CF90DF
+:10260000BF90AF909F908F907F9008959F92AF92D0
+:10261000BF92CF92DF92EF92FF920F931F93CF93CF
+:10262000DF93EC01B62E142FD22EAE2CAA0C922ED4
+:102630009A18CE2CC60E292D6C2D0E943611FF241F
+:10264000FA94F00EF10E292D4F2D6C2DCE010E9423
+:1026500036110A191E0D202F412F6B2DCE010E941D
+:102660001A11DB0C6FEF6D0D202F412FCE010E9450
+:102670001A1101E02E2D412F6C2DCE010E94231244
+:102680008E2D8095D80E02E02E2D412F6D2DCE017E
+:102690000E942312FE1804E02E2D4F2D6D2DCE0129
+:1026A0000E94231208E02E2D4F2D6C2DCE010E948A
+:1026B0002312DF91CF911F910F91FF90EF90DF9048
+:1026C000CF90BF90AF909F900895AF92BF92CF925E
+:1026D000DF92EF92FF920F931F93CF93DF936C01E2
+:1026E000C62FF42EA22ED02F1E2DEE0CB12EB60E1C
+:1026F0002E196B2D0E947A11D150DE19F10E6FEF59
+:102700006C0F6A0D611BED2E01E0212F4F2DC601CC
+:102710000E94A11202E0212F4F2D6B2DC6010E94B5
+:10272000A112DF91CF911F910F91FF90EF90DF9059
+:10273000CF90BF90AF9008952F923F925F926F928B
+:102740007F928F929F92AF92BF92CF92DF92EF9241
+:10275000FF920F931F93CF93DF93EC01F901E49065
+:102760003196849164350CF015C10E2C000CFF08D5
+:10277000062F062E000C110BF701E00FF11F1E169D
+:102780001F060CF007C140330CF004C1A82FC42E63
+:10279000042E000CDD085601A80EB11C87FDBA946A
+:1027A0001A141B040CF0F6C02E5F3F4F570197E040
+:1027B000A90EB11CB7FE04C05701BEE0AB0EB11CA0
+:1027C000B3E0B594A794BA95E1F747FF0AC0A42FE8
+:1027D000A80FAC9CC001AD9C900D1124281B390B97
+:1027E00040E08A2F0A2E000C990B840F911D47FDA3
+:1027F0009A95C19714F0A0E3A41BF8A067FD60E0D0
+:10280000E535F10514F0E4E5F0E09E2FCC85C42712
+:10281000C62E062E000CDD08F601E01BF10B8F0121
+:102820004F01F7E08F229924E0E8F0E002C0F5952F
+:10283000E7958A94E2F77E2F17FF02C0095F1F4FCA
+:10284000F3E015950795FA95E1F7200F311F542F06
+:10285000577081E001C0880F5A95EAF74595459574
+:102860004595F601B4E54B02E00DF11D1124AF01D1
+:1028700047595A4FD0E02A2EAA0F3308EE24E3948A
+:10288000BB24D21513040CF085C0F9015490F1E07B
+:10289000FF121AC06901962E8A01E72F991608F0D7
+:1028A00057C08E2E852021F0D8018C90882A8C92DA
+:1028B000E69531F4BFEFCB1ADB0AF6015490E0E85D
+:1028C00093940F5F1F4FEACFF1101CC0782E7094C5
+:1028D0006901962E8A01E72F991608F039C08E2ECD
+:1028E000852021F0D8018C9087208C92E69531F4D8
+:1028F000BFEFCB1ADB0AF6015490E0E893940F5F28
+:102900001F4FEACFF3E0FF122CC0782E70946901BC
+:10291000862E8A01972E8916D0F4E92DE52141F003
+:10292000D801EC916C2E682460FE0FC0E82BEC936C
+:10293000969439F4BFEFCB1ADB0AF6015490E0E825
+:102940009E2E83940F5F1F4FE6CFE721F0CFCE2559
+:10295000880F19F44C5A5F4F81E0DF5F2A0D3B1D51
+:1029600090CF6901962E8A01E72F991688F78E2E4F
+:10297000852021F0D8018C9088268C92E69531F440
+:10298000BFEFCB1ADB0AF6015490E0E893940F5F97
+:102990001F4FEBCFDF91CF911F910F91FF90EF90E1
+:1029A000DF90CF90BF90AF909F908F907F906F906F
+:1029B0005F903F902F9008952F923F924F925F9299
+:1029C0006F927F928F929F92AF92BF92CF92DF923F
+:1029D000EF92FF920F931F93CF93DF9300D000D01D
+:1029E00000D01F92CDB7DEB74C01462E342E6901C0
+:1029F0008E2D01111DC0E1101BC0C40127960FB61A
+:102A0000F894DEBF0FBECDBFDF91CF911F910F9124
+:102A1000FF90EF90DF90CF90BF90AF909F908F90FE
+:102A20007F906F905F904F903F902F900C949C13ED
+:102A3000F60154903196E490A52CB12C9501295FB4
+:102A40003F4FA90133E0559547953A95E1F75B83F0
+:102A50004A830370F12CEE2DF0E0FD83EC835A9451
+:102A60001FEF1E0D2F2D0F2C000C330B2A153B05CD
+:102A70000CF070C0F982F7FE03C0F7E0FF0DF98398
+:102A8000298125952595259529839F2D977897FF51
+:102A900003C09150986F9F5F20E8622E712C02C096
+:102AA000759467949A95E2F7212C4981042E000CC5
+:102AB000550B4E5F5F4F5F834E83222D022C000C1F
+:102AC000330BEC81FD812E173F070CF041C04A818A
+:102AD0005B81429FF001439FF00D529FF00D112446
+:102AE0002E813F81E20FF31FEC0DFD1DE491F0E01C
+:102AF000E621F721EF2B41F1023069F0612F6219D5
+:102B00004F2D033061F0452D4F19622D013039F002
+:102B1000422D6F2D04C0652D6F19412F4219882356
+:102B2000A9F0382F3370398380FF03C0552D561B11
+:102B3000652F81FF03C08E2D841B482F640D430D2C
+:102B4000C4010E944F1089812394B7CF1982F6CF18
+:102B5000F39488CF27960FB6F894DEBF0FBECDBF93
+:102B6000DF91CF911F910F91FF90EF90DF90CF9069
+:102B7000BF90AF909F908F907F906F905F904F909D
+:102B80003F902F900895DC01FB0184918F5F149694
+:102B90008C9314973196E491EF5F1596EC9315970B
+:102BA0006E5F7F4F5F967C936E935E970895EF9272
+:102BB0000F93CF93DF93EC014E876D872F87E98AC0
+:102BC000088B81E0888788A319A28F836AEB73E062
+:102BD000CE010E94C3150E94FF2381E00E941524AC
+:102BE00085E00E9423248CE00E941E2461E08E85F3
+:102BF0000E94DF2161E08D850E94DF2161E08F85E9
+:102C00000E94DF21898918161CF461E00E94DF21EF
+:102C1000888918161CF461E00E94DF218989181642
+:102C20006CF460E00E941B226AE070E080E090E0BB
+:102C30000E94DD2061E089890E941B228D85082E7B
+:102C4000000C990BFC01E253F94FE491F0E0EE0F18
+:102C5000FF1FE451F94F259134913D8B2C8BFC01E2
+:102C6000E654F94FE491EB8F8E85082E000C990BFA
+:102C7000FC01E253F94FE491F0E0EE0FFF1FE45145
+:102C8000F94F259134913B8B2A8BFC01E654F94F87
+:102C9000E491EA8F8889082E000C990BFC01E2531D
+:102CA000F94FE491F0E0EE0FFF1FE451F94F259149
+:102CB00034913F8B2E8BFC01E654F94FE491EC8F5D
+:102CC0008F85082E000C990BFC01E253F94FE4911B
+:102CD000F0E0EE0FFF1FE451F94F25913491398F49
+:102CE000288FFC01E654F94FE491ED8F61E2CE01AB
+:102CF0000E94961064E1CE010E9496108B8587FF9A
+:102D000002C08FE78B876B856068CE010E949610AA
+:102D100060E2CE010E9496106CE0CE010E949610F7
+:102D2000CE01DF91CF910F91EF900C94CD104F9287
+:102D30005F926F927F928F929F92AF92BF92CF924B
+:102D4000DF92EF92FF920F931F93CF93DF93EC01EB
+:102D5000862EF42E102F83E586170CF485C08FE2A3
+:102D600084170CF481C04C814150550B049FC00165
+:102D7000059F900D1124860F911D67FD9A951816D9
+:102D800019060CF071C03D818F2D0F2C000C990B92
+:102D9000039F800D911D1124181619060CF064C0B4
+:102DA00078A0E62E912CC22ED12C292D092C000CB6
+:102DB000330B8C8190E0281739070CF054C0019731
+:102DC000E0E02817390771F0C89EF001C99EF00DA8
+:102DD000D89EF00D11242E0F3F1FEE8DFF8DE20FB8
+:102DE000F31FE4915F2C612C492C480C2D81862D1A
+:102DF000062C000C990B2817190691F18CF1AE2EB8
+:102E0000B12CE0FF16C0113061F4462D4F0D642D3A
+:102E1000CE010E944F10F501F595E7956394510E90
+:102E2000E5CF012F212F452D6E2DCE010E947A1165
+:102E3000F2CF89A198A1891771F388A3113041F4C9
+:102E4000462D4F0D642DCE010E944F1078A2E3CF86
+:102E5000012F212F452D6E2DCE010E947A11F6CF24
+:102E60009394E10EA2CF78A2DF91CF911F910F91A1
+:102E7000FF90EF90DF90CF90BF90AF909F908F909A
+:102E80007F906F905F904F9008950F93CF93DF9353
+:102E9000EC01262F6A3049F428859D818A85299F77
+:102EA000800D11248A8719861DC06D30D9F00885E0
+:102EB0004A8569850E94971628853C818985239FCC
+:102EC000800D112489879F81992361F0082E000CC1
+:102ED000990B44E550E0239F4019510911244817EC
+:102EE0005907DCF281E090E0DF91CF910F910895D6
+:102EF000FC01EC57FF4F718360838A579F4F445FFB
+:102F0000FC01408308956F927F928F929F92AF92BF
+:102F1000BF92CF92DF92EF920F93CF93DF934C014A
+:102F20005C0186E8A80EB11CD5018C91882309F4B8
+:102F30004AC0CCE0C81B8C3008F0C0E0F401EA5A6B
+:102F4000FF4F81E080836401BEE4CB0ED11C60E0C2
+:102F5000C6010E9412113401E3E56E0E711CD3010B
+:102F60008C9103E0080FDDE24D2F481B4C0F83E0EE
+:102F7000E82E24E560E0C6010E94651361E0C60109
+:102F80000E941211F301808103E0080F4D2F481BAE
+:102F90004C0F24E560E0C6010E940613F401E95AD3
+:102FA000FF4F84E080833196D3018C91C81BC15DB3
+:102FB000C083BC9660817181C6010E94A922F5017F
+:102FC000808181508083DF91CF910F91EF90DF90CE
+:102FD000CF90BF90AF909F908F907F906F9008950B
+:102FE000CF92DF92FF920F931F93CF93DF93EC0169
+:102FF0008C8D9D8D892B01F18E01025B1F4F40E06E
+:1030000061E0C8010E941611FE01E95AFF4FDE017E
+:10301000AE5ABF4F9C9185E5891B80833196108203
+:10302000698D613009F46DC078F0888D653008F0E5
+:1030300082C06B5F811175C0DF91CF911F910F919D
+:10304000FF90DF90CF900895CE0185960E944A1F91
+:1030500081E0FE01EA5AFF4F80836AEB73E0C8010A
+:103060000E94C3151D8E1C8EFE01EC5AFF4F10826C
+:1030700088EAF82E6E018AE0C80ED11CCE010E94AB
+:10308000A0188823D9F369EA75E0C8010E94A92233
+:103090006A8D7B8D4AE050E0C8010E94B82364E944
+:1030A00075E0C8010E94A9226F2D62956F7070E0D3
+:1030B0004AE050E0C8010E94A42369E875E0C80115
+:1030C0000E94A92264E0C6010E9419108111B4CFA8
+:1030D000FA94F110D3CF60E0CE010E94BD1F83B7F8
+:1030E000817F846083BF83B7816083BF83B7816042
+:1030F00083BF889583B78E7F83BF83B78E7F83BF5F
+:10310000BDCFCF58DF4F88819981AA81BB818F7055
+:103110009927AA27BB2767E00897A105B10508F002
+:1031200068E7C801DF91CF911F910F91FF90DF9069
+:10313000CF900C94D422882309F47ECF6FE2F1CF94
+:103140008F929F92AF92BF92CF92DF92EF92FF92B7
+:103150000F931F93CF93DF93EC017C0180E8E80E7F
+:10316000F11CF70180809180A280B3800E94AC2086
+:10317000861A970AA80AB90A6E01FFE7CF0ED11C7A
+:10318000F601808190E0B0E0A0E08E0105581F4F6D
+:1031900088159905AA05BB0508F04AC0F801808189
+:1031A0009181A281B381892B8A2B8B2B09F440C09A
+:1031B0000E94AC20F6012081620F711D811D911DBE
+:1031C000F70160837183828393833F97808191812C
+:1031D000A281B3810196A11DB11D80839183A28339
+:1031E000B383F80110821182128213820E94B820E8
+:1031F000FE01E958FF4F6083718382839383CE0180
+:103200000E94C11FCE010A960E94EC0FCE01489683
+:103210000E942A2081E0DF91CF911F910F91FF90B2
+:10322000EF90DF90CF90BF90AF909F908F900895D8
+:10323000F80180819181A281B381892B8A2B8B2B0C
+:10324000A9F57E01F5E2EF0EF11CC7010E94051EF3
+:10325000C7010E94781EC7010E943C1FCE010E9438
+:103260008317CE010E94F0177E018EE4E80EF11C58
+:10327000C7010E94CD10FE01EC5AFF4F80818111E1
+:1032800003C0C7010E94B4100E94B820F8016083F7
+:10329000718382839383FE01EB58FF4FC958DF4F40
+:1032A00028813981621B730B7183608380E0B3CF07
+:1032B0002F923F924F925F926F927F928F929F9246
+:1032C000AF92BF92CF92DF92EF92FF920F931F9334
+:1032D000CF93DF93CDB7DEB765970FB6F894DEBF17
+:1032E0000FBECDBF6C016A8B7B8B4B83FC01EC5A0C
+:1032F000FF4F10822FEF2D831C821D8A10E31C8A42
+:103300003C013AE0630E711C842F90E09F838E8312
+:103310002601E3E54E0E511C4601F5E28F0E911C8D
+:103320009601295A3F4F39872887C601885A9F4FEF
+:103330009B878A87F601EA5AFF4FFF87EE87225064
+:103340003109398B288B0A971C01C6010E94A018ED
+:103350008823D9F364E0C3010E941910012F110FD3
+:10336000110B882399F0F201F081F1952B81F29FE6
+:10337000202D112422502D8B64E0C3010E941910CE
+:10338000811193C0C4010E94A51F94C065E0C301D0
+:103390000E9419108111E7CF66E0C3010E94191045
+:1033A0008111E1CF8C81811185C044E063E0C301CC
+:1033B0000E942B10882331F09C899F5F9C8BC40155
+:1033C0000E94A91F44E061E0C3010E942B108823E2
+:1033D00031F0EC89E150EC8BC4010E94A91FFC89FB
+:1033E0008F2F0F2E000C990B2E813F818217930790
+:1033F00009F46BC0F7FF03C03B8131503C8BF201F5
+:103400008081F4E0F80F2C89829FF0191124FD8B44
+:103410009D89090F111D97FD1A9517FF02C00F5FB7
+:103420001F4FF801F595E795FA83E9830981102F7D
+:10343000E885F9851082EA85FB85008321E0EE8529
+:10344000FF852083E889F9891082EA88FB88B12CFE
+:10345000A12C2C89022E000C330B3D872C878E81EA
+:103460009F818A159B0599F1EC85FD85EA15FB0581
+:1034700079F423E0E885F9852083F2018081F02F3B
+:103480002C89289FF00D11248F2FEA85FB858083DE
+:10349000F70165917491C1010E94EF22FFEFAF1A0D
+:1034A000BF0A22E0E20EF11CDACFC4010E94A11F84
+:1034B0003C893D83C8013D89831B910937FD939564
+:1034C000029764F181E08C83A3CF1C8A98CF60E0DF
+:1034D000C1010E941211F20180814981FC89F89F8B
+:1034E000400D1124415024E560E0C1010E943611D5
+:1034F00061E0C1010E941211F201808103E0080F16
+:103500004981FC898F9F400D1124425083E0E82EB1
+:1035100024E560E0C1010E94061317CF8D816596F6
+:103520000FB6F894DEBF0FBECDBFDF91CF911F91D4
+:103530000F91FF90EF90DF90CF90BF90AF909F9052
+:103540008F907F906F905F904F903F902F90089555
+:103550000F931F93CF93DF93EC018C01025B1F4FFE
+:10356000C8010E94B41061E675E0C8010E94A9225A
+:10357000C8010E94CD1083E00E94232487E591E0DA
+:10358000EEEFFFE30995FE01EC5AFF4F10826CE36A
+:1035900075E0C8010E94EF22C8010E94CD102A9652
+:1035A000CE010E94EC0F64E0CE010E94191081113F
+:1035B00007C062E370E080E090E00E94DD20F0CF81
+:1035C000DF91CF911F910F9108952F923F924F92CB
+:1035D0005F926F927F928F929F92AF92BF92CF92A3
+:1035E000DF92EF92FF920F931F93CF93DF93CDB7AC
+:1035F000DEB729970FB6F894DEBF0FBECDBF99870F
+:1036000088877B836A832A013C0180E7680E711CEE
+:10361000F3018081882309F4F7C081E0E885F9850A
+:10362000EA5AFF4F8083E885F985EB5AFF4F1082F5
+:10363000E885F985EC5AFF4F1082E885F985108EF0
+:103640008F01025B1F4F61E0C8010E941211888543
+:1036500099858D5A9F4F9F838E83A884B98497E55F
+:10366000A90EB11CE884F984E8E5EE0EF11C88840B
+:103670009984F2E58F0E911C888599858F589F4F0C
+:103680009D838C83288439849AE0290E311CC88458
+:10369000D984E5E2CE0ED11C888599850E94A018B8
+:1036A0008823D1F3EA81FB81F491F983FF2321F090
+:1036B000EE81FF81F081F9832BEC35E040E060E0A2
+:1036C000C8010E949C134114510439F04981445FA0
+:1036D000920160E0C8010E949C13F50110828CE009
+:1036E000F70180836A817B81C8010E94A922F401CD
+:1036F0008081982F990F990F891B8D5AF50180832E
+:10370000EE81FF818081982F990F990F891B835D2E
+:10371000F7018083EC81FD81808167EC75E084FD99
+:1037200002C063EC75E0C8010E94EF22F4018081C1
+:10373000982F990F990F891B8D5AF5018083F701F6
+:1037400080818F5F8083E885F98582A56FEB75E0C6
+:10375000811102C06BEB75E0C8010E94EF22F401F9
+:103760008081982F990F990F891B8D5AF5018083BD
+:10377000F70180818F5F808367EB75E0C8010E944D
+:10378000EF2265E0C1010E941910882351F0E885FD
+:10379000F98562A56F5FC6010E94AD1FC6010E9438
+:1037A000A91F64E0C1010E94191081111FC0F3011B
+:1037B0002081422F50E070E060E0EC81FD8180814B
+:1037C0009181A281B38184179507A607B70710F0EE
+:1037D0002F3F61F466E0C1010E941910882309F4AB
+:1037E0005BCF888599850E94A81A56CF8FEFF30189
+:1037F000808360E0C6010E943F1FC6010E94A11F96
+:1038000081E0E885F985808F29960FB6F894DEBFB0
+:103810000FBECDBFDF91CF911F910F91FF90EF9021
+:10382000DF90CF90BF90AF909F908F907F906F90E0
+:103830005F904F903F902F90089550E040E00C949F
+:10384000E51AE0E8F7E72591349181E02130304C2A
+:1038500009F080E00895CF93DF93EC010E94211CD2
+:103860009E01275A3F4FDE01A059BF4F882309F41C
+:1038700040C0E6E9F7E78491F9018083E7E9F7E7DB
+:10388000E491EC83E8E9F7E7E491ED83E9E9F7E710
+:10389000859194919F838E83EBE9F7E785919491CD
+:1038A00099878887EDE9F7E7E491EBA7EEE9F7E779
+:1038B000E491EAA7EFE9F7E7E491EC93E0EAF7E7B0
+:1038C000859194919D8F8C8FE2EAF7E78591949191
+:1038D0009F8F8E8FE4EAF7E78591949199A388A34F
+:1038E000E6EAF7E7859194919BA38AA3DF91CF91B4
+:1038F00008958CE3F90180831C828FEF8D8320E291
+:1039000033E03F832E8324ED33E03987288791E02D
+:103910009BA79AA78C938CEA9DE09D8F8C8F8EED50
+:103920009DE09F8F8E8F84E79EE099A388A38CE310
+:103930009FE0DACFCF92DF92EF920F93CF93DF9396
+:10394000EC01FC01E158FF4F82E38083349781E072
+:1039500090E0A0E0B0E080839183A283B3833B97A3
+:103960008FEF8083CE010E942B1CCE010E94B91FD5
+:103970006FEFCE010E94BD1F6E018AE0C80ED11C00
+:10398000C6010E94DC0FC6010E94EC0FCE014896D2
+:103990000E9420208EE0E82E0FE020E14BE06DE059
+:1039A000CE01825B9F4F0E94D715A596CE010E9443
+:1039B0003E1D65E0C6010E941910882351F060E0A9
+:1039C000CE01DF91CF910F91EF90DF90CF900C94CB
+:1039D000AD1F40E06BE376E0CE01DF91CF910F9118
+:1039E000EF90DF90CF900C94D21DCF93DF93D62F22
+:1039F000C72F0E94211C882359F0AD2FBC2FEBE864
+:103A0000F7E784918D933196E53987E7F807C9F791
+:103A1000DF91CF910895CF93DF93DC0170E0660FC3
+:103A2000771F1F96ED91FC915097E60FF71F259198
+:103A3000349190963C932E935F97F9014591549160
+:103A400014968C911497849F402D112491964C9339
+:103A50009197F901C591D4916D2F70E04617170623
+:103A600029F020F0F90125913491432F849F402DB6
+:103A7000112492964C93DF91CF91089521E0FC019F
+:103A8000248324E020A72AE936E0308B278760E0F2
+:103A90000E940B1D61E070E083E00E945921E1EB80
+:103AA000F0E08081887F81608083F89410928000AC
+:103AB000E1E8F0E01082109285001092840088E125
+:103AC00091E0909389008093880080818860808352
+:103AD000808181608083EFE6F0E080818260808376
+:103AE000789408950F93FC01011107C06230D9F05A
+:103AF00030F4662379F0613091F00F9108956330CE
+:103B0000C9F06430D1F76481649F402D1124458F42
+:103B1000268FF3CF4B3008F04AE0468BEECF642F70
+:103B20000F910C940B1D6481649F402D1124418FD3
+:103B3000228FE3CF6481649F402D1124438F248F13
+:103B4000DCCF80916D07882329F080916A078093EC
+:103B5000B400089580E0FBCFFC01178A158A14A2F7
+:103B600013A2108E10926A0710926B0710926D07C5
+:103B70000C94A11D0F931F93CF93DF93EC018B0146
+:103B80000E94AC1D1E870D871B8A1A8A81E08983DB
+:103B900089E08E8B198E1B8E1D8EDF91CF911F9128
+:103BA0000F910895411102C00C94BA1D0895CF934E
+:103BB000DF93EC01611115C08881882391F0898120
+:103BC00081110FC0E9858E2F90E0880F991FEF813A
+:103BD000F885E80FF91F859194918F3F980721F49C
+:103BE0001882DF91CF9108959C879927880F991F9C
+:103BF000EA85FB85E80FF91F65917491CE010E945B
+:103C0000BA1D89858F5F8987ECCF60E00C94D71D42
+:103C10000F93CF93DF93EC01611166C089818823F4
+:103C200009F462C08D8981115FC08D859E85EA8906
+:103C3000FB89EE0FFF1FE80FF91F459154914115C5
+:103C4000510541F42989213021F51B8A1A8AFC018A
+:103C500045915491BA017695679576956795862F2B
+:103C600040FF2EC0252F269526952695205186E0CB
+:103C7000569547958A95E1F74F716F7000E0CE0138
+:103C80000E94721DEA89FB893196FB8BEA8BCF017A
+:103C90000AC019828881882369F060E0CE010E9401
+:103CA000D71D8A899B89880F991FED85FE85E80FAE
+:103CB000F91FCECFCE01DF91CF910F910C94AC1DA7
+:103CC0008F738C8B8C81859F802D11248D8B1DA2F1
+:103CD0001CA21BA281E08F8B80936D07188E8A89AE
+:103CE0009B8901969B8B8A8BDF91CF910F910895D1
+:103CF00060E00C94081ECF93DF93EC016111B3C018
+:103D00008F89882309F4AFC08D89811105C0CE0148
+:103D1000DF91CF910C94AC1D81508D8B8DA18111C1
+:103D200034C02BA13CA12F5F3F4FC901880F991FC1
+:103D3000EF8DF8A1E80FF91F85919491482F4770F6
+:103D40004EA3492F469546954FA3AC0164E0569586
+:103D500047956A95E1F74F739C81499F402D112447
+:103D60004DA383FB882780F9809369073CA32BA38D
+:103D700089A190E02817390740F02AA1222309F4ED
+:103D800075C0821B91099CA38BA38DA181508DA32B
+:103D9000888D31E0380F388F4C892FA1240F8C8506
+:103DA000280F2A836B8D662361F070E0832F032E2A
+:103DB000000C990B0E9462248C8D869F200D11248B
+:103DC0002A838A8190E0CB966BE370E00E946224A4
+:103DD0008A832E892B83698D662371F0062E000C51
+:103DE000770B832F032E000C990B0E9462248A8D7F
+:103DF000869F200D11242B836D8D662389F0832FE0
+:103E0000330F990B70E00E946224CB0162E070E0F6
+:103E10000E9462242E8D9B81289F900D11249B83EC
+:103E20004F3341F18B818A300CF089E087FD80E0CF
+:103E30008B83F894EA81F0E0E75BF94FE491E0933B
+:103E40006C078D8198A5899F802D11249B81899F66
+:103E5000802D11249EA1899F802D112480936B07B2
+:103E600080936A077894DF91CF910895CE010E94E4
+:103E7000AC1D8BCF1B82DDCF60E00C947B1ECF93FB
+:103E8000DF93EC01611103C00E94AC1D1982DF9128
+:103E9000CF910895CF93DF93EC010E94AC1D19825E
+:103EA000DF91CF91089560916B07662329F180918E
+:103EB0006E078F5F80936E0790916C078917E0F013
+:103EC00081E090916D07911180E080936D071092D1
+:103ED0006E0780916907882369F08091040193E45B
+:103EE000899F802D1124895B809304010E944224C4
+:103EF00090936A070C94A11D08951F920F920FB61C
+:103F00000F9211242F933F934F935F936F937F935F
+:103F10008F939F93AF93BF93EF93FF930E94531F91
+:103F2000FF91EF91BF91AF919F918F917F916F9191
+:103F30005F914F913F912F910F900FBE0F901F9067
+:103F4000189562E976E00C94BA1D6AE876E00C9464
+:103F5000BA1D64E876E00C94BA1DFC01862F660F4A
+:103F6000990B668170E06F5F7F4F0E9462248583AA
+:103F7000089521E0FC012083089570E085E00C9411
+:103F80005921AF92BF92CF92DF92EF92FF920F939F
+:103F90001F93CF93DF93EC0189819A812FE0289FB3
+:103FA0008001299F100D112485E10E943E21800F80
+:103FB000911F24E0969587952A95E1F79A83898346
+:103FC0002881222391F1EC81AD80B12CD12CC12C20
+:103FD000A885B9857D0110E000E06E817F819B019D
+:103FE00050E040E08617970728F0BC01A817B907F2
+:103FF00008F4BD0190E080E01F921F921F92EF93A2
+:104000000E94BE236B830F900F900F900F9070E073
+:1040100085E0DF91CF911F910F91FF90EF90DF909E
+:10402000CF90BF90AF900C945921DF91CF911F9109
+:104030000F91FF90EF90DF90CF90BF90AF900895D9
+:10404000FC018CE39FE09383828384E0818381E0A1
+:1040500084870895CF93DF93EC018C819D81892B18
+:1040600021F18C858F7139F584E10E943E21BC01DC
+:10407000990F880B990B0E94142526EE3FE34EEC16
+:1040800050E40E94A0250E94E3249B017B836A8365
+:10409000672BA9F084E08983FE01349680E041918A
+:1040A00051912417350720F48983DF91CF9108952A
+:1040B0008F5F8430A1F78C858F5F8C87F6CF8FEF71
+:1040C0008983F9CF1F920F920FB60F9211242F936D
+:1040D0003F938F939F93AF93BF938091700790917D
+:1040E0007107A0917207B091730730916F0723E0B9
+:1040F000230F2D3758F50196A11DB11D20936F0791
+:104100008093700790937107A0937207B093730721
+:104110008091740790917507A0917607B091770709
+:104120000196A11DB11D8093740790937507A0930C
+:104130007607B0937707BF91AF919F918F913F9191
+:104140002F910F900FBE0F901F90189526E8230F08
+:104150000296A11DB11DD2CF2FB7F89460917007C0
+:104160007091710780917207909173072FBF089526
+:104170003FB7F8948091740790917507A0917607E6
+:10418000B091770726B5A89B05C02F3F19F001967F
+:10419000A11DB11D3FBFBA2FA92F982F8827BC01A1
+:1041A000CD01620F711D811D911D42E0660F771FC9
+:1041B000881F991F4A95D1F70895CF92DF92EF9209
+:1041C000FF92CF93DF936B017C010E94B820EB013B
+:1041D000C114D104E104F10439F4DF91CF91FF90CF
+:1041E000EF90DF90CF9008950E94B8206C1B7D0B5C
+:1041F000683E734068F381E0C81AD108E108F1080D
+:10420000C851DC4FE5CF789484B5826084BD84B515
+:10421000816084BD85B5826085BD85B5816085BDC1
+:10422000EEE6F0E0808181608083E1E8F0E01082DA
+:10423000808182608083808181608083E0E8F0E01B
+:10424000808181608083E1EBF0E080818460808305
+:10425000E0EBF0E0808181608083EAE7F0E080813C
+:10426000846080838081826080838081816080839C
+:104270008081806880831092C10008958E3008F09C
+:104280008E502091050190E4299F900111248770A0
+:10429000822B80937C0080917A00806480937A00E6
+:1042A00080917A0086FDFCCF809178009091790012
+:1042B00008951F93CF93DF93182FEB0161E00E94C5
+:1042C000DF21209739F460E0812FDF91CF911F919A
+:1042D0000C941B22CF3FD10511F461E0F5CFE12F03
+:1042E000F0E0EA55F94FE491E33031F140F4E13088
+:1042F000B1F0E230E1F0C038D1057CF7E4CFE63030
+:1043000029F1E73059F1E430B1F780918000806203
+:1043100080938000D0938B00C0938A0004C084B542
+:10432000806884BDC7BDDF91CF911F91089584B58A
+:10433000806284BDC8BDF7CF809180008068809383
+:104340008000D0938900C0938800EDCF8091B000A9
+:1043500080688093B000C093B300E5CF8091B00037
+:1043600080628093B000C093B400DDCF833081F0D1
+:1043700028F4813099F08230A9F008958630A9F0B0
+:104380008730C9F08430B1F4809180008F7D03C004
+:10439000809180008F7780938000089584B58F7717
+:1043A00084BD089584B58F7DFBCF8091B0008F7759
+:1043B0008093B00008958091B0008F7DF9CFCF93A6
+:1043C000DF9390E0FC01E654F94F24918253994F1A
+:1043D000FC0184918823C9F090E0880F991FFC01AB
+:1043E000EA50F94FA591B491FC01E451F94FC59100
+:1043F000D49161110DC09FB7F8948C9120958223C0
+:104400008C938881282328839FBFDF91CF910895C3
+:10441000623051F49FB7F8943C91822F80958323AA
+:104420008C93E8812E2BEFCF8FB7F894EC912E2B45
+:104430002C938FBFEACF1F93CF93DF93162F282F94
+:1044400030E0F901EA55F94F8491F901E654F94F4A
+:10445000D491F901E253F94FC491CC23A1F0811119
+:104460000E94B621EC2FF0E0EE0FFF1FE451F94F50
+:10447000A591B4918FB7F894EC91111108C0D09523
+:10448000DE23DC938FBFDF91CF911F910895DE2B48
+:10449000F8CFCF93DF93282F30E0F901EA55F94F99
+:1044A0008491F901E654F94FD491F901E253F94F9F
+:1044B000C491CC23A1F081110E94B621EC2FF0E031
+:1044C000EE0FFF1FEE51F94FA591B491EC91ED2342
+:1044D00081E090E009F480E0DF91CF91089580E0E1
+:1044E00090E0FACFCF92DF92EF92FF920F931F935B
+:1044F000CF93DF936C01EB017B01E40EF51E10E01E
+:1045000000E0CE15DF0561F06991D601ED91FC91D7
+:104510000190F081E02DC6010995080F191FF1CF18
+:10452000C801DF91CF911F910F91FF90EF90DF9025
+:10453000CF900895FB0101900020E9F73197AF017A
+:10454000461B570BDC01ED91FC910280F381E02DBD
+:104550000994EF92FF920F931F93CF93DF937C0107
+:104560008B01D0E0C0E0F80164910F5F1F4F66231C
+:1045700059F0D701ED91FC910190F081E02DC70138
+:104580000995C80FD91FEFCFCE01DF91CF911F91B1
+:104590000F91FF90EF9008956115710511F00C9443
+:1045A0009A2290E080E00895DC01ED91FC91019069
+:1045B000F081E02D09940F931F93CF93DF93EC01CB
+:1045C0006DE00E94D4228C016AE0CE010E94D422C8
+:1045D000800F911FDF91CF911F910F9108950F933D
+:1045E0001F93CF93DF93EC010E94A9228C01CE018F
+:1045F0000E94DB22800F911FDF91CF911F910F91BD
+:1046000008958F929F92AF92BF92CF92DF92EF92D6
+:10461000FF920F931F93CF93DF93CDB7DEB7A19790
+:104620000FB6F894DEBF0FBECDBF6C01142FE52F7F
+:10463000CB01022F19A2223008F40AE07E0121E208
+:10464000E20EF11C802E912CB12CA12C612F7E2F1B
+:10465000A50194010E947624029F101911241A309A
+:104660003CF5105DF70112937F01122FE32FCA0171
+:10467000232B242B252B51F790E080E0E114F1044B
+:1046800021F0B701C6010E949A22A1960FB6F894B4
+:10469000DEBF0FBECDBFDF91CF911F910F91FF9075
+:1046A000EF90DF90CF90BF90AF909F908F90089544
+:1046B000195CD8CFCF92DF92EF92FF920F931F93A6
+:1046C000CF93DF93EC016A017B012115310579F469
+:1046D000E881F9810190F081E02D642FDF91CF9185
+:1046E0001F910F91FF90EF90DF90CF9009942A30A7
+:1046F0003105E9F42AE0F7FE1AC06DE20E94D422E7
+:104700008C0144275527BA014C195D096E097F09B0
+:104710002AE0CE010E940123800F911FDF91CF91EB
+:104720001F910F91FF90EF90DF90CF900895B70108
+:10473000A601CE01DF91CF911F910F91FF90EF90D5
+:10474000DF90CF900C9401239A01AB01770F660B99
+:10475000770B0C945A232115310541F4DC01ED91BE
+:10476000FC910190F081E02D642F09940C940123B9
+:104770009A01AB0170E060E00C94AB234F925F9222
+:104780006F927F92AF92BF92CF92DF92EF92FF92A1
+:104790000F931F93CF93DF93CDB7DEB729013A0173
+:1047A0009B01AC01241935094609570989899A8961
+:1047B000AB89BC89BC01CD016A197B098C099D09B3
+:1047C0000E943224A8019701241935094609570986
+:1047D0000E949824CA01B9016A0D7B1D8C1D9D1D84
+:1047E000DF91CF911F910F91FF90EF90DF90CF90CD
+:1047F000BF90AF907F906F905F904F90089561E071
+:104800008AE00E941B2261E08AE00E94DF218CB5D1
+:1048100080618CBD8CB580648CBD61E08DE00E94B0
+:10482000DF2161E08BE00C94DF21811104C08CB5A5
+:1048300080628CBD08958CB58F7DFBCF9CB5937F36
+:10484000892B8CBD08959CB59C7F282F2370922BBB
+:104850009CBD9DB582FB222720F9892F8E7F822B5C
+:104860008DBD0895DB018F939F930E94B724BF9164
+:10487000AF91A29F800D911DA39F900DB29F900DAF
+:1048800011240895991B79E004C0991F961708F028
+:10489000961B881F7A95C9F780950895AA1BBB1BA4
+:1048A00051E107C0AA1FBB1FA617B70710F0A61B30
+:1048B000B70B881F991F5A95A9F780959095BC0151
+:1048C000CD01089597FB072E16F4009407D077FDCD
+:1048D00009D00E944E2407FC05D03EF490958195A6
+:1048E0009F4F0895709561957F4F0895A1E21A2E0C
+:1048F000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F84
+:10490000A217B307E407F50720F0A21BB30BE40BD3
+:10491000F50B661F771F881F991F1A9469F760951A
+:104920007095809590959B01AC01BD01CF010895D4
+:10493000052E97FB1EF400940E94AF2457FD07D06C
+:104940000E94762407FC03D04EF40C94AF245095BB
+:104950004095309521953F4F4F4F5F4F089590956B
+:104960008095709561957F4F8F4F9F4F08950E945E
+:10497000D424A59F900DB49F900DA49F800D911DF0
+:10498000112408950024A7FD00942A0F301D401D16
+:10499000501D601D701D801D901D0895EE0FFF1F9E
+:1049A0000590F491E02D0994A29FB001B39FC0013E
+:1049B000A39F700D811D1124911DB29F700D811D4B
+:1049C0001124911D08950E947F2588F09F5798F02B
+:1049D000B92F9927B751B0F0E1F0660F771F881F04
+:1049E000991F1AF0BA95C9F714C0B13091F00E941E
+:1049F0009925B1E008950C949925672F782F882781
+:104A0000B85F39F0B93FCCF3869577956795B39544
+:104A1000D9F73EF490958095709561957F4F8F4FB3
+:104A20009F4F0895E89409C097FB3EF490958095B8
+:104A3000709561957F4F8F4F9F4F9923A9F0F92F64
+:104A400096E9BB279395F695879577956795B795E2
+:104A5000F111F8CFFAF4BB0F11F460FF1BC06F5FC8
+:104A60007F4F8F4F9F4F16C0882311F096E911C0DA
+:104A7000772321F09EE8872F762F05C0662371F0FB
+:104A800096E8862F70E060E02AF09A95660F771F0F
+:104A9000881FDAF7880F9695879597F9089597F903
+:104AA0009F6780E870E060E008959FEF80EC0895D4
+:104AB00000240A94161617061806090608950024FD
+:104AC0000A9412161306140605060895092E039477
+:104AD000000C11F4882352F0BB0F40F4BF2B11F4EB
+:104AE00060FF04C06F5F7F4F8F4F9F4F089557FD4A
+:104AF0009058440F551F59F05F3F71F04795880F4C
+:104B000097FB991F61F09F3F79F0879508951216E2
+:104B100013061406551FF2CF4695F1DF08C016168E
+:104B200017061806991FF1CF86957105610508943F
+:104B30000895E894BB2766277727CB0197F9089556
+:104B40000E94B3250C9466250E94582538F00E94D7
+:104B50005F2520F0952311F00C944F250C945525DA
+:104B600011240C949A250E94772570F3959FC1F328
+:104B7000950F50E0551F629FF001729FBB27F00D0B
+:104B8000B11D639FAA27F00DB11DAA1F649F662760
+:104B9000B00DA11D661F829F2227B00DA11D621FAF
+:104BA000739FB00DA11D621F839FA00D611D221F69
+:104BB000749F3327A00D611D231F849F600D211D4D
+:104BC000822F762F6A2F11249F5750409AF0F1F0D0
+:104BD00088234AF0EE0FFF1FBB1F661F771F881F39
+:104BE00091505040A9F79E3F510580F00C944F25FD
+:104BF0000C949A255F3FE4F3983ED4F3869577951D
+:104C00006795B795F795E7959F5FC1F7FE2B880FDE
+:104C1000911D9695879597F908958F929F92AF92DF
+:104C2000BF92CF92DF92EF92FF92CF93DF93EC018E
+:104C3000688179818A819B81611571058105910562
+:104C400021F464E279ED8BE597E02DE133EF41E06B
+:104C500050E00E94982449015A019B01AC01A7EA47
+:104C6000B1E40E94B7246B017C01ACEEB4EFA50166
+:104C700094010E942129DC01CB018C0D9D1DAE1DEC
+:104C8000BF1DB7FF03C00197A109B048888399836E
+:104C9000AA83BB839F77DF91CF91FF90EF90DF9046
+:104CA000CF90BF90AF909F908F9008950E940D2657
+:104CB000089580E091E00E940D260895B0E0A0E004
+:104CC0008093000190930101A0930201B09303012E
+:104CD0000895DC0101C06D9341505040E0F7089504
+:104CE000AEE0B0E0E6E7F6E20C9434290D891E89C7
+:104CF0008F89988D26E02C831A83098397FF02C041
+:104D000080E090E801979E838D83AE01455E5F4F02
+:104D1000698D7A8DCE0101960E94A0264D815E811B
+:104D200057FD0AC02F813885421753070CF49A01AA
+:104D3000020F131FF80110822E96E4E00C94502904
+:104D4000ABE0B0E0E6EAF6E20C9426297C013B01F8
+:104D50008A01FC0117821682838181FFC8C1CE01BE
+:104D600001965C01F7019381F30193FD859193FF17
+:104D700081913F01882309F453C1853239F493FDB1
+:104D8000859193FF81913F01853229F4B70190E02D
+:104D90000E949028E7CF912C212C312CFFE1F315B4
+:104DA00038F08B3211F190F4803209F1833229F11D
+:104DB00037FC3CC020ED280F2A3050F536FE20C0CD
+:104DC0008AE0989E200D1124922E06C08D3291F01B
+:104DD000803371F7689430F8F30193FD859193FF68
+:104DE00081913F018111DACF21C0689431F8689434
+:104DF00032F8F2CF689433F8EFCF689434F8ECCF00
+:104E0000EAE02E9E200D1124222E689435F8E4CF7E
+:104E10008E3229F436FC04C1689436F8DDCF8C3626
+:104E200019F4689437F8D8CF8836B1F2982F9F7D5F
+:104E300095549330E0F08336A1F18337C1F1833587
+:104E400009F063C02801F2E04F0E511CF801C08048
+:104E5000D180692D70E036FC02C06FEF7FEFC60194
+:104E60000E947A284C01689437F882010AC00C5FCE
+:104E70001F4FFFE3F98388248394912C6501E89404
+:104E800037F833FE2DC0522C8114910471F5552052
+:104E900009F468CFB70180E290E00E9490285A940C
+:104EA000F6CFF801808189830E5F1F4FE4CF280180
+:104EB000F2E04F0E511CF801C080D180692D70E0E6
+:104EC00036FC02C06FEF7FEFC6010E9485284C01BF
+:104ED0008201D5CFB70180E290E00E9490282A9409
+:104EE0002814190409F0B0F7CECFF60137FC8591EC
+:104EF00037FE81916F01B70190E00E949028511018
+:104F00005A94F1E08F1A9108BFCF843619F0893690
+:104F100009F077C0F80137FE6BC060817181828132
+:104F200093810C5F1F4FF32DFF763F2E97FF09C033
+:104F300090958095709561957F4F8F4F9F4F6894A6
+:104F400037F82AE030E0A5010E94C028C82ECA1810
+:104F50008C2C432C36FE0CC0E89440F8C91440F465
+:104F600034FE05C032FC03C0F32DFE7E4F2E892C8B
+:104F700044FE95C0FE01EC0DF11D8081803309F0E7
+:104F800087C0242D297E422E842D8870582E43FC04
+:104F900095C040FE8FC09C2C821418F42C0C922CCF
+:104FA000981844FE91C0B70180E390E00E949028D9
+:104FB00042FE09C088E790E041FE02C088E590E02B
+:104FC000B7010E949028C91408F48AC0CA94D12C51
+:104FD0009FEFC91AD90ACA0CDB1CF60182916F0136
+:104FE000B70190E00E949028AC14BD04B1F74FCFF8
+:104FF00060817181072E000C880B990B0E5F1F4F8B
+:1050000092CFD32CE894D4F82AE030E0853739F1F8
+:10501000232D297FD22E8F3601F148F48835A9F04F
+:10502000F701868197812B96E2E10C944229803723
+:1050300049F08837A9F7D4FE02C06894D2F820E17D
+:1050400030E00DC06894D4F8F6CF34FE03C0822F50
+:105050008660D82E20E132E002C028E030E0F8017E
+:10506000D7FE0FC060817181828193810C5F1F4FD9
+:10507000A5010E94C028C82ECA183D2CE89437F814
+:1050800067CF6081718190E080E00E5F1F4FF0CFAD
+:1050900042FC02C0839478CF8394839475CF842D8F
+:1050A000867809F471CFF6CFB70180E290E00E94D4
+:1050B000902883948214C0F3512C73CF522C58182B
+:1050C000821408F46ECFF8CF842D867809F47BCF54
+:1050D0008BE241FE80E247FC8DE2B70190E071CFA8
+:1050E000B70180E390E00E9490289A946CCF8FEFF4
+:1050F0009FEF99CFFC010590615070400110D8F7E7
+:10510000809590958E0F9F1F0895FC01615070400F
+:1051100001900110D8F7809590958E0F9F1F0895EC
+:105120000F931F93CF93DF93182F092FEB018B81E0
+:1051300081FD09C01FEF0FEF812F902FDF91CF91DD
+:105140001F910F91089582FF14C02E813F818C81A1
+:105150009D81281739073CF4E881F981CF01019638
+:105160009983888310838E819F8101969F838E838C
+:10517000E3CFE885F985812F0995892BA1F3DACF53
+:10518000FA01AA27283051F1203181F1E8946F9378
+:105190006E7F6E5F7F4F8F4F9F4FAF4FB1E03ED01E
+:1051A000B4E03CD0670F781F891F9A1FA11D680FBC
+:1051B000791F8A1F911DA11D6A0F711D811D911DEF
+:1051C000A11D20D009F468943F912AE0269F112464
+:1051D0003019305D3193DEF6CF010895462F4770C8
+:1051E000405D4193B3E00FD0C9F7F6CF462F4F7023
+:1051F000405D4A3318F0495D31FD4052419302D081
+:10520000A9F7EACFB4E0A695979587957795679526
+:10521000BA95C9F700976105710508959B01AC0126
+:105220000A2E06945795479537952795BA95C9F74D
+:10523000620F731F841F951FA01D0895B7FF0C9464
+:10524000B7240E94B724821B930B08952F923F929C
+:105250004F925F926F927F928F929F92AF92BF9286
+:10526000CF92DF92EF92FF920F931F93CF93DF9332
+:10527000CDB7DEB7CA1BDB0B0FB6F894DEBF0FBE8F
+:10528000CDBF09942A88398848885F846E847D84DC
+:105290008C849B84AA84B984C884DF80EE80FD80DE
+:1052A0000C811B81AA81B981CE0FD11D0FB6F89454
+:1052B000DEBF0FBECDBFED01089513E0C2E8D3E01D
+:1052C00004C0FE010E94CE242196C338D107C9F73D
+:0452D000F894FFCF80
+:1052D40001000000010148503D257500573D25643B
+:1052E40000473D256400463D256400FA000000FDAA
+:1052F40000030004000400422E4241525200415473
+:105304005441434B00432E504541532E0027012E58
+:1053140001350101000000000019006400C800000C
+:0E532400000000451772224C4F4144455200D4
+:040000030000075A98
:00000001FF
diff --git a/Exe/POCKET.MAP b/Exe/POCKET.MAP
index 1423d72..38ad2e5 100644
--- a/Exe/POCKET.MAP
+++ b/Exe/POCKET.MAP
@@ -3,7 +3,7 @@ Archive member included to satisfy reference by file (symbol)
../lib/libgamebuino.a(Buttons.o)
Obj/Pad.o (_ZN7Buttons8releasedEh)
../lib/libgamebuino.a(Display.o)
- Obj/Gfx.o (_displayBuffer)
+ Obj/Gfx.o (_ZN7Display5clearEv)
../lib/libgamebuino.a(font3x3.o)
Obj/Player.o (font3x3)
../lib/libgamebuino.a(font3x5.o)
@@ -231,14 +231,11 @@ Discarded input sections
0x0000000000000000 0x1c Obj/System.o
.text.SystemArrayCompare
0x0000000000000000 0x34 Obj/System.o
- .group 0x0000000000000000 0x8 Obj/Gfx.o
.text 0x0000000000000000 0x0 Obj/Gfx.o
.data 0x0000000000000000 0x0 Obj/Gfx.o
.bss 0x0000000000000000 0x0 Obj/Gfx.o
.text.GfxShowKeyboard
0x0000000000000000 0xc Obj/Gfx.o
- .text.GfxRenderTiles
- 0x0000000000000000 0xbe Obj/Gfx.o
.text.GfxPrintText
0x0000000000000000 0xc Obj/Gfx.o
.text.GfxDrawLine
@@ -277,8 +274,6 @@ Discarded input sections
.text 0x0000000000000000 0x0 ../lib/libgamebuino.a(Display.o)
.data 0x0000000000000000 0x0 ../lib/libgamebuino.a(Display.o)
.bss 0x0000000000000000 0x0 ../lib/libgamebuino.a(Display.o)
- .text._ZN7Display9drawPixelEaa
- 0x0000000000000000 0x8e ../lib/libgamebuino.a(Display.o)
.text._ZN7Display4dataEh
0x0000000000000000 0x3c ../lib/libgamebuino.a(Display.o)
.text._ZN7Display11setContrastEh
@@ -1297,7 +1292,7 @@ END GROUP
.rela.plt
*(.rela.plt)
-.text 0x0000000000000000 0x5198
+.text 0x0000000000000000 0x52d4
*(.vectors)
.vectors 0x0000000000000000 0x68 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/crtatmega328p.o
0x0000000000000000 __vectors
@@ -1327,744 +1322,753 @@ END GROUP
0x0000000000000091 0x17 Obj/Player.o
.progmem.data._ZZN6Player4InitEvE3__c
0x00000000000000a8 0x1b Obj/Player.o
- .progmem.data.BarracksShadowSpr_Data
+ .progmem.data.TownCentreShadowSprData
0x00000000000000c3 0x4a Obj/Unit.o
- 0x00000000000000c3 BarracksShadowSpr_Data
- .progmem.data.BarracksSpr_Data
+ 0x00000000000000c3 TownCentreShadowSprData
+ .progmem.data.TownCentreSprData
0x000000000000010d 0x4a Obj/Unit.o
- 0x000000000000010d BarracksSpr_Data
+ 0x000000000000010d TownCentreSprData
+ .progmem.data.BarracksShadowSpr_Data
+ 0x0000000000000157 0x4a Obj/Unit.o
+ 0x0000000000000157 BarracksShadowSpr_Data
+ .progmem.data.BarracksSpr_Data
+ 0x00000000000001a1 0x4a Obj/Unit.o
+ 0x00000000000001a1 BarracksSpr_Data
.progmem.data.Peasant_SprData
- 0x0000000000000157 0xa Obj/Unit.o
- 0x0000000000000157 Peasant_SprData
+ 0x00000000000001eb 0xa Obj/Unit.o
+ 0x00000000000001eb Peasant_SprData
.progmem.data.Peasant_Walking_SprData
- 0x0000000000000161 0xa Obj/Unit.o
- 0x0000000000000161 Peasant_Walking_SprData
+ 0x00000000000001f5 0xa Obj/Unit.o
+ 0x00000000000001f5 Peasant_Walking_SprData
.progmem.data._ZL15MainMenuOptions
- 0x000000000000016b 0x8 Obj/Menu.o
+ 0x00000000000001ff 0x8 Obj/Menu.o
.progmem.data._ZL16MainMenuOption_3
- 0x0000000000000173 0x5 Obj/Menu.o
+ 0x0000000000000207 0x5 Obj/Menu.o
.progmem.data._ZL16MainMenuOption_2
- 0x0000000000000178 0x8 Obj/Menu.o
+ 0x000000000000020c 0x8 Obj/Menu.o
.progmem.data._ZL16MainMenuOption_1
- 0x0000000000000180 0x11 Obj/Menu.o
+ 0x0000000000000214 0x11 Obj/Menu.o
.progmem.data._ZL16MainMenuOption_0
- 0x0000000000000191 0x13 Obj/Menu.o
+ 0x0000000000000225 0x13 Obj/Menu.o
.progmem.data.font3x3
- 0x00000000000001a4 0x182 ../lib/libgamebuino.a(font3x3.o)
- 0x00000000000001a4 font3x3
+ 0x0000000000000238 0x182 ../lib/libgamebuino.a(font3x3.o)
+ 0x0000000000000238 font3x3
.progmem.data.font3x5
- 0x0000000000000326 0x182 ../lib/libgamebuino.a(font3x5.o)
- 0x0000000000000326 font3x5
+ 0x00000000000003ba 0x182 ../lib/libgamebuino.a(font3x5.o)
+ 0x00000000000003ba font3x5
.progmem.data._ZZN9Gamebuino10changeGameEvE3__c_0
- 0x00000000000004a8 0x25 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x000000000000053c 0x25 ../lib/libgamebuino.a(Gamebuino.o)
.progmem.data._ZZN9Gamebuino10changeGameEvE3__c
- 0x00000000000004cd 0x28 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x0000000000000561 0x28 ../lib/libgamebuino.a(Gamebuino.o)
.progmem.data._ZZN9Gamebuino14displayBatteryEvE3__c_1
- 0x00000000000004f5 0xb ../lib/libgamebuino.a(Gamebuino.o)
+ 0x0000000000000589 0xb ../lib/libgamebuino.a(Gamebuino.o)
.progmem.data._ZZN9Gamebuino14displayBatteryEvE3__c_0
- 0x0000000000000500 0x15 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x0000000000000594 0x15 ../lib/libgamebuino.a(Gamebuino.o)
.progmem.data._ZZN9Gamebuino14displayBatteryEvE3__c
- 0x0000000000000515 0xe ../lib/libgamebuino.a(Gamebuino.o)
+ 0x00000000000005a9 0xe ../lib/libgamebuino.a(Gamebuino.o)
.progmem.data._ZZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKhE3__c_3
- 0x0000000000000523 0x4 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x00000000000005b7 0x4 ../lib/libgamebuino.a(Gamebuino.o)
.progmem.data._ZZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKhE3__c_2
- 0x0000000000000527 0x4 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x00000000000005bb 0x4 ../lib/libgamebuino.a(Gamebuino.o)
.progmem.data._ZZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKhE3__c_1
- 0x000000000000052b 0x4 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x00000000000005bf 0x4 ../lib/libgamebuino.a(Gamebuino.o)
.progmem.data._ZZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKhE3__c_0
- 0x000000000000052f 0x4 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x00000000000005c3 0x4 ../lib/libgamebuino.a(Gamebuino.o)
.progmem.data._ZZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKhE3__c
- 0x0000000000000533 0x4 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x00000000000005c7 0x4 ../lib/libgamebuino.a(Gamebuino.o)
.progmem.data._ZL13gamebuinoLogo
- 0x0000000000000537 0x70 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x00000000000005cb 0x70 ../lib/libgamebuino.a(Gamebuino.o)
.progmem.data._ZL12startupSound
- 0x00000000000005a7 0xe ../lib/libgamebuino.a(Gamebuino.o)
+ 0x000000000000063b 0xe ../lib/libgamebuino.a(Gamebuino.o)
.progmem.data._ZL12_halfPeriods
- 0x00000000000005b5 0x3b ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000000649 0x3b ../lib/libgamebuino.a(Sound.o)
.progmem.data._ZL9playTickP
- 0x00000000000005f0 0x6 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000000684 0x6 ../lib/libgamebuino.a(Sound.o)
.progmem.data._ZL17playCancelPattern
- 0x00000000000005f6 0x8 ../lib/libgamebuino.a(Sound.o)
+ 0x000000000000068a 0x8 ../lib/libgamebuino.a(Sound.o)
.progmem.data._ZL13playOKPattern
- 0x00000000000005fe 0x8 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000000692 0x8 ../lib/libgamebuino.a(Sound.o)
.progmem.data._ZL18defaultInstruments
- 0x0000000000000606 0x4 ../lib/libgamebuino.a(Sound.o)
+ 0x000000000000069a 0x4 ../lib/libgamebuino.a(Sound.o)
.progmem.data._ZL15noiseInstrument
- 0x000000000000060a 0x4 ../lib/libgamebuino.a(Sound.o)
+ 0x000000000000069e 0x4 ../lib/libgamebuino.a(Sound.o)
.progmem.data._ZL20squareWaveInstrument
- 0x000000000000060e 0x4 ../lib/libgamebuino.a(Sound.o)
+ 0x00000000000006a2 0x4 ../lib/libgamebuino.a(Sound.o)
.progmem.data.digital_pin_to_timer_PGM
- 0x0000000000000612 0x14 ../lib/libarduino.a(wiring_digital.o)
- 0x0000000000000612 digital_pin_to_timer_PGM
+ 0x00000000000006a6 0x14 ../lib/libarduino.a(wiring_digital.o)
+ 0x00000000000006a6 digital_pin_to_timer_PGM
.progmem.data.digital_pin_to_bit_mask_PGM
- 0x0000000000000626 0x14 ../lib/libarduino.a(wiring_digital.o)
- 0x0000000000000626 digital_pin_to_bit_mask_PGM
+ 0x00000000000006ba 0x14 ../lib/libarduino.a(wiring_digital.o)
+ 0x00000000000006ba digital_pin_to_bit_mask_PGM
.progmem.data.digital_pin_to_port_PGM
- 0x000000000000063a 0x14 ../lib/libarduino.a(wiring_digital.o)
- 0x000000000000063a digital_pin_to_port_PGM
+ 0x00000000000006ce 0x14 ../lib/libarduino.a(wiring_digital.o)
+ 0x00000000000006ce digital_pin_to_port_PGM
.progmem.data.port_to_input_PGM
- 0x000000000000064e 0xa ../lib/libarduino.a(wiring_digital.o)
- 0x000000000000064e port_to_input_PGM
+ 0x00000000000006e2 0xa ../lib/libarduino.a(wiring_digital.o)
+ 0x00000000000006e2 port_to_input_PGM
.progmem.data.port_to_output_PGM
- 0x0000000000000658 0xa ../lib/libarduino.a(wiring_digital.o)
- 0x0000000000000658 port_to_output_PGM
+ 0x00000000000006ec 0xa ../lib/libarduino.a(wiring_digital.o)
+ 0x00000000000006ec port_to_output_PGM
.progmem.data.port_to_mode_PGM
- 0x0000000000000662 0xa ../lib/libarduino.a(wiring_digital.o)
- 0x0000000000000662 port_to_mode_PGM
- 0x000000000000066c . = ALIGN (0x2)
+ 0x00000000000006f6 0xa ../lib/libarduino.a(wiring_digital.o)
+ 0x00000000000006f6 port_to_mode_PGM
+ 0x0000000000000700 . = ALIGN (0x2)
*(.lowtext)
*(.lowtext*)
- 0x000000000000066c __ctors_start = .
+ 0x0000000000000700 __ctors_start = .
*(.ctors)
- .ctors 0x000000000000066c 0x2 Obj/main.o
- .ctors 0x000000000000066e 0x2 Obj/Gameplay.o
- 0x0000000000000670 __ctors_end = .
- 0x0000000000000670 __dtors_start = .
+ .ctors 0x0000000000000700 0x2 Obj/main.o
+ .ctors 0x0000000000000702 0x2 Obj/Gameplay.o
+ 0x0000000000000704 __ctors_end = .
+ 0x0000000000000704 __dtors_start = .
*(.dtors)
- .dtors 0x0000000000000670 0x2 Obj/Gameplay.o
- 0x0000000000000672 __dtors_end = .
+ .dtors 0x0000000000000704 0x2 Obj/Gameplay.o
+ 0x0000000000000706 __dtors_end = .
SORT(*)(.ctors)
SORT(*)(.dtors)
*(.init0)
- .init0 0x0000000000000672 0x0 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/crtatmega328p.o
- 0x0000000000000672 __init
+ .init0 0x0000000000000706 0x0 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/crtatmega328p.o
+ 0x0000000000000706 __init
*(.init0)
*(.init1)
*(.init1)
*(.init2)
- .init2 0x0000000000000672 0xc /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/crtatmega328p.o
+ .init2 0x0000000000000706 0xc /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/crtatmega328p.o
*(.init2)
*(.init3)
*(.init3)
*(.init4)
- .init4 0x000000000000067e 0x16 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_copy_data.o)
- 0x000000000000067e __do_copy_data
- .init4 0x0000000000000694 0x10 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_clear_bss.o)
- 0x0000000000000694 __do_clear_bss
+ .init4 0x0000000000000712 0x16 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_copy_data.o)
+ 0x0000000000000712 __do_copy_data
+ .init4 0x0000000000000728 0x10 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_clear_bss.o)
+ 0x0000000000000728 __do_clear_bss
*(.init4)
*(.init5)
*(.init5)
*(.init6)
- .init6 0x00000000000006a4 0x16 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_ctors.o)
- 0x00000000000006a4 __do_global_ctors
+ .init6 0x0000000000000738 0x16 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_ctors.o)
+ 0x0000000000000738 __do_global_ctors
*(.init6)
*(.init7)
*(.init7)
*(.init8)
*(.init8)
*(.init9)
- .init9 0x00000000000006ba 0x8 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/crtatmega328p.o
+ .init9 0x000000000000074e 0x8 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/crtatmega328p.o
*(.init9)
*(.text)
- .text 0x00000000000006c2 0x4 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/crtatmega328p.o
- 0x00000000000006c2 __vector_22
- 0x00000000000006c2 __vector_1
- 0x00000000000006c2 __vector_24
- 0x00000000000006c2 __vector_12
- 0x00000000000006c2 __bad_interrupt
- 0x00000000000006c2 __vector_6
- 0x00000000000006c2 __vector_3
- 0x00000000000006c2 __vector_23
- 0x00000000000006c2 __vector_25
- 0x00000000000006c2 __vector_13
- 0x00000000000006c2 __vector_17
- 0x00000000000006c2 __vector_19
- 0x00000000000006c2 __vector_7
- 0x00000000000006c2 __vector_5
- 0x00000000000006c2 __vector_4
- 0x00000000000006c2 __vector_9
- 0x00000000000006c2 __vector_2
- 0x00000000000006c2 __vector_21
- 0x00000000000006c2 __vector_15
- 0x00000000000006c2 __vector_8
- 0x00000000000006c2 __vector_14
- 0x00000000000006c2 __vector_10
- 0x00000000000006c2 __vector_18
- 0x00000000000006c2 __vector_20
- 0x00000000000006c6 . = ALIGN (0x2)
+ .text 0x0000000000000756 0x4 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/crtatmega328p.o
+ 0x0000000000000756 __vector_22
+ 0x0000000000000756 __vector_1
+ 0x0000000000000756 __vector_24
+ 0x0000000000000756 __vector_12
+ 0x0000000000000756 __bad_interrupt
+ 0x0000000000000756 __vector_6
+ 0x0000000000000756 __vector_3
+ 0x0000000000000756 __vector_23
+ 0x0000000000000756 __vector_25
+ 0x0000000000000756 __vector_13
+ 0x0000000000000756 __vector_17
+ 0x0000000000000756 __vector_19
+ 0x0000000000000756 __vector_7
+ 0x0000000000000756 __vector_5
+ 0x0000000000000756 __vector_4
+ 0x0000000000000756 __vector_9
+ 0x0000000000000756 __vector_2
+ 0x0000000000000756 __vector_21
+ 0x0000000000000756 __vector_15
+ 0x0000000000000756 __vector_8
+ 0x0000000000000756 __vector_14
+ 0x0000000000000756 __vector_10
+ 0x0000000000000756 __vector_18
+ 0x0000000000000756 __vector_20
+ 0x000000000000075a . = ALIGN (0x2)
*(.text.*)
.text.startup.main
- 0x00000000000006c6 0x22 Obj/main.o
- 0x00000000000006c6 main
+ 0x000000000000075a 0x22 Obj/main.o
+ 0x000000000000075a main
.text.startup._GLOBAL__sub_I_gb
- 0x00000000000006e8 0x16 Obj/main.o
+ 0x000000000000077c 0x16 Obj/main.o
.text._Z8GameInitv
- 0x00000000000006fe 0x8a Obj/Gameplay.o
- 0x00000000000006fe _Z8GameInitv
+ 0x0000000000000792 0x8a Obj/Gameplay.o
+ 0x0000000000000792 _Z8GameInitv
.text.startup._GLOBAL__sub_I_GamePlayers
- 0x0000000000000788 0x8 Obj/Gameplay.o
+ 0x000000000000081c 0x8 Obj/Gameplay.o
.text.exit._GLOBAL__sub_D_GamePlayers
- 0x0000000000000790 0x8 Obj/Gameplay.o
+ 0x0000000000000824 0x8 Obj/Gameplay.o
.text.SystemSetRandSeed
- 0x0000000000000798 0x38 Obj/System.o
- 0x0000000000000798 SystemSetRandSeed
+ 0x000000000000082c 0x38 Obj/System.o
+ 0x000000000000082c SystemSetRandSeed
.text.SystemIncreaseGlobalTimer
- 0x00000000000007d0 0x48 Obj/System.o
- 0x00000000000007d0 SystemIncreaseGlobalTimer
+ 0x0000000000000864 0x48 Obj/System.o
+ 0x0000000000000864 SystemIncreaseGlobalTimer
.text.SystemRand
- 0x0000000000000818 0x56 Obj/System.o
- 0x0000000000000818 SystemRand
+ 0x00000000000008ac 0x56 Obj/System.o
+ 0x00000000000008ac SystemRand
.text.SystemResetTimers
- 0x000000000000086e 0x28 Obj/System.o
- 0x000000000000086e SystemResetTimers
+ 0x0000000000000902 0x28 Obj/System.o
+ 0x0000000000000902 SystemResetTimers
.text.SystemInit
- 0x0000000000000896 0x2e Obj/System.o
- 0x0000000000000896 SystemInit
+ 0x000000000000092a 0x2e Obj/System.o
+ 0x000000000000092a SystemInit
.text.SystemCollisionCheck
- 0x00000000000008c4 0x94 Obj/System.o
- 0x00000000000008c4 SystemCollisionCheck
+ 0x0000000000000958 0x94 Obj/System.o
+ 0x0000000000000958 SystemCollisionCheck
.text._ZL21GfxIsInsideScreenAreaaahh
- 0x0000000000000958 0x2a Obj/Gfx.o
- .text._ZN7Display9drawPixelEaa
- 0x0000000000000982 0x8e Obj/Gfx.o
- 0x0000000000000982 _ZN7Display9drawPixelEaa
- .text.GfxInit 0x0000000000000a10 0x10 Obj/Gfx.o
- 0x0000000000000a10 GfxInit
+ 0x00000000000009ec 0x2a Obj/Gfx.o
+ .text.GfxInit 0x0000000000000a16 0x10 Obj/Gfx.o
+ 0x0000000000000a16 GfxInit
.text.GfxRefreshNeeded
- 0x0000000000000a20 0x14 Obj/Gfx.o
- 0x0000000000000a20 GfxRefreshNeeded
+ 0x0000000000000a26 0x14 Obj/Gfx.o
+ 0x0000000000000a26 GfxRefreshNeeded
.text.GfxClearScreen
- 0x0000000000000a34 0x12 Obj/Gfx.o
- 0x0000000000000a34 GfxClearScreen
+ 0x0000000000000a3a 0x12 Obj/Gfx.o
+ 0x0000000000000a3a GfxClearScreen
.text.GfxIsSpriteInsideScreenArea
- 0x0000000000000a46 0xe Obj/Gfx.o
- 0x0000000000000a46 GfxIsSpriteInsideScreenArea
+ 0x0000000000000a4c 0xe Obj/Gfx.o
+ 0x0000000000000a4c GfxIsSpriteInsideScreenArea
.text.GfxDrawSprite
- 0x0000000000000a54 0x58 Obj/Gfx.o
- 0x0000000000000a54 GfxDrawSprite
+ 0x0000000000000a5a 0x5c Obj/Gfx.o
+ 0x0000000000000a5a GfxDrawSprite
.text.GfxGetWidthFromSpriteData
- 0x0000000000000aac 0x6 Obj/Gfx.o
- 0x0000000000000aac GfxGetWidthFromSpriteData
+ 0x0000000000000ab6 0x6 Obj/Gfx.o
+ 0x0000000000000ab6 GfxGetWidthFromSpriteData
.text.GfxGetHeightFromSpriteData
- 0x0000000000000ab2 0x8 Obj/Gfx.o
- 0x0000000000000ab2 GfxGetHeightFromSpriteData
+ 0x0000000000000abc 0x8 Obj/Gfx.o
+ 0x0000000000000abc GfxGetHeightFromSpriteData
.text.GfxPrintText_Flash
- 0x0000000000000aba 0xc Obj/Gfx.o
- 0x0000000000000aba GfxPrintText_Flash
+ 0x0000000000000ac4 0xc Obj/Gfx.o
+ 0x0000000000000ac4 GfxPrintText_Flash
.text.GfxPrintTextFont
- 0x0000000000000ac6 0x5a Obj/Gfx.o
- 0x0000000000000ac6 GfxPrintTextFont
+ 0x0000000000000ad0 0x5a Obj/Gfx.o
+ 0x0000000000000ad0 GfxPrintTextFont
.text.GfxDrawCircle
- 0x0000000000000b20 0x58 Obj/Gfx.o
- 0x0000000000000b20 GfxDrawCircle
+ 0x0000000000000b2a 0x58 Obj/Gfx.o
+ 0x0000000000000b2a GfxDrawCircle
.text.GfxDrawRectangle
- 0x0000000000000b78 0x5e Obj/Gfx.o
- 0x0000000000000b78 GfxDrawRectangle
+ 0x0000000000000b82 0x5e Obj/Gfx.o
+ 0x0000000000000b82 GfxDrawRectangle
.text.GfxFillRectangle
- 0x0000000000000bd6 0x5e Obj/Gfx.o
- 0x0000000000000bd6 GfxFillRectangle
+ 0x0000000000000be0 0x5e Obj/Gfx.o
+ 0x0000000000000be0 GfxFillRectangle
.text.PadButtonReleased
- 0x0000000000000c34 0x16 Obj/Pad.o
- 0x0000000000000c34 PadButtonReleased
+ 0x0000000000000c3e 0x16 Obj/Pad.o
+ 0x0000000000000c3e PadButtonReleased
.text.PadButtonPressedFrames
- 0x0000000000000c4a 0x1c Obj/Pad.o
- 0x0000000000000c4a PadButtonPressedFrames
+ 0x0000000000000c54 0x1c Obj/Pad.o
+ 0x0000000000000c54 PadButtonPressedFrames
.text.PadButtonPressed
- 0x0000000000000c66 0x6 Obj/Pad.o
- 0x0000000000000c66 PadButtonPressed
+ 0x0000000000000c70 0x6 Obj/Pad.o
+ 0x0000000000000c70 PadButtonPressed
.text.PadDirectionKeyPressed
- 0x0000000000000c6c 0x30 Obj/Pad.o
- 0x0000000000000c6c PadDirectionKeyPressed
+ 0x0000000000000c76 0x30 Obj/Pad.o
+ 0x0000000000000c76 PadDirectionKeyPressed
.text.PadAnyKeyPressed
- 0x0000000000000c9c 0x20 Obj/Pad.o
- 0x0000000000000c9c PadAnyKeyPressed
+ 0x0000000000000ca6 0x20 Obj/Pad.o
+ 0x0000000000000ca6 PadAnyKeyPressed
.text._ZN6PlayerC2Ev
- 0x0000000000000cbc 0x2 Obj/Player.o
- 0x0000000000000cbc _ZN6PlayerC2Ev
- 0x0000000000000cbc _ZN6PlayerC1Ev
+ 0x0000000000000cc6 0x2 Obj/Player.o
+ 0x0000000000000cc6 _ZN6PlayerC2Ev
+ 0x0000000000000cc6 _ZN6PlayerC1Ev
.text._ZN6PlayerD2Ev
- 0x0000000000000cbe 0x2 Obj/Player.o
- 0x0000000000000cbe _ZN6PlayerD2Ev
- 0x0000000000000cbe _ZN6PlayerD1Ev
+ 0x0000000000000cc8 0x2 Obj/Player.o
+ 0x0000000000000cc8 _ZN6PlayerD2Ev
+ 0x0000000000000cc8 _ZN6PlayerD1Ev
.text._ZN6Player10showHealthEh
- 0x0000000000000cc0 0x76 Obj/Player.o
- 0x0000000000000cc0 _ZN6Player10showHealthEh
+ 0x0000000000000cca 0x76 Obj/Player.o
+ 0x0000000000000cca _ZN6Player10showHealthEh
.text._ZN6Player13ShowResourcesEv
- 0x0000000000000d36 0xe8 Obj/Player.o
- 0x0000000000000d36 _ZN6Player13ShowResourcesEv
+ 0x0000000000000d40 0xe8 Obj/Player.o
+ 0x0000000000000d40 _ZN6Player13ShowResourcesEv
.text._ZN6Player10createUnitE8t_unitid16t_CollisionBlock
- 0x0000000000000e1e 0xba Obj/Player.o
- 0x0000000000000e1e _ZN6Player10createUnitE8t_unitid16t_CollisionBlock
+ 0x0000000000000e28 0xba Obj/Player.o
+ 0x0000000000000e28 _ZN6Player10createUnitE8t_unitid16t_CollisionBlock
.text._ZN6Player4InitEv
- 0x0000000000000ed8 0x15e Obj/Player.o
- 0x0000000000000ed8 _ZN6Player4InitEv
+ 0x0000000000000ee2 0x15e Obj/Player.o
+ 0x0000000000000ee2 _ZN6Player4InitEv
.text._ZN6Player12GetCursorPosEv
- 0x0000000000001036 0x58 Obj/Player.o
- 0x0000000000001036 _ZN6Player12GetCursorPosEv
+ 0x0000000000001040 0x58 Obj/Player.o
+ 0x0000000000001040 _ZN6Player12GetCursorPosEv
.text._ZN6Player21UnitBuildingSelectionEv
- 0x000000000000108e 0x114 Obj/Player.o
- 0x000000000000108e _ZN6Player21UnitBuildingSelectionEv
+ 0x0000000000001098 0x114 Obj/Player.o
+ 0x0000000000001098 _ZN6Player21UnitBuildingSelectionEv
.text._ZN6Player14ButtonAPressedEv
- 0x00000000000011a2 0x22 Obj/Player.o
- 0x00000000000011a2 _ZN6Player14ButtonAPressedEv
- .text._ZN6Player16ActionCreateUnitEP6t_Unit
- 0x00000000000011c4 0xdc Obj/Player.o
- 0x00000000000011c4 _ZN6Player16ActionCreateUnitEP6t_Unit
+ 0x00000000000011ac 0x22 Obj/Player.o
+ 0x00000000000011ac _ZN6Player14ButtonAPressedEv
+ .text._ZN6Player16ActionCreateUnitEP6t_Unit8t_unitid
+ 0x00000000000011ce 0xd4 Obj/Player.o
+ 0x00000000000011ce _ZN6Player16ActionCreateUnitEP6t_Unit8t_unitid
+ .text._ZN6Player20ActionCreateBuildingEP6t_Unit8t_unitid
+ 0x00000000000012a2 0x4e Obj/Player.o
+ 0x00000000000012a2 _ZN6Player20ActionCreateBuildingEP6t_Unit8t_unitid
.text._ZN6Player15ButtonAReleasedEv
- 0x00000000000012a0 0xa8 Obj/Player.o
- 0x00000000000012a0 _ZN6Player15ButtonAReleasedEv
+ 0x00000000000012f0 0xba Obj/Player.o
+ 0x00000000000012f0 _ZN6Player15ButtonAReleasedEv
.text._ZN6Player14ButtonBPressedEv
- 0x0000000000001348 0x52 Obj/Player.o
- 0x0000000000001348 _ZN6Player14ButtonBPressedEv
+ 0x00000000000013aa 0x52 Obj/Player.o
+ 0x00000000000013aa _ZN6Player14ButtonBPressedEv
.text._ZN6Player15ButtonBReleasedEv
- 0x000000000000139a 0x90 Obj/Player.o
- 0x000000000000139a _ZN6Player15ButtonBReleasedEv
+ 0x00000000000013fc 0x90 Obj/Player.o
+ 0x00000000000013fc _ZN6Player15ButtonBReleasedEv
.text._ZN6Player18ButtonLeftReleasedEv
- 0x000000000000142a 0x7c Obj/Player.o
- 0x000000000000142a _ZN6Player18ButtonLeftReleasedEv
+ 0x000000000000148c 0x7c Obj/Player.o
+ 0x000000000000148c _ZN6Player18ButtonLeftReleasedEv
.text._ZN6Player28IncreaseShowActionsMenuIndexEv
- 0x00000000000014a6 0x7c Obj/Player.o
- 0x00000000000014a6 _ZN6Player28IncreaseShowActionsMenuIndexEv
+ 0x0000000000001508 0x7c Obj/Player.o
+ 0x0000000000001508 _ZN6Player28IncreaseShowActionsMenuIndexEv
.text._ZN6Player11ActionsMenuEv
- 0x0000000000001522 0x8a Obj/Player.o
- 0x0000000000001522 _ZN6Player11ActionsMenuEv
+ 0x0000000000001584 0x8a Obj/Player.o
+ 0x0000000000001584 _ZN6Player11ActionsMenuEv
.text._ZN6Player11DrawHandlerEv
- 0x00000000000015ac 0xf8 Obj/Player.o
- 0x00000000000015ac _ZN6Player11DrawHandlerEv
+ 0x000000000000160e 0xf8 Obj/Player.o
+ 0x000000000000160e _ZN6Player11DrawHandlerEv
.text._ZN6Player13ButtonHandlerEv
- 0x00000000000016a4 0x90 Obj/Player.o
- 0x00000000000016a4 _ZN6Player13ButtonHandlerEv
+ 0x0000000000001706 0x90 Obj/Player.o
+ 0x0000000000001706 _ZN6Player13ButtonHandlerEv
.text._ZN6Player7HandlerEv
- 0x0000000000001734 0x44 Obj/Player.o
- 0x0000000000001734 _ZN6Player7HandlerEv
+ 0x0000000000001796 0x44 Obj/Player.o
+ 0x0000000000001796 _ZN6Player7HandlerEv
.text.CameraInit
- 0x0000000000001778 0x16 Obj/Camera.o
- 0x0000000000001778 CameraInit
+ 0x00000000000017da 0x16 Obj/Camera.o
+ 0x00000000000017da CameraInit
.text.CameraApplyCoordinatesToCoordinates
- 0x000000000000178e 0x66 Obj/Camera.o
- 0x000000000000178e CameraApplyCoordinatesToCoordinates
+ 0x00000000000017f0 0x66 Obj/Camera.o
+ 0x00000000000017f0 CameraApplyCoordinatesToCoordinates
.text.CameraApplyCoordinatesToSprite
- 0x00000000000017f4 0x14 Obj/Camera.o
- 0x00000000000017f4 CameraApplyCoordinatesToSprite
+ 0x0000000000001856 0x14 Obj/Camera.o
+ 0x0000000000001856 CameraApplyCoordinatesToSprite
.text.CameraHandler
- 0x0000000000001808 0x13c Obj/Camera.o
- 0x0000000000001808 CameraHandler
+ 0x000000000000186a 0x13c Obj/Camera.o
+ 0x000000000000186a CameraHandler
.text.CameraSetLock
- 0x0000000000001944 0x6 Obj/Camera.o
- 0x0000000000001944 CameraSetLock
+ 0x00000000000019a6 0x6 Obj/Camera.o
+ 0x00000000000019a6 CameraSetLock
.text.UnitInit
- 0x000000000000194a 0xa8 Obj/Unit.o
- 0x000000000000194a UnitInit
+ 0x00000000000019ac 0xe8 Obj/Unit.o
+ 0x00000000000019ac UnitInit
.text.UnitGetWidthFromID
- 0x00000000000019f2 0x14 Obj/Unit.o
- 0x00000000000019f2 UnitGetWidthFromID
+ 0x0000000000001a94 0x14 Obj/Unit.o
+ 0x0000000000001a94 UnitGetWidthFromID
.text.UnitGetHeightFromID
- 0x0000000000001a06 0x14 Obj/Unit.o
- 0x0000000000001a06 UnitGetHeightFromID
+ 0x0000000000001aa8 0x14 Obj/Unit.o
+ 0x0000000000001aa8 UnitGetHeightFromID
.text.UnitDraw
- 0x0000000000001a1a 0x23c Obj/Unit.o
- 0x0000000000001a1a UnitDraw
+ 0x0000000000001abc 0x23c Obj/Unit.o
+ 0x0000000000001abc UnitDraw
.text.UnitGetHpFromID
- 0x0000000000001c56 0xc Obj/Unit.o
- 0x0000000000001c56 UnitGetHpFromID
+ 0x0000000000001cf8 0xc Obj/Unit.o
+ 0x0000000000001cf8 UnitGetHpFromID
.text.UnitMoveTo
- 0x0000000000001c62 0x10 Obj/Unit.o
- 0x0000000000001c62 UnitMoveTo
+ 0x0000000000001d04 0x10 Obj/Unit.o
+ 0x0000000000001d04 UnitMoveTo
.text.UnitHandler
- 0x0000000000001c72 0x240 Obj/Unit.o
- 0x0000000000001c72 UnitHandler
+ 0x0000000000001d14 0x24c Obj/Unit.o
+ 0x0000000000001d14 UnitHandler
.text.UnitGetAvailableActions
- 0x0000000000001eb2 0x10 Obj/Unit.o
- 0x0000000000001eb2 UnitGetAvailableActions
+ 0x0000000000001f60 0x10 Obj/Unit.o
+ 0x0000000000001f60 UnitGetAvailableActions
.text.UnitGetActionString
- 0x0000000000001ec2 0x10 Obj/Unit.o
- 0x0000000000001ec2 UnitGetActionString
+ 0x0000000000001f70 0x10 Obj/Unit.o
+ 0x0000000000001f70 UnitGetActionString
.text._Z17MenuGetPlayerNameP6Player
- 0x0000000000001ed2 0x18 Obj/Menu.o
- 0x0000000000001ed2 _Z17MenuGetPlayerNameP6Player
+ 0x0000000000001f80 0x18 Obj/Menu.o
+ 0x0000000000001f80 _Z17MenuGetPlayerNameP6Player
.text._Z8MainMenuv
- 0x0000000000001eea 0x20 Obj/Menu.o
- 0x0000000000001eea _Z8MainMenuv
+ 0x0000000000001f98 0x20 Obj/Menu.o
+ 0x0000000000001f98 _Z8MainMenuv
.text._ZN7Buttons5beginEv
- 0x0000000000001f0a 0x20 ../lib/libgamebuino.a(Buttons.o)
- 0x0000000000001f0a _ZN7Buttons5beginEv
+ 0x0000000000001fb8 0x20 ../lib/libgamebuino.a(Buttons.o)
+ 0x0000000000001fb8 _ZN7Buttons5beginEv
.text._ZN7Buttons6updateEv
- 0x0000000000001f2a 0x5a ../lib/libgamebuino.a(Buttons.o)
- 0x0000000000001f2a _ZN7Buttons6updateEv
+ 0x0000000000001fd8 0x5a ../lib/libgamebuino.a(Buttons.o)
+ 0x0000000000001fd8 _ZN7Buttons6updateEv
.text._ZN7Buttons7pressedEh
- 0x0000000000001f84 0x12 ../lib/libgamebuino.a(Buttons.o)
- 0x0000000000001f84 _ZN7Buttons7pressedEh
+ 0x0000000000002032 0x12 ../lib/libgamebuino.a(Buttons.o)
+ 0x0000000000002032 _ZN7Buttons7pressedEh
.text._ZN7Buttons8releasedEh
- 0x0000000000001f96 0x12 ../lib/libgamebuino.a(Buttons.o)
- 0x0000000000001f96 _ZN7Buttons8releasedEh
+ 0x0000000000002044 0x12 ../lib/libgamebuino.a(Buttons.o)
+ 0x0000000000002044 _ZN7Buttons8releasedEh
.text._ZN7Buttons6repeatEhh
- 0x0000000000001fa8 0x2c ../lib/libgamebuino.a(Buttons.o)
- 0x0000000000001fa8 _ZN7Buttons6repeatEhh
+ 0x0000000000002056 0x2c ../lib/libgamebuino.a(Buttons.o)
+ 0x0000000000002056 _ZN7Buttons6repeatEhh
.text._ZN7Buttons8timeHeldEh
- 0x0000000000001fd4 0x10 ../lib/libgamebuino.a(Buttons.o)
- 0x0000000000001fd4 _ZN7Buttons8timeHeldEh
+ 0x0000000000002082 0x10 ../lib/libgamebuino.a(Buttons.o)
+ 0x0000000000002082 _ZN7Buttons8timeHeldEh
.text._ZN8SPIClass8transferEh
- 0x0000000000001fe4 0xc ../lib/libgamebuino.a(Display.o)
- 0x0000000000001fe4 _ZN8SPIClass8transferEh
+ 0x0000000000002092 0xc ../lib/libgamebuino.a(Display.o)
+ 0x0000000000002092 _ZN8SPIClass8transferEh
+ .text._ZN7Display9drawPixelEaa
+ 0x000000000000209e 0x8e ../lib/libgamebuino.a(Display.o)
+ 0x000000000000209e _ZN7Display9drawPixelEaa
.text._ZN7Display7commandEh
- 0x0000000000001ff0 0x3c ../lib/libgamebuino.a(Display.o)
- 0x0000000000001ff0 _ZN7Display7commandEh
+ 0x000000000000212c 0x3c ../lib/libgamebuino.a(Display.o)
+ 0x000000000000212c _ZN7Display7commandEh
.text._ZN7Display5clearEv
- 0x000000000000202c 0x22 ../lib/libgamebuino.a(Display.o)
- 0x000000000000202c _ZN7Display5clearEv
+ 0x0000000000002168 0x22 ../lib/libgamebuino.a(Display.o)
+ 0x0000000000002168 _ZN7Display5clearEv
.text._ZN7Display10fillScreenEh
- 0x000000000000204e 0x10 ../lib/libgamebuino.a(Display.o)
- 0x000000000000204e _ZN7Display10fillScreenEh
+ 0x000000000000218a 0x10 ../lib/libgamebuino.a(Display.o)
+ 0x000000000000218a _ZN7Display10fillScreenEh
.text._ZN7Display6updateEv
- 0x000000000000205e 0x8a ../lib/libgamebuino.a(Display.o)
- 0x000000000000205e _ZN7Display6updateEv
+ 0x000000000000219a 0x8a ../lib/libgamebuino.a(Display.o)
+ 0x000000000000219a _ZN7Display6updateEv
.text._ZN7Display8setColorEa
- 0x00000000000020e8 0x8 ../lib/libgamebuino.a(Display.o)
- 0x00000000000020e8 _ZN7Display8setColorEa
+ 0x0000000000002224 0x8 ../lib/libgamebuino.a(Display.o)
+ 0x0000000000002224 _ZN7Display8setColorEa
.text._ZN7Display8setColorEaa
- 0x00000000000020f0 0x8 ../lib/libgamebuino.a(Display.o)
- 0x00000000000020f0 _ZN7Display8setColorEaa
+ 0x000000000000222c 0x8 ../lib/libgamebuino.a(Display.o)
+ 0x000000000000222c _ZN7Display8setColorEaa
.text._ZN7Display13drawFastVLineEaaa
- 0x00000000000020f8 0x38 ../lib/libgamebuino.a(Display.o)
- 0x00000000000020f8 _ZN7Display13drawFastVLineEaaa
+ 0x0000000000002234 0x38 ../lib/libgamebuino.a(Display.o)
+ 0x0000000000002234 _ZN7Display13drawFastVLineEaaa
.text._ZN7Display13drawFastHLineEaaa
- 0x0000000000002130 0x38 ../lib/libgamebuino.a(Display.o)
- 0x0000000000002130 _ZN7Display13drawFastHLineEaaa
+ 0x000000000000226c 0x38 ../lib/libgamebuino.a(Display.o)
+ 0x000000000000226c _ZN7Display13drawFastHLineEaaa
.text._ZN7Display8drawRectEaaaa
- 0x0000000000002168 0x50 ../lib/libgamebuino.a(Display.o)
- 0x0000000000002168 _ZN7Display8drawRectEaaaa
+ 0x00000000000022a4 0x50 ../lib/libgamebuino.a(Display.o)
+ 0x00000000000022a4 _ZN7Display8drawRectEaaaa
.text._ZN7Display8fillRectEaaaa
- 0x00000000000021b8 0x52 ../lib/libgamebuino.a(Display.o)
- 0x00000000000021b8 _ZN7Display8fillRectEaaaa
+ 0x00000000000022f4 0x52 ../lib/libgamebuino.a(Display.o)
+ 0x00000000000022f4 _ZN7Display8fillRectEaaaa
.text._ZN7Display10drawCircleEaaa
- 0x000000000000220a 0x100 ../lib/libgamebuino.a(Display.o)
- 0x000000000000220a _ZN7Display10drawCircleEaaa
+ 0x0000000000002346 0x100 ../lib/libgamebuino.a(Display.o)
+ 0x0000000000002346 _ZN7Display10drawCircleEaaa
.text._ZN7Display16drawCircleHelperEaaah
- 0x000000000000230a 0xfc ../lib/libgamebuino.a(Display.o)
- 0x000000000000230a _ZN7Display16drawCircleHelperEaaah
+ 0x0000000000002446 0xfc ../lib/libgamebuino.a(Display.o)
+ 0x0000000000002446 _ZN7Display16drawCircleHelperEaaah
.text._ZN7Display16fillCircleHelperEaaaha
- 0x0000000000002406 0xca ../lib/libgamebuino.a(Display.o)
- 0x0000000000002406 _ZN7Display16fillCircleHelperEaaaha
+ 0x0000000000002542 0xca ../lib/libgamebuino.a(Display.o)
+ 0x0000000000002542 _ZN7Display16fillCircleHelperEaaaha
.text._ZN7Display13drawRoundRectEaaaaa
- 0x00000000000024d0 0xbe ../lib/libgamebuino.a(Display.o)
- 0x00000000000024d0 _ZN7Display13drawRoundRectEaaaaa
+ 0x000000000000260c 0xbe ../lib/libgamebuino.a(Display.o)
+ 0x000000000000260c _ZN7Display13drawRoundRectEaaaaa
.text._ZN7Display13fillRoundRectEaaaaa
- 0x000000000000258e 0x6e ../lib/libgamebuino.a(Display.o)
- 0x000000000000258e _ZN7Display13fillRoundRectEaaaaa
+ 0x00000000000026ca 0x6e ../lib/libgamebuino.a(Display.o)
+ 0x00000000000026ca _ZN7Display13fillRoundRectEaaaaa
.text._ZN7Display10drawBitmapEaaPKh
- 0x00000000000025fc 0x280 ../lib/libgamebuino.a(Display.o)
- 0x00000000000025fc _ZN7Display10drawBitmapEaaPKh
+ 0x0000000000002738 0x280 ../lib/libgamebuino.a(Display.o)
+ 0x0000000000002738 _ZN7Display10drawBitmapEaaPKh
.text._ZN7Display10drawBitmapEaaPKhhh
- 0x000000000000287c 0x1ce ../lib/libgamebuino.a(Display.o)
- 0x000000000000287c _ZN7Display10drawBitmapEaaPKhhh
+ 0x00000000000029b8 0x1ce ../lib/libgamebuino.a(Display.o)
+ 0x00000000000029b8 _ZN7Display10drawBitmapEaaPKhhh
.text._ZN7Display7setFontEPKh
- 0x0000000000002a4a 0x28 ../lib/libgamebuino.a(Display.o)
- 0x0000000000002a4a _ZN7Display7setFontEPKh
+ 0x0000000000002b86 0x28 ../lib/libgamebuino.a(Display.o)
+ 0x0000000000002b86 _ZN7Display7setFontEPKh
.text._ZN7Display5beginEaaaaa
- 0x0000000000002a72 0x180 ../lib/libgamebuino.a(Display.o)
- 0x0000000000002a72 _ZN7Display5beginEaaaaa
+ 0x0000000000002bae 0x180 ../lib/libgamebuino.a(Display.o)
+ 0x0000000000002bae _ZN7Display5beginEaaaaa
.text._ZN7Display8drawCharEaahh
- 0x0000000000002bf2 0x15c ../lib/libgamebuino.a(Display.o)
- 0x0000000000002bf2 _ZN7Display8drawCharEaahh
+ 0x0000000000002d2e 0x15c ../lib/libgamebuino.a(Display.o)
+ 0x0000000000002d2e _ZN7Display8drawCharEaahh
.text._ZN7Display5writeEh
- 0x0000000000002d4e 0x66 ../lib/libgamebuino.a(Display.o)
- 0x0000000000002d4e _ZN7Display5writeEh
+ 0x0000000000002e8a 0x66 ../lib/libgamebuino.a(Display.o)
+ 0x0000000000002e8a _ZN7Display5writeEh
.text._ZN9Gamebuino5popupEPK19__FlashStringHelperh
- 0x0000000000002db4 0x16 ../lib/libgamebuino.a(Gamebuino.o)
- 0x0000000000002db4 _ZN9Gamebuino5popupEPK19__FlashStringHelperh
+ 0x0000000000002ef0 0x16 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x0000000000002ef0 _ZN9Gamebuino5popupEPK19__FlashStringHelperh
.text._ZN9Gamebuino11updatePopupEv
- 0x0000000000002dca 0xda ../lib/libgamebuino.a(Gamebuino.o)
- 0x0000000000002dca _ZN9Gamebuino11updatePopupEv
+ 0x0000000000002f06 0xda ../lib/libgamebuino.a(Gamebuino.o)
+ 0x0000000000002f06 _ZN9Gamebuino11updatePopupEv
.text._ZN9Gamebuino14displayBatteryEv
- 0x0000000000002ea4 0x160 ../lib/libgamebuino.a(Gamebuino.o)
- 0x0000000000002ea4 _ZN9Gamebuino14displayBatteryEv
+ 0x0000000000002fe0 0x160 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x0000000000002fe0 _ZN9Gamebuino14displayBatteryEv
.text._ZN9Gamebuino6updateEv
- 0x0000000000003004 0x170 ../lib/libgamebuino.a(Gamebuino.o)
- 0x0000000000003004 _ZN9Gamebuino6updateEv
+ 0x0000000000003140 0x170 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x0000000000003140 _ZN9Gamebuino6updateEv
.text._ZN9Gamebuino4menuEPKPKch
- 0x0000000000003174 0x2a0 ../lib/libgamebuino.a(Gamebuino.o)
- 0x0000000000003174 _ZN9Gamebuino4menuEPKPKch
+ 0x00000000000032b0 0x2a0 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x00000000000032b0 _ZN9Gamebuino4menuEPKPKch
.text._ZN9Gamebuino10changeGameEv
- 0x0000000000003414 0x7a ../lib/libgamebuino.a(Gamebuino.o)
- 0x0000000000003414 _ZN9Gamebuino10changeGameEv
+ 0x0000000000003550 0x7a ../lib/libgamebuino.a(Gamebuino.o)
+ 0x0000000000003550 _ZN9Gamebuino10changeGameEv
.text._ZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKh
- 0x000000000000348e 0x270 ../lib/libgamebuino.a(Gamebuino.o)
- 0x000000000000348e _ZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKh
+ 0x00000000000035ca 0x270 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x00000000000035ca _ZN9Gamebuino11titleScreenEPK19__FlashStringHelperPKh
.text._ZN9Gamebuino11titleScreenEPK19__FlashStringHelper
- 0x00000000000036fe 0x8 ../lib/libgamebuino.a(Gamebuino.o)
- 0x00000000000036fe _ZN9Gamebuino11titleScreenEPK19__FlashStringHelper
+ 0x000000000000383a 0x8 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x000000000000383a _ZN9Gamebuino11titleScreenEPK19__FlashStringHelper
.text._ZN9Gamebuino17settingsAvailableEv
- 0x0000000000003706 0x14 ../lib/libgamebuino.a(Gamebuino.o)
- 0x0000000000003706 _ZN9Gamebuino17settingsAvailableEv
+ 0x0000000000003842 0x14 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x0000000000003842 _ZN9Gamebuino17settingsAvailableEv
.text._ZN9Gamebuino12readSettingsEv
- 0x000000000000371a 0xde ../lib/libgamebuino.a(Gamebuino.o)
- 0x000000000000371a _ZN9Gamebuino12readSettingsEv
+ 0x0000000000003856 0xde ../lib/libgamebuino.a(Gamebuino.o)
+ 0x0000000000003856 _ZN9Gamebuino12readSettingsEv
.text._ZN9Gamebuino5beginEv
- 0x00000000000037f8 0xb6 ../lib/libgamebuino.a(Gamebuino.o)
- 0x00000000000037f8 _ZN9Gamebuino5beginEv
+ 0x0000000000003934 0xb6 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x0000000000003934 _ZN9Gamebuino5beginEv
.text._ZN9Gamebuino14getDefaultNameEPc
- 0x00000000000038ae 0x2c ../lib/libgamebuino.a(Gamebuino.o)
- 0x00000000000038ae _ZN9Gamebuino14getDefaultNameEPc
+ 0x00000000000039ea 0x2c ../lib/libgamebuino.a(Gamebuino.o)
+ 0x00000000000039ea _ZN9Gamebuino14getDefaultNameEPc
.text._ZN5Sound7commandEhhah.part.0
- 0x00000000000038da 0x66 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003a16 0x66 ../lib/libgamebuino.a(Sound.o)
.text._ZN5Sound5beginEv
- 0x0000000000003940 0x68 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003940 _ZN5Sound5beginEv
+ 0x0000000000003a7c 0x68 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003a7c _ZN5Sound5beginEv
.text._ZN5Sound7commandEhhah
- 0x00000000000039a8 0x5e ../lib/libgamebuino.a(Sound.o)
- 0x00000000000039a8 _ZN5Sound7commandEhhah
+ 0x0000000000003ae4 0x5e ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003ae4 _ZN5Sound7commandEhhah
.text._ZN5Sound12updateOutputEv
- 0x0000000000003a06 0x16 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003a06 _ZN5Sound12updateOutputEv
+ 0x0000000000003b42 0x16 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003b42 _ZN5Sound12updateOutputEv
.text._ZN5Sound8stopNoteEh.part.2
- 0x0000000000003a1c 0x1c ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003b58 0x1c ../lib/libgamebuino.a(Sound.o)
.text._ZN5Sound11playPatternEPKjh.part.5
- 0x0000000000003a38 0x30 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003b74 0x30 ../lib/libgamebuino.a(Sound.o)
.text._ZN5Sound11playPatternEPKjh
- 0x0000000000003a68 0xa ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003a68 _ZN5Sound11playPatternEPKjh
+ 0x0000000000003ba4 0xa ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003ba4 _ZN5Sound11playPatternEPKjh
.text._ZN5Sound11updateTrackEh
- 0x0000000000003a72 0x5c ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003a72 _ZN5Sound11updateTrackEh
+ 0x0000000000003bae 0x5c ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003bae _ZN5Sound11updateTrackEh
.text._ZN5Sound11updateTrackEv
- 0x0000000000003ace 0x6 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003ace _ZN5Sound11updateTrackEv
+ 0x0000000000003c0a 0x6 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003c0a _ZN5Sound11updateTrackEv
.text._ZN5Sound13updatePatternEh
- 0x0000000000003ad4 0xe0 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003ad4 _ZN5Sound13updatePatternEh
+ 0x0000000000003c10 0xe0 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003c10 _ZN5Sound13updatePatternEh
.text._ZN5Sound13updatePatternEv
- 0x0000000000003bb4 0x6 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003bb4 _ZN5Sound13updatePatternEv
+ 0x0000000000003cf0 0x6 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003cf0 _ZN5Sound13updatePatternEv
.text._ZN5Sound10updateNoteEh
- 0x0000000000003bba 0x182 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003bba _ZN5Sound10updateNoteEh
+ 0x0000000000003cf6 0x182 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003cf6 _ZN5Sound10updateNoteEh
.text._ZN5Sound10updateNoteEv
- 0x0000000000003d3c 0x6 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003d3c _ZN5Sound10updateNoteEv
+ 0x0000000000003e78 0x6 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003e78 _ZN5Sound10updateNoteEv
.text._ZN5Sound11stopPatternEh
- 0x0000000000003d42 0x16 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003d42 _ZN5Sound11stopPatternEh
+ 0x0000000000003e7e 0x16 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003e7e _ZN5Sound11stopPatternEh
.text._ZN5Sound11stopPatternEv
- 0x0000000000003d58 0x12 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003d58 _ZN5Sound11stopPatternEv
+ 0x0000000000003e94 0x12 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003e94 _ZN5Sound11stopPatternEv
.text._ZN5Sound14generateOutputEv
- 0x0000000000003d6a 0x54 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003d6a _ZN5Sound14generateOutputEv
+ 0x0000000000003ea6 0x54 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003ea6 _ZN5Sound14generateOutputEv
.text.__vector_11
- 0x0000000000003dbe 0x48 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003dbe __vector_11
+ 0x0000000000003efa 0x48 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003efa __vector_11
.text._ZN5Sound6playOKEv
- 0x0000000000003e06 0x8 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003e06 _ZN5Sound6playOKEv
+ 0x0000000000003f42 0x8 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003f42 _ZN5Sound6playOKEv
.text._ZN5Sound10playCancelEv
- 0x0000000000003e0e 0x8 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003e0e _ZN5Sound10playCancelEv
+ 0x0000000000003f4a 0x8 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003f4a _ZN5Sound10playCancelEv
.text._ZN5Sound8playTickEv
- 0x0000000000003e16 0x8 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003e16 _ZN5Sound8playTickEv
+ 0x0000000000003f52 0x8 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003f52 _ZN5Sound8playTickEv
.text._ZN5Sound9setVolumeEa
- 0x0000000000003e1e 0x18 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000003e1e _ZN5Sound9setVolumeEa
+ 0x0000000000003f5a 0x18 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000003f5a _ZN5Sound9setVolumeEa
.text._ZN9Backlight5beginEv
- 0x0000000000003e36 0x8 ../lib/libgamebuino.a(Backlight.o)
- 0x0000000000003e36 _ZN9Backlight5beginEv
+ 0x0000000000003f72 0x8 ../lib/libgamebuino.a(Backlight.o)
+ 0x0000000000003f72 _ZN9Backlight5beginEv
.text._ZN9Backlight3setEh
- 0x0000000000003e3e 0x8 ../lib/libgamebuino.a(Backlight.o)
- 0x0000000000003e3e _ZN9Backlight3setEh
+ 0x0000000000003f7a 0x8 ../lib/libgamebuino.a(Backlight.o)
+ 0x0000000000003f7a _ZN9Backlight3setEh
.text._ZN9Backlight6updateEv
- 0x0000000000003e46 0xbe ../lib/libgamebuino.a(Backlight.o)
- 0x0000000000003e46 _ZN9Backlight6updateEv
+ 0x0000000000003f82 0xbe ../lib/libgamebuino.a(Backlight.o)
+ 0x0000000000003f82 _ZN9Backlight6updateEv
.text._ZN7Battery5beginEv
- 0x0000000000003f04 0x14 ../lib/libgamebuino.a(Battery.o)
- 0x0000000000003f04 _ZN7Battery5beginEv
+ 0x0000000000004040 0x14 ../lib/libgamebuino.a(Battery.o)
+ 0x0000000000004040 _ZN7Battery5beginEv
.text._ZN7Battery6updateEv
- 0x0000000000003f18 0x70 ../lib/libgamebuino.a(Battery.o)
- 0x0000000000003f18 _ZN7Battery6updateEv
+ 0x0000000000004054 0x70 ../lib/libgamebuino.a(Battery.o)
+ 0x0000000000004054 _ZN7Battery6updateEv
.text.__vector_16
- 0x0000000000003f88 0x94 ../lib/libarduino.a(wiring.o)
- 0x0000000000003f88 __vector_16
- .text.millis 0x000000000000401c 0x18 ../lib/libarduino.a(wiring.o)
- 0x000000000000401c millis
- .text.micros 0x0000000000004034 0x4a ../lib/libarduino.a(wiring.o)
- 0x0000000000004034 micros
- .text.delay 0x000000000000407e 0x4c ../lib/libarduino.a(wiring.o)
- 0x000000000000407e delay
- .text.init 0x00000000000040ca 0x76 ../lib/libarduino.a(wiring.o)
- 0x00000000000040ca init
+ 0x00000000000040c4 0x94 ../lib/libarduino.a(wiring.o)
+ 0x00000000000040c4 __vector_16
+ .text.millis 0x0000000000004158 0x18 ../lib/libarduino.a(wiring.o)
+ 0x0000000000004158 millis
+ .text.micros 0x0000000000004170 0x4a ../lib/libarduino.a(wiring.o)
+ 0x0000000000004170 micros
+ .text.delay 0x00000000000041ba 0x4c ../lib/libarduino.a(wiring.o)
+ 0x00000000000041ba delay
+ .text.init 0x0000000000004206 0x76 ../lib/libarduino.a(wiring.o)
+ 0x0000000000004206 init
.text.analogRead
- 0x0000000000004140 0x36 ../lib/libarduino.a(wiring_analog.o)
- 0x0000000000004140 analogRead
+ 0x000000000000427c 0x36 ../lib/libarduino.a(wiring_analog.o)
+ 0x000000000000427c analogRead
.text.analogWrite
- 0x0000000000004176 0xba ../lib/libarduino.a(wiring_analog.o)
- 0x0000000000004176 analogWrite
+ 0x00000000000042b2 0xba ../lib/libarduino.a(wiring_analog.o)
+ 0x00000000000042b2 analogWrite
.text.turnOffPWM
- 0x0000000000004230 0x52 ../lib/libarduino.a(wiring_digital.o)
- .text.pinMode 0x0000000000004282 0x78 ../lib/libarduino.a(wiring_digital.o)
- 0x0000000000004282 pinMode
+ 0x000000000000436c 0x52 ../lib/libarduino.a(wiring_digital.o)
+ .text.pinMode 0x00000000000043be 0x78 ../lib/libarduino.a(wiring_digital.o)
+ 0x00000000000043be pinMode
.text.digitalWrite
- 0x00000000000042fa 0x5c ../lib/libarduino.a(wiring_digital.o)
- 0x00000000000042fa digitalWrite
+ 0x0000000000004436 0x5c ../lib/libarduino.a(wiring_digital.o)
+ 0x0000000000004436 digitalWrite
.text.digitalRead
- 0x0000000000004356 0x52 ../lib/libarduino.a(wiring_digital.o)
- 0x0000000000004356 digitalRead
+ 0x0000000000004492 0x52 ../lib/libarduino.a(wiring_digital.o)
+ 0x0000000000004492 digitalRead
.text._ZN5Print5writeEPKhj
- 0x00000000000043a8 0x50 ../lib/libarduino.a(Print.o)
- 0x00000000000043a8 _ZN5Print5writeEPKhj
+ 0x00000000000044e4 0x50 ../lib/libarduino.a(Print.o)
+ 0x00000000000044e4 _ZN5Print5writeEPKhj
.text._ZN5Print5writeEPKc.part.1
- 0x00000000000043f8 0x1e ../lib/libarduino.a(Print.o)
+ 0x0000000000004534 0x1e ../lib/libarduino.a(Print.o)
.text._ZN5Print5printEPK19__FlashStringHelper
- 0x0000000000004416 0x46 ../lib/libarduino.a(Print.o)
- 0x0000000000004416 _ZN5Print5printEPK19__FlashStringHelper
+ 0x0000000000004552 0x46 ../lib/libarduino.a(Print.o)
+ 0x0000000000004552 _ZN5Print5printEPK19__FlashStringHelper
.text._ZN5Print5printEPKc
- 0x000000000000445c 0x10 ../lib/libarduino.a(Print.o)
- 0x000000000000445c _ZN5Print5printEPKc
+ 0x0000000000004598 0x10 ../lib/libarduino.a(Print.o)
+ 0x0000000000004598 _ZN5Print5printEPKc
.text._ZN5Print5printEc
- 0x000000000000446c 0xe ../lib/libarduino.a(Print.o)
- 0x000000000000446c _ZN5Print5printEc
+ 0x00000000000045a8 0xe ../lib/libarduino.a(Print.o)
+ 0x00000000000045a8 _ZN5Print5printEc
.text._ZN5Print7printlnEv
- 0x000000000000447a 0x28 ../lib/libarduino.a(Print.o)
- 0x000000000000447a _ZN5Print7printlnEv
+ 0x00000000000045b6 0x28 ../lib/libarduino.a(Print.o)
+ 0x00000000000045b6 _ZN5Print7printlnEv
.text._ZN5Print7printlnEPK19__FlashStringHelper
- 0x00000000000044a2 0x24 ../lib/libarduino.a(Print.o)
- 0x00000000000044a2 _ZN5Print7printlnEPK19__FlashStringHelper
+ 0x00000000000045de 0x24 ../lib/libarduino.a(Print.o)
+ 0x00000000000045de _ZN5Print7printlnEPK19__FlashStringHelper
.text._ZN5Print11printNumberEmh
- 0x00000000000044c6 0xb2 ../lib/libarduino.a(Print.o)
- 0x00000000000044c6 _ZN5Print11printNumberEmh
+ 0x0000000000004602 0xb2 ../lib/libarduino.a(Print.o)
+ 0x0000000000004602 _ZN5Print11printNumberEmh
.text._ZN5Print5printEli
- 0x0000000000004578 0x94 ../lib/libarduino.a(Print.o)
- 0x0000000000004578 _ZN5Print5printEli
+ 0x00000000000046b4 0x94 ../lib/libarduino.a(Print.o)
+ 0x00000000000046b4 _ZN5Print5printEli
.text._ZN5Print5printEii
- 0x000000000000460c 0xe ../lib/libarduino.a(Print.o)
- 0x000000000000460c _ZN5Print5printEii
+ 0x0000000000004748 0xe ../lib/libarduino.a(Print.o)
+ 0x0000000000004748 _ZN5Print5printEii
.text._ZN5Print5printEmi
- 0x000000000000461a 0x1a ../lib/libarduino.a(Print.o)
- 0x000000000000461a _ZN5Print5printEmi
+ 0x0000000000004756 0x1a ../lib/libarduino.a(Print.o)
+ 0x0000000000004756 _ZN5Print5printEmi
.text._ZN5Print5printEji
- 0x0000000000004634 0xc ../lib/libarduino.a(Print.o)
- 0x0000000000004634 _ZN5Print5printEji
+ 0x0000000000004770 0xc ../lib/libarduino.a(Print.o)
+ 0x0000000000004770 _ZN5Print5printEji
.text._Z3maplllll
- 0x0000000000004640 0x82 ../lib/libarduino.a(WMath.o)
- 0x0000000000004640 _Z3maplllll
+ 0x000000000000477c 0x82 ../lib/libarduino.a(WMath.o)
+ 0x000000000000477c _Z3maplllll
.text._ZN8SPIClass5beginEv
- 0x00000000000046c2 0x2c ../lib/libarduino.a(SPI.o)
- 0x00000000000046c2 _ZN8SPIClass5beginEv
+ 0x00000000000047fe 0x2c ../lib/libarduino.a(SPI.o)
+ 0x00000000000047fe _ZN8SPIClass5beginEv
.text._ZN8SPIClass11setBitOrderEh
- 0x00000000000046ee 0x12 ../lib/libarduino.a(SPI.o)
- 0x00000000000046ee _ZN8SPIClass11setBitOrderEh
+ 0x000000000000482a 0x12 ../lib/libarduino.a(SPI.o)
+ 0x000000000000482a _ZN8SPIClass11setBitOrderEh
.text._ZN8SPIClass11setDataModeEh
- 0x0000000000004700 0xa ../lib/libarduino.a(SPI.o)
- 0x0000000000004700 _ZN8SPIClass11setDataModeEh
+ 0x000000000000483c 0xa ../lib/libarduino.a(SPI.o)
+ 0x000000000000483c _ZN8SPIClass11setDataModeEh
.text._ZN8SPIClass15setClockDividerEh
- 0x000000000000470a 0x1e ../lib/libarduino.a(SPI.o)
- 0x000000000000470a _ZN8SPIClass15setClockDividerEh
+ 0x0000000000004846 0x1e ../lib/libarduino.a(SPI.o)
+ 0x0000000000004846 _ZN8SPIClass15setClockDividerEh
.text.libgcc.mul
- 0x0000000000004728 0x20 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_mulsi3.o)
- 0x0000000000004728 __mulsi3
+ 0x0000000000004864 0x20 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_mulsi3.o)
+ 0x0000000000004864 __mulsi3
.text.libgcc.div
- 0x0000000000004748 0x18 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_udivmodqi4.o)
- 0x0000000000004748 __udivmodqi4
+ 0x0000000000004884 0x18 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_udivmodqi4.o)
+ 0x0000000000004884 __udivmodqi4
.text.libgcc.div
- 0x0000000000004760 0x28 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_udivmodhi4.o)
- 0x0000000000004760 __udivmodhi4
+ 0x000000000000489c 0x28 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_udivmodhi4.o)
+ 0x000000000000489c __udivmodhi4
.text.libgcc.div
- 0x0000000000004788 0x28 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_divmodhi4.o)
- 0x0000000000004788 __divmodhi4
- 0x0000000000004788 _div
+ 0x00000000000048c4 0x28 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_divmodhi4.o)
+ 0x00000000000048c4 __divmodhi4
+ 0x00000000000048c4 _div
.text.libgcc.div
- 0x00000000000047b0 0x44 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_udivmodsi4.o)
- 0x00000000000047b0 __udivmodsi4
+ 0x00000000000048ec 0x44 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_udivmodsi4.o)
+ 0x00000000000048ec __udivmodsi4
.text.libgcc.div
- 0x00000000000047f4 0x2e /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_divmodsi4.o)
- 0x00000000000047f4 __divmodsi4
+ 0x0000000000004930 0x2e /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_divmodsi4.o)
+ 0x0000000000004930 __divmodsi4
.text.libgcc.div
- 0x0000000000004822 0x10 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_negsi2.o)
- 0x0000000000004822 __negsi2
+ 0x000000000000495e 0x10 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_negsi2.o)
+ 0x000000000000495e __negsi2
.text.libgcc.mul
- 0x0000000000004832 0x16 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_muluhisi3.o)
- 0x0000000000004832 __muluhisi3
- .text.libgcc 0x0000000000004848 0x18 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_adddi3_s8.o)
- 0x0000000000004848 __adddi3_s8
- .text.libgcc 0x0000000000004860 0xc /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_tablejump2.o)
- 0x0000000000004860 __tablejump2__
+ 0x000000000000496e 0x16 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_muluhisi3.o)
+ 0x000000000000496e __muluhisi3
+ .text.libgcc 0x0000000000004984 0x18 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_adddi3_s8.o)
+ 0x0000000000004984 __adddi3_s8
+ .text.libgcc 0x000000000000499c 0xc /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_tablejump2.o)
+ 0x000000000000499c __tablejump2__
.text.libgcc.mul
- 0x000000000000486c 0x1e /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_umulhisi3.o)
- 0x000000000000486c __umulhisi3
+ 0x00000000000049a8 0x1e /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_umulhisi3.o)
+ 0x00000000000049a8 __umulhisi3
.text.avr-libc.fplib
- 0x000000000000488a 0x5e /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fixunssfsi.o)
- 0x000000000000488a __fixunssfsi
+ 0x00000000000049c6 0x5e /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fixunssfsi.o)
+ 0x00000000000049c6 __fixunssfsi
.text.avr-libc.fplib
- 0x00000000000048e8 0x7a /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(floatsisf.o)
- 0x00000000000048e8 __floatunsisf
- 0x00000000000048ec __floatsisf
+ 0x0000000000004a24 0x7a /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(floatsisf.o)
+ 0x0000000000004a24 __floatunsisf
+ 0x0000000000004a28 __floatsisf
.text.avr-libc.fplib
- 0x0000000000004962 0xc /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fp_inf.o)
- 0x0000000000004962 __fp_inf
+ 0x0000000000004a9e 0xc /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fp_inf.o)
+ 0x0000000000004a9e __fp_inf
.text.avr-libc.fplib
- 0x000000000000496e 0x6 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fp_nan.o)
- 0x000000000000496e __fp_nan
+ 0x0000000000004aaa 0x6 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fp_nan.o)
+ 0x0000000000004aaa __fp_nan
.text.avr-libc.fplib
- 0x0000000000004974 0xe /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fp_pscA.o)
- 0x0000000000004974 __fp_pscA
+ 0x0000000000004ab0 0xe /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fp_pscA.o)
+ 0x0000000000004ab0 __fp_pscA
.text.avr-libc.fplib
- 0x0000000000004982 0xe /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fp_pscB.o)
- 0x0000000000004982 __fp_pscB
+ 0x0000000000004abe 0xe /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fp_pscB.o)
+ 0x0000000000004abe __fp_pscB
.text.avr-libc.fplib
- 0x0000000000004990 0x22 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fp_round.o)
- 0x0000000000004990 __fp_round
+ 0x0000000000004acc 0x22 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fp_round.o)
+ 0x0000000000004acc __fp_round
.text.avr-libc.fplib
- 0x00000000000049b2 0x44 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fp_split3.o)
- 0x00000000000049b2 __fp_split3
- 0x00000000000049c2 __fp_splitA
+ 0x0000000000004aee 0x44 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fp_split3.o)
+ 0x0000000000004aee __fp_split3
+ 0x0000000000004afe __fp_splitA
.text.avr-libc.fplib
- 0x00000000000049f6 0xe /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fp_zero.o)
- 0x00000000000049f6 __fp_zero
- 0x00000000000049f8 __fp_szero
+ 0x0000000000004b32 0xe /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(fp_zero.o)
+ 0x0000000000004b32 __fp_zero
+ 0x0000000000004b34 __fp_szero
.text.avr-libc.fplib
- 0x0000000000004a04 0x8 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(mulsf3.o)
- 0x0000000000004a04 __mulsf3
+ 0x0000000000004b40 0x8 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(mulsf3.o)
+ 0x0000000000004b40 __mulsf3
.text.avr-libc.fplib
- 0x0000000000004a0c 0xd2 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(mulsf3x.o)
- 0x0000000000004a2a __mulsf3x
- 0x0000000000004a30 __mulsf3_pse
+ 0x0000000000004b48 0xd2 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libm.a(mulsf3x.o)
+ 0x0000000000004b66 __mulsf3x
+ 0x0000000000004b6c __mulsf3_pse
.text.avr-libc
- 0x0000000000004ade 0xb8 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(rand.o)
- 0x0000000000004b70 rand_r
- 0x0000000000004b76 rand
- 0x0000000000004b80 srand
+ 0x0000000000004c1a 0xb8 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(rand.o)
+ 0x0000000000004cac rand_r
+ 0x0000000000004cb2 rand
+ 0x0000000000004cbc srand
.text.avr-libc
- 0x0000000000004b96 0xe /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(memset.o)
- 0x0000000000004b96 memset
+ 0x0000000000004cd2 0xe /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(memset.o)
+ 0x0000000000004cd2 memset
.text.avr-libc
- 0x0000000000004ba4 0x60 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(snprintf.o)
- 0x0000000000004ba4 snprintf
+ 0x0000000000004ce0 0x60 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(snprintf.o)
+ 0x0000000000004ce0 snprintf
.text.avr-libc
- 0x0000000000004c04 0x3b4 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
- 0x0000000000004c04 vfprintf
+ 0x0000000000004d40 0x3b4 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
+ 0x0000000000004d40 vfprintf
.text.avr-libc
- 0x0000000000004fb8 0x16 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(strnlen_P.o)
- 0x0000000000004fb8 strnlen_P
+ 0x00000000000050f4 0x16 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(strnlen_P.o)
+ 0x00000000000050f4 strnlen_P
.text.avr-libc
- 0x0000000000004fce 0x16 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(strnlen.o)
- 0x0000000000004fce strnlen
+ 0x000000000000510a 0x16 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(strnlen.o)
+ 0x000000000000510a strnlen
.text.avr-libc
- 0x0000000000004fe4 0x60 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(fputc.o)
- 0x0000000000004fe4 fputc
+ 0x0000000000005120 0x60 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(fputc.o)
+ 0x0000000000005120 fputc
.text.avr-libc
- 0x0000000000005044 0xbc /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(ultoa_invert.o)
- 0x0000000000005044 __ultoa_invert
+ 0x0000000000005180 0xbc /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(ultoa_invert.o)
+ 0x0000000000005180 __ultoa_invert
.text.libgcc.mul
- 0x0000000000005100 0x10 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_mulshisi3.o)
- 0x0000000000005100 __mulshisi3
- 0x0000000000005106 __mulohisi3
+ 0x000000000000523c 0x10 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_mulshisi3.o)
+ 0x000000000000523c __mulshisi3
+ 0x0000000000005242 __mulohisi3
.text.libgcc.prologue
- 0x0000000000005110 0x38 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_prologue.o)
- 0x0000000000005110 __prologue_saves__
+ 0x000000000000524c 0x38 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_prologue.o)
+ 0x000000000000524c __prologue_saves__
.text.libgcc.prologue
- 0x0000000000005148 0x36 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_epilogue.o)
- 0x0000000000005148 __epilogue_restores__
- 0x000000000000517e . = ALIGN (0x2)
+ 0x0000000000005284 0x36 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_epilogue.o)
+ 0x0000000000005284 __epilogue_restores__
+ 0x00000000000052ba . = ALIGN (0x2)
*(.fini9)
- .fini9 0x000000000000517e 0x0 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_exit.o)
- 0x000000000000517e exit
- 0x000000000000517e _exit
+ .fini9 0x00000000000052ba 0x0 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_exit.o)
+ 0x00000000000052ba exit
+ 0x00000000000052ba _exit
*(.fini9)
*(.fini8)
*(.fini8)
*(.fini7)
*(.fini7)
*(.fini6)
- .fini6 0x000000000000517e 0x16 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_dtors.o)
- 0x000000000000517e __do_global_dtors
+ .fini6 0x00000000000052ba 0x16 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_dtors.o)
+ 0x00000000000052ba __do_global_dtors
*(.fini6)
*(.fini5)
*(.fini5)
@@ -2077,16 +2081,16 @@ END GROUP
*(.fini1)
*(.fini1)
*(.fini0)
- .fini0 0x0000000000005194 0x4 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_exit.o)
+ .fini0 0x00000000000052d0 0x4 /usr/local/avr/lib/gcc/avr/7.2.0/avr5/libgcc.a(_exit.o)
*(.fini0)
*(.hightext)
*(.hightext*)
- 0x0000000000005198 . = ALIGN (0x2)
+ 0x00000000000052d4 . = ALIGN (0x2)
*(.jumptables)
*(.jumptables*)
- 0x0000000000005198 _etext = .
+ 0x00000000000052d4 _etext = .
-.data 0x0000000000800100 0x58 load address 0x0000000000005198
+.data 0x0000000000800100 0x5e load address 0x00000000000052d4
0x0000000000800100 PROVIDE (__data_start, .)
*(.data)
.data 0x0000000000800100 0x4 /usr/local/avr/lib/gcc/avr/7.2.0/../../../../avr/lib/avr5/libc.a(rand.o)
@@ -2104,93 +2108,92 @@ END GROUP
.rodata._ZN6Player13ShowResourcesEv.str1.1
0x000000000080010c 0xf Obj/Player.o
.rodata.UnitShadowOffsetTable
- 0x000000000080011b 0x4 Obj/Unit.o
+ 0x000000000080011b 0x6 Obj/Unit.o
.rodata.UnitActionsTable
- 0x000000000080011f 0x5 Obj/Unit.o
+ 0x0000000000800121 0x6 Obj/Unit.o
.rodata.str1.1
- 0x0000000000800124 0x14 Obj/Unit.o
+ 0x0000000000800127 0x16 Obj/Unit.o
.rodata.UnitActionsTable_Level
- 0x0000000000800138 0x6 Obj/Unit.o
+ 0x000000000080013d 0x6 Obj/Unit.o
.rodata.UnitSpeedTable
- 0x000000000080013e 0x5 Obj/Unit.o
+ 0x0000000000800143 0x6 Obj/Unit.o
.rodata.UnitHPTable
- 0x0000000000800143 0x5 Obj/Unit.o
+ 0x0000000000800149 0x6 Obj/Unit.o
.rodata._ZTV7Display
- 0x0000000000800148 0x8 ../lib/libgamebuino.a(Display.o)
- 0x0000000000800148 _ZTV7Display
+ 0x000000000080014f 0x8 ../lib/libgamebuino.a(Display.o)
+ 0x000000000080014f _ZTV7Display
.rodata._ZN9Gamebuino10changeGameEv.str1.1
- 0x0000000000800150 0x7 ../lib/libgamebuino.a(Gamebuino.o)
+ 0x0000000000800157 0x7 ../lib/libgamebuino.a(Gamebuino.o)
*(.gnu.linkonce.r*)
- 0x0000000000800158 . = ALIGN (0x2)
- *fill* 0x0000000000800157 0x1
- 0x0000000000800158 _edata = .
- 0x0000000000800158 PROVIDE (__data_end, .)
+ 0x000000000080015e . = ALIGN (0x2)
+ 0x000000000080015e _edata = .
+ 0x000000000080015e PROVIDE (__data_end, .)
-.bss 0x0000000000800158 0x607
- 0x0000000000800158 PROVIDE (__bss_start, .)
+.bss 0x000000000080015e 0x61a
+ 0x000000000080015e PROVIDE (__bss_start, .)
*(.bss)
*(.bss*)
- .bss.gb 0x0000000000800158 0x87 Obj/main.o
- 0x0000000000800158 gb
+ .bss.gb 0x000000000080015e 0x87 Obj/main.o
+ 0x000000000080015e gb
.bss._ZL8MouseSpr
- 0x00000000008001df 0x9 Obj/Gameplay.o
+ 0x00000000008001e5 0x9 Obj/Gameplay.o
.bss.GamePlayers
- 0x00000000008001e8 0x2a3 Obj/Gameplay.o
- 0x00000000008001e8 GamePlayers
+ 0x00000000008001ee 0x2a4 Obj/Gameplay.o
+ 0x00000000008001ee GamePlayers
.bss.timer_array
- 0x000000000080048b 0x60 Obj/System.o
+ 0x0000000000800492 0x60 Obj/System.o
.bss.system_busy
- 0x00000000008004eb 0x1 Obj/System.o
+ 0x00000000008004f2 0x1 Obj/System.o
.bss.one_second_timer
- 0x00000000008004ec 0x1 Obj/System.o
+ 0x00000000008004f3 0x1 Obj/System.o
.bss.rand_seed
- 0x00000000008004ed 0x1 Obj/System.o
+ 0x00000000008004f4 0x1 Obj/System.o
.bss.global_timer
- 0x00000000008004ee 0x8 Obj/System.o
+ 0x00000000008004f5 0x8 Obj/System.o
.bss.UnitWalkingShadowSprTable
- 0x00000000008004f6 0x2d Obj/Unit.o
+ 0x00000000008004fd 0x36 Obj/Unit.o
.bss.UnitSprTable
- 0x0000000000800523 0x2d Obj/Unit.o
+ 0x0000000000800533 0x36 Obj/Unit.o
.bss._displayBuffer
- 0x0000000000800550 0x200 ../lib/libgamebuino.a(Display.o)
- 0x0000000000800550 _displayBuffer
+ 0x0000000000800569 0x200 ../lib/libgamebuino.a(Display.o)
+ 0x0000000000800569 _displayBuffer
.bss._chanNoise
- 0x0000000000800750 0x1 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000800750 _chanNoise
+ 0x0000000000800769 0x1 ../lib/libgamebuino.a(Sound.o)
+ 0x0000000000800769 _chanNoise
.bss._chanOutput
- 0x0000000000800751 0x1 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000800751 _chanOutput
+ 0x000000000080076a 0x1 ../lib/libgamebuino.a(Sound.o)
+ 0x000000000080076a _chanOutput
.bss._chanOutputVolume
- 0x0000000000800752 0x1 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000800752 _chanOutputVolume
+ 0x000000000080076b 0x1 ../lib/libgamebuino.a(Sound.o)
+ 0x000000000080076b _chanOutputVolume
.bss._chanHalfPeriod
- 0x0000000000800753 0x1 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000800753 _chanHalfPeriod
+ 0x000000000080076c 0x1 ../lib/libgamebuino.a(Sound.o)
+ 0x000000000080076c _chanHalfPeriod
.bss._chanState
- 0x0000000000800754 0x1 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000800754 _chanState
+ 0x000000000080076d 0x1 ../lib/libgamebuino.a(Sound.o)
+ 0x000000000080076d _chanState
.bss._chanCount
- 0x0000000000800755 0x1 ../lib/libgamebuino.a(Sound.o)
- 0x0000000000800755 _chanCount
+ 0x000000000080076e 0x1 ../lib/libgamebuino.a(Sound.o)
+ 0x000000000080076e _chanCount
.bss.timer0_fract
- 0x0000000000800756 0x1 ../lib/libarduino.a(wiring.o)
+ 0x000000000080076f 0x1 ../lib/libarduino.a(wiring.o)
.bss.timer0_millis
- 0x0000000000800757 0x4 ../lib/libarduino.a(wiring.o)
- 0x0000000000800757 timer0_millis
+ 0x0000000000800770 0x4 ../lib/libarduino.a(wiring.o)
+ 0x0000000000800770 timer0_millis
.bss.timer0_overflow_count
- 0x000000000080075b 0x4 ../lib/libarduino.a(wiring.o)
- 0x000000000080075b timer0_overflow_count
+ 0x0000000000800774 0x4 ../lib/libarduino.a(wiring.o)
+ 0x0000000000800774 timer0_overflow_count
*(COMMON)
- 0x000000000080075f PROVIDE (__bss_end, .)
- 0x0000000000005198 __data_load_start = LOADADDR (.data)
- 0x00000000000051f0 __data_load_end = (__data_load_start + SIZEOF (.data))
+ 0x0000000000800778 PROVIDE (__bss_end, .)
+ 0x00000000000052d4 __data_load_start = LOADADDR (.data)
+ 0x0000000000005332 __data_load_end = (__data_load_start + SIZEOF (.data))
-.noinit 0x000000000080075f 0x0
+.noinit 0x0000000000800778 0x0
[!provide] PROVIDE (__noinit_start, .)
*(.noinit*)
[!provide] PROVIDE (__noinit_end, .)
- 0x000000000080075f _end = .
- 0x000000000080075f PROVIDE (__heap_start, .)
+ 0x0000000000800778 _end = .
+ 0x0000000000800778 PROVIDE (__heap_start, .)
.eeprom 0x0000000000810000 0x0
*(.eeprom*)
diff --git a/Gameplay.cpp b/Gameplay.cpp
index bcada48..aceca8f 100644
--- a/Gameplay.cpp
+++ b/Gameplay.cpp
@@ -3,8 +3,9 @@
* **************************************/
#include "Gameplay.h"
-#include "MouseSpr.c"
+#include "MouseSpr.i"
#include "Pad.h"
+#include "Camera.h"
/* **************************************
* Defines *
@@ -24,7 +25,7 @@ static const char PauseMenuOption_0[] PROGMEM = "Resume";
static const char PauseMenuOption_1[] PROGMEM = "Quit";
static TYPE_SPRITE MouseSpr;
-static const char* const PauseMenuOptions[] PROGMEM = {PauseMenuOption_0,
+static const char* const PauseMenuOptions[] PROGMEM = { PauseMenuOption_0,
PauseMenuOption_1 };
/* **************************************
@@ -36,48 +37,9 @@ static void GameGraphics(void);
static bool GamePause(void);
static void GameLoop(void);
-/*
-
-const byte TowerSpr[] PROGMEM = {16,32,
-0xF,0xF0,
-0x8,0x10,
-0x8,0x10,
-0xF,0xF0,
-0x8,0x10,
-0x8,0x10,
-0x8,0x10,
-0x8,0x10,
-0x1B,0xD8,
-0x2A,0x54,
-0x4A,0x52,
-0xFB,0xDF,
-0x8,0x10,
-0x8,0x10,
-0x8,0x10,
-0x9,0x90,
-0x9,0x90,
-0x8,0x10,
-0x8,0x10,
-0x8,0x10,
-0x8,0x10,
-0x9,0x90,
-0x9,0x90,
-0x8,0x10,
-0x8,0x10,
-0x8,0x10,
-0x8,0x10,
-0x8,0x10,
-0xB,0xD0,
-0xA,0x50,
-0xA,0x50,
-0xF,0xF0,
-};*/
-
void GameInit(void)
{
- uint8_t i;
-
- for (i = 0; i < GAME_MAX_PLAYERS; i++)
+ for (uint8_t i = 0; i < GAME_MAX_PLAYERS; i++)
{
GamePlayers[i].Init();
}
@@ -100,7 +62,6 @@ bool GamePause(void)
{
if (PadButtonReleased(PAD_C) == true)
{
- //int8_t menu(const char* const* items, uint8_t length);
uint8_t choice = gb.menu(PauseMenuOptions, 2);
if (choice != 0)
diff --git a/Gameplay.h b/Gameplay.h
index 98bb76d..b7179c2 100644
--- a/Gameplay.h
+++ b/Gameplay.h
@@ -12,7 +12,11 @@
* Defines *
* **************************************/
-#define GAME_MAX_PLAYERS 1
+#define GAME_MAX_PLAYERS 1
+
+/* **************************************
+ * Structs and enums *
+ * **************************************/
/* **************************************
* Global prototypes *
diff --git a/Gfx.cpp b/Gfx.cpp
index 77664b4..45ad6a4 100644
--- a/Gfx.cpp
+++ b/Gfx.cpp
@@ -24,8 +24,13 @@ void GfxInit(void)
gb.display.setFont(font3x5);
}
-void GfxDrawSprite(TYPE_SPRITE * ptrSprite)
+void GfxDrawSprite(TYPE_SPRITE* ptrSprite)
{
+ if (ptrSprite == NULL)
+ {
+ return;
+ }
+
if (GfxIsSpriteInsideScreenArea(ptrSprite) == true)
{
int8_t orig_color = gb.display.getColor();
@@ -84,7 +89,7 @@ bool GfxIsInsideScreenArea(int8_t x, int8_t y, uint8_t w, uint8_t h)
return false;
}
-bool GfxIsSpriteInsideScreenArea(TYPE_SPRITE * spr)
+bool GfxIsSpriteInsideScreenArea(TYPE_SPRITE* spr)
{
return GfxIsInsideScreenArea(spr->x, spr->y, spr->w, spr->h);
}
@@ -125,50 +130,6 @@ void GfxPrintTextFont(const char* str, const uint8_t* font, uint8_t x, uint8_t y
}
}
-void GfxRenderTiles(TYPE_CAMERA* ptrCamera)
-{
- gb.display.setColor(GFX_GRAY);
-
- if (ptrCamera == NULL)
- {
- return;
- }
-
- for (int i = 0; i < Y_SCREEN_RESOLUTION; i+=8)
- {
- for (int j = 0; j < X_SCREEN_RESOLUTION; j++)
- {
- //if (j & 1)
- //{
- int x = j + ptrCamera->X_Offset;
- int y = i + ptrCamera->Y_Offset;
-
- if ((x >= 0) && (y >= 0))
- {
- gb.display.drawPixel(j + ptrCamera->X_Offset, i + ptrCamera->Y_Offset);
- }
- //}
- }
- }
-
- for (int i = 0; i < X_SCREEN_RESOLUTION; i+=8)
- {
- for (int j = 0; j < Y_SCREEN_RESOLUTION; j++)
- {
- //if (j & 1)
- //{
- int x = j + ptrCamera->X_Offset;
- int y = i + ptrCamera->Y_Offset;
-
- if ((x >= 0) && (y >= 0))
- {
- gb.display.drawPixel(i + ptrCamera->X_Offset, j + ptrCamera->Y_Offset);
- }
- //}
- }
- }
-}
-
void GfxPrintText(const char* str, uint8_t x, uint8_t y)
{
GfxPrintTextFont(str, font3x5, x, y);
diff --git a/Gfx.h b/Gfx.h
index 7617f62..e42e25b 100644
--- a/Gfx.h
+++ b/Gfx.h
@@ -59,7 +59,7 @@ typedef struct t_Camera TYPE_CAMERA;
* Global prototypes
* *************************************/
-void GfxDrawSprite(TYPE_SPRITE * ptrSprite);
+void GfxDrawSprite(TYPE_SPRITE* ptrSprite);
void GfxDrawCircle(uint16_t x, uint16_t y, uint8_t radius, int8_t color);
void GfxDrawRectangle(uint8_t x, uint8_t y, uint8_t w, uint8_t h, int8_t color);
void GfxFillRectangle(uint8_t x, uint8_t y, uint8_t w, uint8_t h, int8_t color);
@@ -68,7 +68,7 @@ bool GfxRefreshNeeded(void);
void GfxShowKeyboard(char* str, uint8_t length);
uint8_t GfxGetWidthFromSpriteData(const uint8_t* sprData);
uint8_t GfxGetHeightFromSpriteData(const uint8_t* sprData);
-bool GfxIsSpriteInsideScreenArea(TYPE_SPRITE * spr);
+bool GfxIsSpriteInsideScreenArea(TYPE_SPRITE* spr);
void GfxClearScreen(void);
#ifdef __cplusplus
void GfxPrintText_Flash(const __FlashStringHelper * str);
@@ -76,7 +76,6 @@ void GfxPrintText_Flash(const __FlashStringHelper * str);
void GfxPrintText(const char* str, uint8_t x, uint8_t y);
void GfxPrintTextFont(const char* str, const uint8_t* font, uint8_t x, uint8_t y);
void GfxInit(void);
-void GfxRenderTiles(TYPE_CAMERA* ptrCamera);
#ifdef __cplusplus
}
diff --git a/Libs/libarduino/Makefile b/Libs/libarduino/Makefile
index a3f5e1d..4f05c46 100644
--- a/Libs/libarduino/Makefile
+++ b/Libs/libarduino/Makefile
@@ -21,7 +21,7 @@ $(LIBNAME): $(OBJECTS)
%.o: %.cpp
$(CXX) $< -o $@ $(INCLUDE) $(DEFINE) $(CC_FLAGS)
-
+
%.o: %.c
$(CC) $< -o $@ $(INCLUDE) $(DEFINE) $(CC_FLAGS)
diff --git a/Libs/libgamebuino/Makefile b/Libs/libgamebuino/Makefile
index 28b1e4a..ae98d12 100644
--- a/Libs/libgamebuino/Makefile
+++ b/Libs/libgamebuino/Makefile
@@ -30,5 +30,5 @@ $(LIBNAME): $(OBJECTS)
clean:
rm -f $(OBJECTS)
rm -f $(LIBS_FOLDER)/$(LIBNAME)
-
+
.PHONY: default clean
diff --git a/Libs/petit_fatfs/Makefile b/Libs/petit_fatfs/Makefile
index 0d95ef8..6e96f51 100644
--- a/Libs/petit_fatfs/Makefile
+++ b/Libs/petit_fatfs/Makefile
@@ -12,7 +12,7 @@ LIBNAME=lib$(PROJECT).a
OBJECTS=mmc.o petit_fatfs.o pff.o
default: $(LIBNAME)
-
+
$(LIBNAME): $(OBJECTS)
avr-ar rcs $@ $^
mkdir -p $(INCLUDE_FOLDER)/$(PROJECT)
@@ -22,12 +22,12 @@ $(LIBNAME): $(OBJECTS)
%.o: %.cpp
$(CXX) $< -o $@ $(DEFINE) $(INCLUDE) $(CC_FLAGS)
-
+
%.o: %.c
$(CC) $< -o $@ $(DEFINE) $(INCLUDE) $(CC_FLAGS)
clean:
rm -f $(OBJECTS)
rm -f $(LIBS_FOLDER)/$(LIBNAME)
-
+
.PHONY: default clean
diff --git a/Libs/tinyFAT/Makefile b/Libs/tinyFAT/Makefile
index b99505f..734ff67 100644
--- a/Libs/tinyFAT/Makefile
+++ b/Libs/tinyFAT/Makefile
@@ -21,7 +21,7 @@ $(LIBNAME): $(OBJECTS)
%.o: %.cpp
$(CXX) $< -o $@ $(INCLUDE) $(DEFINE) $(CC_FLAGS)
-
+
%.o: %.c
$(CC) $< -o $@ $(INCLUDE) $(DEFINE) $(CC_FLAGS)
diff --git a/MouseSpr.c b/MouseSpr.i
similarity index 100%
rename from MouseSpr.c
rename to MouseSpr.i
diff --git a/PeasantSpr.inc b/PeasantSpr.i
similarity index 100%
rename from PeasantSpr.inc
rename to PeasantSpr.i
diff --git a/Player.cpp b/Player.cpp
index b9c05a4..4295da1 100644
--- a/Player.cpp
+++ b/Player.cpp
@@ -5,7 +5,7 @@
#include "Player.h"
#include "Pad.h"
#include "Unit.h"
-#include
+#include "Gameplay.h"
/* **************************************
* Defines *
@@ -53,7 +53,7 @@ void Player::Init(void)
cb.x = SystemRand(0, 20);
cb.y = SystemRand(0, 20);
- if (createUnit(BARRACKS, cb) == false)
+ if (createUnit(TOWN_CENTER, cb) == false)
{
GfxPrintText_Flash(F("Failed to create building!"));
}
@@ -104,8 +104,6 @@ void Player::DrawHandler(void)
uint8_t i;
bool bAnyoneSelected = false;
- //GfxRenderTiles(&Camera);
-
for (i = 0; i < PLAYER_MAX_UNITS_BUILDINGS; i++)
{
TYPE_UNIT* u = &units[i];
@@ -318,7 +316,7 @@ void Player::ActionsMenu(void)
IncreaseShowActionsMenuIndex();
}
- UNIT_ACTION action = (UNIT_ACTION) (showActionsMenu_index);
+ UNIT_ACTION action = (UNIT_ACTION)(showActionsMenu_index);
const char* str = UnitGetActionString(action);
@@ -371,8 +369,6 @@ void Player::ButtonHandler(void)
{
ButtonRightReleased();
}
-
-
}
void Player::ButtonAPressed(void)
@@ -418,10 +414,19 @@ void Player::ButtonAReleased(void)
if (ptrUnit->selected == true)
{
+ showActionsMenu_counterLevel1 = 0;
+
switch (showActionsMenu_index)
{
- case ACTION_CREATE_UNIT:
- ActionCreateUnit(ptrUnit);
+ case ACTION_CREATE_PEASANT:
+ ActionCreateUnit(ptrUnit, PEASANT);
+ break;
+
+ case ACTION_BUILD_BARRACKS:
+ ActionCreateBuilding(ptrUnit, BARRACKS);
+ break;
+
+ default:
break;
}
@@ -433,18 +438,22 @@ void Player::ButtonAReleased(void)
showActionsMenu = (showActionsMenu_counter < ACCEPT_UNIT_BUILDING_OPTIONS_FRAMES)? false: true;
}
-void Player::ActionCreateUnit(TYPE_UNIT* ptrUnit)
+void Player::ActionCreateUnit(TYPE_UNIT* ptrUnit, TYPE_UNIT_ID unit)
{
- if (showActionsMenu_index == ACTION_CREATE_UNIT)
- {
- uint8_t w = UnitGetWidthFromID(ptrUnit->id);
- uint8_t h = UnitGetHeightFromID(ptrUnit->id);
- uint8_t new_pos_x = ptrUnit->x + SystemRand(w, w + (w >> 1));
- uint8_t new_pos_y = ptrUnit->y + SystemRand(h, h + (h >> 1));
- TYPE_COLLISION_BLOCK cb = {.x = new_pos_x, .y = new_pos_y};
+ uint8_t w = UnitGetWidthFromID(ptrUnit->id);
+ uint8_t h = UnitGetHeightFromID(ptrUnit->id);
+ uint8_t new_pos_x = ptrUnit->x + SystemRand(w, w + (w >> 1));
+ uint8_t new_pos_y = ptrUnit->y + SystemRand(h, h + (h >> 1));
+ TYPE_COLLISION_BLOCK cb = {.x = new_pos_x, .y = new_pos_y};
- createUnit(PEASANT, cb);
- }
+ createUnit(unit, cb);
+}
+
+void Player::ActionCreateBuilding(TYPE_UNIT* ptrUnit, TYPE_UNIT_ID bldg)
+{
+ TYPE_COLLISION_BLOCK cb = GetCursorPos();
+
+ createUnit(bldg, cb);
}
void Player::ButtonBPressed(void)
diff --git a/Player.h b/Player.h
index 36b5e94..07101ed 100644
--- a/Player.h
+++ b/Player.h
@@ -61,6 +61,9 @@ class Player
// Camera handling
TYPE_CAMERA Camera;
+ // Map rendering
+ void RenderMap(void);
+
// Button pressed/released events
void ButtonLeftReleased(void);
void ButtonRightReleased(void);
@@ -85,10 +88,12 @@ class Player
bool showActionsMenu;
uint8_t showActionsMenu_counter;
uint8_t showActionsMenu_index;
+ uint8_t showActionsMenu_counterLevel1;
void IncreaseShowActionsMenuIndex();
// Action callbacks
- void ActionCreateUnit (TYPE_UNIT* ptrUnit);
+ void ActionCreateUnit(TYPE_UNIT* ptrUnit, TYPE_UNIT_ID unit);
+ void ActionCreateBuilding(TYPE_UNIT* ptrUnit, TYPE_UNIT_ID bldg);
};
#endif // __cplusplus
diff --git a/Sprites/.directory b/Sprites/.directory
new file mode 100644
index 0000000..1f60e19
--- /dev/null
+++ b/Sprites/.directory
@@ -0,0 +1,4 @@
+[Dolphin]
+PreviewsShown=true
+Timestamp=2017,11,5,4,13,19
+Version=3
diff --git a/Sprites/TownCentre.bmp b/Sprites/TownCentre.bmp
new file mode 100644
index 0000000..b2203d4
Binary files /dev/null and b/Sprites/TownCentre.bmp differ
diff --git a/Sprites/TownCentreShadow.bmp b/Sprites/TownCentreShadow.bmp
new file mode 100644
index 0000000..cb7dc6c
Binary files /dev/null and b/Sprites/TownCentreShadow.bmp differ
diff --git a/TowerSpr.i b/TowerSpr.i
new file mode 100644
index 0000000..ea693de
--- /dev/null
+++ b/TowerSpr.i
@@ -0,0 +1,33 @@
+const byte TowerSpr[] PROGMEM = { 16,32,
+ 0xF,0xF0,
+ 0x8,0x10,
+ 0x8,0x10,
+ 0xF,0xF0,
+ 0x8,0x10,
+ 0x8,0x10,
+ 0x8,0x10,
+ 0x8,0x10,
+ 0x1B,0xD8,
+ 0x2A,0x54,
+ 0x4A,0x52,
+ 0xFB,0xDF,
+ 0x8,0x10,
+ 0x8,0x10,
+ 0x8,0x10,
+ 0x9,0x90,
+ 0x9,0x90,
+ 0x8,0x10,
+ 0x8,0x10,
+ 0x8,0x10,
+ 0x8,0x10,
+ 0x9,0x90,
+ 0x9,0x90,
+ 0x8,0x10,
+ 0x8,0x10,
+ 0x8,0x10,
+ 0x8,0x10,
+ 0x8,0x10,
+ 0xB,0xD0,
+ 0xA,0x50,
+ 0xA,0x50,
+ 0xF,0xF0, };
diff --git a/TownCentre.i b/TownCentre.i
new file mode 100644
index 0000000..6d78342
--- /dev/null
+++ b/TownCentre.i
@@ -0,0 +1,53 @@
+const uint8_t TownCentreSprData[] PROGMEM = {24,24,
+0x3,0xFF,0xC0,
+0xC,0x0,0x30,
+0x37,0xFF,0xEC,
+0x78,0x0,0x16,
+0xAF,0xFF,0xF5,
+0xA8,0x0,0x15,
+0xA8,0xFF,0x15,
+0xA8,0x81,0x15,
+0xA8,0xFF,0xD5,
+0xAB,0x81,0x55,
+0xAA,0xA5,0xD5,
+0xAB,0x81,0x55,
+0xAA,0xA5,0x55,
+0xAB,0x81,0xD5,
+0xA8,0x99,0x15,
+0xA8,0xFF,0x15,
+0xA6,0x0,0x65,
+0x91,0xC3,0x89,
+0x8C,0x42,0x31,
+0x83,0xC3,0xC1,
+0x40,0x42,0x2,
+0x30,0x42,0xC,
+0xC,0x42,0x30,
+0x3,0xC3,0xC0,
+};
+
+const uint8_t TownCentreShadowSprData[] PROGMEM = {24,24,
+0x1F,0x80,0x0,
+0x7E,0x0,0x0,
+0xF8,0x0,0x0,
+0xF0,0x0,0x0,
+0xE0,0x0,0x0,
+0xE0,0x0,0x4,
+0xE0,0x0,0x4,
+0xE0,0x0,0x4,
+0xE2,0xE0,0x4,
+0xE2,0x80,0x4,
+0xE2,0x80,0x4,
+0xE2,0x80,0x4,
+0xE2,0x80,0x4,
+0xE2,0x80,0x4,
+0xE2,0xE0,0x4,
+0xE0,0x60,0xC,
+0xE0,0x0,0x10,
+0xE0,0x0,0x0,
+0xE0,0x0,0x0,
+0xE0,0x1,0x80,
+0xF0,0x1,0x80,
+0xF8,0x1,0x80,
+0x7E,0x1,0x80,
+0x1F,0x81,0x80,
+};
diff --git a/Unit.c b/Unit.c
index 7d12666..26beae0 100644
--- a/Unit.c
+++ b/Unit.c
@@ -3,8 +3,9 @@
* **************************************/
#include "Unit.h"
-#include "PeasantSpr.inc"
-#include "BarracksSpr.inc"
+#include "PeasantSpr.i"
+#include "BarracksSpr.i"
+#include "TownCentre.i"
/* **************************************
* Defines *
@@ -30,33 +31,32 @@ struct t_coordinates
/* Tables */
static uint8_t const UnitHPTable[MAX_UNITS_BUILDINGS] = { [PEASANT] = 25 ,
- [BARRACKS] = 100 };
-static uint8_t const UnitSpeedTable[MAX_UNITS_BUILDINGS] = { [PEASANT] = 1 ,
- [BARRACKS] = 0 };
+ [BARRACKS] = 100,
+ [TOWN_CENTER] = 200 };
-static const char* const UnitActionsTable_Level[MAX_ACTIONS] = { [ACTION_BUILD] = "BUILD",
- [ACTION_ATTACK] = "ATTACK",
- [ACTION_CREATE_UNIT] = "CREATE"};
+static uint8_t const UnitSpeedTable[MAX_UNITS_BUILDINGS] = { [PEASANT] = 1,
+ [BARRACKS] = 0,
+ [TOWN_CENTER] = 0 };
-static uint8_t const UnitActionsTable[MAX_UNITS_BUILDINGS] = { [PEASANT] = ((1 << ACTION_BUILD) | (1 << ACTION_ATTACK)),
- [BARRACKS] = (1 << ACTION_CREATE_UNIT) };
+static const char* const UnitActionsTable_Level[MAX_ACTIONS] = { [ACTION_BUILD_BARRACKS] = "B.BARR",
+ [ACTION_ATTACK] = "ATTACK",
+ [ACTION_CREATE_PEASANT] = "C.PEAS."};
+
+static uint8_t const UnitActionsTable[MAX_UNITS_BUILDINGS] = { [PEASANT] = ((1 << ACTION_BUILD_BARRACKS) | (1 << ACTION_ATTACK)),
+ [BARRACKS] = (1 << ACTION_CREATE_PEASANT),
+ [TOWN_CENTER] = (1 << ACTION_CREATE_PEASANT) };
// **************
// Sprite tables
// **************
static TYPE_SPRITE UnitSprTable[MAX_UNITS_BUILDINGS];
static TYPE_SPRITE UnitWalkingShadowSprTable[MAX_UNITS_BUILDINGS];
-static const struct t_coordinates UnitShadowOffsetTable[MAX_BUILDING_ID - FIRST_BUILDING_ID] = { [BARRACKS - FIRST_BUILDING_ID] = {.x = -6, .y = 0} };
+static const struct t_coordinates UnitShadowOffsetTable[MAX_BUILDING_ID - FIRST_BUILDING_ID] = { [BARRACKS - FIRST_BUILDING_ID] = {.x = -6, .y = 0},
+ [TOWN_CENTER - FIRST_BUILDING_ID] = {.x = -3, .y = 0} };
void UnitInit(void)
{
- enum
- {
- BARRACKS_SHADOW_OFFSET_X = -8,
- BARRACKS_SHADOW_OFFSET_Y = 0
- };
-
- UnitSprTable[PEASANT].Data = Peasant_SprData;
+ UnitSprTable[PEASANT].Data = Peasant_SprData;
UnitSprTable[PEASANT].w = GfxGetWidthFromSpriteData(Peasant_SprData);
UnitSprTable[PEASANT].h = GfxGetHeightFromSpriteData(Peasant_SprData);
UnitSprTable[PEASANT].flip = 0;
@@ -77,18 +77,32 @@ void UnitInit(void)
UnitSprTable[BARRACKS].rotation = 0;
UnitSprTable[BARRACKS].color = GFX_BLACK;
+ UnitSprTable[TOWN_CENTER].Data = TownCentreSprData;
+ UnitSprTable[TOWN_CENTER].w = GfxGetWidthFromSpriteData(TownCentreSprData);
+ UnitSprTable[TOWN_CENTER].h = GfxGetHeightFromSpriteData(TownCentreSprData);
+ UnitSprTable[TOWN_CENTER].flip = 0;
+ UnitSprTable[TOWN_CENTER].rotation = 0;
+ UnitSprTable[TOWN_CENTER].color = GFX_BLACK;
+
UnitWalkingShadowSprTable[BARRACKS].Data = BarracksShadowSpr_Data;
UnitWalkingShadowSprTable[BARRACKS].w = GfxGetWidthFromSpriteData(BarracksShadowSpr_Data);
UnitWalkingShadowSprTable[BARRACKS].h = GfxGetHeightFromSpriteData(BarracksShadowSpr_Data);
UnitWalkingShadowSprTable[BARRACKS].flip = 0;
UnitWalkingShadowSprTable[BARRACKS].rotation = 0;
UnitWalkingShadowSprTable[BARRACKS].color = GFX_GRAY;
+
+ UnitWalkingShadowSprTable[TOWN_CENTER].Data = TownCentreShadowSprData;
+ UnitWalkingShadowSprTable[TOWN_CENTER].w = GfxGetWidthFromSpriteData(TownCentreShadowSprData);
+ UnitWalkingShadowSprTable[TOWN_CENTER].h = GfxGetHeightFromSpriteData(TownCentreShadowSprData);
+ UnitWalkingShadowSprTable[TOWN_CENTER].flip = 0;
+ UnitWalkingShadowSprTable[TOWN_CENTER].rotation = 0;
+ UnitWalkingShadowSprTable[TOWN_CENTER].color = GFX_GRAY;
}
void UnitDraw(TYPE_UNIT* ptrUnit, TYPE_CAMERA* ptrCamera, bool bHighlighted)
{
uint8_t id = ptrUnit->id;
- TYPE_SPRITE * ptrSpr;
+ TYPE_SPRITE* ptrSpr;
if (ptrUnit->alive == false)
{
@@ -156,10 +170,6 @@ void UnitDraw(TYPE_UNIT* ptrUnit, TYPE_CAMERA* ptrCamera, bool bHighlighted)
ptrSpr->flip |= GFX_FLIPV;
}
break;
-
- default:
- // Invalid direction
- break;
}
}
else
@@ -244,7 +254,7 @@ void UnitHandler(TYPE_UNIT* unitArray, size_t sz)
}
- bool bMoving = false;
+ bool bMoving = true;
if (ptrUnit->walking == true)
{
@@ -256,14 +266,12 @@ void UnitHandler(TYPE_UNIT* unitArray, size_t sz)
ptrUnit->dir = DIRECTION_LEFT;
x_d = -UnitSpeedTable[ptrUnit->id];
//~ ptrUnit->x -= UnitSpeedTable[ptrUnit->id];
- bMoving = true;
}
else if ( (ptrUnit->x + UnitSpeedTable[ptrUnit->id]) < ptrUnit->target_x)
{
ptrUnit->dir = DIRECTION_RIGHT;
x_d = UnitSpeedTable[ptrUnit->id];
//~ ptrUnit->x += UnitSpeedTable[ptrUnit->id];
- bMoving = true;
}
if ( (ptrUnit->y - UnitSpeedTable[ptrUnit->id]) > ptrUnit->target_y)
@@ -271,14 +279,18 @@ void UnitHandler(TYPE_UNIT* unitArray, size_t sz)
ptrUnit->dir = DIRECTION_UP;
y_d = -UnitSpeedTable[ptrUnit->id];
//~ ptrUnit->y -= UnitSpeedTable[ptrUnit->id];
- bMoving = true;
}
else if ( (ptrUnit->y + UnitSpeedTable[ptrUnit->id]) < ptrUnit->target_y)
{
ptrUnit->dir = DIRECTION_DOWN;
y_d = UnitSpeedTable[ptrUnit->id];
//~ ptrUnit->y += UnitSpeedTable[ptrUnit->id];
- bMoving = true;
+ }
+ else
+ {
+ x_d = ptrUnit->x - ptrUnit->target_x;
+ y_d = ptrUnit->y - ptrUnit->target_y;
+ bMoving = false;
}
ptrUnit->walking = bMoving;
@@ -298,7 +310,7 @@ void UnitHandler(TYPE_UNIT* unitArray, size_t sz)
.w = UnitGetWidthFromID(ptrUnit->id),
.h = UnitGetHeightFromID(ptrUnit->id) };
TYPE_COLLISION_BLOCK ou;
-
+
if (ptrOtherUnit->alive == false)
{
continue;
@@ -315,7 +327,7 @@ void UnitHandler(TYPE_UNIT* unitArray, size_t sz)
ou.y = ptrOtherUnit->x;
ou.w = UnitGetWidthFromID(ptrOtherUnit->id);
ou.h = UnitGetHeightFromID(ptrOtherUnit->id);
-
+
if (SystemCollisionCheck(cu, ou) == true)
{
ptrUnit->walking = false;
@@ -323,7 +335,7 @@ void UnitHandler(TYPE_UNIT* unitArray, size_t sz)
}
}
}
-
+
if (ptrUnit->walking == true)
{
// If no collision is detected, keep moving to the new position
diff --git a/Unit.h b/Unit.h
index eecdbcd..86bd6f7 100644
--- a/Unit.h
+++ b/Unit.h
@@ -58,6 +58,7 @@ typedef enum t_unitid
// Buildings
BARRACKS,
TOWER,
+ TOWN_CENTER,
MAX_BUILDING_ID,
@@ -75,9 +76,9 @@ typedef struct
typedef enum t_availableactions
{
- ACTION_BUILD,
+ ACTION_BUILD_BARRACKS,
ACTION_ATTACK,
- ACTION_CREATE_UNIT,
+ ACTION_CREATE_PEASANT,
MAX_ACTIONS
}UNIT_ACTION;