aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>2018-09-26 19:04:23 +0530
committerManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>2018-09-27 13:15:19 +0530
commit5e49674755ce8d56d17dbc1d0f3b68bbf8b3dd70 (patch)
tree9b1eb573128ab6aaf5df4f893db6c9867305d5d0
96b-ce-spec: Import and transposition of original v1.0 releaseHEADmaster
This commit imports and transpositions the original 96Boards CE Spec v1.0 release. Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
-rw-r--r--LICENSE428
-rw-r--r--Makefile20
-rw-r--r--README.rst118
-rw-r--r--source/chapter1-background.rst55
-rw-r--r--source/chapter2-96b-ce.rst640
-rw-r--r--source/chapter3-references.rst17
-rw-r--r--source/chapter4-appendix.rst506
-rw-r--r--source/conf.py164
-rw-r--r--source/images/96b_ce_ext_2x.pngbin0 -> 71531 bytes
-rw-r--r--source/images/96b_ce_std_2x.pngbin0 -> 61602 bytes
-rw-r--r--source/images/cc-by-sa-4.0-88x31.eps2727
-rw-r--r--source/images/cc-by-sa-4.0-88x31.pngbin0 -> 1697 bytes
-rw-r--r--source/images/usb.pngbin0 -> 55706 bytes
-rw-r--r--source/index.rst37
14 files changed, 4712 insertions, 0 deletions
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..fe8dbc5
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,428 @@
+Attribution-ShareAlike 4.0 International
+
+=======================================================================
+
+Creative Commons Corporation ("Creative Commons") is not a law firm and
+does not provide legal services or legal advice. Distribution of
+Creative Commons public licenses does not create a lawyer-client or
+other relationship. Creative Commons makes its licenses and related
+information available on an "as-is" basis. Creative Commons gives no
+warranties regarding its licenses, any material licensed under their
+terms and conditions, or any related information. Creative Commons
+disclaims all liability for damages resulting from their use to the
+fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and
+conditions that creators and other rights holders may use to share
+original works of authorship and other material subject to copyright
+and certain other rights specified in the public license below. The
+following considerations are for informational purposes only, are not
+exhaustive, and do not form part of our licenses.
+
+ Considerations for licensors: Our public licenses are
+ intended for use by those authorized to give the public
+ permission to use material in ways otherwise restricted by
+ copyright and certain other rights. Our licenses are
+ irrevocable. Licensors should read and understand the terms
+ and conditions of the license they choose before applying it.
+ Licensors should also secure all rights necessary before
+ applying our licenses so that the public can reuse the
+ material as expected. Licensors should clearly mark any
+ material not subject to the license. This includes other CC-
+ licensed material, or material used under an exception or
+ limitation to copyright. More considerations for licensors:
+ wiki.creativecommons.org/Considerations_for_licensors
+
+ Considerations for the public: By using one of our public
+ licenses, a licensor grants the public permission to use the
+ licensed material under specified terms and conditions. If
+ the licensor's permission is not necessary for any reason--for
+ example, because of any applicable exception or limitation to
+ copyright--then that use is not regulated by the license. Our
+ licenses grant only permissions under copyright and certain
+ other rights that a licensor has authority to grant. Use of
+ the licensed material may still be restricted for other
+ reasons, including because others have copyright or other
+ rights in the material. A licensor may make special requests,
+ such as asking that all changes be marked or described.
+ Although not required by our licenses, you are encouraged to
+ respect those requests where reasonable. More considerations
+ for the public:
+ wiki.creativecommons.org/Considerations_for_licensees
+
+=======================================================================
+
+Creative Commons Attribution-ShareAlike 4.0 International Public
+License
+
+By exercising the Licensed Rights (defined below), You accept and agree
+to be bound by the terms and conditions of this Creative Commons
+Attribution-ShareAlike 4.0 International Public License ("Public
+License"). To the extent this Public License may be interpreted as a
+contract, You are granted the Licensed Rights in consideration of Your
+acceptance of these terms and conditions, and the Licensor grants You
+such rights in consideration of benefits the Licensor receives from
+making the Licensed Material available under these terms and
+conditions.
+
+
+Section 1 -- Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar
+ Rights that is derived from or based upon the Licensed Material
+ and in which the Licensed Material is translated, altered,
+ arranged, transformed, or otherwise modified in a manner requiring
+ permission under the Copyright and Similar Rights held by the
+ Licensor. For purposes of this Public License, where the Licensed
+ Material is a musical work, performance, or sound recording,
+ Adapted Material is always produced where the Licensed Material is
+ synched in timed relation with a moving image.
+
+ b. Adapter's License means the license You apply to Your Copyright
+ and Similar Rights in Your contributions to Adapted Material in
+ accordance with the terms and conditions of this Public License.
+
+ c. BY-SA Compatible License means a license listed at
+ creativecommons.org/compatiblelicenses, approved by Creative
+ Commons as essentially the equivalent of this Public License.
+
+ d. Copyright and Similar Rights means copyright and/or similar rights
+ closely related to copyright including, without limitation,
+ performance, broadcast, sound recording, and Sui Generis Database
+ Rights, without regard to how the rights are labeled or
+ categorized. For purposes of this Public License, the rights
+ specified in Section 2(b)(1)-(2) are not Copyright and Similar
+ Rights.
+
+ e. Effective Technological Measures means those measures that, in the
+ absence of proper authority, may not be circumvented under laws
+ fulfilling obligations under Article 11 of the WIPO Copyright
+ Treaty adopted on December 20, 1996, and/or similar international
+ agreements.
+
+ f. Exceptions and Limitations means fair use, fair dealing, and/or
+ any other exception or limitation to Copyright and Similar Rights
+ that applies to Your use of the Licensed Material.
+
+ g. License Elements means the license attributes listed in the name
+ of a Creative Commons Public License. The License Elements of this
+ Public License are Attribution and ShareAlike.
+
+ h. Licensed Material means the artistic or literary work, database,
+ or other material to which the Licensor applied this Public
+ License.
+
+ i. Licensed Rights means the rights granted to You subject to the
+ terms and conditions of this Public License, which are limited to
+ all Copyright and Similar Rights that apply to Your use of the
+ Licensed Material and that the Licensor has authority to license.
+
+ j. Licensor means the individual(s) or entity(ies) granting rights
+ under this Public License.
+
+ k. Share means to provide material to the public by any means or
+ process that requires permission under the Licensed Rights, such
+ as reproduction, public display, public performance, distribution,
+ dissemination, communication, or importation, and to make material
+ available to the public including in ways that members of the
+ public may access the material from a place and at a time
+ individually chosen by them.
+
+ l. Sui Generis Database Rights means rights other than copyright
+ resulting from Directive 96/9/EC of the European Parliament and of
+ the Council of 11 March 1996 on the legal protection of databases,
+ as amended and/or succeeded, as well as other essentially
+ equivalent rights anywhere in the world.
+
+ m. You means the individual or entity exercising the Licensed Rights
+ under this Public License. Your has a corresponding meaning.
+
+
+Section 2 -- Scope.
+
+ a. License grant.
+
+ 1. Subject to the terms and conditions of this Public License,
+ the Licensor hereby grants You a worldwide, royalty-free,
+ non-sublicensable, non-exclusive, irrevocable license to
+ exercise the Licensed Rights in the Licensed Material to:
+
+ a. reproduce and Share the Licensed Material, in whole or
+ in part; and
+
+ b. produce, reproduce, and Share Adapted Material.
+
+ 2. Exceptions and Limitations. For the avoidance of doubt, where
+ Exceptions and Limitations apply to Your use, this Public
+ License does not apply, and You do not need to comply with
+ its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section
+ 6(a).
+
+ 4. Media and formats; technical modifications allowed. The
+ Licensor authorizes You to exercise the Licensed Rights in
+ all media and formats whether now known or hereafter created,
+ and to make technical modifications necessary to do so. The
+ Licensor waives and/or agrees not to assert any right or
+ authority to forbid You from making technical modifications
+ necessary to exercise the Licensed Rights, including
+ technical modifications necessary to circumvent Effective
+ Technological Measures. For purposes of this Public License,
+ simply making modifications authorized by this Section 2(a)
+ (4) never produces Adapted Material.
+
+ 5. Downstream recipients.
+
+ a. Offer from the Licensor -- Licensed Material. Every
+ recipient of the Licensed Material automatically
+ receives an offer from the Licensor to exercise the
+ Licensed Rights under the terms and conditions of this
+ Public License.
+
+ b. Additional offer from the Licensor -- Adapted Material.
+ Every recipient of Adapted Material from You
+ automatically receives an offer from the Licensor to
+ exercise the Licensed Rights in the Adapted Material
+ under the conditions of the Adapter's License You apply.
+
+ c. No downstream restrictions. You may not offer or impose
+ any additional or different terms or conditions on, or
+ apply any Effective Technological Measures to, the
+ Licensed Material if doing so restricts exercise of the
+ Licensed Rights by any recipient of the Licensed
+ Material.
+
+ 6. No endorsement. Nothing in this Public License constitutes or
+ may be construed as permission to assert or imply that You
+ are, or that Your use of the Licensed Material is, connected
+ with, or sponsored, endorsed, or granted official status by,
+ the Licensor or others designated to receive attribution as
+ provided in Section 3(a)(1)(A)(i).
+
+ b. Other rights.
+
+ 1. Moral rights, such as the right of integrity, are not
+ licensed under this Public License, nor are publicity,
+ privacy, and/or other similar personality rights; however, to
+ the extent possible, the Licensor waives and/or agrees not to
+ assert any such rights held by the Licensor to the limited
+ extent necessary to allow You to exercise the Licensed
+ Rights, but not otherwise.
+
+ 2. Patent and trademark rights are not licensed under this
+ Public License.
+
+ 3. To the extent possible, the Licensor waives any right to
+ collect royalties from You for the exercise of the Licensed
+ Rights, whether directly or through a collecting society
+ under any voluntary or waivable statutory or compulsory
+ licensing scheme. In all other cases the Licensor expressly
+ reserves any right to collect such royalties.
+
+
+Section 3 -- License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the
+following conditions.
+
+ a. Attribution.
+
+ 1. If You Share the Licensed Material (including in modified
+ form), You must:
+
+ a. retain the following if it is supplied by the Licensor
+ with the Licensed Material:
+
+ i. identification of the creator(s) of the Licensed
+ Material and any others designated to receive
+ attribution, in any reasonable manner requested by
+ the Licensor (including by pseudonym if
+ designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of
+ warranties;
+
+ v. a URI or hyperlink to the Licensed Material to the
+ extent reasonably practicable;
+
+ b. indicate if You modified the Licensed Material and
+ retain an indication of any previous modifications; and
+
+ c. indicate the Licensed Material is licensed under this
+ Public License, and include the text of, or the URI or
+ hyperlink to, this Public License.
+
+ 2. You may satisfy the conditions in Section 3(a)(1) in any
+ reasonable manner based on the medium, means, and context in
+ which You Share the Licensed Material. For example, it may be
+ reasonable to satisfy the conditions by providing a URI or
+ hyperlink to a resource that includes the required
+ information.
+
+ 3. If requested by the Licensor, You must remove any of the
+ information required by Section 3(a)(1)(A) to the extent
+ reasonably practicable.
+
+ b. ShareAlike.
+
+ In addition to the conditions in Section 3(a), if You Share
+ Adapted Material You produce, the following conditions also apply.
+
+ 1. The Adapter's License You apply must be a Creative Commons
+ license with the same License Elements, this version or
+ later, or a BY-SA Compatible License.
+
+ 2. You must include the text of, or the URI or hyperlink to, the
+ Adapter's License You apply. You may satisfy this condition
+ in any reasonable manner based on the medium, means, and
+ context in which You Share Adapted Material.
+
+ 3. You may not offer or impose any additional or different terms
+ or conditions on, or apply any Effective Technological
+ Measures to, Adapted Material that restrict exercise of the
+ rights granted under the Adapter's License You apply.
+
+
+Section 4 -- Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that
+apply to Your use of the Licensed Material:
+
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right
+ to extract, reuse, reproduce, and Share all or a substantial
+ portion of the contents of the database;
+
+ b. if You include all or a substantial portion of the database
+ contents in a database in which You have Sui Generis Database
+ Rights, then the database in which You have Sui Generis Database
+ Rights (but not its individual contents) is Adapted Material,
+
+ including for purposes of Section 3(b); and
+ c. You must comply with the conditions in Section 3(a) if You Share
+ all or a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not
+replace Your obligations under this Public License where the Licensed
+Rights include other Copyright and Similar Rights.
+
+
+Section 5 -- Disclaimer of Warranties and Limitation of Liability.
+
+ a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
+ EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
+ AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
+ ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
+ IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
+ WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
+ ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
+ KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
+ ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
+
+ b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
+ TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
+ NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
+ INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
+ COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
+ USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
+ DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
+ IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+ c. The disclaimer of warranties and limitation of liability provided
+ above shall be interpreted in a manner that, to the extent
+ possible, most closely approximates an absolute disclaimer and
+ waiver of all liability.
+
+
+Section 6 -- Term and Termination.
+
+ a. This Public License applies for the term of the Copyright and
+ Similar Rights licensed here. However, if You fail to comply with
+ this Public License, then Your rights under this Public License
+ terminate automatically.
+
+ b. Where Your right to use the Licensed Material has terminated under
+ Section 6(a), it reinstates:
+
+ 1. automatically as of the date the violation is cured, provided
+ it is cured within 30 days of Your discovery of the
+ violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+ For the avoidance of doubt, this Section 6(b) does not affect any
+ right the Licensor may have to seek remedies for Your violations
+ of this Public License.
+
+ c. For the avoidance of doubt, the Licensor may also offer the
+ Licensed Material under separate terms or conditions or stop
+ distributing the Licensed Material at any time; however, doing so
+ will not terminate this Public License.
+
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
+ License.
+
+
+Section 7 -- Other Terms and Conditions.
+
+ a. The Licensor shall not be bound by any additional or different
+ terms or conditions communicated by You unless expressly agreed.
+
+ b. Any arrangements, understandings, or agreements regarding the
+ Licensed Material not stated herein are separate from and
+ independent of the terms and conditions of this Public License.
+
+
+Section 8 -- Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and
+ shall not be interpreted to, reduce, limit, restrict, or impose
+ conditions on any use of the Licensed Material that could lawfully
+ be made without permission under this Public License.
+
+ b. To the extent possible, if any provision of this Public License is
+ deemed unenforceable, it shall be automatically reformed to the
+ minimum extent necessary to make it enforceable. If the provision
+ cannot be reformed, it shall be severed from this Public License
+ without affecting the enforceability of the remaining terms and
+ conditions.
+
+ c. No term or condition of this Public License will be waived and no
+ failure to comply consented to unless expressly agreed to by the
+ Licensor.
+
+ d. Nothing in this Public License constitutes or may be interpreted
+ as a limitation upon, or waiver of, any privileges and immunities
+ that apply to the Licensor or You, including from the legal
+ processes of any jurisdiction or authority.
+
+
+=======================================================================
+
+Creative Commons is not a party to its public
+licenses. Notwithstanding, Creative Commons may elect to apply one of
+its public licenses to material it publishes and in those instances
+will be considered the “Licensor.” The text of the Creative Commons
+public licenses is dedicated to the public domain under the CC0 Public
+Domain Dedication. Except for the limited purpose of indicating that
+material is shared under a Creative Commons public license or as
+otherwise permitted by the Creative Commons policies published at
+creativecommons.org/policies, Creative Commons does not authorize the
+use of the trademark "Creative Commons" or any other trademark or logo
+of Creative Commons without its prior written consent including,
+without limitation, in connection with any unauthorized modifications
+to any of its public licenses or any other arrangements,
+understandings, or agreements concerning use of licensed material. For
+the avoidance of doubt, this paragraph does not form part of the
+public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
+
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..d161ef7
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,20 @@
+# Minimal makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS =
+SPHINXBUILD = sphinx-build
+SPHINXPROJ = 96Boards-CE-Spec
+SOURCEDIR = source
+BUILDDIR = build
+
+# Put it first so that "make" without argument is like "make help".
+help:
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+.PHONY: help Makefile
+
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..66e0c78
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,118 @@
+########################################
+96Boards Consumer Edition Specification
+########################################
+
+96Boards Consumer Edition Specification.
+
+Build Instructions
+==================
+
+Requirements
+^^^^^^^^^^^^
+
+* Sphinx version 1.5 or later: http://sphinx-doc.org/contents.html
+* LaTeX (and pdflatex, and various LaTeX packages)
+
+On Debian and Ubuntu
+^^^^^^^^^^^^^^^^^^^^
+::
+
+ # apt-get install python-sphinx texlive texlive-latex-extra libalgorithm-diff-perl \
+ texlive-humanities texlive-generic-recommended texlive-generic-extra \
+ latexmk
+
+If the version of python-sphinx installed is too old, then an additional
+new version can be installed with the Python package installer::
+
+ $ apt-get install python-pip
+ $ pip install --user --upgrade Sphinx
+ $ export SPHINXBUILD=~/.local/bin/sphinx-build
+
+Export SPHINXBUILD (see above) if Sphinx was installed with pip --user, then follow Make commands below
+
+On Fedora
+^^^^^^^^^
+
+::
+
+ # dnf install python2-sphinx texlive texlive-capt-of texlive-draftwatermark \
+ texlive-fncychap texlive-framed texlive-needspace \
+ texlive-tabulary texlive-titlesec texlive-upquote \
+ texlive-wrapfig
+
+It is also possible to use python3-sphinx; this requires
+SPHINXBUILD=sphinx-build-3 to be passed on the Make command line.
+
+On Mac OS X
+^^^^^^^^^^^
+
+* Install MacTeX_
+* Install pip if you do not have it::
+
+ $ sudo easy_install pip
+
+* Install Sphinx::
+
+ $ pip install --user --upgrade Sphinx
+
+.. _MacTeX: http://tug.org/mactex
+
+Make Targets
+^^^^^^^^^^^^
+
+To generate PDF::
+
+ $ make latexpdf
+
+To generate hierarchy of HTML pages::
+
+ $ make html
+
+To generate a single HTML page::
+
+ $ make singlehtml
+
+Output goes in `./build` subdirectory.
+
+License
+=======
+
+This work is licensed under the Creative Commons Attribution-ShareAlike 4.0
+International License (CC-BY-SA-4.0). To view a copy of this license, visit
+http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to
+Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
+
+Contributions are accepted under the same with sign-off under the Developer's
+Certificate of Origin. For more on contributing to {PROJECT}, see CONTRIBUTING.rst_.
+
+A copy of the license is included in the LICENSE_ file.
+
+.. image:: https://i.creativecommons.org/l/by-sa/4.0/88x31.png
+ :target: http://creativecommons.org/licenses/by-sa/4.0/
+ :alt: Creative Commons License
+
+.. _CONTRIBUTING.rst: ./CONTRIBUTING.rst
+.. _LICENSE: ./LICENSE
+
+Writers Guide
+=============
+
+All documentation in this repository uses reStructuredText_ markup
+with Sphinx_ extensions.
+
+All files in this project must include the relevant SPDX license identifier
+tag. Generally this means each ``.rst`` file should include the line
+
+ ``.. SPDX-License-Identifier: CC-BY-SA-4.0``
+
+.. _reStructuredText: http://docutils.sourceforge.net/docs/user/rst/quickref.html
+.. _Sphinx: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html
+
+Original Document
+=================
+Prior to being relicensed to CC-BY-SA 4.0, this specification was
+released by Linaro. The original Draft v1.0 text can be found here:
+
+`{PROJECT} Draft v1.0 <https://linaro.co/ce-specification>`_
+
+.. SPDX-License-Identifier: CC-BY-SA-4.0
diff --git a/source/chapter1-background.rst b/source/chapter1-background.rst
new file mode 100644
index 0000000..c402cd3
--- /dev/null
+++ b/source/chapter1-background.rst
@@ -0,0 +1,55 @@
+.. SPDX-License-Identifier: CC-BY-SA-4.0
+
+**********
+Background
+**********
+
+The 96Boards Consumer Edition (CE) Platform is intended to support:
+
+1. Low cost Single Board Computer use
+
+ a) Low cost platform for running standard Linux-based OS including Android
+ b) Open Source community software development
+
+2) Maker community
+
+ a) Requiring extensible hardware interfaces to prototype or build add on
+ products
+
+3) Embedded System OEMs requiring low cost off-the-shelf CPU modules
+
+ a) Example - Kiosks, Displays, Robots etc.
+
+4) Community engineering activities, including
+
+ a) upstream development
+ b) allowing ‘real life’ benchmarking and tuning, including power management
+ c) being integrated into an automated test farm
+ d) 96Boards Community program to be run by Linaro
+
+In all cases key design and distribution goals are:
+
+- Low cost ($50-100 retail for a minimum configuration)
+
+- Easy to extend with off the shelf parts available to maker community and OEMs
+
+- Easy to purchase globally (for example, via Amazon, Alibaba, Farnell, Digikey,
+ Mouser etc.)
+
+- Enable a third party ecosystem to develop around expansion (mezzanine)
+ boards/peripherals/displays etc. that can be used on any 96Boards CE compliant
+ board
+
+A key design objective is to encourage multiple SoC vendors to build boards to
+this specification. This is an evolution from previous successful community
+boards where the external ecosystem is tied to a particular SoC. The 96Boards
+CE specification is designed to enable an ecosystem to evolve that will support
+multiple SoCs over a period of years.
+
+The specification is completely open - that is anyone may build a board to the
+specification without payment of any fees or any licensing requirements.
+
+The 96Boards CE Certification Program is optional for board developers and will
+provide hardware and software certification, a community site and software
+support provided by Linaro for 96Boards CE certified boards. Participation is
+not required in order to build a board to the specification.
diff --git a/source/chapter2-96b-ce.rst b/source/chapter2-96b-ce.rst
new file mode 100644
index 0000000..c3c9ca9
--- /dev/null
+++ b/source/chapter2-96b-ce.rst
@@ -0,0 +1,640 @@
+.. SPDX-License-Identifier: CC-BY-SA-4.0
+
+*************************
+96Boards Consumer Edition
+*************************
+
+Hardware
+========
+
+96Boards CE Minimum Hardware Features
+-------------------------------------
+
+1) Ultra-small low-profile “card” form factor - 85 x 54 x 12mm
+
+ a) Footprint compatible Extended Version option - 85 x 100 x 12mm
+
+2) Design is SoC independent (targets 32 or 64 bit SoCs)
+
+3) 0.5GB RAM (Minimum 1GB recommended for Android)
+
+4) MicroSDHC Socket for up to 64GB on-board or expansion flash storage
+
+5) Wifi 802.11g/n and Bluetooth 4.0 LE
+
+6) On Board Connectors and expansion I/O
+
+ a) 2x USB Type A or Type C host ports (USB2.x or 3.x)
+
+ b) USB Micro-B USB or Type C slave or OTG port (USB2.x or 3.x)
+
+ a) For PC connection
+
+ c) Display output must be available on one of the following:
+
+ a) HDMI/audio on HDMI full size or micro connector
+
+ b) MHL display/audio on display microUSB
+
+ c) DisplayPort/audio on USB Type C
+
+ d) Low profile 40 way female header for maker/community use
+
+ d) Low profile 60 way high speed female module header for advanced
+ maker/OEM use with high speed interfaces including MIPI-DSI, USB and
+ optional MIPI CSI-2
+
+ e) Board power from low profile DC Jack connector
+
+A 96Boards CE board must implement the minimum functionality. Additional functionality
+may be implemented provided that the 96Boards CE specifications are implemented in full
+(including limitations on form factor). See below for further information.
+
+Hardware Feature Details
+------------------------
+
+96Boards CE Physical Footprint
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The 96Boards CE defines a new standard for small footprint community boards. The board is
+defined into a credit card footprint with a total maximum height of 12.0mm:
+
+1) Area
+
+ The board without population of connectors shall fit into a 85 x 54mm
+ footprint +/-0.25mm. Connectors should not protrude from the area
+ footprint except as component design requires (for example USB Type A
+ front shrouds). A compatible extended version is defined that shall fit
+ into a 85 x 100mm footprint with the same conditions.
+
+2) Height
+
+ a) PCB 62mil 62mil (1.575mm) nominal
+ b) Below PCB 3.4 mm maximum
+ c) Above PCB 7.0 mm maximum
+
+Total height of the board including on board connectors **shall** not
+exceed 12mm.
+
+Note that the maximum height for general components on the board top side is
+4mm (not including the allowed areas for connectors and larger components).
+The maximum height in the allowed areas is 6.5mm except for the two Type A
+USB connectors which can be up to 7.0mm. The extended version does allow some
+components to exceed the height specifications. See the keepout drawings in the
+Specification Appendix for further information.
+
+SoC Location Options
+^^^^^^^^^^^^^^^^^^^^
+
+The specification is designed with two possible locations for the SoC. One is
+on the board top surface, and the other is on the board bottom surface.
+
+The rationale is to permit SoCs with low power dissipation to be placed on the
+top surface with a low profile heatsink or fan if required (to a total maximum
+height of 6.0mm). Then, mezzanine boards placed above this area are required
+to have no components on their underside corresponding keep out area above the
+SoC.
+
+The second option is to place the SoC on the underside of the board. This
+is intended for implementations that require higher SoC power dissipation. As
+supplied, the board should meet the “below PCB” footprint requirement. This
+then allows additional thermal management in the case or enclosure for the
+board as required.
+
+DRAM
+^^^^
+
+The board **shall** be populated with a minimum of 0.5GB of DRAM. It is
+**strongly recommended** that a minimum of 1GB DRAM is fitted where the
+board is expected to run Android.
+
+eMMC/Flash
+^^^^^^^^^^
+
+The board **may** optionally be populated with eMMC or other format flash
+memory.
+
+If the SoC used is not able to boot from microSDHC then a minimum
+of 8MB of bootable flash memory **shall** be provided on the board.
+Where multiple boot options are provided the choice of boot location **shall**
+be user selectable in hardware (links or switches).
+
+Note that the insertion of a cable **shall not** automatically require boot
+from that cable (for example the insertion of a microUSB cable into an OTG
+port to use FastBoot). In this case the boot option must still be user
+selectable.
+
+microSDHC
+^^^^^^^^^
+
+A microSDHC card socket **shall** be fitted in the specified location on
+the board. In the absence of on-board Flash memory, the system **shall**
+be capable of booting from the boot software installed on a microSDHC card
+at power up.
+
+WiFi/Bluetooth LE
+^^^^^^^^^^^^^^^^^
+
+The board **shall** support WiFi (minimally 802.11g/n) and Bluetooth
+4.0 (Bluetooth Low Energy). It is **recommended** that WiFi 802.11ac is
+also supported. A PCB or chip antenna **shall** be provided in the prescribed
+location. An external antenna socket option **may** be provided.
+
+Display Interface
+^^^^^^^^^^^^^^^^^
+
+Display output **shall** be one of:
+
+1) HDMI which **shall** be provided on a full size (Type A) or a micro
+ Type D connector
+
+2) MHL which **shall** be provided on a 5 pin microUSB connector
+
+3) Displayport which **shall** be provided on a USB Type C connector
+
+In all cases the display interface **shall** include audio with support for
+at least 1 channel
+
+In all cases the connector **shall** be located in the specified location.
+
+A MIPI DSI port **shall** be provided on the expansion bus interface. 1-4
+lanes are supported. An implementation **may** use less than 4 lanes.
+
+Note that if a single DSI interface on the SoC is used to provide both
+
+ 1) the high speed expansion bus interface DSI port
+ 2) the on board HDMI/MHL/DisplayPort interface (via suitable transmitter),
+ then the expansion port interface **shall** be operational if a
+ mezzanine board that uses DSI is fitted. It is then optional as to
+ whether the on-board interface is usable at the same time.
+
+Camera Interfaces
+^^^^^^^^^^^^^^^^^
+
+1 or 2 MIPI CSI-2 ports **may** be provided on the expansion bus interface.
+
+If 1 port is provided it **shall** be located on the CSI0 port interface
+
+From 1-4 lanes **may** be implemented on the CSI0 port interface
+
+From 1-2 lanes **may** be implemented on the CSI1 port interface
+
+An implementation **may** support dual (stereo) cameras through the
+CSI0 interface if the SoC provides the necessary functionality.
+
+Cameras/Sensors can require additional control signals including RST, PWRDN
+and MCLK.
+
+The specified GPIO and CLK signals on the expansion connectors
+**shall** be used for these functions if implemented.
+
+If the cameras/sensors are not available/used then these signals **shall**
+be available as GPIO and CLK signals.
+
+USB Ports
+^^^^^^^^^
+
+A total of 4 USB ports **shall** be provided for a board.
+
+Two Type A or Type C USB host ports (USB 2.x or 3.x) **shall** be provided
+on the board.
+
+The connectors **shall** be in the specified locations.
+
+Two options are provided for the required third USB port, which **shall**
+be capable of slave operation:
+
+1) A 5 pin microUSB USB 2.0 slave port **shall** be provided.
+
+ The connector type **shall** be micro-AB for an OTG port or micro-B for
+ a slave only port.
+
+ This port **shall not** provide power to the board,
+ due to insufficient power rating.
+
+2) A Type C USB port shall be provided (USB 2.x or 3.x).
+
+ This port may also be used to provide 5V external power to the board.
+
+ In both options the connector **shall** be placed in the specified location.
+
+ The third port **shall** be available as a slave port.
+
+ The third port **may** be an OTG port.
+
+A fourth USB host port **shall** be provided on the high speed expansion bus.
+
+Implementation note: some mobile SoCs implement only a single USB OTG port.
+Such SoCs can be used on boards with a switch and a USB hub IC. See the
+Appendix to this specification for an example implementation.
+
+Therefore, there **may** be some restrictions on simultaneous USB port usage.
+
+Two examples:
+
+ a) it may not be possible to use the host ports simultaneously with the
+ slave port
+ b) a base board port may be shared via a switch to provide the expansion port
+
+Any such restrictions **shall** be clearly documented.
+
+Audio
+^^^^^
+
+The board **shall** provide a minimum of single channel audio through the
+following facilities:
+
+1) I/O via Bluetooth 4.0
+
+2) Output through the HDMI/MHL/DisplayPort interface
+
+An I2S/PCM audio channel **shall** be provided on the low speed expansion
+interface.
+
+Other audio facilities are optional.
+
+DC Power
+^^^^^^^^
+
+Power **shall** be provided to the board by one (and only one) of the following:
+
+1) An 8V to 18V power supply from a dedicated DC jack power connector.
+ A 1.65mm center pin positive DC jack connector, CUI Inc **PJ-041H** or
+ equivalent, **shall** be placed in the specified location.
+
+2) An 8V to 18V power supply from the SYS_DCIN pins on the low speed expansion
+ connector.
+
+3) A USB Type C port at 5V (if fitted) according to the USB 3.1 specifications.
+
+The specification does not support multiple simultaneous power supplies
+(ie DC jack, mezzanine board power, USB power). If multiple in-specification
+supplies are connected there **shall not** be a safety issue and there **shall**
+be no damage to the board.
+
+The board **shall** be able to provide the following power to external devices
+when a sufficiently rated power supply is connected to the DC Jack:
+
+ 1) A minimum of 7W to a mezzanine module via the SYS_DCIN line, and
+
+ 2) A minimum of 5W to a mezzanine module via the regulated +5V line, and
+
+ 3) A minimum of 5W to external USB devices connected to the 2 host USB ports, and
+
+ 4) A minimum of 0.18W to a mezzanine module via the regulated +1.8V line
+
+The board **shall** be able to provide the following power to external devices
+when powered from (a) the Expansion connector or from (b) a Type C USB
+port (when power does not have to be provided on the SYS_DCIN line)
+
+ 1) A minimum of 5W to a mezzanine module via the regulated +5V line, and
+
+ 2) A minimum of 5W to external USB devices connected to the 2 host USB ports
+
+ 3) A minimum of 0.18W to a mezzanine module via the regulated +1.8V line
+
+Battery Power and Low Cost Power Supplies
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A board could be powered either by a low cost power supply that is only capable
+of providing power for the board and for low power mezzanine boards, or by an
+external battery (for example from the SYS_DCIN line or a separate battery
+connection).
+
+Limitations on available power covering the use of smaller and/or
+battery power supplies **shall** be clearly documented.
+
+Measurement, Instrumentation and Testing Facilities
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Boards **shall** support power measurement, instrumentation and testing
+facilities. The following facilities **shall** be provided.
+
+Power Measurement
+^^^^^^^^^^^^^^^^^
+
+A minimum of 1 current sense resistor **shall** be placed to permit basic
+power measurement functions.
+
+ - The total power consumption of the board **shall** be measurable
+ through a suitable 1% current sense resistor.
+
+ - This **may** be a developer install option (i.e. the sense resistor may
+ be shipped as a zero ohm resistor for production boards that a developer
+ can replace for power measurement)
+
+ - The sense resistor **shall** be placed on the main board power supply to
+ measure the total base board power. It is optional as to whether this will
+ measure any mezzanine board power usage.
+
+Additional current sense resistors **may** be placed at the discretion of
+the board designer.
+
+It is **recommended** that additional sense resistors are provided for the main
+PMIC downstream supplies to the SoC core, memory etc.
+
+Current sense resistors shall be made available externally to measurement equipment. One
+option for interface is the ARM Energy Probe:
+
+http://ds.arm.com/ds-5/optimize/arm-energy-probe/
+
+The PCB design **shall** provide for low profile male 0.1” header pins to
+enable the connection of:
+
+ - The sense resistor connections (2 pins each)
+ - A single ground pin (for voltage measurement). The Low speed expansion
+ connector may be documented as being usable for the ground pin requirement.
+
+This header (or headers) **may** be unpopulated on a retail 96Boards CE board
+(enabling users to add the headers themselves).
+
+Power Button and Reset Button
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The user **shall** be able to manually power up/down and reset the board.
+(For example, with one or two button switches).
+
+It **shall** be possible to connect external switches for power on/off and
+for hard reset.
+
+This **shall** be implemented using the specified pins on the low speed bus
+connector (adjacent pins allowing direct connect of a 3 pin connector for
+both switches).
+
+It **shall** be possible to configure the board to power up automatically if
+external power is removed and then re-applied.
+
+This **may** either be default operation or through a configuration option
+(e.g. link or switch).
+
+Implementation note: It is up to the designer how to implement this
+functionality. For example, a single push button under SoC/PMIC control could
+be used to turn the power on or off, with a long press to carry out a system
+reset. In this case the board should automatically always power up when power
+is newly applied. Alternatively a physical On/Off toggle switch could be used
+to apply power to the board, which would automatically power up when in the On
+position. In this case a separate push to reset switch could be implemented.
+
+External Fan Connection
+^^^^^^^^^^^^^^^^^^^^^^^
+
+An external fan (for example for a case) connection is available on the low
+speed expansion connector by using a 2 pin male header for +5V or +12V fans.
+
+UART
+^^^^
+
+One standard UART from the SoC **shall** be made available for general purpose
+use on the low speed expansion connector.
+
+A second UART (TxD/RxD only) **may** be made available on the low speed
+expansion connector.
+
+Note: Off the shelf FTDI 1.8V serial USB cables may be used to interface to
+these interfaces.
+
+JTAG
+^^^^
+
+JTAG facilities **may** be provided on a board.
+
+If implemented the JTAG interface **shall** use the 10 pin JTAG connector
+(0.05” pitch)
+See http://www.support.code-red-tech.com/CodeRedWiki/HardwareDebugConnections
+
+System and User LEDs
+^^^^^^^^^^^^^^^^^^^^
+
+The following LEDs **shall** be present on the board.
+
+The LEDs **shall** be of the specified size, color and location.
+
+The User LEDs **shall** be directly programmable from the SoC.
+
+ 1) WiFi activity LED - Yellow Type: 0603 SMD
+
+ 2) Bluetooth activity LED - Blue Type: 0603 SMD
+
+ 3) User LEDs x4 - Green Type: 0603 SMD
+
+Other LEDs and UI interfaces are optional.
+
+Front Panel and DC Jack Connectors
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Development boards are in general subject to high cycle life of connector
+attachments, and should be designed to be as mechanically strong as possible.
+Therefore, the front panel connectors (Display, USB Type A and microUSB/USB Type
+C) and the DC Jack connector **shall** include through-PCB mechanical support.
+
+While surface mount electrical connections are acceptable, a fully surface mount
+connector without any in/through board mechanical support **shall not** be used.
+
+Expansion Connectors
+^^^^^^^^^^^^^^^^^^^^
+
+Two expansion connectors **shall** be provided. The first is a low speed
+expansion connector carrying GPIO and other low speed interfaces. The second
+is a high speed expansion connector that provides high speed interfaces such
+as MIPI DSI, MIPI CSI-2 and MIPI-HSIC. Mezzanine boards are expected to be used
+in one of two configurations:
+
+ 1) Low speed expansion connector only
+
+ 2) Low and high speed expansion connectors together
+
+Low Speed Expansion Connector
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A 40 pin low profile female 2mm receptacle (20x2) 4.5mm height is specified.
+
+Part numbers include:
+
+ - Molex 87381-4063 (SMT)
+ - FCI 55510-140LF (SMT)
+ - Samtec TLE-120-01-G-DV (SMT)
+ - TE 4-1470209-3 (Through hole)
+ - TE 4-1734506-3 (Through hole)
+ - FCI 63453-140LF (Through hole)
+
+Important notes:
+
+ 1) Unless otherwise indicated the low speed expansion connector signals are
+ at 1.8V logic levels.
+
+ 2) The mezzanine board connector may be shrouded or unshrouded (see example
+ part numbers below). Since a shrouded part can be used the connector
+ footprint should be 43.0x6.5mm with no other components on the board top
+ side in this area.
+
+The following interfaces **shall** be available except where specified as
+optional:
+
+ - UART0
+ - UART1 (optional)
+ - SPI bus
+ - I2Cx2
+ - I2Sx2
+ - GPIO x12
+ - Reset and Power button
+ - 1.8V, 5V and DC_IN power supplies
+
+Refer to Connector Pin Specification appendix for the required pinout.
+
+High Speed Expansion Connector
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A 60 pin 0.8mm high speed Board to Board low profile receptacle connector
+is specified. Part numbers include
+
+ - FCI 61082-061409LF
+ - TE 5177983-2
+
+Important note: unless otherwise indicated the high speed expansion connector
+signals are at 1.8V logic levels.
+
+The following interfaces shall be available except where specified as optional:
+
+ - MIPI DSI
+ - USB
+ - SD or SPI interface
+ - MIPI CSI-2 (x2 optional)
+ - I2C (x2 optional, but 1 shall be provided if CSI interface(s) are provided)
+ - HSIC (optional)
+
+Refer to appendix for the required pinout. These connectors have been designed
+to provide a board to board separation to a mezzanine board of 7.0 or 8.0mm.
+
+Expansion Board Connectors
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The following mezzanine board connectors may be used to interface to the
+baseboard:
+
+ - MOLEX 87831-4029: Low speed 2.5mm mated height (Through hole shrouded)
+ - FCI 57202-G52-20LF: Low speed 2.5mm mated height (SMT no shroud)
+ - SAMTEC TMMH-120-01-F: Low speed 2.0mm body (Through hole)
+ - FCI 61083-063400LF: High speed
+ - TE 5179030-2: High speed
+
+Expansion Connector Notes
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ 1) GPIO-A **shall** be capable of waking up the SoC from sleep/standby mode
+ 2) By default all GPIO pins should be configured at boot as inputs to the
+ SoC. This allows for the mezzanine board configuration to be detected from
+ the SoC. After the configuration is known GPIO pins (pin-muxed) may be
+ re-configured in software for mezzanine module specific functions. Through
+ this mechanism additional support for particular SoC/mezzanine module
+ configurations may be supported by making the appropriate SoC GPIO special
+ function pins available on the expansion connector(s).
+ Note that by default all GPIO pins should be usable as GPIOs (i.e. any
+ generic mezzanine board may rely on any or all of the specified GPIO pins
+ being available for use).
+ 3) A mezzanine board should not place components (other than the required
+ connectors) on the underside in the area of the base board.
+
+Standalone Functionality
+========================
+
+The standalone board requires only a power supply and display connected to
+be used as an advanced single board computer (using wireless
+keyboard/mouse/WiFi & Bluetooth).
+
+Maker Functionality
+===================
+
+The hobby/maker community are able to use the low speed connector directly,
+but must be aware that the connections are direct 1.8V level to the on-board
+SoC.
+
+In addition, for this community, CircuitCo Inc. plans to make available an
+initial low cost maker mezzanine board that will provide the following
+functionality:
+
+ - I/O level shifters to 3.3V/5V
+ - 0.1” header for easy access to low speed expansion I/O at 3.3/5V levels
+ - Raspberry Pi compatible CSI camera FFC connector
+ - Arduino Uno compatible shield interface
+ - Standard UART connector interface
+
+This board will connect to any 96Boards CE compliant board.
+
+Embedded OEM Functionality
+==========================
+
+It is intended that embedded equipment makers can easily create mezzanine boards
+that connect to the high speed and low speed connectors to create small form
+factor, low profile embedded products. An example would be a LCD panel
+interface with touch screen and optional keys/keyboard. Such boards will connect
+to any 96Boards CE compliant board.
+
+Additional Functionality
+========================
+
+Boards that comply to the 96Boards CE spec may provide additional functionality
+provided that all mandatory functionality is available.
+
+For example a 96Boards CE board could optionally provide facilities such as:
+
+ - Additional custom storage
+ - Additional I/O - e.g. Ethernet, CANbus etc.
+ - On board external battery power/charging support for mobile applications
+ - PCIe interface(s) using PCIe mini or M.2 connectors mounted on the extended
+ version or on the board underside
+
+Any included additional functionality, headers, mezzanine or board to board
+connectors shall not contravene the 96Boards CE Physical Footprint
+specification (including height), or prevent the use of the 96Boards CE low
+speed or high speed connector expansion facilities.
+
+96Boards Consumer Edition Software Requirements
+===============================================
+
+Unless otherwise stated, support means:
+
+ - Support in the relevant project’s repositories, for example the Linux
+ kernel git repositories at git.kernel.org
+ - Source and binary code packages available to download. [#download]_
+
+Minimum Software requirements for 96Boards certification will include:
+
+ - Boot architecture (open source implementations are strongly recommended)
+
+ - Support for bootloader such as U-Boot/FDT, UEFI/ACPI, UEFI/FDT
+ - Support for a secure execution environment (optional)
+ - Support for ARM Trusted Firmware (ARMv8), including PSCI APIs (optional)
+
+ - Accelerated graphics support
+
+ - Accelerated graphics drivers need to be fully supported either with open
+ source code, or through royalty free binary drivers. If binary drivers
+ are utilized, the vendor will provide support to provide updated
+ drivers/libraries to support new mainline Linux kernel features.
+
+ - Kernel
+
+ - A kernel based on one of the following that is buildable from source code
+ and any required binary blobs:
+
+ - kernel.org latest “mainline” or “stable” kernel
+ - The latest Google-supported Android kernel version
+ - One of the last two kernel.org LTS kernels (for example Linaro LSK)
+
+ - Operating system
+ The latest released (stable) version of one or more of the following open
+ source distributions shall be made available for a 96Boards CE compliant
+ design:
+
+ - Android
+ - Debian or Ubuntu
+ - Fedora or Red Hat
+ - An OpenEmbedded/Yocto build of a Linux distribution
+
+ - Other Operating Systems/Distributions
+ Other operating systems or distributions may be provided for a 96Boards
+ product and can be made available to end users on the 96Boards community
+ portal
+
+.. [#download] Linaro will provide an open ‘community portal’ for 96Boards
+ Certified products where users may go for support, software upgrades etc
diff --git a/source/chapter3-references.rst b/source/chapter3-references.rst
new file mode 100644
index 0000000..f1d114a
--- /dev/null
+++ b/source/chapter3-references.rst
@@ -0,0 +1,17 @@
+.. SPDX-License-Identifier: CC-BY-SA-4.0
+
+**********
+References
+**********
+
+1) CSI - http://mipi.org/specifications/camera-interface
+
+2) SPI - http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus
+
+3) DSI - http://mipi.org/specifications/display-interface
+
+4) MHL - http://www.mhlconsortium.org
+
+5) DisplayPort - http://www.displayport.org
+
+6) microSDHC - http://en.wikipedia.org/wiki/Secure_Digital
diff --git a/source/chapter4-appendix.rst b/source/chapter4-appendix.rst
new file mode 100644
index 0000000..2b6adea
--- /dev/null
+++ b/source/chapter4-appendix.rst
@@ -0,0 +1,506 @@
+.. SPDX-License-Identifier: CC-BY-SA-4.0
+
+********
+Appendix
+********
+
+Expansion Connector Signal Description
+======================================
+
+40 Pin Low Speed Expansion Connector
+------------------------------------
+
+2x20 female 2mm header
+
++-----------+--------++--------+-----------+
+| GND | Pin 1 || Pin 2 | GND |
++-----------+--------++--------+-----------+
+| UART0_CTS | Pin 3 || Pin 4 | PWR_BTN_N |
++-----------+--------++--------+-----------+
+| UART0_TxD | Pin 5 || Pin 6 | RST_BTN_N |
++-----------+--------++--------+-----------+
+| UART0_RxD | Pin 7 || Pin 8 | SPI0_SCLK |
++-----------+--------++--------+-----------+
+| UART0_RTS | Pin 9 || Pin 10 | SPI0_DIN |
++-----------+--------++--------+-----------+
+| UART0_TxD | Pin 11 || Pin 12 | SPI0_CS |
++-----------+--------++--------+-----------+
+| UART0_RxD | Pin 13 || Pin 14 | SPI0_DOUT |
++-----------+--------++--------+-----------+
+| I2C0_SCL | Pin 15 || Pin 16 | PCM_FS |
++-----------+--------++--------+-----------+
+| I2C0_SDA | Pin 17 || Pin 18 | PCM_CLK |
++-----------+--------++--------+-----------+
+| I2C1_SCL | Pin 19 || Pin 20 | PCM_DO |
++-----------+--------++--------+-----------+
+| I2C1_SDA | Pin 21 || Pin 22 | PCM_DI |
++-----------+--------++--------+-----------+
+| GPIO-A | Pin 23 || Pin 24 | GPIO-B |
++-----------+--------++--------+-----------+
+| GPIO-C | Pin 25 || Pin 26 | GPIO-D |
++-----------+--------++--------+-----------+
+| GPIO-E | Pin 27 || Pin 28 | GPIO-F |
++-----------+--------++--------+-----------+
+| GPIO-G | Pin 29 || Pin 30 | GPIO-H |
++-----------+--------++--------+-----------+
+| GPIO-I | Pin 31 || Pin 32 | GPIO-J |
++-----------+--------++--------+-----------+
+| GPIO-K | Pin 33 || Pin 34 | GPIO-L |
++-----------+--------++--------+-----------+
+| +1V8 | Pin 35 || Pin 36 | SYS_DCIN |
++-----------+--------++--------+-----------+
+| +5V | Pin 37 || Pin 38 | SYS_DCIN |
++-----------+--------++--------+-----------+
+| GND | Pin 39 || Pin 40 | GND |
++-----------+--------++--------+-----------+
+
+Pin Descriptions
+----------------
+
+UART
+^^^^
+
+One UART **shall** be provided on the low speed expansion bus.
+
+A second UART **may** be provided
+
++------------+-------------------------+------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++============+=========================+======+========+==========+=============+
+| UART0_RxD | Receive serial data | 1.8V | Input | Required | |
++------------+-------------------------+------+--------+----------+-------------+
+| UART0_TxD | Transmit serial data | 1.8V | Output | Required | |
++------------+-------------------------+------+--------+----------+-------------+
+| UART0_RTS | Request to Send control | 1.8V | Output | Required | |
++------------+-------------------------+------+--------+----------+-------------+
+| UART0_CTS | Clear to Send control | 1.8V | Input | Required | |
++------------+-------------------------+------+--------+----------+-------------+
+| UART1_RxD | Receive serial data | 1.8V | Input | Optional | NC |
++------------+-------------------------+------+--------+----------+-------------+
+| UART1_TxD | Transmit serial data | 1.8V | Output | Optional | NC |
++------------+-------------------------+------+--------+----------+-------------+
+
+I2C
+^^^
+
+Two I2C interfaces **shall** be provided on the low speed expansion bus.
+
++--------------+-------------------------+------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++==============+=========================+======+========+==========+=============+
+| I2C[0-1]_SCL | Serial Clock | 1.8V | OD/PU | Required | |
++--------------+-------------------------+------+--------+----------+-------------+
+| I2C[0-1]_SDA | Serial Data | 1.8V | OD/PU | Required | |
++--------------+-------------------------+------+--------+----------+-------------+
+
+It is **recommended** that a 2K2R pullup is provided on each I2C signal,
+dependent on any relevant drive/pullup specifications of the SoC.
+
+Power and Reset
+^^^^^^^^^^^^^^^
+
+The following controls **shall** be provided on the low speed expansion bus.
+
++--------------+-------------------------------+------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++==============+===============================+======+========+==========+=============+
+| PWR_BTN_N | Power on/off external request | 1.8V | Input | Required | |
++--------------+-------------------------------+------+--------+----------+-------------+
+| RST_BTN_N | Reset external request | 1.8V | Input | Required | |
++--------------+-------------------------------+------+--------+----------+-------------+
+
+These signals **shall** be active low.
+
+SPI
+^^^
+
+One SPI bus master **shall** be provided on the low speed expansion bus.
+
++--------------+-------------------------+------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++==============+=========================+======+========+==========+=============+
+| SPI0_SCLK | Serial Clock | 1.8V | Output | Required | |
++--------------+-------------------------+------+--------+----------+-------------+
+| SPI0_CS | Chip Select | 1.8V | Output | Required | |
++--------------+-------------------------+------+--------+----------+-------------+
+| SPI0_DIN | Data In | 1.8V | Input | Required | |
++--------------+-------------------------+------+--------+----------+-------------+
+| SPI0_DOUT | Data Out | 1.8V | Output | Required | |
++--------------+-------------------------+------+--------+----------+-------------+
+
+PCM/I2S
+^^^^^^^
+
+One PCM/Inter IC Sound (I2S) PCM audio data bus **shall** be provided on the
+low speed expansion bus.
+
++--------------+-------------------------+------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++==============+=========================+======+========+==========+=============+
+| PCM_FS | PCM/I2S Word Clock | 1.8V | Output | Required | |
++--------------+-------------------------+------+--------+----------+-------------+
+| PCM_CLK | PCM/I2S Bit Clock | 1.8V | Output | Required | |
++--------------+-------------------------+------+--------+----------+-------------+
+| PCM_DO | PCM/I2S Serial data out | 1.8V | Output | Required | |
++--------------+-------------------------+------+--------+----------+-------------+
+| PCM_DI | PCM/I2S Serial data in | 1.8V | Input | Required | NC |
++--------------+-------------------------+------+--------+----------+-------------+
+
+GPIO
+^^^^
+
+12 GPIO lines **shall** be provided on the low speed expansion bus.
+
++--------------+-------------------------+------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++==============+=========================+======+========+==========+=============+
+| GPIO-[A-L] | General Purpose I/O | 1.8V | I/O | Required | |
++--------------+-------------------------+------+--------+----------+-------------+
+
+Special functions:
+------------------
+
+GPIO-A **shall** be capable of waking up the SoC from sleep.
+The following pins **shall** have alternate functions for DSI/CSI control if
+required by the display/sensor.
+
++--------------+-------------------------+------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++==============+=========================+======+========+==========+=============+
+| GPIO-F | DSI_BLCTL | 1.8V | Output | | |
++--------------+-------------------------+------+--------+----------+-------------+
+| GPIO-G | DSI_VSYNC | 1.8V | Input | | |
++--------------+-------------------------+------+--------+----------+-------------+
+| GPIO-H | DSI_RST | 1.8V | Output | | |
++--------------+-------------------------+------+--------+----------+-------------+
+| GPIO-I | CSI0_RST | 1.8V | Output | | |
++--------------+-------------------------+------+--------+----------+-------------+
+| GPIO-J | CSI0_PWDN | 1.8V | Output | | |
++--------------+-------------------------+------+--------+----------+-------------+
+| GPIO-K | CSI1_RST | 1.8V | Output | | |
++--------------+-------------------------+------+--------+----------+-------------+
+| GPIO-L | CSI1_PWDN | 1.8V | Output | | |
++--------------+-------------------------+------+--------+----------+-------------+
+
+Power Supplies
+^^^^^^^^^^^^^^
+
+The following power supplies **shall** be provided on the low speed expansion
+bus.
+
++--------------+---------------------------------+------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++==============+=================================+======+========+==========+=============+
+| +1.8V | 1.8V Power reference (max 0.1A) | 1.8V | Output | Required | |
++--------------+---------------------------------+------+--------+----------+-------------+
+| +5V | 5V System Power Supply | 5V | Power | Required | |
++--------------+---------------------------------+------+--------+----------+-------------+
+| SYS_DCIN | 9-18V Input Power Supply | 12V | Power | Required | |
++--------------+---------------------------------+------+--------+----------+-------------+
+
+See the DC Power section of the 96Boards Specification.
+
+60 Pin High Speed Expansion Connector
+-------------------------------------
+
+0.8mm 50 ohm high speed receptacle
+
++--------------------+--------++--------+-----------+
+| SD_DAT0/SPI1_DOUT | Pin 1 || Pin 2 | CSI0_C+ |
++--------------------+--------++--------+-----------+
+| SD_DAT1 | Pin 3 || Pin 4 | CSI0_C- |
++--------------------+--------++--------+-----------+
+| SD_DAT2 | Pin 5 || Pin 6 | GND |
++--------------------+--------++--------+-----------+
+| SD_DAT3/SPI1_CS | Pin 7 || Pin 8 | CSI0_D0+ |
++--------------------+--------++--------+-----------+
+| SD_SCLK/SPI1_SCLK | Pin 9 || Pin 10 | CSI0_D0- |
++--------------------+--------++--------+-----------+
+| SD_CMD/SPI1_DIN | Pin 11 || Pin 12 | GND |
++--------------------+--------++--------+-----------+
+| GND | Pin 13 || Pin 14 | CSI0_D1+ |
++--------------------+--------++--------+-----------+
+| CLK0/CSI0_MCLK | Pin 15 || Pin 16 | CSI0_D1- |
++--------------------+--------++--------+-----------+
+| CLK1/CSI1_MCLK | Pin 17 || Pin 18 | GND |
++--------------------+--------++--------+-----------+
+| GND | Pin 19 || Pin 20 | CSI0_D2+ |
++--------------------+--------++--------+-----------+
+| DSI_CLK+ | Pin 21 || Pin 22 | CSI0_D2- |
++--------------------+--------++--------+-----------+
+| DSI_CLK- | Pin 23 || Pin 24 | GND |
++--------------------+--------++--------+-----------+
+| GND | Pin 25 || Pin 26 | CSI0_D3+ |
++--------------------+--------++--------+-----------+
+| DSI_D0+ | Pin 27 || Pin 28 | CSI0_D3- |
++--------------------+--------++--------+-----------+
+| DSI_D0- | Pin 29 || Pin 30 | GND |
++--------------------+--------++--------+-----------+
+| GND | Pin 31 || Pin 32 | I2C2_SCL |
++--------------------+--------++--------+-----------+
+| DSI_D1+ | Pin 33 || Pin 34 | I2C2_SDA |
++--------------------+--------++--------+-----------+
+| DSI_D1- | Pin 35 || Pin 36 | I2C3_SCL |
++--------------------+--------++--------+-----------+
+| GND | Pin 37 || Pin 38 | I2C3_SDA |
++--------------------+--------++--------+-----------+
+| DSI_D2+ | Pin 39 || Pin 40 | GND |
++--------------------+--------++--------+-----------+
+| DSI_D2- | Pin 41 || Pin 42 | CSI1_D0+ |
++--------------------+--------++--------+-----------+
+| GND | Pin 43 || Pin 44 | CSI1_D0- |
++--------------------+--------++--------+-----------+
+| DSI_D3+ | Pin 45 || Pin 46 | GND |
++--------------------+--------++--------+-----------+
+| DSI_D3- | Pin 47 || Pin 48 | CSI1_D1+ |
++--------------------+--------++--------+-----------+
+| GND | Pin 49 || Pin 50 | CSI1_D1- |
++--------------------+--------++--------+-----------+
+| USB_D+ | Pin 51 || Pin 52 | GND |
++--------------------+--------++--------+-----------+
+| USB_D- | Pin 53 || Pin 54 | CSI1_C+ |
++--------------------+--------++--------+-----------+
+| GND | Pin 55 || Pin 56 | CSI1_C- |
++--------------------+--------++--------+-----------+
+| HSIC_STR | Pin 57 || Pin 58 | GND |
++--------------------+--------++--------+-----------+
+| HSIC_DATA | Pin 59 || Pin 60 | RESERVED |
++--------------------+--------++--------+-----------+
+
+Pin Descriptions
+----------------
+
+MIPI-DSI
+^^^^^^^^
+
+A MIPI DSI interface **shall** be provided on the high speed expansion bus.
+
++----------------+-------------------------------+------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++================+===============================+======+========+==========+=============+
+| DSI_CLK[+-] | Differential DSI Clock | 1.2V | Output | Required | NC |
++----------------+-------------------------------+------+--------+----------+-------------+
+| DSI_DO[+-] | Differential DSI data channel | 1.2V | IO | Required | NC |
++----------------+-------------------------------+------+--------+----------+-------------+
+| DSI_D[1-3][+-] | Differential DSI data channel | 1.2V | IO | Required | NC |
++----------------+-------------------------------+------+--------+----------+-------------+
+
+MIPI-CSI2
+^^^^^^^^^
+
+Two MIPI-CSI2 interfaces **may** be provided on the high speed expansion bus.
+
++---------------------+-------------------------------+------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++=====================+===============================+======+========+==========+=============+
+| CSI[0-1]_C[+-] | Differential CSI Clock | 1.2V | Output | Optional | NC |
++---------------------+-------------------------------+------+--------+----------+-------------+
+| CSI[0-1]_D[0-1][+-] | Differential CSI data channel | 1.2V | IO | Optional | NC |
++---------------------+-------------------------------+------+--------+----------+-------------+
+| CSI0_D[2-3][+-] | Differential CSI data channel | 1.2V | IO | Optional | NC |
++---------------------+-------------------------------+------+--------+----------+-------------+
+
+I2C
+^^^
+
+Two I2C interfaces **may** be provided on the high speed expansion bus.
+
+If one or two CSI2 interfaces are implemented then at least the same number of
+I2C interfaces **shall** be provided on the high speed expansion bus.
+
++--------------+-------------------------+------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++==============+=========================+======+========+==========+=============+
+| I2C[2-3]_SCL | Serial Clock | 1.8V | OD/PU | Required | NC |
++--------------+-------------------------+------+--------+----------+-------------+
+| I2C[2-3]_SDA | Serial Data | 1.8V | OD/PU | Required | NC |
++--------------+-------------------------+------+--------+----------+-------------+
+
+It is **recommended** that a 2K2R pullup is provided on each I2C signal,
+dependent on any relevant drive/pullup specifications of the SoC.
+
+HSIC
+^^^^
+
+One MIPI-HSIC interface **may** be provided on the high speed expansion bus.
+
++--------------+-------------------------+------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++==============+=========================+======+========+==========+=============+
+| HSIC_STR | HSIC strobe | 1.2V | IO | Optional | NC |
++--------------+-------------------------+------+--------+----------+-------------+
+| HSIC_DATA | HSIC data | 1.2V | IO | Optional | NC |
++--------------+-------------------------+------+--------+----------+-------------+
+
+RESERVED
+^^^^^^^^
+
+One pin **shall** be reserved for future use. It shall be pulled up via 100K
+to 1.8V.
+
++--------------+-----------------------------+------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++==============+=============================+======+========+==========+=============+
+| RESERVED | Not used, pulled up to 1.8V | 1.8V | N/A | Required | |
++--------------+-----------------------------+------+--------+----------+-------------+
+
+SD/SPI
+^^^^^^
+
+The expansion port **shall** be configured with either an SD port or a
+second SPI Port.
+
+SD Configuration
+
++--------------+-------------------------+----------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++==============+=========================+==========+========+==========+=============+
+| SD_DAT[0-3] | Serial Data | 3.3/1.8V | IO | Required | |
++--------------+-------------------------+----------+--------+----------+-------------+
+| SD_SCLK | Serial Clock | 3.3/1.8V | Output | Required | |
++--------------+-------------------------+----------+--------+----------+-------------+
+| SD_CMD | Command | 3.3/1.8V | IO | Required | |
++--------------+-------------------------+----------+--------+----------+-------------+
+
+SPI Configuration
+
++--------------+-------------------------+------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++==============+=========================+======+========+==========+=============+
+| SPI1_SCLK | Serial Clock | 1.8V | Output | Required | |
++--------------+-------------------------+------+--------+----------+-------------+
+| SPI1_CS | Chip Select | 1.8V | Output | Required | |
++--------------+-------------------------+------+--------+----------+-------------+
+| SPI1_DIN | Data In | 1.8V | Input | Required | |
++--------------+-------------------------+------+--------+----------+-------------+
+| SPI1_DOUT | Data Out | 1.8V | Output | Required | |
++--------------+-------------------------+------+--------+----------+-------------+
+
+CLOCKS
+^^^^^^
+
+One or two programmable clock interfaces may be provided on the high speed expansion
+bus.
+
++----------------+--------------------------+----------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++================+==========================+==========+========+==========+=============+
+| CLK0/CSI0_MCLK | SoC Programmable Clock 0 | 1.8V | Output | Optional | NC or GPIO |
++----------------+--------------------------+----------+--------+----------+-------------+
+| CLK1/CSI1_MCLK | SoC Programmable Clock 1 | 1.8V | Output | Optional | NC or GPIO |
++----------------+--------------------------+----------+--------+----------+-------------+
+
+If CSI camera(s) are supported on mezzanine boards these clocks **shall** be
+available as the CSI reference clocks (in case they are needed).
+
+USB
+^^^
+
+One USB host port **shall** be provided on the high speed expansion bus.
+
++--------------+-------------------------+------+--------+----------+-------------+
+| Signal | Description | V | Type | Spec. | If not used |
++==============+=========================+======+========+==========+=============+
+| USB_D[+-] | Differential USB data | USB | Output | Required | |
++--------------+-------------------------+------+--------+----------+-------------+
+
+In many designs the USB port is expected to come from a USB hub solution
+ready for direct connect to a USB interface, therefore these signals are
+specified at USB PHY signal levels.
+
+Single USB port Example
+=======================
+
+On cost-sensitive SoCs targeted at the mobile market there may only be a
+single USB 2.x/3.x port on the device. A typical 96Boards USB implementation
+needs to implement a USB hub for this situation. This can be achieved in a
+number of ways. One example is as follows:
+
+.. image:: images/usb.png
+ :alt: USB implementation
+
+96Boards Consumer Edition
+=========================
+
+2D Reference Drawing
+--------------------
+
+.. image:: images/96b_ce_std_2x.png
+ :alt: 96Boards CE Standard Connector
+
+96Boards Consumer Edition (Extended Version)
+============================================
+
+The Consumer Edition Extended Version is for those SoCs that require additional
+space (typically because of the need for additional memory devices or other
+required feature sets). The Extended Version is footprint compatible with the
+standard version.
+
+Board designers have a choice for the extended area (shown in green and top
+white above)
+
+Either:
+-------
+
+Extended A
+----------
+
+The extended area **shall** conform to the 4mm (except for user links and
+thermal management) rules as specified for the main area of the standard
+board. The extended rear connector area **shall** conform to the 6.5mm
+maximum height. This ensures that the design will work with all 96Boards
+program Mezzanine Boards.
+
+Or:
+---
+
+Extended B
+----------
+
+The extended area and the extended rear connector area **shall** use
+components that extend to a maximum of 15.0mm above the board surface. Designers
+that choose this option have more flexibility in board design for SoC,
+component and connector positioning in the extended area, but Large Mezzanine
+Boards or Modules (see below) may not be compatible with the board design.
+
+Additionally, Extended Version boards **may** exceed the underside height
+restrictions (for example to mount a hgigh power SoC on the underside of the
+board). In this case:
+
+The board footprint on the underside **shall** be fully documented.
+
+Standoffs and/or additional heat management **shall** be documented or
+provided for when the board is used standalone or in a case.
+
+2D Reference Drawing (Extended Version)
+---------------------------------------
+
+.. image:: images/96b_ce_ext_2x.png
+ :alt: 96Boards CE Extended Connector
+
+Mezzanine Boards and Modules
+============================
+
+A mezzanine board or module may be fitted on top of the board. To minimize
+product footprint the board has been designed to have a minimal footprint
+for a low cost community board. The board to mezzanine module spacing is 7.0mm,
+or optionally 8.0mm (depending on the mezzanine module connectors used).
+
+Mezzanine Boards are defined in two versions.
+
+ - Small Mezzanine Boards or Modules have a maximum area of 85x54mm and do not
+ exceed the footprint of the 96Boards CE standard board.
+
+ - Large Mezzanine Boards or Modules have no size limit. An example could be
+ a 12” display module designed to fit directly onto any 96Boards CE design.
+
+Consideration needs to be given to possible heat build up on the base board
+depending on the workload and the board used. Accordingly, provision has been
+made for airflow between the base board and mezzanine board by requiring
+component heights to be such that a fan can move air across the board between
+the base board and the mezzanine.
+
+Therefore, apart from the connectors to the base board, components **shall not**
+be placed on the underside of an mezzanine module design in the footprint area
+of the base board. More complete design guidelines for mezzanine boards will be
+published at a later date.
diff --git a/source/conf.py b/source/conf.py
new file mode 100644
index 0000000..6d97e30
--- /dev/null
+++ b/source/conf.py
@@ -0,0 +1,164 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# 96Boards Consumer Edition specification build configuration file, created by
+# sphinx-quickstart on Thu May 10 18:49:38 2018.
+#
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#
+# import os
+# import sys
+# sys.path.insert(0, os.path.abspath('.'))
+
+import subprocess
+
+# -- General configuration ------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = ['sphinx.ext.todo',
+ 'sphinx.ext.githubpages']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+#
+# source_suffix = ['.rst', '.md']
+source_suffix = '.rst'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = '96Boards Consumer Edition Specification'
+copyright = '2015 Linaro Limited'
+author = 'Linaro Limited'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+try:
+ version = str(subprocess.check_output(["git", "describe", "--dirty"]), 'utf-8').strip()
+except:
+ version = "unknown-rev"
+# The full version, including alpha/beta/rc tags.
+release = version
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = None
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This patterns also effect to html_static_path and html_extra_path
+exclude_patterns = []
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# If true, `todo` and `todoList` produce output, else they produce nothing.
+todo_include_todos = True
+
+
+# -- Options for HTML output ----------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. See the documentation for
+# a list of builtin themes.
+#
+html_theme = 'alabaster'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further. For a list of options available for each theme, see the
+# documentation.
+#
+# html_theme_options = {}
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+
+# -- Options for HTMLHelp output ------------------------------------------
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = '96boards-ce-doc'
+
+
+# -- Options for LaTeX output ---------------------------------------------
+
+latex_elements = {
+ 'classoptions': ',oneside',
+ # The paper size ('letterpaper' or 'a4paper').
+ #
+ 'papersize': 'a4paper',
+
+ # The font size ('10pt', '11pt' or '12pt').
+ #
+ # 'pointsize': '10pt',
+
+ # Additional stuff for the LaTeX preamble.
+ #
+ # 'preamble': '',
+
+ # Latex figure (float) alignment
+ #
+ # 'figure_align': 'htbp',
+}
+
+# Release numbers with a qualifier (ex. '-rc', '-pre') get a watermark.
+if '-' in release:
+ latex_elements['preamble'] = '\\usepackage{draftwatermark}\\SetWatermarkScale{.45}\\SetWatermarkText{%s}' % (release)
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+# author, documentclass [howto, manual, or own class]).
+latex_documents = [
+ (master_doc, '96boards-ce.tex', project, author, 'manual'),
+]
+
+
+# -- Options for manual page output ---------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+ (master_doc, '96boards-ce', project, [author], 1)
+]
+
+
+# -- Options for Texinfo output -------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+# dir menu entry, description, category)
+texinfo_documents = [
+ (master_doc, '96boards-ce', project, author, '96Boards Consumer Edition',
+ 'One line description of project.', 'Miscellaneous'),
+]
+
+
+
diff --git a/source/images/96b_ce_ext_2x.png b/source/images/96b_ce_ext_2x.png
new file mode 100644
index 0000000..5df3460
--- /dev/null
+++ b/source/images/96b_ce_ext_2x.png
Binary files differ
diff --git a/source/images/96b_ce_std_2x.png b/source/images/96b_ce_std_2x.png
new file mode 100644
index 0000000..55aff4e
--- /dev/null
+++ b/source/images/96b_ce_std_2x.png
Binary files differ
diff --git a/source/images/cc-by-sa-4.0-88x31.eps b/source/images/cc-by-sa-4.0-88x31.eps
new file mode 100644
index 0000000..1a8ba84
--- /dev/null
+++ b/source/images/cc-by-sa-4.0-88x31.eps
@@ -0,0 +1,2727 @@
+%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 8.0 %%AI8_CreatorVersion: 13.0.1 %%For: (Alex Roberts) () %%Title: (by.eps) %%CreationDate: 3/27/08 4:26 PM %%BoundingBox: 340 278 461 321 %%HiResBoundingBox: 340.5 278.5 460.5 320.5 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 4.0 %AI3_ColorUsage: Color %AI3_IncludePlacedImages %AI7_ImageSettings: 1 %%CMYKProcessColor: 0.74902 0.678431 0.670588 0.901961 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 1 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 -1 -1 () %AI3_Cropmarks: 340.5 278.5 460.5 320.5 %AI3_TemplateBox: 400.5 299.5 400.5 299.5 %AI3_TileBox: 112 -56 688 678 %AI3_DocumentPreview: Macintosh_ColorPic %AI5_ArtSize: 800 600 %AI5_RulerUnits: 6 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI8_OpenToView: -381 756 1 1566 923 26 0 0 73 75 0 0 %AI5_OpenViewLayers: 7 %%PageOrigin:0 0 %AI7_GridSettings: 48 8 48 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %AI7_Thumbnail: 128 48 8 %%BeginData: 7956 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45A8FD7DF827A8F8275258527D5258527D5258527D5258527D525852 %7D5258527D5258527D5258527D5258527D5258527D5258527D5258527D52 %58527D5258527D5258527D5258527D5258527D5258527D5258527D525852 %7D5258527D5258527D5258527D5258527D5258527D5258527D5258527D52 %58527D5258527D5258527D5258527DF8F8F852A87D837DA87D837DA87D83 %7DA87D837DA87D847DA87D837DA87D837DA87D837DA87D837DA87D837DA8 %7D837DA87D837DA87D837DA87D837DA87D837DA87D837DA87D837DA87D83 %7DA87D837DA883A87DA883A87DA87D837DA87D837DA87D837DA87D837DA8 %7D837DA87D837DA87D837DA87D837DA87D837DA87D837D7DF8F8FD127D83 %FD3A7DFD05525858FD297D52F8F852A87D837D837D837D837D837DA87D83 %5258275227272752527D7DA87D837D837D837D837D837D837D837D837D83 %7D837D837D837D837D837D837D837D837D837D837D837D837D837DA87D52 %2727FD05F827277D7DA87D837D837D837D837D837D837D837D837D837D83 %7D837D837D837D837D837D837D837D837D7DF8F8FD0C7D837D52FD0BF827 %2DFD2D7D5227FD0BF8275883FD247D52F8F858837D837D7D7D837D7D7DA8 %5227FD0FF8527DA87D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D %7D837D7D7D837D7D7D837D7D7D837D7D7DA82DFD04F8527DA8A8A87D52F8 %F8F82752A87D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D %837D7D7D837D7D7D837D7DF8F8FD0B7D27FD06F82727525227FD07F82758 %83FD267D27F8F8F852FD08FFA827F8F8F85283FD227D52F8F858A87D837D %837D837D7DFD05F8277DFD07FFA87D27FD04F8277DA87D837D837D837D83 %7D837D837D837D837D837D837D837D837D837D837D837D837D837DA852F8 %F827A8FD04FF7D27A8FD04FF7DF8F8F852A87D837D837D837D837D837D83 %7D837D837D837D837D837D837D837D837D837D837D7DF8F8FD097DFD05F8 %7DFD0CFF7D27F8F8F827FD237D8352F8F8F8A8FD04FF7DF8F8F8A8FD04FF %7DF8F827FD217D8352F8F852A87D7D7D837D8327F8F8F827FD0FFFA852F8 %F8F8277D837D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D %837D7D7D837D7D7D27F8F87DFD05FF52F8F8F8A8FD05FF52F8F8527D837D %7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D83FD047D %F8F859FD057D8327F8F8F827FD12FF52F8F8F827FD227DF8F827FD07FF27 %2752FD07FFF8F8F8FD217D52F8F852A87D837DA852F8F8F827FD14FF52F8 %F8F8587D837D837D837D837D837D837D837D837D837D837D837D837D837D %837D837DA827F8F8A8FD05FFA8527D527D52FD06FF7DF8F852A87D837D83 %7D837D837D837D837D837D837D837D837D837D837D837D837D837D7DF8F8 %FD067D27F8F8F8A8FD14FFA827F8F8F8FD207D27F827FD06FFFD06F827FD %05FFA8F8F852FD207D52F8F858837D837D58F8F8F87DFD16FF7DF8F8F852 %A87D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D83FD047D %F8F852FD06FFFD06F827FD06FF27F827837D837D7D7D837D7D7D837D7D7D %837D7D7D837D7D7D837D7D7D837D7D7D837D7DF8F8FD047D8327F8F827FD %18FF27F8F827FD1E7D52F8F87DFD06FFFD06F827FD06FF52F827FD207D52 %F8F858A87DA87D27F8F87DFD05FF7D5227527DFD05FF7D52277DA8FD04FF %7DF8F8F87D7D837D837D837D837D837D837D837D837D837D837D837D837D %837D837D7DF8F87DFD06FF27FD05F852FD06FF52F827837D837D837D837D %837D837D837D837D837D837D837D837D837D837D837D837D7DF8F8FD047D %52F8F8F8FD05FF27FD05F827FFFFA8FD06F852FFFFFFA8F8F8F852FD1D7D %52F8F87DFD06FFFD06F827FD06FF52F827FD1F7D8352F8F852A87DA827F8 %F827FD04FF27F8F8F82727F8F852FFF8F8F82727F8F8F87DFFFFFF27F8F8 %527D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D %7DF8F87DFD06FF52FD05F87DFD06FF27F827A87D7D7D837D7D7D837D7D7D %837D7D7D837D7D7D837D7D7D837D7D7D83FD047DF8F8597D7D7D27F8F852 %FFFFFFA8F8F8F87DFFA82727A852F8F827A8FF7DF827A8FFFFFF52F8F827 %83FD1D7D27F852FD07FF52F8F8F87DFD06FFA827F827FD207D52F8F852A8 %7D8327F8F87DFFFFFF7DF8F827FFFFFFA8FFFF27F8F87DFFFFFFA8FD05FF %7DF8F8277D837D837D837D837D837D837D837D837D837D837D837D837D83 %7D837DA827F8F8FD07FF52F8F8F87DFD06FFA8F8F852A87D837D837D837D %837D837D837D837D837D837D837D837D837D837D837D837D7DF8F8FD047D %27F8F87DFFFFFF52F8F852FD06FFF8F8F8A8FD09FF7DF8F8F8FD1E7D52F8 %F852FD06FF52F8F8F87DFD06FF27F8F8FD217D52F8F858837D8327F8F87D %FFFFFF7DF8F852FD06FF27F8F8A8FD09FF7DF8F8277D837D7D7D837D7D7D %837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D27F827A8FD05FF52 %F8F8F87DFD05FF7DF8F8527D7D7D837D7D7D837D7D7D837D7D7D837D7D7D %837D7D7D837D7D7D837D7D7D837D7DF8F8FD047D27F8F852FFFFFF52F8F8 %27FFFFFF7D52FF27F8F87DFFFFFF7D7DFD04FF7DF8F827FD1E7D8352F8F8 %27FD05FF52F8F8F87DFD04FFA8F8F8F852FD217D52F8F858A87DA827F8F8 %52FD04FFF8F8F852A87DF8F8527DF8F8F87DA852F8F87DFFFFFF52F8F852 %7D837D837D837D837D837D837D837D837D837D837D837D837D837D837D83 %7DA827F8F852FD04FF52F8F8F87DFFFFFFA827F8F852A87D837D837D837D %837D837D837D837D837D837D837D837D837D837D837D837D837D7DF8F8FD %047D52F8F8F8FD04FF7DFD07F87DFF27FD07F8A8FFFFFF27F8F82D83FD20 %7DF8F8F8277DFFFFFFA8FFA8FFFFFF7DF8F8F827FD227D8352F8F852A87D %8352F8F8F8A8FD04FF7DFD05F8A8FFFFFF52FD04F827FD05FFF8F8F8FD04 %7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D83 %7D7D27F8F8F827A8A8FFFFFFA87D27F8F8F827A87D7D7D837D7D7D837D7D %7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D83FD047DF8F859FD04 %7DF8F8F852FD06FF7D7D7DFFFFFFA8FFFFA87DA8A8FD05FF52F8F8F859FD %237D27FD06F827FD06F852FD257D52F8F852A87D837D52F8F8F8FD18FF27 %F8F827A87D837D837D837D837D837D837D837D837D837D837D837D837D83 %7D837D837D837D837DA85227FD09F8527DA87D837D837D837D837D837D83 %7D837D837D837D837D837D837D837D837D837D837D837D837D7DF8F8FD05 %7D52F8F8F827FD16FF52F8F8F8FD267D837D7D525227272752527D7D83FD %267D52F8F858837D837DA827F8F8F87DFD14FFA8F8F8F8277D7D7D837D7D %7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D83 %7D7D7D837D847DA87D847DA87D7D7D837D7D7D837D7D7D837D7D7D837D7D %7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7DF8F8FD077DFD %04F87DFD12FFA8FD04F852FD047D837D7D7D837D7D7D837D7D7D837D7D7D %837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D %7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D %837D7D7D837D7D7DA852F8F8527D52587D847D7DFD04F87DFD10FFA8FD04 %F852A87D7D527D5258527D5258527D5258527D5258527D5258527D525852 %7D5258527D5258527D5258527D5258527D5258527D5258527D5258527D52 %58527D5258527D5258527D5258527D5258527D5258527D5258527D525852 %7D5252FD06F8277D7D7D52FD04F852FD0EFF7DFD04F827837D7DFD60F852 %7D837D52FD04F827A8FD0AFFA852FD04F827A87DA827FD61F8587D7D7D52 %FD05F82752A8A8FFA8A87D7D27FD05F8277D7D8352FD63F87D7DA87D7DFD %09F827FD07F82752A87DA858FD27F852A87DA87D2727A852F8F8527D27FD %30F8FD057D27FD0EF85258A87D8352FD28F87DFFA8A8FFA8F8A8FFF8F8FF %FFFD32F87D7D837DA87D522727FD07F827527D7D837DA85227FD28F87DFF %F8F87DFFF852FF7D7DFF27FD33F8527D837D7D7D83587DFD0552FD077D27 %FD2AF87DFF7D7DFF52F8F8A8FFFF7DFD35F82758A87DA87D847DA87DA87D %A87D837DA87D7D27FD2BF87DFF7DA8FFFFF8F827FFFF27FD37F827527D83 %7D7D7D837D7D7D837D7D5227FD2DF87DFFF8F852FF52F8F8A8A8FD3AF827 %2752527D587D587D5252FD30F87DFF7D7DA8FF27F8F8FFA8FD75F87DFD04 %A852F8F8F87DA8FDFCF8FD2EF852FD7F27FD7FFFFF %%EndData %%EndComments %%BeginProlog %%BeginResource: procset Adobe_level2_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation)
+%%Version: 1.2 0
+%%CreationDate: (04/10/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /Adobe_level2_AI5 26 dict dup begin
+ put
+ /packedarray where not
+ {
+ userdict begin
+ /packedarray
+ {
+ array astore readonly
+ } bind def
+ /setpacking /pop load def
+ /currentpacking false def
+ end
+ 0
+ } if
+ pop
+ userdict /defaultpacking currentpacking put true setpacking
+ /initialize
+ {
+ Adobe_level2_AI5 begin
+ } bind def
+ /terminate
+ {
+ currentdict Adobe_level2_AI5 eq
+ {
+ end
+ } if
+ } bind def
+ mark
+ /setcustomcolor where not
+ {
+ /findcmykcustomcolor
+ {
+ (AI8_CMYK_CustomColor)
+ 6 packedarray
+ } bind def
+ /findrgbcustomcolor
+ {
+ (AI8_RGB_CustomColor)
+ 5 packedarray
+ } bind def
+ /setcustomcolor
+ {
+ exch
+ aload pop dup
+ (AI8_CMYK_CustomColor) eq
+ {
+ pop pop
+ 4
+ {
+ 4 index mul
+ 4 1 roll
+ } repeat
+ 5 -1 roll pop
+ setcmykcolor
+ }
+ {
+ dup (AI8_RGB_CustomColor) eq
+ {
+ pop pop
+ 3
+ {
+ 1 exch sub
+ 3 index mul
+ 1 exch sub
+ 3 1 roll
+ } repeat
+ 4 -1 roll pop
+ setrgbcolor
+ }
+ {
+ pop
+ 4
+ {
+ 4 index mul 4 1 roll
+ } repeat
+ 5 -1 roll pop
+ setcmykcolor
+ } ifelse
+ } ifelse
+ }
+ def
+ } if
+ /setAIseparationgray
+ {
+ false setoverprint
+ 0 setgray
+ /setseparationgray where{
+ pop setseparationgray
+ }{
+ /setcolorspace where{
+ pop
+ [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace
+ 1 exch sub setcolor
+ }{
+ setgray
+ }ifelse
+ }ifelse
+ } def
+
+ /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def
+ userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put
+ userdict /level2?
+ systemdict /languagelevel known dup
+ {
+ pop systemdict /languagelevel get 2 ge
+ } if
+ put
+/level2ScreenFreq
+{
+ begin
+ 60
+ HalftoneType 1 eq
+ {
+ pop Frequency
+ } if
+ HalftoneType 2 eq
+ {
+ pop GrayFrequency
+ } if
+ HalftoneType 5 eq
+ {
+ pop Default level2ScreenFreq
+ } if
+ end
+} bind def
+userdict /currentScreenFreq
+ level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put
+level2? not
+ {
+ /setcmykcolor where not
+ {
+ /setcmykcolor
+ {
+ exch .11 mul add exch .59 mul add exch .3 mul add
+ 1 exch sub setgray
+ } def
+ } if
+ /currentcmykcolor where not
+ {
+ /currentcmykcolor
+ {
+ 0 0 0 1 currentgray sub
+ } def
+ } if
+ /setoverprint where not
+ {
+ /setoverprint /pop load def
+ } if
+ /selectfont where not
+ {
+ /selectfont
+ {
+ exch findfont exch
+ dup type /arraytype eq
+ {
+ makefont
+ }
+ {
+ scalefont
+ } ifelse
+ setfont
+ } bind def
+ } if
+ /cshow where not
+ {
+ /cshow
+ {
+ [
+ 0 0 5 -1 roll aload pop
+ ] cvx bind forall
+ } bind def
+ } if
+ } if
+ cleartomark
+ /anyColor?
+ {
+ add add add 0 ne
+ } bind def
+ /testColor
+ {
+ gsave
+ setcmykcolor currentcmykcolor
+ grestore
+ } bind def
+ /testCMYKColorThrough
+ {
+ testColor anyColor?
+ } bind def
+ userdict /composite?
+ 1 0 0 0 testCMYKColorThrough
+ 0 1 0 0 testCMYKColorThrough
+ 0 0 1 0 testCMYKColorThrough
+ 0 0 0 1 testCMYKColorThrough
+ and and and
+ put
+ composite? not
+ {
+ userdict begin
+ gsave
+ /cyan? 1 0 0 0 testCMYKColorThrough def
+ /magenta? 0 1 0 0 testCMYKColorThrough def
+ /yellow? 0 0 1 0 testCMYKColorThrough def
+ /black? 0 0 0 1 testCMYKColorThrough def
+ grestore
+ /isCMYKSep? cyan? magenta? yellow? black? or or or def
+ /customColor? isCMYKSep? not def
+ end
+ } if
+ end defaultpacking setpacking
+%%EndResource
+%%BeginProcSet: Adobe_ColorImage_AI6 1.3 0
+userdict /Adobe_ColorImage_AI6 known not
+{
+ userdict /Adobe_ColorImage_AI6 53 dict put
+} if
+userdict /Adobe_ColorImage_AI6 get begin
+/initialize {
+ Adobe_ColorImage_AI6 begin
+ Adobe_ColorImage_AI6 {
+ dup type /arraytype eq {
+ dup xcheck {
+ bind
+ } if
+ } if
+ pop pop
+ } forall
+} def
+/terminate { end } def
+currentdict /Adobe_ColorImage_AI6_Vars known not {
+ /Adobe_ColorImage_AI6_Vars 41 dict def
+} if
+Adobe_ColorImage_AI6_Vars begin
+ /plateindex -1 def
+ /_newproc null def
+ /_proc1 null def
+ /_proc2 null def
+ /sourcearray 4 array def
+ /_ptispace null def
+ /_ptiname null def
+ /_pti0 0 def
+ /_pti1 0 def
+ /_ptiproc null def
+ /_ptiscale 0 def
+ /_pticomps 0 def
+ /_ptibuf 0 string def
+ /_gtigray 0 def
+ /_cticmyk null def
+ /_rtirgb null def
+ /XIEnable true def
+ /XIType 0 def
+ /XIEncoding 0 def
+ /XICompression 0 def
+ /XIChannelCount 0 def
+ /XIBitsPerPixel 0 def
+ /XIImageHeight 0 def
+ /XIImageWidth 0 def
+ /XIImageMatrix null def
+ /XIRowBytes 0 def
+ /XIFile null def
+ /XIBuffer1 null def
+ /XIBuffer2 null def
+ /XIBuffer3 null def
+ /XIDataProc null def
+ /XIColorSpace /DeviceGray def
+ /XIColorValues 0 def
+ /XIPlateList false def
+end
+/ci6colorimage /colorimage where {/colorimage get}{null} ifelse def
+/ci6image systemdict /image get def
+/ci6curtransfer systemdict /currenttransfer get def
+/ci6curoverprint /currentoverprint where {/currentoverprint get}{{_of}} ifelse def
+/ci6foureq {
+ 4 index ne {
+ pop pop pop false
+ }{
+ 4 index ne {
+ pop pop false
+ }{
+ 4 index ne {
+ pop false
+ }{
+ 4 index eq
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6testplate {
+ Adobe_ColorImage_AI6_Vars begin
+ /plateindex -1 def
+ /setcmykcolor where {
+ pop
+ gsave
+ 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ grestore
+ 1 0 0 0 ci6foureq {
+ /plateindex 0 def
+ }{
+ 0 1 0 0 ci6foureq {
+ /plateindex 1 def
+ }{
+ 0 0 1 0 ci6foureq {
+ /plateindex 2 def
+ }{
+ 0 0 0 1 ci6foureq {
+ /plateindex 3 def
+ }{
+ 0 0 0 0 ci6foureq {
+ /plateindex 5 def
+ } if
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ pop pop pop pop
+ } if
+ plateindex
+ end
+} def
+/ci6concatprocs {
+ /packedarray where {
+ pop dup type /packedarraytype eq 2 index type
+ /packedarraytype eq or
+ }{
+ false
+ } ifelse
+ {
+ /_proc2 exch cvlit def
+ /_proc1 exch cvlit def
+ _proc1 aload pop
+ _proc2 aload pop
+ _proc1 length
+ _proc2 length add
+ packedarray cvx
+ }{
+ /_proc2 exch cvlit def
+ /_proc1 exch cvlit def
+ /_newproc _proc1 length _proc2 length add array def
+ _newproc 0 _proc1 putinterval
+ _newproc _proc1 length _proc2 putinterval
+ _newproc cvx
+ } ifelse
+} def
+/ci6istint {
+ type /arraytype eq
+} def
+/ci6isspot {
+ dup type /arraytype eq {
+ dup length 1 sub get /Separation eq
+ }{
+ pop false
+ } ifelse
+} def
+/ci6spotname {
+ dup ci6isspot {dup length 2 sub get}{pop ()} ifelse
+} def
+/ci6altspace {
+ aload pop pop pop ci6colormake
+} def
+/ci6numcomps {
+ dup /DeviceGray eq {
+ pop 1
+ }{
+ dup /DeviceRGB eq {
+ pop 3
+ }{
+ /DeviceCMYK eq {
+ 4
+ }{
+ 1
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6marksplate {
+ dup /DeviceGray eq {
+ pop plateindex 3 eq
+ }{
+ dup /DeviceRGB eq {
+ pop plateindex 5 ne
+ }{
+ dup /DeviceCMYK eq {
+ pop plateindex 5 ne
+ }{
+ dup ci6isspot {
+ /findcmykcustomcolor where {
+ pop
+ dup length 2 sub get
+ 0.1 0.1 0.1 0.1 5 -1 roll
+ findcmykcustomcolor 1 setcustomcolor
+ systemdict /currentgray get exec
+ 1 ne
+ }{
+ pop plateindex 5 ne
+ } ifelse
+ }{
+ pop plateindex 5 ne
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6colormake {
+ dup ci6numcomps
+ exch 1 index 2 add 1 roll
+ dup 1 eq {pop}{array astore} ifelse
+ exch
+} def
+/ci6colorexpand {
+ dup ci6spotname exch
+ dup ci6istint {
+ ci6altspace
+ exch 4 1 roll
+ }{
+ 1 3 1 roll
+ } ifelse
+} def
+/ci6colortint {
+ dup /DeviceGray eq {
+ 3 1 roll 1 exch sub mul 1 exch sub exch
+ }{
+ dup /DeviceRGB eq {
+ 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch
+ }{
+ dup /DeviceCMYK eq {
+ 3 1 roll {1 index mul exch} forall pop 4 array astore exch
+ }{
+ 3 1 roll mul exch
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6colortocmyk {
+ dup /DeviceGray eq {
+ pop 1 exch sub 0 0 0 4 -1 roll 4 array astore
+ }{
+ dup /DeviceRGB eq {
+ pop aload pop _rgbtocmyk 4 array astore
+ }{
+ dup /DeviceCMYK eq {
+ pop
+ }{
+ ci6altspace ci6colortint ci6colortocmyk
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6makeimagedict {
+ 7 dict begin
+ /ImageType 1 def
+ /Decode exch def
+ /DataSource exch def
+ /ImageMatrix exch def
+ /BitsPerComponent exch def
+ /Height exch def
+ /Width exch def
+ currentdict end
+} def
+/ci6stringinvert {
+ 0 1 2 index length 1 sub {
+ dup 2 index exch get 255 exch sub 2 index 3 1 roll put
+ } for
+} def
+/ci6stringknockout {
+ 0 1 2 index length 1 sub {
+ 255 2 index 3 1 roll put
+ } for
+} def
+/ci6stringapply {
+ 0 1 4 index length 1 sub {
+ dup
+ 4 index exch get
+ 3 index 3 1 roll
+ 3 index exec
+ } for
+ pop exch pop
+} def
+/ci6walkrgbstring {
+ 0 3 index
+ dup length 1 sub 0 3 3 -1 roll {
+ 3 getinterval {} forall
+ 5 index exec
+ 3 index
+ } for
+
+ 5 {pop} repeat
+} def
+/ci6walkcmykstring
+{
+ 0 3 index
+ dup length 1 sub 0 4 3 -1 roll {
+ 4 getinterval {} forall
+
+ 6 index exec
+
+ 3 index
+
+ } for
+
+ 5 { pop } repeat
+
+} def
+/ci6putrgbtograystr
+{
+ .11 mul exch
+
+ .59 mul add exch
+
+ .3 mul add
+
+ cvi 3 copy put
+
+ pop 1 add
+} def
+/ci6putcmyktograystr
+{
+ exch .11 mul add
+
+ exch .59 mul add
+
+ exch .3 mul add
+
+ dup 255 gt { pop 255 } if
+
+ 255 exch sub cvi 3 copy put
+
+ pop 1 add
+} def
+/ci6rgbtograyproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+ XIBuffer3
+ dup 3 1 roll
+
+ /ci6putrgbtograystr load exch
+ ci6walkrgbstring
+ end
+} def
+/ci6cmyktograyproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+ XIBuffer3
+ dup 3 1 roll
+
+ /ci6putcmyktograystr load exch
+ ci6walkcmykstring
+ end
+} def
+/ci6separatecmykproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+
+ XIBuffer3
+
+ 0 2 index
+
+ plateindex 4 2 index length 1 sub {
+ get 255 exch sub
+
+ 3 copy put pop 1 add
+
+ 2 index
+ } for
+ pop pop exch pop
+ end
+} def
+
+/ci6compositeimage {
+ dup 1 eq {
+ pop pop image
+ }{
+ /ci6colorimage load null ne {
+ ci6colorimage
+ }{
+ 3 1 roll pop
+ sourcearray 0 3 -1 roll put
+ 3 eq {/ci6rgbtograyproc}{/ci6cmyktograyproc} ifelse load
+ image
+ } ifelse
+ } ifelse
+} def
+/ci6knockoutimage {
+ gsave
+ 0 ci6curtransfer exec 1 ci6curtransfer exec
+ eq {
+ 0 ci6curtransfer exec 0.5 lt
+ }{
+ 0 ci6curtransfer exec 1 ci6curtransfer exec gt
+ } ifelse
+ {{pop 0}}{{pop 1}} ifelse
+ systemdict /settransfer get exec
+ ci6compositeimage
+ grestore
+} def
+/ci6drawimage {
+ ci6testplate -1 eq {
+ pop ci6compositeimage
+ }{
+ dup type /arraytype eq {
+ dup length plateindex gt {plateindex get}{pop false} ifelse
+ }{
+ {
+ true
+ }{
+ dup 1 eq {plateindex 3 eq}{plateindex 3 le} ifelse
+ } ifelse
+ } ifelse
+ {
+ dup 1 eq {
+ pop pop ci6image
+ }{
+ dup 3 eq {
+ ci6compositeimage
+ }{
+ pop pop
+ sourcearray 0 3 -1 roll put
+ /ci6separatecmykproc load
+ ci6image
+ } ifelse
+ } ifelse
+ }{
+ ci6curoverprint {
+ 7 {pop} repeat
+ }{
+ ci6knockoutimage
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6proctintimage {
+ /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store
+ /_pticomps _ptispace ci6numcomps store
+ /_ptiscale _pti1 _pti0 sub store
+ level2? {
+ _ptiname length 0 gt version cvr 2012 ge and {
+ [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace
+ [_pti0 _pti1] ci6makeimagedict ci6image
+ }{
+ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace
+ [0 255] ci6makeimagedict ci6image
+ } ifelse
+ }{
+ _pticomps 1 eq {
+ {
+ dup
+ {
+ 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put
+ } ci6stringapply
+ } ci6concatprocs ci6image
+ }{
+ {
+ dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse
+ _ptibuf {
+ exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc
+ _pticomps 2 add -2 roll
+ _pticomps 1 sub -1 0 {
+ 1 index add 2 index exch
+ 5 -1 roll
+ 255 mul cvi put
+ } for
+ pop pop
+ } ci6stringapply
+ } ci6concatprocs false _pticomps
+ /ci6colorimage load null eq {7 {pop} repeat}{ci6colorimage} ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6graytintimage {
+ /_gtigray 5 -1 roll store
+ {1 _gtigray sub mul 1 exch sub} 4 1 roll
+ /DeviceGray ci6proctintimage
+} def
+/ci6cmyktintimage {
+ /_cticmyk 5 -1 roll store
+ {_cticmyk {1 index mul exch} forall pop} 4 1 roll
+ /DeviceCMYK ci6proctintimage
+} def
+/ci6rgbtintimage {
+ /_rtirgb 5 -1 roll store
+ {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll
+ /DeviceRGB ci6proctintimage
+} def
+/ci6tintimage {
+ ci6testplate -1 eq {
+ ci6colorexpand
+ 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll
+ dup /DeviceGray eq {
+ pop ci6graytintimage
+ }{
+ dup /DeviceRGB eq {
+ pop ci6rgbtintimage
+ }{
+ pop ci6cmyktintimage
+ } ifelse
+ } ifelse
+ }{
+ dup ci6marksplate {
+ plateindex 5 lt {
+ ci6colortocmyk plateindex get
+ dup 0 eq ci6curoverprint and {
+ 7 {pop} repeat
+ }{
+ 1 exch sub
+ exch {1 0}{0 1} ifelse () ci6graytintimage
+ } ifelse
+ }{
+ pop exch {0}{0 exch} ifelse 0 3 1 roll () ci6graytintimage
+ } ifelse
+ }{
+ ci6curoverprint {
+ 8 {pop} repeat
+ }{
+ pop pop pop
+ {pop 1} 0 1 () /DeviceGray ci6proctintimage
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/XINullImage {
+} def
+/XIImageMask {
+ XIImageWidth XIImageHeight false
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ imagemask
+} def
+/XIImageTint {
+ XIImageWidth XIImageHeight XIBitsPerPixel
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ XIType 3 eq XIColorValues XIColorSpace ci6tintimage
+} def
+/XIImage {
+ XIImageWidth XIImageHeight XIBitsPerPixel
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ false XIChannelCount XIPlateList ci6drawimage
+} def
+/XG {
+ pop pop
+} def
+/XF {
+ 13 {pop} repeat
+} def
+/Xh {
+ Adobe_ColorImage_AI6_Vars begin
+ gsave
+ /XIType exch def
+ /XIImageHeight exch def
+ /XIImageWidth exch def
+ /XIImageMatrix exch def
+ 0 0 moveto
+ XIImageMatrix concat
+ XIImageWidth XIImageHeight scale
+
+ /_lp /null ddef
+ _fc
+ /_lp /imagemask ddef
+ end
+} def
+/XH {
+ Adobe_ColorImage_AI6_Vars begin
+ grestore
+ end
+} def
+/XIEnable {
+ Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put
+} def
+/XC {
+ Adobe_ColorImage_AI6_Vars begin
+ ci6colormake
+ /XIColorSpace exch def
+ /XIColorValues exch def
+ end
+} def
+/XIPlates {
+ Adobe_ColorImage_AI6_Vars begin
+ /XIPlateList exch def
+ end
+} def
+/XI
+{
+ Adobe_ColorImage_AI6_Vars begin
+ gsave
+ /XIType exch def
+ cvi dup
+ 256 idiv /XICompression exch store
+ 256 mod /XIEncoding exch store
+ pop pop
+ /XIChannelCount exch def
+ /XIBitsPerPixel exch def
+ /XIImageHeight exch def
+ /XIImageWidth exch def
+ pop pop pop pop
+ /XIImageMatrix exch def
+ XIBitsPerPixel 1 eq {
+ XIImageWidth 8 div ceiling cvi
+ }{
+ XIImageWidth XIChannelCount mul
+ } ifelse
+ /XIRowBytes exch def
+ XIEnable {
+ /XIBuffer3 XIImageWidth string def
+ XICompression 0 eq {
+ /XIBuffer1 XIRowBytes string def
+ XIEncoding 0 eq {
+ {currentfile XIBuffer1 readhexstring pop}
+ }{
+ {currentfile XIBuffer1 readstring pop}
+ } ifelse
+ }{
+ /XIBuffer1 256 string def
+ /XIBuffer2 XIRowBytes string def
+ {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if}
+ /ASCII85Decode filter /DCTDecode filter
+ /XIFile exch def
+ {XIFile XIBuffer2 readstring pop}
+ } ifelse
+ /XIDataProc exch def
+
+ XIType 1 ne {
+ 0 setgray
+ } if
+ XIType 1 eq {
+ XIImageMask
+ }{
+ XIType 2 eq XIType 3 eq or {
+ XIImageTint
+ }{
+ XIImage
+ } ifelse
+ } ifelse
+ }{
+ XINullImage
+ } ifelse
+ /XIPlateList false def
+ grestore
+ end
+} def
+end
+%%EndProcSet
+%%BeginResource: procset Adobe_Illustrator_AI5 1.3 0
+%%Title: (Adobe Illustrator (R) Version 8.0 Full Prolog)
+%%Version: 1.3 0
+%%CreationDate: (3/7/1994) ()
+%%Copyright: ((C) 1987-1998 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5_vars 112 dict dup begin
+put
+/_?cmyk false def
+/_eo false def
+/_lp /none def
+/_pf
+{
+} def
+/_ps
+{
+} def
+/_psf
+{
+} def
+/_pss
+{
+} def
+/_pjsf
+{
+} def
+/_pjss
+{
+} def
+/_pola 0 def
+/_doClip 0 def
+/cf currentflat def
+/_lineorientation 0 def
+/_charorientation 0 def
+/_yokoorientation 0 def
+/_tm matrix def
+/_renderStart
+[
+/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0
+] def
+/_renderEnd
+[
+null null null null /i1 /i1 /i1 /i1
+] def
+/_render -1 def
+/_shift [0 0] def
+/_ax 0 def
+/_ay 0 def
+/_cx 0 def
+/_cy 0 def
+/_leading
+[
+0 0
+] def
+/_ctm matrix def
+/_mtx matrix def
+/_sp 16#020 def
+/_hyphen (-) def
+/_fontSize 0 def
+/_fontAscent 0 def
+/_fontDescent 0 def
+/_fontHeight 0 def
+/_fontRotateAdjust 0 def
+/Ss 256 string def
+Ss 0 (fonts/) putinterval
+/_cnt 0 def
+/_scale [1 1] def
+/_nativeEncoding 0 def
+/_useNativeEncoding 0 def
+/_tempEncode 0 def
+/_pntr 0 def
+/_tDict 2 dict def
+/_hfname 100 string def
+/_hffound false def
+/Tx
+{
+} def
+/Tj
+{
+} def
+/CRender
+{
+} def
+/_AI3_savepage
+{
+} def
+/_gf null def
+/_cf 4 array def
+/_rgbf 3 array def
+/_if null def
+/_of false def
+/_fc
+{
+} def
+/_gs null def
+/_cs 4 array def
+/_rgbs 3 array def
+/_is null def
+/_os false def
+/_sc
+{
+} def
+/_pd 1 dict def
+/_ed 15 dict def
+/_pm matrix def
+/_fm null def
+/_fd null def
+/_fdd null def
+/_sm null def
+/_sd null def
+/_sdd null def
+/_i null def
+/_lobyte 0 def
+/_hibyte 0 def
+/_cproc null def
+/_cscript 0 def
+/_hvax 0 def
+/_hvay 0 def
+/_hvwb 0 def
+/_hvcx 0 def
+/_hvcy 0 def
+/_bitfont null def
+/_bitlobyte 0 def
+/_bithibyte 0 def
+/_bitkey null def
+/_bitdata null def
+/_bitindex 0 def
+/discardSave null def
+/buffer 256 string def
+/beginString null def
+/endString null def
+/endStringLength null def
+/layerCnt 1 def
+/layerCount 1 def
+/perCent (%) 0 get def
+/perCentSeen? false def
+/newBuff null def
+/newBuffButFirst null def
+/newBuffLast null def
+/clipForward? false def
+end
+userdict /Adobe_Illustrator_AI5 known not {
+ userdict /Adobe_Illustrator_AI5 100 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/initialize
+{
+ Adobe_Illustrator_AI5 dup begin
+ Adobe_Illustrator_AI5_vars begin
+ /_aicmykps where {pop /_?cmyk _aicmykps def}if
+ discardDict
+ {
+ bind pop pop
+ } forall
+ dup /nc get begin
+ {
+ dup xcheck 1 index type /operatortype ne and
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ newpath
+} def
+/terminate
+{
+ end
+ end
+} def
+/_
+null def
+/ddef
+{
+ Adobe_Illustrator_AI5_vars 3 1 roll put
+} def
+/xput
+{
+ dup load dup length exch maxlength eq
+ {
+ dup dup load dup
+ length 2 mul dict copy def
+ } if
+ load begin
+ def
+ end
+} def
+/npop
+{
+ {
+ pop
+ } repeat
+} def
+/hswj
+{
+ dup stringwidth 3 2 roll
+ {
+ _hvwb eq { exch _hvcx add exch _hvcy add } if
+ exch _hvax add exch _hvay add
+ } cforall
+} def
+/vswj
+{
+ 0 0 3 -1 roll
+ {
+ dup 255 le
+ _charorientation 1 eq
+ and
+ {
+ dup cstring stringwidth 5 2 roll
+ _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ exch _hvay sub exch _hvax sub
+ 4 -1 roll sub exch
+ 3 -1 roll sub exch
+ }
+ {
+ _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ exch _hvay sub exch _hvax sub
+ _fontHeight sub
+ } ifelse
+ } cforall
+} def
+/swj
+{
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+ _lineorientation 0 eq { hswj } { vswj } ifelse
+} def
+/sw
+{
+ 0 0 0 6 3 roll swj
+} def
+/vjss
+{
+ 4 1 roll
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ gsave
+ false charpath currentpoint
+ 5 index setmatrix stroke
+ grestore
+ _fontRotateAdjust sub
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ 5 index sub
+ 3 index _sp eq
+ {
+ 9 index sub
+ } if
+
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+
+ gsave
+ 2 index false charpath
+ 6 index setmatrix stroke
+ grestore
+
+ moveto pop pop
+ } ifelse
+ } cforall
+ 6 npop
+} def
+/hjss
+{
+ 4 1 roll
+ {
+ dup cstring
+ gsave
+ false charpath currentpoint
+ 5 index setmatrix stroke
+ grestore
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ } cforall
+ 6 npop
+} def
+/jss
+{
+ _lineorientation 0 eq { hjss } { vjss } ifelse
+} def
+/ss
+{
+ 0 0 0 7 3 roll jss
+} def
+/vjsp
+{
+ 4 1 roll
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ false charpath
+ currentpoint
+ _fontRotateAdjust sub
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ 5 index sub
+ 3 index _sp eq
+ {
+ 9 index sub
+ } if
+
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+
+ 2 index false charpath
+
+ moveto pop pop
+ } ifelse
+ } cforall
+ 6 npop
+} def
+/hjsp
+{
+ 4 1 roll
+ {
+ dup cstring
+ false charpath
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ } cforall
+ 6 npop
+} def
+/jsp
+{
+ matrix currentmatrix
+ _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/sp
+{
+ matrix currentmatrix
+ 0 0 0 7 3 roll
+ _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/pl
+{
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+} def
+/setstrokeadjust where
+{
+ pop true setstrokeadjust
+ /c
+ {
+ curveto
+ } def
+ /C
+ /c load def
+ /v
+ {
+ currentpoint 6 2 roll curveto
+ } def
+ /V
+ /v load def
+ /y
+ {
+ 2 copy curveto
+ } def
+ /Y
+ /y load def
+ /l
+ {
+ lineto
+ } def
+ /L
+ /l load def
+ /m
+ {
+ moveto
+ } def
+}
+{
+ /c
+ {
+ pl curveto
+ } def
+ /C
+ /c load def
+ /v
+ {
+ currentpoint 6 2 roll pl curveto
+ } def
+ /V
+ /v load def
+ /y
+ {
+ pl 2 copy curveto
+ } def
+ /Y
+ /y load def
+ /l
+ {
+ pl lineto
+ } def
+ /L
+ /l load def
+ /m
+ {
+ pl moveto
+ } def
+} ifelse
+/d
+{
+ setdash
+} def
+/cf
+{
+} def
+/i
+{
+ dup 0 eq
+ {
+ pop cf
+ } if
+ setflat
+} def
+/j
+{
+ setlinejoin
+} def
+/J
+{
+ setlinecap
+} def
+/M
+{
+ setmiterlimit
+} def
+/w
+{
+ setlinewidth
+} def
+/XR
+{
+ 0 ne
+ /_eo exch ddef
+} def
+/H
+{
+} def
+/h
+{
+ closepath
+} def
+/N
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ _eo {eoclip} {clip} ifelse /_doClip 0 ddef
+ } if
+ newpath
+ }
+ {
+ /CRender
+ {
+ N
+ } ddef
+ } ifelse
+} def
+/n
+{
+ N
+} def
+/F
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc
+ /_doClip 0 ddef
+ }
+ {
+ _pf
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ F
+ } ddef
+ } ifelse
+} def
+/f
+{
+ closepath
+ F
+} def
+/S
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+ /_doClip 0 ddef
+ }
+ {
+ _ps
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ S
+ } ddef
+ } ifelse
+} def
+/s
+{
+ closepath
+ S
+} def
+/B
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ gsave F grestore
+ {
+ gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+ /_doClip 0 ddef
+ }
+ {
+ S
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ B
+ } ddef
+ } ifelse
+} def
+/b
+{
+ closepath
+ B
+} def
+/W
+{
+ /_doClip 1 ddef
+} def
+/*
+{
+ count 0 ne
+ {
+ dup type /stringtype eq
+ {
+ pop
+ } if
+ } if
+ newpath
+} def
+/u
+{
+} def
+/U
+{
+} def
+/q
+{
+ _pola 0 eq
+ {
+ gsave
+ } if
+} def
+/Q
+{
+ _pola 0 eq
+ {
+ grestore
+ } if
+} def
+/*u
+{
+ _pola 1 add /_pola exch ddef
+} def
+/*U
+{
+ _pola 1 sub /_pola exch ddef
+ _pola 0 eq
+ {
+ CRender
+ } if
+} def
+/D
+{
+ pop
+} def
+/*w
+{
+} def
+/*W
+{
+} def
+/`
+{
+ /_i save ddef
+ clipForward?
+ {
+ nulldevice
+ } if
+ 6 1 roll 4 npop
+ concat pop
+ userdict begin
+ /showpage
+ {
+ } def
+ 0 setgray
+ 0 setlinecap
+ 1 setlinewidth
+ 0 setlinejoin
+ 10 setmiterlimit
+ [] 0 setdash
+ /setstrokeadjust where {pop false setstrokeadjust} if
+ newpath
+ 0 setgray
+ false setoverprint
+} def
+/~
+{
+ end
+ _i restore
+} def
+/_rgbtocmyk
+{
+ 3
+ {
+ 1 exch sub 3 1 roll
+ } repeat
+ 3 copy 1 4 1 roll
+ 3
+ {
+ 3 index 2 copy gt
+ {
+ exch
+ } if
+ pop 4 1 roll
+ } repeat
+ pop pop pop
+ 4 1 roll
+ 3
+ {
+ 3 index sub
+ 3 1 roll
+ } repeat
+ 4 -1 roll
+} def
+/setrgbfill
+{
+ _rgbf astore pop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _rgbf aload pop setrgbcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/setrgbstroke
+{
+ _rgbs astore pop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _rgbs aload pop setrgbcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/O
+{
+ 0 ne
+ /_of exch ddef
+ /_lp /none ddef
+} def
+/R
+{
+ 0 ne
+ /_os exch ddef
+ /_lp /none ddef
+} def
+/g
+{
+ /_gf exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _gf setgray
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/G
+{
+ /_gs exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _gs setgray
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/k
+{
+ _cf astore pop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _cf aload pop setcmykcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/K
+{
+ _cs astore pop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _cs aload pop setcmykcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/Xa
+{
+ _?cmyk {
+ 3 npop k
+ }{
+ setrgbfill 4 npop
+ } ifelse
+} def
+/XA
+{
+ _?cmyk {
+ 3 npop K
+ }{
+ setrgbstroke 4 npop
+ } ifelse
+} def
+/Xs
+{
+ /_gf exch ddef
+ 5 npop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _gf setAIseparationgray
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/XS
+{
+ /_gs exch ddef
+ 5 npop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _gs setAIseparationgray
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/Xx
+{
+ exch
+ /_gf exch ddef
+ 0 eq {
+ findcmykcustomcolor
+ }{
+ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+ {
+ 4 1 roll 3 npop
+ findcmykcustomcolor
+ }{
+ 8 -4 roll 4 npop
+ findrgbcustomcolor
+ } ifelse
+ } ifelse
+ /_if exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _if _gf 1 exch sub setcustomcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/XX
+{
+ exch
+ /_gs exch ddef
+ 0 eq {
+ findcmykcustomcolor
+ }{
+ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+ {
+ 4 1 roll 3 npop
+ findcmykcustomcolor
+ }{
+ 8 -4 roll 4 npop
+ findrgbcustomcolor
+ } ifelse
+ } ifelse
+ /_is exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _is _gs 1 exch sub setcustomcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/x
+{
+ /_gf exch ddef
+ findcmykcustomcolor
+ /_if exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _if _gf 1 exch sub setcustomcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/X
+{
+ /_gs exch ddef
+ findcmykcustomcolor
+ /_is exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _is _gs 1 exch sub setcustomcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/XK
+{
+ 3 -1 roll pop
+ 0 eq
+ {
+ 1 exch sub
+ 3 {dup 3 1 roll mul 5 1 roll} repeat
+ mul 4 1 roll
+ K
+ }
+ {
+ 1 exch sub 4 1 roll
+ 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+ 4 -1 roll pop
+ XA
+ } ifelse
+} def
+/Xk
+{
+ 3 -1 roll pop
+ 0 eq
+ {
+ 1 exch sub
+ 3 {dup 3 1 roll mul 5 1 roll} repeat
+ mul 4 1 roll
+ k
+ }
+ {
+ 1 exch sub 4 1 roll
+ 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+ 4 -1 roll pop
+ Xa
+ } ifelse
+} def
+/A
+{
+ pop
+} def
+/annotatepage
+{
+userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse
+} def
+/XT {
+ pop pop
+} def
+/Xt {
+ pop
+} def
+/discard
+{
+ save /discardSave exch store
+ discardDict begin
+ /endString exch store
+ gt38?
+ {
+ 2 add
+ } if
+ load
+ stopped
+ pop
+ end
+ discardSave restore
+} bind def
+userdict /discardDict 7 dict dup begin
+put
+/pre38Initialize
+{
+ /endStringLength endString length store
+ /newBuff buffer 0 endStringLength getinterval store
+ /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store
+ /newBuffLast newBuff endStringLength 1 sub 1 getinterval store
+} def
+/shiftBuffer
+{
+ newBuff 0 newBuffButFirst putinterval
+ newBuffLast 0
+ currentfile read not
+ {
+ stop
+ } if
+ put
+} def
+0
+{
+ pre38Initialize
+ mark
+ currentfile newBuff readstring exch pop
+ {
+ {
+ newBuff endString eq
+ {
+ cleartomark stop
+ } if
+ shiftBuffer
+ } loop
+ }
+ {
+ stop
+ } ifelse
+} def
+1
+{
+ pre38Initialize
+ /beginString exch store
+ mark
+ currentfile newBuff readstring exch pop
+ {
+ {
+ newBuff beginString eq
+ {
+ /layerCount dup load 1 add store
+ }
+ {
+ newBuff endString eq
+ {
+ /layerCount dup load 1 sub store
+ layerCount 0 eq
+ {
+ cleartomark stop
+ } if
+ } if
+ } ifelse
+ shiftBuffer
+ } loop
+ } if
+} def
+2
+{
+ mark
+ {
+ currentfile buffer {readline} stopped {
+ % assume error was due to overfilling the buffer
+ }{
+ not
+ {
+ stop
+ } if
+ endString eq {
+ cleartomark stop
+ } if
+ }ifelse
+ } loop
+} def
+3
+{
+ /beginString exch store
+ /layerCnt 1 store
+ mark
+ {
+ currentfile buffer {readline} stopped {
+ % assume error was due to overfilling the buffer
+ }{
+ not
+ {
+ stop
+ } if
+ dup beginString eq
+ {
+ pop /layerCnt dup load 1 add store
+ }
+ {
+ endString eq
+ {
+ layerCnt 1 eq
+ {
+ cleartomark stop
+ }
+ {
+ /layerCnt dup load 1 sub store
+ } ifelse
+ } if
+ } ifelse
+ }ifelse
+ } loop
+} def
+end
+userdict /clipRenderOff 15 dict dup begin
+put
+{
+ /n /N /s /S /f /F /b /B
+}
+{
+ {
+ _doClip 1 eq
+ {
+ /_doClip 0 ddef _eo {eoclip} {clip} ifelse
+ } if
+ newpath
+ } def
+} forall
+/Tr /pop load def
+/Bb {} def
+/BB /pop load def
+/Bg {12 npop} def
+/Bm {6 npop} def
+/Bc /Bm load def
+/Bh {4 npop} def
+end
+/Lb
+{
+ 6 npop
+ 7 2 roll
+ 5 npop
+ 0 eq
+ {
+ 0 eq
+ {
+ (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard
+ }
+ {
+
+ /clipForward? true def
+
+ /Tx /pop load def
+ /Tj /pop load def
+
+ currentdict end clipRenderOff begin begin
+ } ifelse
+ }
+ {
+ 0 eq
+ {
+ save /discardSave exch store
+ } if
+ } ifelse
+} bind def
+/LB
+{
+ discardSave dup null ne
+ {
+ restore
+ }
+ {
+ pop
+ clipForward?
+ {
+ currentdict
+ end
+ end
+ begin
+
+ /clipForward? false ddef
+ } if
+ } ifelse
+} bind def
+/Pb
+{
+ pop pop
+ 0 (%AI5_EndPalette) discard
+} bind def
+/Np
+{
+ 0 (%AI5_End_NonPrinting--) discard
+} bind def
+/Ln /pop load def
+/Ap
+/pop load def
+/Ar
+{
+ 72 exch div
+ 0 dtransform dup mul exch dup mul add sqrt
+ dup 1 lt
+ {
+ pop 1
+ } if
+ setflat
+} def
+/Mb
+{
+ q
+} def
+/Md
+{
+} def
+/MB
+{
+ Q
+} def
+/nc 4 dict def
+nc begin
+/setgray
+{
+ pop
+} bind def
+/setcmykcolor
+{
+ 4 npop
+} bind def
+/setrgbcolor
+{
+ 3 npop
+} bind def
+/setcustomcolor
+{
+ 2 npop
+} bind def
+currentdict readonly pop
+end
+/XP
+{
+ 4 npop
+} bind def
+/XD
+{
+ pop
+} bind def
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_cshow 2.0 8
+%%Title: (Writing System Operators)
+%%Version: 2.0 8
+%%CreationDate: (1/23/89) ()
+%%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_cshow 14 dict dup begin put
+/initialize
+{
+ Adobe_cshow begin
+ Adobe_cshow
+ {
+ dup xcheck
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ Adobe_cshow begin
+} def
+/terminate
+{
+currentdict Adobe_cshow eq
+ {
+ end
+ } if
+} def
+/cforall
+{
+ /_lobyte 0 ddef
+ /_hibyte 0 ddef
+ /_cproc exch ddef
+ /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef
+ {
+ /_lobyte exch ddef
+ _hibyte 0 eq
+ _cscript 1 eq
+ _lobyte 129 ge _lobyte 159 le and
+ _lobyte 224 ge _lobyte 252 le and or and
+ _cscript 2 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript 3 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript 25 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript -1 eq
+ or or or or and
+ {
+ /_hibyte _lobyte ddef
+ }
+ {
+ _hibyte 256 mul _lobyte add
+ _cproc
+ /_hibyte 0 ddef
+ } ifelse
+ } forall
+} def
+/cstring
+{
+ dup 256 lt
+ {
+ (s) dup 0 4 3 roll put
+ }
+ {
+ dup 256 idiv exch 256 mod
+ (hl) dup dup 0 6 5 roll put 1 4 3 roll put
+ } ifelse
+} def
+/clength
+{
+ 0 exch
+ { 256 lt { 1 } { 2 } ifelse add } cforall
+} def
+/hawidthshow
+{
+ {
+ dup cstring
+ show
+ _hvax _hvay rmoveto
+ _hvwb eq { _hvcx _hvcy rmoveto } if
+ } cforall
+} def
+/vawidthshow
+{
+ {
+ dup 255 le
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ 0 _fontRotateAdjust rmoveto
+ cstring
+ _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow
+ 0 _fontRotateAdjust neg rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ exch _hvay sub exch _hvax sub
+ 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ 3 2 roll
+ cstring
+ dup stringwidth pop 2 div neg _fontAscent neg rmoveto
+ show
+ moveto
+ } ifelse
+ } cforall
+} def
+/hvawidthshow
+{
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+ _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse
+} def
+/hvwidthshow
+{
+ 0 0 3 -1 roll hvawidthshow
+} def
+/hvashow
+{
+ 0 0 0 6 -3 roll hvawidthshow
+} def
+/hvshow
+{
+ 0 0 0 0 0 6 -1 roll hvawidthshow
+} def
+currentdict readonly pop end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_shading_AI8 1.0 0
+%%Title: (Adobe Illustrator 8 Shading Procset)
+%%Version: 1.0 0
+%%CreationDate: (12/17/97) ()
+%%Copyright: ((C) 1987-1997 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /Adobe_shading_AI8 10 dict dup begin put
+/initialize {
+ Adobe_shading_AI8 begin
+ Adobe_shading_AI8 bdprocs
+ Mesh /initialize get exec
+} def
+/terminate {
+ currentdict Adobe_shading_AI8 eq {
+ end
+ } if
+} def
+/bdprocs {
+ {
+ dup xcheck 1 index type /arraytype eq and {
+ bind
+ } if
+ pop pop
+ } forall
+} def
+/X! {pop} def
+/X# {pop pop} def
+/Mesh 40 dict def
+Mesh begin
+/initialize {
+ Mesh bdprocs
+ Mesh begin
+ /emulate? /AI8MeshEmulation where {
+ pop AI8MeshEmulation
+ }{
+ systemdict /shfill known not
+ } ifelse def
+ end
+} def
+/bd {
+ shadingdict begin
+} def
+/paint {
+ emulate? {
+ end
+ }{
+ /_lp /none ddef _fc /_lp /none ddef
+
+ /AIColorSpace AIColorSpace tocolorspace store
+ /ColorSpace AIColorSpace topsspace store
+
+ version_ge_3010.106 not systemdict /setsmoothness known and {
+ 0.0001 setsmoothness
+ } if
+
+ composite? {
+ /DataSource getdatasrc def
+ Matrix concat
+ currentdict end
+ shfill
+ }{
+ AIColorSpace makesmarks AIPlateList markingplate and not isoverprint and {
+ end
+ }{
+ /ColorSpace /DeviceGray store
+ /Decode [0 1 0 1 0 1] store
+ /DataSource getplatesrc def
+ Matrix concat
+ currentdict end
+ shfill
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/shadingdict 12 dict def
+shadingdict begin
+ /ShadingType 6 def
+ /BitsPerCoordinate 16 def
+ /BitsPerComponent 8 def
+ /BitsPerFlag 8 def
+end
+/datafile null def
+/databuf 256 string def
+/dataptr 0 def
+/srcspace null def
+/srcchannels 0 def
+/dstchannels 0 def
+/dstplate 0 def
+/srctodstcolor null def
+/getplatesrc {
+ /srcspace AIColorSpace store
+ /srcchannels AIColorSpace getnchannels store
+ /dstchannels 1 store
+ /dstplate getplateindex store
+ /srctodstcolor srcspace makesmarks {
+ dstplate 4 eq {
+ {1 exch sub}
+ }{
+ {srcspace tocmyk 3 dstplate sub index 1 exch sub 5 1 roll 4 {pop} repeat}
+ } ifelse
+ }{
+ {srcchannels {pop} repeat 1}
+ } ifelse store
+ /datafile getdatasrc store
+ /rdpatch168 load DataLength () /SubFileDecode filter
+} def
+/getdatasrc {
+ /rdcmntline load /ASCII85Decode filter
+} def
+/rdpatch168 {
+ /dataptr 0 store
+ 49 rdcount
+ 4 {
+ dup {pop srcchannels getint8} if
+ dup {pop srctodstcolor dstchannels putint8 true} if
+ } repeat
+ {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdpatch3216 {
+ /dataptr 0 store
+ 97 rdcount
+ 4 {
+ dup {pop srcchannels getint16} if
+ dup {pop srctodstcolor dstchannels putint16 true} if
+ } repeat
+ {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdcount {
+ dup 0 gt {
+ datafile databuf dataptr 4 -1 roll getinterval readstring
+ exch length dataptr add /dataptr exch store
+ }{
+ true
+ } ifelse
+} def
+/getint8 {
+ mark true 3 -1 roll
+ {
+ dup {pop datafile read} if
+ dup {pop 255 div true} if
+ } repeat
+ {
+ counttomark 1 add -1 roll pop true
+ }{
+ cleartomark false
+ } ifelse
+} def
+/putint8 {
+ dup dataptr add /dataptr exch store
+ dataptr exch
+ {
+ 1 sub exch
+ 255 mul cvi
+ databuf 2 index
+ 3 -1 roll put
+ } repeat
+ pop
+} def
+/getint16 {
+ mark true 3 -1 roll
+ {
+ dup {pop datafile read} if
+ dup {pop 256 mul datafile read} if
+ dup {pop add 65535 div true} if
+ } repeat
+ {
+ counttomark 1 add -1 roll pop true
+ }{
+ cleartomark false
+ } ifelse
+} def
+/putint16 {
+ dup 2 mul dataptr add /dataptr exch store
+ dataptr exch
+ {
+ 2 sub exch
+ 65535 mul cvi dup
+ 256 idiv databuf 3 index 3 -1 roll put
+ 256 mod databuf 2 index 1 add 3 -1 roll put
+ } repeat
+ pop
+} def
+/srcbuf 256 string def
+/rdcmntline {
+ currentfile srcbuf readline pop
+ (%) anchorsearch {pop} if
+} def
+/getplateindex {
+ 0 [cyan? magenta? yellow? black? customColor?] {{exit} if 1 add} forall
+} def
+/aicsarray 4 array def
+/aicsaltvals 4 array def
+/aicsaltcolr aicsaltvals def
+/tocolorspace {
+ dup type /arraytype eq {
+ mark exch aload pop
+ aicsarray 0 3 -1 roll put
+ aicsarray 1 3 -1 roll put
+ dup aicsarray 2 3 -1 roll put
+ gettintxform aicsarray 3 3 -1 roll put
+ counttomark aicsaltvals 0 3 -1 roll getinterval /aicsaltcolr exch store
+ aicsaltcolr astore pop pop
+ aicsarray
+ } if
+} def
+/subtintxform {aicsaltcolr {1 index mul exch} forall pop} def
+/addtintxform {aicsaltcolr {1 sub 1 index mul 1 add exch} forall pop} def
+/gettintxform {
+ /DeviceRGB eq {/addtintxform}{/subtintxform} ifelse load
+} def
+/getnchannels {
+ dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin Channels end
+} def
+/makesmarks {
+ composite? {
+ pop true
+ }{
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin MarksPlate end
+ } ifelse
+} def
+/markingplate {
+ composite? {
+ pop true
+ }{
+ dup type /arraytype eq {
+ dup length getplateindex gt {getplateindex get}{pop false} ifelse
+ } if
+ } ifelse
+} def
+/tocmyk {
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin ToCMYK end
+} def
+/topsspace {
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin ToPSSpace end
+} def
+/colorspacedict 5 dict dup begin
+ /DeviceGray 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {pop black?} def
+ /ToCMYK {pop 1 exch sub 0 0 0 4 -1 roll} def
+ /ToPSSpace {} def
+ end def
+ /DeviceRGB 4 dict dup begin
+ /Channels 3 def
+ /MarksPlate {pop isCMYKSep?} def
+ /ToCMYK {pop _rgbtocmyk} def
+ /ToPSSpace {} def
+ end def
+ /DeviceCMYK 4 dict dup begin
+ /Channels 4 def
+ /MarksPlate {pop isCMYKSep?} def
+ /ToCMYK {pop} def
+ /ToPSSpace {} def
+ end def
+ /Separation 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {
+ /findcmykcustomcolor where {
+ pop dup 1 exch ToCMYK 5 -1 roll 1 get
+ findcmykcustomcolor 1 setcustomcolor
+ systemdict /currentgray get exec
+ 1 ne
+ }{
+ pop false
+ } ifelse
+ } def
+ /ToCMYK {
+ dup 2 get mark exch 4 2 roll
+ 3 get exec
+ counttomark -1 roll tocmyk
+ 5 -1 roll pop
+ } def
+ /ToPSSpace {} def
+ end def
+ /Process 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {
+ isCMYKSep? {
+ 1 exch ToCMYK 4 array astore getplateindex get 0 ne
+ }{
+ pop false
+ } ifelse
+ } def
+ /ToCMYK {
+ dup 2 get mark exch 4 2 roll
+ 3 get exec
+ counttomark -1 roll tocmyk
+ 5 -1 roll pop
+ } def
+ /ToPSSpace {
+ 4 array copy dup 0 /Separation put
+ } def
+ end def
+end def
+/isoverprint {
+ /currentoverprint where {pop currentoverprint}{_of} ifelse
+} def
+/version_ge_3010.106 {
+ version {cvr} stopped {
+ pop
+ false
+ }{
+ 3010.106 ge
+ } ifelse
+} def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%EndProlog %%BeginSetup userdict /_useSmoothShade false put userdict /_aicmykps true put userdict /_forceToCMYK true put Adobe_level2_AI5 /initialize get exec
+Adobe_cshow /initialize get exec
+Adobe_ColorImage_AI6 /initialize get exec
+Adobe_shading_AI8 /initialize get exec
+Adobe_Illustrator_AI5 /initialize get exec
+%AI3_BeginRider currentpacking true setpacking setpacking %AI3_EndRider %AI5_Begin_NonPrinting Np %AI8_PluginGroupInfo (Adobe Path Blends) (Adobe Blends Plugin) (LiveBlends.aip) %AI8_PluginGroupInfo (Adobe Tracing Object) (Tracing) (TracingSuite.aip) %AI8_PluginGroupInfo (Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (ScatterBrushTool.aip) %AI8_PluginGroupInfo (Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (ScatterBrushTool.aip) %AI8_PluginGroupInfo (Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe Calligraphic Brush Tool) (Adobe Calligraphic Brush Plugin) (CalligBrushTool.aip) %AI8_PluginGroupInfo (Adobe Flare Plugin) (Flare) (Flare.aip) %AI8_PluginGroupInfo (Adobe Symbolism) (Adobe Symbolism) (ParticleSystem.aip) %AI8_PluginGroupInfo (Adobe Deform Plugin) (Adobe Envelope Plugin) (Envelope and Warp.aip) %AI8_PluginGroupInfo (Pathfinder Suite) (Adobe Compound Shape) (PathFinderS.aip) %AI8_PluginGroupInfo (Adobe Planar Group) (Adobe Live Paint Plugin) (Live Paint.aip) %AI5_End_NonPrinting-- %AI5_BeginPalette 0 0 Pb 0.74902 0.678431 0.670588 0.901961 ([Registration]) 0 Xs ([Registration]) Pc PB %AI5_EndPalette %%EndSetup %AI5_BeginLayer 1 1 1 1 0 0 1 0 79 128 255 0 50 Lb (svg2759) Ln 0 A u U u u 0 O 0.34902 0.231373 0.305882 0 0.666667 0.698039 0.670588 Xa 0 J 0 j 1 w 4 M []0 d 0 XR 343.6401 319.9927 m 456.9941 319.791 L 458.5781 319.791 459.9922 320.0259 459.9922 316.6309 C 459.8535 279.3018 L 340.7793 279.3018 L 340.7793 316.7695 L 340.7793 318.4438 340.9414 319.9927 343.6401 319.9927 C f *u 1 D 0.74902 0.678431 0.670588 0.901961 0 0 0 Xa 458.252 320.5 m 342.7471 320.5 L 341.5083 320.5 340.5 319.4922 340.5 318.2534 C 340.5 279.0068 L 340.5 278.7266 340.7275 278.5 341.0073 278.5 C 459.9922 278.5 L 460.2725 278.5 460.5 278.7266 460.5 279.0068 C 460.5 318.2534 L 460.5 319.4922 459.4922 320.5 458.252 320.5 C f 0 D 342.7471 319.4849 m 458.252 319.4849 L 458.9316 319.4849 459.4844 318.9326 459.4844 318.2534 C 459.4844 302.4063 459.4844 290.9775 V 376.6597 290.9775 L 373.6338 285.5068 367.8042 281.792 361.1133 281.792 c 354.4199 281.792 348.5918 285.5039 345.5674 290.9775 C 341.5151 290.9775 L 341.5151 302.4063 341.5151 318.2534 Y 341.5151 318.9326 342.0679 319.4849 342.7471 319.4849 C f *U u *u 0 0 0 0 1 1 1 Xa 414.3086 287.752 m 414.625 287.752 414.9121 287.7246 415.1738 287.6689 C 415.4336 287.6133 415.6563 287.5225 415.8418 287.3955 C 416.0273 287.2695 416.1719 287.1006 416.2744 286.8906 C 416.376 286.6797 416.4277 286.4219 416.4277 286.1113 c 416.4277 285.7773 416.3516 285.5 416.1992 285.2783 C 416.0479 285.0547 415.8223 284.873 415.5254 284.7305 C 415.9355 284.6133 416.2412 284.4082 416.4434 284.1133 c 416.6445 283.8203 416.7461 283.4648 416.7461 283.0508 c 416.7461 282.7168 416.6807 282.4277 416.5508 282.1836 C 416.4209 281.9395 416.2451 281.7402 416.0254 281.5859 C 415.8057 281.4307 415.5547 281.3164 415.2725 281.2422 C 414.9902 281.168 414.7012 281.1309 414.4033 281.1309 C 411.1875 281.1309 L 411.1875 287.752 L 414.3086 287.752 L 414.3086 287.752 L f 1 D 414.123 285.0742 m 414.3828 285.0742 414.5957 285.1367 414.7637 285.2598 C 414.9316 285.3828 415.0146 285.583 415.0146 285.8604 c 415.0146 286.0146 414.9863 286.1416 414.9316 286.2402 C 414.875 286.3389 414.8008 286.416 414.708 286.4717 C 414.6152 286.5273 414.5078 286.5664 414.3877 286.5869 c 414.2676 286.6084 414.1406 286.6191 414.0117 286.6191 C 412.6465 286.6191 L 412.6465 285.0742 L 414.123 285.0742 L f 414.208 282.2637 m 414.3506 282.2637 414.4863 282.2773 414.6172 282.3057 c 414.7461 282.334 414.8613 282.3809 414.9609 282.4443 C 415.0605 282.5098 415.1387 282.5977 415.1973 282.709 C 415.2578 282.8203 415.2861 282.9629 415.2861 283.1357 c 415.2861 283.4746 415.1895 283.7178 414.998 283.8633 C 414.8057 284.0078 414.5518 284.0801 414.2363 284.0801 C 412.6465 284.0801 L 412.6465 282.2637 L 414.208 282.2637 L f *U 0 D 417.0029 287.752 m 418.6367 287.752 L 420.1875 285.1367 L 421.7285 287.752 L 423.3516 287.752 L 420.8936 283.6719 L 420.8936 281.1309 L 419.4336 281.1309 L 419.4336 283.709 L 417.0029 287.752 L f U u 374.7539 300.894 m 374.7588 293.3643 368.6577 287.2578 361.1274 287.252 C 353.5977 287.248 347.4888 293.3477 347.4844 300.8774 C 347.4844 300.8828 347.4844 300.8882 347.4844 300.894 C 347.48 308.4238 353.5811 314.5308 361.1108 314.5352 C 368.6421 314.54 374.7495 308.4395 374.7539 300.9102 C 374.7539 300.9053 374.7539 300.8994 374.7539 300.894 C f u *u 0.74902 0.678431 0.670588 0.901961 0 0 0 Xa 372.2031 311.9985 m 375.2266 308.9751 376.7388 305.2729 376.7388 300.894 c 376.7388 296.5137 375.2529 292.8516 372.2813 289.9063 C 369.1279 286.8037 365.4004 285.2529 361.1001 285.2529 c 356.8511 285.2529 353.1885 286.791 350.1133 289.8672 C 347.0371 292.9424 345.4995 296.6182 345.4995 300.894 c 345.4995 305.1689 347.0371 308.8706 350.1133 311.9985 C 353.1104 315.0225 356.7729 316.5347 361.1001 316.5347 c 365.479 316.5347 369.1797 315.0225 372.2031 311.9985 C f 1 D 352.1484 309.9648 m 349.5923 307.3828 348.3149 304.3589 348.3149 300.8896 c 348.3149 297.4219 349.5801 294.4229 352.1094 291.8945 C 354.6396 289.3643 357.6514 288.0996 361.146 288.0996 c 364.6406 288.0996 367.6782 289.377 370.2603 291.9326 C 372.7119 294.3066 373.938 297.291 373.938 300.8896 c 373.938 304.4614 372.6919 307.4937 370.2012 309.9839 C 367.7109 312.4741 364.6924 313.7197 361.146 313.7197 c 357.5996 313.7197 354.5996 312.4678 352.1484 309.9648 C f 0 D 358.8755 302.4155 m 358.4849 303.2671 357.9004 303.6929 357.1206 303.6929 c 355.7417 303.6929 355.0527 302.7646 355.0527 300.9092 c 355.0527 299.0537 355.7417 298.127 357.1206 298.127 c 358.0308 298.127 358.6812 298.5781 359.0713 299.4834 C 360.9819 298.4658 L 360.0713 296.8477 358.7046 296.0391 356.8828 296.0391 c 355.4775 296.0391 354.3516 296.4697 353.5063 297.3301 C 352.6597 298.1914 352.2373 299.3799 352.2373 300.894 c 352.2373 302.3813 352.6733 303.5625 353.5454 304.4375 c 354.417 305.312 355.5029 305.749 356.8052 305.749 c 358.731 305.749 360.1099 304.9902 360.9438 303.4741 C 358.8755 302.4155 L f 367.8657 302.4155 m 367.4746 303.2671 366.9014 303.6929 366.146 303.6929 c 364.7397 303.6929 364.0361 302.7646 364.0361 300.9092 c 364.0361 299.0537 364.7397 298.127 366.146 298.127 c 367.0576 298.127 367.6963 298.5781 368.0605 299.4834 C 370.0142 298.4658 L 369.105 296.8477 367.7402 296.0391 365.9219 296.0391 c 364.5186 296.0391 363.395 296.4697 362.5503 297.3301 C 361.707 298.1914 361.2842 299.3799 361.2842 300.894 c 361.2842 302.3813 361.7134 303.5625 362.5708 304.4375 C 363.4277 305.312 364.5186 305.749 365.8442 305.749 c 367.7666 305.749 369.1436 304.9902 369.9746 303.4741 C 367.8657 302.4155 L f *U U /AdobeObjectMatrix (1.000000 0.000000 0.000000 1.000000 -289.615692 99.065300) XT U /AdobeObjectMatrix (0.872921 0.000000 0.000000 0.872921 50.125359 143.214401) XT u 0 0 0 0 1 1 1 Xa 416.7676 316.0215 m 422.6982 316.0215 427.5059 311.2139 427.5059 305.2832 c 427.5059 299.353 422.6982 294.5449 416.7676 294.5449 c 410.8359 294.5449 406.0273 299.353 406.0273 305.2832 c 406.0273 311.2139 410.8359 316.0215 416.7676 316.0215 c f u 1 D 0.74902 0.678431 0.670588 0.901961 0 0 0 Xa 419.875 308.3901 m 419.875 308.8042 419.5391 309.1392 419.127 309.1392 C 414.3828 309.1392 L 413.9707 309.1392 413.6348 308.8042 413.6348 308.3901 C 413.6348 303.6475 L 414.957 303.6475 L 414.957 298.0313 L 418.5518 298.0313 L 418.5518 303.6475 L 419.875 303.6475 L 419.875 308.3901 L 419.875 308.3901 L f 0 D 416.7539 313.0083 m 417.6504 313.0083 418.377 312.2817 418.377 311.3857 c 418.377 310.4897 417.6504 309.7632 416.7539 309.7632 c 415.8584 309.7632 415.1318 310.4897 415.1318 311.3857 c 415.1318 312.2817 415.8584 313.0083 416.7539 313.0083 c f U *u 1 D 416.7402 317.1143 m 413.5273 317.1143 410.8086 315.9937 408.583 313.752 C 406.2998 311.4331 405.1582 308.6885 405.1582 305.5195 c 405.1582 302.3511 406.2998 299.6255 408.583 297.3457 C 410.8672 295.0654 413.5859 293.9258 416.7402 293.9258 c 419.9336 293.9258 422.7012 295.0742 425.041 297.375 C 427.248 299.5576 428.3516 302.2729 428.3516 305.5195 c 428.3516 308.7666 427.2285 311.5103 424.9844 313.752 C 422.7383 315.9937 419.9912 317.1143 416.7402 317.1143 c f 0 D 416.7695 315.0278 m 419.4004 315.0278 421.6367 314.0996 423.4746 312.2446 C 425.332 310.4092 426.2598 308.1675 426.2598 305.5195 c 426.2598 302.853 425.3516 300.6401 423.5322 298.8818 C 421.6152 296.9883 419.3623 296.041 416.7695 296.041 c 414.1748 296.041 411.9395 296.9785 410.0645 298.8525 C 408.1855 300.7275 407.248 302.9497 407.248 305.5195 c 407.248 308.0903 408.1973 310.3315 410.0938 312.2446 C 411.9121 314.0996 414.1367 315.0278 416.7695 315.0278 c f *U U U /AdobeObjectMatrix (0.993773 0.000000 0.000000 0.993670 -177.692673 0.000001) XT U LB %AI5_EndLayer-- %AI3_BeginCrops userdict /AI3_noCropMarks known not { 0 A u u 0 R 0 G 0 J 0 j 0.5 w 4 M []0 d 0 XR 331.5 278.5 m 304.5 278.5 L S 340.5 269.5 m 340.5 242.5 L S U u 331.5 320.5 m 304.5 320.5 L S 340.5 329.5 m 340.5 356.5 L S U u 469.5 320.5 m 496.5 320.5 L S 460.5 329.5 m 460.5 356.5 L S U u 469.5 278.5 m 496.5 278.5 L S 460.5 269.5 m 460.5 242.5 L S U U } if %AI3_EndCrops %%PageTrailer gsave annotatepage grestore showpage %%Trailer Adobe_Illustrator_AI5 /terminate get exec
+Adobe_shading_AI8 /terminate get exec
+Adobe_ColorImage_AI6 /terminate get exec
+Adobe_cshow /terminate get exec
+Adobe_level2_AI5 /terminate get exec
+%%EOF \ No newline at end of file
diff --git a/source/images/cc-by-sa-4.0-88x31.png b/source/images/cc-by-sa-4.0-88x31.png
new file mode 100644
index 0000000..e76aeff
--- /dev/null
+++ b/source/images/cc-by-sa-4.0-88x31.png
Binary files differ
diff --git a/source/images/usb.png b/source/images/usb.png
new file mode 100644
index 0000000..47f743e
--- /dev/null
+++ b/source/images/usb.png
Binary files differ
diff --git a/source/index.rst b/source/index.rst
new file mode 100644
index 0000000..fb91d8c
--- /dev/null
+++ b/source/index.rst
@@ -0,0 +1,37 @@
+.. 96Boards Consumer Edition Specification Document
+ Copyright Linaro Limited, 2015
+ SPDX-License-Identifier: CC-BY-SA-4.0
+
+#######################################
+96Boards Consumer Edition Specification
+#######################################
+
+Copyright © 2015 Linaro Limited
+
+This work is licensed under the Creative Commons Attribution-ShareAlike 4.0
+International License. To view a copy of this license, visit
+http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to
+Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
+
+.. image:: images/cc-by-sa-4.0-88x31.*
+ :target: http://creativecommons.org/licenses/by-sa/4.0/
+ :alt: Creative Commons License
+ :align: right
+
+.. tabularcolumns:: l c p{11.5cm}
+.. table:: Revision History
+
+ ================= ========= =============================================
+ Date Issue Changes
+ ================= ========= =============================================
+ 28 September 2018 1.0 Import and transposition of original 1.0
+ release
+ ================= ========= =============================================
+
+.. toctree::
+ :numbered:
+
+ chapter1-background.rst
+ chapter2-96b-ce.rst
+ chapter3-references.rst
+ chapter4-appendix.rst