Initial revision
authorArjen Baart <arjen@andromeda.nl>
Thu, 26 Dec 2019 11:05:33 +0000 (12:05 +0100)
committerArjen Baart <arjen@andromeda.nl>
Thu, 26 Dec 2019 11:05:33 +0000 (12:05 +0100)
53 files changed:
ArduinoLDR/ArduinoLDR.ino [new file with mode: 0644]
COPYING [new file with mode: 0644]
INSTALL [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
configure.ac [new file with mode: 0644]
doc/Makefile.am [new file with mode: 0644]
doc/dataflow.svg [new file with mode: 0644]
doc/design.xml [new file with mode: 0644]
doc/light_to_pwm.svg [new file with mode: 0644]
doc/lightfade.svg [new file with mode: 0644]
doc/pwm-algorithm.svg [new file with mode: 0644]
doc/pwm-psd.svg [new file with mode: 0644]
doc/style.css [new file with mode: 0644]
doc/wakeup-classes.svg [new file with mode: 0644]
doc/wakeup.svg [new file with mode: 0644]
hardware/footprints/BRIDGE_5401.fp [new file with mode: 0644]
hardware/footprints/RJ45.fp [new file with mode: 0644]
hardware/footprints/TSR.fp [new file with mode: 0644]
hardware/footprints/TSR_power [new file with mode: 0644]
hardware/footprints/USB.fp [new file with mode: 0644]
hardware/footprints/bridge_5401 [new file with mode: 0644]
hardware/footprints/rj45 [new file with mode: 0644]
hardware/footprints/usb [new file with mode: 0644]
hardware/gafrc [new file with mode: 0644]
hardware/gschemrc [new file with mode: 0644]
hardware/ledcontrol-bom.gnumeric [new file with mode: 0644]
hardware/ledcontrol.cmd [new file with mode: 0644]
hardware/ledcontrol.csv [new file with mode: 0644]
hardware/ledcontrol.net [new file with mode: 0644]
hardware/ledcontrol.pcb [new file with mode: 0644]
hardware/ledcontrol.prj [new file with mode: 0644]
hardware/ledcontrol.sch [new file with mode: 0644]
hardware/output.net [new file with mode: 0644]
hardware/symbols/#untitled_2.sch# [new file with mode: 0644]
hardware/symbols/555.sym [new file with mode: 0644]
hardware/symbols/555.symdef [new file with mode: 0644]
hardware/symbols/djboxsym [new file with mode: 0755]
src/Makefile.am [new file with mode: 0644]
src/lightcontrol.cpp [new file with mode: 0644]
src/pwm-sysfs.c [new file with mode: 0644]
src/pwm.c [new file with mode: 0644]
src/pwm.h [new file with mode: 0644]
src/pwmread.cpp [new file with mode: 0644]
src/read_serial.cpp [new file with mode: 0644]
src/sunrise.cpp [new file with mode: 0644]
test/Makefile.am [new file with mode: 0644]
test/colorsequence [new file with mode: 0755]
test/flash.py [new file with mode: 0644]
test/lightctrl [new file with mode: 0755]
test/lightctrl-fade [new file with mode: 0755]
test/lightctrl-oor [new file with mode: 0755]
web/slider.css [new file with mode: 0644]
web/slider.html [new file with mode: 0644]

diff --git a/ArduinoLDR/ArduinoLDR.ino b/ArduinoLDR/ArduinoLDR.ino
new file mode 100644 (file)
index 0000000..5235185
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+
+Analog input A0 to measure an LDR
+
+*/
+
+int sensorPin = A0;    // select the input pin for the potentiometer
+int sensorValue = 0;  // variable to store the value coming from the sensor
+
+
+void setup() {
+
+  
+   //Initialize serial and wait for port to open:
+  Serial.begin(9600); 
+  while (!Serial) {
+    ; // wait for serial port to connect. Needed for Leonardo only
+  }
+    // prints title with ending line break 
+  Serial.println("Serial port ready."); 
+}
+
+void loop() {
+  // read the value from the sensor:
+  sensorValue = analogRead(sensorPin);    
+
+  
+  // stop the program for <sensorValue> milliseconds:
+  delay(60000);          
+
+  // prints value as string as an ASCII-encoded decimal (base 10).
+  // Decimal is the  default format for Serial.print() and Serial.println(),
+  // so no modifier is needed:
+  Serial.println(sensorValue);    
+}
+
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..94a9ed0
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..2099840
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,370 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
+Inc.
+
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+   Briefly, the shell command `./configure && make && make install'
+should configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.  Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+   The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.
+
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package, generally using the just-built uninstalled binaries.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the `make install' phase executed with root
+     privileges.
+
+  5. Optionally, type `make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior `make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  7. Often, you can also type `make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide `make
+     distcheck', which can by used by developers to test that all other
+     targets like `make install' and `make uninstall' work correctly.
+     This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.  This
+is known as a "VPATH" build.
+
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'.  Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated.  The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the `DESTDIR' variable.  For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names.  The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+   Some packages offer the ability to configure how verbose the
+execution of `make' will be.  For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved.  Use GNU `make'
+instead.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+   On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf limitation.  Until the limitation is lifted, you can use
+this workaround:
+
+     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
+
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..ad5f20c
--- /dev/null
@@ -0,0 +1 @@
+SUBDIRS = src doc test
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..3dabdf3
--- /dev/null
@@ -0,0 +1,36 @@
+#                                               -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.69])
+AC_INIT([wakeup], [0.1], [arjen@andromeda.nl])
+AC_CONFIG_SRCDIR([src/sunrise.cpp])
+AC_CONFIG_HEADERS([config.h])
+AM_INIT_AUTOMAKE([foreign])
+
+# Checks for programs.
+AC_PROG_CXX
+AC_PROG_CC
+
+# Checks for libraries.
+# FIXME: Replace `main' with a function in `-lACL':
+AC_CHECK_LIB([ACL], [Now])
+# FIXME: Replace `main' with a function in `-lTachyon':
+AC_CHECK_LIB([Tachyon], [main])
+# FIXME: Replace `main' with a function in `-lrt':
+AC_CHECK_LIB([rt], [main])
+
+# Checks for header files.
+AC_CHECK_HEADERS([fcntl.h stdlib.h unistd.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_CHECK_HEADER_STDBOOL
+AC_TYPE_SSIZE_T
+
+# Checks for library functions.
+AC_FUNC_MMAP
+
+AC_CONFIG_FILES([Makefile
+                 doc/Makefile
+                 src/Makefile
+                 test/Makefile])
+AC_OUTPUT
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644 (file)
index 0000000..c84922f
--- /dev/null
@@ -0,0 +1,35 @@
+
+
+
+.SUFFIXES = .obj .eps .svg
+
+.obj.svg:
+       tgif -print -svg $<
+
+.obj.eps:
+       tgif -print -eps -color $<
+
+XMLS=design.xml
+IMAGES=dataflow.svg pwm-psd.svg pwm-algorithm.svg light_to_pwm.svg lightfade.svg
+
+EXTRA_DIST = $(XMLS)
+
+PICTURES=
+
+all: design.html design.ps design.pdf
+
+design.html : $(XMLS) $(IMAGES)
+       xml2html design.xml > design.html
+
+design.ps : $(XMLS)  $(PICTURES)
+       xml2latex design.xml > design.tex 
+       latex design.tex
+       dvips -o design.ps design.dvi
+
+design.pdf : $(XMLS)  $(PICTURES)
+       xml2latex design.xml > design.tex 
+       pdflatex design.tex
+
+clean-local:
+       rm -f *.aux *.log *.eps *.dvi *.tex
+       rm -f design.html design.ps design.pdf
diff --git a/doc/dataflow.svg b/doc/dataflow.svg
new file mode 100644 (file)
index 0000000..8ff64eb
--- /dev/null
@@ -0,0 +1,947 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="200mm"
+   height="150mm"
+   viewBox="0 0 200 150"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.1 r15371"
+   sodipodi:docname="dataflow.svg">
+  <defs
+     id="defs2">
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker12266"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path12264"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker11996"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:collect="always">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path11994"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker11876"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path11874"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker11738"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:collect="always">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path11736"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker11630"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path11628"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker11528"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:collect="always">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path11526"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker11430"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path11428"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker11300"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:collect="always">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path11298"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker11198"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path11196"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker11104"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:collect="always">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path11102"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker10995"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path10993"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker10931"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend"
+       inkscape:collect="always">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path10929"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker10873"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path10871"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker10681"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Mend">
+      <path
+         transform="scale(-0.6)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path10679"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker10641"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path10639"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mend"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path10358"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mend"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path10340"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="274.84296"
+     inkscape:cy="340.28479"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1679"
+     inkscape:window-height="1097"
+     inkscape:window-x="140"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     showguides="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid11065" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-147)">
+    <g
+       id="g4501"
+       transform="matrix(0.70872131,0,0,0.70872131,14.721812,152.76851)">
+      <path
+         sodipodi:open="true"
+         d="M 57.301635,67.088433 A 13.630746,13.630746 0 0 1 76.214646,70.703716 13.630746,13.630746 0 0 1 72.641221,89.62468 13.630746,13.630746 0 0 1 53.712396,86.09313 13.630746,13.630746 0 0 1 57.202054,67.156538"
+         sodipodi:end="4.1081211"
+         sodipodi:start="4.1169719"
+         sodipodi:ry="13.630746"
+         sodipodi:rx="13.630746"
+         sodipodi:cy="78.373528"
+         sodipodi:cx="64.946495"
+         sodipodi:type="arc"
+         id="path4489"
+         style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-opacity:1" />
+      <text
+         id="text4493"
+         y="77.080292"
+         x="56.103912"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:125%;font-family:Sans;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:0.26458332px"
+           y="77.080292"
+           x="56.103912"
+           id="tspan4491"
+           sodipodi:role="line">sleep and</tspan><tspan
+           id="tspan4495"
+           style="stroke-width:0.26458332px"
+           y="81.710503"
+           x="56.103912"
+           sodipodi:role="line"> wakeup</tspan></text>
+    </g>
+    <g
+       id="g4575"
+       transform="translate(1.9514727,130.4745)">
+      <path
+         style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.1669645;stroke-linejoin:miter;stroke-opacity:1"
+         id="path4503"
+         sodipodi:type="arc"
+         sodipodi:cx="59.754066"
+         sodipodi:cy="36.679482"
+         sodipodi:rx="8.6016407"
+         sodipodi:ry="8.6016407"
+         sodipodi:start="4.1169719"
+         sodipodi:end="4.1081211"
+         d="M 54.929801,29.558057 A 8.6016407,8.6016407 0 0 1 66.864799,31.83947 8.6016407,8.6016407 0 0 1 64.6098,43.779487 8.6016407,8.6016407 0 0 1 52.664823,41.550913 8.6016407,8.6016407 0 0 1 54.86696,29.601034"
+         sodipodi:open="true" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1669645px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="59.701031"
+         y="35.188751"
+         id="text4509"><tspan
+           sodipodi:role="line"
+           x="59.701031"
+           y="35.188751"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.1669645px"
+           id="tspan4507">detect</tspan><tspan
+           sodipodi:role="line"
+           x="59.701031"
+           y="38.71653"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.1669645px"
+           id="tspan4515">presence</tspan></text>
+    </g>
+    <g
+       transform="matrix(0.74755847,0,0,0.74755847,56.031676,127.54133)"
+       id="g4525">
+      <path
+         sodipodi:open="true"
+         d="M 57.301635,67.088433 A 13.630746,13.630746 0 0 1 76.214646,70.703716 13.630746,13.630746 0 0 1 72.641221,89.62468 13.630746,13.630746 0 0 1 53.712396,86.09313 13.630746,13.630746 0 0 1 57.202054,67.156538"
+         sodipodi:end="4.1081211"
+         sodipodi:start="4.1169719"
+         sodipodi:ry="13.630746"
+         sodipodi:rx="13.630746"
+         sodipodi:cy="78.373528"
+         sodipodi:cx="64.946495"
+         sodipodi:type="arc"
+         id="path4517"
+         style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-opacity:1" />
+      <text
+         id="text4523"
+         y="76.011215"
+         x="55.569374"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:125%;font-family:Sans;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           id="tspan4521"
+           style="stroke-width:0.26458332px"
+           y="76.011215"
+           x="55.569374"
+           sodipodi:role="line">light</tspan><tspan
+           style="stroke-width:0.26458332px"
+           y="80.641426"
+           x="55.569374"
+           sodipodi:role="line"
+           id="tspan4529">control</tspan></text>
+    </g>
+    <g
+       id="g4539"
+       transform="matrix(0.76697754,0,0,0.76697754,101.80992,126.01938)">
+      <path
+         style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-opacity:1"
+         id="path4531"
+         sodipodi:type="arc"
+         sodipodi:cx="64.946495"
+         sodipodi:cy="78.373528"
+         sodipodi:rx="13.630746"
+         sodipodi:ry="13.630746"
+         sodipodi:start="4.1169719"
+         sodipodi:end="4.1081211"
+         d="M 57.301635,67.088433 A 13.630746,13.630746 0 0 1 76.214646,70.703716 13.630746,13.630746 0 0 1 72.641221,89.62468 13.630746,13.630746 0 0 1 53.712396,86.09313 13.630746,13.630746 0 0 1 57.202054,67.156538"
+         sodipodi:open="true" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:125%;font-family:Sans;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="55.569374"
+         y="76.011215"
+         id="text4537"><tspan
+           id="tspan4535"
+           sodipodi:role="line"
+           x="55.569374"
+           y="76.011215"
+           style="stroke-width:0.26458332px">PWM</tspan><tspan
+           sodipodi:role="line"
+           x="55.569374"
+           y="80.641426"
+           style="stroke-width:0.26458332px"
+           id="tspan4543">generator</tspan></text>
+    </g>
+    <g
+       id="g12120"
+       transform="translate(-7.9375,127)">
+      <path
+         style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.17980909;stroke-linejoin:miter;stroke-opacity:1"
+         id="path4545"
+         sodipodi:type="arc"
+         sodipodi:cx="22.851555"
+         sodipodi:cy="81.981667"
+         sodipodi:rx="9.2633657"
+         sodipodi:ry="9.2633657"
+         sodipodi:start="4.1169719"
+         sodipodi:end="4.1081211"
+         d="M 17.656158,74.31239 A 9.2633657,9.2633657 0 0 1 30.509316,76.769313 9.2633657,9.2633657 0 0 1 28.08084,89.627876 9.2633657,9.2633657 0 0 1 15.216935,87.227858 9.2633657,9.2633657 0 0 1 17.588483,74.358674"
+         sodipodi:open="true" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.51732731px;line-height:125%;font-family:Sans;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.17980909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="15.228956"
+         y="81.139038"
+         id="text4551"><tspan
+           sodipodi:role="line"
+           x="15.228956"
+           y="81.139038"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.17980909px"
+           id="tspan4549">sun</tspan><tspan
+           sodipodi:role="line"
+           x="15.228956"
+           y="84.364899"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.17980909px"
+           id="tspan4557">calculation</tspan></text>
+    </g>
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot4559"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14px;line-height:125%;font-family:Sans;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
+         id="flowRegion4561"><rect
+           id="rect4563"
+           width="30.592743"
+           height="24.732878"
+           x="213.86417"
+           y="111.87792" /></flowRegion><flowPara
+         id="flowPara4565" /></flowRoot>    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10641)"
+       d="M 69.571193,170.63504 95.26505,182.00628"
+       id="path4581"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g4575"
+       inkscape:connection-end="#g4525" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
+       d="M 69.37001,203.95131 95.491304,190.73139"
+       id="path4583"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g4501"
+       inkscape:connection-end="#g4525" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10681)"
+       d="m 114.77262,186.1301 h 26.39542"
+       id="path4585"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g4525"
+       inkscape:connection-end="#g4539" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="36.963779"
+       y="207.24442"
+       id="text4589"><tspan
+         sodipodi:role="line"
+         id="tspan4587"
+         x="36.963779"
+         y="207.24442"
+         style="stroke-width:0.26458332px">sunrise-sunset</tspan></text>
+    <g
+       id="g10837"
+       transform="translate(-10.342926,127)">
+      <rect
+         y="34.541321"
+         x="19.777945"
+         height="8.0180855"
+         width="12.973536"
+         id="rect10828"
+         style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <text
+         id="text10832"
+         y="39.579067"
+         x="26.167561"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:0.26458332px"
+           y="39.579067"
+           x="26.167561"
+           id="tspan10830"
+           sodipodi:role="line">PIR</tspan></text>
+    </g>
+    <g
+       id="g10857"
+       transform="translate(-6.982578,128.07982)">
+      <rect
+         style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.33699012;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect10839"
+         width="15.84151"
+         height="10.618791"
+         x="16.606707"
+         y="51.148026" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="24.524706"
+         y="55.472122"
+         id="text10843"><tspan
+           sodipodi:role="line"
+           id="tspan10841"
+           x="24.524706"
+           y="55.472122"
+           style="stroke-width:0.26458332px">outside</tspan><tspan
+           sodipodi:role="line"
+           x="24.524706"
+           y="58.999901"
+           style="stroke-width:0.26458332px"
+           id="tspan10847">light</tspan></text>
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10931)"
+       d="M 25.465638,181.41934 53.701823,170.30453"
+       id="path10859"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g10857"
+       inkscape:connection-end="#g4575" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10995)"
+       d="m 22.408554,165.77757 30.700625,1.0753"
+       id="path10861"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g10837"
+       inkscape:connection-end="#g4575" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker10873)"
+       d="m 25.465638,188.89604 26.821726,14.76"
+       id="path10863"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g10857"
+       inkscape:connection-end="#g4501" />
+    <g
+       id="g11092"
+       transform="translate(-19.276786,124.35417)">
+      <g
+         id="g11079">
+        <path
+           style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path11067"
+           sodipodi:type="arc"
+           sodipodi:cx="79.375"
+           sodipodi:cy="110.46875"
+           sodipodi:rx="6.614583"
+           sodipodi:ry="1.3229166"
+           sodipodi:start="4.1169699"
+           sodipodi:end="4.1081211"
+           sodipodi:open="true"
+           d="m 75.665173,109.37349 a 6.614583,1.3229166 0 0 1 9.177909,0.35087 6.614583,1.3229166 0 0 1 -1.734062,1.83636 6.614583,1.3229166 0 0 1 -9.185582,-0.34275 6.614583,1.3229166 0 0 1 1.693422,-1.83787" />
+        <path
+           d="m 85.988843,121.0882 a 6.614583,2.4181671 0 0 1 -3.335855,2.10019 6.614583,2.4181671 0 0 1 -6.642899,-0.0181 6.614583,2.4181671 0 0 1 -3.249674,-2.11817"
+           sodipodi:end="3.1565299"
+           sodipodi:start="1.2510826e-14"
+           sodipodi:ry="2.4181671"
+           sodipodi:rx="6.614583"
+           sodipodi:cy="121.0882"
+           sodipodi:cx="79.37426"
+           sodipodi:type="arc"
+           id="path11069"
+           style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           sodipodi:open="true" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 72.760416,110.46875 c 0,10.58333 0,10.58333 0,10.58333"
+           id="path11071"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 85.989582,110.46875 v 10.58333 0"
+           id="path11073"
+           inkscape:connector-curvature="0" />
+      </g>
+      <text
+         id="text11083"
+         y="117.3506"
+         x="79.482109"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:0.26458332px"
+           y="117.3506"
+           x="79.482109"
+           id="tspan11081"
+           sodipodi:role="line">Alarms</tspan></text>
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker11104)"
+       d="m 60.242919,233.50034 0.313125,-15.52858"
+       id="path11094"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g11092"
+       inkscape:connection-end="#g4501" />
+    <g
+       id="g11186"
+       transform="matrix(0.74755847,0,0,0.74755847,65.48108,179.96663)">
+      <path
+         style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-opacity:1"
+         id="path11178"
+         sodipodi:type="arc"
+         sodipodi:cx="64.946495"
+         sodipodi:cy="78.373528"
+         sodipodi:rx="13.630746"
+         sodipodi:ry="13.630746"
+         sodipodi:start="4.1169719"
+         sodipodi:end="4.1081211"
+         d="M 57.301635,67.088433 A 13.630746,13.630746 0 0 1 76.214646,70.703716 13.630746,13.630746 0 0 1 72.641221,89.62468 13.630746,13.630746 0 0 1 53.712396,86.09313 13.630746,13.630746 0 0 1 57.202054,67.156538"
+         sodipodi:open="true" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:125%;font-family:Sans;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="55.569374"
+         y="76.011215"
+         id="text11184"><tspan
+           sodipodi:role="line"
+           x="55.569374"
+           y="76.011215"
+           style="stroke-width:0.26458332px"
+           id="tspan11180">curtain</tspan><tspan
+           id="tspan11182"
+           sodipodi:role="line"
+           x="55.569374"
+           y="80.641426"
+           style="stroke-width:0.26458332px">control</tspan></text>
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker11198)"
+       d="m 69.152178,213.08199 36.018512,20.44362"
+       id="path11188"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g4501"
+       inkscape:connection-end="#g11186" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="127.189"
+       y="184.3631"
+       id="text11274"><tspan
+         sodipodi:role="line"
+         id="tspan11272"
+         x="127.189"
+         y="184.3631"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px">PWM intervals</tspan></text>
+    <g
+       transform="translate(-3.807578,183.94471)"
+       id="g11284">
+      <rect
+         y="51.148026"
+         x="16.606707"
+         height="10.618791"
+         width="15.84151"
+         id="rect11276"
+         style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.33699012;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <text
+         id="text11282"
+         y="55.472122"
+         x="24.524706"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           id="tspan11280"
+           style="stroke-width:0.26458332px"
+           y="55.472122"
+           x="24.973946"
+           sodipodi:role="line">user </tspan><tspan
+           style="stroke-width:0.26458332px"
+           y="58.999901"
+           x="24.524706"
+           sodipodi:role="line"
+           id="tspan11288">interface</tspan></text>
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker11300)"
+       d="m 28.640638,240.45794 24.842992,0.17504"
+       id="path11290"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g11284"
+       inkscape:connection-end="#g11092" />
+    <g
+       transform="matrix(0.74755847,0,0,0.74755847,19.556973,215.4208)"
+       id="g11388">
+      <path
+         sodipodi:open="true"
+         d="M 57.301635,67.088433 A 13.630746,13.630746 0 0 1 76.214646,70.703716 13.630746,13.630746 0 0 1 72.641221,89.62468 13.630746,13.630746 0 0 1 53.712396,86.09313 13.630746,13.630746 0 0 1 57.202054,67.156538"
+         sodipodi:end="4.1081211"
+         sodipodi:start="4.1169719"
+         sodipodi:ry="13.630746"
+         sodipodi:rx="13.630746"
+         sodipodi:cy="78.373528"
+         sodipodi:cx="64.946495"
+         sodipodi:type="arc"
+         id="path11380"
+         style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-opacity:1" />
+      <text
+         id="text11386"
+         y="76.011215"
+         x="55.569374"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:125%;font-family:Sans;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:0.26458332px"
+           y="76.011215"
+           x="55.569374"
+           sodipodi:role="line"
+           id="tspan11384">manual</tspan><tspan
+           style="stroke-width:0.26458332px"
+           y="80.641426"
+           x="55.569374"
+           sodipodi:role="line"
+           id="tspan11392">override</tspan></text>
+    </g>
+    <g
+       id="g11402"
+       transform="translate(-4.1855542,210.21405)">
+      <rect
+         style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.33699012;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect11394"
+         width="15.84151"
+         height="10.618791"
+         x="16.606707"
+         y="51.148026" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="24.524706"
+         y="55.472122"
+         id="text11400"><tspan
+           id="tspan11398"
+           sodipodi:role="line"
+           x="24.524706"
+           y="55.472122"
+           style="stroke-width:0.26458332px">switches</tspan></text>
+    </g>
+    <g
+       transform="translate(-4.1855542,228.92387)"
+       id="g11412">
+      <rect
+         y="51.148026"
+         x="16.606707"
+         height="10.618791"
+         width="15.84151"
+         id="rect11404"
+         style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.33699012;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <text
+         id="text11410"
+         y="55.472122"
+         x="24.524706"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           style="stroke-width:0.26458332px"
+           y="55.472122"
+           x="24.524706"
+           sodipodi:role="line"
+           id="tspan11408">online</tspan><tspan
+           style="stroke-width:0.26458332px"
+           y="58.999901"
+           x="24.524706"
+           sodipodi:role="line"
+           id="tspan11416">message</tspan></text>
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker11430)"
+       d="m 28.262662,267.88829 29.774179,4.57405"
+       id="path11420"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g11402"
+       inkscape:connection-end="#g11388" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker11528)"
+       d="m 28.262662,283.4956 29.932911,-7.12611"
+       id="path11518"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g11412"
+       inkscape:connection-end="#g11388" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker11630)"
+       d="m 72.01443,264.59842 28.66236,-69.057"
+       id="path11620"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g11388"
+       inkscape:connection-end="#g4525" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker11738)"
+       d="m 76.174,267.78271 29.79274,-23.00048"
+       id="path11728"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g11388"
+       inkscape:connection-end="#g11186" />
+    <g
+       transform="translate(157.39927,129.89411)"
+       id="g11850">
+      <rect
+         y="51.148026"
+         x="16.606707"
+         height="10.618791"
+         width="15.84151"
+         id="rect11842"
+         style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.33699012;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <text
+         id="text11848"
+         y="55.472122"
+         x="24.524706"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         xml:space="preserve"><tspan
+           id="tspan11846"
+           style="stroke-width:0.26458332px"
+           y="55.472122"
+           x="24.524706"
+           sodipodi:role="line">LEDs</tspan></text>
+    </g>
+    <g
+       id="g11860"
+       transform="translate(154.75344,182.33492)">
+      <rect
+         style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.33699012;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect11852"
+         width="15.84151"
+         height="10.618791"
+         x="16.606707"
+         y="51.148026" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="24.524706"
+         y="55.472122"
+         id="text11858"><tspan
+           sodipodi:role="line"
+           x="24.524706"
+           y="55.472122"
+           style="stroke-width:0.26458332px"
+           id="tspan11856">motor</tspan></text>
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker11876)"
+       d="m 162.07644,186.20648 11.92954,0.0872"
+       id="path11866"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g4539"
+       inkscape:connection-end="#g11850" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker11996)"
+       d="m 124.22205,238.5924 47.1381,0.17117"
+       id="path11986"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g11186"
+       inkscape:connection-end="#g11860" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker12266)"
+       d="m 24.176267,208.84663 26.915177,-0.39235"
+       id="path12256"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g12120"
+       inkscape:connection-end="#g4501" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="137.05417"
+       y="236.41042"
+       id="text12390"><tspan
+         sodipodi:role="line"
+         id="tspan12388"
+         x="137.05417"
+         y="236.41042"
+         style="stroke-width:0.26458332px">open-close</tspan></text>
+  </g>
+</svg>
diff --git a/doc/design.xml b/doc/design.xml
new file mode 100644 (file)
index 0000000..0426b40
--- /dev/null
@@ -0,0 +1,359 @@
+<?xml version="1.0"?>
+
+<doc style="style.css">
+
+  <book>
+  <titlepage>
+      <title>Bedroom light control</title>
+   </titlepage>
+
+    <chapter>
+    <heading>Requirements</heading>
+    <section>
+    <heading>Top level requirements</heading>
+
+<description>
+  <item tag='REQ1.01'>
+    Wake up lights fade in to specified color or slightly open curtains.
+  </item>
+
+  <item tag='REQ1.02'>
+    wake up light starts at preset alarm time
+  </item>
+
+  <item tag='REQ1.03'>
+    if outside light open curtain else fade to light level
+  </item>
+
+  <item tag='REQ1.04'>
+    open curtain and fade out light at sunrise
+  </item>
+
+  <item tag='REQ1.05'>
+    input from sunrise calculation and outside light sensor
+  </item>
+
+  <item tag='REQ1.06'>
+    user interface for alarm times
+  </item>
+
+  <item tag='REQ1.07'>
+    user interface for wake up light level, sleep light level, walk-in light level and fade times
+  </item>
+
+  <item tag='REQ1.08'>
+    light on at walking in and no outside light
+  </item>
+
+  <item tag='REQ1.09'>
+    lights fade to dark at sleep time
+  </item>
+
+  <item tag='REQ1.10'>
+    lights fade on to specified color at movement in the night.
+  </item>
+
+  <item tag='REQ1.11'>
+    curtains fully open if outside light and after alarm
+  </item>
+
+  <item tag='REQ1.12'>
+    curtains close ar outside dark
+  </item>
+
+  <item tag='REQ1.13'>
+    wake up times can be specified with a recurrance pattern
+  </item>
+
+  <item tag='REQ1.14'>
+    recurrence patterns can be n days, weeks, months, years, weekday, weekendday
+  </item>
+
+  <item tag='REQ1.15'>
+    wake up times can be optained from a online calander
+  </item>
+</description>
+
+    </section>
+    <section>
+    <heading>Manual controls</heading>
+
+<description>
+  <item tag='REQ2.01'>
+    manual controls override automatic controls
+  </item>
+
+  <item tag='REQ2.02'>
+    manual control for light levels
+  </item>
+
+  <item tag='REQ2.03'>
+    manual control for light on and off
+  </item>
+
+  <item tag='REQ2.04'>
+    manual control for curtains open and close
+  </item>
+
+  <item tag='REQ2.05'>
+    manual control from switches
+  </item>
+
+  <item tag='REQ2.06'>
+    manual control from remote, online
+  </item>
+</description>
+
+    </section>
+
+    <section>
+    <heading>Security requirements</heading>
+
+<description>
+  <item tag='REQ3.01'>
+    Accessible by authorized persons and devices only
+  </item>
+
+  <item tag='REQ3.02'>
+    All remote inputs are logged.
+  </item>
+</description>
+
+    </section>
+    <section>
+    <heading>Testability requirements</heading>
+
+<description>
+  <item tag='REQ4.01'>
+    Time is obtained from actual time or simulated time
+  </item>
+
+  <item tag='REQ4.02'>
+    A simulated time base is used for testing
+  </item>
+</description>
+
+    </section>
+    </chapter>
+
+    <chapter>
+    <heading>Test scenarios</heading>
+
+<itemize>
+  <item>
+    Wake up sequence when dark outside followed by sunrise
+    <enumerate>
+    <item>Set the date to dec 21, 23:00.</item>
+    <item>Set a wakeup event at dec 22, 06:00</item>
+    </enumerate>
+  </item>
+  <item>
+    wake up sequence when light outside
+  </item>
+  <item>
+    wake up with a single alarm event
+  </item>
+  <item>
+    wake up with recurring alarm events
+  </item>
+  <item>
+    sleep time fade out
+  </item>
+  <item>
+    walk in when dark
+  </item>
+  <item>
+    walk in when light
+  </item>
+  <item>
+    curtains close at dusk
+  </item>
+</itemize>
+
+    </chapter>
+
+    <chapter>
+    <heading>Interfaces</heading>
+
+<para>
+    inputs:
+
+<itemize>
+  <item>
+    alarm time for wake up
+  </item>
+  <item>
+    calculated sunrise and sunset time
+  </item>
+  <item>
+    outside light level
+  </item>
+  <item>
+    manual switches
+  </item>
+  <item>
+    remote control inputs
+  </item>
+  <item>
+    pir sensor
+  </item>
+</itemize>
+</para>
+
+<para>
+    outputs:
+
+<itemize>
+  <item>
+    light levels
+  </item>
+  <item>
+    curtain open and close
+  </item>
+</itemize>
+</para>
+
+    </chapter>
+
+    <chapter>
+    <heading>Modules</heading>
+<para>
+The dataflow diagram shows the high level design.
+</para>
+<svg src='dataflow.svg'/>
+    <section>
+    <heading>PWM generator</heading>
+<para>
+The PWM generator is controlled by a list of <emph>pwm</emph> structures:
+<verbatim>
+
+    struct pwm
+    {
+       int interval;
+       int output;
+    };
+
+</verbatim>
+Each structure holds an interval in microseconds and an output that is to be switched off after
+that interval of time has passed.
+An interval defines the width of the pulse of the PWM output signal relative to the previous interval in the list.
+The pulse width of a specifc output is the addition of all intervals up to and including the interval for that output.
+The last entry in the list has an output of -1, which deniotes the end of the list.
+After that final interval has passed, all outputs are switched ON and the PWM generator returns to the first entry in the list.
+</para>
+<svg src='pwm-algorithm.svg'/>
+<para>
+This allows the PWM genrator run run with a minimum of calculations.
+The algorithm of the PWM generator is shown in the figure below:
+</para>
+<svg src='pwm-psd.svg'/>
+<para>
+The list of PWM signal intervals and associated outputs are store in shared memory.
+The content of this shared memroy is written by <emph>lightcontrol</emph>.
+The PWM generator reads the list continuously to generate the output signals.
+</para>
+    </section>
+
+    <section>
+    <heading>lightcontrol</heading>
+<para>
+The program <emph>lightcontrol</emph> is used to control the levels of the red, green, blue and white LEDs.
+The levels specified on the command line are converted into PWM signals and passed to the PWM generator.
+The PWM generator uses a list of incremental intervals, as described in the previous section.
+These intervals are calculated by <emph>lightcontrol</emph> and stored in the shared memory interface
+for the PWM generator.
+The algorithm is shown is the figure below:
+</para>
+<svg src='light_to_pwm.svg'/>
+<para>
+The following figure shows the algorithm to fade the lights:
+</para>
+<svg src='lightfade.svg'/>
+    <subsection>
+    <heading>Command line interface</heading>
+<para>
+Command line options specify the operation of the LEDs:
+<verbatim>
+
+   lightcontrol [-l] [-V] [-r red] [-g green] [-b blue] [-w white] [-f fadetime]
+
+</verbatim>
+Not all levels need to be specified. If the desired level for a LED is not specified, it will not be changed.
+For example if only the option "-r 50" is given,
+the red LED will light at 50% but the green, blue and white levels will be unchanged.
+<description>
+  <item tag="-r red">
+    Set the level of the red LED. The level is an integer number between 0 and 100, 0 meaning fully off and 100 meaning fully on.
+  </item>
+  <item tag="-g green">
+    Set the level of the green LED. The level is an integer number between 0 and 100, 0 meaning fully off and 100 meaning fully on.
+  </item>
+  <item tag="-b blue">
+    Set the level of the blue LED. The level is an integer number between 0 and 100, 0 meaning fully off and 100 meaning fully on.
+  </item>
+  <item tag="-w white">
+    Set the level of the white LED. The level is an integer number between 0 and 100, 0 meaning fully off and 100 meaning fully on.
+  </item>
+  <item tag="-f fadetime">
+    Do not set the levels of the LEDs immediately but fade from the current levels to the desired levels
+    in <emph>fadetime</emph> seconds.
+    The default fade time is 0, which will immeditely change the light levels.
+  </item>
+  <item tag="-l">
+    List the current light levels.
+    The current levels are printed to standard output on a single line of 4 numbers.
+    The numbers are the current levels in the order red, green, blue and white.
+  </item>
+  <item tag="-V">
+    Print the version of the program and exit.
+  </item>
+</description>
+
+<remark>TODO:</remark> Option -p to set the PWM period, default 10000 microseconds.
+</para>
+    </subsection>
+    <subsection>
+    <heading>Execution interface</heading>
+<para>
+Create a run file when fading lights to the desired level.
+The run file holds the process id and the Tachyon name.
+A fade can be interrupted by a signal. This allows another lightcontrol process to override a running fade.
+The Tachyon name can be used to control the time base used by the fade process.
+This is mainly used for test purpooses.
+The run file is removed on exit.
+</para>
+    </subsection>
+
+    </section>
+    <section>
+    <heading>Wakeup</heading>
+
+<para>
+The primary function of the wakeup process is to gradually increase the light at wakeup time in the morning.
+Either by fading in the lights to a specified level or by (slightly) opening the curtains.
+Controlling the curtains is the secondary function of wakeup.
+This means fully opening the curtains in the morning and closing the curtains in the evening,
+depending on the times of sunrise and sunset.
+</para>
+
+<para>
+The wakeup times are specified like calendar events, possibly with a recurrence pattern and an end date.
+Elements in a wakeup event are:
+<itemize>
+   <item> Label</item>
+   <item> Light parameters</item>
+   <item> Start time</item>
+   <item> Recurrence pattern</item>
+   <item> Number of recurrences</item>
+   <item> End time</item>
+</itemize>
+A recurrence pattern can be specified with a number of days, weeks or months as well as a set of weekdays.
+A set of weekdays implies the recurrence will be weekly.
+</para>
+
+    </section>
+    </chapter>
+
+  </book>
+
+</doc>
diff --git a/doc/light_to_pwm.svg b/doc/light_to_pwm.svg
new file mode 100644 (file)
index 0000000..cbbec2c
--- /dev/null
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   grid="grid"
+   width="600"
+   height="270"
+   version="1.1"
+   id="svg5192"
+   sodipodi:docname="light_to_pwm.svg"
+   inkscape:version="0.92.1 r15371">
+  <metadata
+     id="metadata5198">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Whiteboard document - Compatible with Firefox</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs5196" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1661"
+     inkscape:window-height="1085"
+     id="namedview5194"
+     showgrid="false"
+     inkscape:zoom="0.86915208"
+     inkscape:cx="578.13238"
+     inkscape:cy="473.01582"
+     inkscape:window-x="132"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg5192"
+     units="px"
+     inkscape:showpageshadow="true"
+     borderlayer="false" />
+  <title
+     id="title5154">Whiteboard document - Compatible with Firefox</title>
+  <text
+     x="450.69714"
+     y="-282.63391"
+     font-size="25"
+     id="text5156"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000" />
+  <text
+     x="135.59706"
+     y="165.17169"
+     font-size="25"
+     id="text5160"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000">
+    <tspan
+       x="135.59706"
+       id="tspan5158"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">interval = pulse_time - previous pulse timel</tspan>
+  </text>
+  <text
+     xml:space="preserve"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     x="49.552261"
+     y="85.217041"
+     id="text5223"><tspan
+       sodipodi:role="line"
+       id="tspan5221"
+       x="49.552261"
+       y="85.217041">sort lights on levels</tspan></text>
+  <rect
+     style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.40166959;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="rect5225"
+     width="461.61838"
+     height="47.685379"
+     x="30.158125"
+     y="191.39221" />
+  <rect
+     style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.62210613;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="rect5227"
+     width="461.4108"
+     height="129.21082"
+     x="30.365675"
+     y="62.181519" />
+  <rect
+     style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.48276728;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="rect5229"
+     width="403.30695"
+     height="50.743176"
+     x="88.513657"
+     y="140.69324" />
+  <text
+     xml:space="preserve"
+     style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:18.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     x="232.0981"
+     y="25.858032"
+     id="text8672"><tspan
+       sodipodi:role="line"
+       id="tspan8670"
+       x="232.0981"
+       y="25.858032">light_to_pwm</tspan></text>
+  <rect
+     style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.9909606;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect8674"
+     width="461.46384"
+     height="40.182091"
+     x="30.339155"
+     y="62.155029" />
+  <text
+     xml:space="preserve"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     x="84.843857"
+     y="125.92584"
+     id="text8678"><tspan
+       sodipodi:role="line"
+       id="tspan8676"
+       x="84.843857"
+       y="125.92584">each output</tspan></text>
+  <text
+     xml:space="preserve"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     x="183.18077"
+     y="207.3324"
+     id="text8682"><tspan
+       sodipodi:role="line"
+       x="183.18077"
+       y="207.3324"
+       id="tspan8684">last interval = period - previous pulse time</tspan><tspan
+       sodipodi:role="line"
+       x="183.18077"
+       y="223.99907"
+       id="tspan8688">output = -1</tspan></text>
+</svg>
diff --git a/doc/lightfade.svg b/doc/lightfade.svg
new file mode 100644 (file)
index 0000000..59f9f63
--- /dev/null
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   grid="grid"
+   width="140mm"
+   height="140mm"
+   version="1.1"
+   id="svg5192"
+   sodipodi:docname="lightfade.svg"
+   inkscape:version="0.92.1 r15371">
+  <metadata
+     id="metadata5198">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Whiteboard document - Compatible with Firefox</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs5196" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1661"
+     inkscape:window-height="1085"
+     id="namedview5194"
+     showgrid="false"
+     inkscape:zoom="0.86915211"
+     inkscape:cx="390.11944"
+     inkscape:cy="419.02624"
+     inkscape:window-x="132"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg5192"
+     units="mm"
+     inkscape:showpageshadow="true"
+     borderlayer="false" />
+  <title
+     id="title5154">Whiteboard document - Compatible with Firefox</title>
+  <text
+     x="192.9747"
+     y="43.231564"
+     font-size="25"
+     id="text5156"
+     style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:18.66666603px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000">lightfade</text>
+  <text
+     x="130.6579"
+     y="155.11143"
+     font-size="25"
+     id="text5160"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000">
+    <tspan
+       x="130.6579"
+       dy="0"
+       id="tspan5158"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">diff = end_level - start_level</tspan>
+  </text>
+  <text
+     x="49.029686"
+     y="226.18056"
+     font-size="25"
+     id="text5164"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.38646126px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke-width:1.00398469"
+     transform="scale(1.0039846,0.99603121)">
+    <tspan
+       x="49.029686"
+       id="tspan5162"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.38646126px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:1.00398469">step_time= fade_time / max_diff</tspan>
+  </text>
+  <text
+     x="47.26046"
+     y="205.92908"
+     font-size="25"
+     id="text5176"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.38646126px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;stroke-width:1.00398469"
+     transform="scale(1.0039846,0.99603121)">
+    <tspan
+       x="47.26046"
+       dy="0"
+       id="tspan5174"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.38646126px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:1.00398469">max_diff = max of abs diff for each output</tspan>
+  </text>
+  <text
+     x="84.830177"
+     y="411.95544"
+     font-size="25"
+     id="text5180"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000">
+    <tspan
+       x="84.830177"
+       dy="0"
+       id="tspan5178"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">levels = start_levels + diff * time / fade_time</tspan>
+  </text>
+  <text
+     x="84.870766"
+     y="359.80261"
+     font-size="25"
+     id="text5184"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000">
+    <tspan
+       x="84.870766"
+       dy="0"
+       id="tspan5182"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">sleep step_time</tspan>
+  </text>
+  <text
+     x="37.64069"
+     y="309.03503"
+     font-size="25"
+     id="text5188"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000">
+    <tspan
+       x="37.64069"
+       dy="0"
+       id="tspan5186"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">time &lt; fade_time</tspan>
+  </text>
+  <rect
+     style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.32940772;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="rect5200"
+     width="461.46384"
+     height="180.15846"
+     x="24.586432"
+     y="271.19455" />
+  <rect
+     style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.29840606;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="rect5202"
+     width="421.12665"
+     height="124.08832"
+     x="64.935371"
+     y="327.27637" />
+  <text
+     xml:space="preserve"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     x="93.006355"
+     y="436.59167"
+     id="text5219"><tspan
+       sodipodi:role="line"
+       id="tspan5217"
+       x="93.006355"
+       y="436.59167">set PWM output to levels</tspan></text>
+  <text
+     xml:space="preserve"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     x="51.121555"
+     y="114.20763"
+     id="text5223"><tspan
+       sodipodi:role="line"
+       id="tspan5221"
+       x="51.121555"
+       y="114.20763">each output</tspan></text>
+  <rect
+     style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.55619425;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="rect5225"
+     width="461.46387"
+     height="91.463058"
+     x="24.586432"
+     y="179.73149" />
+  <rect
+     style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.56908292;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="rect5227"
+     width="461.46381"
+     height="108.1113"
+     x="24.586432"
+     y="71.620171" />
+  <rect
+     style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.47886375;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="rect5229"
+     width="403.42944"
+     height="49.910736"
+     x="82.757362"
+     y="129.81584" />
+  <text
+     xml:space="preserve"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.38646126px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00398469px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     x="46.991295"
+     y="253.66646"
+     id="text5233"
+     transform="scale(1.0039846,0.99603121)"><tspan
+       sodipodi:role="line"
+       id="tspan5231"
+       x="46.991295"
+       y="253.66646"
+       style="stroke-width:1.00398469px">time = 0</tspan></text>
+  <text
+     xml:space="preserve"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     x="86.267677"
+     y="385.47223"
+     id="text5237"><tspan
+       sodipodi:role="line"
+       id="tspan5235"
+       x="86.267677"
+       y="385.47223">time += step_time</tspan></text>
+  <text
+     id="text5241"
+     y="479.24805"
+     x="74.456093"
+     style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     xml:space="preserve"><tspan
+       y="479.24805"
+       x="74.456093"
+       id="tspan5239"
+       sodipodi:role="line">set PWM output to end_levels </tspan></text>
+  <rect
+     style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.53456348;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="rect5243"
+     width="461.45316"
+     height="48.681339"
+     x="24.586432"
+     y="451.35303" />
+</svg>
diff --git a/doc/pwm-algorithm.svg b/doc/pwm-algorithm.svg
new file mode 100644 (file)
index 0000000..06b2a4f
--- /dev/null
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="110mm"
+   height="85mm"
+   viewBox="0 0 110 85"
+   version="1.1"
+   id="svg5463"
+   inkscape:version="0.92.1 r15371"
+   sodipodi:docname="pwm-algorithm.svg">
+  <defs
+     id="defs5457">
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker6957"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path6955"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker6851"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path6849"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker6797"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend"
+       inkscape:collect="always">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path6795"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker6749"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path6747"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker6707"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path6705"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mend"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path6072"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="311.70302"
+     inkscape:cy="446.51312"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1163"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     showguides="false"
+     inkscape:measure-start="80,120"
+     inkscape:measure-end="367.857,121.429">
+    <inkscape:grid
+       type="xygrid"
+       id="grid6010" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5460">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-212)">
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.52916663;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 25.135417,222.91667 V 265.25"
+       id="path6053"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.52916663;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 21.166666,222.91667 V 265.25"
+       id="path6020"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path6026"
+       d="M 47.625,222.91667 V 265.25"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.52916663;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.52916663;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 70.114583,222.91667 V 265.25"
+       id="path6028"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path6030"
+       d="M 85.989583,222.91667 V 265.25"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.52916663;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.26458332, 0.52916663;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 92.604167,222.91667 V 265.25"
+       id="path6032"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 11.90625,222.91667 h 9.260417 v -7.9375 h 3.96875 v 7.9375 h 67.46875 v -7.9375 H 95.25"
+       id="path6008"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccc" />
+    <path
+       sodipodi:nodetypes="cccccccc"
+       inkscape:connector-curvature="0"
+       id="path6012"
+       d="m 11.90625,234.82292 h 9.260417 v -7.9375 h 64.822916 v 7.9375 h 6.614584 v -7.9375 H 95.25"
+       style="fill:none;fill-rule:evenodd;stroke:#00ff00;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 11.90625,246.72917 h 9.260417 v -7.9375 H 47.625 v 7.9375 h 44.979167 v -7.9375 H 95.25"
+       id="path6014"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccc" />
+    <path
+       sodipodi:nodetypes="cccccccc"
+       inkscape:connector-curvature="0"
+       id="path6016"
+       d="m 11.90625,259.95833 h 9.260417 v -7.9375 h 48.947916 v 7.9375 h 22.489584 v -7.9375 H 95.25"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+       d="M 9.2604166,265.25 H 104.51042"
+       id="path6018"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="7.6702304"
+       y="264.86255"
+       id="text6024"><tspan
+         sodipodi:role="line"
+         id="tspan6022"
+         x="7.6702304"
+         y="264.86255"
+         style="stroke-width:0.26458332px">t</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="11.244792"
+       y="279.99106"
+       id="text6057"><tspan
+         sodipodi:role="line"
+         id="tspan6055"
+         x="11.244792"
+         y="279.99106"
+         style="stroke-width:0.26458332px">interval:</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="11.055803"
+       y="285.84967"
+       id="text6061"><tspan
+         sodipodi:role="line"
+         id="tspan6059"
+         x="11.055803"
+         y="285.84967"
+         style="stroke-width:0.26458332px">otuput:</tspan></text>
+    <rect
+       style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6345"
+       width="12.662203"
+       height="4.9136906"
+       x="22.017113"
+       y="276.4003" />
+    <rect
+       y="276.4003"
+       x="34.679317"
+       height="4.9136906"
+       width="12.662203"
+       id="rect6347"
+       style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6349"
+       width="12.662203"
+       height="4.9136906"
+       x="47.341518"
+       y="276.4003" />
+    <rect
+       y="276.4003"
+       x="60.003719"
+       height="4.9136906"
+       width="12.662203"
+       id="rect6351"
+       style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6353"
+       width="12.662203"
+       height="4.9136906"
+       x="72.665916"
+       y="276.4003" />
+    <rect
+       y="281.314"
+       x="22.017113"
+       height="4.9136906"
+       width="12.662203"
+       id="rect6355"
+       style="fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6357"
+       width="12.662203"
+       height="4.9136906"
+       x="34.679317"
+       y="281.314" />
+    <rect
+       y="281.314"
+       x="47.341518"
+       height="4.9136906"
+       width="12.662203"
+       id="rect6359"
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6361"
+       width="12.662203"
+       height="4.9136906"
+       x="60.003719"
+       y="281.314" />
+    <rect
+       y="281.314"
+       x="72.665916"
+       height="4.9136906"
+       width="12.662203"
+       id="rect6363"
+       style="fill:none;fill-opacity:0.1254902;stroke:#000000;stroke-width:0.26458332;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6707)"
+       d="M 41.293899,276.3058 36.758184,265.15549"
+       id="path6697"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6749)"
+       d="M 54.145089,276.3058 56.318451,265.25"
+       id="path6739"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6797)"
+       d="M 65.86235,276.3058 77.485117,265.15549"
+       id="path6787"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6851)"
+       d="M 78.997023,276.3058 89.202381,265.25"
+       id="path6841"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6957)"
+       d="M 28.820684,276.40028 23.056547,265.43899"
+       id="path6947"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/doc/pwm-psd.svg b/doc/pwm-psd.svg
new file mode 100644 (file)
index 0000000..544fe03
--- /dev/null
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="140mm"
+   height="80mm"
+   viewBox="0 0 140 80"
+   version="1.1"
+   id="svg4827"
+   inkscape:version="0.92.1 r15371"
+   sodipodi:docname="pwm-psd.svg">
+  <defs
+     id="defs4821" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="165.26655"
+     inkscape:cy="142.83648"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1163"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4824">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-217)">
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="31.183041"
+       y="253.53273"
+       id="text5374"><tspan
+         sodipodi:role="line"
+         id="tspan5372"
+         x="31.183041"
+         y="253.53273"
+         style="stroke-width:0.26458332px">sleep interval</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="67.846733"
+       y="236.7128"
+       id="text5378"><tspan
+         sodipodi:role="line"
+         id="tspan5376"
+         x="67.846733"
+         y="236.7128"
+         style="stroke-width:0.26458332px">interval != 0</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="68.980652"
+       y="266.19495"
+       id="text5382"><tspan
+         sodipodi:role="line"
+         id="tspan5380"
+         x="68.980652"
+         y="266.19495"
+         style="stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none">output == -1</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="29.860119"
+       y="279.23511"
+       id="text5386"><tspan
+         sodipodi:role="line"
+         id="tspan5384"
+         x="29.860119"
+         y="279.23511"
+         style="stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none">All outputs ON</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="33.072918"
+       y="285.09375"
+       id="text5390"><tspan
+         sodipodi:role="line"
+         id="tspan5388"
+         x="33.072918"
+         y="285.09375"
+         style="stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none">Back to first signal</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="82.587799"
+       y="280.18005"
+       id="text5394"><tspan
+         sodipodi:role="line"
+         id="tspan5392"
+         x="82.587799"
+         y="280.18005"
+         style="stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none">output OFF</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="82.587791"
+       y="286.79465"
+       id="text5398"><tspan
+         sodipodi:role="line"
+         id="tspan5396"
+         x="82.587791"
+         y="286.79465"
+         style="stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none">Next signal</tspan></text>
+    <rect
+       style="fill:none;fill-opacity:0.1254902;stroke:#000002;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5400"
+       width="114.18485"
+       height="30.085152"
+       x="12.266205"
+       y="260.3183" />
+    <rect
+       style="fill:none;fill-opacity:0.1254902;stroke:#000002;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5402"
+       width="57.452377"
+       height="16.630953"
+       x="12.284227"
+       y="273.75446"
+       ry="0" />
+    <rect
+       style="fill:none;fill-opacity:0.1254902;stroke:#000002;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5404"
+       width="56.576675"
+       height="16.700191"
+       x="69.701981"
+       y="273.71985" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 12.266203,260.31829 57.470401,13.43617 56.714446,-13.43617"
+       id="path5406"
+       inkscape:connector-curvature="0" />
+    <rect
+       y="230.23314"
+       x="12.266205"
+       height="30.085152"
+       width="114.18485"
+       id="rect5408"
+       style="fill:none;fill-opacity:0.1254902;stroke:#000002;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path5410"
+       d="m 12.266204,230.23314 57.4704,13.43617 56.714446,-13.43617"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       ry="0"
+       y="243.68733"
+       x="12.266205"
+       height="16.630953"
+       width="57.452377"
+       id="rect5412"
+       style="fill:none;fill-opacity:0.1254902;stroke:#000002;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="fill:none;fill-opacity:0.1254902;stroke:#000002;stroke-width:0.49671391;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5414"
+       width="56.699684"
+       height="16.630953"
+       x="69.751373"
+       y="243.68733"
+       ry="0" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333311px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="19.654762"
+       y="239.35863"
+       id="text5418"><tspan
+         sodipodi:role="line"
+         id="tspan5416"
+         x="19.654762"
+         y="239.35863"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333311px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px">T</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333311px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="118.30654"
+       y="238.79167"
+       id="text5422"><tspan
+         sodipodi:role="line"
+         id="tspan5420"
+         x="118.30654"
+         y="238.79167"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333311px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px">F</tspan></text>
+    <text
+       id="text5426"
+       y="269.9747"
+       x="18.898808"
+       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333311px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333311px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+         y="269.9747"
+         x="18.898808"
+         id="tspan5424"
+         sodipodi:role="line">T</tspan></text>
+    <text
+       id="text5430"
+       y="269.40775"
+       x="117.55059"
+       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333311px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333311px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+         y="269.40775"
+         x="117.55059"
+         id="tspan5428"
+         sodipodi:role="line">F</tspan></text>
+    <rect
+       y="223.78471"
+       x="7.1046462"
+       height="66.677612"
+       width="119.2163"
+       id="rect5432"
+       style="fill:none;fill-opacity:0.1254902;stroke:#000002;stroke-width:0.50070596;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <text
+       id="text5436"
+       y="228.20833"
+       x="13.985125"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         style="stroke-width:0.26458332px"
+         y="228.20833"
+         x="13.985125"
+         id="tspan5434"
+         sodipodi:role="line">TRUE</tspan></text>
+  </g>
+</svg>
diff --git a/doc/style.css b/doc/style.css
new file mode 100644 (file)
index 0000000..b012614
--- /dev/null
@@ -0,0 +1,41 @@
+h1
+{
+   color : blue;
+   font-family : sans-serif ;
+   font-size : 150%;
+}
+
+h2
+{
+   color : green;
+}
+
+h1.titlepage
+{
+   color : black;
+   font-family : sans-serif ;
+   font-size : 150%;
+   text-align : center ;
+}
+
+h2.titlepage
+{
+   color : black;
+   font-family : sans-serif ;
+   font-size : 120%;
+   text-align : center ;
+}
+
+span.remark
+{
+   font-size : 90%;
+   background : yellow ;
+   color : rgb(0, 0, 150);
+}
+
+dt
+{
+   font-weight : bold ;
+   top-margin  : 1ex;
+}
+
diff --git a/doc/wakeup-classes.svg b/doc/wakeup-classes.svg
new file mode 100644 (file)
index 0000000..ee1ae88
--- /dev/null
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 210 297"
+   version="1.1"
+   id="svg4527"
+   inkscape:version="0.92.1 r15371"
+   sodipodi:docname="wakeup-classes.svg">
+  <defs
+     id="defs4521" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2"
+     inkscape:cx="286.177"
+     inkscape:cy="871.65698"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1163"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4524">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.265;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5072"
+       width="42.068748"
+       height="55.033333"
+       x="59.266666"
+       y="25.537498" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26583725;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5074"
+       width="42.068752"
+       height="7.6729164"
+       x="59.266666"
+       y="25.537498" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="68.262497"
+       y="29.770834"
+       id="text5078"><tspan
+         sodipodi:role="line"
+         id="tspan5076"
+         x="68.262497"
+         y="29.770834"
+         style="stroke-width:0.26458332px">Event</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="60.491741"
+       y="37.443748"
+       id="text5082"><tspan
+         sodipodi:role="line"
+         id="tspan5080"
+         x="60.491741"
+         y="37.443748"
+         style="text-align:start;text-anchor:start;stroke-width:0.26458332px">label</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="65.219788"
+       y="41.941666"
+       id="text5086"><tspan
+         sodipodi:role="line"
+         id="tspan5084"
+         x="65.219788"
+         y="41.941666"
+         style="stroke-width:0.26458332px">lights</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="69.188538"
+       y="46.836456"
+       id="text5090"><tspan
+         sodipodi:role="line"
+         id="tspan5088"
+         x="69.188538"
+         y="46.836456"
+         style="stroke-width:0.26458332px">start_time</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="69.585411"
+       y="51.06979"
+       id="text5094"><tspan
+         sodipodi:role="line"
+         id="tspan5092"
+         x="69.585411"
+         y="51.06979"
+         style="stroke-width:0.26458332px">recurrence</tspan></text>
+    <rect
+       y="25.802082"
+       x="113.77084"
+       height="55.033333"
+       width="42.068748"
+       id="rect5096"
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       y="25.802082"
+       x="113.77084"
+       height="7.6729164"
+       width="42.068752"
+       id="rect5098"
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26583725;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <text
+       id="text5102"
+       y="30.564585"
+       x="131.6302"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         style="stroke-width:0.26458332px"
+         y="30.564585"
+         x="131.6302"
+         id="tspan5100"
+         sodipodi:role="line">Lightsequence</tspan></text>
+    <text
+       id="text5106"
+       y="37.708332"
+       x="114.99591"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         style="text-align:start;text-anchor:start;stroke-width:0.26458332px"
+         y="37.708332"
+         x="114.99591"
+         id="tspan5104"
+         sodipodi:role="line">lightlevel</tspan></text>
+    <text
+       id="text5110"
+       y="42.470833"
+       x="123.03124"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       xml:space="preserve"><tspan
+         style="stroke-width:0.26458332px"
+         y="42.470833"
+         x="123.03124"
+         id="tspan5108"
+         sodipodi:role="line">fadetime</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5120"
+       width="42.068748"
+       height="55.033333"
+       x="60.060429"
+       y="91.286461" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26583725;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5122"
+       width="42.068752"
+       height="7.6729164"
+       x="60.060429"
+       y="91.286461" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="79.63958"
+       y="96.048958"
+       id="text5126"><tspan
+         sodipodi:role="line"
+         id="tspan5124"
+         x="79.63958"
+         y="96.048958"
+         style="stroke-width:0.26458332px">Event_Recurrence</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="61.285496"
+       y="103.19271"
+       id="text5130"><tspan
+         sodipodi:role="line"
+         id="tspan5128"
+         x="61.285496"
+         y="103.19271"
+         style="text-align:start;text-anchor:start;stroke-width:0.26458332px">number</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="69.453117"
+       y="107.55833"
+       id="text5134"><tspan
+         sodipodi:role="line"
+         id="tspan5132"
+         x="69.453117"
+         y="107.55833"
+         style="stroke-width:0.26458332px">end_time</tspan></text>
+  </g>
+</svg>
diff --git a/doc/wakeup.svg b/doc/wakeup.svg
new file mode 100644 (file)
index 0000000..49e786f
--- /dev/null
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 210 297"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.1 r15371"
+   sodipodi:docname="wakeup.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="159.49246"
+     inkscape:cy="798.19494"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1628"
+     inkscape:window-height="1034"
+     inkscape:window-x="240"
+     inkscape:window-y="36"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="24.127533"
+       y="21.725883"
+       id="text4487"><tspan
+         sodipodi:role="line"
+         id="tspan4485"
+         x="24.127533"
+         y="21.725883"
+         style="stroke-width:0.26458332px">Read list of wakeup times</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="24.883488"
+       y="31.93124"
+       id="text4491"><tspan
+         sodipodi:role="line"
+         id="tspan4489"
+         x="24.883488"
+         y="31.93124"
+         style="stroke-width:0.26458332px">Each wakeup event</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4497"
+       width="134.9375"
+       height="9.8273811"
+       x="20.725746"
+       y="15.678267" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4499"
+       width="134.9375"
+       height="117.36161"
+       x="20.725746"
+       y="25.505646" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4501"
+       width="123.7872"
+       height="80.508926"
+       x="31.876045"
+       y="35.711006" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="58.901344"
+       y="41.947613"
+       id="text4505"><tspan
+         sodipodi:role="line"
+         id="tspan4503"
+         x="58.901344"
+         y="41.947613"
+         style="stroke-width:0.26458332px">In future</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 31.876045,35.711005 74.020384,47.995231 155.66324,35.711005"
+       id="path4507"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26596478;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4509"
+       width="42.144348"
+       height="68.224701"
+       x="31.876045"
+       y="47.995232"
+       ry="0" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4511"
+       width="81.642853"
+       height="68.224701"
+       x="74.020386"
+       y="47.995232" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="37.545685"
+       y="65.00415"
+       id="text4515"><tspan
+         sodipodi:role="line"
+         id="tspan4513"
+         x="37.545685"
+         y="65.00415"
+         style="stroke-width:0.26458332px">Add to event list</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="115.59777"
+       y="53.664879"
+       id="text4519"><tspan
+         sodipodi:role="line"
+         id="tspan4517"
+         x="115.59777"
+         y="53.664879"
+         style="stroke-width:0.26458332px">Recurrence</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 74.020394,47.99523 138.46533,59.334515 155.66324,47.99523"
+       id="path4521"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4523"
+       width="64.444946"
+       height="56.885414"
+       x="74.020378"
+       y="59.334518" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4525"
+       width="17.197912"
+       height="56.885414"
+       x="138.46533"
+       y="59.334518" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="75.343307"
+       y="64.059219"
+       id="text4529"><tspan
+         sodipodi:role="line"
+         id="tspan4527"
+         x="75.343307"
+         y="64.059219"
+         style="stroke-width:0.26458332px">event in past &amp;&amp; more recurrances</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.16948958;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4531"
+       width="57.547878"
+       height="19.372293"
+       x="80.965202"
+       y="68.736168" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="88.761467"
+       y="79.934219"
+       id="text4535"><tspan
+         sodipodi:role="line"
+         id="tspan4533"
+         x="88.761467"
+         y="79.934219"
+         style="stroke-width:0.26458332px">event += recurrence time</tspan></text>
+    <rect
+       y="59.334518"
+       x="74.020378"
+       height="28.773943"
+       width="64.492706"
+       id="rect4541"
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.21867181;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4543"
+       d="m 73.978944,88.108459 50.940146,11.33929 13.59399,-11.33929"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.23523295px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4545"
+       width="50.898701"
+       height="16.772182"
+       x="74.020386"
+       y="99.447746" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4547"
+       width="13.546234"
+       height="16.772186"
+       x="124.91909"
+       y="99.447746" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="103.31355"
+       y="91.840469"
+       id="text4551"><tspan
+         sodipodi:role="line"
+         id="tspan4549"
+         x="103.31355"
+         y="91.840469"
+         style="stroke-width:0.26458332px">recurs more</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="79.690041"
+       y="109.79434"
+       id="text4555"><tspan
+         sodipodi:role="line"
+         id="tspan4553"
+         x="79.690041"
+         y="109.79434"
+         style="stroke-width:0.26458332px">Add event to list</tspan></text>
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4557"
+       width="134.9375"
+       height="12.662204"
+       x="20.725746"
+       y="116.21993" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="24.316525"
+       y="123.77945"
+       id="text4561"><tspan
+         sodipodi:role="line"
+         id="tspan4559"
+         x="24.316525"
+         y="123.77945"
+         style="stroke-width:0.26458332px">Find first event</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="23.938541"
+       y="134.1738"
+       id="text4565"><tspan
+         sodipodi:role="line"
+         id="tspan4563"
+         x="23.938541"
+         y="134.1738"
+         style="stroke-width:0.26458332px">Sleep until first event</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="23.938553"
+       y="140.03242"
+       id="text4569"><tspan
+         sodipodi:role="line"
+         id="tspan4567"
+         x="23.938553"
+         y="140.03242"
+         style="stroke-width:0.26458332px">Fade lights to desired level or open curtains</tspan></text>
+  </g>
+</svg>
diff --git a/hardware/footprints/BRIDGE_5401.fp b/hardware/footprints/BRIDGE_5401.fp
new file mode 100644 (file)
index 0000000..2831df1
--- /dev/null
@@ -0,0 +1,13 @@
+
+Element["" "" "" "" 3000.00mil 3000.00mil 0.0000 0.0000 0 100 ""]
+(
+       Pin[-1100.00mil -300.00mil 140.00mil 40.00mil 146.00mil 50.00mil "" "1" "edge2"]
+       Pin[-700.00mil -300.00mil 140.00mil 40.00mil 146.00mil 50.00mil "" "2" "edge2"]
+       Pin[-300.00mil -300.00mil 140.00mil 40.00mil 146.00mil 50.00mil "" "3" "edge2"]
+       Pin[-1500.00mil -300.00mil 140.00mil 40.00mil 146.00mil 50.00mil "" "4" "edge2"]
+       ElementLine [-1600.00mil -500.00mil -200.00mil -500.00mil 50.00mil]
+       ElementLine [-200.00mil -500.00mil -200.00mil -100.00mil 50.00mil]
+       ElementLine [-200.00mil -100.00mil -1600.00mil -100.00mil 50.00mil]
+       ElementLine [-1600.00mil -100.00mil -1600.00mil -500.00mil 50.00mil]
+
+       )
diff --git a/hardware/footprints/RJ45.fp b/hardware/footprints/RJ45.fp
new file mode 100644 (file)
index 0000000..4ee1eea
--- /dev/null
@@ -0,0 +1,19 @@
+
+Element["" "" "" "" 3600.00mil 2150.00mil 0.0000 0.0000 0 100 ""]
+(
+       Pin[-150.00mil 250.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "1" ""]
+       Pin[-100.00mil 150.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "2" ""]
+       Pin[-50.00mil 250.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "3" ""]
+       Pin[0.0000 150.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "4" ""]
+       Pin[50.00mil 250.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "5" ""]
+       Pin[100.00mil 150.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "6" ""]
+       Pin[150.00mil 250.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "7" ""]
+       Pin[200.00mil 150.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "8" ""]
+       Pin[-200.00mil -150.00mil 104.00mil 20.00mil 110.00mil 100.00mil "" "9" ""]
+       Pin[250.00mil -150.00mil 104.00mil 20.00mil 110.00mil 100.00mil "" "10" ""]
+       ElementLine [-300.00mil 350.00mil -300.00mil -350.00mil 10.00mil]
+       ElementLine [350.00mil 350.00mil -300.00mil 350.00mil 10.00mil]
+       ElementLine [-300.00mil -350.00mil 350.00mil -350.00mil 10.00mil]
+       ElementLine [350.00mil -350.00mil 350.00mil 350.00mil 10.00mil]
+
+       )
diff --git a/hardware/footprints/TSR.fp b/hardware/footprints/TSR.fp
new file mode 100644 (file)
index 0000000..cb2942e
--- /dev/null
@@ -0,0 +1,12 @@
+
+Element["" "" "U?" "" 3650.00mil 2550.00mil -250.00mil -150.00mil 0 100 ""]
+(
+       Pin[-300.00mil -250.00mil 50.00mil 20.00mil 56.00mil 20.00mil "" "1" "edge2"]
+       Pin[-200.00mil -250.00mil 50.00mil 20.00mil 56.00mil 20.00mil "" "2" "edge2"]
+       Pin[-100.00mil -250.00mil 50.00mil 20.00mil 56.00mil 20.00mil "" "3" "edge2"]
+       ElementLine [-450.00mil 0.0000 -450.00mil -350.00mil 10.00mil]
+       ElementLine [-450.00mil -350.00mil 50.00mil -350.00mil 10.00mil]
+       ElementLine [50.00mil -350.00mil 50.00mil 0.0000 10.00mil]
+       ElementLine [50.00mil 0.0000 -450.00mil 0.0000 10.00mil]
+
+       )
diff --git a/hardware/footprints/TSR_power b/hardware/footprints/TSR_power
new file mode 100644 (file)
index 0000000..1bca3ca
--- /dev/null
@@ -0,0 +1,838 @@
+# release: pcb 20140316
+
+# To read pcb files, the pcb version (or the git source date) must be >= the file version
+FileVersion[20091103]
+
+PCB["TSR_power" 6000.00mil 5000.00mil]
+
+Grid[5000.000000 0.0000 0.0000 1]
+PolyArea[3100.006200]
+Thermal[0.500000]
+DRC[10.00mil 10.00mil 10.00mil 10.00mil 15.00mil 10.00mil]
+Flags("nameonpcb,uniquename,clearnew,snappin")
+Groups("1,c:2:3:4:5:6,s:7:8")
+Styles["Signal,10.00mil,50.00mil,20.00mil,10.00mil:Power,25.00mil,60.00mil,35.00mil,10.00mil:Fat,40.00mil,60.00mil,35.00mil,10.00mil:Skinny,6.00mil,24.02mil,11.81mil,6.00mil"]
+
+Symbol[' ' 18.00mil]
+(
+)
+Symbol['!' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 35.00mil 8.00mil]
+)
+Symbol['"' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 20.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 10.00mil 20.00mil 8.00mil]
+)
+Symbol['#' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil]
+       SymbolLine[15.00mil 20.00mil 15.00mil 40.00mil 8.00mil]
+       SymbolLine[5.00mil 20.00mil 5.00mil 40.00mil 8.00mil]
+)
+Symbol['$' 12.00mil]
+(
+       SymbolLine[15.00mil 15.00mil 20.00mil 20.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 15.00mil 15.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 5.00mil 15.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[15.00mil 45.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['%' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil]
+       SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[10.00mil 25.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[5.00mil 25.00mil 10.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 40.00mil 10.00mil 8.00mil]
+       SymbolLine[35.00mil 50.00mil 40.00mil 45.00mil 8.00mil]
+       SymbolLine[40.00mil 40.00mil 40.00mil 45.00mil 8.00mil]
+       SymbolLine[35.00mil 35.00mil 40.00mil 40.00mil 8.00mil]
+       SymbolLine[30.00mil 35.00mil 35.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 40.00mil 30.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 40.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[25.00mil 45.00mil 30.00mil 50.00mil 8.00mil]
+       SymbolLine[30.00mil 50.00mil 35.00mil 50.00mil 8.00mil]
+)
+Symbol['&' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil]
+       SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+)
+Symbol[''' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 10.00mil 10.00mil 8.00mil]
+)
+Symbol['(' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+)
+Symbol[')' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil]
+)
+Symbol['*' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol['+' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol[',' 12.00mil]
+(
+       SymbolLine[0.0000 60.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['-' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['.' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['/' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 30.00mil 15.00mil 8.00mil]
+)
+Symbol['0' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil]
+)
+Symbol['1' 12.00mil]
+(
+       SymbolLine[0.0000 18.00mil 8.00mil 10.00mil 8.00mil]
+       SymbolLine[8.00mil 10.00mil 8.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 15.00mil 50.00mil 8.00mil]
+)
+Symbol['2' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['3' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 28.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 23.00mil 8.00mil]
+       SymbolLine[20.00mil 33.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 33.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[20.00mil 23.00mil 15.00mil 28.00mil 8.00mil]
+)
+Symbol['4' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['5' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 30.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 25.00mil 15.00mil 25.00mil 8.00mil]
+       SymbolLine[15.00mil 25.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['6' 12.00mil]
+(
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 28.00mil 20.00mil 33.00mil 8.00mil]
+       SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 33.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['7' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil]
+)
+Symbol['8' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 37.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 37.00mil 7.00mil 30.00mil 8.00mil]
+       SymbolLine[7.00mil 30.00mil 13.00mil 30.00mil 8.00mil]
+       SymbolLine[13.00mil 30.00mil 20.00mil 37.00mil 8.00mil]
+       SymbolLine[20.00mil 37.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 23.00mil 7.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 23.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 23.00mil 8.00mil]
+       SymbolLine[13.00mil 30.00mil 20.00mil 23.00mil 8.00mil]
+)
+Symbol['9' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol[':' 12.00mil]
+(
+       SymbolLine[0.0000 25.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol[';' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 10.00mil 40.00mil 8.00mil]
+       SymbolLine[10.00mil 25.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['<' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 10.00mil 20.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol['=' 12.00mil]
+(
+       SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['>' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['?' 12.00mil]
+(
+       SymbolLine[10.00mil 30.00mil 10.00mil 35.00mil 8.00mil]
+       SymbolLine[10.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 20.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 20.00mil 8.00mil]
+)
+Symbol['@' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 40.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 40.00mil 50.00mil 8.00mil]
+       SymbolLine[50.00mil 35.00mil 50.00mil 10.00mil 8.00mil]
+       SymbolLine[50.00mil 10.00mil 40.00mil 0.0000 8.00mil]
+       SymbolLine[40.00mil 0.0000 10.00mil 0.0000 8.00mil]
+       SymbolLine[10.00mil 0.0000 0.0000 10.00mil 8.00mil]
+       SymbolLine[15.00mil 20.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 30.00mil 35.00mil 8.00mil]
+       SymbolLine[30.00mil 35.00mil 35.00mil 30.00mil 8.00mil]
+       SymbolLine[35.00mil 30.00mil 40.00mil 35.00mil 8.00mil]
+       SymbolLine[35.00mil 30.00mil 35.00mil 15.00mil 8.00mil]
+       SymbolLine[35.00mil 20.00mil 30.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 30.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[40.00mil 35.00mil 50.00mil 35.00mil 8.00mil]
+)
+Symbol['A' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 7.00mil 10.00mil 8.00mil]
+       SymbolLine[7.00mil 10.00mil 18.00mil 10.00mil 8.00mil]
+       SymbolLine[18.00mil 10.00mil 25.00mil 20.00mil 8.00mil]
+       SymbolLine[25.00mil 20.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil]
+)
+Symbol['B' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[25.00mil 33.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 28.00mil 25.00mil 33.00mil 8.00mil]
+       SymbolLine[5.00mil 28.00mil 20.00mil 28.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 23.00mil 8.00mil]
+       SymbolLine[20.00mil 28.00mil 25.00mil 23.00mil 8.00mil]
+)
+Symbol['C' 12.00mil]
+(
+       SymbolLine[7.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 43.00mil 7.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 17.00mil 0.0000 43.00mil 8.00mil]
+       SymbolLine[0.0000 17.00mil 7.00mil 10.00mil 8.00mil]
+       SymbolLine[7.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['D' 12.00mil]
+(
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[18.00mil 10.00mil 25.00mil 17.00mil 8.00mil]
+       SymbolLine[25.00mil 17.00mil 25.00mil 43.00mil 8.00mil]
+       SymbolLine[18.00mil 50.00mil 25.00mil 43.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 18.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 18.00mil 10.00mil 8.00mil]
+)
+Symbol['E' 12.00mil]
+(
+       SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['F' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+)
+Symbol['G' 12.00mil]
+(
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['H' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil]
+)
+Symbol['I' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['J' 12.00mil]
+(
+       SymbolLine[7.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 0.0000 40.00mil 8.00mil]
+)
+Symbol['K' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['L' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['M' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 30.00mil 10.00mil 8.00mil]
+       SymbolLine[30.00mil 10.00mil 30.00mil 50.00mil 8.00mil]
+)
+Symbol['N' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['O' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['P' 12.00mil]
+(
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['Q' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['R' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[13.00mil 30.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['S' 12.00mil]
+(
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['T' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['U' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['V' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['W' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 30.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[25.00mil 50.00mil 30.00mil 30.00mil 8.00mil]
+       SymbolLine[30.00mil 30.00mil 30.00mil 10.00mil 8.00mil]
+)
+Symbol['X' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['Y' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['Z' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['[' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['\' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 30.00mil 45.00mil 8.00mil]
+)
+Symbol[']' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['^' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 10.00mil 15.00mil 8.00mil]
+)
+Symbol['_' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['a' 12.00mil]
+(
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 45.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['b' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+)
+Symbol['c' 12.00mil]
+(
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['d' 12.00mil]
+(
+       SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['e' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[20.00mil 40.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['f' 10.00mil]
+(
+       SymbolLine[5.00mil 15.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['g' 12.00mil]
+(
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil]
+       SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil]
+       SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil]
+)
+Symbol['h' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['i' 10.00mil]
+(
+       SymbolLine[0.0000 20.00mil 0.0000 21.00mil 10.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 50.00mil 8.00mil]
+)
+Symbol['j' 10.00mil]
+(
+       SymbolLine[5.00mil 20.00mil 5.00mil 21.00mil 10.00mil]
+       SymbolLine[5.00mil 35.00mil 5.00mil 60.00mil 8.00mil]
+       SymbolLine[0.0000 65.00mil 5.00mil 60.00mil 8.00mil]
+)
+Symbol['k' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 10.00mil 25.00mil 8.00mil]
+)
+Symbol['l' 10.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['m' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil]
+       SymbolLine[25.00mil 30.00mil 30.00mil 30.00mil 8.00mil]
+       SymbolLine[30.00mil 30.00mil 35.00mil 35.00mil 8.00mil]
+       SymbolLine[35.00mil 35.00mil 35.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['n' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['o' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['p' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 65.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['q' 12.00mil]
+(
+       SymbolLine[20.00mil 35.00mil 20.00mil 65.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['r' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['s' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 40.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 40.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['t' 10.00mil]
+(
+       SymbolLine[5.00mil 10.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 10.00mil 25.00mil 8.00mil]
+)
+Symbol['u' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['v' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['w' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 45.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[25.00mil 50.00mil 30.00mil 45.00mil 8.00mil]
+       SymbolLine[30.00mil 30.00mil 30.00mil 45.00mil 8.00mil]
+)
+Symbol['x' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['y' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil]
+       SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil]
+       SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil]
+       SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['z' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['{' 12.00mil]
+(
+       SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['|' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+)
+Symbol['}' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 25.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil]
+)
+Symbol['~' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 15.00mil 35.00mil 8.00mil]
+       SymbolLine[15.00mil 35.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil]
+)
+Attribute("PCB::grid::unit" "mil")
+Attribute("PCB::grid::size" "50.00mil")
+Via[2650.00mil 2300.00mil 50.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2750.00mil 2300.00mil 50.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2850.00mil 2300.00mil 50.00mil 20.00mil 0.0000 20.00mil "" ""]
+
+Element["" "" "U?" "" 3650.00mil 2550.00mil -250.00mil -150.00mil 0 100 ""]
+(
+       Pin[-300.00mil -250.00mil 50.00mil 20.00mil 56.00mil 20.00mil "" "1" "edge2"]
+       Pin[-200.00mil -250.00mil 50.00mil 20.00mil 56.00mil 20.00mil "" "2" "edge2"]
+       Pin[-100.00mil -250.00mil 50.00mil 20.00mil 56.00mil 20.00mil "" "3" "edge2"]
+       ElementLine [-450.00mil 0.0000 -450.00mil -350.00mil 10.00mil]
+       ElementLine [-450.00mil -350.00mil 50.00mil -350.00mil 10.00mil]
+       ElementLine [50.00mil -350.00mil 50.00mil 0.0000 10.00mil]
+       ElementLine [50.00mil 0.0000 -450.00mil 0.0000 10.00mil]
+
+       )
+Layer(1 "top")
+(
+)
+Layer(2 "ground")
+(
+)
+Layer(3 "signal2")
+(
+)
+Layer(4 "signal3")
+(
+)
+Layer(5 "power")
+(
+)
+Layer(6 "bottom")
+(
+)
+Layer(7 "outline")
+(
+)
+Layer(8 "spare")
+(
+)
+Layer(9 "silk")
+(
+)
+Layer(10 "silk")
+(
+       Line[2500.00mil 2550.00mil 2500.00mil 2200.00mil 10.00mil 20.00mil "clearline"]
+       Line[2500.00mil 2200.00mil 3000.00mil 2200.00mil 10.00mil 20.00mil "clearline"]
+       Line[3000.00mil 2200.00mil 3000.00mil 2550.00mil 10.00mil 20.00mil "clearline"]
+       Line[3000.00mil 2550.00mil 2500.00mil 2550.00mil 10.00mil 20.00mil "clearline"]
+)
diff --git a/hardware/footprints/USB.fp b/hardware/footprints/USB.fp
new file mode 100644 (file)
index 0000000..d3daf6c
--- /dev/null
@@ -0,0 +1,15 @@
+
+Element["" "" "" "" 3750.00mil 1850.00mil 0.0000 0.0000 0 100 ""]
+(
+       Pin[-350.00mil 550.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "1" "edge2"]
+       Pin[-250.00mil 550.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "2" "edge2"]
+       Pin[-150.00mil 550.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "3" "edge2"]
+       Pin[-50.00mil 550.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "4" "edge2"]
+       Pin[-450.00mil 400.00mil 180.00mil 20.00mil 186.00mil 80.00mil "" "5" "edge2"]
+       Pin[50.00mil 400.00mil 180.00mil 20.00mil 186.00mil 80.00mil "" "6" "edge2"]
+       ElementLine [-450.00mil 550.00mil -450.00mil 0.0000 10.00mil]
+       ElementLine [50.00mil 550.00mil -450.00mil 550.00mil 10.00mil]
+       ElementLine [-450.00mil 0.0000 50.00mil 0.0000 10.00mil]
+       ElementLine [50.00mil 0.0000 50.00mil 550.00mil 10.00mil]
+
+       )
diff --git a/hardware/footprints/bridge_5401 b/hardware/footprints/bridge_5401
new file mode 100644 (file)
index 0000000..29fcd94
--- /dev/null
@@ -0,0 +1,840 @@
+# release: pcb 20140316
+
+# To read pcb files, the pcb version (or the git source date) must be >= the file version
+FileVersion[20091103]
+
+PCB["bridge_5401" 6000.00mil 5000.00mil]
+
+Grid[10000.000000 0.0000 0.0000 1]
+PolyArea[3100.006200]
+Thermal[0.500000]
+DRC[10.00mil 10.00mil 10.00mil 10.00mil 15.00mil 10.00mil]
+Flags("nameonpcb,uniquename,clearnew,snappin")
+Groups("1,c:2:3:4:5:6,s:7:8")
+Styles["Signal,50.00mil,140.00mil,50.00mil,20.00mil:Power,25.00mil,60.00mil,35.00mil,10.00mil:Fat,40.00mil,60.00mil,35.00mil,10.00mil:Skinny,6.00mil,24.02mil,11.81mil,6.00mil"]
+
+Symbol[' ' 18.00mil]
+(
+)
+Symbol['!' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 35.00mil 8.00mil]
+)
+Symbol['"' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 20.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 10.00mil 20.00mil 8.00mil]
+)
+Symbol['#' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil]
+       SymbolLine[15.00mil 20.00mil 15.00mil 40.00mil 8.00mil]
+       SymbolLine[5.00mil 20.00mil 5.00mil 40.00mil 8.00mil]
+)
+Symbol['$' 12.00mil]
+(
+       SymbolLine[15.00mil 15.00mil 20.00mil 20.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 15.00mil 15.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 5.00mil 15.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[15.00mil 45.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['%' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil]
+       SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[10.00mil 25.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[5.00mil 25.00mil 10.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 40.00mil 10.00mil 8.00mil]
+       SymbolLine[35.00mil 50.00mil 40.00mil 45.00mil 8.00mil]
+       SymbolLine[40.00mil 40.00mil 40.00mil 45.00mil 8.00mil]
+       SymbolLine[35.00mil 35.00mil 40.00mil 40.00mil 8.00mil]
+       SymbolLine[30.00mil 35.00mil 35.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 40.00mil 30.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 40.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[25.00mil 45.00mil 30.00mil 50.00mil 8.00mil]
+       SymbolLine[30.00mil 50.00mil 35.00mil 50.00mil 8.00mil]
+)
+Symbol['&' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil]
+       SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+)
+Symbol[''' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 10.00mil 10.00mil 8.00mil]
+)
+Symbol['(' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+)
+Symbol[')' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil]
+)
+Symbol['*' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol['+' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol[',' 12.00mil]
+(
+       SymbolLine[0.0000 60.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['-' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['.' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['/' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 30.00mil 15.00mil 8.00mil]
+)
+Symbol['0' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil]
+)
+Symbol['1' 12.00mil]
+(
+       SymbolLine[0.0000 18.00mil 8.00mil 10.00mil 8.00mil]
+       SymbolLine[8.00mil 10.00mil 8.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 15.00mil 50.00mil 8.00mil]
+)
+Symbol['2' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['3' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 28.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 23.00mil 8.00mil]
+       SymbolLine[20.00mil 33.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 33.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[20.00mil 23.00mil 15.00mil 28.00mil 8.00mil]
+)
+Symbol['4' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['5' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 30.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 25.00mil 15.00mil 25.00mil 8.00mil]
+       SymbolLine[15.00mil 25.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['6' 12.00mil]
+(
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 28.00mil 20.00mil 33.00mil 8.00mil]
+       SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 33.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['7' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil]
+)
+Symbol['8' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 37.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 37.00mil 7.00mil 30.00mil 8.00mil]
+       SymbolLine[7.00mil 30.00mil 13.00mil 30.00mil 8.00mil]
+       SymbolLine[13.00mil 30.00mil 20.00mil 37.00mil 8.00mil]
+       SymbolLine[20.00mil 37.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 23.00mil 7.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 23.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 23.00mil 8.00mil]
+       SymbolLine[13.00mil 30.00mil 20.00mil 23.00mil 8.00mil]
+)
+Symbol['9' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol[':' 12.00mil]
+(
+       SymbolLine[0.0000 25.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol[';' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 10.00mil 40.00mil 8.00mil]
+       SymbolLine[10.00mil 25.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['<' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 10.00mil 20.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol['=' 12.00mil]
+(
+       SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['>' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['?' 12.00mil]
+(
+       SymbolLine[10.00mil 30.00mil 10.00mil 35.00mil 8.00mil]
+       SymbolLine[10.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 20.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 20.00mil 8.00mil]
+)
+Symbol['@' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 40.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 40.00mil 50.00mil 8.00mil]
+       SymbolLine[50.00mil 35.00mil 50.00mil 10.00mil 8.00mil]
+       SymbolLine[50.00mil 10.00mil 40.00mil 0.0000 8.00mil]
+       SymbolLine[40.00mil 0.0000 10.00mil 0.0000 8.00mil]
+       SymbolLine[10.00mil 0.0000 0.0000 10.00mil 8.00mil]
+       SymbolLine[15.00mil 20.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 30.00mil 35.00mil 8.00mil]
+       SymbolLine[30.00mil 35.00mil 35.00mil 30.00mil 8.00mil]
+       SymbolLine[35.00mil 30.00mil 40.00mil 35.00mil 8.00mil]
+       SymbolLine[35.00mil 30.00mil 35.00mil 15.00mil 8.00mil]
+       SymbolLine[35.00mil 20.00mil 30.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 30.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[40.00mil 35.00mil 50.00mil 35.00mil 8.00mil]
+)
+Symbol['A' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 7.00mil 10.00mil 8.00mil]
+       SymbolLine[7.00mil 10.00mil 18.00mil 10.00mil 8.00mil]
+       SymbolLine[18.00mil 10.00mil 25.00mil 20.00mil 8.00mil]
+       SymbolLine[25.00mil 20.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil]
+)
+Symbol['B' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[25.00mil 33.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 28.00mil 25.00mil 33.00mil 8.00mil]
+       SymbolLine[5.00mil 28.00mil 20.00mil 28.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 23.00mil 8.00mil]
+       SymbolLine[20.00mil 28.00mil 25.00mil 23.00mil 8.00mil]
+)
+Symbol['C' 12.00mil]
+(
+       SymbolLine[7.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 43.00mil 7.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 17.00mil 0.0000 43.00mil 8.00mil]
+       SymbolLine[0.0000 17.00mil 7.00mil 10.00mil 8.00mil]
+       SymbolLine[7.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['D' 12.00mil]
+(
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[18.00mil 10.00mil 25.00mil 17.00mil 8.00mil]
+       SymbolLine[25.00mil 17.00mil 25.00mil 43.00mil 8.00mil]
+       SymbolLine[18.00mil 50.00mil 25.00mil 43.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 18.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 18.00mil 10.00mil 8.00mil]
+)
+Symbol['E' 12.00mil]
+(
+       SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['F' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+)
+Symbol['G' 12.00mil]
+(
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['H' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil]
+)
+Symbol['I' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['J' 12.00mil]
+(
+       SymbolLine[7.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 0.0000 40.00mil 8.00mil]
+)
+Symbol['K' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['L' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['M' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 30.00mil 10.00mil 8.00mil]
+       SymbolLine[30.00mil 10.00mil 30.00mil 50.00mil 8.00mil]
+)
+Symbol['N' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['O' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['P' 12.00mil]
+(
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['Q' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['R' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[13.00mil 30.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['S' 12.00mil]
+(
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['T' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['U' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['V' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['W' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 30.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[25.00mil 50.00mil 30.00mil 30.00mil 8.00mil]
+       SymbolLine[30.00mil 30.00mil 30.00mil 10.00mil 8.00mil]
+)
+Symbol['X' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['Y' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['Z' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['[' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['\' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 30.00mil 45.00mil 8.00mil]
+)
+Symbol[']' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['^' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 10.00mil 15.00mil 8.00mil]
+)
+Symbol['_' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['a' 12.00mil]
+(
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 45.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['b' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+)
+Symbol['c' 12.00mil]
+(
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['d' 12.00mil]
+(
+       SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['e' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[20.00mil 40.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['f' 10.00mil]
+(
+       SymbolLine[5.00mil 15.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['g' 12.00mil]
+(
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil]
+       SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil]
+       SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil]
+)
+Symbol['h' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['i' 10.00mil]
+(
+       SymbolLine[0.0000 20.00mil 0.0000 21.00mil 10.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 50.00mil 8.00mil]
+)
+Symbol['j' 10.00mil]
+(
+       SymbolLine[5.00mil 20.00mil 5.00mil 21.00mil 10.00mil]
+       SymbolLine[5.00mil 35.00mil 5.00mil 60.00mil 8.00mil]
+       SymbolLine[0.0000 65.00mil 5.00mil 60.00mil 8.00mil]
+)
+Symbol['k' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 10.00mil 25.00mil 8.00mil]
+)
+Symbol['l' 10.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['m' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil]
+       SymbolLine[25.00mil 30.00mil 30.00mil 30.00mil 8.00mil]
+       SymbolLine[30.00mil 30.00mil 35.00mil 35.00mil 8.00mil]
+       SymbolLine[35.00mil 35.00mil 35.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['n' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['o' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['p' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 65.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['q' 12.00mil]
+(
+       SymbolLine[20.00mil 35.00mil 20.00mil 65.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['r' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['s' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 40.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 40.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['t' 10.00mil]
+(
+       SymbolLine[5.00mil 10.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 10.00mil 25.00mil 8.00mil]
+)
+Symbol['u' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['v' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['w' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 45.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[25.00mil 50.00mil 30.00mil 45.00mil 8.00mil]
+       SymbolLine[30.00mil 30.00mil 30.00mil 45.00mil 8.00mil]
+)
+Symbol['x' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['y' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil]
+       SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil]
+       SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil]
+       SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['z' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['{' 12.00mil]
+(
+       SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['|' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+)
+Symbol['}' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 25.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil]
+)
+Symbol['~' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 15.00mil 35.00mil 8.00mil]
+       SymbolLine[15.00mil 35.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil]
+)
+Attribute("PCB::grid::unit" "mil")
+Attribute("PCB::grid::size" "100.00mil")
+Via[1900.00mil 1900.00mil 140.00mil 40.00mil 0.0000 50.00mil "" ""]
+Via[2300.00mil 1900.00mil 140.00mil 40.00mil 0.0000 50.00mil "" ""]
+Via[2700.00mil 1900.00mil 140.00mil 40.00mil 0.0000 50.00mil "" ""]
+Via[1500.00mil 1900.00mil 140.00mil 40.00mil 0.0000 50.00mil "" ""]
+
+Element["" "" "" "" 3000.00mil 3000.00mil 0.0000 0.0000 0 100 ""]
+(
+       Pin[-1100.00mil -300.00mil 140.00mil 40.00mil 146.00mil 50.00mil "" "1" "edge2"]
+       Pin[-700.00mil -300.00mil 140.00mil 40.00mil 146.00mil 50.00mil "" "2" "edge2"]
+       Pin[-300.00mil -300.00mil 140.00mil 40.00mil 146.00mil 50.00mil "" "3" "edge2"]
+       Pin[-1500.00mil -300.00mil 140.00mil 40.00mil 146.00mil 50.00mil "" "4" "edge2"]
+       ElementLine [-1600.00mil -500.00mil -200.00mil -500.00mil 50.00mil]
+       ElementLine [-200.00mil -500.00mil -200.00mil -100.00mil 50.00mil]
+       ElementLine [-200.00mil -100.00mil -1600.00mil -100.00mil 50.00mil]
+       ElementLine [-1600.00mil -100.00mil -1600.00mil -500.00mil 50.00mil]
+
+       )
+Layer(1 "top")
+(
+)
+Layer(2 "ground")
+(
+)
+Layer(3 "signal2")
+(
+)
+Layer(4 "signal3")
+(
+)
+Layer(5 "power")
+(
+)
+Layer(6 "bottom")
+(
+)
+Layer(7 "outline")
+(
+)
+Layer(8 "spare")
+(
+)
+Layer(9 "silk")
+(
+)
+Layer(10 "silk")
+(
+       Line[1400.00mil 1700.00mil 2800.00mil 1700.00mil 50.00mil 40.00mil "clearline"]
+       Line[2800.00mil 1700.00mil 2800.00mil 2100.00mil 50.00mil 40.00mil "clearline"]
+       Line[2800.00mil 2100.00mil 1400.00mil 2100.00mil 50.00mil 40.00mil "clearline"]
+       Line[1400.00mil 2100.00mil 1400.00mil 1700.00mil 50.00mil 40.00mil "clearline"]
+)
diff --git a/hardware/footprints/rj45 b/hardware/footprints/rj45
new file mode 100644 (file)
index 0000000..d89e951
--- /dev/null
@@ -0,0 +1,853 @@
+# release: pcb 20140316
+
+# To read pcb files, the pcb version (or the git source date) must be >= the file version
+FileVersion[20091103]
+
+PCB["" 6000.00mil 5000.00mil]
+
+Grid[5000.000000 0.0000 0.0000 1]
+PolyArea[3100.006200]
+Thermal[0.500000]
+DRC[10.00mil 10.00mil 10.00mil 10.00mil 20.00mil 20.00mil]
+Flags("nameonpcb,uniquename,clearnew,snappin")
+Groups("1,c:2:3:4:5:6,s:7:8")
+Styles["Signal,10.00mil,36.00mil,100.00mil,10.00mil:Power,25.00mil,60.00mil,35.00mil,10.00mil:Fat,40.00mil,60.00mil,35.00mil,10.00mil:Skinny,6.00mil,24.02mil,11.81mil,6.00mil"]
+
+Symbol[' ' 18.00mil]
+(
+)
+Symbol['!' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 35.00mil 8.00mil]
+)
+Symbol['"' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 20.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 10.00mil 20.00mil 8.00mil]
+)
+Symbol['#' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil]
+       SymbolLine[15.00mil 20.00mil 15.00mil 40.00mil 8.00mil]
+       SymbolLine[5.00mil 20.00mil 5.00mil 40.00mil 8.00mil]
+)
+Symbol['$' 12.00mil]
+(
+       SymbolLine[15.00mil 15.00mil 20.00mil 20.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 15.00mil 15.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 5.00mil 15.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[15.00mil 45.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['%' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil]
+       SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[10.00mil 25.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[5.00mil 25.00mil 10.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 40.00mil 10.00mil 8.00mil]
+       SymbolLine[35.00mil 50.00mil 40.00mil 45.00mil 8.00mil]
+       SymbolLine[40.00mil 40.00mil 40.00mil 45.00mil 8.00mil]
+       SymbolLine[35.00mil 35.00mil 40.00mil 40.00mil 8.00mil]
+       SymbolLine[30.00mil 35.00mil 35.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 40.00mil 30.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 40.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[25.00mil 45.00mil 30.00mil 50.00mil 8.00mil]
+       SymbolLine[30.00mil 50.00mil 35.00mil 50.00mil 8.00mil]
+)
+Symbol['&' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil]
+       SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+)
+Symbol[''' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 10.00mil 10.00mil 8.00mil]
+)
+Symbol['(' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+)
+Symbol[')' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil]
+)
+Symbol['*' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol['+' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol[',' 12.00mil]
+(
+       SymbolLine[0.0000 60.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['-' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['.' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['/' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 30.00mil 15.00mil 8.00mil]
+)
+Symbol['0' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil]
+)
+Symbol['1' 12.00mil]
+(
+       SymbolLine[0.0000 18.00mil 8.00mil 10.00mil 8.00mil]
+       SymbolLine[8.00mil 10.00mil 8.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 15.00mil 50.00mil 8.00mil]
+)
+Symbol['2' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['3' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 28.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 23.00mil 8.00mil]
+       SymbolLine[20.00mil 33.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 33.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[20.00mil 23.00mil 15.00mil 28.00mil 8.00mil]
+)
+Symbol['4' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['5' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 30.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 25.00mil 15.00mil 25.00mil 8.00mil]
+       SymbolLine[15.00mil 25.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['6' 12.00mil]
+(
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 28.00mil 20.00mil 33.00mil 8.00mil]
+       SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 33.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['7' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil]
+)
+Symbol['8' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 37.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 37.00mil 7.00mil 30.00mil 8.00mil]
+       SymbolLine[7.00mil 30.00mil 13.00mil 30.00mil 8.00mil]
+       SymbolLine[13.00mil 30.00mil 20.00mil 37.00mil 8.00mil]
+       SymbolLine[20.00mil 37.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 23.00mil 7.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 23.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 23.00mil 8.00mil]
+       SymbolLine[13.00mil 30.00mil 20.00mil 23.00mil 8.00mil]
+)
+Symbol['9' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol[':' 12.00mil]
+(
+       SymbolLine[0.0000 25.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol[';' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 10.00mil 40.00mil 8.00mil]
+       SymbolLine[10.00mil 25.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['<' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 10.00mil 20.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol['=' 12.00mil]
+(
+       SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['>' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['?' 12.00mil]
+(
+       SymbolLine[10.00mil 30.00mil 10.00mil 35.00mil 8.00mil]
+       SymbolLine[10.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 20.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 20.00mil 8.00mil]
+)
+Symbol['@' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 40.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 40.00mil 50.00mil 8.00mil]
+       SymbolLine[50.00mil 35.00mil 50.00mil 10.00mil 8.00mil]
+       SymbolLine[50.00mil 10.00mil 40.00mil 0.0000 8.00mil]
+       SymbolLine[40.00mil 0.0000 10.00mil 0.0000 8.00mil]
+       SymbolLine[10.00mil 0.0000 0.0000 10.00mil 8.00mil]
+       SymbolLine[15.00mil 20.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 30.00mil 35.00mil 8.00mil]
+       SymbolLine[30.00mil 35.00mil 35.00mil 30.00mil 8.00mil]
+       SymbolLine[35.00mil 30.00mil 40.00mil 35.00mil 8.00mil]
+       SymbolLine[35.00mil 30.00mil 35.00mil 15.00mil 8.00mil]
+       SymbolLine[35.00mil 20.00mil 30.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 30.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[40.00mil 35.00mil 50.00mil 35.00mil 8.00mil]
+)
+Symbol['A' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 7.00mil 10.00mil 8.00mil]
+       SymbolLine[7.00mil 10.00mil 18.00mil 10.00mil 8.00mil]
+       SymbolLine[18.00mil 10.00mil 25.00mil 20.00mil 8.00mil]
+       SymbolLine[25.00mil 20.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil]
+)
+Symbol['B' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[25.00mil 33.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 28.00mil 25.00mil 33.00mil 8.00mil]
+       SymbolLine[5.00mil 28.00mil 20.00mil 28.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 23.00mil 8.00mil]
+       SymbolLine[20.00mil 28.00mil 25.00mil 23.00mil 8.00mil]
+)
+Symbol['C' 12.00mil]
+(
+       SymbolLine[7.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 43.00mil 7.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 17.00mil 0.0000 43.00mil 8.00mil]
+       SymbolLine[0.0000 17.00mil 7.00mil 10.00mil 8.00mil]
+       SymbolLine[7.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['D' 12.00mil]
+(
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[18.00mil 10.00mil 25.00mil 17.00mil 8.00mil]
+       SymbolLine[25.00mil 17.00mil 25.00mil 43.00mil 8.00mil]
+       SymbolLine[18.00mil 50.00mil 25.00mil 43.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 18.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 18.00mil 10.00mil 8.00mil]
+)
+Symbol['E' 12.00mil]
+(
+       SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['F' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+)
+Symbol['G' 12.00mil]
+(
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['H' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil]
+)
+Symbol['I' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['J' 12.00mil]
+(
+       SymbolLine[7.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 0.0000 40.00mil 8.00mil]
+)
+Symbol['K' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['L' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['M' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 30.00mil 10.00mil 8.00mil]
+       SymbolLine[30.00mil 10.00mil 30.00mil 50.00mil 8.00mil]
+)
+Symbol['N' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['O' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['P' 12.00mil]
+(
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['Q' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['R' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[13.00mil 30.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['S' 12.00mil]
+(
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['T' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['U' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['V' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['W' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 30.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[25.00mil 50.00mil 30.00mil 30.00mil 8.00mil]
+       SymbolLine[30.00mil 30.00mil 30.00mil 10.00mil 8.00mil]
+)
+Symbol['X' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['Y' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['Z' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['[' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['\' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 30.00mil 45.00mil 8.00mil]
+)
+Symbol[']' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['^' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 10.00mil 15.00mil 8.00mil]
+)
+Symbol['_' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['a' 12.00mil]
+(
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 45.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['b' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+)
+Symbol['c' 12.00mil]
+(
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['d' 12.00mil]
+(
+       SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['e' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[20.00mil 40.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['f' 10.00mil]
+(
+       SymbolLine[5.00mil 15.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['g' 12.00mil]
+(
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil]
+       SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil]
+       SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil]
+)
+Symbol['h' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['i' 10.00mil]
+(
+       SymbolLine[0.0000 20.00mil 0.0000 21.00mil 10.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 50.00mil 8.00mil]
+)
+Symbol['j' 10.00mil]
+(
+       SymbolLine[5.00mil 20.00mil 5.00mil 21.00mil 10.00mil]
+       SymbolLine[5.00mil 35.00mil 5.00mil 60.00mil 8.00mil]
+       SymbolLine[0.0000 65.00mil 5.00mil 60.00mil 8.00mil]
+)
+Symbol['k' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 10.00mil 25.00mil 8.00mil]
+)
+Symbol['l' 10.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['m' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil]
+       SymbolLine[25.00mil 30.00mil 30.00mil 30.00mil 8.00mil]
+       SymbolLine[30.00mil 30.00mil 35.00mil 35.00mil 8.00mil]
+       SymbolLine[35.00mil 35.00mil 35.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['n' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['o' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['p' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 65.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['q' 12.00mil]
+(
+       SymbolLine[20.00mil 35.00mil 20.00mil 65.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['r' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['s' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 40.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 40.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['t' 10.00mil]
+(
+       SymbolLine[5.00mil 10.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 10.00mil 25.00mil 8.00mil]
+)
+Symbol['u' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['v' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['w' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 45.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[25.00mil 50.00mil 30.00mil 45.00mil 8.00mil]
+       SymbolLine[30.00mil 30.00mil 30.00mil 45.00mil 8.00mil]
+)
+Symbol['x' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['y' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil]
+       SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil]
+       SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil]
+       SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['z' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['{' 12.00mil]
+(
+       SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['|' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+)
+Symbol['}' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 25.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil]
+)
+Symbol['~' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 15.00mil 35.00mil 8.00mil]
+       SymbolLine[15.00mil 35.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil]
+)
+Attribute("PCB::grid::unit" "mil")
+Attribute("PCB::grid::size" "50.00mil")
+Via[2550.00mil 2400.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2600.00mil 2300.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2650.00mil 2400.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2700.00mil 2300.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2750.00mil 2400.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2800.00mil 2300.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2850.00mil 2400.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2900.00mil 2300.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2500.00mil 2000.00mil 104.00mil 20.00mil 0.0000 100.00mil "" ""]
+Via[2950.00mil 2000.00mil 104.00mil 20.00mil 0.0000 100.00mil "" ""]
+
+Element["" "" "" "" 3600.00mil 2150.00mil 0.0000 0.0000 0 100 ""]
+(
+       Pin[-150.00mil 250.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "1" ""]
+       Pin[-100.00mil 150.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "2" ""]
+       Pin[-50.00mil 250.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "3" ""]
+       Pin[0.0000 150.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "4" ""]
+       Pin[50.00mil 250.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "5" ""]
+       Pin[100.00mil 150.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "6" ""]
+       Pin[150.00mil 250.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "7" ""]
+       Pin[200.00mil 150.00mil 36.00mil 20.00mil 42.00mil 20.00mil "" "8" ""]
+       Pin[-200.00mil -150.00mil 104.00mil 20.00mil 110.00mil 100.00mil "" "9" ""]
+       Pin[250.00mil -150.00mil 104.00mil 20.00mil 110.00mil 100.00mil "" "10" ""]
+       ElementLine [-300.00mil 350.00mil -300.00mil -350.00mil 10.00mil]
+       ElementLine [350.00mil 350.00mil -300.00mil 350.00mil 10.00mil]
+       ElementLine [-300.00mil -350.00mil 350.00mil -350.00mil 10.00mil]
+       ElementLine [350.00mil -350.00mil 350.00mil 350.00mil 10.00mil]
+
+       )
+Layer(1 "top")
+(
+)
+Layer(2 "ground")
+(
+)
+Layer(3 "signal2")
+(
+)
+Layer(4 "signal3")
+(
+)
+Layer(5 "power")
+(
+)
+Layer(6 "bottom")
+(
+)
+Layer(7 "outline")
+(
+)
+Layer(8 "spare")
+(
+)
+Layer(9 "silk")
+(
+)
+Layer(10 "silk")
+(
+       Line[2400.00mil 2500.00mil 2400.00mil 1800.00mil 10.00mil 20.00mil "clearline"]
+       Line[3050.00mil 2500.00mil 2400.00mil 2500.00mil 10.00mil 20.00mil "clearline"]
+       Line[2400.00mil 1800.00mil 3050.00mil 1800.00mil 10.00mil 20.00mil "clearline"]
+       Line[3050.00mil 1800.00mil 3050.00mil 2500.00mil 10.00mil 20.00mil "clearline"]
+       Text[2700.00mil 2050.00mil 0 122 "J?" "clearline"]
+)
diff --git a/hardware/footprints/usb b/hardware/footprints/usb
new file mode 100644 (file)
index 0000000..229b73d
--- /dev/null
@@ -0,0 +1,830 @@
+# release: pcb 20140316
+
+# To read pcb files, the pcb version (or the git source date) must be >= the file version
+FileVersion[20091103]
+
+PCB["" 6000.00mil 5000.00mil]
+
+Grid[5000.000000 0.0000 0.0000 1]
+PolyArea[3100.006200]
+Thermal[0.500000]
+DRC[10.00mil 10.00mil 10.00mil 10.00mil 20.00mil 20.00mil]
+Flags("nameonpcb,uniquename,clearnew,snappin")
+Groups("1,c:2:3:4:5:6,s:7:8")
+Styles["Signal,10.00mil,180.00mil,80.00mil,10.00mil:Power,25.00mil,60.00mil,35.00mil,10.00mil:Fat,40.00mil,60.00mil,35.00mil,10.00mil:Skinny,6.00mil,24.02mil,11.81mil,6.00mil"]
+
+Symbol[' ' 18.00mil]
+(
+)
+Symbol['!' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 35.00mil 8.00mil]
+)
+Symbol['"' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 20.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 10.00mil 20.00mil 8.00mil]
+)
+Symbol['#' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil]
+       SymbolLine[15.00mil 20.00mil 15.00mil 40.00mil 8.00mil]
+       SymbolLine[5.00mil 20.00mil 5.00mil 40.00mil 8.00mil]
+)
+Symbol['$' 12.00mil]
+(
+       SymbolLine[15.00mil 15.00mil 20.00mil 20.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 15.00mil 15.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 5.00mil 15.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[15.00mil 45.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['%' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil]
+       SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[10.00mil 25.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[5.00mil 25.00mil 10.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 40.00mil 10.00mil 8.00mil]
+       SymbolLine[35.00mil 50.00mil 40.00mil 45.00mil 8.00mil]
+       SymbolLine[40.00mil 40.00mil 40.00mil 45.00mil 8.00mil]
+       SymbolLine[35.00mil 35.00mil 40.00mil 40.00mil 8.00mil]
+       SymbolLine[30.00mil 35.00mil 35.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 40.00mil 30.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 40.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[25.00mil 45.00mil 30.00mil 50.00mil 8.00mil]
+       SymbolLine[30.00mil 50.00mil 35.00mil 50.00mil 8.00mil]
+)
+Symbol['&' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil]
+       SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+)
+Symbol[''' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 10.00mil 10.00mil 8.00mil]
+)
+Symbol['(' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+)
+Symbol[')' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil]
+)
+Symbol['*' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol['+' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol[',' 12.00mil]
+(
+       SymbolLine[0.0000 60.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['-' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['.' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['/' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 30.00mil 15.00mil 8.00mil]
+)
+Symbol['0' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil]
+)
+Symbol['1' 12.00mil]
+(
+       SymbolLine[0.0000 18.00mil 8.00mil 10.00mil 8.00mil]
+       SymbolLine[8.00mil 10.00mil 8.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 15.00mil 50.00mil 8.00mil]
+)
+Symbol['2' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['3' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 28.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 23.00mil 8.00mil]
+       SymbolLine[20.00mil 33.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 33.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[20.00mil 23.00mil 15.00mil 28.00mil 8.00mil]
+)
+Symbol['4' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['5' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 30.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 25.00mil 15.00mil 25.00mil 8.00mil]
+       SymbolLine[15.00mil 25.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['6' 12.00mil]
+(
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 28.00mil 20.00mil 33.00mil 8.00mil]
+       SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 33.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['7' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil]
+)
+Symbol['8' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 37.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 37.00mil 7.00mil 30.00mil 8.00mil]
+       SymbolLine[7.00mil 30.00mil 13.00mil 30.00mil 8.00mil]
+       SymbolLine[13.00mil 30.00mil 20.00mil 37.00mil 8.00mil]
+       SymbolLine[20.00mil 37.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 23.00mil 7.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 23.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 23.00mil 8.00mil]
+       SymbolLine[13.00mil 30.00mil 20.00mil 23.00mil 8.00mil]
+)
+Symbol['9' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol[':' 12.00mil]
+(
+       SymbolLine[0.0000 25.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol[';' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 10.00mil 40.00mil 8.00mil]
+       SymbolLine[10.00mil 25.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['<' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 10.00mil 20.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol['=' 12.00mil]
+(
+       SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['>' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['?' 12.00mil]
+(
+       SymbolLine[10.00mil 30.00mil 10.00mil 35.00mil 8.00mil]
+       SymbolLine[10.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 20.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 20.00mil 8.00mil]
+)
+Symbol['@' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 40.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 40.00mil 50.00mil 8.00mil]
+       SymbolLine[50.00mil 35.00mil 50.00mil 10.00mil 8.00mil]
+       SymbolLine[50.00mil 10.00mil 40.00mil 0.0000 8.00mil]
+       SymbolLine[40.00mil 0.0000 10.00mil 0.0000 8.00mil]
+       SymbolLine[10.00mil 0.0000 0.0000 10.00mil 8.00mil]
+       SymbolLine[15.00mil 20.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 30.00mil 35.00mil 8.00mil]
+       SymbolLine[30.00mil 35.00mil 35.00mil 30.00mil 8.00mil]
+       SymbolLine[35.00mil 30.00mil 40.00mil 35.00mil 8.00mil]
+       SymbolLine[35.00mil 30.00mil 35.00mil 15.00mil 8.00mil]
+       SymbolLine[35.00mil 20.00mil 30.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 30.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[40.00mil 35.00mil 50.00mil 35.00mil 8.00mil]
+)
+Symbol['A' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 7.00mil 10.00mil 8.00mil]
+       SymbolLine[7.00mil 10.00mil 18.00mil 10.00mil 8.00mil]
+       SymbolLine[18.00mil 10.00mil 25.00mil 20.00mil 8.00mil]
+       SymbolLine[25.00mil 20.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil]
+)
+Symbol['B' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[25.00mil 33.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 28.00mil 25.00mil 33.00mil 8.00mil]
+       SymbolLine[5.00mil 28.00mil 20.00mil 28.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 23.00mil 8.00mil]
+       SymbolLine[20.00mil 28.00mil 25.00mil 23.00mil 8.00mil]
+)
+Symbol['C' 12.00mil]
+(
+       SymbolLine[7.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 43.00mil 7.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 17.00mil 0.0000 43.00mil 8.00mil]
+       SymbolLine[0.0000 17.00mil 7.00mil 10.00mil 8.00mil]
+       SymbolLine[7.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['D' 12.00mil]
+(
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[18.00mil 10.00mil 25.00mil 17.00mil 8.00mil]
+       SymbolLine[25.00mil 17.00mil 25.00mil 43.00mil 8.00mil]
+       SymbolLine[18.00mil 50.00mil 25.00mil 43.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 18.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 18.00mil 10.00mil 8.00mil]
+)
+Symbol['E' 12.00mil]
+(
+       SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['F' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+)
+Symbol['G' 12.00mil]
+(
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['H' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil]
+)
+Symbol['I' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['J' 12.00mil]
+(
+       SymbolLine[7.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 0.0000 40.00mil 8.00mil]
+)
+Symbol['K' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['L' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['M' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 30.00mil 10.00mil 8.00mil]
+       SymbolLine[30.00mil 10.00mil 30.00mil 50.00mil 8.00mil]
+)
+Symbol['N' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['O' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['P' 12.00mil]
+(
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['Q' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['R' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[13.00mil 30.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['S' 12.00mil]
+(
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['T' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['U' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['V' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['W' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 30.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[25.00mil 50.00mil 30.00mil 30.00mil 8.00mil]
+       SymbolLine[30.00mil 30.00mil 30.00mil 10.00mil 8.00mil]
+)
+Symbol['X' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['Y' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['Z' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['[' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['\' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 30.00mil 45.00mil 8.00mil]
+)
+Symbol[']' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['^' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 10.00mil 15.00mil 8.00mil]
+)
+Symbol['_' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['a' 12.00mil]
+(
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 45.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['b' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+)
+Symbol['c' 12.00mil]
+(
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['d' 12.00mil]
+(
+       SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['e' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[20.00mil 40.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['f' 10.00mil]
+(
+       SymbolLine[5.00mil 15.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['g' 12.00mil]
+(
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil]
+       SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil]
+       SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil]
+)
+Symbol['h' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['i' 10.00mil]
+(
+       SymbolLine[0.0000 20.00mil 0.0000 21.00mil 10.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 50.00mil 8.00mil]
+)
+Symbol['j' 10.00mil]
+(
+       SymbolLine[5.00mil 20.00mil 5.00mil 21.00mil 10.00mil]
+       SymbolLine[5.00mil 35.00mil 5.00mil 60.00mil 8.00mil]
+       SymbolLine[0.0000 65.00mil 5.00mil 60.00mil 8.00mil]
+)
+Symbol['k' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 10.00mil 25.00mil 8.00mil]
+)
+Symbol['l' 10.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['m' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil]
+       SymbolLine[25.00mil 30.00mil 30.00mil 30.00mil 8.00mil]
+       SymbolLine[30.00mil 30.00mil 35.00mil 35.00mil 8.00mil]
+       SymbolLine[35.00mil 35.00mil 35.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['n' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['o' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['p' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 65.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['q' 12.00mil]
+(
+       SymbolLine[20.00mil 35.00mil 20.00mil 65.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['r' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['s' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 40.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 40.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['t' 10.00mil]
+(
+       SymbolLine[5.00mil 10.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 10.00mil 25.00mil 8.00mil]
+)
+Symbol['u' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['v' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['w' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 45.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[25.00mil 50.00mil 30.00mil 45.00mil 8.00mil]
+       SymbolLine[30.00mil 30.00mil 30.00mil 45.00mil 8.00mil]
+)
+Symbol['x' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['y' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil]
+       SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil]
+       SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil]
+       SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['z' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['{' 12.00mil]
+(
+       SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['|' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+)
+Symbol['}' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 25.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil]
+)
+Symbol['~' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 15.00mil 35.00mil 8.00mil]
+       SymbolLine[15.00mil 35.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil]
+)
+Attribute("PCB::grid::unit" "mil")
+Attribute("PCB::grid::size" "50.00mil")
+Via[2550.00mil 2400.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2650.00mil 2400.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2750.00mil 2400.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2850.00mil 2400.00mil 36.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[2450.00mil 2250.00mil 180.00mil 20.00mil 0.0000 80.00mil "" ""]
+Via[2950.00mil 2250.00mil 180.00mil 20.00mil 0.0000 80.00mil "" ""]
+Layer(1 "top")
+(
+)
+Layer(2 "ground")
+(
+)
+Layer(3 "signal2")
+(
+)
+Layer(4 "signal3")
+(
+)
+Layer(5 "power")
+(
+)
+Layer(6 "bottom")
+(
+)
+Layer(7 "outline")
+(
+)
+Layer(8 "spare")
+(
+)
+Layer(9 "silk")
+(
+)
+Layer(10 "silk")
+(
+       Line[2450.00mil 2400.00mil 2450.00mil 1850.00mil 10.00mil 20.00mil "clearline"]
+       Line[2950.00mil 2400.00mil 2450.00mil 2400.00mil 10.00mil 20.00mil "clearline"]
+       Line[2450.00mil 1850.00mil 2950.00mil 1850.00mil 10.00mil 20.00mil "clearline"]
+       Line[2950.00mil 1850.00mil 2950.00mil 2400.00mil 10.00mil 20.00mil "clearline"]
+       Text[2700.00mil 2050.00mil 0 122 "J?" "clearline"]
+)
diff --git a/hardware/gafrc b/hardware/gafrc
new file mode 100644 (file)
index 0000000..43f4258
--- /dev/null
@@ -0,0 +1 @@
+;; (component-library "./symbols") (component-library ".")
diff --git a/hardware/gschemrc b/hardware/gschemrc
new file mode 100644 (file)
index 0000000..43f4258
--- /dev/null
@@ -0,0 +1 @@
+;; (component-library "./symbols") (component-library ".")
diff --git a/hardware/ledcontrol-bom.gnumeric b/hardware/ledcontrol-bom.gnumeric
new file mode 100644 (file)
index 0000000..10dd4d8
Binary files /dev/null and b/hardware/ledcontrol-bom.gnumeric differ
diff --git a/hardware/ledcontrol.cmd b/hardware/ledcontrol.cmd
new file mode 100644 (file)
index 0000000..2023b1c
--- /dev/null
@@ -0,0 +1,236 @@
+# Pin name action command file
+
+# Start of element J7
+ChangePinName(J7, 31, 31)
+ChangePinName(J7, 32, 32)
+ChangePinName(J7, 33, 33)
+ChangePinName(J7, 34, 34)
+ChangePinName(J7, 35, 35)
+ChangePinName(J7, 36, 36)
+ChangePinName(J7, 39, 39)
+ChangePinName(J7, 37, 37)
+ChangePinName(J7, 40, 40)
+ChangePinName(J7, 38, 38)
+ChangePinName(J7, 26, 26)
+ChangePinName(J7, 27, 27)
+ChangePinName(J7, 28, 28)
+ChangePinName(J7, 29, 29)
+ChangePinName(J7, 30, 30)
+ChangePinName(J7, 25, 25)
+ChangePinName(J7, 21, 21)
+ChangePinName(J7, 24, 24)
+ChangePinName(J7, 23, 23)
+ChangePinName(J7, 22, 22)
+ChangePinName(J7, 11, 11)
+ChangePinName(J7, 12, 12)
+ChangePinName(J7, 13, 13)
+ChangePinName(J7, 14, 14)
+ChangePinName(J7, 15, 15)
+ChangePinName(J7, 16, 16)
+ChangePinName(J7, 19, 19)
+ChangePinName(J7, 17, 17)
+ChangePinName(J7, 20, 20)
+ChangePinName(J7, 18, 18)
+ChangePinName(J7, 6, 6)
+ChangePinName(J7, 7, 7)
+ChangePinName(J7, 8, 8)
+ChangePinName(J7, 9, 9)
+ChangePinName(J7, 10, 10)
+ChangePinName(J7, 5, 5)
+ChangePinName(J7, 1, 1)
+ChangePinName(J7, 4, 4)
+ChangePinName(J7, 3, 3)
+ChangePinName(J7, 2, 2)
+
+# Start of element J2
+ChangePinName(J2, 2, 2)
+ChangePinName(J2, 1, 1)
+
+# Start of element J1
+ChangePinName(J1, 2, 2)
+ChangePinName(J1, 1, 1)
+
+# Start of element U3
+ChangePinName(U3, 3, -)
+ChangePinName(U3, 4, +)
+ChangePinName(U3, 2, ~)
+ChangePinName(U3, 1, ~)
+
+# Start of element C2
+ChangePinName(C2, 2, 2)
+ChangePinName(C2, 1, 1)
+
+# Start of element J3
+ChangePinName(J3, 4, 4)
+ChangePinName(J3, 3, 3)
+ChangePinName(J3, 2, 2)
+ChangePinName(J3, 1, 1)
+
+# Start of element J5
+ChangePinName(J5, 5, 5)
+ChangePinName(J5, 3, 3)
+ChangePinName(J5, 1, 1)
+ChangePinName(J5, 6, 6)
+ChangePinName(J5, 4, 4)
+ChangePinName(J5, 2, 2)
+
+# Start of element J4
+ChangePinName(J4, 5, 5)
+ChangePinName(J4, 3, 3)
+ChangePinName(J4, 1, 1)
+ChangePinName(J4, 6, 6)
+ChangePinName(J4, 4, 4)
+ChangePinName(J4, 2, 2)
+
+# Start of element J6
+ChangePinName(J6, 8, I7)
+ChangePinName(J6, 7, I6)
+ChangePinName(J6, 6, I5)
+ChangePinName(J6, 5, I4)
+ChangePinName(J6, 4, I3)
+ChangePinName(J6, 3, I2)
+ChangePinName(J6, 2, I1)
+ChangePinName(J6, 1, I0)
+
+# Start of element R20
+ChangePinName(R20, 1, 1)
+ChangePinName(R20, 2, 2)
+
+# Start of element R18
+ChangePinName(R18, 1, 1)
+ChangePinName(R18, 2, 2)
+
+# Start of element R19
+ChangePinName(R19, 1, 1)
+ChangePinName(R19, 2, 2)
+
+# Start of element R17
+ChangePinName(R17, 1, 1)
+ChangePinName(R17, 2, 2)
+
+# Start of element C6
+ChangePinName(C6, 2, 2)
+ChangePinName(C6, 1, 1)
+
+# Start of element C5
+ChangePinName(C5, 2, 2)
+ChangePinName(C5, 1, 1)
+
+# Start of element T6
+ChangePinName(T6, S, S)
+ChangePinName(T6, D, D)
+ChangePinName(T6, G, G)
+
+# Start of element T5
+ChangePinName(T5, S, S)
+ChangePinName(T5, D, D)
+ChangePinName(T5, G, G)
+
+# Start of element R16
+ChangePinName(R16, 1, 1)
+ChangePinName(R16, 2, 2)
+
+# Start of element C4
+ChangePinName(C4, 2, -)
+ChangePinName(C4, 1, +)
+
+# Start of element D5
+ChangePinName(D5, 2, 2)
+ChangePinName(D5, 1, 1)
+
+# Start of element C3
+ChangePinName(C3, 2, 2)
+ChangePinName(C3, 1, 1)
+
+# Start of element R15
+ChangePinName(R15, 1, 1)
+ChangePinName(R15, 2, 2)
+
+# Start of element U1
+ChangePinName(U1, 6, 6)
+ChangePinName(U1, 4, 4)
+ChangePinName(U1, 5, 5)
+ChangePinName(U1, 2, 2)
+ChangePinName(U1, 1, 1)
+
+# Start of element R14
+ChangePinName(R14, 1, 1)
+ChangePinName(R14, 2, 2)
+
+# Start of element R13
+ChangePinName(R13, 1, 1)
+ChangePinName(R13, 2, 2)
+
+# Start of element R12
+ChangePinName(R12, 1, 1)
+ChangePinName(R12, 2, 2)
+
+# Start of element R11
+ChangePinName(R11, 1, 1)
+ChangePinName(R11, 2, 2)
+
+# Start of element R10
+ChangePinName(R10, 1, 1)
+ChangePinName(R10, 2, 2)
+
+# Start of element R9
+ChangePinName(R9, 1, 1)
+ChangePinName(R9, 2, 2)
+
+# Start of element R8
+ChangePinName(R8, 1, 1)
+ChangePinName(R8, 2, 2)
+
+# Start of element R7
+ChangePinName(R7, 1, 1)
+ChangePinName(R7, 2, 2)
+
+# Start of element R6
+ChangePinName(R6, 1, 1)
+ChangePinName(R6, 2, 2)
+
+# Start of element R5
+ChangePinName(R5, 1, 1)
+ChangePinName(R5, 2, 2)
+
+# Start of element R3
+ChangePinName(R3, 1, 1)
+ChangePinName(R3, 2, 2)
+
+# Start of element R4
+ChangePinName(R4, 1, 1)
+ChangePinName(R4, 2, 2)
+
+# Start of element R1
+ChangePinName(R1, 1, 1)
+ChangePinName(R1, 2, 2)
+
+# Start of element R2
+ChangePinName(R2, 1, 1)
+ChangePinName(R2, 2, 2)
+
+# Start of element T4
+ChangePinName(T4, S, S)
+ChangePinName(T4, D, D)
+ChangePinName(T4, G, G)
+
+# Start of element T3
+ChangePinName(T3, S, S)
+ChangePinName(T3, D, D)
+ChangePinName(T3, G, G)
+
+# Start of element T2
+ChangePinName(T2, S, S)
+ChangePinName(T2, D, D)
+ChangePinName(T2, G, G)
+
+# Start of element T1
+ChangePinName(T1, S, S)
+ChangePinName(T1, D, D)
+ChangePinName(T1, G, G)
+
+# Start of element U2
+
+# Start of element C1
+ChangePinName(C1, 2, -)
+ChangePinName(C1, 1, +)
diff --git a/hardware/ledcontrol.csv b/hardware/ledcontrol.csv
new file mode 100644 (file)
index 0000000..24a353f
--- /dev/null
@@ -0,0 +1,44 @@
+refdes, device, footprint, value, symversion
+C1., POLARIZED_CAPACITOR, ACY1600P, 4700uF, 0.1
+C2., CAPACITOR, ACY300, 150nF, 0.1
+C3., CAPACITOR, ACY300, 150nF, 0.1
+C4., POLARIZED_CAPACITOR, RCY100P, 4u7, 0.1
+C5., CAPACITOR, ACY200, 47nF, 0.1
+C6., CAPACITOR, ACY200, 47nF, 0.1
+D5, DIODE, ACY200P, 1N4148, 
+J1., CONNECTOR_2, SIP2N, , 
+J2., CONNECTOR_2, SIP2N, , 
+J3., CONNECTOR_4, USB.fp, , 
+J4, CONNECTOR_6, SIP6, , 
+J5, CONNECTOR_6, SIP6, , 
+J6., RJ45, RJ45.fp, , 
+J7, HEADER40, HEADER40_2, , 
+R1, RESISTOR, ACY600, 15, 
+R2, RESISTOR, ACY600, 15, 
+R3, RESISTOR, ACY600, 15, 
+R4, RESISTOR, ACY600, 15, 
+R5, RESISTOR, ACY600, 15, 
+R6, RESISTOR, ACY600, 15, 
+R7, RESISTOR, ACY600, 15, 
+R8, RESISTOR, ACY600, 15, 
+R9, RESISTOR, ACY600, 15, 
+R10, RESISTOR, ACY600, 15, 
+R11, RESISTOR, ACY400, 120k, 
+R12, RESISTOR, ACY400, 120k, 
+R13, RESISTOR, ACY400, 120k, 
+R14, RESISTOR, ACY400, 120k, 
+R15, RESISTOR, ACY400, 2k2, 
+R16, RESISTOR, ACY400, 27k, 
+R17, RESISTOR, ACY400, 100k, 
+R18, RESISTOR, ACY400, 120k, 
+R19, RESISTOR, ACY400, 100k, 
+R20, RESISTOR, ACY400, 120k, 
+T1., NMOS_TRANSISTOR, TO220SW, FDP3672, 
+T2., NMOS_TRANSISTOR, TO220SW, FDP3672, 
+T3., NMOS_TRANSISTOR, TO220SW, FDP3672, 
+T4., NMOS_TRANSISTOR, TO220SW, FDP3672, 
+T5., NMOS_TRANSISTOR, TO220SW, FDP3672, 
+T6., NMOS_TRANSISTOR, TO220SW, FDP3672, 
+U1., CNY17, DIP6, TIL111, 
+U2, , SIP3, TSR 1-2450, 
+U3., bridge, BRIDGE_5401.fp, , 0.1
diff --git a/hardware/ledcontrol.net b/hardware/ledcontrol.net
new file mode 100644 (file)
index 0000000..9a51aeb
--- /dev/null
@@ -0,0 +1,33 @@
+unnamed_net33  J1-2 U3-2 
+unnamed_net32  J1-1 U3-1 
+unnamed_net31  J7-38 J6-6 C6-2 R19-1 T6-2 
+unnamed_net30  J7-37 R20-2 T6-1 
+unnamed_net29  J7-36 J6-5 R17-1 T5-2 
+unnamed_net28  J7-35 R18-2 T5-1 
+unnamed_net27  R19-2 J7-17 R17-2 R16-2 
+unnamed_net26  J2-1 R15-1 
+unnamed_net25  C3-2 R15-2 
+unnamed_net24  J7-3 R16-1 C4-1 U1-5 
+unnamed_net23  J2-2 D5-1 U1-2 
+unnamed_net22  C3-1 D5-2 U1-1 
+unnamed_net21  J5-5 R10-2 
+unnamed_net20  J4-5 R9-2 
+unnamed_net19  J5-4 R8-2 
+unnamed_net18  J4-4 R7-2 
+unnamed_net17  J5-3 R6-2 
+unnamed_net16  J4-3 R5-2 
+unnamed_net15  J5-2 R3-2 
+unnamed_net14  R3-1 R4-2 
+unnamed_net13  J4-2 R1-2 
+unnamed_net12  R1-1 R2-2 
+unnamed_net11  R10-1 R9-1 T4-2 
+unnamed_net10  J7-10 R14-2 T4-1 
+unnamed_net9   R8-1 R7-1 T3-2 
+unnamed_net8   J7-8 R13-2 T3-1 
+unnamed_net7   R6-1 R5-1 T2-2 
+unnamed_net6   R12-2 J7-7 T2-1 
+unnamed_net5   R4-1 R2-1 T1-2 
+unnamed_net4   J7-5 R11-2 T1-1 
+unnamed_net3   C2-2 J3-1 U2-3 
+unnamed_net2   U3-3 C4-2 U1-4 R18-1 R20-1 C6-1 J7-34 J6-4 T6-3 C5-1 T5-3 C2-1 J3-4 U2-2 T4-3 R14-1 T3-3 R13-1 T2-3 T1-3 R12-1 R11-1 C1-2 
+unnamed_net1   U3-4 U2-1 J5-6 J5-1 J4-6 J4-1 C1-1 
diff --git a/hardware/ledcontrol.pcb b/hardware/ledcontrol.pcb
new file mode 100644 (file)
index 0000000..0c0f361
--- /dev/null
@@ -0,0 +1,2315 @@
+# release: pcb 20140316
+
+# To read pcb files, the pcb version (or the git source date) must be >= the file version
+FileVersion[20091103]
+
+PCB["" 4200.00mil 3300.00mil]
+
+Grid[1000.000000 0.0000 0.0000 0]
+PolyArea[200000000.000000]
+Thermal[0.500000]
+DRC[10.00mil 10.00mil 10.00mil 10.00mil 15.00mil 10.00mil]
+Flags("rubberband,nameonpcb,clearnew,newfullpoly,snappin")
+Groups("1,c:2:3:4:5:6,s:7:8")
+Styles["Signal,10.00mil,50.00mil,20.00mil,10.00mil:Power,25.00mil,60.00mil,35.00mil,10.00mil:Fat,40.00mil,60.00mil,35.00mil,20.00mil:Skinny,6.00mil,24.02mil,11.81mil,6.00mil"]
+
+Symbol[' ' 18.00mil]
+(
+)
+Symbol['!' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 35.00mil 8.00mil]
+)
+Symbol['"' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 20.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 10.00mil 20.00mil 8.00mil]
+)
+Symbol['#' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil]
+       SymbolLine[15.00mil 20.00mil 15.00mil 40.00mil 8.00mil]
+       SymbolLine[5.00mil 20.00mil 5.00mil 40.00mil 8.00mil]
+)
+Symbol['$' 12.00mil]
+(
+       SymbolLine[15.00mil 15.00mil 20.00mil 20.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 15.00mil 15.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 5.00mil 15.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[15.00mil 45.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['%' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil]
+       SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[10.00mil 25.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[5.00mil 25.00mil 10.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 40.00mil 10.00mil 8.00mil]
+       SymbolLine[35.00mil 50.00mil 40.00mil 45.00mil 8.00mil]
+       SymbolLine[40.00mil 40.00mil 40.00mil 45.00mil 8.00mil]
+       SymbolLine[35.00mil 35.00mil 40.00mil 40.00mil 8.00mil]
+       SymbolLine[30.00mil 35.00mil 35.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 40.00mil 30.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 40.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[25.00mil 45.00mil 30.00mil 50.00mil 8.00mil]
+       SymbolLine[30.00mil 50.00mil 35.00mil 50.00mil 8.00mil]
+)
+Symbol['&' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil]
+       SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+)
+Symbol[''' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 10.00mil 10.00mil 8.00mil]
+)
+Symbol['(' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+)
+Symbol[')' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil]
+)
+Symbol['*' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol['+' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol[',' 12.00mil]
+(
+       SymbolLine[0.0000 60.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['-' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['.' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['/' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 30.00mil 15.00mil 8.00mil]
+)
+Symbol['0' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil]
+)
+Symbol['1' 12.00mil]
+(
+       SymbolLine[0.0000 18.00mil 8.00mil 10.00mil 8.00mil]
+       SymbolLine[8.00mil 10.00mil 8.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 15.00mil 50.00mil 8.00mil]
+)
+Symbol['2' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['3' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 28.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 23.00mil 8.00mil]
+       SymbolLine[20.00mil 33.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 33.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[20.00mil 23.00mil 15.00mil 28.00mil 8.00mil]
+)
+Symbol['4' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['5' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 30.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 25.00mil 15.00mil 25.00mil 8.00mil]
+       SymbolLine[15.00mil 25.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['6' 12.00mil]
+(
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 28.00mil 20.00mil 33.00mil 8.00mil]
+       SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 33.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['7' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil]
+)
+Symbol['8' 12.00mil]
+(
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 37.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 37.00mil 7.00mil 30.00mil 8.00mil]
+       SymbolLine[7.00mil 30.00mil 13.00mil 30.00mil 8.00mil]
+       SymbolLine[13.00mil 30.00mil 20.00mil 37.00mil 8.00mil]
+       SymbolLine[20.00mil 37.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 23.00mil 7.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 23.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 23.00mil 8.00mil]
+       SymbolLine[13.00mil 30.00mil 20.00mil 23.00mil 8.00mil]
+)
+Symbol['9' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol[':' 12.00mil]
+(
+       SymbolLine[0.0000 25.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol[';' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 10.00mil 40.00mil 8.00mil]
+       SymbolLine[10.00mil 25.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['<' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 10.00mil 20.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 10.00mil 40.00mil 8.00mil]
+)
+Symbol['=' 12.00mil]
+(
+       SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['>' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['?' 12.00mil]
+(
+       SymbolLine[10.00mil 30.00mil 10.00mil 35.00mil 8.00mil]
+       SymbolLine[10.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 20.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 20.00mil 8.00mil]
+)
+Symbol['@' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 40.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 40.00mil 50.00mil 8.00mil]
+       SymbolLine[50.00mil 35.00mil 50.00mil 10.00mil 8.00mil]
+       SymbolLine[50.00mil 10.00mil 40.00mil 0.0000 8.00mil]
+       SymbolLine[40.00mil 0.0000 10.00mil 0.0000 8.00mil]
+       SymbolLine[10.00mil 0.0000 0.0000 10.00mil 8.00mil]
+       SymbolLine[15.00mil 20.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 30.00mil 35.00mil 8.00mil]
+       SymbolLine[30.00mil 35.00mil 35.00mil 30.00mil 8.00mil]
+       SymbolLine[35.00mil 30.00mil 40.00mil 35.00mil 8.00mil]
+       SymbolLine[35.00mil 30.00mil 35.00mil 15.00mil 8.00mil]
+       SymbolLine[35.00mil 20.00mil 30.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 30.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 15.00mil 20.00mil 8.00mil]
+       SymbolLine[40.00mil 35.00mil 50.00mil 35.00mil 8.00mil]
+)
+Symbol['A' 12.00mil]
+(
+       SymbolLine[0.0000 20.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 20.00mil 7.00mil 10.00mil 8.00mil]
+       SymbolLine[7.00mil 10.00mil 18.00mil 10.00mil 8.00mil]
+       SymbolLine[18.00mil 10.00mil 25.00mil 20.00mil 8.00mil]
+       SymbolLine[25.00mil 20.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil]
+)
+Symbol['B' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[25.00mil 33.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 28.00mil 25.00mil 33.00mil 8.00mil]
+       SymbolLine[5.00mil 28.00mil 20.00mil 28.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 23.00mil 8.00mil]
+       SymbolLine[20.00mil 28.00mil 25.00mil 23.00mil 8.00mil]
+)
+Symbol['C' 12.00mil]
+(
+       SymbolLine[7.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 43.00mil 7.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 17.00mil 0.0000 43.00mil 8.00mil]
+       SymbolLine[0.0000 17.00mil 7.00mil 10.00mil 8.00mil]
+       SymbolLine[7.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['D' 12.00mil]
+(
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[18.00mil 10.00mil 25.00mil 17.00mil 8.00mil]
+       SymbolLine[25.00mil 17.00mil 25.00mil 43.00mil 8.00mil]
+       SymbolLine[18.00mil 50.00mil 25.00mil 43.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 18.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 18.00mil 10.00mil 8.00mil]
+)
+Symbol['E' 12.00mil]
+(
+       SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['F' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 28.00mil 15.00mil 28.00mil 8.00mil]
+)
+Symbol['G' 12.00mil]
+(
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['H' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil]
+)
+Symbol['I' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['J' 12.00mil]
+(
+       SymbolLine[7.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 0.0000 40.00mil 8.00mil]
+)
+Symbol['K' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['L' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['M' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 30.00mil 10.00mil 8.00mil]
+       SymbolLine[30.00mil 10.00mil 30.00mil 50.00mil 8.00mil]
+)
+Symbol['N' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['O' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['P' 12.00mil]
+(
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['Q' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil]
+       SymbolLine[20.00mil 15.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['R' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[13.00mil 30.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['S' 12.00mil]
+(
+       SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['T' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['U' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 10.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['V' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 10.00mil 8.00mil]
+)
+Symbol['W' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 30.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[25.00mil 50.00mil 30.00mil 30.00mil 8.00mil]
+       SymbolLine[30.00mil 30.00mil 30.00mil 10.00mil 8.00mil]
+)
+Symbol['X' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['Y' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['Z' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil]
+)
+Symbol['[' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['\' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 30.00mil 45.00mil 8.00mil]
+)
+Symbol[']' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['^' 12.00mil]
+(
+       SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 10.00mil 10.00mil 15.00mil 8.00mil]
+)
+Symbol['_' 12.00mil]
+(
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['a' 12.00mil]
+(
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 45.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['b' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+)
+Symbol['c' 12.00mil]
+(
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['d' 12.00mil]
+(
+       SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['e' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[0.0000 40.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[20.00mil 40.00mil 20.00mil 35.00mil 8.00mil]
+)
+Symbol['f' 10.00mil]
+(
+       SymbolLine[5.00mil 15.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[10.00mil 10.00mil 15.00mil 10.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 10.00mil 30.00mil 8.00mil]
+)
+Symbol['g' 12.00mil]
+(
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil]
+       SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil]
+       SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil]
+)
+Symbol['h' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['i' 10.00mil]
+(
+       SymbolLine[0.0000 20.00mil 0.0000 21.00mil 10.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 50.00mil 8.00mil]
+)
+Symbol['j' 10.00mil]
+(
+       SymbolLine[5.00mil 20.00mil 5.00mil 21.00mil 10.00mil]
+       SymbolLine[5.00mil 35.00mil 5.00mil 60.00mil 8.00mil]
+       SymbolLine[0.0000 65.00mil 5.00mil 60.00mil 8.00mil]
+)
+Symbol['k' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 10.00mil 25.00mil 8.00mil]
+)
+Symbol['l' 10.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['m' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil]
+       SymbolLine[25.00mil 30.00mil 30.00mil 30.00mil 8.00mil]
+       SymbolLine[30.00mil 30.00mil 35.00mil 35.00mil 8.00mil]
+       SymbolLine[35.00mil 35.00mil 35.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['n' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['o' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['p' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 65.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['q' 12.00mil]
+(
+       SymbolLine[20.00mil 35.00mil 20.00mil 65.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['r' 12.00mil]
+(
+       SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+)
+Symbol['s' 12.00mil]
+(
+       SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 40.00mil 25.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 40.00mil 20.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 40.00mil 8.00mil]
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+)
+Symbol['t' 10.00mil]
+(
+       SymbolLine[5.00mil 10.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 25.00mil 10.00mil 25.00mil 8.00mil]
+)
+Symbol['u' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['v' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['w' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil]
+       SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 30.00mil 15.00mil 45.00mil 8.00mil]
+       SymbolLine[15.00mil 45.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 50.00mil 25.00mil 50.00mil 8.00mil]
+       SymbolLine[25.00mil 50.00mil 30.00mil 45.00mil 8.00mil]
+       SymbolLine[30.00mil 30.00mil 30.00mil 45.00mil 8.00mil]
+)
+Symbol['x' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil]
+)
+Symbol['y' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil]
+       SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil]
+       SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil]
+       SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil]
+       SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil]
+       SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil]
+       SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil]
+       SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil]
+)
+Symbol['z' 12.00mil]
+(
+       SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil]
+)
+Symbol['{' 12.00mil]
+(
+       SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil]
+)
+Symbol['|' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil]
+)
+Symbol['}' 12.00mil]
+(
+       SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil]
+       SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil]
+       SymbolLine[5.00mil 25.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil]
+       SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil]
+)
+Symbol['~' 12.00mil]
+(
+       SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil]
+       SymbolLine[5.00mil 30.00mil 10.00mil 30.00mil 8.00mil]
+       SymbolLine[10.00mil 30.00mil 15.00mil 35.00mil 8.00mil]
+       SymbolLine[15.00mil 35.00mil 20.00mil 35.00mil 8.00mil]
+       SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil]
+)
+Attribute("PCB::grid::unit" "mil")
+Attribute("PCB::grid::size" "10.00mil")
+Via[350.00mil 2750.00mil 60.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[450.00mil 2750.00mil 60.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[550.00mil 2750.00mil 60.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[650.00mil 2750.00mil 60.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[3450.00mil 2650.00mil 50.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[3550.00mil 2700.00mil 50.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[3450.00mil 2750.00mil 50.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[3550.00mil 2800.00mil 50.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[3450.00mil 2850.00mil 50.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[3550.00mil 2900.00mil 50.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[3450.00mil 2950.00mil 50.00mil 20.00mil 0.0000 20.00mil "" ""]
+Via[3550.00mil 3000.00mil 50.00mil 20.00mil 0.0000 20.00mil "" ""]
+
+Element["" "HEADER40_2" "J7" "unknown" 1100.00mil 3100.00mil -50.00mil 50.00mil 0 100 ""]
+(
+       Attribute("device" "HEADER40")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "1" "1" "square,edge2"]
+       Pin[0.0000 -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "2" "2" "edge2"]
+       Pin[100.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "3" "3" "edge2"]
+       Pin[100.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "4" "4" "edge2"]
+       Pin[200.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "5" "5" "edge2"]
+       Pin[200.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "6" "6" "edge2"]
+       Pin[300.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "7" "7" "edge2"]
+       Pin[300.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "8" "8" "edge2"]
+       Pin[400.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "9" "9" "edge2"]
+       Pin[400.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "10" "10" "edge2"]
+       Pin[500.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "11" "11" "edge2"]
+       Pin[500.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "12" "12" "edge2"]
+       Pin[600.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "13" "13" "edge2"]
+       Pin[600.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "14" "14" "edge2"]
+       Pin[700.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "15" "15" "edge2"]
+       Pin[700.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "16" "16" "edge2"]
+       Pin[800.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "17" "17" "edge2"]
+       Pin[800.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "18" "18" "edge2"]
+       Pin[900.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "19" "19" "edge2"]
+       Pin[900.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "20" "20" "edge2"]
+       Pin[1000.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "21" "21" "edge2"]
+       Pin[1000.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "22" "22" "edge2"]
+       Pin[1100.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "23" "23" "edge2"]
+       Pin[1100.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "24" "24" "edge2"]
+       Pin[1200.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "25" "25" "edge2"]
+       Pin[1200.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "26" "26" "edge2"]
+       Pin[1300.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "27" "27" "edge2"]
+       Pin[1300.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "28" "28" "edge2"]
+       Pin[1400.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "29" "29" "edge2"]
+       Pin[1400.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "30" "30" "edge2"]
+       Pin[1500.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "31" "31" "edge2"]
+       Pin[1500.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "32" "32" "edge2"]
+       Pin[1600.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "33" "33" "edge2"]
+       Pin[1600.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "34" "34" "edge2"]
+       Pin[1700.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "35" "35" "edge2"]
+       Pin[1700.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "36" "36" "edge2"]
+       Pin[1800.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "37" "37" "edge2"]
+       Pin[1800.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "38" "38" "edge2"]
+       Pin[1900.00mil 0.0000 60.00mil 30.00mil 66.00mil 38.00mil "39" "39" "edge2"]
+       Pin[1900.00mil -100.00mil 60.00mil 30.00mil 66.00mil 38.00mil "40" "40" "edge2"]
+       ElementLine [-50.00mil 50.00mil 1950.00mil 50.00mil 10.00mil]
+       ElementLine [1950.00mil -150.00mil 1950.00mil 50.00mil 10.00mil]
+       ElementLine [-50.00mil -150.00mil 1950.00mil -150.00mil 10.00mil]
+       ElementLine [-50.00mil -150.00mil -50.00mil 50.00mil 10.00mil]
+       ElementLine [50.00mil -50.00mil 50.00mil 50.00mil 10.00mil]
+       ElementLine [-50.00mil -50.00mil 50.00mil -50.00mil 10.00mil]
+
+       )
+
+Element["" "BRIDGE_5401.fp" "U3" "unknown" 400.00mil 1800.00mil 0.0000 0.0000 3 100 ""]
+(
+       Attribute("device" "bridge")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[300.00mil -1100.00mil 140.00mil 40.00mil 146.00mil 50.00mil "~" "1" ""]
+       Pin[300.00mil -700.00mil 140.00mil 40.00mil 146.00mil 50.00mil "~" "2" ""]
+       Pin[300.00mil -300.00mil 140.00mil 40.00mil 146.00mil 50.00mil "-" "3" ""]
+       Pin[300.00mil -1500.00mil 140.00mil 40.00mil 146.00mil 50.00mil "+" "4" ""]
+       ElementLine [500.00mil -1600.00mil 500.00mil -200.00mil 50.00mil]
+       ElementLine [100.00mil -200.00mil 500.00mil -200.00mil 50.00mil]
+       ElementLine [100.00mil -1600.00mil 100.00mil -200.00mil 50.00mil]
+       ElementLine [100.00mil -1600.00mil 500.00mil -1600.00mil 50.00mil]
+
+       )
+
+Element["" "RJ45.fp" "J6" "unknown" 3700.00mil 2800.00mil 0.0000 0.0000 3 100 ""]
+(
+       Attribute("device" "RJ45")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[-250.00mil -150.00mil 36.00mil 20.00mil 42.00mil 20.00mil "I0" "1" "edge2"]
+       Pin[-150.00mil -100.00mil 36.00mil 20.00mil 42.00mil 20.00mil "I1" "2" "edge2"]
+       Pin[-250.00mil -50.00mil 36.00mil 20.00mil 42.00mil 20.00mil "I2" "3" "edge2"]
+       Pin[-150.00mil 0.0000 36.00mil 20.00mil 42.00mil 20.00mil "I3" "4" "edge2"]
+       Pin[-250.00mil 50.00mil 36.00mil 20.00mil 42.00mil 20.00mil "I4" "5" "edge2"]
+       Pin[-150.00mil 100.00mil 36.00mil 20.00mil 42.00mil 20.00mil "I5" "6" "edge2"]
+       Pin[-250.00mil 150.00mil 36.00mil 20.00mil 42.00mil 20.00mil "I6" "7" "edge2"]
+       Pin[-150.00mil 200.00mil 36.00mil 20.00mil 42.00mil 20.00mil "I7" "8" "edge2"]
+       Pin[150.00mil -200.00mil 104.00mil 20.00mil 110.00mil 100.00mil "" "9" "edge2"]
+       Pin[150.00mil 250.00mil 104.00mil 20.00mil 110.00mil 100.00mil "" "10" "edge2"]
+       ElementLine [-350.00mil -300.00mil 350.00mil -300.00mil 10.00mil]
+       ElementLine [-350.00mil -300.00mil -350.00mil 350.00mil 10.00mil]
+       ElementLine [350.00mil -300.00mil 350.00mil 350.00mil 10.00mil]
+       ElementLine [-350.00mil 350.00mil 350.00mil 350.00mil 10.00mil]
+
+       )
+
+Element["" "TO220SW" "T5" "FDP3672" 2300.00mil 2400.00mil -100.00mil -200.00mil 0 100 ""]
+(
+       Attribute("device" "NMOS_TRANSISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 90.00mil 30.00mil 96.00mil 60.00mil "1" "1" "square,edge2"]
+       Pin[100.00mil 100.00mil 90.00mil 30.00mil 96.00mil 60.00mil "2" "2" "edge2"]
+       Pin[200.00mil 0.0000 90.00mil 30.00mil 96.00mil 60.00mil "3" "3" "edge2"]
+       ElementLine [-100.00mil -120.00mil 300.00mil -120.00mil 20.00mil]
+       ElementLine [300.00mil -120.00mil 300.00mil 60.00mil 20.00mil]
+       ElementLine [300.00mil 60.00mil -100.00mil 60.00mil 20.00mil]
+       ElementLine [-100.00mil 60.00mil -100.00mil -120.00mil 20.00mil]
+       ElementLine [-100.00mil -120.00mil 300.00mil -120.00mil 20.00mil]
+       ElementLine [300.00mil -120.00mil 300.00mil -60.00mil 20.00mil]
+       ElementLine [300.00mil -60.00mil -100.00mil -60.00mil 20.00mil]
+       ElementLine [-100.00mil -60.00mil -100.00mil -120.00mil 20.00mil]
+       ElementLine [30.00mil -120.00mil 30.00mil -60.00mil 10.00mil]
+       ElementLine [170.00mil -120.00mil 170.00mil -60.00mil 10.00mil]
+       ElementLine [100.00mil 100.00mil 100.00mil 60.00mil 30.00mil]
+
+       )
+
+Element["" "ACY400" "R16" "27k" 1200.00mil 2400.00mil 33.00mil 0.0000 3 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "1" "1" "square"]
+       Pin[0.0000 400.00mil 55.00mil 30.00mil 61.00mil 30.00mil "2" "2" ""]
+       ElementLine [0.0000 0.0000 0.0000 100.00mil 10.00mil]
+       ElementLine [0.0000 300.00mil 0.0000 400.00mil 10.00mil]
+       ElementLine [33.00mil 100.00mil 33.00mil 300.00mil 10.00mil]
+       ElementLine [-33.00mil 300.00mil 33.00mil 300.00mil 10.00mil]
+       ElementLine [-33.00mil 100.00mil -33.00mil 300.00mil 10.00mil]
+       ElementLine [-33.00mil 100.00mil 33.00mil 100.00mil 10.00mil]
+
+       )
+
+Element["" "RCY100P" "C4" "4u7" 900.00mil 2600.00mil -50.00mil -100.00mil 0 100 ""]
+(
+       Attribute("device" "POLARIZED_CAPACITOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 30.00mil "+" "1" "square,edge2"]
+       Pin[100.00mil 0.0000 60.00mil 30.00mil 66.00mil 30.00mil "-" "2" "edge2"]
+       ElementLine [-110.00mil 0.0000 -70.00mil 0.0000 10.00mil]
+       ElementLine [-90.00mil -20.00mil -90.00mil 20.00mil 10.00mil]
+       ElementLine [170.00mil 0.0000 210.00mil 0.0000 10.00mil]
+       ElementArc [50.00mil 0.0000 100.00mil 100.00mil 0 360 10.00mil]
+
+       )
+
+Element["" "ACY200P" "D5" "1N4148" 490.00mil 2300.00mil -16.00mil 0.0000 1 100 ""]
+(
+       Attribute("device" "DIODE")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "1" "1" "square"]
+       Pin[0.0000 -200.00mil 55.00mil 30.00mil 61.00mil 30.00mil "2" "2" ""]
+       ElementLine [0.0000 -50.00mil 0.0000 0.0000 10.00mil]
+       ElementLine [0.0000 -200.00mil 0.0000 -150.00mil 10.00mil]
+       ElementLine [-16.00mil -150.00mil -16.00mil -50.00mil 10.00mil]
+       ElementLine [-16.00mil -150.00mil 16.00mil -150.00mil 10.00mil]
+       ElementLine [16.00mil -150.00mil 16.00mil -50.00mil 10.00mil]
+       ElementLine [-16.00mil -50.00mil 16.00mil -50.00mil 10.00mil]
+       ElementLine [-77.00mil 0.0000 -37.00mil 0.0000 10.00mil]
+       ElementLine [-57.00mil -20.00mil -57.00mil 20.00mil 10.00mil]
+       ElementLine [-57.00mil -220.00mil -57.00mil -180.00mil 10.00mil]
+
+       )
+
+Element["" "ACY300" "C3" "150nF" 490.00mil 1950.00mil 0.0000 -25.00mil 0 100 ""]
+(
+       Attribute("device" "CAPACITOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "1" "1" "square,edge2"]
+       Pin[300.00mil 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "2" "2" "edge2"]
+       ElementLine [0.0000 0.0000 75.00mil 0.0000 10.00mil]
+       ElementLine [225.00mil 0.0000 300.00mil 0.0000 10.00mil]
+       ElementLine [75.00mil -25.00mil 225.00mil -25.00mil 10.00mil]
+       ElementLine [225.00mil -25.00mil 225.00mil 25.00mil 10.00mil]
+       ElementLine [225.00mil 25.00mil 75.00mil 25.00mil 10.00mil]
+       ElementLine [75.00mil 25.00mil 75.00mil -25.00mil 10.00mil]
+
+       )
+
+Element["" "ACY400" "R15" "2k2" 390.00mil 1830.00mil 0.0000 -33.00mil 0 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "1" "1" "square,edge2"]
+       Pin[400.00mil 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "2" "2" "edge2"]
+       ElementLine [0.0000 0.0000 100.00mil 0.0000 10.00mil]
+       ElementLine [300.00mil 0.0000 400.00mil 0.0000 10.00mil]
+       ElementLine [100.00mil -33.00mil 300.00mil -33.00mil 10.00mil]
+       ElementLine [300.00mil -33.00mil 300.00mil 33.00mil 10.00mil]
+       ElementLine [300.00mil 33.00mil 100.00mil 33.00mil 10.00mil]
+       ElementLine [100.00mil 33.00mil 100.00mil -33.00mil 10.00mil]
+
+       )
+
+Element["" "DIP6" "U1" "TIL111" 660.00mil 2100.00mil -50.00mil -50.00mil 3 100 ""]
+(
+       Attribute("device" "CNY17")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" "square,edge2"]
+       Pin[0.0000 100.00mil 60.00mil 30.00mil 66.00mil 28.00mil "2" "2" "edge2"]
+       Pin[0.0000 200.00mil 60.00mil 30.00mil 66.00mil 28.00mil "3" "3" "edge2"]
+       Pin[300.00mil 200.00mil 60.00mil 30.00mil 66.00mil 28.00mil "4" "4" "edge2"]
+       Pin[300.00mil 100.00mil 60.00mil 30.00mil 66.00mil 28.00mil "5" "5" "edge2"]
+       Pin[300.00mil 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "6" "6" "edge2"]
+       ElementLine [-50.00mil -50.00mil -50.00mil 250.00mil 10.00mil]
+       ElementLine [-50.00mil 250.00mil 350.00mil 250.00mil 10.00mil]
+       ElementLine [350.00mil 250.00mil 350.00mil -50.00mil 10.00mil]
+       ElementLine [-50.00mil -50.00mil 100.00mil -50.00mil 10.00mil]
+       ElementLine [200.00mil -50.00mil 350.00mil -50.00mil 10.00mil]
+       ElementArc [150.00mil -50.00mil 50.00mil 50.00mil 0 180 10.00mil]
+
+       )
+
+Element["" "ACY1600P" "C1" "4700uF" 1500.00mil 200.00mil 133.00mil 0.0000 3 100 ""]
+(
+       Attribute("device" "POLARIZED_CAPACITOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "+" "1" "square"]
+       Pin[0.0000 1600.00mil 80.00mil 30.00mil 86.00mil 50.00mil "-" "2" ""]
+       ElementLine [0.0000 0.0000 0.0000 400.00mil 10.00mil]
+       ElementLine [0.0000 1200.00mil 0.0000 1600.00mil 10.00mil]
+       ElementLine [133.00mil 400.00mil 133.00mil 1200.00mil 10.00mil]
+       ElementLine [-133.00mil 1200.00mil 133.00mil 1200.00mil 10.00mil]
+       ElementLine [-133.00mil 400.00mil -133.00mil 1200.00mil 10.00mil]
+       ElementLine [-133.00mil 400.00mil 133.00mil 400.00mil 10.00mil]
+       ElementLine [50.00mil 0.0000 90.00mil 0.0000 10.00mil]
+       ElementLine [70.00mil -20.00mil 70.00mil 20.00mil 10.00mil]
+       ElementLine [70.00mil 1580.00mil 70.00mil 1620.00mil 10.00mil]
+
+       )
+
+Element["" "TSR.fp" "U2" "TSR" 1400.00mil 2500.00mil 150.00mil -250.00mil 3 100 ""]
+(
+       Attribute("device" "TSR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[250.00mil -300.00mil 50.00mil 20.00mil 56.00mil 20.00mil "" "1" ""]
+       Pin[250.00mil -200.00mil 50.00mil 20.00mil 56.00mil 20.00mil "" "2" ""]
+       Pin[250.00mil -100.00mil 50.00mil 20.00mil 56.00mil 20.00mil "" "3" ""]
+       ElementLine [0.0000 -450.00mil 350.00mil -450.00mil 10.00mil]
+       ElementLine [350.00mil -450.00mil 350.00mil 50.00mil 10.00mil]
+       ElementLine [0.0000 50.00mil 350.00mil 50.00mil 10.00mil]
+       ElementLine [0.0000 -450.00mil 0.0000 50.00mil 10.00mil]
+
+       )
+
+Element["" "ACY400" "R18" "120k" 2600.00mil 2200.00mil 0.0000 33.00mil 2 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "1" "1" "square,edge2"]
+       Pin[-400.00mil 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "2" "2" "edge2"]
+       ElementLine [-100.00mil 0.0000 0.0000 0.0000 10.00mil]
+       ElementLine [-400.00mil 0.0000 -300.00mil 0.0000 10.00mil]
+       ElementLine [-300.00mil 33.00mil -100.00mil 33.00mil 10.00mil]
+       ElementLine [-300.00mil -33.00mil -300.00mil 33.00mil 10.00mil]
+       ElementLine [-300.00mil -33.00mil -100.00mil -33.00mil 10.00mil]
+       ElementLine [-100.00mil -33.00mil -100.00mil 33.00mil 10.00mil]
+
+       )
+
+Element["" "ACY400" "R17" "100k" 2200.00mil 2600.00mil 0.0000 -33.00mil 0 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "1" "1" "square,edge2"]
+       Pin[400.00mil 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "2" "2" "edge2"]
+       ElementLine [0.0000 0.0000 100.00mil 0.0000 10.00mil]
+       ElementLine [300.00mil 0.0000 400.00mil 0.0000 10.00mil]
+       ElementLine [100.00mil -33.00mil 300.00mil -33.00mil 10.00mil]
+       ElementLine [300.00mil -33.00mil 300.00mil 33.00mil 10.00mil]
+       ElementLine [300.00mil 33.00mil 100.00mil 33.00mil 10.00mil]
+       ElementLine [100.00mil 33.00mil 100.00mil -33.00mil 10.00mil]
+
+       )
+
+Element["" "ACY200" "C5" "47nF" 2600.00mil 2800.00mil 0.0000 16.00mil 2 100 ""]
+(
+       Attribute("device" "CAPACITOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "1" "1" "square,edge2"]
+       Pin[-200.00mil 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "2" "2" "edge2"]
+       ElementLine [-50.00mil 0.0000 0.0000 0.0000 10.00mil]
+       ElementLine [-200.00mil 0.0000 -150.00mil 0.0000 10.00mil]
+       ElementLine [-150.00mil 16.00mil -50.00mil 16.00mil 10.00mil]
+       ElementLine [-150.00mil -16.00mil -150.00mil 16.00mil 10.00mil]
+       ElementLine [-150.00mil -16.00mil -50.00mil -16.00mil 10.00mil]
+       ElementLine [-50.00mil -16.00mil -50.00mil 16.00mil 10.00mil]
+
+       )
+
+Element["" "ACY400" "R11" "120k" 2300.00mil 100.00mil 33.00mil 0.0000 3 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "1" "1" "square"]
+       Pin[0.0000 400.00mil 55.00mil 30.00mil 61.00mil 30.00mil "2" "2" ""]
+       ElementLine [0.0000 0.0000 0.0000 100.00mil 10.00mil]
+       ElementLine [0.0000 300.00mil 0.0000 400.00mil 10.00mil]
+       ElementLine [33.00mil 100.00mil 33.00mil 300.00mil 10.00mil]
+       ElementLine [-33.00mil 300.00mil 33.00mil 300.00mil 10.00mil]
+       ElementLine [-33.00mil 100.00mil -33.00mil 300.00mil 10.00mil]
+       ElementLine [-33.00mil 100.00mil 33.00mil 100.00mil 10.00mil]
+
+       )
+
+Element["" "SIP6" "J5" "unknown" 4000.00mil 1300.00mil -50.00mil -50.00mil 3 100 ""]
+(
+       Attribute("device" "CONNECTOR_6")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" "square"]
+       Pin[0.0000 100.00mil 60.00mil 30.00mil 66.00mil 28.00mil "2" "2" ""]
+       Pin[0.0000 200.00mil 60.00mil 30.00mil 66.00mil 28.00mil "3" "3" ""]
+       Pin[0.0000 300.00mil 60.00mil 30.00mil 66.00mil 28.00mil "4" "4" ""]
+       Pin[0.0000 400.00mil 60.00mil 30.00mil 66.00mil 28.00mil "5" "5" ""]
+       Pin[0.0000 500.00mil 60.00mil 30.00mil 66.00mil 28.00mil "6" "6" ""]
+       ElementLine [-50.00mil 0.0000 -50.00mil 500.00mil 20.00mil]
+       ElementLine [50.00mil 0.0000 50.00mil 500.00mil 20.00mil]
+       ElementLine [-50.00mil 50.00mil 50.00mil 50.00mil 10.00mil]
+       ElementArc [0.0000 0.0000 50.00mil 50.00mil 180 180 20.00mil]
+       ElementArc [0.0000 500.00mil 50.00mil 50.00mil 0 180 20.00mil]
+
+       )
+
+Element["" "SIP6" "J4" "unknown" 4000.00mil 300.00mil -50.00mil -50.00mil 3 100 ""]
+(
+       Attribute("device" "CONNECTOR_6")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" "square"]
+       Pin[0.0000 100.00mil 60.00mil 30.00mil 66.00mil 28.00mil "2" "2" ""]
+       Pin[0.0000 200.00mil 60.00mil 30.00mil 66.00mil 28.00mil "3" "3" ""]
+       Pin[0.0000 300.00mil 60.00mil 30.00mil 66.00mil 28.00mil "4" "4" ""]
+       Pin[0.0000 400.00mil 60.00mil 30.00mil 66.00mil 28.00mil "5" "5" ""]
+       Pin[0.0000 500.00mil 60.00mil 30.00mil 66.00mil 28.00mil "6" "6" ""]
+       ElementLine [-50.00mil 0.0000 -50.00mil 500.00mil 20.00mil]
+       ElementLine [50.00mil 0.0000 50.00mil 500.00mil 20.00mil]
+       ElementLine [-50.00mil 50.00mil 50.00mil 50.00mil 10.00mil]
+       ElementArc [0.0000 0.0000 50.00mil 50.00mil 180 180 20.00mil]
+       ElementArc [0.0000 500.00mil 50.00mil 50.00mil 0 180 20.00mil]
+
+       )
+
+Element["" "ACY600" "R10" "15" 3100.00mil 2000.00mil 0.0000 -50.00mil 0 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "1" "1" "square,edge2"]
+       Pin[600.00mil 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "2" "2" "edge2"]
+       ElementLine [0.0000 0.0000 150.00mil 0.0000 10.00mil]
+       ElementLine [450.00mil 0.0000 600.00mil 0.0000 10.00mil]
+       ElementLine [150.00mil -50.00mil 450.00mil -50.00mil 10.00mil]
+       ElementLine [450.00mil -50.00mil 450.00mil 50.00mil 10.00mil]
+       ElementLine [450.00mil 50.00mil 150.00mil 50.00mil 10.00mil]
+       ElementLine [150.00mil 50.00mil 150.00mil -50.00mil 10.00mil]
+
+       )
+
+Element["" "ACY600" "R9" "15" 3100.00mil 1000.00mil 0.0000 -50.00mil 0 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "1" "1" "square,edge2"]
+       Pin[600.00mil 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "2" "2" "edge2"]
+       ElementLine [0.0000 0.0000 150.00mil 0.0000 10.00mil]
+       ElementLine [450.00mil 0.0000 600.00mil 0.0000 10.00mil]
+       ElementLine [150.00mil -50.00mil 450.00mil -50.00mil 10.00mil]
+       ElementLine [450.00mil -50.00mil 450.00mil 50.00mil 10.00mil]
+       ElementLine [450.00mil 50.00mil 150.00mil 50.00mil 10.00mil]
+       ElementLine [150.00mil 50.00mil 150.00mil -50.00mil 10.00mil]
+
+       )
+
+Element["" "ACY600" "R8" "15" 3100.00mil 1800.00mil 0.0000 -50.00mil 0 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "1" "1" "square,edge2"]
+       Pin[600.00mil 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "2" "2" "edge2"]
+       ElementLine [0.0000 0.0000 150.00mil 0.0000 10.00mil]
+       ElementLine [450.00mil 0.0000 600.00mil 0.0000 10.00mil]
+       ElementLine [150.00mil -50.00mil 450.00mil -50.00mil 10.00mil]
+       ElementLine [450.00mil -50.00mil 450.00mil 50.00mil 10.00mil]
+       ElementLine [450.00mil 50.00mil 150.00mil 50.00mil 10.00mil]
+       ElementLine [150.00mil 50.00mil 150.00mil -50.00mil 10.00mil]
+
+       )
+
+Element["" "ACY600" "R7" "15" 3100.00mil 800.00mil 0.0000 -50.00mil 0 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "1" "1" "square,edge2"]
+       Pin[600.00mil 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "2" "2" "edge2"]
+       ElementLine [0.0000 0.0000 150.00mil 0.0000 10.00mil]
+       ElementLine [450.00mil 0.0000 600.00mil 0.0000 10.00mil]
+       ElementLine [150.00mil -50.00mil 450.00mil -50.00mil 10.00mil]
+       ElementLine [450.00mil -50.00mil 450.00mil 50.00mil 10.00mil]
+       ElementLine [450.00mil 50.00mil 150.00mil 50.00mil 10.00mil]
+       ElementLine [150.00mil 50.00mil 150.00mil -50.00mil 10.00mil]
+
+       )
+
+Element["" "ACY600" "R6" "15" 3100.00mil 1600.00mil 0.0000 -50.00mil 0 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "1" "1" "square,edge2"]
+       Pin[600.00mil 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "2" "2" "edge2"]
+       ElementLine [0.0000 0.0000 150.00mil 0.0000 10.00mil]
+       ElementLine [450.00mil 0.0000 600.00mil 0.0000 10.00mil]
+       ElementLine [150.00mil -50.00mil 450.00mil -50.00mil 10.00mil]
+       ElementLine [450.00mil -50.00mil 450.00mil 50.00mil 10.00mil]
+       ElementLine [450.00mil 50.00mil 150.00mil 50.00mil 10.00mil]
+       ElementLine [150.00mil 50.00mil 150.00mil -50.00mil 10.00mil]
+
+       )
+
+Element["" "ACY600" "R5" "15" 3100.00mil 600.00mil 0.0000 -50.00mil 0 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "1" "1" "square,edge2"]
+       Pin[600.00mil 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "2" "2" "edge2"]
+       ElementLine [0.0000 0.0000 150.00mil 0.0000 10.00mil]
+       ElementLine [450.00mil 0.0000 600.00mil 0.0000 10.00mil]
+       ElementLine [150.00mil -50.00mil 450.00mil -50.00mil 10.00mil]
+       ElementLine [450.00mil -50.00mil 450.00mil 50.00mil 10.00mil]
+       ElementLine [450.00mil 50.00mil 150.00mil 50.00mil 10.00mil]
+       ElementLine [150.00mil 50.00mil 150.00mil -50.00mil 10.00mil]
+
+       )
+
+Element["" "ACY600" "R3" "15" 3100.00mil 1200.00mil 0.0000 -50.00mil 0 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "1" "1" "square,edge2"]
+       Pin[600.00mil 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "2" "2" "edge2"]
+       ElementLine [0.0000 0.0000 150.00mil 0.0000 10.00mil]
+       ElementLine [450.00mil 0.0000 600.00mil 0.0000 10.00mil]
+       ElementLine [150.00mil -50.00mil 450.00mil -50.00mil 10.00mil]
+       ElementLine [450.00mil -50.00mil 450.00mil 50.00mil 10.00mil]
+       ElementLine [450.00mil 50.00mil 150.00mil 50.00mil 10.00mil]
+       ElementLine [150.00mil 50.00mil 150.00mil -50.00mil 10.00mil]
+
+       )
+
+Element["" "ACY600" "R1" "15" 3100.00mil 200.00mil 0.0000 -50.00mil 0 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "1" "1" "square,edge2"]
+       Pin[600.00mil 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "2" "2" "edge2"]
+       ElementLine [0.0000 0.0000 150.00mil 0.0000 10.00mil]
+       ElementLine [450.00mil 0.0000 600.00mil 0.0000 10.00mil]
+       ElementLine [150.00mil -50.00mil 450.00mil -50.00mil 10.00mil]
+       ElementLine [450.00mil -50.00mil 450.00mil 50.00mil 10.00mil]
+       ElementLine [450.00mil 50.00mil 150.00mil 50.00mil 10.00mil]
+       ElementLine [150.00mil 50.00mil 150.00mil -50.00mil 10.00mil]
+
+       )
+
+Element["" "ACY600" "R2" "15" 3700.00mil 400.00mil 0.0000 50.00mil 2 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "1" "1" "square,edge2"]
+       Pin[-600.00mil 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "2" "2" "edge2"]
+       ElementLine [-150.00mil 0.0000 0.0000 0.0000 10.00mil]
+       ElementLine [-600.00mil 0.0000 -450.00mil 0.0000 10.00mil]
+       ElementLine [-450.00mil 50.00mil -150.00mil 50.00mil 10.00mil]
+       ElementLine [-450.00mil -50.00mil -450.00mil 50.00mil 10.00mil]
+       ElementLine [-450.00mil -50.00mil -150.00mil -50.00mil 10.00mil]
+       ElementLine [-150.00mil -50.00mil -150.00mil 50.00mil 10.00mil]
+
+       )
+
+Element["" "TO220SW" "T1" "FDP3672" 2500.00mil 400.00mil -200.00mil 100.00mil 1 100 ""]
+(
+       Attribute("device" "NMOS_TRANSISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 90.00mil 30.00mil 96.00mil 60.00mil "1" "1" "square"]
+       Pin[100.00mil -100.00mil 90.00mil 30.00mil 96.00mil 60.00mil "2" "2" ""]
+       Pin[0.0000 -200.00mil 90.00mil 30.00mil 96.00mil 60.00mil "3" "3" ""]
+       ElementLine [-120.00mil -300.00mil -120.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -300.00mil 60.00mil -300.00mil 20.00mil]
+       ElementLine [60.00mil -300.00mil 60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil 100.00mil 60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -300.00mil -120.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -300.00mil -60.00mil -300.00mil 20.00mil]
+       ElementLine [-60.00mil -300.00mil -60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil 100.00mil -60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -30.00mil -60.00mil -30.00mil 10.00mil]
+       ElementLine [-120.00mil -170.00mil -60.00mil -170.00mil 10.00mil]
+       ElementLine [60.00mil -100.00mil 100.00mil -100.00mil 30.00mil]
+
+       )
+
+Element["" "ACY300" "C2" "150nF" 350.00mil 2600.00mil 0.0000 -25.00mil 0 100 ""]
+(
+       Attribute("device" "CAPACITOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "1" "1" "square,edge2"]
+       Pin[300.00mil 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "2" "2" "edge2"]
+       ElementLine [0.0000 0.0000 75.00mil 0.0000 10.00mil]
+       ElementLine [225.00mil 0.0000 300.00mil 0.0000 10.00mil]
+       ElementLine [75.00mil -25.00mil 225.00mil -25.00mil 10.00mil]
+       ElementLine [225.00mil -25.00mil 225.00mil 25.00mil 10.00mil]
+       ElementLine [225.00mil 25.00mil 75.00mil 25.00mil 10.00mil]
+       ElementLine [75.00mil 25.00mil 75.00mil -25.00mil 10.00mil]
+
+       )
+
+Element["" "USB.fp" "J3" "unknown" 300.00mil 3300.00mil 0.0000 0.0000 2 100 ""]
+(
+       Attribute("device" "CONNECTOR_4")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[350.00mil -550.00mil 36.00mil 20.00mil 42.00mil 20.00mil "1" "1" "edge2"]
+       Pin[250.00mil -550.00mil 36.00mil 20.00mil 42.00mil 20.00mil "2" "2" "edge2"]
+       Pin[150.00mil -550.00mil 36.00mil 20.00mil 42.00mil 20.00mil "3" "3" "edge2"]
+       Pin[50.00mil -550.00mil 36.00mil 20.00mil 42.00mil 20.00mil "4" "4" "edge2"]
+       Pin[450.00mil -400.00mil 180.00mil 20.00mil 186.00mil 80.00mil "" "5" "edge2"]
+       Pin[-50.00mil -400.00mil 180.00mil 20.00mil 186.00mil 80.00mil "" "6" "edge2"]
+       ElementLine [450.00mil -550.00mil 450.00mil 0.0000 10.00mil]
+       ElementLine [-50.00mil -550.00mil 450.00mil -550.00mil 10.00mil]
+       ElementLine [-50.00mil 0.0000 450.00mil 0.0000 10.00mil]
+       ElementLine [-50.00mil -550.00mil -50.00mil 0.0000 10.00mil]
+
+       )
+
+Element["" "TO220SW" "T6" "FDP3672" 2900.00mil 2400.00mil -100.00mil -200.00mil 0 100 ""]
+(
+       Attribute("device" "NMOS_TRANSISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 90.00mil 30.00mil 96.00mil 60.00mil "1" "1" "square,edge2"]
+       Pin[100.00mil 100.00mil 90.00mil 30.00mil 96.00mil 60.00mil "2" "2" "edge2"]
+       Pin[200.00mil 0.0000 90.00mil 30.00mil 96.00mil 60.00mil "3" "3" "edge2"]
+       ElementLine [-100.00mil -120.00mil 300.00mil -120.00mil 20.00mil]
+       ElementLine [300.00mil -120.00mil 300.00mil 60.00mil 20.00mil]
+       ElementLine [300.00mil 60.00mil -100.00mil 60.00mil 20.00mil]
+       ElementLine [-100.00mil 60.00mil -100.00mil -120.00mil 20.00mil]
+       ElementLine [-100.00mil -120.00mil 300.00mil -120.00mil 20.00mil]
+       ElementLine [300.00mil -120.00mil 300.00mil -60.00mil 20.00mil]
+       ElementLine [300.00mil -60.00mil -100.00mil -60.00mil 20.00mil]
+       ElementLine [-100.00mil -60.00mil -100.00mil -120.00mil 20.00mil]
+       ElementLine [30.00mil -120.00mil 30.00mil -60.00mil 10.00mil]
+       ElementLine [170.00mil -120.00mil 170.00mil -60.00mil 10.00mil]
+       ElementLine [100.00mil 100.00mil 100.00mil 60.00mil 30.00mil]
+
+       )
+
+Element["" "ACY400" "R20" "120k" 3200.00mil 2200.00mil 0.0000 33.00mil 2 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "1" "1" "square,edge2"]
+       Pin[-400.00mil 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "2" "2" "edge2"]
+       ElementLine [-100.00mil 0.0000 0.0000 0.0000 10.00mil]
+       ElementLine [-400.00mil 0.0000 -300.00mil 0.0000 10.00mil]
+       ElementLine [-300.00mil 33.00mil -100.00mil 33.00mil 10.00mil]
+       ElementLine [-300.00mil -33.00mil -300.00mil 33.00mil 10.00mil]
+       ElementLine [-300.00mil -33.00mil -100.00mil -33.00mil 10.00mil]
+       ElementLine [-100.00mil -33.00mil -100.00mil 33.00mil 10.00mil]
+
+       )
+
+Element["" "ACY400" "R19" "100k" 2800.00mil 2600.00mil 0.0000 -33.00mil 0 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "1" "1" "square,edge2"]
+       Pin[400.00mil 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "2" "2" "edge2"]
+       ElementLine [0.0000 0.0000 100.00mil 0.0000 10.00mil]
+       ElementLine [300.00mil 0.0000 400.00mil 0.0000 10.00mil]
+       ElementLine [100.00mil -33.00mil 300.00mil -33.00mil 10.00mil]
+       ElementLine [300.00mil -33.00mil 300.00mil 33.00mil 10.00mil]
+       ElementLine [300.00mil 33.00mil 100.00mil 33.00mil 10.00mil]
+       ElementLine [100.00mil 33.00mil 100.00mil -33.00mil 10.00mil]
+
+       )
+
+Element["" "ACY200" "C6" "47nF" 3100.00mil 2800.00mil 0.0000 16.00mil 2 100 ""]
+(
+       Attribute("device" "CAPACITOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "1" "1" "square,edge2"]
+       Pin[-200.00mil 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "2" "2" "edge2"]
+       ElementLine [-50.00mil 0.0000 0.0000 0.0000 10.00mil]
+       ElementLine [-200.00mil 0.0000 -150.00mil 0.0000 10.00mil]
+       ElementLine [-150.00mil 16.00mil -50.00mil 16.00mil 10.00mil]
+       ElementLine [-150.00mil -16.00mil -150.00mil 16.00mil 10.00mil]
+       ElementLine [-150.00mil -16.00mil -50.00mil -16.00mil 10.00mil]
+       ElementLine [-50.00mil -16.00mil -50.00mil 16.00mil 10.00mil]
+
+       )
+
+Element["" "TO220SW" "T4" "FDP3672" 2700.00mil 1900.00mil -200.00mil 100.00mil 1 100 ""]
+(
+       Attribute("device" "NMOS_TRANSISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 90.00mil 30.00mil 96.00mil 60.00mil "1" "1" "square"]
+       Pin[100.00mil -100.00mil 90.00mil 30.00mil 96.00mil 60.00mil "2" "2" ""]
+       Pin[0.0000 -200.00mil 90.00mil 30.00mil 96.00mil 60.00mil "3" "3" ""]
+       ElementLine [-120.00mil -300.00mil -120.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -300.00mil 60.00mil -300.00mil 20.00mil]
+       ElementLine [60.00mil -300.00mil 60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil 100.00mil 60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -300.00mil -120.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -300.00mil -60.00mil -300.00mil 20.00mil]
+       ElementLine [-60.00mil -300.00mil -60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil 100.00mil -60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -30.00mil -60.00mil -30.00mil 10.00mil]
+       ElementLine [-120.00mil -170.00mil -60.00mil -170.00mil 10.00mil]
+       ElementLine [60.00mil -100.00mil 100.00mil -100.00mil 30.00mil]
+
+       )
+
+Element["" "ACY400" "R14" "120k" 2500.00mil 1600.00mil 33.00mil 0.0000 3 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "1" "1" "square"]
+       Pin[0.0000 400.00mil 55.00mil 30.00mil 61.00mil 30.00mil "2" "2" ""]
+       ElementLine [0.0000 0.0000 0.0000 100.00mil 10.00mil]
+       ElementLine [0.0000 300.00mil 0.0000 400.00mil 10.00mil]
+       ElementLine [33.00mil 100.00mil 33.00mil 300.00mil 10.00mil]
+       ElementLine [-33.00mil 300.00mil 33.00mil 300.00mil 10.00mil]
+       ElementLine [-33.00mil 100.00mil -33.00mil 300.00mil 10.00mil]
+       ElementLine [-33.00mil 100.00mil 33.00mil 100.00mil 10.00mil]
+
+       )
+
+Element["" "ACY400" "R13" "120k" 2300.00mil 1100.00mil 33.00mil 0.0000 3 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "1" "1" "square"]
+       Pin[0.0000 400.00mil 55.00mil 30.00mil 61.00mil 30.00mil "2" "2" ""]
+       ElementLine [0.0000 0.0000 0.0000 100.00mil 10.00mil]
+       ElementLine [0.0000 300.00mil 0.0000 400.00mil 10.00mil]
+       ElementLine [33.00mil 100.00mil 33.00mil 300.00mil 10.00mil]
+       ElementLine [-33.00mil 300.00mil 33.00mil 300.00mil 10.00mil]
+       ElementLine [-33.00mil 100.00mil -33.00mil 300.00mil 10.00mil]
+       ElementLine [-33.00mil 100.00mil 33.00mil 100.00mil 10.00mil]
+
+       )
+
+Element["" "ACY400" "R12" "120k" 2500.00mil 600.00mil 33.00mil 0.0000 3 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 55.00mil 30.00mil 61.00mil 30.00mil "1" "1" "square"]
+       Pin[0.0000 400.00mil 55.00mil 30.00mil 61.00mil 30.00mil "2" "2" ""]
+       ElementLine [0.0000 0.0000 0.0000 100.00mil 10.00mil]
+       ElementLine [0.0000 300.00mil 0.0000 400.00mil 10.00mil]
+       ElementLine [33.00mil 100.00mil 33.00mil 300.00mil 10.00mil]
+       ElementLine [-33.00mil 300.00mil 33.00mil 300.00mil 10.00mil]
+       ElementLine [-33.00mil 100.00mil -33.00mil 300.00mil 10.00mil]
+       ElementLine [-33.00mil 100.00mil 33.00mil 100.00mil 10.00mil]
+
+       )
+
+Element["" "TO220SW" "T2" "FDP3672" 2700.00mil 900.00mil -200.00mil 100.00mil 1 100 ""]
+(
+       Attribute("device" "NMOS_TRANSISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 90.00mil 30.00mil 96.00mil 60.00mil "1" "1" "square"]
+       Pin[100.00mil -100.00mil 90.00mil 30.00mil 96.00mil 60.00mil "2" "2" ""]
+       Pin[0.0000 -200.00mil 90.00mil 30.00mil 96.00mil 60.00mil "3" "3" ""]
+       ElementLine [-120.00mil -300.00mil -120.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -300.00mil 60.00mil -300.00mil 20.00mil]
+       ElementLine [60.00mil -300.00mil 60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil 100.00mil 60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -300.00mil -120.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -300.00mil -60.00mil -300.00mil 20.00mil]
+       ElementLine [-60.00mil -300.00mil -60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil 100.00mil -60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -30.00mil -60.00mil -30.00mil 10.00mil]
+       ElementLine [-120.00mil -170.00mil -60.00mil -170.00mil 10.00mil]
+       ElementLine [60.00mil -100.00mil 100.00mil -100.00mil 30.00mil]
+
+       )
+
+Element["" "ACY600" "R4" "15" 3700.00mil 1400.00mil 0.0000 50.00mil 2 100 ""]
+(
+       Attribute("device" "RESISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "1" "1" "square,edge2"]
+       Pin[-600.00mil 0.0000 80.00mil 30.00mil 86.00mil 50.00mil "2" "2" "edge2"]
+       ElementLine [-150.00mil 0.0000 0.0000 0.0000 10.00mil]
+       ElementLine [-600.00mil 0.0000 -450.00mil 0.0000 10.00mil]
+       ElementLine [-450.00mil 50.00mil -150.00mil 50.00mil 10.00mil]
+       ElementLine [-450.00mil -50.00mil -450.00mil 50.00mil 10.00mil]
+       ElementLine [-450.00mil -50.00mil -150.00mil -50.00mil 10.00mil]
+       ElementLine [-150.00mil -50.00mil -150.00mil 50.00mil 10.00mil]
+
+       )
+
+Element["" "TO220SW" "T3" "FDP3672" 2500.00mil 1400.00mil -200.00mil 100.00mil 2 100 ""]
+(
+       Attribute("device" "NMOS_TRANSISTOR")
+       Attribute("manufacturer" "unknown")
+       Attribute("manufacturer_part_number" "unknown")
+       Attribute("vendor" "unknown")
+       Attribute("vendor_part_number" "unknown")
+       Pin[0.0000 0.0000 90.00mil 30.00mil 96.00mil 60.00mil "1" "1" "square"]
+       Pin[100.00mil -100.00mil 90.00mil 30.00mil 96.00mil 60.00mil "2" "2" ""]
+       Pin[0.0000 -200.00mil 90.00mil 30.00mil 96.00mil 60.00mil "3" "3" ""]
+       ElementLine [-120.00mil -300.00mil -120.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -300.00mil 60.00mil -300.00mil 20.00mil]
+       ElementLine [60.00mil -300.00mil 60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil 100.00mil 60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -300.00mil -120.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -300.00mil -60.00mil -300.00mil 20.00mil]
+       ElementLine [-60.00mil -300.00mil -60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil 100.00mil -60.00mil 100.00mil 20.00mil]
+       ElementLine [-120.00mil -30.00mil -60.00mil -30.00mil 10.00mil]
+       ElementLine [-120.00mil -170.00mil -60.00mil -170.00mil 10.00mil]
+       ElementLine [60.00mil -100.00mil 100.00mil -100.00mil 30.00mil]
+
+       )
+
+Element["" "3 TERM BLOCK" "J2" "DK ED1602-ND" 210.00mil 810.00mil 76.00mil 590.00mil 1 150 ""]
+(
+       Pin[0.0000 0.0000 110.00mil 30.00mil 140.00mil 48.00mil "1" "1" ""]
+       Pin[0.0000 194.00mil 110.00mil 30.00mil 140.00mil 48.00mil "2" "2" ""]
+       Pin[0.0000 388.00mil 110.00mil 30.00mil 140.00mil 48.00mil "3" "3" ""]
+       ElementLine [140.00mil 388.00mil 160.00mil 388.00mil 10.00mil]
+       ElementLine [140.00mil 194.00mil 160.00mil 194.00mil 10.00mil]
+       ElementLine [140.00mil 0.0000 160.00mil 0.0000 10.00mil]
+       ElementLine [-170.00mil -101.00mil -170.00mil -81.00mil 10.00mil]
+       ElementLine [-190.00mil -81.00mil -170.00mil -81.00mil 10.00mil]
+       ElementLine [-190.00mil -101.00mil -190.00mil -81.00mil 10.00mil]
+       ElementLine [-170.00mil 489.00mil -170.00mil 509.00mil 10.00mil]
+       ElementLine [-190.00mil 509.00mil -170.00mil 509.00mil 10.00mil]
+       ElementLine [-190.00mil 489.00mil -190.00mil 509.00mil 10.00mil]
+       ElementLine [-200.00mil -101.00mil 160.00mil -101.00mil 10.00mil]
+       ElementLine [-200.00mil -101.00mil -200.00mil 489.00mil 10.00mil]
+       ElementLine [-200.00mil 489.00mil 160.00mil 489.00mil 10.00mil]
+       ElementLine [160.00mil -101.00mil 160.00mil 489.00mil 10.00mil]
+
+       )
+
+Element["" "3 TERM BLOCK" "J2" "DK ED1602-ND" 210.00mil 2010.00mil 76.00mil 590.00mil 1 150 ""]
+(
+       Pin[0.0000 0.0000 110.00mil 30.00mil 140.00mil 48.00mil "1" "1" ""]
+       Pin[0.0000 194.00mil 110.00mil 30.00mil 140.00mil 48.00mil "2" "2" ""]
+       Pin[0.0000 388.00mil 110.00mil 30.00mil 140.00mil 48.00mil "3" "3" ""]
+       ElementLine [140.00mil 388.00mil 160.00mil 388.00mil 10.00mil]
+       ElementLine [140.00mil 194.00mil 160.00mil 194.00mil 10.00mil]
+       ElementLine [140.00mil 0.0000 160.00mil 0.0000 10.00mil]
+       ElementLine [-170.00mil -101.00mil -170.00mil -81.00mil 10.00mil]
+       ElementLine [-190.00mil -81.00mil -170.00mil -81.00mil 10.00mil]
+       ElementLine [-190.00mil -101.00mil -190.00mil -81.00mil 10.00mil]
+       ElementLine [-170.00mil 489.00mil -170.00mil 509.00mil 10.00mil]
+       ElementLine [-190.00mil 509.00mil -170.00mil 509.00mil 10.00mil]
+       ElementLine [-190.00mil 489.00mil -190.00mil 509.00mil 10.00mil]
+       ElementLine [-200.00mil -101.00mil 160.00mil -101.00mil 10.00mil]
+       ElementLine [-200.00mil -101.00mil -200.00mil 489.00mil 10.00mil]
+       ElementLine [-200.00mil 489.00mil 160.00mil 489.00mil 10.00mil]
+       ElementLine [160.00mil -101.00mil 160.00mil 489.00mil 10.00mil]
+
+       )
+Layer(1 "top")
+(
+)
+Layer(2 "ground")
+(
+)
+Layer(3 "signal2")
+(
+)
+Layer(4 "signal3")
+(
+)
+Layer(5 "power")
+(
+)
+Layer(6 "bottom")
+(
+       Line[210.00mil 1004.00mil 400.00mil 1100.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[700.00mil 1100.00mil 400.00mil 1100.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[300.00mil 700.00mil 200.00mil 800.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[700.00mil 700.00mil 300.00mil 700.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[390.00mil 1830.00mil 200.00mil 2030.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[790.00mil 1950.00mil 790.00mil 1830.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[580.00mil 2200.00mil 490.00mil 2300.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[490.00mil 2300.00mil 490.00mil 2300.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[660.00mil 2200.00mil 580.00mil 2200.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[660.00mil 2100.00mil 490.00mil 2100.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[490.00mil 1950.00mil 490.00mil 2100.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[75.2793mm 2500.00mil 72.7393mm 2600.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[72.7393mm 2600.00mil 2800.00mil 2600.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2900.00mil 2800.00mil 2900.00mil 3000.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3000.00mil 2500.00mil 75.2793mm 2500.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[75.2793mm 2500.00mil 2900.00mil 65.1193mm 10.00mil 20.00mil "clearline,auto"]
+       Line[2900.00mil 65.1193mm 2900.00mil 2800.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3550.00mil 2900.00mil 3500.00mil 2790.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3451.50mil 2693.00mil 3500.00mil 2730.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3451.50mil 2693.00mil 3003.00mil 2693.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3000.00mil 2500.00mil 3000.00mil 2510.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2900.00mil 2400.00mil 2720.00mil 2540.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2720.00mil 2540.00mil 2720.00mil 2650.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2850.00mil 2860.00mil 2720.00mil 2650.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2850.00mil 2860.00mil 2855.00mil 3055.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2855.00mil 2355.00mil 2800.00mil 2300.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2400.00mil 2500.00mil 2590.00mil 2690.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2800.00mil 2890.00mil 2690.00mil 2700.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2800.00mil 2890.00mil 2800.00mil 3000.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2200.00mil 2600.00mil 2137.50mil 2527.50mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2170.00mil 2130.00mil 2140.00mil 2160.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2370.00mil 2280.00mil 2240.00mil 2130.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2370.00mil 2280.00mil 2400.00mil 2500.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3450.00mil 2850.00mil 3365.00mil 2850.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3190.00mil 3210.00mil 2410.00mil 3210.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2345.00mil 2807.50mil 2345.00mil 3127.50mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2345.00mil 2807.50mil 2200.00mil 2662.50mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2200.00mil 2600.00mil 2200.00mil 2662.50mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2525.00mil 2737.50mil 2300.00mil 2512.50mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2525.00mil 2737.50mil 2660.00mil 2740.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2755.00mil 2877.50mil 2755.00mil 3055.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2300.00mil 2300.00mil 2200.00mil 2200.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2300.00mil 2300.00mil 2300.00mil 2400.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3200.00mil 2600.00mil 3200.00mil 2560.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3055.00mil 2242.50mil 3200.00mil 2340.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3055.00mil 2242.50mil 2960.00mil 2240.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2880.00mil 2120.00mil 2960.00mil 2240.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2880.00mil 2120.00mil 2760.00mil 2120.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[67.8656mm 2240.00mil 2670.00mil 2520.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[1500.00mil 200.00mil 1700.00mil 30.00mil 25.00mil 20.00mil "clearline"]
+       Line[3700.00mil 30.00mil 4000.00mil 300.00mil 25.00mil 20.00mil "clearline"]
+       Line[4000.00mil 300.00mil 4120.00mil 340.00mil 25.00mil 20.00mil "clearline"]
+       Line[4120.00mil 340.00mil 4120.00mil 740.00mil 25.00mil 20.00mil "clearline"]
+       Line[4120.00mil 740.00mil 4000.00mil 800.00mil 25.00mil 20.00mil "clearline"]
+       Line[4000.00mil 800.00mil 4000.00mil 1300.00mil 25.00mil 20.00mil "clearline"]
+       Line[4000.00mil 1300.00mil 4120.00mil 1380.00mil 25.00mil 20.00mil "clearline"]
+       Line[4120.00mil 1380.00mil 4120.00mil 1700.00mil 25.00mil 20.00mil "clearline"]
+       Line[4000.00mil 1700.00mil 3797.50mil 1902.50mil 25.00mil 20.00mil "clearline,auto"]
+       Line[4000.00mil 700.00mil 3797.50mil 902.50mil 25.00mil 20.00mil "clearline,auto"]
+       Line[4000.00mil 1600.00mil 3827.50mil 1600.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[3762.50mil 1665.00mil 3700.00mil 1727.50mil 25.00mil 20.00mil "clearline,auto"]
+       Line[3700.00mil 1727.50mil 3700.00mil 1800.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[4000.00mil 600.00mil 3827.50mil 600.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[3762.50mil 665.00mil 3700.00mil 727.50mil 25.00mil 20.00mil "clearline,auto"]
+       Line[3700.00mil 727.50mil 3700.00mil 800.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[4000.00mil 1500.00mil 3800.00mil 1500.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[4000.00mil 500.00mil 3800.00mil 500.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[4000.00mil 1400.00mil 3900.00mil 1400.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[3700.00mil 1200.00mil 3762.50mil 1262.50mil 25.00mil 20.00mil "clearline,auto"]
+       Line[4000.00mil 400.00mil 3900.00mil 400.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[3700.00mil 200.00mil 3762.50mil 262.50mil 25.00mil 20.00mil "clearline,auto"]
+       Line[3100.00mil 200.00mil 3100.00mil 400.00mil 25.00mil 20.00mil "clearline"]
+       Line[3100.00mil 1200.00mil 3100.00mil 1400.00mil 25.00mil 20.00mil "clearline"]
+       Line[3700.00mil 400.00mil 3600.00mil 500.00mil 25.00mil 20.00mil "clearline"]
+       Line[3600.00mil 500.00mil 3600.00mil 1300.00mil 25.00mil 20.00mil "clearline"]
+       Line[3600.00mil 1300.00mil 3700.00mil 1400.00mil 25.00mil 20.00mil "clearline"]
+       Line[2600.00mil 300.00mil 2800.00mil 100.00mil 25.00mil 20.00mil "clearline"]
+       Line[2800.00mil 100.00mil 3400.00mil 100.00mil 25.00mil 20.00mil "clearline"]
+       Line[3400.00mil 100.00mil 3700.00mil 400.00mil 25.00mil 20.00mil "clearline"]
+       Line[2800.00mil 800.00mil 2900.00mil 800.00mil 25.00mil 20.00mil "clearline"]
+       Line[2900.00mil 800.00mil 3100.00mil 600.00mil 25.00mil 20.00mil "clearline"]
+       Line[3100.00mil 600.00mil 3500.00mil 1000.00mil 25.00mil 20.00mil "clearline"]
+       Line[2600.00mil 1300.00mil 3100.00mil 800.00mil 25.00mil 20.00mil "clearline"]
+       Line[2800.00mil 1800.00mil 2800.00mil 1300.00mil 25.00mil 20.00mil "clearline"]
+       Line[2800.00mil 1300.00mil 3100.00mil 1000.00mil 25.00mil 20.00mil "clearline"]
+       Line[2800.00mil 1800.00mil 2900.00mil 1800.00mil 25.00mil 20.00mil "clearline"]
+       Line[2900.00mil 1800.00mil 3100.00mil 2000.00mil 25.00mil 20.00mil "clearline"]
+       Line[3100.00mil 800.00mil 3300.00mil 1000.00mil 25.00mil 20.00mil "clearline"]
+       Line[3300.00mil 1000.00mil 3300.00mil 1400.00mil 25.00mil 20.00mil "clearline"]
+       Line[3300.00mil 1400.00mil 3200.00mil 1500.00mil 25.00mil 20.00mil "clearline"]
+       Line[3200.00mil 1500.00mil 3000.00mil 1500.00mil 25.00mil 20.00mil "clearline"]
+       Line[3000.00mil 1500.00mil 2950.00mil 1530.00mil 25.00mil 20.00mil "clearline"]
+       Line[2950.00mil 1530.00mil 2950.00mil 1670.00mil 25.00mil 20.00mil "clearline"]
+       Line[2950.00mil 1670.00mil 3100.00mil 1800.00mil 25.00mil 20.00mil "clearline"]
+       Line[3500.00mil 1000.00mil 3500.00mil 1400.00mil 25.00mil 20.00mil "clearline"]
+       Line[3500.00mil 1400.00mil 3400.00mil 1500.00mil 25.00mil 20.00mil "clearline"]
+       Line[3400.00mil 1500.00mil 3300.00mil 1500.00mil 25.00mil 20.00mil "clearline"]
+       Line[3300.00mil 1500.00mil 3200.00mil 1600.00mil 25.00mil 20.00mil "clearline"]
+       Line[3200.00mil 1600.00mil 3100.00mil 1600.00mil 25.00mil 20.00mil "clearline"]
+       Line[2300.00mil 100.00mil 2400.00mil 100.00mil 25.00mil 20.00mil "clearline"]
+       Line[2400.00mil 100.00mil 2500.00mil 200.00mil 25.00mil 20.00mil "clearline"]
+       Line[2500.00mil 200.00mil 2500.00mil 300.00mil 25.00mil 20.00mil "clearline"]
+       Line[2700.00mil 450.00mil 2700.00mil 700.00mil 25.00mil 20.00mil "clearline"]
+       Line[2700.00mil 700.00mil 2600.00mil 700.00mil 25.00mil 20.00mil "clearline"]
+       Line[2600.00mil 700.00mil 2500.00mil 600.00mil 25.00mil 20.00mil "clearline"]
+       Line[2300.00mil 500.00mil 2400.00mil 500.00mil 25.00mil 20.00mil "clearline"]
+       Line[2400.00mil 500.00mil 2500.00mil 400.00mil 25.00mil 20.00mil "clearline"]
+       Line[2500.00mil 1000.00mil 2600.00mil 1000.00mil 25.00mil 20.00mil "clearline"]
+       Line[2600.00mil 1000.00mil 2700.00mil 900.00mil 25.00mil 20.00mil "clearline"]
+       Line[2500.00mil 2000.00mil 2525.00mil 2000.00mil 25.00mil 20.00mil "clearline"]
+       Line[2600.00mil 2000.00mil 2700.00mil 1900.00mil 25.00mil 20.00mil "clearline"]
+       Line[1500.00mil 300.00mil 700.00mil 300.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[1200.00mil 1500.00mil 1500.00mil 1800.00mil 25.00mil 20.00mil "clearline"]
+       Line[700.00mil 1500.00mil 1200.00mil 1500.00mil 25.00mil 20.00mil "clearline"]
+       Line[2300.00mil 1500.00mil 2400.00mil 1500.00mil 25.00mil 20.00mil "clearline"]
+       Line[2600.00mil 1600.00mil 2700.00mil 1700.00mil 25.00mil 20.00mil "clearline"]
+       Line[2500.00mil 1600.00mil 2600.00mil 1600.00mil 25.00mil 20.00mil "clearline"]
+       Line[2500.00mil 1200.00mil 2500.00mil 1300.00mil 25.00mil 20.00mil "clearline"]
+       Line[2400.00mil 1100.00mil 2500.00mil 1200.00mil 25.00mil 20.00mil "clearline"]
+       Line[2300.00mil 1100.00mil 2400.00mil 1100.00mil 25.00mil 20.00mil "clearline"]
+       Line[2700.00mil 1000.00mil 2500.00mil 1200.00mil 25.00mil 20.00mil "clearline"]
+       Line[2800.00mil 923.75mil 69.1833mm 1000.00mil 25.00mil 20.00mil "clearline"]
+       Line[2800.00mil 890.00mil 2800.00mil 923.75mil 25.00mil 20.00mil "clearline"]
+       Line[2700.00mil 3000.00mil 2655.00mil 3045.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2655.00mil 3045.00mil 2655.00mil 3137.50mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3100.00mil 3130.00mil 3100.00mil 3180.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3100.00mil 2800.00mil 3100.00mil 2860.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2600.00mil 2800.00mil 2700.00mil 2900.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2700.00mil 3000.00mil 2700.00mil 2900.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3600.00mil 2560.00mil 3215.50mil 2200.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3550.00mil 2800.00mil 3601.50mil 2798.50mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3262.50mil 2662.50mil 3140.00mil 2660.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3327.50mil 2557.50mil 3262.50mil 2662.50mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2740.00mil 2060.00mil 2600.00mil 2200.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3200.00mil 2200.00mil 2970.00mil 2060.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2600.00mil 2200.00mil 2500.00mil 2300.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2400.00mil 1500.00mil 2500.00mil 1400.00mil 25.00mil 20.00mil "clearline"]
+       Line[2500.00mil 300.00mil 2700.00mil 450.00mil 10.00mil 20.00mil "clearline"]
+       Line[2700.00mil 700.00mil 2700.00mil 800.00mil 10.00mil 20.00mil "clearline"]
+       Line[2700.00mil 800.00mil 2800.00mil 890.00mil 10.00mil 20.00mil "clearline"]
+       Line[2500.00mil 1300.00mil 2610.00mil 1390.00mil 10.00mil 20.00mil "clearline"]
+       Line[2610.00mil 1390.00mil 2600.00mil 1600.00mil 10.00mil 20.00mil "clearline"]
+       Line[2700.00mil 1700.00mil 2700.00mil 1800.00mil 10.00mil 20.00mil "clearline"]
+       Line[2700.00mil 1800.00mil 2800.00mil 1880.00mil 10.00mil 20.00mil "clearline"]
+       Line[2800.00mil 1880.00mil 2800.00mil 2060.00mil 10.00mil 20.00mil "clearline"]
+       Line[700.00mil 1500.00mil 700.00mil 1700.00mil 25.00mil 20.00mil "clearline"]
+       Line[700.00mil 1700.00mil 870.00mil 1700.00mil 25.00mil 20.00mil "clearline"]
+       Line[870.00mil 1700.00mil 870.00mil 2040.00mil 25.00mil 20.00mil "clearline"]
+       Line[870.00mil 2040.00mil 800.00mil 2200.00mil 25.00mil 20.00mil "clearline"]
+       Line[800.00mil 2200.00mil 800.00mil 2300.00mil 25.00mil 20.00mil "clearline"]
+       Line[800.00mil 2400.00mil 500.00mil 2400.00mil 25.00mil 20.00mil "clearline"]
+       Line[500.00mil 2400.00mil 350.00mil 2600.00mil 25.00mil 20.00mil "clearline"]
+       Line[350.00mil 2600.00mil 350.00mil 2700.00mil 25.00mil 20.00mil "clearline"]
+       Line[350.00mil 2700.00mil 350.00mil 2750.00mil 25.00mil 20.00mil "clearline"]
+       Line[960.00mil 2300.00mil 800.00mil 2300.00mil 25.00mil 20.00mil "clearline"]
+       Line[960.00mil 2300.00mil 1000.00mil 2400.00mil 25.00mil 20.00mil "clearline"]
+       Line[1000.00mil 2400.00mil 1000.00mil 2600.00mil 25.00mil 20.00mil "clearline"]
+       Line[1500.00mil 1800.00mil 1500.00mil 2220.00mil 25.00mil 20.00mil "clearline"]
+       Line[1500.00mil 2220.00mil 1650.00mil 2300.00mil 25.00mil 20.00mil "clearline"]
+       Line[960.00mil 2200.00mil 1100.00mil 2200.00mil 10.00mil 20.00mil "clearline"]
+       Line[1100.00mil 2200.00mil 1200.00mil 2300.00mil 10.00mil 20.00mil "clearline"]
+       Line[1200.00mil 2300.00mil 1200.00mil 2400.00mil 10.00mil 20.00mil "clearline"]
+       Line[1200.00mil 2400.00mil 1140.00mil 2520.00mil 10.00mil 20.00mil "clearline"]
+       Line[1140.00mil 2520.00mil 1060.00mil 2690.00mil 10.00mil 20.00mil "clearline"]
+       Line[1650.00mil 2400.00mil 1575.00mil 2400.00mil 25.00mil 20.00mil "clearline"]
+       Line[1575.00mil 2400.00mil 1300.00mil 2675.00mil 25.00mil 20.00mil "clearline"]
+       Line[1300.00mil 2675.00mil 1175.00mil 2675.00mil 25.00mil 20.00mil "clearline"]
+       Line[1175.00mil 2675.00mil 1050.00mil 2800.00mil 25.00mil 20.00mil "clearline"]
+       Line[1050.00mil 2800.00mil 875.00mil 2800.00mil 25.00mil 20.00mil "clearline"]
+       Line[875.00mil 2800.00mil 775.00mil 2700.00mil 25.00mil 20.00mil "clearline"]
+       Line[775.00mil 2700.00mil 650.00mil 2700.00mil 25.00mil 20.00mil "clearline"]
+       Line[650.00mil 2700.00mil 650.00mil 2750.00mil 25.00mil 20.00mil "clearline"]
+       Line[650.00mil 2750.00mil 650.00mil 2650.00mil 25.00mil 20.00mil "clearline"]
+       Line[650.00mil 2650.00mil 650.00mil 2600.00mil 25.00mil 20.00mil "clearline"]
+       Line[900.00mil 2600.00mil 850.00mil 2600.00mil 10.00mil 20.00mil "clearline"]
+       Line[850.00mil 2600.00mil 750.00mil 2500.00mil 10.00mil 20.00mil "clearline"]
+       Line[750.00mil 2500.00mil 525.00mil 2500.00mil 10.00mil 20.00mil "clearline"]
+       Line[525.00mil 2500.00mil 500.00mil 2525.00mil 10.00mil 20.00mil "clearline"]
+       Line[500.00mil 2525.00mil 500.00mil 2852.50mil 10.00mil 20.00mil "clearline"]
+       Line[697.50mil 3050.00mil 800.00mil 3050.00mil 10.00mil 20.00mil "clearline"]
+       Line[800.00mil 3050.00mil 950.00mil 3200.00mil 10.00mil 20.00mil "clearline"]
+       Line[950.00mil 3200.00mil 1150.00mil 3200.00mil 10.00mil 20.00mil "clearline"]
+       Line[1150.00mil 3200.00mil 1200.00mil 3100.00mil 10.00mil 20.00mil "clearline"]
+       Line[1200.00mil 3100.00mil 1187.50mil 3112.50mil 10.00mil 20.00mil "clearline"]
+       Line[1500.00mil 3000.00mil 1500.00mil 2975.00mil 10.00mil 20.00mil "clearline"]
+       Line[1500.00mil 2975.00mil 1600.00mil 2880.00mil 10.00mil 20.00mil "clearline"]
+       Line[1600.00mil 2880.00mil 1920.00mil 2880.00mil 10.00mil 20.00mil "clearline"]
+       Line[1920.00mil 2880.00mil 2040.00mil 2770.00mil 10.00mil 20.00mil "clearline"]
+       Line[2040.00mil 2770.00mil 2040.00mil 2110.00mil 10.00mil 20.00mil "clearline"]
+       Line[2040.00mil 2110.00mil 2150.00mil 2000.00mil 10.00mil 20.00mil "clearline"]
+       Line[2150.00mil 2000.00mil 2500.00mil 2000.00mil 10.00mil 20.00mil "clearline"]
+       Line[1400.00mil 3100.00mil 1400.00mil 3075.00mil 10.00mil 20.00mil "clearline"]
+       Line[1400.00mil 3100.00mil 1450.00mil 3050.00mil 10.00mil 20.00mil "clearline"]
+       Line[1450.00mil 3050.00mil 1450.00mil 2950.00mil 10.00mil 20.00mil "clearline"]
+       Line[1450.00mil 2950.00mil 1550.00mil 2850.00mil 10.00mil 20.00mil "clearline"]
+       Line[1550.00mil 2850.00mil 1880.00mil 2850.00mil 10.00mil 20.00mil "clearline"]
+       Line[1880.00mil 2850.00mil 2000.00mil 2750.00mil 10.00mil 20.00mil "clearline"]
+       Line[2000.00mil 2750.00mil 2000.00mil 1790.00mil 10.00mil 20.00mil "clearline"]
+       Line[2000.00mil 1790.00mil 2300.00mil 1500.00mil 10.00mil 20.00mil "clearline"]
+       Line[1400.00mil 3000.00mil 1400.00mil 2950.00mil 10.00mil 20.00mil "clearline"]
+       Line[1400.00mil 2950.00mil 1550.00mil 2800.00mil 10.00mil 20.00mil "clearline"]
+       Line[1550.00mil 2800.00mil 1870.00mil 2800.00mil 10.00mil 20.00mil "clearline"]
+       Line[1870.00mil 2800.00mil 1960.00mil 2720.00mil 10.00mil 20.00mil "clearline"]
+       Line[1960.00mil 2720.00mil 1960.00mil 1240.00mil 10.00mil 20.00mil "clearline"]
+       Line[1960.00mil 1240.00mil 2200.00mil 1000.00mil 10.00mil 20.00mil "clearline"]
+       Line[2200.00mil 1000.00mil 2500.00mil 1000.00mil 10.00mil 20.00mil "clearline"]
+       Line[1300.00mil 3100.00mil 1350.00mil 3050.00mil 10.00mil 20.00mil "clearline"]
+       Line[1350.00mil 3050.00mil 1350.00mil 2950.00mil 10.00mil 20.00mil "clearline"]
+       Line[1350.00mil 2950.00mil 1550.00mil 2750.00mil 10.00mil 20.00mil "clearline"]
+       Line[1550.00mil 2750.00mil 1850.00mil 2750.00mil 10.00mil 20.00mil "clearline"]
+       Line[1850.00mil 2750.00mil 1920.00mil 2670.00mil 10.00mil 20.00mil "clearline"]
+       Line[1920.00mil 2670.00mil 1920.00mil 810.00mil 10.00mil 20.00mil "clearline"]
+       Line[1920.00mil 810.00mil 2200.00mil 500.00mil 10.00mil 20.00mil "clearline"]
+       Line[2200.00mil 500.00mil 2300.00mil 500.00mil 10.00mil 20.00mil "clearline"]
+       Line[1500.00mil 200.00mil 1500.00mil 300.00mil 25.00mil 20.00mil "clearline"]
+       Line[1500.00mil 1175.00mil 1650.00mil 1325.00mil 25.00mil 20.00mil "clearline"]
+       Line[1650.00mil 1325.00mil 1650.00mil 2200.00mil 25.00mil 20.00mil "clearline"]
+       Line[1250.00mil 2850.00mil 1200.00mil 2800.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[1250.00mil 2850.00mil 1250.00mil 3180.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[1900.00mil 3100.00mil 1830.00mil 3200.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[1850.00mil 2220.00mil 1650.00mil 2300.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[2300.00mil 100.00mil 1850.00mil 550.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[2345.00mil 2807.50mil 2392.50mil 2807.50mil 25.00mil 20.00mil "clearline"]
+       Line[2392.50mil 2807.50mil 2400.00mil 2800.00mil 25.00mil 20.00mil "clearline"]
+       Line[3100.00mil 2400.00mil 3100.00mil 2577.50mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3600.00mil 2560.00mil 3327.50mil 2557.50mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3490.00mil 2833.00mil 3490.00mil 2930.00mil 10.00mil 20.00mil "clearline"]
+       Line[3490.00mil 2930.00mil 3510.00mil 2960.00mil 10.00mil 20.00mil "clearline"]
+       Line[3510.00mil 2960.00mil 3600.00mil 2960.00mil 10.00mil 20.00mil "clearline"]
+       Line[3600.00mil 2960.00mil 3610.00mil 2950.00mil 10.00mil 20.00mil "clearline"]
+       Line[3610.00mil 2950.00mil 3610.00mil 2807.00mil 10.00mil 20.00mil "clearline"]
+       Line[3610.00mil 2807.00mil 3603.00mil 2800.00mil 10.00mil 20.00mil "clearline"]
+       Line[2600.00mil 2600.00mil 2600.00mil 2580.00mil 10.00mil 20.00mil "clearline"]
+       Line[2600.00mil 2580.00mil 2430.00mil 2430.00mil 10.00mil 20.00mil "clearline"]
+       Line[2430.00mil 2430.00mil 2400.00mil 2140.00mil 10.00mil 20.00mil "clearline"]
+       Line[2400.00mil 2140.00mil 2390.00mil 2090.00mil 10.00mil 20.00mil "clearline"]
+       Line[2390.00mil 2090.00mil 2160.00mil 2090.00mil 10.00mil 20.00mil "clearline"]
+       Line[2160.00mil 2090.00mil 2090.00mil 2150.00mil 10.00mil 20.00mil "clearline"]
+       Line[2090.00mil 2150.00mil 2090.00mil 2780.00mil 10.00mil 20.00mil "clearline"]
+       Line[2090.00mil 2780.00mil 1950.00mil 2910.00mil 10.00mil 20.00mil "clearline"]
+       Line[1950.00mil 2910.00mil 1960.00mil 2920.00mil 10.00mil 20.00mil "clearline"]
+       Line[1960.00mil 2920.00mil 1950.00mil 2910.00mil 10.00mil 20.00mil "clearline"]
+       Line[1950.00mil 2910.00mil 1950.00mil 3050.00mil 10.00mil 20.00mil "clearline"]
+       Line[1930.00mil 3070.00mil 1900.00mil 3100.00mil 10.00mil 20.00mil "clearline"]
+       Line[1900.00mil 3100.00mil 1910.00mil 3090.00mil 10.00mil 20.00mil "clearline"]
+       Line[3000.00mil 2500.00mil 75.2793mm 2500.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3600.00mil 2560.00mil 3601.50mil 2798.50mil 10.00mil 20.00mil "clearline,auto"]
+       Line[1500.00mil 200.00mil 1500.00mil 300.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[580.00mil 2200.00mil 490.00mil 2300.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[490.00mil 2300.00mil 200.00mil 2214.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2500.00mil 2000.00mil 2525.00mil 2000.00mil 25.00mil 20.00mil "clearline"]
+       Line[1900.00mil 3100.00mil 1910.00mil 3090.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[1400.00mil 3100.00mil 1400.00mil 3075.00mil 10.00mil 20.00mil "clearline"]
+       Line[1200.00mil 3100.00mil 1187.50mil 3112.50mil 10.00mil 20.00mil "clearline"]
+       Line[3100.00mil 2800.00mil 3458.50mil 2800.00mil 10.00mil 20.00mil "clearline"]
+       Line[1500.00mil 300.00mil 1500.00mil 1175.00mil 25.00mil 20.00mil "clearline"]
+       Line[2500.00mil 2000.00mil 2525.00mil 2000.00mil 10.00mil 20.00mil "clearline"]
+       Line[800.00mil 2300.00mil 800.00mil 2400.00mil 25.00mil 20.00mil "clearline"]
+       Line[2800.00mil 2060.00mil 2740.00mil 2060.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2525.00mil 2000.00mil 2600.00mil 2000.00mil 25.00mil 20.00mil "clearline"]
+       Line[1950.00mil 3050.00mil 1930.00mil 3070.00mil 10.00mil 20.00mil "clearline"]
+       Line[3458.50mil 2800.00mil 3490.00mil 2833.00mil 10.00mil 20.00mil "clearline"]
+       Line[1850.00mil 550.00mil 1850.00mil 2220.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[1830.00mil 3200.00mil 1290.00mil 3200.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[1250.00mil 3180.00mil 1290.00mil 3200.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[500.00mil 2852.50mil 697.50mil 3050.00mil 10.00mil 20.00mil "clearline"]
+       Line[1060.00mil 2690.00mil 900.00mil 2690.00mil 10.00mil 20.00mil "clearline"]
+       Line[2500.00mil 2300.00mil 2500.00mil 2400.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2970.00mil 2060.00mil 2800.00mil 2060.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3140.00mil 2660.00mil 3100.00mil 2577.50mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3215.50mil 2200.00mil 3200.00mil 2200.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3100.00mil 2860.00mil 3100.00mil 3130.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3100.00mil 3180.00mil 2660.00mil 3180.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2655.00mil 3137.50mil 2660.00mil 3180.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[69.1833mm 1000.00mil 2700.00mil 1000.00mil 25.00mil 20.00mil "clearline"]
+       Line[3900.00mil 400.00mil 3762.50mil 262.50mil 25.00mil 20.00mil "clearline,auto"]
+       Line[3900.00mil 1400.00mil 3762.50mil 1262.50mil 25.00mil 20.00mil "clearline,auto"]
+       Line[3800.00mil 500.00mil 3700.00mil 600.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[3800.00mil 1500.00mil 3700.00mil 1600.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[3827.50mil 600.00mil 3762.50mil 665.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[3827.50mil 1600.00mil 3762.50mil 1665.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[3797.50mil 902.50mil 3700.00mil 1000.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[3797.50mil 1902.50mil 3700.00mil 2000.00mil 25.00mil 20.00mil "clearline,auto"]
+       Line[4120.00mil 1700.00mil 4000.00mil 1800.00mil 25.00mil 20.00mil "clearline"]
+       Line[1700.00mil 30.00mil 3700.00mil 30.00mil 25.00mil 20.00mil "clearline"]
+       Line[2670.00mil 2520.00mil 2600.00mil 2600.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2760.00mil 2120.00mil 67.8656mm 2240.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2960.00mil 2240.00mil 2960.00mil 2240.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3200.00mil 2340.00mil 3200.00mil 2560.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2755.00mil 3055.00mil 2800.00mil 3100.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2660.00mil 2740.00mil 2755.00mil 2877.50mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2410.00mil 3210.00mil 2345.00mil 3127.50mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3190.00mil 3020.00mil 3190.00mil 3210.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3365.00mil 2850.00mil 3190.00mil 3020.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2240.00mil 2130.00mil 2170.00mil 2130.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2140.00mil 2160.00mil 2137.50mil 2527.50mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2690.00mil 2700.00mil 2590.00mil 2690.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2855.00mil 2355.00mil 2900.00mil 2400.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2800.00mil 2300.00mil 2800.00mil 2200.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2855.00mil 3055.00mil 2900.00mil 3100.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3003.00mil 2693.00mil 3000.00mil 2510.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3500.00mil 2730.00mil 3500.00mil 2790.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[2300.00mil 2512.50mil 2300.00mil 2400.00mil 10.00mil 20.00mil "clearline,auto"]
+       Line[3550.00mil 2800.00mil 3603.00mil 2800.00mil 10.00mil 20.00mil "clearline"]
+       Line[900.00mil 2690.00mil 900.00mil 2600.00mil 10.00mil 20.00mil "clearline"]
+       Polygon("clearpoly")
+       (
+               [940.00mil 1610.00mil] [1370.00mil 1790.00mil] [1370.00mil 2280.00mil] [940.00mil 1980.00mil] 
+       )
+       Polygon("clearpoly")
+       (
+               [890.00mil 390.00mil] [1320.00mil 390.00mil] [1320.00mil 1380.00mil] [890.00mil 1380.00mil] 
+       )
+       Polygon("clearpoly")
+       (
+               [60.00mil 1200.00mil] [470.00mil 1200.00mil] [470.00mil 1710.00mil] [60.00mil 1710.00mil] 
+       )
+       Polygon("clearpoly")
+       (
+               [770.00mil 40.00mil] [1430.00mil 40.00mil] [1430.00mil 250.00mil] [770.00mil 250.00mil] 
+       )
+       Polygon("clearpoly")
+       (
+               [3660.00mil 2550.00mil] [3980.00mil 2550.00mil] [3980.00mil 3100.00mil] [3660.00mil 3100.00mil] 
+       )
+       Polygon("clearpoly")
+       (
+               [3270.00mil 2110.00mil] [4030.00mil 2110.00mil] [4030.00mil 2410.00mil] [3480.00mil 2410.00mil] 
+       )
+       Polygon("clearpoly,fullpoly")
+       (
+               [1580.00mil 280.00mil] [1790.00mil 80.00mil] [1790.00mil 1340.00mil] [1580.00mil 1170.00mil] 
+       )
+       Polygon("clearpoly,fullpoly")
+       (
+               [1690.00mil 1250.00mil] [1790.00mil 1250.00mil] [1790.00mil 2160.00mil] [1690.00mil 2160.00mil] 
+       )
+       Polygon("clearpoly,fullpoly")
+       (
+               [1790.00mil 80.00mil] [2160.00mil 80.00mil] [2160.00mil 160.00mil] [1780.00mil 540.00mil] 
+       )
+       Polygon("clearpoly,fullpoly")
+       (
+               [1590.00mil 2500.00mil] [1850.00mil 2500.00mil] [1850.00mil 2670.00mil] [1590.00mil 2670.00mil] 
+       )
+       Polygon("clearpoly,fullpoly")
+       (
+               [3280.00mil 1620.00mil] [3610.00mil 1620.00mil] [3610.00mil 2120.00mil] [3280.00mil 2120.00mil] 
+       )
+       Polygon("clearpoly,fullpoly")
+       (
+               [2770.00mil 220.00mil] [2960.00mil 220.00mil] [2960.00mil 610.00mil] [2770.00mil 610.00mil] 
+       )
+       Polygon("clearpoly,fullpoly")
+       (
+               [2130.00mil 680.00mil] [2430.00mil 680.00mil] [2430.00mil 910.00mil] [2130.00mil 910.00mil] 
+       )
+       Polygon("clearpoly,fullpoly")
+       (
+               [2070.00mil 1230.00mil] [2350.00mil 1230.00mil] [2350.00mil 1400.00mil] [2070.00mil 1400.00mil] 
+       )
+       Polygon("clearpoly,fullpoly")
+       (
+               [2020.00mil 1300.00mil] [2140.00mil 1300.00mil] [2140.00mil 1580.00mil] [2020.00mil 1580.00mil] 
+       )
+       Polygon("clearpoly,fullpoly")
+       (
+               [2200.00mil 1700.00mil] [2580.00mil 1700.00mil] [2580.00mil 1910.00mil] [2200.00mil 1910.00mil] 
+       )
+       Polygon("clearpoly,fullpoly")
+       (
+               [100.00mil 3050.00mil] [570.00mil 3050.00mil] [770.00mil 3240.00mil] [100.00mil 3220.00mil] 
+       )
+       Polygon("clearpoly,fullpoly")
+       (
+               [3220.00mil 460.00mil] [3400.00mil 210.00mil] [3510.00mil 850.00mil] [3450.00mil 820.00mil] 
+       )
+       Polygon("clearpoly,fullpoly")
+       (
+               [3200.00mil 200.00mil] [3400.00mil 200.00mil] [3400.00mil 600.00mil] [3230.00mil 600.00mil] 
+       )
+       Polygon("clearpoly,fullpoly")
+       (
+               [1170.00mil 1340.00mil] [1580.00mil 1340.00mil] [1590.00mil 1700.00mil] [1500.00mil 1710.00mil] 
+       )
+       Polygon("clearpoly,fullpoly")
+       (
+               [3330.00mil 3100.00mil] [3990.00mil 3100.00mil] [3990.00mil 3230.00mil] [3330.00mil 3230.00mil] 
+       )
+       Polygon("clearpoly")
+       (
+               [60.00mil 50.00mil] [480.00mil 50.00mil] [480.00mil 640.00mil] [60.00mil 640.00mil] 
+       )
+)
+Layer(7 "outline")
+(
+)
+Layer(8 "spare")
+(
+)
+Layer(9 "silk")
+(
+)
+Layer(10 "silk")
+(
+)
+NetList()
+(
+       Net("unnamed_net1" "(unknown)")
+       (
+               Connect("C1-1")
+               Connect("J4-1")
+               Connect("J4-6")
+               Connect("J5-1")
+               Connect("J5-6")
+               Connect("U2-1")
+               Connect("U3-4")
+       )
+       Net("unnamed_net2" "(unknown)")
+       (
+               Connect("C1-2")
+               Connect("C2-1")
+               Connect("C4-2")
+               Connect("C5-1")
+               Connect("C6-1")
+               Connect("J3-4")
+               Connect("J6-4")
+               Connect("J7-34")
+               Connect("R11-1")
+               Connect("R12-1")
+               Connect("R13-1")
+               Connect("R14-1")
+               Connect("R18-1")
+               Connect("R20-1")
+               Connect("T1-3")
+               Connect("T2-3")
+               Connect("T3-3")
+               Connect("T4-3")
+               Connect("T5-3")
+               Connect("T6-3")
+               Connect("U1-4")
+               Connect("U2-2")
+               Connect("U3-3")
+       )
+       Net("unnamed_net3" "(unknown)")
+       (
+               Connect("C2-2")
+               Connect("J3-1")
+               Connect("U2-3")
+       )
+       Net("unnamed_net4" "(unknown)")
+       (
+               Connect("J7-5")
+               Connect("R11-2")
+               Connect("T1-1")
+       )
+       Net("unnamed_net5" "(unknown)")
+       (
+               Connect("R2-1")
+               Connect("R4-1")
+               Connect("T1-2")
+       )
+       Net("unnamed_net6" "(unknown)")
+       (
+               Connect("J7-7")
+               Connect("R12-2")
+               Connect("T2-1")
+       )
+       Net("unnamed_net7" "(unknown)")
+       (
+               Connect("R5-1")
+               Connect("R6-1")
+               Connect("T2-2")
+       )
+       Net("unnamed_net8" "(unknown)")
+       (
+               Connect("J7-8")
+               Connect("R13-2")
+               Connect("T3-1")
+       )
+       Net("unnamed_net9" "(unknown)")
+       (
+               Connect("R7-1")
+               Connect("R8-1")
+               Connect("T3-2")
+       )
+       Net("unnamed_net10" "(unknown)")
+       (
+               Connect("J7-10")
+               Connect("R14-2")
+               Connect("T4-1")
+       )
+       Net("unnamed_net11" "(unknown)")
+       (
+               Connect("R9-1")
+               Connect("R10-1")
+               Connect("T4-2")
+       )
+       Net("unnamed_net12" "(unknown)")
+       (
+               Connect("R1-1")
+               Connect("R2-2")
+       )
+       Net("unnamed_net13" "(unknown)")
+       (
+               Connect("J4-2")
+               Connect("R1-2")
+       )
+       Net("unnamed_net14" "(unknown)")
+       (
+               Connect("R3-1")
+               Connect("R4-2")
+       )
+       Net("unnamed_net15" "(unknown)")
+       (
+               Connect("J5-2")
+               Connect("R3-2")
+       )
+       Net("unnamed_net16" "(unknown)")
+       (
+               Connect("J4-3")
+               Connect("R5-2")
+       )
+       Net("unnamed_net17" "(unknown)")
+       (
+               Connect("J5-3")
+               Connect("R6-2")
+       )
+       Net("unnamed_net18" "(unknown)")
+       (
+               Connect("J4-4")
+               Connect("R7-2")
+       )
+       Net("unnamed_net19" "(unknown)")
+       (
+               Connect("J5-4")
+               Connect("R8-2")
+       )
+       Net("unnamed_net20" "(unknown)")
+       (
+               Connect("J4-5")
+               Connect("R9-2")
+       )
+       Net("unnamed_net21" "(unknown)")
+       (
+               Connect("J5-5")
+               Connect("R10-2")
+       )
+       Net("unnamed_net22" "(unknown)")
+       (
+               Connect("C3-1")
+               Connect("D5-2")
+               Connect("U1-1")
+       )
+       Net("unnamed_net23" "(unknown)")
+       (
+               Connect("D5-1")
+               Connect("J2-2")
+               Connect("U1-2")
+       )
+       Net("unnamed_net24" "(unknown)")
+       (
+               Connect("C4-1")
+               Connect("J7-3")
+               Connect("R16-1")
+               Connect("U1-5")
+       )
+       Net("unnamed_net25" "(unknown)")
+       (
+               Connect("C3-2")
+               Connect("R15-2")
+       )
+       Net("unnamed_net26" "(unknown)")
+       (
+               Connect("J2-1")
+               Connect("R15-1")
+       )
+       Net("unnamed_net27" "(unknown)")
+       (
+               Connect("J7-17")
+               Connect("R16-2")
+               Connect("R17-2")
+               Connect("R19-2")
+       )
+       Net("unnamed_net28" "(unknown)")
+       (
+               Connect("J7-35")
+               Connect("R18-2")
+               Connect("T5-1")
+       )
+       Net("unnamed_net29" "(unknown)")
+       (
+               Connect("J6-5")
+               Connect("J7-36")
+               Connect("R17-1")
+               Connect("T5-2")
+       )
+       Net("unnamed_net30" "(unknown)")
+       (
+               Connect("J7-37")
+               Connect("R20-2")
+               Connect("T6-1")
+       )
+       Net("unnamed_net31" "(unknown)")
+       (
+               Connect("C6-2")
+               Connect("J6-6")
+               Connect("J7-38")
+               Connect("R19-1")
+               Connect("T6-2")
+       )
+       Net("unnamed_net32" "(unknown)")
+       (
+               Connect("J1-1")
+               Connect("U3-1")
+       )
+       Net("unnamed_net33" "(unknown)")
+       (
+               Connect("J1-2")
+               Connect("U3-2")
+       )
+)
diff --git a/hardware/ledcontrol.prj b/hardware/ledcontrol.prj
new file mode 100644 (file)
index 0000000..1c42782
--- /dev/null
@@ -0,0 +1,3 @@
+elements-dir ./footprints
+schematics ledcontrol.sch
+output-name ledcontrol
diff --git a/hardware/ledcontrol.sch b/hardware/ledcontrol.sch
new file mode 100644 (file)
index 0000000..82045c5
--- /dev/null
@@ -0,0 +1,623 @@
+v 20130925 2
+C 40000 40000 0 0 0 title-B.sym
+C 44500 49200 1 270 0 capacitor-4.sym
+{
+T 45600 49000 5 10 0 0 270 0 1
+device=POLARIZED_CAPACITOR
+T 45000 49000 5 10 1 1 270 0 1
+refdes=C1
+T 45200 49000 5 10 0 0 270 0 1
+symversion=0.1
+T 44500 49200 5 10 1 1 0 0 1
+value=4700uF
+T 44500 49200 5 10 0 1 0 0 1
+footprint=ACY1600P
+}
+C 45300 49000 1 0 0 down-converter.sym
+{
+T 45300 49000 5 10 1 1 0 0 1
+refdes=U2
+T 45300 49000 5 10 0 0 0 0 1
+footprint=TSR.fp
+T 45300 49000 5 10 1 1 0 0 1
+value=TSR
+T 45300 49000 5 10 0 1 0 0 1
+device=TSR
+}
+N 44700 46300 44700 48300 4
+N 44700 49200 44700 50900 4
+C 48500 47300 1 0 0 nmos-3.sym
+{
+T 49100 47800 5 10 0 0 0 0 1
+device=NMOS_TRANSISTOR
+T 49200 47900 5 10 1 1 0 0 1
+refdes=T1
+T 48500 47300 5 10 1 1 0 0 1
+value=FDP3672
+T 48500 47300 5 10 0 1 0 0 1
+footprint=TO220SW
+}
+C 50000 47300 1 0 0 nmos-3.sym
+{
+T 50600 47800 5 10 0 0 0 0 1
+device=NMOS_TRANSISTOR
+T 50700 47900 5 10 1 1 0 0 1
+refdes=T2
+T 50000 47300 5 10 1 1 0 0 1
+value=FDP3672
+T 50000 47300 5 10 0 1 0 0 1
+footprint=TO220SW
+}
+C 51300 47300 1 0 0 nmos-3.sym
+{
+T 51900 47800 5 10 0 0 0 0 1
+device=NMOS_TRANSISTOR
+T 52000 47900 5 10 1 1 0 0 1
+refdes=T3
+T 51300 47300 5 10 1 1 0 0 1
+value=FDP3672
+T 51300 47300 5 10 0 1 0 0 1
+footprint=TO220SW
+}
+C 52700 47300 1 0 0 nmos-3.sym
+{
+T 53300 47800 5 10 0 0 0 0 1
+device=NMOS_TRANSISTOR
+T 53400 47900 5 10 1 1 0 0 1
+refdes=T4
+T 52700 47300 5 10 1 1 0 0 1
+value=FDP3672
+T 52700 47300 5 10 0 1 0 0 1
+footprint=TO220SW
+}
+C 49100 48400 1 90 0 resistor-2.sym
+{
+T 48750 48800 5 10 0 0 90 0 1
+device=RESISTOR
+T 48800 48600 5 10 0 1 90 0 1
+refdes=R2
+T 49100 48400 5 10 1 1 0 0 1
+value=15
+T 49100 48400 5 10 0 1 0 0 1
+footprint=ACY600
+}
+C 49100 49500 1 90 0 resistor-2.sym
+{
+T 48750 49900 5 10 0 0 90 0 1
+device=RESISTOR
+T 48800 49700 5 10 0 1 90 0 1
+refdes=R1
+T 49100 49500 5 10 1 1 0 0 1
+value=15
+T 49100 49500 5 10 0 1 0 0 1
+footprint=ACY600
+}
+C 49600 48400 1 90 0 resistor-2.sym
+{
+T 49250 48800 5 10 0 0 90 0 1
+device=RESISTOR
+T 49300 48600 5 10 0 1 90 0 1
+refdes=R4
+T 49600 48400 5 10 1 1 0 0 1
+value=15
+T 49600 48400 5 10 0 1 0 0 1
+footprint=ACY600
+}
+C 49600 49500 1 90 0 resistor-2.sym
+{
+T 49250 49900 5 10 0 0 90 0 1
+device=RESISTOR
+T 49300 49700 5 10 0 1 90 0 1
+refdes=R3
+T 49600 49500 5 10 1 1 0 0 1
+value=15
+T 49600 49500 5 10 0 1 0 0 1
+footprint=ACY600
+}
+C 50600 48400 1 90 0 resistor-2.sym
+{
+T 50250 48800 5 10 0 0 90 0 1
+device=RESISTOR
+T 50300 48600 5 10 0 1 90 0 1
+refdes=R5
+T 50600 48400 5 10 1 1 0 0 1
+value=15
+T 50600 48400 5 10 0 1 0 0 1
+footprint=ACY600
+}
+C 51100 48400 1 90 0 resistor-2.sym
+{
+T 50750 48800 5 10 0 0 90 0 1
+device=RESISTOR
+T 50800 48600 5 10 0 1 90 0 1
+refdes=R6
+T 51100 48400 5 10 1 1 0 0 1
+value=15
+T 51100 48400 5 10 0 1 0 0 1
+footprint=ACY600
+}
+C 51900 48400 1 90 0 resistor-2.sym
+{
+T 51550 48800 5 10 0 0 90 0 1
+device=RESISTOR
+T 51600 48600 5 10 0 1 90 0 1
+refdes=R7
+T 51900 48400 5 10 1 1 0 0 1
+value=15
+T 51900 48400 5 10 0 1 0 0 1
+footprint=ACY600
+}
+C 52400 48400 1 90 0 resistor-2.sym
+{
+T 52050 48800 5 10 0 0 90 0 1
+device=RESISTOR
+T 52100 48600 5 10 0 1 90 0 1
+refdes=R8
+T 52400 48400 5 10 1 1 0 0 1
+value=15
+T 52400 48400 5 10 0 1 0 0 1
+footprint=ACY600
+}
+C 53300 48400 1 90 0 resistor-2.sym
+{
+T 52950 48800 5 10 0 0 90 0 1
+device=RESISTOR
+T 53000 48600 5 10 0 1 90 0 1
+refdes=R9
+T 53300 48400 5 10 1 1 0 0 1
+value=15
+T 53300 48400 5 10 0 1 0 0 1
+footprint=ACY600
+}
+C 53800 48400 1 90 0 resistor-2.sym
+{
+T 53450 48800 5 10 0 0 90 0 1
+device=RESISTOR
+T 53500 48600 5 10 0 1 90 0 1
+refdes=R10
+T 53800 48400 5 10 1 1 0 0 1
+value=15
+T 53800 48400 5 10 0 1 0 0 1
+footprint=ACY600
+}
+C 48600 46300 1 90 0 resistor-2.sym
+{
+T 48250 46700 5 10 0 0 90 0 1
+device=RESISTOR
+T 48300 46500 5 10 0 1 90 0 1
+refdes=R11
+T 48600 46300 5 10 1 1 0 0 1
+value=120k
+T 48600 46300 5 10 0 1 0 0 1
+footprint=ACY400
+}
+C 50100 46300 1 90 0 resistor-2.sym
+{
+T 49750 46700 5 10 0 0 90 0 1
+device=RESISTOR
+T 49800 46500 5 10 0 1 90 0 1
+refdes=R12
+T 50100 46300 5 10 1 1 0 0 1
+value=120k
+T 50100 46300 5 10 0 1 0 0 1
+footprint=ACY400
+}
+C 51400 46300 1 90 0 resistor-2.sym
+{
+T 51050 46700 5 10 0 0 90 0 1
+device=RESISTOR
+T 51100 46500 5 10 0 1 90 0 1
+refdes=R13
+T 51400 46300 5 10 1 1 0 0 1
+value=120k
+T 51400 46300 5 10 0 1 0 0 1
+footprint=ACY400
+}
+C 52800 46300 1 90 0 resistor-2.sym
+{
+T 52450 46700 5 10 0 0 90 0 1
+device=RESISTOR
+T 52500 46500 5 10 0 1 90 0 1
+refdes=R14
+T 52800 46300 5 10 1 1 0 0 1
+value=120k
+T 52800 46300 5 10 0 1 0 0 1
+footprint=ACY400
+}
+C 41400 44600 1 0 0 CNY17-1.sym
+{
+T 42100 46600 5 10 0 1 0 0 1
+device=CNY17
+T 43600 46400 5 10 1 1 0 6 1
+refdes=U1
+T 42100 47000 5 10 0 0 0 0 1
+footprint=DIP6
+T 41400 44600 5 10 1 1 0 0 1
+value=TIL111
+}
+C 41100 45800 1 90 0 resistor-2.sym
+{
+T 40750 46200 5 10 0 0 90 0 1
+device=RESISTOR
+T 40800 46000 5 10 0 1 90 0 1
+refdes=R15
+T 41100 45800 5 10 1 1 90 0 1
+value=2k2
+T 41100 45800 5 10 0 1 90 0 1
+footprint=ACY400
+}
+C 41700 46600 1 90 0 capacitor-1.sym
+{
+T 41000 46800 5 10 0 0 90 0 1
+device=CAPACITOR
+T 41200 46800 5 10 1 1 90 0 1
+refdes=C3
+T 40800 46800 5 10 0 0 90 0 1
+symversion=0.1
+T 41700 46600 5 10 1 1 0 0 1
+value=150nF
+T 41700 46600 5 10 0 1 0 0 1
+footprint=ACY300
+}
+C 41700 44900 1 90 0 diode-1.sym
+{
+T 41100 45300 5 10 0 0 90 0 1
+device=DIODE
+T 41200 45200 5 10 1 1 90 0 1
+refdes=D5
+T 41700 44900 5 10 1 1 0 0 1
+value=1N4148
+T 41700 44900 5 10 0 1 0 0 1
+footprint=ACY200P
+}
+N 41500 46600 41500 45800 4
+N 41500 45800 41800 45800 4
+C 44300 45800 1 270 0 capacitor-4.sym
+{
+T 45400 45600 5 10 0 0 270 0 1
+device=POLARIZED_CAPACITOR
+T 44800 45600 5 10 1 1 270 0 1
+refdes=C4
+T 45000 45600 5 10 0 0 270 0 1
+symversion=0.1
+T 44300 45800 5 10 1 1 0 0 1
+value=4u7
+T 44300 45800 5 10 0 1 0 0 1
+footprint=RCY100P
+}
+C 45200 45700 1 0 0 resistor-2.sym
+{
+T 45600 46050 5 10 0 0 0 0 1
+device=RESISTOR
+T 45400 46000 5 10 0 1 0 0 1
+refdes=R16
+T 45200 45700 5 10 1 1 0 0 1
+value=27k
+T 45200 45700 5 10 0 1 0 0 1
+footprint=ACY400
+}
+C 50700 43800 1 0 0 nmos-3.sym
+{
+T 51300 44300 5 10 0 0 0 0 1
+device=NMOS_TRANSISTOR
+T 51400 44400 5 10 1 1 0 0 1
+refdes=T5
+T 50700 43800 5 10 1 1 0 0 1
+value=FDP3672
+T 50700 43800 5 10 0 1 0 0 1
+footprint=TO220SW
+}
+C 53000 43700 1 0 0 nmos-3.sym
+{
+T 53600 44200 5 10 0 0 0 0 1
+device=NMOS_TRANSISTOR
+T 53700 44300 5 10 1 1 0 0 1
+refdes=T6
+T 53000 43700 5 10 1 1 0 0 1
+value=FDP3672
+T 53000 43700 5 10 0 1 0 0 1
+footprint=TO220SW
+}
+C 52200 43700 1 90 0 capacitor-1.sym
+{
+T 51500 43900 5 10 0 0 90 0 1
+device=CAPACITOR
+T 51700 43900 5 10 1 1 90 0 1
+refdes=C5
+T 51300 43900 5 10 0 0 90 0 1
+symversion=0.1
+T 52200 43700 5 10 1 1 0 0 1
+value=47nF
+T 52200 43700 5 10 0 1 0 0 1
+footprint=ACY200
+}
+C 54400 43600 1 90 0 capacitor-1.sym
+{
+T 53700 43800 5 10 0 0 90 0 1
+device=CAPACITOR
+T 53900 43800 5 10 1 1 90 0 1
+refdes=C6
+T 53500 43800 5 10 0 0 90 0 1
+symversion=0.1
+T 54400 43600 5 10 1 1 0 0 1
+value=47nF
+T 54400 43600 5 10 0 1 0 0 1
+footprint=ACY200
+}
+C 51300 44800 1 90 0 resistor-2.sym
+{
+T 50950 45200 5 10 0 0 90 0 1
+device=RESISTOR
+T 51000 45000 5 10 0 1 90 0 1
+refdes=R17
+T 51300 44800 5 10 1 1 0 0 1
+value=100k
+T 51300 44800 5 10 0 1 0 0 1
+footprint=ACY400
+}
+C 53600 44800 1 90 0 resistor-2.sym
+{
+T 53250 45200 5 10 0 0 90 0 1
+device=RESISTOR
+T 53300 45000 5 10 0 1 90 0 1
+refdes=R19
+T 53600 44800 5 10 1 1 0 0 1
+value=100k
+T 53600 44800 5 10 0 1 0 0 1
+footprint=ACY400
+}
+C 50800 42700 1 90 0 resistor-2.sym
+{
+T 50450 43100 5 10 0 0 90 0 1
+device=RESISTOR
+T 50500 42900 5 10 0 1 90 0 1
+refdes=R18
+T 50800 42700 5 10 1 1 0 0 1
+value=120k
+T 50800 42700 5 10 0 1 0 0 1
+footprint=ACY400
+}
+C 53100 42700 1 90 0 resistor-2.sym
+{
+T 52750 43100 5 10 0 0 90 0 1
+device=RESISTOR
+T 52800 42900 5 10 0 1 90 0 1
+refdes=R20
+T 53100 42700 5 10 1 1 0 0 1
+value=120k
+T 53100 42700 5 10 0 1 0 0 1
+footprint=ACY400
+}
+C 56700 42500 1 0 1 rj45-1.sym
+{
+T 56700 45400 5 10 0 0 0 6 1
+device=RJ45
+T 56700 45200 5 10 0 0 0 6 1
+footprint=RJ45.fp
+T 56700 44400 5 10 1 1 0 6 1
+refdes=J6
+}
+C 56800 48800 1 0 1 connector6-1.sym
+{
+T 55000 50600 5 10 0 0 0 6 1
+device=CONNECTOR_6
+T 56700 50800 5 10 1 1 0 6 1
+refdes=J4
+T 56800 48800 5 10 0 1 0 0 1
+footprint=SIP6
+}
+C 56800 46400 1 0 1 connector6-1.sym
+{
+T 55000 48200 5 10 0 0 0 6 1
+device=CONNECTOR_6
+T 56700 48400 5 10 1 1 0 6 1
+refdes=J5
+T 56800 46400 5 10 0 0 0 0 1
+footprint=SIP6
+}
+N 49000 49500 49000 49300 4
+N 49500 49500 49500 49300 4
+N 49000 48100 49000 48400 4
+N 49000 48400 49500 48400 4
+N 50500 48100 50500 48400 4
+N 50500 48400 51000 48400 4
+N 51800 48100 51800 48400 4
+N 51800 48400 52300 48400 4
+N 53200 48100 53200 48400 4
+N 53200 48400 53700 48400 4
+N 48500 47500 48500 47200 4
+N 49500 44200 49500 47500 4
+N 51300 47500 51300 47200 4
+N 52700 47500 52700 47200 4
+N 49000 47300 49000 46300 4
+N 44200 46300 50500 46300 4
+N 50500 47300 50500 46300 4
+N 51800 47300 51800 46300 4
+N 50000 46300 51800 46300 4
+N 53200 47300 53200 46300 4
+N 51300 46300 53200 46300 4
+N 53200 49400 55100 49400 4
+N 55100 46900 54100 46900 4
+N 54100 46900 54100 49300 4
+N 53200 49400 53200 49300 4
+N 55100 49400 55100 49300 4
+N 53700 49300 54100 49300 4
+N 55100 47200 54300 47200 4
+N 54300 47200 54300 49600 4
+N 54300 49600 52300 49600 4
+N 52300 49600 52300 49300 4
+N 55100 49600 54500 49600 4
+N 54500 49600 54500 49800 4
+N 54500 49800 51800 49800 4
+N 51800 49800 51800 49300 4
+N 55100 47500 54600 47500 4
+N 54600 47500 54600 50000 4
+N 54600 50000 51000 50000 4
+N 51000 50000 51000 49300 4
+N 55100 49900 50500 49900 4
+N 50500 49900 50500 49300 4
+N 49500 50400 54700 50400 4
+N 54700 47800 54700 50400 4
+N 54700 47800 55100 47800 4
+N 55100 50200 50000 50200 4
+N 50000 50200 50000 50600 4
+N 50000 50600 49000 50600 4
+N 49000 50600 49000 50400 4
+N 55100 46600 55100 46700 4
+N 55100 46700 55500 46700 4
+N 55500 46700 55500 48100 4
+N 55500 48100 55100 48100 4
+N 55100 48100 55100 49000 4
+N 55100 49000 55600 49000 4
+N 55600 49000 55600 50500 4
+N 55600 50500 55100 50500 4
+N 55100 50500 55100 50900 4
+N 55100 50900 44700 50900 4
+N 51200 43800 51200 42600 4
+N 47000 42600 55300 42600 4
+N 52000 42600 52000 43700 4
+N 53500 42600 53500 43700 4
+N 55300 42600 55300 43500 4
+N 55300 43500 55800 43500 4
+N 50700 44000 50700 43600 4
+N 53000 43600 53000 43900 4
+N 51200 44600 51200 44800 4
+N 51200 44700 54900 44700 4
+N 53500 44800 53500 44500 4
+N 53500 44500 54700 44500 4
+N 54700 44500 54700 43100 4
+N 54700 43100 55800 43100 4
+N 55800 43300 54900 43300 4
+N 54900 43300 54900 44700 4
+N 46100 45800 53500 45800 4
+N 51200 45800 51200 45700 4
+N 44000 43500 46300 43500 4
+N 46300 43500 46300 45800 4
+N 48500 47500 47500 47500 4
+N 47500 44300 47500 47500 4
+N 45300 49600 45300 50900 4
+N 45900 49000 45900 46300 4
+C 47100 48000 1 0 0 connector4-2.sym
+{
+T 47800 50100 5 10 1 1 0 6 1
+refdes=J3
+T 47400 50050 5 10 0 0 0 0 1
+device=CONNECTOR_4
+T 47400 50250 5 10 0 0 0 0 1
+footprint=USB.fp
+}
+N 46500 49600 47100 49600 4
+N 45900 48400 47100 48400 4
+N 49500 47500 50000 47500 4
+N 50000 47500 50000 47200 4
+N 50800 46100 50800 47500 4
+N 50800 47500 51300 47500 4
+N 52700 47500 52200 47500 4
+N 52200 46000 52200 47500 4
+C 46900 48600 1 90 0 capacitor-1.sym
+{
+T 46200 48800 5 10 0 0 90 0 1
+device=CAPACITOR
+T 46400 48800 5 10 1 1 90 0 1
+refdes=C2
+T 46000 48800 5 10 0 0 90 0 1
+symversion=0.1
+T 46900 48600 5 10 1 1 0 0 1
+value=150nF
+T 46900 48600 5 10 0 1 0 0 1
+footprint=ACY300
+}
+N 46700 49500 46700 49600 4
+N 46700 48600 46700 48400 4
+N 47000 44900 47000 46300 4
+N 47000 42600 47000 46300 4
+N 47600 43700 50700 43700 4
+N 51600 44700 51600 42300 4
+N 47700 42300 51600 42300 4
+N 53000 43600 52400 43600 4
+N 52400 43600 52400 42200 4
+N 48000 42200 52400 42200 4
+N 48100 42100 53800 42100 4
+N 53800 42100 53800 44500 4
+C 41400 49200 1 0 0 bridge-1.sym
+{
+T 41600 50200 5 10 1 1 0 0 1
+refdes=U3
+T 41600 50600 5 10 0 1 0 0 1
+device=bridge
+T 41600 51000 5 10 0 1 0 0 1
+symversion=0.1
+T 41400 49200 5 10 1 1 0 0 1
+footprint=BRIDGE_5401.fp
+}
+C 41100 49100 1 0 1 connector2-2.sym
+{
+T 40400 50400 5 10 1 1 0 0 1
+refdes=J1
+T 40800 50350 5 10 0 1 0 6 1
+device=CONNECTOR_2
+T 40800 50550 5 10 0 1 0 6 1
+footprint=3terminal_screw_block
+}
+C 40900 44500 1 0 1 connector2-2.sym
+{
+T 40200 45800 5 10 1 1 0 0 1
+refdes=J2
+T 40600 45750 5 10 0 0 0 6 1
+device=CONNECTOR_2
+T 40600 45950 5 10 0 0 0 6 1
+footprint=3terminal_screw_block
+}
+N 41100 49900 41400 49900 4
+N 41100 49500 41400 49500 4
+N 41400 49500 41400 49400 4
+N 42600 49900 44700 49900 4
+N 42600 49400 44200 49400 4
+N 44200 49400 44200 46300 4
+C 48700 40100 1 90 0 header40-2.sym
+{
+T 40200 40350 5 10 0 1 90 0 1
+device=HEADER40
+T 40600 40700 5 10 1 1 90 0 1
+refdes=J7
+T 48700 40100 5 10 1 1 0 0 1
+footprint=HEADER40_2
+}
+N 40900 44900 41800 44900 4
+N 40900 45300 41000 45300 4
+N 41000 45300 41000 45800 4
+N 41000 46700 41000 47500 4
+N 41000 47500 41500 47500 4
+N 43900 45800 45200 45800 4
+N 43900 44900 47000 44900 4
+N 44900 45800 44900 44400 4
+N 44900 44400 41200 44400 4
+N 41200 44400 41200 40100 4
+N 41200 40100 41300 40100 4
+N 47300 41500 47300 42600 4
+N 53500 45700 53500 45800 4
+N 41700 40100 41600 40100 4
+N 41600 40100 41600 44300 4
+N 41600 44300 47500 44300 4
+N 42100 40100 42000 40100 4
+N 42000 40100 42000 44200 4
+N 42000 44200 49500 44200 4
+N 42100 41500 42100 44100 4
+N 42100 44100 49900 44100 4
+N 49900 44100 49900 46100 4
+N 49900 46100 50800 46100 4
+N 42500 41500 42500 44000 4
+N 42500 44000 50300 44000 4
+N 50300 44000 50300 46000 4
+N 50300 46000 52200 46000 4
+N 54200 43600 54200 42600 4
+N 53000 42700 53000 42600 4
+N 50700 42700 50700 42600 4
+N 44100 40100 44000 40100 4
+N 44000 40100 44000 43500 4
+N 47700 40100 47600 40100 4
+N 47600 40100 47600 43700 4
+N 47700 41500 47700 42300 4
+N 48100 40100 48000 40100 4
+N 48000 40100 48000 42200 4
+N 48100 41500 48100 42100 4
diff --git a/hardware/output.net b/hardware/output.net
new file mode 100644 (file)
index 0000000..a530b7c
--- /dev/null
@@ -0,0 +1,47 @@
+refdes value   
+C2     150nF   
+J3     unknown 
+J5     unknown 
+J4     unknown 
+J6     unknown 
+J7     unknown 
+R20    120k    
+R18    120k    
+R19    100k    
+R17    100k    
+C6     47nF    
+C5     47nF    
+T6     IRFML8244       
+T5     IRFML8244       
+R16    27k     
+C4     4u7     
+D5     1N4148  
+J2     unknown 
+C3     150nF   
+R15    2k2     
+U1     unknown 
+R14    120k    
+R13    120k    
+R12    120k    
+R11    120k    
+R10    15      
+R9     15      
+R8     15      
+R7     15      
+R6     15      
+R5     15      
+R3     15      
+R4     15      
+R1     15      
+R2     15      
+T4     IRFML8244       
+T3     IRFML8244       
+T2     IRFML8244       
+T1     IRFML8244       
+U2     TSR 1-2450      
+C1     4700uF  
+J1     unknown 
+D4     B560C   
+D3     B560C   
+D2     B560C   
+D1     B560C   
diff --git a/hardware/symbols/#untitled_2.sch# b/hardware/symbols/#untitled_2.sch#
new file mode 100644 (file)
index 0000000..d74a099
--- /dev/null
@@ -0,0 +1,86 @@
+v 20130925 2
+C 40000 40000 0 0 0 title-B.sym
+C 45000 46100 1 0 0 lm555-1.sym
+{
+T 47300 48500 5 10 0 0 0 0 1
+device=LM555
+T 46800 46100 5 10 1 1 0 0 1
+refdes=U?
+}
+C 49100 47400 1 90 0 resistor-2.sym
+{
+T 48750 47800 5 10 0 0 90 0 1
+device=RESISTOR
+T 48800 47600 5 10 1 1 90 0 1
+refdes=R3
+T 49100 47400 5 10 1 0 0 0 1
+value=3k3
+}
+C 44200 48400 1 90 0 resistor-2.sym
+{
+T 43850 48800 5 10 0 0 90 0 1
+device=RESISTOR
+T 43900 48600 5 10 1 1 90 0 1
+refdes=R1
+T 44200 48400 5 10 1 1 0 0 1
+value=100k
+}
+C 44200 46600 1 90 0 resistor-2.sym
+{
+T 43850 47000 5 10 0 0 90 0 1
+device=RESISTOR
+T 43900 46800 5 10 1 1 90 0 1
+refdes=R2
+T 44200 46600 5 10 1 1 0 0 1
+value=100k
+}
+C 44300 45200 1 90 0 capacitor-1.sym
+{
+T 43600 45400 5 10 0 0 90 0 1
+device=CAPACITOR
+T 43800 45400 5 10 1 1 90 0 1
+refdes=C1
+T 43400 45400 5 10 0 0 90 0 1
+symversion=0.1
+T 44300 45200 5 10 1 0 0 0 1
+value=1u
+}
+C 49200 48800 1 90 0 led-3.sym
+{
+T 48550 49750 5 10 0 0 90 0 1
+device=LED
+T 48650 49250 5 10 1 1 90 0 1
+refdes=D?
+}
+C 42200 49000 1 0 1 connector2-2.sym
+{
+T 41500 50300 5 10 1 1 0 0 1
+refdes=CONN?
+T 41900 50250 5 10 0 0 0 6 1
+device=CONNECTOR_2
+T 41900 50450 5 10 0 0 0 6 1
+footprint=SIP2N
+}
+N 47300 46500 49000 46500 4
+N 49000 46500 49000 47400 4
+N 49000 48300 49000 48800 4
+N 42200 49800 49000 49800 4
+N 49000 49800 49000 49700 4
+N 45800 48900 45800 49800 4
+N 45800 49800 46600 49800 4
+N 46600 48900 46600 49800 4
+N 44100 49300 44100 49800 4
+N 44100 48400 44100 47500 4
+N 44100 45900 44100 46600 4
+N 47300 48000 47300 49100 4
+N 47300 49100 44700 49100 4
+N 44700 48200 44700 49100 4
+N 44700 48200 44100 48200 4
+N 45000 47600 44600 47600 4
+N 44600 47600 44600 45900 4
+N 44100 45900 47500 45900 4
+N 47300 47600 47500 47600 4
+N 47500 47600 47500 45900 4
+N 42200 49400 42200 45200 4
+N 42200 45200 45000 45200 4
+N 45000 45200 45000 46500 4
diff --git a/hardware/symbols/555.sym b/hardware/symbols/555.sym
new file mode 100644 (file)
index 0000000..88e71da
--- /dev/null
@@ -0,0 +1,94 @@
+v 20060123 1
+B 300 300 2100 2400 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
+T 1400 2100 9 10 1 1 0 3 1
+555
+T 1400 1700 9 10 1 1 0 3 1
+refdes=U?
+P 1400 0 1400 300 1 0 0
+{
+T 1400 350 9 10 1 1 0 3 1
+pinlabel=GND
+T 1450 250 5 8 1 1 0 2 1
+pinnumber=1
+T 1450 250 5 8 0 1 0 2 1
+pinseq=1
+T 1300 50 9 10 0 1 0 6 1
+pintype=pas
+}
+P 0 1100 300 1100 1 0 0
+{
+T 350 1100 9 10 1 1 0 1 1
+pinlabel=TRIG
+T 200 1150 5 8 1 1 0 6 1
+pinnumber=2
+T 200 1150 5 8 0 1 0 6 1
+pinseq=2
+T 200 1150 9 10 0 1 0 6 1
+pintype=pas
+}
+P 2700 1500 2400 1500 1 0 0
+{
+T 2350 1500 9 10 1 1 0 7 1
+pinlabel=OUT
+T 2500 1550 5 8 1 1 0 0 1
+pinnumber=3
+T 2500 1550 5 8 0 1 0 0 1
+pinseq=3
+T 2300 1550 9 10 0 1 0 6 1
+pintype=pas
+}
+P 2700 2300 2400 2300 1 0 0
+{
+T 2350 2300 9 10 1 1 0 7 1
+pinlabel=RES
+T 2500 2350 5 8 1 1 0 0 1
+pinnumber=4
+T 2500 2350 5 8 0 1 0 0 1
+pinseq=4
+T 2300 2350 9 10 0 1 0 6 1
+pintype=pas
+}
+P 2700 700 2400 700 1 0 0
+{
+T 2350 700 9 10 1 1 0 7 1
+pinlabel=CTRL
+T 2500 750 5 8 1 1 0 0 1
+pinnumber=5
+T 2500 750 5 8 0 1 0 0 1
+pinseq=5
+T 2300 750 9 10 0 1 0 6 1
+pintype=pas
+}
+P 0 1500 300 1500 1 0 0
+{
+T 350 1500 9 10 1 1 0 1 1
+pinlabel=THRESH
+T 200 1550 5 8 1 1 0 6 1
+pinnumber=6
+T 200 1550 5 8 0 1 0 6 1
+pinseq=6
+T 200 1550 9 10 0 1 0 6 1
+pintype=pas
+}
+P 0 2300 300 2300 1 0 0
+{
+T 350 2300 9 10 1 1 0 1 1
+pinlabel=DISCH
+T 200 2350 5 8 1 1 0 6 1
+pinnumber=7
+T 200 2350 5 8 0 1 0 6 1
+pinseq=7
+T 200 2350 9 10 0 1 0 6 1
+pintype=pas
+}
+P 1400 3000 1400 2700 1 0 0
+{
+T 1400 2650 9 10 1 1 0 5 1
+pinlabel=VCC
+T 1450 2750 5 8 1 1 0 0 1
+pinnumber=8
+T 1450 2750 5 8 0 1 0 0 1
+pinseq=8
+T 1300 50 9 10 0 1 0 6 1
+pintype=pas
+}
diff --git a/hardware/symbols/555.symdef b/hardware/symbols/555.symdef
new file mode 100644 (file)
index 0000000..5f757ae
--- /dev/null
@@ -0,0 +1,23 @@
+[labels]
+555
+refdes=U?
+
+[left]
+7 DISCH
+
+6 THRESH
+2 TRIG
+
+[right]
+4 RES
+
+3 OUT
+
+5 CTRL
+
+[top]
+8 VCC
+
+[bottom]
+
+1 GND
diff --git a/hardware/symbols/djboxsym b/hardware/symbols/djboxsym
new file mode 100755 (executable)
index 0000000..7080447
--- /dev/null
@@ -0,0 +1,473 @@
+#!/usr/bin/perl
+# -*- perl -*-
+
+# Copyright (C) 2006 DJ Delorie dj@delorie.com
+# Released under the terms of the GNU General Public License, version 2
+
+# Usage: djboxsym sample.symdef > sample.sym
+
+$y{left} = 400;
+$y{right} = 400;
+$y{labels} = 600;
+$labelpin = 0;
+
+$busspace = 200;
+$groupspace = 400;
+$skipspace = 800;
+$yinvert = 300;
+$minwidth = 0;
+
+# If set, top and bottom labels are vertical.
+$vmode = 0;
+
+# Read in the file, storing information about each pin.
+
+while (<>) {
+    next if /^#/;
+    s/^\s+//;
+    s/\s+$//;
+    s/[\s\t]+/ /g;
+    s/[\r\n]+$//;
+
+    # options
+    if (/^--(\S*)\s*(.*)/) {
+       $opt = $1;
+       @args = split(' ', $2);
+       ($opt, $value) = split(' ', $opt, 2);
+       if ($opt eq "vmode") {
+           $vmode = 1;
+#          $y{left} = $y{right} = 0;
+       }
+       if ($opt eq "square") {
+           $square = 1;
+       }
+       if ($opt eq "minwidth") {
+           $minwidth = $args[0];
+       }
+       if ($opt eq "compact") {
+           $groupspace = 200;
+           $skipspace = 400;
+           $yinvert = 400;
+           $compactmode = 1;
+       }
+       next;
+    }
+
+    # Note change of section.
+    if (/^\[(.*)\]/) {
+       $side = $1;
+       $space = 0;
+       next;
+    }
+
+    # Start a bus
+    if (/^\.bus/) {
+       $busmode = 1;
+       next;
+    }
+
+    # blank lines - cancel bus, add gap.
+    if (! /\S/) {
+       if ($busmode) {
+           $y{$side} += $busspace;
+       }
+       $busmode = 0;
+       if ($space) {
+           if ($side =~ /left|right/) {
+               $y{$side} += $groupspace;
+           }
+           if ($side =~ /top|bottom/) {
+               $x{$side} += 400;
+           }
+           $space = 0;
+       }
+       next;
+    }
+
+    if (/^\.skip (\d+)/) {
+       $skip = $1;
+       $space = 0;
+       if ($side =~ /left|right/) {
+           $y{$side} += $skip;
+       }
+       next;
+    }
+
+    # Hidden labels are stored separately, because we don't care how
+    # big they are.
+    if (/! (\S.*)/ && $side eq "labels") {
+       push(@attrs, $1);
+       next;
+    }
+
+    # Visible labels are stored as pins because their size affects the
+    # size of the symbols' box.
+    if (/\S/ && $side eq "labels") {
+       $labelpin --;
+       $pinside{$labelpin} = $side;
+       $piny{$labelpin} = $y{labels};
+       $pinlabel{$labelpin} = $_;
+       $y{labels} += $groupspace;
+       $rlen{$labelpin} = &textlen($_);
+       next;
+    }
+
+    # Regular pins are handled here.
+    if (/^(\S+)\s*(.*)/) {
+       $space = 1;
+       ($pin, $rest) = ($1,$2);
+
+       if ($pin =~ /^\d+$/) {
+           $pinseq_used[$pin] = 1;
+       }
+
+       if ($saw_pin{$pin}) {
+           print STDERR "DUPLICATE PIN $pin (was $pinlabel{$pin}, now $rest)\n";
+           $errors ++;
+       }
+       $saw_pin{$pin} = 1;
+       $maxpin = $pin if $maxpin < $pin;
+
+       $pinside{$pin} = $side;
+       $pintype{$pin} = "pas";
+       next if $side eq "nc";
+       if ($rest =~ /^([!>iop]+) (.*)/) {
+           $flags = $1;
+           $pinlabel{$pin} = $2;
+           $bubble{$pin} = 1 if $flags =~ /!/;
+           $edge{$pin} = 1 if $flags =~ />/;
+           $pintype{$pin} = "in" if $flags =~ /i/;
+           $pintype{$pin} = "out" if $flags =~ /o/;
+           $pintype{$pin} = "pwr" if $flags =~ /p/;
+           $pintype{$pin} = "inout" if $flags =~ /io/;
+       } else {
+           $pinlabel{$pin} = $rest;
+       }
+       $rlen{$pin} = &textlen($pinlabel{$pin});
+
+       if ($side =~ /left|right/) {
+           $y = $piny{$pin} = $y{$side};
+           $y{$side} += ($busmode ? $busspace : $groupspace);
+       }
+       if ($side =~ /top|bottom/) {
+           $tw = &alignpin((200 + $rlen{$pin}) / 2);
+           if ($vmode) {
+               $pinx{$pin} = $w{$side};
+               $w{$side} += (($busmode || $compactmode) ? 200 : 400);
+           } else {
+               $pinx{$pin} = $w{$side} + $tw;
+               $w{$side} += $tw + $tw;
+           }
+       }
+
+    }
+
+}
+
+$pinseq = 1;
+
+$minpin = $labelpin;
+$boxwidth = $minwidth;
+%bw = ();
+
+# for each horizontal slice of the symbol, keep track of how much
+# width is used up by the left, middle, and right labels.
+for $lp (keys %pinside) {
+    next unless $pinside{$lp} =~ /left|right|label/;
+    $yb = &alignpin($piny{$lp});
+    for ($y=$yb-300; $y<=$yb+300; $y+=100) {
+       if ($bw{$y}{$pinside{$lp}} < $rlen{$lp}) {
+           $bw{$y}{$pinside{$lp}} = $rlen{$lp};
+       }
+    }
+}
+
+# Compute the height of the box. 
+for $p (keys %pinside) {
+    next unless $pinside{$p} =~ /left|right/;
+    if ($maxy < $piny{$p}) {
+       $maxy = $piny{$p};
+    }
+}
+if (! $vmode) {
+    $maxy += $groupspace;
+}
+
+# Now, use the slice widths to compute the minimum width of the box.
+for ($i=0; $i<$maxy; $i+=100) {
+    $w = $bw{$i}{left} + $bw{$i}{labels} + $bw{$i}{right};
+    if ($bw{$i}{labels}) {
+       $wl = ($bw{$i}{left} + $bw{$i}{labels}/2) * 2;
+       $w = $wl if $w < $wl;
+       $wl = ($bw{$i}{right} + $bw{$i}{labels}/2) * 2;
+       $w = $wl if $w < $wl;
+    }
+    if ($bw{$i}{left} && $bw{$i}{labels}) {
+       $w += 100;
+    } elsif ($bw{$i}{left} && $bw{$i}{right}) {
+       $w += 200;
+    }
+    if ($bw{$i}{right} && $bw{$i}{labels}) {
+       $w += 100;
+    }
+    if ($boxwidth < $w) {
+       $boxwidth = $w;
+    }
+}
+
+$boxwidth = $w{top} if $boxwidth < $w{top};
+$boxwidth = $w{bottom} if $boxwidth < $w{bottom};
+
+# Flip Y coordinates (we count from the top, but symbols coordinates
+# are from the bottom).
+for $p (keys %pinside) {
+    next unless $pinside{$p} =~ /left|right|labels/;
+    $piny{$p} = $maxy - $piny{$p} + $yinvert;
+}
+
+$boxwidth = &alignpin($boxwidth);
+$boxwidth += 200;
+
+# Adjust the position of the top/bottom pins so that, as a group,
+# they're centered.
+%maxh = ();
+for $p (keys %pinside) {
+    next unless $pinside{$p} =~ /top|bottom/;
+    $pinx{$p} += &alignpin(($boxwidth - $w{$pinside{$p}})/2) + 300;
+    if ($vmode) {
+       $pinx{$p} += 200;
+       $h = &textlen($pinlabel{$p});
+       $maxh{$pinside{$p}} = $h if $maxh{$pinside{$p}} < $h;
+    }
+}
+
+if ($vmode) {
+    $dy = &alignpin($maxh{bottom});
+    for $lp ($minpin..-1) {
+       $piny{$lp} += $dy;
+    }
+    for $p (keys %pinside) {
+       if ($pinside{$p} =~ /left|right|bottom/) {
+           $piny{$p} += $dy;
+       }
+    }
+    $maxy += $dy + &alignpin ($maxh{top});
+}
+
+if ($square) {
+    if ($boxwidth < $maxy) {
+       $delta = $maxy - $boxwidth;
+       $delta = &alignpin($delta / 2);
+       $boxwidth = $maxy;
+       for $p (keys %pinside) {
+           if ($pinside{$p} =~ /top|bottom/) {
+               $pinx{$p} += $delta;
+           }
+       }
+    }
+    if ($maxy < $boxwidth) {
+       $maxy = $boxwidth;
+    }
+}
+
+# Labels are centered in the box.
+for $lp ($minpin..-1) {
+    $pinx{$lp} = &alignpin($boxwidth/2) + 300;
+}
+
+# Version.
+print "v 20060123 1\n";
+
+# Symbol box.
+printf("B %d %d %d %d 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1\n",
+       300, 300, $boxwidth, $maxy);
+
+# These are the hidden labels.
+$ax = 300 + $boxwidth;
+$ay = 400 + $maxy;
+for $a (reverse @attrs) {
+    printf("T %d %d 9 10 0 0 0 0 1\n%s\n",
+          $ax, $ay, $a);
+    $ay += 200;
+}
+
+sub pinsort {
+    my ($a, $b) = @_;
+    $a =~ tr/a-z/A-Z/;
+    $b =~ tr/a-z/A-Z/;
+    $a =~ s/(\d+)/sprintf("%06d", $1);/ge;
+    $b =~ s/(\d+)/sprintf("%06d", $1);/ge;
+    return $a cmp $b;
+}
+
+# Now print all the pins.
+for $p (sort {&pinsort($a,$b)} keys %pinside) {
+    next unless $pinside{$p};
+    if ($pinside{$p} eq "left") {
+       $pinx{$p} = 300;
+    }
+    if ($pinside{$p} eq "right") {
+       $pinx{$p} = 300 + $boxwidth;
+    }
+    if ($p > 0 && !$saw_pin{$p}) {
+       print STDERR "MISSING PIN $p\n";
+       $errors++;
+    } else {
+       printf STDERR ("%3s  %-6s  %4d %4d  %s\n",
+                      $p, $pinside{$p}, $pinx{$p}, $piny{$p}, $pinlabel{$p});
+    }
+
+    eval "&drawpin_$pinside{\"$p\"} (\"$p\")";
+}
+
+# what remains are helper functions; for drawing each type of pin,
+# each type of label, etc.
+
+sub drawpin_nc {
+}
+
+sub drawpin_top {
+    my($pin) = @_;
+    $y = $maxy + 300;
+    printf("P %d %d %d %d 1 0 0\n",
+          $pinx{$pin}, $y+300, $pinx{$pin}, $y);
+    print "{\n";
+    if ($vmode) {
+       &pvltext($pinx{$pin}, $y-50, 7, $pinlabel{$pin});
+    } else {
+       &pltext($pinx{$pin}, $y-50, 5, $pinlabel{$pin});
+    }
+    &ntext($pinx{$pin}+50, $y+50, 0, $pin);
+    &pttext($pinx{$pin} -100, $piny{$pin} + 50, 6, $pintype{$pin});
+    print "}\n";
+}
+
+sub drawpin_bottom {
+    my($pin) = @_;
+    printf("P %d %d %d %d 1 0 0\n",
+          $pinx{$pin}, 0, $pinx{$pin}, 300);
+    print "{\n";
+    if ($vmode) {
+       &pvltext($pinx{$pin}, 350, 1, $pinlabel{$pin});
+    } else {
+       &pltext($pinx{$pin}, 350, 3, $pinlabel{$pin});
+    }
+    &ntext($pinx{$pin}+50, 250, 2, $pin);
+    &pttext($pinx{$pin} -100, $piny{$pin} + 50, 6, $pintype{$pin});
+    print "}\n";
+}
+
+sub drawpin_labels {
+    my($pin) = @_;
+    &ltext($pinx{$pin}, $piny{$pin}, 3, $pinlabel{$pin});
+}
+
+sub circle {
+    my ($x, $y) = @_;
+    print "V $x $y 50 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1\n";
+}
+
+sub drawpin_left {
+    my($pin) = @_;
+    $x = $pinx{$pin};
+    $px = 50;
+    if ($bubble{$pin}) {
+       $x -= 100;
+       &circle($x+50, $piny{$pin});
+    }
+    if ($edge{$pin}) {
+       $px += 100;
+       printf("L %d %d %d %d 3 0 0 0 0 0\n",
+              $pinx{$pin}, $piny{$pin}-50,
+              $pinx{$pin}+100, $piny{$pin});
+       printf("L %d %d %d %d 3 0 0 0 0 0\n",
+              $pinx{$pin}+100, $piny{$pin},
+              $pinx{$pin}, $piny{$pin}+50);
+
+    }
+    printf("P %d %d %d %d 1 0 0\n",
+          $pinx{$pin} - 300, $piny{$pin}, $x, $piny{$pin});
+    print "{\n";
+    &pltext($pinx{$pin} + $px, $piny{$pin}, 1, $pinlabel{$pin});
+    &ntext($pinx{$pin} -100, $piny{$pin} + 50, 6, $pin);
+    &pttext($pinx{$pin} -100, $piny{$pin} + 50, 6, $pintype{$pin});
+    print "}\n";
+}
+
+sub drawpin_right {
+    my($pin) = @_;
+    $x = $pinx{$pin};
+    $px = 50;
+    if ($bubble{$pin}) {
+       $x += 100;
+       &circle($x-50, $piny{$pin});
+    }
+    if ($edge{$pin}) {
+       $px += 100;
+       printf("L %d %d %d %d 3 0 0 0 0 0\n",
+              $pinx{$pin}, $piny{$pin}-50,
+              $pinx{$pin}-100, $piny{$pin});
+       printf("L %d %d %d %d 3 0 0 0 0 0\n",
+              $pinx{$pin}-100, $piny{$pin},
+              $pinx{$pin}, $piny{$pin}+50);
+
+    }
+    printf("P %d %d %d %d 1 0 0\n",
+          $pinx{$pin} + 300, $piny{$pin}, $x, $piny{$pin});
+    print "{\n";
+    &pltext($pinx{$pin} - $px, $piny{$pin}, 7, $pinlabel{$pin});
+    &ntext($pinx{$pin} +100, $piny{$pin} + 50, 0, $pin);
+    &pttext($pinx{$pin} -100, $piny{$pin} + 50, 6, $pintype{$pin});
+    print "}\n";
+}
+
+sub ntext {
+    my ($x, $y, $a, $s) = @_;
+    printf("T %d %d 5 8 1 1 0 %s 1\npinnumber=%s\n", $x, $y, $a, $s);
+    if ($s =~ /^\d+$/) {
+       $my_pinseq = $s;
+    } else {
+       while ($pinseq_used[$pinseq]) {
+           $pinseq ++;
+       }
+       $pinseq_used[$pinseq] = 1;
+       $my_pinseq = $pinseq;
+    }
+    printf("T %d %d 5 8 0 1 0 %s 1\npinseq=%d\n", $x, $y, $a, $my_pinseq);
+}
+
+sub pttext {
+    my ($x, $y, $a, $s) = @_;
+    printf("T %d %d 9 10 0 1 0 %s 1\npintype=%s\n", $x, $y, $a, $s);
+}
+
+sub pltext {
+    my ($x, $y, $a, $s) = @_;
+    $s = "pinlabel=$s" unless $s =~ /=/;
+    printf("T %d %d 9 10 1 1 0 %s 1\n%s\n", $x, $y, $a, $s);
+}
+
+sub pvltext {
+    my ($x, $y, $a, $s) = @_;
+    $s = "pinlabel=$s" unless $s =~ /=/;
+    printf("T %d %d 9 10 1 1 90 %s 1\n%s\n", $x, $y, $a, $s);
+}
+
+sub ltext {
+    my ($x, $y, $a, $s) = @_;
+    printf("T %d %d 9 10 1 1 0 %s 1\n%s\n", $x, $y, $a, $s);
+}
+
+sub textlen {
+    my($t) = @_;
+    $t =~ s/^[^=]*=//;
+    $t =~ s@\\_@@g;
+    return length($t) * 110;
+}
+
+sub alignpin {
+    my($v) = @_;
+    return int(($v + 99) / 100) * 100;
+}
+
+exit $errors;
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644 (file)
index 0000000..59f9787
--- /dev/null
@@ -0,0 +1,9 @@
+bin_PROGRAMS = pwm lightcontrol sunrise read_serial
+
+pwm_SOURCES = pwm.c
+lightcontrol_SOURCES = lightcontrol.cpp
+
+sunrise_SOURCES = sunrise.cpp
+read_serial_SOURCES = read_serial.cpp
+
+LDADD = -lTachyon -lACL
diff --git a/src/lightcontrol.cpp b/src/lightcontrol.cpp
new file mode 100644 (file)
index 0000000..a1b13a2
--- /dev/null
@@ -0,0 +1,353 @@
+/*
+ * lightcontrol - control the levels of the red, green, blue and white LEDs
+ */
+
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/shm.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <iostream>
+#include <fstream>
+#include <vector>
+#include <algorithm>
+#include <Tachyon.h>
+#include "pwm.h"
+
+//#define DEBUG
+
+static const char *Version = "lightcontrol version 0.3";
+
+//   System parameters
+
+const int PWM_PERIOD  = 10000;  // microseconds
+
+const int LIGHT_RANGE = 100;    // Maximum value for LEDs
+
+const int N_COLORS    = 4;      // The number of LED colors
+
+enum led_color
+{
+   RED, GREEN, BLUE, WHITE
+};
+
+class color_level
+{
+public:
+
+   int         level;
+   led_color   color;
+   int         pulse_time;
+
+   //  The < operator is used to sort a vector of objects on level
+   bool operator < (const color_level &a)
+   {
+      return level < a.level;
+   }
+
+   void set_level(int lvl)
+   {
+      //  Clip the level to [0 .. LIGHT_RANGE]
+      if (lvl < 0)
+      {
+         lvl = 0;
+      }
+      if (lvl > LIGHT_RANGE)
+      {
+         lvl = LIGHT_RANGE;
+      }
+      level = lvl;
+   }
+
+   int calculate_pulse_time()
+   {
+      pulse_time = PWM_PERIOD * level / LIGHT_RANGE;
+      return pulse_time;
+   }
+
+   int calculate_level()
+   {
+      level = pulse_time * LIGHT_RANGE / PWM_PERIOD;
+      return level;
+   }
+};
+
+// A predicate to find the color_level object for a specific output
+
+class color_eq_output : public std::unary_function<color_level, bool>
+{
+   led_color  c;
+
+public:
+
+   color_eq_output(const led_color &out)
+   {
+      c = out;
+   }
+
+   bool operator () (const color_level &cl) const
+   {
+      return cl.color == c;
+   }
+};
+
+pwm *initialize_signals()
+{
+   pwm *signals;
+
+   int shmid;
+   key_t key;
+   void *shm;
+
+   key = SHM_KEY;
+
+    /*
+     * Create the shared memory segment if it does not exist yet.
+     */
+   if ((shmid = shmget(key, sizeof(pwm) * (N_COLORS + 1), 0666)) < 0)
+   {
+
+      if ((shmid = shmget(key, sizeof(pwm) * (N_COLORS + 1), IPC_CREAT | 0666)) < 0)
+      {
+          perror("shmget");
+          exit(1);
+      }
+
+      //   Now we attach the new segment to our data space and initialize the values.
+      if ((shm = shmat(shmid, (const void *)NULL, 0)) == (void *) -1)
+      {
+          perror("shmat");
+          exit(1);
+      }
+      signals = (struct pwm *)shm;
+      signals[0].output = LED_RED;
+      signals[1].output = LED_GREEN;
+      signals[2].output = LED_BLUE;
+      signals[3].output = LED_WHITE;
+
+   }
+   else
+   {
+      //   Now we attach the existing segment to our data space.
+      if ((shm = shmat(shmid, (const void *)NULL, 0)) == (void *) -1)
+      {
+          perror("shmat");
+          exit(1);
+      }
+      signals = (struct pwm *)shm;
+
+   }
+   return signals;
+}
+
+typedef std::vector<color_level>::iterator  lvl_ptr;
+
+lvl_ptr find_level(std::vector<color_level> &l, led_color o)
+{
+   lvl_ptr p;
+
+   p = find_if(l.begin(), l.end(), color_eq_output(o));
+
+   return p;
+}
+
+
+void light_to_pwm(std::vector<color_level> &lightlevels)
+{
+   pwm *signals;
+
+   sort(lightlevels.begin(), lightlevels.end());
+
+   for (lvl_ptr p = lightlevels.begin(); p != lightlevels.end(); p++)
+   {
+      p->calculate_pulse_time();
+   }
+
+#ifdef DEBUG
+   for (int i=0; i<N_COLORS; i++)
+   {
+      std::cout << "color " << lightlevels[i].color << " level = " << lightlevels[i].level << "\n";
+   }
+#endif
+    /*
+     * Calculate the intervals (in microseconds) from the pulse times
+     */
+   signals = initialize_signals();
+
+   signals[0].interval = lightlevels[0].pulse_time;
+   signals[0].output   = lightlevels[0].color;
+
+   for (int i=1; i<N_COLORS; i++)
+   {
+      signals[i].interval = lightlevels[i].pulse_time - lightlevels[i-1].pulse_time;
+      signals[i].output   = lightlevels[i].color;
+   }
+
+   signals[N_COLORS].interval = PWM_PERIOD - lightlevels[N_COLORS - 1].pulse_time;
+   signals[N_COLORS].output   = -1;
+}
+
+/*
+ *   Fade the lights from the start level to the end level in the specified fade time.
+ */
+
+void lightfade(std::vector<color_level> start_lvl, std::vector<color_level> end_lvl, int fade)
+{
+   int     maximum_difference;
+   Tachyon timebase;
+
+
+   std::ofstream runfile("lightcontrol.run");
+   runfile << timebase.name() << "\n";
+   runfile.close();
+
+   //  Calculate the differences from start to end level
+   maximum_difference = 0;
+   for (lvl_ptr p = start_lvl.begin(); p != start_lvl.end(); p++)
+   {
+      lvl_ptr end_p;
+      int level_diff;
+
+      end_p  = find_level(end_lvl, p->color);
+      level_diff = end_p->level - p->level;
+      maximum_difference = std::max(maximum_difference, abs(level_diff));
+   }
+
+   if (maximum_difference != 0 && fade != 0)
+   {
+      float   step_time = float(fade) / maximum_difference;
+      float   time_counter = 0;
+
+      while (time_counter < fade)
+      {
+         std::vector<color_level> cur_lvl = start_lvl;
+         int level_diff;
+
+         time_counter += step_time;
+         timebase.nanosleep(step_time);
+
+         for (lvl_ptr p = start_lvl.begin(); p != start_lvl.end(); p++)
+         {
+            lvl_ptr end_p, cur_p;
+
+            end_p = find_level(end_lvl, p->color);
+            cur_p = find_level(cur_lvl, p->color);
+
+            level_diff = end_p->level - p->level;
+            cur_p->set_level(p->level + level_diff * time_counter / fade);
+
+            light_to_pwm(cur_lvl);
+         }
+      }
+   }
+
+   light_to_pwm(end_lvl);
+   remove("lightcontrol.run");
+}
+
+int main(int argc, char *argv[])
+{
+
+   int  fade_time = 0;
+   bool change_lights = false;
+
+   pwm  *signals;
+
+   std::vector<color_level>  lightlevels(N_COLORS);
+
+   //  Calulate the light levels from the intervals in shared memory
+
+   signals = initialize_signals();
+
+   unsigned int pulse_time = 0;
+   int i = 0;
+
+   while (signals->output != -1 && i < N_COLORS)
+   {
+      pulse_time += signals->interval;
+      lightlevels[i].pulse_time = pulse_time;
+      lightlevels[i].color = (led_color)signals->output;
+      lightlevels[i].calculate_level();
+
+      signals++;
+      i++;
+   }
+
+#ifdef DEBUG
+   for (int i=0; i<N_COLORS; i++)
+   {
+      std::cout << "color " << lightlevels[i].color << " level = " << lightlevels[i].level << "\n";
+   }
+#endif
+
+   std::vector<color_level> desired_levels = lightlevels;
+
+   //  Scan the arguments.
+   const char *usage = "Usage: lightcontrol [-l] [-V] [-r red] [-g green] [-b blue] [-w white] [-f fadetime]\n";
+
+   int     option;
+
+
+   while ((option = getopt(argc, argv, "r:g:b:w:f:lvV")) != -1)
+   {
+      lvl_ptr p;
+
+      switch (option)
+      {
+      case 'r':
+         p = find_level(desired_levels, RED);
+         p->set_level(atoi(optarg));
+         change_lights = true;
+         break;
+      case 'g':
+         p = find_level(desired_levels, GREEN);
+         p->set_level(atoi(optarg));
+         change_lights = true;
+         break;
+      case 'b':
+         p = find_level(desired_levels, BLUE);
+         p->set_level(atoi(optarg));
+         change_lights = true;
+         break;
+      case 'w':
+         p = find_level(desired_levels, WHITE);
+         p->set_level(atoi(optarg));
+         change_lights = true;
+         break;
+
+      case 'f':
+         fade_time = atoi(optarg);
+         break;
+
+      case 'l':
+         p = find_level(lightlevels, RED);
+        std::cout << p->level << " ";
+         p = find_level(lightlevels, GREEN);
+        std::cout << p->level << " ";
+         p = find_level(lightlevels, BLUE);
+        std::cout << p->level << " ";
+         p = find_level(lightlevels, WHITE);
+        std::cout << p->level << "\n";
+         break;
+
+      case 'V':
+         std::cout << Version << "\n";
+         exit(0);
+
+      case '?':
+      case ':':
+         std::cerr << usage;
+         exit(1);
+
+      }
+   }
+
+   if (change_lights)
+   {
+      lightfade(lightlevels, desired_levels, fade_time);
+   }
+}
+
diff --git a/src/pwm-sysfs.c b/src/pwm-sysfs.c
new file mode 100644 (file)
index 0000000..8cef7a9
--- /dev/null
@@ -0,0 +1,154 @@
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <sys/ipc.h>
+#include <sys/shm.h>
+
+#include "pwm.h"
+
+/*  GPIO pin assignments */
+
+#define OUTPUT_RED    2
+#define OUTPUT_GREEN  3
+#define OUTPUT_BLUE   4
+#define OUTPUT_WHITE 18
+
+static int initialize_output(int pin)
+{
+#define BUFFER_MAX 3
+#define DIRECTION_MAX 80
+
+   char buffer[BUFFER_MAX];
+
+   ssize_t bytes_written;
+   char path[DIRECTION_MAX];
+   int fd;
+   fd = open("/sys/class/gpio/export", O_WRONLY);
+   if (-1 == fd)
+   {
+      perror("Export: ");
+      fprintf(stderr, "Failed to open export for writing!\n");
+      return(-1);
+   }
+   bytes_written = snprintf(buffer, BUFFER_MAX, "%d", pin);
+   write(fd, buffer, bytes_written);
+   close(fd);
+
+   snprintf(path, DIRECTION_MAX, "/sys/class/gpio/gpio%d/direction", pin);
+   fd = open(path, O_WRONLY);
+   if (-1 == fd)
+   {
+      perror("output direction: ");
+      fprintf(stderr, "Failed to open gpio direction for writing!\n");
+      return(-1);
+   }
+   if (-1 == write(fd, "out", 3))
+   {
+      perror("output direction: ");
+      fprintf(stderr, "Failed to set direction!\n");
+      return(-1);
+   }
+   close(fd);
+
+   snprintf(path, DIRECTION_MAX, "/sys/class/gpio/gpio%d/value", pin);
+   fd = open(path, O_WRONLY);
+   if (fd == -1)
+   {
+      perror("GPIO value ");
+      fprintf(stderr, "Failed to open gpio value for writing!\n");
+   }
+
+   return fd;
+}
+
+int main()
+{
+   int shmid;
+   key_t key;
+   char *shm;
+   struct pwm *signals;
+
+   int i;
+
+    /*
+     * We need to get the segment named
+     * SHM_KEY, created by the server.
+     */
+    key = SHM_KEY;
+
+    /*
+     * Locate the segment.
+     */
+    if ((shmid = shmget(key, sizeof(struct pwm) * 5, 0666)) < 0) {
+        perror("shmget");
+        exit(1);
+    }
+
+    /*
+     * Now we attach the segment to our data space.
+     */
+    if ((shm = shmat(shmid, NULL, 0)) == (char *) -1) {
+        perror("shmat");
+        exit(1);
+    }
+
+    /*
+     * Now read what the server put in the memory.
+     */
+
+   int fd[4];
+   fd[0] = initialize_output(OUTPUT_RED);
+   fd[1] = initialize_output(OUTPUT_GREEN);
+   fd[2] = initialize_output(OUTPUT_BLUE);
+   fd[3] = initialize_output(OUTPUT_WHITE);
+
+   signals = (struct pwm *)shm;
+
+   for (i=0; i < 5; i++)
+   {
+      printf("Interval = %d, output = %d\n", signals[i].interval, signals[i].output);
+   }
+
+   int repeat = 20000;
+
+   while (repeat--)
+   {
+      if (signals->interval != 0)
+      {
+         usleep(signals->interval);
+      }
+      if (signals->output == -1)
+      {
+         /*  End of the list: Turn all 4 outputs on  */
+         write(fd[0], "1", 1);
+         write(fd[1], "1", 1);
+         write(fd[2], "1", 1);
+         write(fd[3], "1", 1);
+
+         signals = (struct pwm *)shm;
+      }
+      else
+      {
+         write(fd[signals->output], "0", 1);
+         signals++;
+      }
+   }
+
+   /*  Turn all outputs off */
+
+   write(fd[0], "0", 1);
+   write(fd[1], "0", 1);
+   write(fd[2], "0", 1);
+   write(fd[3], "0", 1);
+
+   return 0;
+}
diff --git a/src/pwm.c b/src/pwm.c
new file mode 100644 (file)
index 0000000..403a11d
--- /dev/null
+++ b/src/pwm.c
@@ -0,0 +1,186 @@
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/mman.h>
+#include <unistd.h>
+
+#include <sys/ipc.h>
+#include <sys/shm.h>
+
+#include "pwm.h"
+
+#define PAGE_SIZE (4*1024)
+#define BLOCK_SIZE (4*1024)
+/*  Direct access to GPIO hardware  */
+
+// Access from ARM Running Linux
+// For Raspberry Pi 2 and Pi 3, change BCM2708_PERI_BASE to 0x3F000000 for the code to work.
+//#define BCM2708_PERI_BASE        0x20000000
+#define BCM2708_PERI_BASE        0x3F000000
+#define GPIO_BASE                (BCM2708_PERI_BASE + 0x200000) /* GPIO controller */
+// I/O access
+volatile unsigned *gpio;
+// GPIO setup macros. Always use INP_GPIO(x) before using OUT_GPIO(x) or SET_GPIO_ALT(x,y)
+#define INP_GPIO(g) *(gpio+((g)/10)) &= ~(7<<(((g)%10)*3))
+#define OUT_GPIO(g) *(gpio+((g)/10)) |=  (1<<(((g)%10)*3))
+#define SET_GPIO_ALT(g,a) *(gpio+(((g)/10))) |= (((a)<=3?(a)+4:(a)==4?3:2)<<(((g)%10)*3))
+#define GPIO_SET *(gpio+7)  // sets   bits which are 1 ignores bits which are 0
+#define GPIO_CLR *(gpio+10) // clears bits which are 1 ignores bits which are 0
+#define GET_GPIO(g) (*(gpio+13)&(1<<g)) // 0 if LOW, (1<<g) if HIGH
+#define GPIO_PULL *(gpio+37) // Pull up/pull down
+#define GPIO_PULLCLK0 *(gpio+38) // Pull up/pull down clock
+void setup_io();
+
+
+/*  GPIO pin assignments */
+
+#define OUTPUT_RED    2
+#define OUTPUT_GREEN  3
+#define OUTPUT_BLUE   4
+#define OUTPUT_WHITE 15
+
+
+int main()
+{
+   int shmid;
+   key_t key;
+   char *shm;
+   struct pwm *signals;
+
+   int i;
+
+    /*
+     * We need to get the segment named
+     * SHM_KEY, created by the server.
+     */
+   key = SHM_KEY;
+
+    /*
+     * Locate the segment.
+     */
+   if ((shmid = shmget(key, sizeof(struct pwm) * 5, 0666)) < 0) {
+      perror("shmget");
+      exit(1);
+   }
+
+    /*
+     * Now we attach the segment to our data space.
+     */
+   if ((shm = shmat(shmid, NULL, 0)) == (char *) -1) {
+      perror("shmat");
+      exit(1);
+   }
+
+   // Set up gpi pointer for direct register access
+   setup_io();
+   INP_GPIO(OUTPUT_RED); // must use INP_GPIO before we can use OUT_GPIO
+   OUT_GPIO(OUTPUT_RED);
+   INP_GPIO(OUTPUT_GREEN); // must use INP_GPIO before we can use OUT_GPIO
+   OUT_GPIO(OUTPUT_GREEN);
+   INP_GPIO(OUTPUT_BLUE); // must use INP_GPIO before we can use OUT_GPIO
+   OUT_GPIO(OUTPUT_BLUE);
+   INP_GPIO(OUTPUT_WHITE); // must use INP_GPIO before we can use OUT_GPIO
+   OUT_GPIO(OUTPUT_WHITE);
+
+   int fd[4];
+   fd[0] = OUTPUT_RED;
+   fd[1] = OUTPUT_GREEN;
+   fd[2] = OUTPUT_BLUE;
+   fd[3] = OUTPUT_WHITE;
+
+   signals = (struct pwm *)shm;
+
+   for (i=0; i < 5; i++)
+   {
+      printf("Interval = %d, output = %d\n", signals[i].interval, signals[i].output);
+   }
+
+   int repeat = 2000;
+
+   while (repeat--)
+   {
+      if (signals->interval != 0)
+      {
+         usleep(signals->interval);
+      }
+      if (signals->output == -1)
+      {
+         /*  End of the list: Turn all 4 outputs on  */
+         GPIO_SET = 1 << fd[0];
+         GPIO_SET = 1 << fd[1];
+         GPIO_SET = 1 << fd[2];
+         GPIO_SET = 1 << fd[3];
+
+         signals = (struct pwm *)shm;
+      }
+      else
+      {
+         //write(fd[signals->output], "0", 1);
+         GPIO_CLR = 1 << fd[signals->output];
+         signals++;
+      }
+   }
+
+   /*  Turn all outputs off */
+
+   GPIO_CLR = 1 << fd[0];
+   GPIO_CLR = 1 << fd[1];
+   GPIO_CLR = 1 << fd[2];
+   GPIO_CLR = 1 << fd[3];
+
+   return 0;
+}
+
+//
+// Set up a memory regions to access GPIO
+//
+void setup_io()
+{
+   void *gpio_map;
+   int  mem_fd;
+
+   /* open /dev/mem */
+   if ((mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0)
+   {
+      printf("can't open /dev/mem \n");
+      exit(-1);
+   }
+   /* mmap GPIO */
+   gpio_map = mmap(
+      NULL,             //Any adddress in our space will do
+      BLOCK_SIZE,       //Map length
+      PROT_READ|PROT_WRITE,// Enable reading & writting to mapped memory
+      MAP_SHARED,       //Shared with other processes
+      mem_fd,           //File to map
+      GPIO_BASE         //Offset to GPIO peripheral
+   );
+   close(mem_fd); //No need to keep mem_fd open after mmap
+   if (gpio_map == MAP_FAILED)
+   {
+      printf("mmap error %d\n", gpio_map);//errno also set!
+      exit(-1);
+   }
+   // Always use volatile pointer!
+   gpio = (volatile unsigned *)gpio_map;
+} // setup_io
diff --git a/src/pwm.h b/src/pwm.h
new file mode 100644 (file)
index 0000000..f89f3ff
--- /dev/null
+++ b/src/pwm.h
@@ -0,0 +1,22 @@
+/*
+ *   Interface definition for the PWM generator.
+ *   The actual data is stored in shared memory which is read by the PWM generator.
+ */
+
+/*  Output identifiers are indices in the array of file descriptors.  */
+
+#define LED_RED      0
+#define LED_GREEN    1
+#define LED_BLUE     2
+#define LED_WHITE    3
+
+struct pwm
+{
+   int interval;
+   int output;
+};
+
+
+/*  The key to identify the shared memory  */
+
+#define SHM_KEY   0x5678
diff --git a/src/pwmread.cpp b/src/pwmread.cpp
new file mode 100644 (file)
index 0000000..6da0e93
--- /dev/null
@@ -0,0 +1,75 @@
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <sys/ipc.h>
+#include <sys/shm.h>
+
+#include "pwm.h"
+
+/*
+ *   Read the PWM intervals from shared memory and calculate the light levels.
+ */
+
+int pwmread()
+{
+   int shmid;
+   key_t key;
+   char *shm;
+   struct pwm *signals;
+
+   int i;
+
+    /*
+     * We need to get the segment named
+     * SHM_KEY, created by the server.
+     */
+    key = SHM_KEY;
+
+    /*
+     * Locate the segment.
+     */
+    if ((shmid = shmget(key, sizeof(struct pwm) * 5, 0666)) < 0) {
+        perror("shmget");
+        exit(1);
+    }
+
+    /*
+     * Now we attach the segment to our data space.
+     */
+    if ((shm = shmat(shmid, NULL, 0)) == (char *) -1) {
+        perror("shmat");
+        exit(1);
+    }
+
+    /*
+     * Now read what the server put in the memory.
+     */
+
+   signals = (struct pwm *)shm;
+
+   for (i=0; i < 5; i++)
+   {
+      printf("Interval = %d, output = %d\n", signals[i].interval, signals[i].output);
+   }
+
+   int repeat = 20000;
+
+   while (repeat--)
+   {
+      if (signals->interval != 0)
+      {
+         usleep(signals->interval);
+      }
+      if (signals->output == -1)
+      {
+         signals = (struct pwm *)shm;
+      }
+      else
+      {
+         signals++;
+      }
+   }
+
+   return 0;
+}
diff --git a/src/read_serial.cpp b/src/read_serial.cpp
new file mode 100644 (file)
index 0000000..335ddb1
--- /dev/null
@@ -0,0 +1,43 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <iostream>
+#include <date.h>
+
+int main()
+{
+   int fd;
+   int bytes;
+   char buf[500];
+
+   fd = open("/dev/ttyACM0", O_RDONLY);
+   if (fd < 0)
+   {
+      std::cerr << "Can not open /dev/ttyACM0.\n";
+      return -1;
+   }
+
+   bytes = 0;
+   while (bytes >= 0)
+   {
+      UTC timestamp;
+
+      bytes = read(fd, buf, 500);
+      if (bytes > 0)
+      {
+         //  Read a sample value from the AD converter
+         //  Voltage = 4.84 V * sample / 1023     ( Reference voltage = 4.84 )
+         // LDR resistance = Voltage * 10000 Ohm /(4.84V - Voltage)
+         buf[bytes] = '\0';
+         if (buf[0] >= '0' && buf[0] <= '9')
+         {
+            timestamp = Now();
+            std::cout << timestamp << "," << buf ;
+            std::cout.flush();
+         }
+      }
+      sleep(20);
+   }
+}
diff --git a/src/sunrise.cpp b/src/sunrise.cpp
new file mode 100644 (file)
index 0000000..bfd4346
--- /dev/null
@@ -0,0 +1,53 @@
+// Caluculate the time of sunrise and sunset
+
+#include <math.h>
+#include <date.h>
+#include <iostream>
+
+int main()
+{
+   // Hardinxveld:
+   double latitude = 51.821366;
+   double longitude = 4.844401;
+   double labda_y = latitude * M_PI / 180.0;
+
+   hour utctime = now(false);
+   hour localtime = now(true);
+
+   // Declanation of the sun  as determined by the tilt of the earth's axis.
+   float Declanation;
+
+   Declanation = -23.44 * cos(2 * M_PI * (today(false).YearDay() + 10) / 365);
+   //delta_s = math.radians (Declanation)
+   std::cout << "Solar declanation: " << Declanation << "\n";
+
+   // The earth rotates 15 degrees in 1 hour
+
+   float solaroffset;
+   solaroffset = longitude / 15.0 * 3600;   // In seconds
+
+   std::cout << "Solar offset = " << solaroffset << " seconds.\n";
+
+   float h0;
+
+   h0 = acos ( (-1 * tan (labda_y) * tan (Declanation * M_PI / 180.0)));
+
+   std::cout << " h0 = " << h0 << " h0 hours = " << h0 * 12 / M_PI << "\n";
+
+   long sunseconds = h0 * 12.0 / M_PI * 3600;
+   hour  sunhours(sunseconds / 3600, (sunseconds / 60) % 60, sunseconds % 60);
+
+   // Calculate the times of sunrise and sunset
+
+   hour midday(12, 0, 0);
+
+   hour sunrise = midday - sunseconds;
+   sunrise = sunrise - hour(long(solaroffset)) + (localtime - utctime);
+   std::cout << "Sunrise at " << sunrise << "\n";
+
+   hour sunset = midday + sunseconds;
+   sunset = sunset - hour(long(solaroffset)) + (localtime - utctime);
+   std::cout << "Sunset at " << sunset << "\n";
+
+}
+
diff --git a/test/Makefile.am b/test/Makefile.am
new file mode 100644 (file)
index 0000000..017067c
--- /dev/null
@@ -0,0 +1 @@
+TESTS = lightctrl lightctrl-oor lightctrl-fade
diff --git a/test/colorsequence b/test/colorsequence
new file mode 100755 (executable)
index 0000000..76221e0
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+#  Create a sequence of light colors for test purposes.
+#  The sequence is red - green - blue - white.
+
+PATH=$PATH:.
+
+pwm-sysfs &
+
+lightcontrol -r 100 -g 0 -b 0 -w 0
+sleep 2
+lightcontrol -r 0 -g 100 -b 0 -w 0
+sleep 2
+lightcontrol -r 0 -g 0 -b 100 -w 0
+sleep 2
+lightcontrol -r 0 -g 0 -b 0 -w 100
+sleep 2
+lightcontrol -r 0 -g 0 -b 0 -w 0
diff --git a/test/flash.py b/test/flash.py
new file mode 100644 (file)
index 0000000..bcb2c52
--- /dev/null
@@ -0,0 +1,29 @@
+import RPi.GPIO as GPIO
+import time
+GPIO.setmode(GPIO.BCM)
+led_R=2
+led_G=3
+led_B=4
+led_W=18
+led=led_W
+counter = 0
+GPIO.setup(led_R,GPIO.OUT)
+GPIO.setup(led_G,GPIO.OUT)
+GPIO.setup(led_B,GPIO.OUT)
+GPIO.setup(led_W,GPIO.OUT)
+while True:
+   if (counter & 1) == 1:
+      GPIO.output(led_R,1)
+   if counter & 2 == 2:
+      GPIO.output(led_G,1)
+   if counter & 4:
+      GPIO.output(led_B,1)
+   if counter & 8:
+      GPIO.output(led_W,1)
+   time.sleep(1.001)
+   GPIO.output(led_R,0)
+   GPIO.output(led_G,0)
+   GPIO.output(led_B,0)
+   GPIO.output(led_W,0)
+   time.sleep(1.001)
+   counter = counter + 1
diff --git a/test/lightctrl b/test/lightctrl
new file mode 100755 (executable)
index 0000000..b30c567
--- /dev/null
@@ -0,0 +1,82 @@
+#!/bin/bash
+#
+#  Test the shared memory interface.
+# Sets light levels and reads them back.
+#
+# Only tests immediate setting of light levels with range (0..100)
+#
+PATH=../src:$PATH
+
+STATUS=0
+
+RED=0
+GREEN=0
+BLUE=0
+WHITE=0
+
+echo "Set light to (R G B W) $RED $GREEN $BLUE $WHITE"
+lightcontrol -r $RED -g $GREEN -b $BLUE -w $WHITE
+LEVELS=`lightcontrol -l`
+echo "Light levels are $LEVELS"
+
+if [[ $LEVELS != "$RED $GREEN $BLUE $WHITE" ]]
+then
+  STATUS=1
+fi
+
+RED=100
+GREEN=100
+BLUE=100
+WHITE=100
+
+echo "Set light to (R G B W) $RED $GREEN $BLUE $WHITE"
+lightcontrol -r $RED -g $GREEN -b $BLUE -w $WHITE
+LEVELS=`lightcontrol -l`
+echo "Light levels are $LEVELS"
+if [[ $LEVELS != "$RED $GREEN $BLUE $WHITE" ]]
+then
+  STATUS=1
+fi
+
+WHITE=10
+echo "Set light to (R G B W) $RED $GREEN $BLUE $WHITE"
+lightcontrol -w $WHITE
+LEVELS=`lightcontrol -l`
+echo "Light levels are $LEVELS"
+if [[ $LEVELS != "$RED $GREEN $BLUE $WHITE" ]]
+then
+  STATUS=1
+fi
+
+BLUE=20
+echo "Set light to (R G B W) $RED $GREEN $BLUE $WHITE"
+lightcontrol -b $BLUE
+LEVELS=`lightcontrol -l`
+echo "Light levels are $LEVELS"
+if [[ $LEVELS != "$RED $GREEN $BLUE $WHITE" ]]
+then
+  STATUS=1
+fi
+
+RED=50
+echo "Set light to (R G B W) $RED $GREEN $BLUE $WHITE"
+lightcontrol -r $RED
+LEVELS=`lightcontrol -l`
+echo "Light levels are $LEVELS"
+if [[ $LEVELS != "$RED $GREEN $BLUE $WHITE" ]]
+then
+  STATUS=1
+fi
+
+GREEN=80
+BLUE=60
+echo "Set light to (R G B W) $RED $GREEN $BLUE $WHITE"
+lightcontrol -g $GREEN -b $BLUE
+LEVELS=`lightcontrol -l`
+echo "Light levels are $LEVELS"
+if [[ $LEVELS != "$RED $GREEN $BLUE $WHITE" ]]
+then
+  STATUS=1
+fi
+
+exit $STATUS
diff --git a/test/lightctrl-fade b/test/lightctrl-fade
new file mode 100755 (executable)
index 0000000..58a4f29
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+#  Test fading lights
+#
+PATH=../src:$PATH
+
+lightcontrol -r 0 -g 0 -b 0 -w 0
+lightcontrol -l
+lightcontrol -r 30 -g 40 -b 20 -w 40 -f 120 &
+sleep 1
+
+read TACHYON_NAME <lightcontrol.run
+tachyon -a 10 $TACHYON_NAME
+
+while [ -f lightcontrol.run ]
+do
+   lightcontrol -l
+   sleep 1
+done
+lightcontrol -l
diff --git a/test/lightctrl-oor b/test/lightctrl-oor
new file mode 100755 (executable)
index 0000000..86a9bf3
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/bash
+#
+#  Test the shared memory interface.
+# Sets light levels and reads them back.
+#
+# Test a few values out of range. these values must be clipped.
+#
+PATH=../src:$PATH
+
+STATUS=0
+
+RED=0
+GREEN=0
+BLUE=0
+WHITE=50
+
+echo "Set light to (R G B W) $RED $GREEN $BLUE $WHITE"
+lightcontrol -r $RED -g $GREEN -b $BLUE -w $WHITE
+LEVELS=`lightcontrol -l`
+echo "Light levels are $LEVELS"
+
+if [[ $LEVELS != "$RED $GREEN $BLUE $WHITE" ]]
+then
+  STATUS=1
+fi
+
+RED=200
+echo "Set light to (R G B W) $RED $GREEN $BLUE $WHITE"
+lightcontrol -r $RED
+LEVELS=`lightcontrol -l`
+RED=100     # clipped value
+echo "Light levels are $LEVELS"
+if [[ $LEVELS != "$RED $GREEN $BLUE $WHITE" ]]
+then
+  STATUS=1
+fi
+
+WHITE=-1
+echo "Set light to (R G B W) $RED $GREEN $BLUE $WHITE"
+lightcontrol -w $WHITE
+LEVELS=`lightcontrol -l`
+WHITE=0     # clipped value
+echo "Light levels are $LEVELS"
+if [[ $LEVELS != "$RED $GREEN $BLUE $WHITE" ]]
+then
+  STATUS=1
+fi
+
+exit $STATUS
diff --git a/web/slider.css b/web/slider.css
new file mode 100644 (file)
index 0000000..c943328
--- /dev/null
@@ -0,0 +1,14 @@
+body
+{
+   background-color : black;
+
+}
+
+text
+{
+   font-family : sans;
+   font-size   : 40 ;
+   font-weight : bold ;
+   fill        : green ;
+}
+
diff --git a/web/slider.html b/web/slider.html
new file mode 100644 (file)
index 0000000..d36f922
--- /dev/null
@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+<meta charset="UTF-8"/>
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xml:lang="en">
+  <head>
+    <title>SVG in XHTML Example</title>
+    <link rel='stylesheet' type='text/css' href='webif.css'/>
+  </head>
+  <body>
+    <h1>Animation with Ecmascript</h1>
+    <p>
+
+<svg width="1024" height="768" version="1.1"
+     xmlns="http://www.w3.org/2000/svg"
+     xmlns:xlink="http://www.w3.org/1999/xlink"
+     onload="StartAnimation(evt)" >
+
+  <script type="text/ecmascript"><![CDATA[
+    var slide_white;
+
+    var timevalue = 0;
+    var timer_increment = 200;
+    var max_time = 5000;
+    var m31;
+    var welcome;
+    var andromeda;
+
+    function StartAnimation(evt)
+    {
+      welcome = evt.target.ownerDocument.getElementById("welcome");
+      andromeda = evt.target.ownerDocument.getElementById("andromeda");
+      slide_white = evt.target.ownerDocument.getElementById("slide_white");
+      MoveWelcome();
+    }
+
+    function MoveAndromeda()
+    {
+      timevalue = timevalue + timer_increment;
+      if (timevalue > max_time)
+      {
+        return;
+      }
+      andromeda.setAttribute("x", -550 + timevalue / max_time * 800);
+      setTimeout("MoveAndromeda()", timer_increment);
+    }
+
+    function MoveWelcome()
+    {
+      timevalue = timevalue + timer_increment;
+      if (timevalue > max_time)
+      {
+        //andromeda.setAttribute("x", 0);
+        timevalue = 0;
+        timer_increment = 50;
+        //setTimeout("MoveAndromeda()", timer_increment);
+        return;
+      }
+      welcome.setAttribute("y", timevalue / max_time * 100);
+      setTimeout("MoveWelcome()", timer_increment);
+    }
+
+    function ShowAndGrowElement()
+    {
+      timevalue = timevalue + timer_increment;
+      if (timevalue > max_time)
+      {
+        //welcome.setAttribute("y", 0);
+        timevalue = 0;
+        setTimeout("MoveWelcome()", timer_increment);
+        return;
+      }
+      
+      //scalefactor = (timevalue * 20.) / max_time;
+      //text_element.setAttribute("transform", "scale(" + scalefactor + ")");
+
+      // Make the image more opaque
+      opacityfactor = timevalue / max_time;
+      m31.setAttribute("opacity", opacityfactor);
+      // Call ShowAndGrowElement again <timer_increment> milliseconds later.
+      setTimeout("ShowAndGrowElement()", timer_increment)
+    }
+    window.ShowAndGrowElement = ShowAndGrowElement
+  ]]></script>
+
+  <rect x="40" y="240" width="10" height="200" fill='white'/>
+  <rect id='slide_white' x="30" y="280" width="30" height="10" stroke='white' fill='yellow' draggable='true' ondrag='alert("drag")' ondragstart='alert("dragstart")'/>
+  <text id="welcome" x="10" y="0" stroke="white" font-color="white" font-size="80">Welcome to</text>
+  <text id="andromeda" x="-550" y="550" stroke="white" font-color="white" font-size="80">Andromeda</text>
+</svg>
+
+    </p>
+
+<svg width="200" height="40" version="1.1"
+     xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <a xlink:href='example11.xhtml'>
+  <rect x="35" y="15" width="60" height="10"/>
+  <polygon points="35,5 10,20 35,35" fill="yellow" stroke="black" stroke-width="3"/>
+  </a>
+<!--
+  <a xlink:href='example11.xhtml'>
+  <rect x="110" y="15" width="60" height="10"/>
+  <polygon points="170,5 195,20 170,35" fill="yellow" stroke="black" stroke-width="3"/>
+  </a>
+-->
+</svg>
+
+  </body>
+</html>