diff --git a/Changelog.txt b/Changelog.txt new file mode 100644 index 0000000..06941cf --- /dev/null +++ b/Changelog.txt @@ -0,0 +1,5 @@ +$Id: Changelog.txt,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + +* Release 061028 + +- initial release diff --git a/License.txt b/License.txt new file mode 100644 index 0000000..9ba8721 --- /dev/null +++ b/License.txt @@ -0,0 +1,346 @@ +The following license applies to all but the firmware/usbdrv directories. For +that directory, please refer to the firmware/usbdrv/License.txt file for +additional license restrictions. + +------------------------------------------------------------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..edaf3a2 --- /dev/null +++ b/Makefile @@ -0,0 +1,60 @@ +# $Id: Makefile,v 1.1 2006/10/28 12:40:42 rschaten Exp $ +# +# Creates documentation and tarball for shipping. + +TODAY=`date "+%y%m%d"` +DIR=`basename \`pwd\`` +PACKETNAME=$(DIR)_$(TODAY) + +all: usage + +usage: + @echo "Usage of this makefile:" + @echo "make docs create documentation" + @echo "make tarball packs a tarball for shipping" + @echo + @echo "For further information, consult the documentation in Readme.txt." + +# doc generation +docs: readme pdf + @echo "documentation created" + +readme: doxygen + echo "This file is auto-generated from the content of common/usbservo.h" > Readme.txt + echo "You'll have more fun if you read the HTML-content in htmldoc or the PDF." >> Readme.txt + echo >> Readme.txt + lynx -dump htmldoc/main.html >> Readme.txt + +pdf: doxygen + @echo "TODO: pdflatex aufrufen" + rm -rf latexdoc + +doxygen: + doxygen common/usbservo.doxygen + +clean: + rm -rf htmldoc latexdoc Readme.txt + rm -f $(PACKETNAME).tar.gz + make -C commandline clean + make -C firmware clean + +fw: + make -C firmware + mv -v firmware/main.hex firmware/main_$(TODAY).hex + +tarball: fw clean docs + @echo + @echo + @echo "I assume you updated the Changelog...? Press Enter to continue..." + @read + [ -e "firmware/main_$(TODAY).hex" ] || exit + rm --force $(PACKETNAME).tar.gz; \ + tar --directory=.. \ + --exclude=$(DIR)/Makefile \ + --exclude=CVS \ + --exclude=*.ps \ + --create \ + --gzip \ + --verbose \ + --file ../$(PACKETNAME).tar.gz $(DIR) + diff --git a/Readme.txt b/Readme.txt new file mode 100644 index 0000000..19df7db --- /dev/null +++ b/Readme.txt @@ -0,0 +1,209 @@ +This file is auto-generated from the content of common/usbservo.h +You'll have more fun if you read the HTML-content in htmldoc or the PDF. + + + * [1]Main Page + * [2]Files + + USB-Servo + +Introduction + + The USB-Servo is a device to control a servo via USB. A servo is a + motorized device that is commonly used in remote controlled cars and + planes. I built this device to activate a toy puppet. The puppet has a + button on its bottom, if you press the button the puppet collapses. + When the computer is able to press the button, I can use the puppet to + signal information like someone's online-state in the Jabber-network: + when my friend goes online, the puppet stands up, when he logs off it + collapses. + + Servos are connected with three-wire-cables. A red and a black one for + the power, and a yellow one for the signal. Power has to be between + 4.8 and 6 volts, so the 5 volts from the USB-port is in the range. The + signal doesn't take much current, so you can connect it directly to + the controller. The angle of the servo is controlled with pulse width + modulation (PWM). It gets a signal of about 50Hz (one pulse every + 20ms), the length of the pulse tells the servo the angle to adjust. + + A problem that I didn't really solve is the power consumption: I don't + know the current that runs through the motor. It seems to be low + enough not to cause any problems, but I don't know how high it will + get when the servo is blocked. YOU HAVE BEEN WARNED, I don't feel + responsible for USB-ports catching fire... :-/ + + There are three parts included in the distribution: The firmware for + an ATmega8 microcontroller, a commandline-client that can be run under + Linux, and the circuits needed to build the device. + + This project is based on my USB-LED-Fader, which itself is based on + the PowerSwitch example application by Objective Development. Like + those, it uses Objective Development's firmware-only USB driver for + Atmel's AVR microcontrollers. + + Objective Development's USB driver is a firmware-only implementation + of the USB 1.1 standard (low speed device) on cheap single chip + microcomputers of Atmel's AVR series, such as the ATtiny2313 or even + some of the small 8 pin devices. It implements the standard to the + point where useful applications can be implemented. See the file + "firmware/usbdrv/usbdrv.h" for features and limitations. + +Building and installing + + Both, the firmware and Unix command line tool are built with "make". + You may need to customize both makefiles. + + Firmware + + The firmware for this project requires avr-gcc and avr-libc (a + C-library for the AVR controller). Please read the instructions at + [3]http://www.nongnu.org/avr-libc/user-manual/install_tools.html for + how to install the GNU toolchain (avr-gcc, assembler, linker etc.) and + avr-libc. + + Once you have the GNU toolchain for AVR microcontrollers installed, + you can run "make" in the subdirectory "firmware". You may have to + edit the Makefile to use your preferred downloader with "make + program". The current version is built for avrdude with a parallel + connection to an stk200-compatible programmer. + + If working with a brand-new controller, you may have to set the + fuse-bits to use the external crystal: + + avrdude -p atmega8 -P /dev/parport0 -c stk200 -U hfuse:w:0xC9:m -U lfuse:w:0x9 +F:m + + Afterwards, you can compile and flash to the device: + + make program + + Commandline client and demo application + + The command line tool and the demo application require libusb. Please + take the packages from your system's distribution or download libusb + from [4]http://libusb.sourceforge.net/ and install it before you + compile. Change to directory "commandline", check the Makefile and + edit the settings if required and type + + make + + This will build the unix executable "usb-servo" which can be used to + control the device, and the demo application "xservopointer". + +Usage + + Connect the device to the USB-port. If it isn't already, the servo + will move to the 0-position. + + Commandline client + + Use the commandline-client as follows: + + usb-servo status + usb-servo set + usb-servo test + + Parameters + + * angle: The angle you want to set the servo to. 0 is full left, 255 + is full right. + + Examples + + Get the status of the servo: + + usb-servo status + + This will tell you the angle the servo is currently put to. + + Current servo angle: 42 + + Set a new angle: + + usb-servo set 23 + + This sets the servo to the angle 23. 0 is full left, 255 is full + right, so with 23 the servo will be almost on the left side. + + Test the device: + + usb-led-fader test + + This function sends many random numbers to the device. The device + returns the packages, and the client looks for differences in the sent + and the received numbers. + + Demo application xservopointer + + This is a pure fun thing, nobody will need it. That was reason enough + to write it... + + To use it, you have to position the servo centered above the screen + (with a little tweaking in the source, you can change that position). + Then, you attach a pointer to the servo and start the application. + + You'll never ever have to search for your mouse cursor in the future. + The pointer on the servo will always show you where to search. + +Drawbacks + + The main drawback is the mentioned power consumption. I tested it with + my servo on my notebook, it is not sure to work on other systems. THIS + MAY BE HARMFUL FOR YOUR COMPUTER, and nobody but yourself will be + responsible for any damages. + + Another, not so big problem is the crude implementation of the PWM. I + got the timing-values by trial and error, and they might not fit on + your servo. On the other hand, I think that servos should be + interchangeable. But this is my first and only one, so I can't say + anything about that. + +Files in the distribution + + * Readme.txt: Documentation, created from the htmldoc-directory. + * firmware: Source code of the controller firmware. + * firmware/usbdrv: USB driver -- See Readme.txt in this directory + for info + * commandline: Source code of the host software (needs libusb). + Here, you find the pure commandline client (usb-servo) and the fun + demo application (xservopointer). + * common: Files needed by the firmware and the commandline-client. + * circuit: Circuit diagrams in PDF and EAGLE 4 format. A free + version of EAGLE is available for Linux, Mac OS X and Windows from + [5]http://www.cadsoft.de/. + * License.txt: Public license for all contents of this project, + except for the USB driver. Look in firmware/usbdrv/License.txt for + further info. + * Changelog.txt: Logfile documenting changes in soft-, firm- and + hardware. + +Thanks! + + I'd like to thank Objective Development for the possibility to use + their driver for my project. In fact, this project wouldn't exist + without the driver. + +About the license + + My work - all contents except for the USB driver - are licensed under + the GNU General Public License (GPL). A copy of the GPL is included in + License.txt. The driver itself is licensed under a special license by + Objective Development. See firmware/usbdrv/License.txt for further + info. + + (c) 2006 by Ronald Schaten - [6]http://www.schatenseite.de + _________________________________________________________________ + + + Generated on Sat Oct 28 14:16:28 2006 for USB-Servo by [7]doxygen + 1.4.7 + +References + + 1. file://localhost/home/rschaten/microcontroller/usb-servo/htmldoc/main.html + 2. file://localhost/home/rschaten/microcontroller/usb-servo/htmldoc/files.html + 3. http://www.nongnu.org/avr-libc/user-manual/install_tools.html + 4. http://libusb.sourceforge.net/ + 5. http://www.cadsoft.de/. + 6. http://www.schatenseite.de/ + 7. http://www.doxygen.org/index.html diff --git a/circuit/circuit.brd b/circuit/circuit.brd new file mode 100644 index 0000000..e1b651a Binary files /dev/null and b/circuit/circuit.brd differ diff --git a/circuit/circuit.brd.pdf b/circuit/circuit.brd.pdf new file mode 100644 index 0000000..f82eccc Binary files /dev/null and b/circuit/circuit.brd.pdf differ diff --git a/circuit/circuit.brd.png b/circuit/circuit.brd.png new file mode 100644 index 0000000..c0c8c1f Binary files /dev/null and b/circuit/circuit.brd.png differ diff --git a/circuit/circuit.brd.ps b/circuit/circuit.brd.ps new file mode 100644 index 0000000..b36d50a --- /dev/null +++ b/circuit/circuit.brd.ps @@ -0,0 +1,7815 @@ +%!PS-Adobe-1.0 +%%BoundingBox: 0 0 594 842 +%%Creator: EAGLE Version 4.16 Copyright (c) 1988-2005 CadSoft +%%Title: circuit.brd +%%CreationDate: Tue Oct 24 21:48:04 2006 +%%Orientation: Landscape +%%Pages: 1 +%%DocumentFonts: Helvetica + +%%EndComments +%%BeginProlog +% Prolog copyright 1994-2003 Trolltech. You may copy this prolog in any way +% that is directly related to this document. For other use of this prolog, +% see your licensing agreement for Qt. +/d/def load def/D{bind d}bind d/d2{dup dup}D/B{0 d2}D/W{255 d2}D/ED{exch d}D +/D0{0 ED}D/LT{lineto}D/MT{moveto}D/S{stroke}D/F{setfont}D/SW{setlinewidth}D +/CP{closepath}D/RL{rlineto}D/NP{newpath}D/CM{currentmatrix}D/SM{setmatrix}D +/TR{translate}D/SD{setdash}D/SC{aload pop setrgbcolor}D/CR{currentfile read +pop}D/i{index}D/bs{bitshift}D/scs{setcolorspace}D/DB{dict dup begin}D/DE{end +d}D/ie{ifelse}D/sp{astore pop}D/BSt 0 d/LWi 1 d/PSt 1 d/Cx 0 d/Cy 0 d/WFi +false d/OMo false d/BCol[1 1 1]d/PCol[0 0 0]d/BkCol[1 1 1]d/BDArr[0.94 0.88 +0.63 0.50 0.37 0.12 0.06]d/defM matrix d/nS 0 d/GPS{PSt 1 ge PSt 5 le and{{ +LArr PSt 1 sub 2 mul get}{LArr PSt 2 mul 1 sub get}ie}{[]}ie}D/QS{PSt 0 ne{ +gsave LWi SW true GPS 0 SD S OMo PSt 1 ne and{BkCol SC false GPS dup 0 get +SD S}if grestore}if}D/r28{{CR dup 32 gt{exit}if pop}loop 3{CR}repeat 0 4{7 +bs exch dup 128 gt{84 sub}if 42 sub 127 and add}repeat}D/rA 0 d/rL 0 d/rB{rL +0 eq{/rA r28 d/rL 28 d}if dup rL gt{rA exch rL sub rL exch/rA 0 d/rL 0 d rB +exch bs add}{dup rA 16#fffffff 3 -1 roll bs not and exch dup rL exch sub/rL +ED neg rA exch bs/rA ED}ie}D/uc{/rL 0 d 0{dup 2 i length ge{exit}if 1 rB 1 +eq{3 rB dup 3 ge{1 add dup rB 1 i 5 ge{1 i 6 ge{1 i 7 ge{1 i 8 ge{128 add}if +64 add}if 32 add}if 16 add}if 3 add exch pop}if 3 add exch 10 rB 1 add{dup 3 +i lt{dup}{2 i}ie 4 i 3 i 3 i sub 2 i getinterval 5 i 4 i 3 -1 roll +putinterval dup 4 -1 roll add 3 1 roll 4 -1 roll exch sub dup 0 eq{exit}if 3 +1 roll}loop pop pop}{3 rB 1 add{2 copy 8 rB put 1 add}repeat}ie}loop pop}D +/sl D0/QCIgray D0/QCIcolor D0/QCIindex D0/QCI{/colorimage where{pop false 3 +colorimage}{exec/QCIcolor ED/QCIgray QCIcolor length 3 idiv string d 0 1 +QCIcolor length 3 idiv 1 sub{/QCIindex ED/x QCIindex 3 mul d QCIgray +QCIindex QCIcolor x get 0.30 mul QCIcolor x 1 add get 0.59 mul QCIcolor x 2 +add get 0.11 mul add add cvi put}for QCIgray image}ie}D/di{gsave TR 1 i 1 eq +{false eq{pop true 3 1 roll 4 i 4 i false 4 i 4 i imagemask BkCol SC +imagemask}{pop false 3 1 roll imagemask}ie}{dup false ne{/languagelevel +where{pop languagelevel 3 ge}{false}ie}{false}ie{/ma ED 8 eq{/dc[0 1]d +/DeviceGray}{/dc[0 1 0 1 0 1]d/DeviceRGB}ie scs/im ED/mt ED/h ED/w ED/id 7 +DB/ImageType 1 d/Width w d/Height h d/ImageMatrix mt d/DataSource im d +/BitsPerComponent 8 d/Decode dc d DE/md 7 DB/ImageType 1 d/Width w d/Height +h d/ImageMatrix mt d/DataSource ma d/BitsPerComponent 1 d/Decode[0 1]d DE 4 +DB/ImageType 3 d/DataDict id d/MaskDict md d/InterleaveType 3 d end image}{ +pop 8 4 1 roll 8 eq{image}{QCI}ie}ie}ie grestore}d/BF{gsave BSt 1 eq{BCol SC +WFi{fill}{eofill}ie}if BSt 2 ge BSt 8 le and{BDArr BSt 2 sub get/sc ED BCol{ +1. exch sub sc mul 1. exch sub}forall 3 array astore SC WFi{fill}{eofill}ie} +if BSt 9 ge BSt 14 le and{WFi{clip}{eoclip}ie defM SM pathbbox 3 i 3 i TR 4 +2 roll 3 2 roll exch sub/h ED sub/w ED OMo{NP 0 0 MT 0 h RL w 0 RL 0 h neg +RL CP BkCol SC fill}if BCol SC 0.3 SW NP BSt 9 eq BSt 11 eq or{0 4 h{dup 0 +exch MT w exch LT}for}if BSt 10 eq BSt 11 eq or{0 4 w{dup 0 MT h LT}for}if +BSt 12 eq BSt 14 eq or{w h gt{0 6 w h add{dup 0 MT h sub h LT}for}{0 6 w h +add{dup 0 exch MT w sub w exch LT}for}ie}if BSt 13 eq BSt 14 eq or{w h gt{0 +6 w h add{dup h MT h sub 0 LT}for}{0 6 w h add{dup w exch MT w sub 0 exch LT +}for}ie}if S}if BSt 24 eq{}if grestore}D/mat matrix d/ang1 D0/ang2 D0/w D0/h +D0/x D0/y D0/ARC{/ang2 ED/ang1 ED/h ED/w ED/y ED/x ED mat CM pop x w 2 div +add y h 2 div add TR 1 h w div neg scale ang2 0 ge{0 0 w 2 div ang1 ang1 +ang2 add arc}{0 0 w 2 div ang1 ang1 ang2 add arcn}ie mat SM}D/C D0/P{NP MT +0.5 0.5 rmoveto 0 -1 RL -1 0 RL 0 1 RL CP fill}D/M{/Cy ED/Cx ED}D/L{NP Cx Cy +MT/Cy ED/Cx ED Cx Cy LT QS}D/DL{NP MT LT QS}D/HL{1 i DL}D/VL{2 i exch DL}D/R +{/h ED/w ED/y ED/x ED NP x y MT 0 h RL w 0 RL 0 h neg RL CP BF QS}D/ACR{/h +ED/w ED/y ED/x ED x y MT 0 h RL w 0 RL 0 h neg RL CP}D/xr D0/yr D0/rx D0/ry +D0/rx2 D0/ry2 D0/RR{/yr ED/xr ED/h ED/w ED/y ED/x ED xr 0 le yr 0 le or{x y +w h R}{xr 100 ge yr 100 ge or{x y w h E}{/rx xr w mul 200 div d/ry yr h mul +200 div d/rx2 rx 2 mul d/ry2 ry 2 mul d NP x rx add y MT x y rx2 ry2 180 -90 +x y h add ry2 sub rx2 ry2 270 -90 x w add rx2 sub y h add ry2 sub rx2 ry2 0 +-90 x w add rx2 sub y rx2 ry2 90 -90 ARC ARC ARC ARC CP BF QS}ie}ie}D/E{/h +ED/w ED/y ED/x ED mat CM pop x w 2 div add y h 2 div add TR 1 h w div scale +NP 0 0 w 2 div 0 360 arc mat SM BF QS}D/A{16 div exch 16 div exch NP ARC QS} +D/PIE{/ang2 ED/ang1 ED/h ED/w ED/y ED/x ED NP x w 2 div add y h 2 div add MT +x y w h ang1 16 div ang2 16 div ARC CP BF QS}D/CH{16 div exch 16 div exch NP +ARC CP BF QS}D/BZ{curveto QS}D/CRGB{255 div 3 1 roll 255 div 3 1 roll 255 +div 3 1 roll}D/BC{CRGB BkCol sp}D/BR{CRGB BCol sp/BSt ED}D/WB{1 W BR}D/NB{0 +B BR}D/PE{setlinejoin setlinecap CRGB PCol sp/LWi ED/PSt ED LWi 0 eq{0.25 +/LWi ED}if PCol SC}D/P1{1 0 5 2 roll 0 0 PE}D/ST{defM SM concat}D/MF{true +exch true exch{exch pop exch pop dup 0 get dup findfont dup/FontName get 3 +-1 roll eq{exit}if}forall exch dup 1 get/fxscale ED 2 get/fslant ED exch +/fencoding ED[fxscale 0 fslant 1 0 0]makefont fencoding false eq{}{dup +maxlength dict begin{1 i/FID ne{def}{pop pop}ifelse}forall/Encoding +fencoding d currentdict end}ie definefont pop}D/MFEmb{findfont dup length +dict begin{1 i/FID ne{d}{pop pop}ifelse}forall/Encoding ED currentdict end +definefont pop}D/DF{findfont/fs 3 -1 roll d[fs 0 0 fs -1 mul 0 0]makefont d} +D/ty 0 d/Y{/ty ED}D/Tl{gsave SW NP 1 i exch MT 1 i 0 RL S grestore}D/XYT{ty +MT/xyshow where{pop pop xyshow}{exch pop 1 i dup length 2 div exch +stringwidth pop 3 -1 roll exch sub exch div exch 0 exch ashow}ie}D/AT{ty MT +1 i dup length 2 div exch stringwidth pop 3 -1 roll exch sub exch div exch 0 +exch ashow}D/QI{/C save d pageinit/Cx 0 d/Cy 0 d/OMo false d}D/QP{C restore +showpage}D/SPD{/setpagedevice where{1 DB 3 1 roll d end setpagedevice}{pop +pop}ie}D/SV{BSt LWi PSt Cx Cy WFi OMo BCol PCol BkCol/nS nS 1 add d gsave}D +/RS{nS 0 gt{grestore/BkCol ED/PCol ED/BCol ED/OMo ED/WFi ED/Cy ED/Cx ED/PSt +ED/LWi ED/BSt ED/nS nS 1 sub d}if}D/CLSTART{/clipTmp matrix CM d defM SM NP} +D/CLEND{clip NP clipTmp SM}D/CLO{grestore gsave defM SM}D + +/LArr[ [] [] [ 83.333 25.0 ] [ 25.0 83.333 ] [ 25.0 25.0 ] [ 25.0 25.0 ] [ 41.666 25.0 25.0 25.0 ] [ 25.0 41.666 25.0 25.0 ] [ 41.666 25.0 25.0 25.0 25.0 ] [ 25.0 41.666 25.0 25.0 25.0 25.0 ] ] d +/pageinit { +% 210*297 mm (landscape) + 90 rotate 0.12 -0.12 scale/defM matrix CM d } d +%%EndProlog +%%BeginSetup +% Fonts and encodings used +/HelveticaList [ +[ /Helvetica 1.0 0.0 ] +] d +% No embeddable font for Helvetica found +%% Font Page 00 +/Helvetica-ENC-00 [ +/.notdef/b/y/space/R/o/n/a/l/d/S/c/h/t/e/u/s/hyphen/r/v/E/L/C/T/O/N/I/one/two +/three/four/five/X/Q/J/P/D/V/M/G/A/eight/six/H/z/p/k/seven/zero/period +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef] def +/Helvetica-Uni-00 Helvetica-ENC-00 HelveticaList MF +%%BeginFont: Helvetica +%!PS-AdobeFont-1.0 Composite Font +%%FontName: Helvetica-Uni +%%Creator: Composite font created by Qt +25 dict begin +/FontName /Helvetica-Uni def +/PaintType 0 def +/FontMatrix[1 0 0 1 0 0]def +/FontType 0 def +/FMapType 2 def +/Encoding [ +0]def +/FDepVector [ +/Helvetica-Uni-00 findfont +]def +FontName currentdict end definefont pop +%%EndFont +/F1 59/Helvetica-Uni DF +/F2 14/Helvetica-Uni DF +/F3 42/Helvetica-Uni DF +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +QI +%%EndPageSetup +255 d2 BC +[0 -1 -1 0 2930 2772.06]ST +CLSTART +300 300 6417 4358 ACR +CLEND +1 0 0 0 128 1 1 PE +1 0 0 128 BR +255 d2 BC +F1 F +0 Y<0001000200030004000500060007000800090003000A000B000C0007000D000E0006>486 0 AT +[0 -1 -1 0 4039.99 2748.04]ST +0 Y<000F0010000100110010000E001200130005>252 0 AT +[0.00236218 0 -0 -0.00236204 2882 3100]ST +NP +433075 215389 MT +432331 214645 LT +431279 214645 LT +430535 215389 LT +430535 229142 LT +431279 229886 LT +432331 229886 LT +433075 229142 LT +CP BF QS +NP +433075 202689 MT +432331 201945 LT +431279 201945 LT +430535 202689 LT +430535 216441 LT +431279 217185 LT +432331 217185 LT +433075 216441 LT +CP BF QS +NP +433075 253492 MT +432331 252748 LT +431279 252748 LT +430535 253492 LT +430535 279946 LT +431279 280690 LT +432331 280690 LT +433075 279946 LT +CP BF QS +NP +433075 228090 MT +432331 227346 LT +431279 227346 LT +430535 228090 LT +430535 254544 LT +431279 255288 LT +432331 255288 LT +433075 254544 LT +CP BF QS +NP +306074 240791 MT +305330 240047 LT +253477 240047 LT +252733 240791 LT +252733 241843 LT +253477 242587 LT +305330 242587 LT +306074 241843 LT +CP BF QS +NP +255273 240791 MT +254529 240047 LT +253477 240047 LT +253105 240419 LT +227333 266193 LT +227333 267245 LT +228077 267989 LT +229129 267989 LT +229501 267617 LT +255273 241843 LT +CP BF QS +NP +229873 266193 MT +229129 265449 LT +228077 265449 LT +227333 266193 LT +227333 406955 LT +228077 407699 LT +229129 407699 LT +229873 406955 LT +CP BF QS +NP +433075 215389 MT +432331 214645 LT +329678 214645 LT +328934 215389 LT +328934 216441 LT +329678 217185 LT +432331 217185 LT +433075 216441 LT +CP BF QS +NP +331474 215389 MT +330730 214645 LT +329678 214645 LT +329306 215017 LT +303534 240791 LT +303534 241843 LT +304278 242587 LT +305330 242587 LT +305702 242215 LT +331474 216441 LT +CP BF QS +NP +229873 50278 MT +229129 49534 LT +228077 49534 LT +227333 50278 LT +227333 114834 LT +228077 115578 LT +229129 115578 LT +229873 114834 LT +CP BF QS +NP +229873 113782 MT +229129 113038 LT +228077 113038 LT +227333 113782 LT +227333 165638 LT +228077 166382 LT +229129 166382 LT +229873 165638 LT +CP BF QS +NP +306074 139184 MT +305330 138440 LT +304278 138440 LT +303534 139184 LT +303534 191040 LT +304278 191784 LT +305330 191784 LT +306074 191040 LT +CP BF QS +NP +458475 88380 MT +457731 87636 LT +456679 87636 LT +456307 88008 LT +443235 101081 LT +443235 102133 LT +443979 102877 LT +445031 102877 LT +445403 102505 LT +458475 89432 LT +CP BF QS +NP +445775 101081 MT +445031 100337 LT +443979 100337 LT +443235 101081 LT +443235 127535 LT +443979 128279 LT +445031 128279 LT +445775 127535 LT +CP BF QS +NP +445775 126483 MT +445031 125739 LT +443979 125739 LT +443607 126111 LT +430535 139184 LT +430535 140236 LT +431279 140980 LT +432331 140980 LT +432703 140608 LT +445775 127535 LT +CP BF QS +NP +407675 139184 MT +406931 138440 LT +304278 138440 LT +303534 139184 LT +303534 140236 LT +304278 140980 LT +406931 140980 LT +407675 140236 LT +CP BF QS +NP +433075 139184 MT +432331 138440 LT +405879 138440 LT +405135 139184 LT +405135 140236 LT +405879 140980 LT +432331 140980 LT +433075 140236 LT +CP BF QS +NP +458475 88380 MT +457731 87636 LT +456679 87636 LT +455935 88380 LT +455935 91126 LT +456679 91870 LT +457731 91870 LT +458475 91126 LT +CP BF QS +NP +458475 189988 MT +457731 189244 LT +456679 189244 LT +455935 189988 LT +455935 432357 LT +456679 433101 LT +457731 433101 LT +458475 432357 LT +CP BF QS +NP +407303 138812 MT +406931 138440 LT +405879 138440 LT +405135 139184 LT +405135 140236 LT +456307 191412 LT +456679 191784 LT +457731 191784 LT +458475 191040 LT +458475 189988 LT +CP BF QS +NP +458475 431305 MT +457731 430561 LT +443979 430561 LT +443235 431305 LT +443235 432357 LT +443979 433101 LT +457731 433101 LT +458475 432357 LT +CP BF QS +NP +280301 113410 MT +279929 113038 LT +278877 113038 LT +278133 113782 LT +278133 114834 LT +303906 140608 LT +304278 140980 LT +305330 140980 LT +306074 140236 LT +306074 139184 LT +CP BF QS +NP +280673 113782 MT +279929 113038 LT +228077 113038 LT +227333 113782 LT +227333 114834 LT +228077 115578 LT +279929 115578 LT +280673 114834 LT +CP BF QS +NP +306074 189988 MT +305330 189244 LT +304278 189244 LT +303534 189988 LT +303534 241843 LT +304278 242587 LT +305330 242587 LT +306074 241843 LT +CP BF QS +NP +255273 266193 MT +254529 265449 LT +253477 265449 LT +252733 266193 LT +252733 330750 LT +253477 331494 LT +254529 331494 LT +255273 330750 LT +CP BF QS +NP +255273 329698 MT +254529 328954 LT +253477 328954 LT +252733 329698 LT +252733 406955 LT +253477 407699 LT +254529 407699 LT +255273 406955 LT +CP BF QS +NP +306074 266193 MT +305330 265449 LT +304278 265449 LT +303534 266193 LT +303534 330750 LT +304278 331494 LT +305330 331494 LT +306074 330750 LT +CP BF QS +NP +306074 329698 MT +305330 328954 LT +304278 328954 LT +278133 355099 LT +278133 356151 LT +278877 356895 LT +279929 356895 LT +306074 330750 LT +CP BF QS +NP +280673 355099 MT +279929 354355 LT +278877 354355 LT +278133 355099 LT +278133 406955 LT +278877 407699 LT +279929 407699 LT +280673 406955 LT +CP BF QS +NP +128271 367800 MT +127527 367056 LT +126475 367056 LT +125731 367800 LT +125731 406955 LT +126475 407699 LT +127527 407699 LT +128271 406955 LT +CP BF QS +NP +331474 494809 MT +330730 494065 LT +329678 494065 LT +329306 494437 LT +316234 507510 LT +316234 508562 LT +316978 509306 LT +318030 509306 LT +318402 508934 LT +331474 495861 LT +CP BF QS +NP +318774 507510 MT +318030 506766 LT +291577 506766 LT +290833 507510 LT +290833 508562 LT +291577 509306 LT +318030 509306 LT +318774 508562 LT +CP BF QS +NP +293373 456707 MT +292629 455963 LT +291577 455963 LT +290833 456707 LT +290833 508562 LT +291577 509306 LT +292629 509306 LT +293373 508562 LT +CP BF QS +NP +306074 444006 MT +305330 443262 LT +304278 443262 LT +290833 456707 LT +290833 457759 LT +291577 458503 LT +292629 458503 LT +306074 445058 LT +CP BF QS +NP +318774 444006 MT +318030 443262 LT +304278 443262 LT +303534 444006 LT +303534 445058 LT +304278 445802 LT +318030 445802 LT +318774 445058 LT +CP BF QS +NP +331474 431305 MT +330730 430561 LT +329678 430561 LT +329306 430933 LT +316234 444006 LT +316234 445058 LT +316978 445802 LT +318030 445802 LT +318402 445430 LT +331474 432357 LT +CP BF QS +NP +369574 431305 MT +368830 430561 LT +329678 430561 LT +328934 431305 LT +328934 432357 LT +329678 433101 LT +368830 433101 LT +369574 432357 LT +CP BF QS +NP +369574 342399 MT +368830 341655 LT +367778 341655 LT +367034 342399 LT +367034 432357 LT +367778 433101 LT +368830 433101 LT +369574 432357 LT +CP BF QS +NP +407675 304296 MT +406931 303552 LT +405879 303552 LT +405507 303924 LT +367034 342399 LT +367034 343451 LT +367778 344195 LT +368830 344195 LT +369202 343823 LT +407675 305348 LT +CP BF QS +NP +331474 482109 MT +330730 481365 LT +329678 481365 LT +328934 482109 LT +328934 495861 LT +329678 496605 LT +330730 496605 LT +331474 495861 LT +CP BF QS +NP +51699 418232 MT +51327 417860 LT +50275 417860 LT +49531 418604 LT +49531 419656 LT +62603 432729 LT +62975 433101 LT +64027 433101 LT +64771 432357 LT +64771 431305 LT +CP BF QS +NP +293373 431305 MT +292629 430561 LT +62975 430561 LT +62231 431305 LT +62231 432357 LT +62975 433101 LT +292629 433101 LT +293373 432357 LT +CP BF QS +NP +293373 367800 MT +292629 367056 LT +291577 367056 LT +290833 367800 LT +290833 432357 LT +291577 433101 LT +292629 433101 LT +293373 432357 LT +CP BF QS +NP +382274 278894 MT +381530 278150 LT +380478 278150 LT +380106 278522 LT +290833 367800 LT +290833 368852 LT +291577 369596 LT +292629 369596 LT +293001 369224 LT +382274 279946 LT +CP BF QS +NP +382274 266193 MT +381530 265449 LT +380478 265449 LT +379734 266193 LT +379734 279946 LT +380478 280690 LT +381530 280690 LT +382274 279946 LT +CP BF QS +NP +394975 253492 MT +394231 252748 LT +393179 252748 LT +379734 266193 LT +379734 267245 LT +380478 267989 LT +381530 267989 LT +394975 254544 LT +CP BF QS +NP +407675 253492 MT +406931 252748 LT +393179 252748 LT +392435 253492 LT +392435 254544 LT +393179 255288 LT +406931 255288 LT +407675 254544 LT +CP BF QS +NP +52071 405903 MT +51327 405159 LT +50275 405159 LT +49531 405903 LT +49531 419656 LT +50275 420400 LT +51327 420400 LT +52071 419656 LT +CP BF QS +NP +306074 431305 MT +305330 430561 LT +304278 430561 LT +303906 430933 LT +278133 456707 LT +278133 457759 LT +278877 458503 LT +279929 458503 LT +280301 458131 LT +306074 432357 LT +CP BF QS +NP +318774 431305 MT +318030 430561 LT +304278 430561 LT +303534 431305 LT +303534 432357 LT +304278 433101 LT +318030 433101 LT +318774 432357 LT +CP BF QS +NP +318774 355099 MT +318030 354355 LT +316978 354355 LT +316234 355099 LT +316234 432357 LT +316978 433101 LT +318030 433101 LT +318774 432357 LT +CP BF QS +NP +394975 278894 MT +394231 278150 LT +393179 278150 LT +392807 278522 LT +316234 355099 LT +316234 356151 LT +316978 356895 LT +318030 356895 LT +318402 356523 LT +394975 279946 LT +CP BF QS +NP +394975 266193 MT +394231 265449 LT +393179 265449 LT +392435 266193 LT +392435 279946 LT +393179 280690 LT +394231 280690 LT +394975 279946 LT +CP BF QS +NP +420375 266193 MT +419631 265449 LT +393179 265449 LT +392435 266193 LT +392435 267245 LT +393179 267989 LT +419631 267989 LT +420375 267245 LT +CP BF QS +NP +420375 240791 MT +419631 240047 LT +418579 240047 LT +417835 240791 LT +417835 267245 LT +418579 267989 LT +419631 267989 LT +420375 267245 LT +CP BF QS +NP +407303 227718 MT +406931 227346 LT +405879 227346 LT +405135 228090 LT +405135 229142 LT +418207 242215 LT +418579 242587 LT +419631 242587 LT +420375 241843 LT +420375 240791 LT +CP BF QS +NP +280673 456707 MT +279929 455963 LT +278877 455963 LT +278133 456707 LT +278133 483161 LT +278877 483905 LT +279929 483905 LT +280673 483161 LT +CP BF QS +NP +331474 444006 MT +330730 443262 LT +329678 443262 LT +329306 443634 LT +303534 469408 LT +303534 470460 LT +304278 471204 LT +305330 471204 LT +305702 470832 LT +331474 445058 LT +CP BF QS +NP +382274 444006 MT +381530 443262 LT +329678 443262 LT +328934 444006 LT +328934 445058 LT +329678 445802 LT +381530 445802 LT +382274 445058 LT +CP BF QS +NP +420375 405903 MT +419631 405159 LT +418579 405159 LT +418207 405531 LT +379734 444006 LT +379734 445058 LT +380478 445802 LT +381530 445802 LT +381902 445430 LT +420375 406955 LT +CP BF QS +NP +420375 291595 MT +419631 290851 LT +418579 290851 LT +417835 291595 LT +417835 406955 LT +418579 407699 LT +419631 407699 LT +420375 406955 LT +CP BF QS +NP +445775 291595 MT +445031 290851 LT +418579 290851 LT +417835 291595 LT +417835 292647 LT +418579 293391 LT +445031 293391 LT +445775 292647 LT +CP BF QS +NP +445775 189988 MT +445031 189244 LT +443979 189244 LT +443235 189988 LT +443235 292647 LT +443979 293391 LT +445031 293391 LT +445775 292647 LT +CP BF QS +NP +445775 189988 MT +445031 189244 LT +418579 189244 LT +417835 189988 LT +417835 191040 LT +418579 191784 LT +445031 191784 LT +445775 191040 LT +CP BF QS +NP +420375 189988 MT +419631 189244 LT +418579 189244 LT +418207 189616 LT +405135 202689 LT +405135 203741 LT +405879 204485 LT +406931 204485 LT +407303 204113 LT +420375 191040 LT +CP BF QS +NP +306074 469408 MT +305330 468664 LT +304278 468664 LT +303534 469408 LT +303534 483161 LT +304278 483905 LT +305330 483905 LT +306074 483161 LT +CP BF QS +NP +77471 215389 MT +76727 214645 LT +75675 214645 LT +74931 215389 LT +74931 267245 LT +75675 267989 LT +76727 267989 LT +77471 267245 LT +CP BF QS +NP +128271 50278 MT +127527 49534 LT +126475 49534 LT +125731 50278 LT +125731 114834 LT +126475 115578 LT +127527 115578 LT +128271 114834 LT +CP BF QS +NP +433075 113782 MT +432331 113038 LT +316978 113038 LT +316234 113782 LT +316234 114834 LT +316978 115578 LT +432331 115578 LT +433075 114834 LT +CP BF QS +NP +242201 37205 MT +241829 36833 LT +240777 36833 LT +240033 37577 LT +240033 38629 LT +316606 115206 LT +316978 115578 LT +318030 115578 LT +318774 114834 LT +318774 113782 LT +CP BF QS +NP +242573 37577 MT +241829 36833 LT +139176 36833 LT +138432 37577 LT +138432 38629 LT +139176 39373 LT +241829 39373 LT +242573 38629 LT +CP BF QS +NP +140972 37577 MT +140228 36833 LT +139176 36833 LT +125731 50278 LT +125731 51330 LT +126475 52074 LT +127527 52074 LT +140972 38629 LT +CP BF QS +NP +433075 109972 MT +432331 109228 LT +431279 109228 LT +430535 109972 LT +430535 114834 LT +431279 115578 LT +432331 115578 LT +433075 114834 LT +CP BF QS +NP +77471 151885 MT +76727 151141 LT +75675 151141 LT +74931 151885 LT +74931 216441 LT +75675 217185 LT +76727 217185 LT +77471 216441 LT +CP BF QS +NP +115571 113782 MT +114827 113038 LT +113775 113038 LT +113403 113410 LT +74931 151885 LT +74931 152937 LT +75675 153681 LT +76727 153681 LT +77099 153309 LT +115571 114834 LT +CP BF QS +NP +128271 113782 MT +127527 113038 LT +113775 113038 LT +113031 113782 LT +113031 114834 LT +113775 115578 LT +127527 115578 LT +128271 114834 LT +CP BF QS +NP +128271 164586 MT +127527 163842 LT +126475 163842 LT +125731 164586 LT +125731 267245 LT +126475 267989 LT +127527 267989 LT +128271 267245 LT +CP BF QS +NP +433075 88380 MT +432331 87636 LT +304278 87636 LT +303534 88380 LT +303534 89432 LT +304278 90176 LT +432331 90176 LT +433075 89432 LT +CP BF QS +NP +242201 24504 MT +241829 24132 LT +240777 24132 LT +240033 24876 LT +240033 25928 LT +303906 89804 LT +304278 90176 LT +305330 90176 LT +306074 89432 LT +306074 88380 LT +CP BF QS +NP +242573 24876 MT +241829 24132 LT +126475 24132 LT +125731 24876 LT +125731 25928 LT +126475 26672 LT +241829 26672 LT +242573 25928 LT +CP BF QS +NP +128271 24876 MT +127527 24132 LT +126475 24132 LT +126103 24504 LT +62231 88380 LT +62231 89432 LT +62975 90176 LT +64027 90176 LT +64399 89804 LT +128271 25928 LT +CP BF QS +NP +64771 88380 MT +64027 87636 LT +62975 87636 LT +62231 88380 LT +62231 279946 LT +62975 280690 LT +64027 280690 LT +64771 279946 LT +CP BF QS +NP +115571 278894 MT +114827 278150 LT +62975 278150 LT +62231 278894 LT +62231 279946 LT +62975 280690 LT +114827 280690 LT +115571 279946 LT +CP BF QS +NP +128271 266193 MT +127527 265449 LT +126475 265449 LT +126103 265821 LT +113031 278894 LT +113031 279946 LT +113775 280690 LT +114827 280690 LT +115199 280318 LT +128271 267245 LT +CP BF QS +NP +433075 88380 MT +432331 87636 LT +431279 87636 LT +430535 88380 LT +430535 91126 LT +431279 91870 LT +432331 91870 LT +433075 91126 LT +CP BF QS +NP +255273 215389 MT +254529 214645 LT +202676 214645 LT +201932 215389 LT +201932 216441 LT +202676 217185 LT +254529 217185 LT +255273 216441 LT +CP BF QS +NP +204472 215389 MT +203728 214645 LT +177276 214645 LT +176532 215389 LT +176532 216441 LT +177276 217185 LT +203728 217185 LT +204472 216441 LT +CP BF QS +NP +280673 189988 MT +279929 189244 LT +278877 189244 LT +278505 189616 LT +252733 215389 LT +252733 216441 LT +253477 217185 LT +254529 217185 LT +254901 216813 LT +280673 191040 LT +CP BF QS +NP +204472 215389 MT +203728 214645 LT +202676 214645 LT +201932 215389 LT +201932 318049 LT +202676 318793 LT +203728 318793 LT +204472 318049 LT +CP BF QS +NP +204472 316997 MT +203728 316253 LT +202676 316253 LT +201932 316997 LT +201932 406955 LT +202676 407699 LT +203728 407699 LT +204472 406955 LT +CP BF QS +NP +280673 139184 MT +279929 138440 LT +278877 138440 LT +278133 139184 LT +278133 191040 LT +278877 191784 LT +279929 191784 LT +280673 191040 LT +CP BF QS +NP +433075 304296 MT +432331 303552 LT +431279 303552 LT +430535 304296 LT +430535 406955 LT +431279 407699 LT +432331 407699 LT +433075 406955 LT +CP BF QS +NP +433075 405903 MT +432331 405159 LT +431279 405159 LT +430907 405531 LT +417835 418604 LT +417835 419656 LT +418579 420400 LT +419631 420400 LT +420003 420028 LT +433075 406955 LT +CP BF QS +NP +420375 418604 MT +419631 417860 LT +418579 417860 LT +417835 418604 LT +417835 445058 LT +418579 445802 LT +419631 445802 LT +420375 445058 LT +CP BF QS +NP +420003 443634 MT +419631 443262 LT +418579 443262 LT +417835 444006 LT +417835 445058 LT +430907 458131 LT +431279 458503 LT +432331 458503 LT +433075 457759 LT +433075 456707 LT +CP BF QS +NP +445775 456707 MT +445031 455963 LT +431279 455963 LT +430535 456707 LT +430535 457759 LT +431279 458503 LT +445031 458503 LT +445775 457759 LT +CP BF QS +NP +458475 113782 MT +457731 113038 LT +456679 113038 LT +455935 113782 LT +455935 178339 LT +456679 179083 LT +457731 179083 LT +458475 178339 LT +CP BF QS +NP +471176 189988 MT +457731 176543 LT +456679 176543 LT +455935 177287 LT +455935 178339 LT +469380 191784 LT +470432 191784 LT +471176 191040 LT +CP BF QS +NP +471176 189988 MT +470432 189244 LT +469380 189244 LT +468636 189988 LT +468636 445058 LT +469380 445802 LT +470432 445802 LT +471176 445058 LT +CP BF QS +NP +471176 444006 MT +470432 443262 LT +469380 443262 LT +455935 456707 LT +455935 457759 LT +456679 458503 LT +457731 458503 LT +471176 445058 LT +CP BF QS +NP +458475 109972 MT +457731 109228 LT +456679 109228 LT +455935 109972 LT +455935 114834 LT +456679 115578 LT +457731 115578 LT +458475 114834 LT +CP BF QS +NP +458475 456707 MT +457731 455963 LT +443979 455963 LT +443235 456707 LT +443235 457759 LT +443979 458503 LT +457731 458503 LT +458475 457759 LT +CP BF QS +NP +204472 316997 MT +203728 316253 LT +101075 316253 LT +100331 316997 LT +100331 318049 LT +101075 318793 LT +203728 318793 LT +204472 318049 LT +CP BF QS +NP +102871 316997 MT +102127 316253 LT +101075 316253 LT +100703 316625 LT +36830 380501 LT +36830 381553 LT +37574 382297 LT +38626 382297 LT +38998 381925 LT +102871 318049 LT +CP BF QS +NP +39370 380501 MT +38626 379757 LT +37574 379757 LT +36830 380501 LT +36830 508562 LT +37574 509306 LT +38626 509306 LT +39370 508562 LT +CP BF QS +NP +38998 507138 MT +38626 506766 LT +37574 506766 LT +36830 507510 LT +36830 508562 LT +62603 534336 LT +62975 534708 LT +64027 534708 LT +64771 533964 LT +64771 532912 LT +CP BF QS +NP +433075 532912 MT +432331 532168 LT +62975 532168 LT +62231 532912 LT +62231 533964 LT +62975 534708 LT +432331 534708 LT +433075 533964 LT +CP BF QS +NP +471176 494809 MT +470432 494065 LT +469380 494065 LT +469008 494437 LT +430535 532912 LT +430535 533964 LT +431279 534708 LT +432331 534708 LT +432703 534336 LT +471176 495861 LT +CP BF QS +NP +471176 444006 MT +470432 443262 LT +469380 443262 LT +468636 444006 LT +468636 495861 LT +469380 496605 LT +470432 496605 LT +471176 495861 LT +CP BF QS +NP +77471 367800 MT +76727 367056 LT +75675 367056 LT +74931 367800 LT +74931 406955 LT +75675 407699 LT +76727 407699 LT +77471 406955 LT +CP BF QS +NP +178700 494437 MT +178328 494065 LT +177276 494065 LT +176532 494809 LT +176532 495861 LT +202304 521635 LT +202676 522007 LT +203728 522007 LT +204472 521263 LT +204472 520211 LT +CP BF QS +NP +394975 520211 MT +394231 519467 LT +202676 519467 LT +201932 520211 LT +201932 521263 LT +202676 522007 LT +394231 522007 LT +394975 521263 LT +CP BF QS +NP +433075 482109 MT +432331 481365 LT +431279 481365 LT +430907 481737 LT +392435 520211 LT +392435 521263 LT +393179 522007 LT +394231 522007 LT +394603 521635 LT +433075 483161 LT +CP BF QS +NP +179072 482109 MT +178328 481365 LT +177276 481365 LT +176532 482109 LT +176532 495861 LT +177276 496605 LT +178328 496605 LT +179072 495861 LT +CP BF QS +NP +445775 482109 MT +445031 481365 LT +431279 481365 LT +430535 482109 LT +430535 483161 LT +431279 483905 LT +445031 483905 LT +445775 483161 LT +CP BF QS +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +53535 419608 MT +57404 415739 LT +57404 397061 LT +53535 393192 LT +48065 393192 LT +44196 397061 LT +44196 415739 LT +48065 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +46736 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +78935 419608 MT +82804 415739 LT +82804 397061 LT +78935 393192 LT +73465 393192 LT +69596 397061 LT +69596 415739 LT +73465 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +104335 419608 MT +108204 415739 LT +108204 397061 LT +104335 393192 LT +98865 393192 LT +94996 397061 LT +94996 415739 LT +98865 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +97536 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +129735 419608 MT +133604 415739 LT +133604 397061 LT +129735 393192 LT +124265 393192 LT +120396 397061 LT +120396 415739 LT +124265 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +155135 419608 MT +159004 415739 LT +159004 397061 LT +155135 393192 LT +149665 393192 LT +145796 397061 LT +145796 415739 LT +149665 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +148336 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +180535 419608 MT +184404 415739 LT +184404 397061 LT +180535 393192 LT +175065 393192 LT +171196 397061 LT +171196 415739 LT +175065 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +173736 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +205935 419608 MT +209804 415739 LT +209804 397061 LT +205935 393192 LT +200465 393192 LT +196596 397061 LT +196596 415739 LT +200465 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +199136 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +231335 419608 MT +235204 415739 LT +235204 397061 LT +231335 393192 LT +225865 393192 LT +221996 397061 LT +221996 415739 LT +225865 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +256735 419608 MT +260604 415739 LT +260604 397061 LT +256735 393192 LT +251265 393192 LT +247396 397061 LT +247396 415739 LT +251265 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +282135 419608 MT +286004 415739 LT +286004 397061 LT +282135 393192 LT +276665 393192 LT +272796 397061 LT +272796 415739 LT +276665 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +307535 419608 MT +311404 415739 LT +311404 397061 LT +307535 393192 LT +302065 393192 LT +298196 397061 LT +298196 415739 LT +302065 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +332935 419608 MT +336804 415739 LT +336804 397061 LT +332935 393192 LT +327465 393192 LT +323596 397061 LT +323596 415739 LT +327465 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +326136 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +358335 419608 MT +362204 415739 LT +362204 397061 LT +358335 393192 LT +352865 393192 LT +348996 397061 LT +348996 415739 LT +352865 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +351536 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +383735 419608 MT +387604 415739 LT +387604 397061 LT +383735 393192 LT +378265 393192 LT +374396 397061 LT +374396 415739 LT +378265 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +376936 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +383735 495808 MT +387604 491939 LT +387604 473261 LT +383735 469392 LT +378265 469392 LT +374396 473261 LT +374396 491939 LT +378265 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +376936 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +358335 495808 MT +362204 491939 LT +362204 473261 LT +358335 469392 LT +352865 469392 LT +348996 473261 LT +348996 491939 LT +352865 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +351536 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +332935 495808 MT +336804 491939 LT +336804 473261 LT +332935 469392 LT +327465 469392 LT +323596 473261 LT +323596 491939 LT +327465 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +326136 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +307535 495808 MT +311404 491939 LT +311404 473261 LT +307535 469392 LT +302065 469392 LT +298196 473261 LT +298196 491939 LT +302065 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +282135 495808 MT +286004 491939 LT +286004 473261 LT +282135 469392 LT +276665 469392 LT +272796 473261 LT +272796 491939 LT +276665 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +256735 495808 MT +260604 491939 LT +260604 473261 LT +256735 469392 LT +251265 469392 LT +247396 473261 LT +247396 491939 LT +251265 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +231335 495808 MT +235204 491939 LT +235204 473261 LT +231335 469392 LT +225865 469392 LT +221996 473261 LT +221996 491939 LT +225865 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +205935 495808 MT +209804 491939 LT +209804 473261 LT +205935 469392 LT +200465 469392 LT +196596 473261 LT +196596 491939 LT +200465 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +199136 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +180535 495808 MT +184404 491939 LT +184404 473261 LT +180535 469392 LT +175065 469392 LT +171196 473261 LT +171196 491939 LT +175065 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +173736 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +155135 495808 MT +159004 491939 LT +159004 473261 LT +155135 469392 LT +149665 469392 LT +145796 473261 LT +145796 491939 LT +149665 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +148336 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +129735 495808 MT +133604 491939 LT +133604 473261 LT +129735 469392 LT +124265 469392 LT +120396 473261 LT +120396 491939 LT +124265 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +104335 495808 MT +108204 491939 LT +108204 473261 LT +104335 469392 LT +98865 469392 LT +94996 473261 LT +94996 491939 LT +98865 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +97536 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +78935 495808 MT +82804 491939 LT +82804 473261 LT +78935 469392 LT +73465 469392 LT +69596 473261 LT +69596 491939 LT +73465 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +53535 495808 MT +57404 491939 LT +57404 473261 LT +53535 469392 LT +48065 469392 LT +44196 473261 LT +44196 491939 LT +48065 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +46736 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +82804 365565 MT +78935 361696 LT +73465 361696 LT +69596 365565 LT +69596 371035 LT +73465 374904 LT +78935 374904 LT +82804 371035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 364236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +82804 263965 MT +78935 260096 LT +73465 260096 LT +69596 263965 LT +69596 269435 LT +73465 273304 LT +78935 273304 LT +82804 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +133604 365565 MT +129735 361696 LT +124265 361696 LT +120396 365565 LT +120396 371035 LT +124265 374904 LT +129735 374904 LT +133604 371035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 364236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +133604 263965 MT +129735 260096 LT +124265 260096 LT +120396 263965 LT +120396 269435 LT +124265 273304 LT +129735 273304 LT +133604 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +464290 107581 MT +460019 103310 LT +453981 103310 LT +449710 107581 LT +449710 113619 LT +453981 117890 LT +460019 117890 LT +464290 113619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +452250 105850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +439290 107581 MT +435019 103310 LT +428981 103310 LT +424710 107581 LT +424710 113619 LT +428981 117890 LT +435019 117890 LT +439290 113619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427250 105850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +439290 87581 MT +435019 83310 LT +428981 83310 LT +424710 87581 LT +424710 93619 LT +428981 97890 LT +435019 97890 LT +439290 93619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427250 85850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +464290 87581 MT +460019 83310 LT +453981 83310 LT +449710 87581 LT +449710 93619 LT +453981 97890 LT +460019 97890 LT +464290 93619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +452250 85850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +298196 323596 13209 13209 E +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 326136 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +247396 323596 13209 13209 E +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 326136 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +260604 238565 MT +256735 234696 LT +251265 234696 LT +247396 238565 LT +247396 244035 LT +251265 247904 LT +256735 247904 LT +260604 244035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 237236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +260604 263965 MT +256735 260096 LT +251265 260096 LT +247396 263965 LT +247396 269435 LT +251265 273304 LT +256735 273304 LT +260604 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +311404 238565 MT +307535 234696 LT +302065 234696 LT +298196 238565 LT +298196 244035 LT +302065 247904 LT +307535 247904 LT +311404 244035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 237236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +311404 263965 MT +307535 260096 LT +302065 260096 LT +298196 263965 LT +298196 269435 LT +302065 273304 LT +307535 273304 LT +311404 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 301855 MT +409345 297688 LT +403455 297688 LT +399288 301855 LT +399288 307745 LT +403455 311912 LT +409345 311912 LT +413512 307745 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 300228 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 301855 MT +434745 297688 LT +428855 297688 LT +424688 301855 LT +424688 307745 LT +428855 311912 LT +434745 311912 LT +438912 307745 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 300228 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 276455 MT +409345 272288 LT +403455 272288 LT +399288 276455 LT +399288 282345 LT +403455 286512 LT +409345 286512 LT +413512 282345 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 274828 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 276455 MT +434745 272288 LT +428855 272288 LT +424688 276455 LT +424688 282345 LT +428855 286512 LT +434745 286512 LT +438912 282345 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 274828 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 251055 MT +409345 246888 LT +403455 246888 LT +399288 251055 LT +399288 256945 LT +403455 261112 LT +409345 261112 LT +413512 256945 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 249428 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 251055 MT +434745 246888 LT +428855 246888 LT +424688 251055 LT +424688 256945 LT +428855 261112 LT +434745 261112 LT +438912 256945 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 249428 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 225655 MT +409345 221488 LT +403455 221488 LT +399288 225655 LT +399288 231545 LT +403455 235712 LT +409345 235712 LT +413512 231545 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 224028 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 225655 MT +434745 221488 LT +428855 221488 LT +424688 225655 LT +424688 231545 LT +428855 235712 LT +434745 235712 LT +438912 231545 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 224028 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 200255 MT +409345 196088 LT +403455 196088 LT +399288 200255 LT +399288 206145 LT +403455 210312 LT +409345 210312 LT +413512 206145 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 198628 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 200255 MT +434745 196088 LT +428855 196088 LT +424688 200255 LT +424688 206145 LT +428855 210312 LT +434745 210312 LT +438912 206145 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 198628 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +82804 213165 MT +78935 209296 LT +73465 209296 LT +69596 213165 LT +69596 218635 LT +73465 222504 LT +78935 222504 LT +82804 218635 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 211836 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +184404 213165 MT +180535 209296 LT +175065 209296 LT +171196 213165 LT +171196 218635 LT +175065 222504 LT +180535 222504 LT +184404 218635 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +173736 211836 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +235204 48065 MT +231335 44196 LT +225865 44196 LT +221996 48065 LT +221996 53535 LT +225865 57404 LT +231335 57404 LT +235204 53535 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 46736 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +133604 48065 MT +129735 44196 LT +124265 44196 LT +120396 48065 LT +120396 53535 LT +124265 57404 LT +129735 57404 LT +133604 53535 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 46736 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +286004 136965 MT +282135 133096 LT +276665 133096 LT +272796 136965 LT +272796 142435 LT +276665 146304 LT +282135 146304 LT +286004 142435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 135636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +311404 136965 MT +307535 133096 LT +302065 133096 LT +298196 136965 LT +298196 142435 LT +302065 146304 LT +307535 146304 LT +311404 142435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 135636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +312801 187186 MT +308114 182499 LT +301486 182499 LT +296799 187186 LT +296799 193814 LT +301486 198501 LT +308114 198501 LT +312801 193814 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 186436 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +271399 182499 16003 16003 E +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 186436 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +140208 111565 MT +136339 107696 LT +117661 107696 LT +113792 111565 LT +113792 117035 LT +117661 120904 LT +136339 120904 LT +140208 117035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 110236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +241808 111565 MT +237939 107696 LT +219261 107696 LT +215392 111565 LT +215392 117035 LT +219261 120904 LT +237939 120904 LT +241808 117035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 110236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +140208 162365 MT +136339 158496 LT +117661 158496 LT +113792 162365 LT +113792 167835 LT +117661 171704 LT +136339 171704 LT +140208 167835 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 161036 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +241808 162365 MT +237939 158496 LT +219261 158496 LT +215392 162365 LT +215392 167835 LT +219261 171704 LT +237939 171704 LT +241808 167835 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 161036 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +459740 479444 MT +455276 474980 LT +433724 474980 LT +429260 479444 LT +429260 485756 LT +433724 490220 LT +455276 490220 LT +459740 485756 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +439420 477520 10161 10161 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +459740 454044 MT +455276 449580 LT +433724 449580 LT +429260 454044 LT +429260 460356 LT +433724 464820 LT +455276 464820 LT +459740 460356 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +439420 452120 10161 10161 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +459740 428644 MT +455276 424180 LT +433724 424180 LT +429260 428644 LT +429260 434956 LT +433724 439420 LT +455276 439420 LT +459740 434956 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +439420 426720 10161 10161 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +53535 419608 MT +57404 415739 LT +57404 397061 LT +53535 393192 LT +48065 393192 LT +44196 397061 LT +44196 415739 LT +48065 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +46736 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +78935 419608 MT +82804 415739 LT +82804 397061 LT +78935 393192 LT +73465 393192 LT +69596 397061 LT +69596 415739 LT +73465 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +104335 419608 MT +108204 415739 LT +108204 397061 LT +104335 393192 LT +98865 393192 LT +94996 397061 LT +94996 415739 LT +98865 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +97536 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +129735 419608 MT +133604 415739 LT +133604 397061 LT +129735 393192 LT +124265 393192 LT +120396 397061 LT +120396 415739 LT +124265 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +155135 419608 MT +159004 415739 LT +159004 397061 LT +155135 393192 LT +149665 393192 LT +145796 397061 LT +145796 415739 LT +149665 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +148336 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +180535 419608 MT +184404 415739 LT +184404 397061 LT +180535 393192 LT +175065 393192 LT +171196 397061 LT +171196 415739 LT +175065 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +173736 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +205935 419608 MT +209804 415739 LT +209804 397061 LT +205935 393192 LT +200465 393192 LT +196596 397061 LT +196596 415739 LT +200465 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +199136 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +231335 419608 MT +235204 415739 LT +235204 397061 LT +231335 393192 LT +225865 393192 LT +221996 397061 LT +221996 415739 LT +225865 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +256735 419608 MT +260604 415739 LT +260604 397061 LT +256735 393192 LT +251265 393192 LT +247396 397061 LT +247396 415739 LT +251265 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +282135 419608 MT +286004 415739 LT +286004 397061 LT +282135 393192 LT +276665 393192 LT +272796 397061 LT +272796 415739 LT +276665 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +307535 419608 MT +311404 415739 LT +311404 397061 LT +307535 393192 LT +302065 393192 LT +298196 397061 LT +298196 415739 LT +302065 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +332935 419608 MT +336804 415739 LT +336804 397061 LT +332935 393192 LT +327465 393192 LT +323596 397061 LT +323596 415739 LT +327465 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +326136 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +358335 419608 MT +362204 415739 LT +362204 397061 LT +358335 393192 LT +352865 393192 LT +348996 397061 LT +348996 415739 LT +352865 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +351536 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +383735 419608 MT +387604 415739 LT +387604 397061 LT +383735 393192 LT +378265 393192 LT +374396 397061 LT +374396 415739 LT +378265 419608 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +376936 402336 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +383735 495808 MT +387604 491939 LT +387604 473261 LT +383735 469392 LT +378265 469392 LT +374396 473261 LT +374396 491939 LT +378265 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +376936 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +358335 495808 MT +362204 491939 LT +362204 473261 LT +358335 469392 LT +352865 469392 LT +348996 473261 LT +348996 491939 LT +352865 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +351536 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +332935 495808 MT +336804 491939 LT +336804 473261 LT +332935 469392 LT +327465 469392 LT +323596 473261 LT +323596 491939 LT +327465 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +326136 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +307535 495808 MT +311404 491939 LT +311404 473261 LT +307535 469392 LT +302065 469392 LT +298196 473261 LT +298196 491939 LT +302065 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +282135 495808 MT +286004 491939 LT +286004 473261 LT +282135 469392 LT +276665 469392 LT +272796 473261 LT +272796 491939 LT +276665 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +256735 495808 MT +260604 491939 LT +260604 473261 LT +256735 469392 LT +251265 469392 LT +247396 473261 LT +247396 491939 LT +251265 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +231335 495808 MT +235204 491939 LT +235204 473261 LT +231335 469392 LT +225865 469392 LT +221996 473261 LT +221996 491939 LT +225865 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +205935 495808 MT +209804 491939 LT +209804 473261 LT +205935 469392 LT +200465 469392 LT +196596 473261 LT +196596 491939 LT +200465 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +199136 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +180535 495808 MT +184404 491939 LT +184404 473261 LT +180535 469392 LT +175065 469392 LT +171196 473261 LT +171196 491939 LT +175065 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +173736 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +155135 495808 MT +159004 491939 LT +159004 473261 LT +155135 469392 LT +149665 469392 LT +145796 473261 LT +145796 491939 LT +149665 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +148336 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +129735 495808 MT +133604 491939 LT +133604 473261 LT +129735 469392 LT +124265 469392 LT +120396 473261 LT +120396 491939 LT +124265 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +104335 495808 MT +108204 491939 LT +108204 473261 LT +104335 469392 LT +98865 469392 LT +94996 473261 LT +94996 491939 LT +98865 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +97536 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +78935 495808 MT +82804 491939 LT +82804 473261 LT +78935 469392 LT +73465 469392 LT +69596 473261 LT +69596 491939 LT +73465 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +53535 495808 MT +57404 491939 LT +57404 473261 LT +53535 469392 LT +48065 469392 LT +44196 473261 LT +44196 491939 LT +48065 495808 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +46736 478536 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +82804 365565 MT +78935 361696 LT +73465 361696 LT +69596 365565 LT +69596 371035 LT +73465 374904 LT +78935 374904 LT +82804 371035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 364236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +82804 263965 MT +78935 260096 LT +73465 260096 LT +69596 263965 LT +69596 269435 LT +73465 273304 LT +78935 273304 LT +82804 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +133604 365565 MT +129735 361696 LT +124265 361696 LT +120396 365565 LT +120396 371035 LT +124265 374904 LT +129735 374904 LT +133604 371035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 364236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +133604 263965 MT +129735 260096 LT +124265 260096 LT +120396 263965 LT +120396 269435 LT +124265 273304 LT +129735 273304 LT +133604 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +464290 107581 MT +460019 103310 LT +453981 103310 LT +449710 107581 LT +449710 113619 LT +453981 117890 LT +460019 117890 LT +464290 113619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +452250 105850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +439290 107581 MT +435019 103310 LT +428981 103310 LT +424710 107581 LT +424710 113619 LT +428981 117890 LT +435019 117890 LT +439290 113619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427250 105850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +439290 87581 MT +435019 83310 LT +428981 83310 LT +424710 87581 LT +424710 93619 LT +428981 97890 LT +435019 97890 LT +439290 93619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427250 85850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +464290 87581 MT +460019 83310 LT +453981 83310 LT +449710 87581 LT +449710 93619 LT +453981 97890 LT +460019 97890 LT +464290 93619 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +452250 85850 9501 9501 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +298196 323596 13209 13209 E +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 326136 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +247396 323596 13209 13209 E +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 326136 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +260604 238565 MT +256735 234696 LT +251265 234696 LT +247396 238565 LT +247396 244035 LT +251265 247904 LT +256735 247904 LT +260604 244035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 237236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +260604 263965 MT +256735 260096 LT +251265 260096 LT +247396 263965 LT +247396 269435 LT +251265 273304 LT +256735 273304 LT +260604 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +249936 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +311404 238565 MT +307535 234696 LT +302065 234696 LT +298196 238565 LT +298196 244035 LT +302065 247904 LT +307535 247904 LT +311404 244035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 237236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +311404 263965 MT +307535 260096 LT +302065 260096 LT +298196 263965 LT +298196 269435 LT +302065 273304 LT +307535 273304 LT +311404 269435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 262636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 301855 MT +409345 297688 LT +403455 297688 LT +399288 301855 LT +399288 307745 LT +403455 311912 LT +409345 311912 LT +413512 307745 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 300228 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 301855 MT +434745 297688 LT +428855 297688 LT +424688 301855 LT +424688 307745 LT +428855 311912 LT +434745 311912 LT +438912 307745 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 300228 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 276455 MT +409345 272288 LT +403455 272288 LT +399288 276455 LT +399288 282345 LT +403455 286512 LT +409345 286512 LT +413512 282345 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 274828 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 276455 MT +434745 272288 LT +428855 272288 LT +424688 276455 LT +424688 282345 LT +428855 286512 LT +434745 286512 LT +438912 282345 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 274828 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 251055 MT +409345 246888 LT +403455 246888 LT +399288 251055 LT +399288 256945 LT +403455 261112 LT +409345 261112 LT +413512 256945 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 249428 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 251055 MT +434745 246888 LT +428855 246888 LT +424688 251055 LT +424688 256945 LT +428855 261112 LT +434745 261112 LT +438912 256945 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 249428 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 225655 MT +409345 221488 LT +403455 221488 LT +399288 225655 LT +399288 231545 LT +403455 235712 LT +409345 235712 LT +413512 231545 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 224028 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 225655 MT +434745 221488 LT +428855 221488 LT +424688 225655 LT +424688 231545 LT +428855 235712 LT +434745 235712 LT +438912 231545 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 224028 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +413512 200255 MT +409345 196088 LT +403455 196088 LT +399288 200255 LT +399288 206145 LT +403455 210312 LT +409345 210312 LT +413512 206145 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +401828 198628 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +438912 200255 MT +434745 196088 LT +428855 196088 LT +424688 200255 LT +424688 206145 LT +428855 210312 LT +434745 210312 LT +438912 206145 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +427228 198628 9145 9145 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +82804 213165 MT +78935 209296 LT +73465 209296 LT +69596 213165 LT +69596 218635 LT +73465 222504 LT +78935 222504 LT +82804 218635 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +72136 211836 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +184404 213165 MT +180535 209296 LT +175065 209296 LT +171196 213165 LT +171196 218635 LT +175065 222504 LT +180535 222504 LT +184404 218635 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +173736 211836 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +235204 48065 MT +231335 44196 LT +225865 44196 LT +221996 48065 LT +221996 53535 LT +225865 57404 LT +231335 57404 LT +235204 53535 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 46736 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +133604 48065 MT +129735 44196 LT +124265 44196 LT +120396 48065 LT +120396 53535 LT +124265 57404 LT +129735 57404 LT +133604 53535 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 46736 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +286004 136965 MT +282135 133096 LT +276665 133096 LT +272796 136965 LT +272796 142435 LT +276665 146304 LT +282135 146304 LT +286004 142435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 135636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +311404 136965 MT +307535 133096 LT +302065 133096 LT +298196 136965 LT +298196 142435 LT +302065 146304 LT +307535 146304 LT +311404 142435 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 135636 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +312801 187186 MT +308114 182499 LT +301486 182499 LT +296799 187186 LT +296799 193814 LT +301486 198501 LT +308114 198501 LT +312801 193814 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +300736 186436 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +271399 182499 16003 16003 E +1 0 255 d2 1 1 PE +1 255 d2 BR +275336 186436 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +140208 111565 MT +136339 107696 LT +117661 107696 LT +113792 111565 LT +113792 117035 LT +117661 120904 LT +136339 120904 LT +140208 117035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 110236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +241808 111565 MT +237939 107696 LT +219261 107696 LT +215392 111565 LT +215392 117035 LT +219261 120904 LT +237939 120904 LT +241808 117035 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 110236 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +140208 162365 MT +136339 158496 LT +117661 158496 LT +113792 162365 LT +113792 167835 LT +117661 171704 LT +136339 171704 LT +140208 167835 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +122936 161036 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +241808 162365 MT +237939 158496 LT +219261 158496 LT +215392 162365 LT +215392 167835 LT +219261 171704 LT +237939 171704 LT +241808 167835 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +224536 161036 8129 8129 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +459740 479444 MT +455276 474980 LT +433724 474980 LT +429260 479444 LT +429260 485756 LT +433724 490220 LT +455276 490220 LT +459740 485756 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +439420 477520 10161 10161 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +459740 454044 MT +455276 449580 LT +433724 449580 LT +429260 454044 LT +429260 460356 LT +433724 464820 LT +455276 464820 LT +459740 460356 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +439420 452120 10161 10161 E +1 0 0 128 0 1 1 PE +1 0 128 0 BR +NP +459740 428644 MT +455276 424180 LT +433724 424180 LT +429260 428644 LT +429260 434956 LT +433724 439420 LT +455276 439420 LT +459740 434956 LT +CP BF QS +1 0 255 d2 1 1 PE +1 255 d2 BR +439420 426720 10161 10161 E +1 0 0 d2 1 1 PE +1 0 d2 BR +NP +538063 -6350 MT +538063 -6350 LT +-4657 -6350 LT +-4657 -6350 LT +-4657 -6350 LT +-4657 -6350 LT +538063 -6350 LT +538063 -6350 LT +CP BF QS +NP +538063 -6350 MT +538063 -6350 LT +538063 -6350 LT +538063 -6350 LT +538063 565190 LT +538063 565190 LT +538063 565190 LT +538063 565190 LT +CP BF QS +NP +538063 565190 MT +538063 565190 LT +-4657 565190 LT +-4657 565190 LT +-4657 565190 LT +-4657 565190 LT +538063 565190 LT +538063 565190 LT +CP BF QS +NP +-4657 -6350 MT +-4657 -6350 LT +-4657 -6350 LT +-4657 -6350 LT +-4657 565190 LT +-4657 565190 LT +-4657 565190 LT +-4657 565190 LT +CP BF QS +NP +372800 63500 MT +372848 64546 LT +372990 65583 LT +373226 66603 LT +373554 67597 LT +373972 68557 LT +374474 69475 LT +375058 70344 LT +375719 71156 LT +376451 71905 LT +377247 72584 LT +378103 73187 LT +379009 73711 LT +379960 74149 LT +380946 74500 LT +381960 74759 LT +382994 74926 LT +384038 74997 LT +385085 74973 LT +386125 74854 LT +387150 74641 LT +388151 74336 LT +389121 73941 LT +390050 73459 LT +390932 72895 LT +391759 72253 LT +392524 71539 LT +393221 70758 LT +393844 69916 LT +394388 69022 LT +394848 68082 LT +395221 67103 LT +395503 66095 LT +395693 65066 LT +395788 64023 LT +395788 62977 LT +395693 61934 LT +395503 60905 LT +395221 59897 LT +394848 58918 LT +394388 57978 LT +393844 57084 LT +393221 56242 LT +392524 55461 LT +391759 54747 LT +390932 54105 LT +390050 53541 LT +389121 53059 LT +388151 52664 LT +387150 52359 LT +386125 52146 LT +385085 52027 LT +384038 52003 LT +382994 52074 LT +381960 52241 LT +380946 52500 LT +379960 52851 LT +379009 53289 LT +378103 53813 LT +377247 54416 LT +376451 55095 LT +375719 55844 LT +375058 56656 LT +374474 57525 LT +373972 58443 LT +373554 59403 LT +373226 60397 LT +372990 61417 LT +372848 62454 LT +372800 63500 LT +372800 63500 LT +372848 64546 LT +372990 65583 LT +373226 66603 LT +373554 67597 LT +373972 68557 LT +374474 69475 LT +375058 70344 LT +375719 71156 LT +376451 71905 LT +377247 72584 LT +378103 73187 LT +379009 73711 LT +379960 74149 LT +380946 74500 LT +381960 74759 LT +382994 74926 LT +384038 74997 LT +385085 74973 LT +386125 74854 LT +387150 74641 LT +388151 74336 LT +389121 73941 LT +390050 73459 LT +390932 72895 LT +391759 72253 LT +392524 71539 LT +393221 70758 LT +393844 69916 LT +394388 69022 LT +394848 68082 LT +395221 67103 LT +395503 66095 LT +395693 65066 LT +395788 64023 LT +395788 62977 LT +395693 61934 LT +395503 60905 LT +395221 59897 LT +394848 58918 LT +394388 57978 LT +393844 57084 LT +393221 56242 LT +392524 55461 LT +391759 54747 LT +390932 54105 LT +390050 53541 LT +389121 53059 LT +388151 52664 LT +387150 52359 LT +386125 52146 LT +385085 52027 LT +384038 52003 LT +382994 52074 LT +381960 52241 LT +380946 52500 LT +379960 52851 LT +379009 53289 LT +378103 53813 LT +377247 54416 LT +376451 55095 LT +375719 55844 LT +375058 56656 LT +374474 57525 LT +373972 58443 LT +373554 59403 LT +373226 60397 LT +372990 61417 LT +372848 62454 LT +372800 63500 LT +CP BF QS +NP +493200 63500 MT +493248 64546 LT +493390 65583 LT +493626 66603 LT +493954 67597 LT +494372 68557 LT +494874 69475 LT +495458 70344 LT +496119 71156 LT +496851 71905 LT +497647 72584 LT +498503 73187 LT +499409 73711 LT +500360 74149 LT +501346 74500 LT +502360 74759 LT +503394 74926 LT +504438 74997 LT +505485 74973 LT +506525 74854 LT +507550 74641 LT +508551 74336 LT +509521 73941 LT +510450 73459 LT +511332 72895 LT +512159 72253 LT +512924 71539 LT +513621 70758 LT +514244 69916 LT +514788 69022 LT +515248 68082 LT +515621 67103 LT +515903 66095 LT +516093 65066 LT +516188 64023 LT +516188 62977 LT +516093 61934 LT +515903 60905 LT +515621 59897 LT +515248 58918 LT +514788 57978 LT +514244 57084 LT +513621 56242 LT +512924 55461 LT +512159 54747 LT +511332 54105 LT +510450 53541 LT +509521 53059 LT +508551 52664 LT +507550 52359 LT +506525 52146 LT +505485 52027 LT +504438 52003 LT +503394 52074 LT +502360 52241 LT +501346 52500 LT +500360 52851 LT +499409 53289 LT +498503 53813 LT +497647 54416 LT +496851 55095 LT +496119 55844 LT +495458 56656 LT +494874 57525 LT +494372 58443 LT +493954 59403 LT +493626 60397 LT +493390 61417 LT +493248 62454 LT +493200 63500 LT +493200 63500 LT +493248 64546 LT +493390 65583 LT +493626 66603 LT +493954 67597 LT +494372 68557 LT +494874 69475 LT +495458 70344 LT +496119 71156 LT +496851 71905 LT +497647 72584 LT +498503 73187 LT +499409 73711 LT +500360 74149 LT +501346 74500 LT +502360 74759 LT +503394 74926 LT +504438 74997 LT +505485 74973 LT +506525 74854 LT +507550 74641 LT +508551 74336 LT +509521 73941 LT +510450 73459 LT +511332 72895 LT +512159 72253 LT +512924 71539 LT +513621 70758 LT +514244 69916 LT +514788 69022 LT +515248 68082 LT +515621 67103 LT +515903 66095 LT +516093 65066 LT +516188 64023 LT +516188 62977 LT +516093 61934 LT +515903 60905 LT +515621 59897 LT +515248 58918 LT +514788 57978 LT +514244 57084 LT +513621 56242 LT +512924 55461 LT +512159 54747 LT +511332 54105 LT +510450 53541 LT +509521 53059 LT +508551 52664 LT +507550 52359 LT +506525 52146 LT +505485 52027 LT +504438 52003 LT +503394 52074 LT +502360 52241 LT +501346 52500 LT +500360 52851 LT +499409 53289 LT +498503 53813 LT +497647 54416 LT +496851 55095 LT +496119 55844 LT +495458 56656 LT +494874 57525 LT +494372 58443 LT +493954 59403 LT +493626 60397 LT +493390 61417 LT +493248 62454 LT +493200 63500 LT +CP BF QS +1 0 128 d2 1 1 PE +1 128 d2 BR +NP +31326 416240 MT +30830 415744 LT +30130 415744 LT +29634 416240 LT +29634 438531 LT +30130 439027 LT +30830 439027 LT +31326 438531 LT +CP BF QS +NP +30164 437388 MT +29718 437834 LT +29718 438466 LT +30164 438912 LT +30480 438912 LT +31354 438981 LT +33017 439521 LT +34431 440549 LT +35459 441963 LT +35999 443626 LT +35999 445374 LT +35459 447037 LT +34431 448451 LT +33017 449479 LT +31354 450019 LT +30480 450088 LT +30164 450088 LT +29718 450534 LT +29718 451166 LT +30164 451612 LT +30480 451612 LT +31606 451611 LT +33749 450915 LT +35571 449591 LT +36895 447769 LT +37591 445626 LT +37591 443374 LT +36895 441231 LT +35571 439409 LT +33749 438085 LT +31606 437389 LT +30480 437388 LT +CP BF QS +NP +402171 416240 MT +401675 415744 LT +30130 415744 LT +29634 416240 LT +29634 416940 LT +30130 417436 LT +401675 417436 LT +402171 416940 LT +CP BF QS +NP +31326 450532 MT +30830 450036 LT +30130 450036 LT +29634 450532 LT +29634 472824 LT +30130 473320 LT +30830 473320 LT +31326 472824 LT +CP BF QS +NP +402171 472124 MT +401675 471628 LT +30130 471628 LT +29634 472124 LT +29634 472824 LT +30130 473320 LT +401675 473320 LT +402171 472824 LT +CP BF QS +NP +402171 416240 MT +401675 415744 LT +400975 415744 LT +400479 416240 LT +400479 472824 LT +400975 473320 LT +401675 473320 LT +402171 472824 LT +CP BF QS +NP +88392 346394 MT +87946 345948 LT +87314 345948 LT +86868 346394 LT +86868 346710 LT +86834 347057 LT +86568 347698 LT +86078 348188 LT +85437 348454 LT +85090 348488 LT +84774 348488 LT +84328 348934 LT +84328 349566 LT +84774 350012 LT +85090 350012 LT +85747 350011 LT +86960 349509 LT +87889 348580 LT +88391 347367 LT +88392 346710 LT +CP BF QS +NP +67626 350012 MT +68072 349566 LT +68072 348934 LT +67626 348488 LT +67310 348488 LT +66963 348454 LT +66322 348188 LT +65832 347698 LT +65566 347057 LT +65532 346710 LT +65532 346394 LT +65086 345948 LT +64454 345948 LT +64008 346394 LT +64008 346710 LT +64009 347367 LT +64511 348580 LT +65440 349509 LT +66653 350011 LT +67310 350012 LT +CP BF QS +NP +64008 288606 MT +64454 289052 LT +65086 289052 LT +65532 288606 LT +65532 288290 LT +65566 287943 LT +65832 287302 LT +66322 286812 LT +66963 286546 LT +67310 286512 LT +67626 286512 LT +68072 286066 LT +68072 285434 LT +67626 284988 LT +67310 284988 LT +66653 284989 LT +65440 285491 LT +64511 286420 LT +64009 287633 LT +64008 288290 LT +CP BF QS +NP +84774 284988 MT +84328 285434 LT +84328 286066 LT +84774 286512 LT +85090 286512 LT +85437 286546 LT +86078 286812 LT +86568 287302 LT +86834 287943 LT +86868 288290 LT +86868 288606 LT +87314 289052 LT +87946 289052 LT +88392 288606 LT +88392 288290 LT +88391 287633 LT +87889 286420 LT +86960 285491 LT +85747 284989 LT +85090 284988 LT +CP BF QS +NP +85937 348925 MT +85441 348429 LT +66961 348429 LT +66465 348925 LT +66465 349625 LT +66961 350121 LT +85441 350121 LT +85937 349625 LT +CP BF QS +NP +88477 342575 MT +87981 342079 LT +87281 342079 LT +86785 342575 LT +86785 347085 LT +87281 347581 LT +87981 347581 LT +88477 347085 LT +CP BF QS +NP +86959 341056 MT +86711 340808 LT +86011 340808 LT +85515 341304 LT +85515 342004 LT +87033 343523 LT +87281 343771 LT +87981 343771 LT +88477 343275 LT +88477 342575 LT +CP BF QS +NP +65617 342575 MT +65121 342079 LT +64421 342079 LT +63925 342575 LT +63925 347085 LT +64421 347581 LT +65121 347581 LT +65617 347085 LT +CP BF QS +NP +66887 341304 MT +66391 340808 LT +65691 340808 LT +65443 341056 LT +63925 342575 LT +63925 343275 LT +64421 343771 LT +65121 343771 LT +65369 343523 LT +66887 342004 LT +CP BF QS +NP +88477 291771 MT +87981 291275 LT +87281 291275 LT +85515 293041 LT +85515 293741 LT +86011 294237 LT +86711 294237 LT +88477 292471 LT +CP BF QS +NP +87207 293041 MT +86711 292545 LT +86011 292545 LT +85515 293041 LT +85515 342004 LT +86011 342500 LT +86711 342500 LT +87207 342004 LT +CP BF QS +NP +66887 293041 MT +65121 291275 LT +64421 291275 LT +63925 291771 LT +63925 292471 LT +65691 294237 LT +66391 294237 LT +66887 293741 LT +CP BF QS +NP +66887 293041 MT +66391 292545 LT +65691 292545 LT +65195 293041 LT +65195 342004 LT +65691 342500 LT +66391 342500 LT +66887 342004 LT +CP BF QS +NP +88477 287961 MT +87981 287465 LT +87281 287465 LT +86785 287961 LT +86785 292471 LT +87281 292967 LT +87981 292967 LT +88477 292471 LT +CP BF QS +NP +65617 287961 MT +65121 287465 LT +64421 287465 LT +63925 287961 LT +63925 292471 LT +64421 292967 LT +65121 292967 LT +65617 292471 LT +CP BF QS +NP +85937 285420 MT +85441 284924 LT +66961 284924 LT +66465 285420 LT +66465 286120 LT +66961 286616 LT +85441 286616 LT +85937 286120 LT +CP BF QS +73152 277114 6097 8637 R +73152 349250 6097 8637 R +NP +139192 346394 MT +138746 345948 LT +138114 345948 LT +137668 346394 LT +137668 346710 LT +137634 347057 LT +137368 347698 LT +136878 348188 LT +136237 348454 LT +135890 348488 LT +135574 348488 LT +135128 348934 LT +135128 349566 LT +135574 350012 LT +135890 350012 LT +136547 350011 LT +137760 349509 LT +138689 348580 LT +139191 347367 LT +139192 346710 LT +CP BF QS +NP +118426 350012 MT +118872 349566 LT +118872 348934 LT +118426 348488 LT +118110 348488 LT +117763 348454 LT +117122 348188 LT +116632 347698 LT +116366 347057 LT +116332 346710 LT +116332 346394 LT +115886 345948 LT +115254 345948 LT +114808 346394 LT +114808 346710 LT +114809 347367 LT +115311 348580 LT +116240 349509 LT +117453 350011 LT +118110 350012 LT +CP BF QS +NP +114808 288606 MT +115254 289052 LT +115886 289052 LT +116332 288606 LT +116332 288290 LT +116366 287943 LT +116632 287302 LT +117122 286812 LT +117763 286546 LT +118110 286512 LT +118426 286512 LT +118872 286066 LT +118872 285434 LT +118426 284988 LT +118110 284988 LT +117453 284989 LT +116240 285491 LT +115311 286420 LT +114809 287633 LT +114808 288290 LT +CP BF QS +NP +135574 284988 MT +135128 285434 LT +135128 286066 LT +135574 286512 LT +135890 286512 LT +136237 286546 LT +136878 286812 LT +137368 287302 LT +137634 287943 LT +137668 288290 LT +137668 288606 LT +138114 289052 LT +138746 289052 LT +139192 288606 LT +139192 288290 LT +139191 287633 LT +138689 286420 LT +137760 285491 LT +136547 284989 LT +135890 284988 LT +CP BF QS +NP +136738 348925 MT +136242 348429 LT +117761 348429 LT +117265 348925 LT +117265 349625 LT +117761 350121 LT +136242 350121 LT +136738 349625 LT +CP BF QS +NP +139278 342575 MT +138782 342079 LT +138082 342079 LT +137586 342575 LT +137586 347085 LT +138082 347581 LT +138782 347581 LT +139278 347085 LT +CP BF QS +NP +137760 341056 MT +137512 340808 LT +136812 340808 LT +136316 341304 LT +136316 342004 LT +137834 343523 LT +138082 343771 LT +138782 343771 LT +139278 343275 LT +139278 342575 LT +CP BF QS +NP +116417 342575 MT +115921 342079 LT +115221 342079 LT +114725 342575 LT +114725 347085 LT +115221 347581 LT +115921 347581 LT +116417 347085 LT +CP BF QS +NP +117687 341304 MT +117191 340808 LT +116491 340808 LT +116243 341056 LT +114725 342575 LT +114725 343275 LT +115221 343771 LT +115921 343771 LT +116169 343523 LT +117687 342004 LT +CP BF QS +NP +139278 291771 MT +138782 291275 LT +138082 291275 LT +136316 293041 LT +136316 293741 LT +136812 294237 LT +137512 294237 LT +139278 292471 LT +CP BF QS +NP +138008 293041 MT +137512 292545 LT +136812 292545 LT +136316 293041 LT +136316 342004 LT +136812 342500 LT +137512 342500 LT +138008 342004 LT +CP BF QS +NP +117687 293041 MT +115921 291275 LT +115221 291275 LT +114725 291771 LT +114725 292471 LT +116491 294237 LT +117191 294237 LT +117687 293741 LT +CP BF QS +NP +117687 293041 MT +117191 292545 LT +116491 292545 LT +115995 293041 LT +115995 342004 LT +116491 342500 LT +117191 342500 LT +117687 342004 LT +CP BF QS +NP +139278 287961 MT +138782 287465 LT +138082 287465 LT +137586 287961 LT +137586 292471 LT +138082 292967 LT +138782 292967 LT +139278 292471 LT +CP BF QS +NP +116417 287961 MT +115921 287465 LT +115221 287465 LT +114725 287961 LT +114725 292471 LT +115221 292967 LT +115921 292967 LT +116417 292471 LT +CP BF QS +NP +136738 285420 MT +136242 284924 LT +117761 284924 LT +117265 285420 LT +117265 286120 LT +117761 286616 LT +136242 286616 LT +136738 286120 LT +CP BF QS +123952 277114 6097 8637 R +123952 349250 6097 8637 R +NP +386931 -38629 MT +386187 -39373 LT +385135 -39373 LT +384391 -38629 LT +384391 119915 LT +385135 120659 LT +386187 120659 LT +386931 119915 LT +CP BF QS +NP +504619 -38629 MT +503875 -39373 LT +385135 -39373 LT +384391 -38629 LT +384391 -37577 LT +385135 -36833 LT +503875 -36833 LT +504619 -37577 LT +CP BF QS +NP +504619 -38629 MT +503875 -39373 LT +502823 -39373 LT +502079 -38629 LT +502079 119915 LT +502823 120659 LT +503875 120659 LT +504619 119915 LT +CP BF QS +NP +504619 118863 MT +503875 118119 LT +385135 118119 LT +384391 118863 LT +384391 119915 LT +385135 120659 LT +503875 120659 LT +504619 119915 LT +CP BF QS +NP +419900 61054 MT +420724 61126 LT +422273 61690 LT +423536 62749 LT +424360 64177 LT +424646 65800 LT +424360 67423 LT +423536 68851 LT +422273 69910 LT +420724 70474 LT +419900 70546 LT +419900 71054 LT +420826 71054 LT +422568 70420 LT +423987 69229 LT +424913 67625 LT +425235 65800 LT +424913 63975 LT +423987 62371 LT +422567 61180 LT +420826 60546 LT +419900 60546 LT +CP BF QS +NP +419900 51054 MT +420724 51126 LT +422273 51690 LT +423536 52749 LT +424360 54177 LT +424646 55800 LT +424360 57423 LT +423536 58851 LT +422273 59910 LT +420724 60474 LT +419900 60546 LT +419900 61054 LT +420826 61054 LT +422568 60420 LT +423987 59229 LT +424913 57625 LT +425235 55800 LT +424913 53975 LT +423987 52371 LT +422567 51180 LT +420826 50546 LT +419900 50546 LT +CP BF QS +NP +481150 65546 MT +480326 65474 LT +478777 64910 LT +477514 63851 LT +476690 62423 LT +476404 60800 LT +476690 59177 LT +477514 57749 LT +478777 56690 LT +480326 56126 LT +481150 56054 LT +481150 55546 LT +480224 55546 LT +478482 56180 LT +477063 57371 LT +476137 58975 LT +475815 60800 LT +476137 62625 LT +477063 64229 LT +478483 65420 LT +480224 66054 LT +481150 66054 LT +CP BF QS +NP +478650 70546 MT +477378 70463 LT +474920 69804 LT +472717 68532 LT +470918 66733 LT +469646 64530 LT +468987 62072 LT +468987 59528 LT +469646 57070 LT +470918 54867 LT +472717 53068 LT +474920 51796 LT +477378 51137 LT +478650 51054 LT +478650 50546 LT +477300 50546 LT +474692 51245 LT +472354 52595 LT +470445 54504 LT +469095 56842 LT +468396 59450 LT +468396 62150 LT +469095 64758 LT +470445 67096 LT +472354 69005 LT +474692 70355 LT +477300 71054 LT +478650 71054 LT +CP BF QS +NP +486116 65548 MT +484886 65671 LT +482414 65671 LT +481184 65548 LT +481116 66052 LT +482378 66220 LT +484922 66220 LT +486184 66052 LT +CP BF QS +NP +486205 70000 MT +484332 70286 LT +480553 70559 LT +478658 70546 LT +478642 71054 LT +480564 71117 LT +484401 70839 LT +486295 70500 LT +CP BF QS +NP +478649 51054 MT +480535 51138 LT +484257 51759 LT +486069 52291 LT +486231 51810 LT +484399 51191 LT +480585 50555 LT +478651 50546 LT +CP BF QS +NP +461045 58046 MT +460896 58195 LT +460896 58405 LT +461045 58554 LT +461150 58554 LT +462088 58628 LT +463872 59208 LT +465390 60310 LT +466492 61828 LT +467072 63612 LT +467072 65488 LT +466492 67272 LT +465390 68790 LT +463872 69892 LT +462088 70472 LT +461150 70546 LT +461045 70546 LT +460896 70695 LT +460896 70905 LT +461045 71054 LT +461150 71054 LT +462180 71054 LT +464140 70417 LT +465806 69206 LT +467017 67540 LT +467654 65580 LT +467654 63520 LT +467017 61560 LT +465806 59894 LT +464140 58683 LT +462180 58046 LT +461150 58046 LT +CP BF QS +NP +457295 61796 MT +457146 61945 LT +457146 62155 LT +457295 62304 LT +457400 62304 LT +457820 62359 LT +458546 62779 LT +458966 63505 LT +458966 64345 LT +458546 65071 LT +457820 65491 LT +457400 65546 LT +457295 65546 LT +457146 65695 LT +457146 65905 LT +457295 66054 LT +457400 66054 LT +457970 66054 LT +458958 65483 LT +459529 64495 LT +459529 63355 LT +458958 62367 LT +457970 61796 LT +457400 61796 LT +CP BF QS +NP +406404 50505 MT +406280 50381 LT +406106 50381 LT +405982 50505 LT +405982 70577 LT +406106 70701 LT +406280 70701 LT +406404 70577 LT +CP BF QS +NP +412754 50505 MT +412630 50381 LT +406106 50381 LT +405982 50505 LT +405982 50679 LT +406106 50803 LT +412630 50803 LT +412754 50679 LT +CP BF QS +NP +412754 50505 MT +412630 50381 LT +412456 50381 LT +412332 50505 LT +412332 60840 LT +412456 60964 LT +412630 60964 LT +412754 60840 LT +CP BF QS +NP +412754 60666 MT +412630 60542 LT +412456 60542 LT +412332 60666 LT +412332 70577 LT +412456 70701 LT +412630 70701 LT +412754 70577 LT +CP BF QS +NP +412754 70403 MT +412630 70279 LT +406106 70279 LT +405982 70403 LT +405982 70577 LT +406106 70701 LT +412630 70701 LT +412754 70577 LT +CP BF QS +NP +420374 65323 MT +420250 65199 LT +420100 65199 LT +412408 70327 LT +412332 70403 LT +412332 70577 LT +412456 70701 LT +412606 70701 LT +420298 65573 LT +420374 65497 LT +CP BF QS +NP +420374 65323 MT +420295 65244 LT +412602 60542 LT +412456 60542 LT +412332 60666 LT +412332 60840 LT +412411 60919 LT +420104 65621 LT +420250 65621 LT +420374 65497 LT +CP BF QS +NP +420374 55585 MT +420250 55461 LT +420100 55461 LT +412408 60590 LT +412332 60666 LT +412332 60840 LT +412456 60964 LT +412606 60964 LT +420298 55835 LT +420374 55759 LT +CP BF QS +NP +420374 55585 MT +420298 55509 LT +412606 50381 LT +412456 50381 LT +412332 50505 LT +412332 50679 LT +412408 50755 LT +420100 55883 LT +420250 55883 LT +420374 55759 LT +CP BF QS +NP +420374 50505 MT +420250 50381 LT +412456 50381 LT +412332 50505 LT +412332 50679 LT +412456 50803 LT +420250 50803 LT +420374 50679 LT +CP BF QS +NP +420374 70403 MT +420250 70279 LT +412456 70279 LT +412332 70403 LT +412332 70577 LT +412456 70701 LT +420250 70701 LT +420374 70577 LT +CP BF QS +NP +427994 50505 MT +427870 50381 LT +427696 50381 LT +427572 50505 LT +427572 70577 LT +427696 70701 LT +427870 70701 LT +427994 70577 LT +CP BF QS +NP +445351 50505 MT +445227 50381 LT +427696 50381 LT +427572 50505 LT +427572 50679 LT +427696 50803 LT +445227 50803 LT +445351 50679 LT +CP BF QS +NP +445351 50505 MT +445227 50381 LT +445053 50381 LT +444929 50505 LT +444929 55759 LT +445053 55883 LT +445227 55883 LT +445351 55759 LT +CP BF QS +NP +445351 55585 MT +445227 55461 LT +433623 55461 LT +433499 55585 LT +433499 55759 LT +433623 55883 LT +445227 55883 LT +445351 55759 LT +CP BF QS +NP +433921 55585 MT +433797 55461 LT +433623 55461 LT +433499 55585 LT +433499 58300 LT +433623 58424 LT +433797 58424 LT +433921 58300 LT +CP BF QS +NP +445351 58126 MT +445227 58002 LT +433623 58002 LT +433499 58126 LT +433499 58300 LT +433623 58424 LT +445227 58424 LT +445351 58300 LT +CP BF QS +NP +445351 58126 MT +445227 58002 LT +445053 58002 LT +444929 58126 LT +444929 63380 LT +445053 63504 LT +445227 63504 LT +445351 63380 LT +CP BF QS +NP +445351 63206 MT +445227 63082 LT +433623 63082 LT +433499 63206 LT +433499 63380 LT +433623 63504 LT +445227 63504 LT +445351 63380 LT +CP BF QS +NP +433921 63206 MT +433797 63082 LT +433623 63082 LT +433499 63206 LT +433499 65497 LT +433623 65621 LT +433797 65621 LT +433921 65497 LT +CP BF QS +NP +445351 65323 MT +445227 65199 LT +433623 65199 LT +433499 65323 LT +433499 65497 LT +433623 65621 LT +445227 65621 LT +445351 65497 LT +CP BF QS +NP +445351 65323 MT +445227 65199 LT +445053 65199 LT +444929 65323 LT +444929 70577 LT +445053 70701 LT +445227 70701 LT +445351 70577 LT +CP BF QS +NP +445351 70403 MT +445227 70279 LT +427696 70279 LT +427572 70403 LT +427572 70577 LT +427696 70701 LT +445227 70701 LT +445351 70577 LT +CP BF QS +NP +447891 50505 MT +447767 50381 LT +447593 50381 LT +447469 50505 LT +447469 70577 LT +447593 70701 LT +447767 70701 LT +447891 70577 LT +CP BF QS +NP +454241 50505 MT +454117 50381 LT +447593 50381 LT +447469 50505 LT +447469 50679 LT +447593 50803 LT +454117 50803 LT +454241 50679 LT +CP BF QS +NP +454241 50505 MT +454117 50381 LT +453943 50381 LT +453819 50505 LT +453819 58300 LT +453943 58424 LT +454117 58424 LT +454241 58300 LT +CP BF QS +NP +458898 50505 MT +458774 50381 LT +458600 50381 LT +458521 50460 LT +453819 58154 LT +453819 58300 LT +453943 58424 LT +454117 58424 LT +454196 58345 LT +458898 50651 LT +CP BF QS +NP +466518 50505 MT +466394 50381 LT +458600 50381 LT +458476 50505 LT +458476 50679 LT +458600 50803 LT +466394 50803 LT +466518 50679 LT +CP BF QS +NP +466518 50505 MT +466394 50381 LT +466220 50381 LT +466144 50457 LT +461016 58150 LT +461016 58300 LT +461140 58424 LT +461314 58424 LT +461390 58348 LT +466518 50655 LT +CP BF QS +NP +454241 61936 MT +454117 61812 LT +453943 61812 LT +453819 61936 LT +453819 65497 LT +453943 65621 LT +454117 65621 LT +454241 65497 LT +CP BF QS +NP +461438 70403 MT +461314 70279 LT +447593 70279 LT +447469 70403 LT +447469 70577 LT +447593 70701 LT +461314 70701 LT +461438 70577 LT +CP BF QS +NP +457628 65323 MT +457504 65199 LT +453943 65199 LT +453819 65323 LT +453819 65497 LT +453943 65621 LT +457504 65621 LT +457628 65497 LT +CP BF QS +NP +457628 61936 MT +457504 61812 LT +453943 61812 LT +453819 61936 LT +453819 62110 LT +453943 62234 LT +457504 62234 LT +457628 62110 LT +CP BF QS +NP +486415 60666 MT +486291 60542 LT +481460 60542 LT +481336 60666 LT +481336 60840 LT +481460 60964 LT +486291 60964 LT +486415 60840 LT +CP BF QS +NP +481758 55585 MT +481634 55461 LT +481460 55461 LT +481336 55585 LT +481336 60840 LT +481460 60964 LT +481634 60964 LT +481758 60840 LT +CP BF QS +NP +486415 65323 MT +486291 65199 LT +486117 65199 LT +485993 65323 LT +485993 70154 LT +486117 70278 LT +486291 70278 LT +486415 70154 LT +CP BF QS +NP +486415 51775 MT +486291 51651 LT +486117 51651 LT +485993 51775 LT +485993 60840 LT +486117 60964 LT +486291 60964 LT +486415 60840 LT +CP BF QS +[1 0 0 1 3841.99 2998.2]ST +F2 F +0 Y<0014000300150003001400030016000300170003000400030018000300190003001A000300160003000A>139 0 AT +[0.00236218 0 -0 -0.00236204 2882 3100]ST +NP +230719 310296 MT +229479 309056 LT +227727 309056 LT +226487 310296 LT +226487 350151 LT +227727 351391 LT +229479 351391 LT +230719 350151 LT +CP BF QS +NP +332320 310296 MT +331080 309056 LT +329328 309056 LT +328088 310296 LT +328088 350151 LT +329328 351391 LT +331080 351391 LT +332320 350151 LT +CP BF QS +NP +325970 303946 MT +324730 302706 LT +234077 302706 LT +232837 303946 LT +232837 305698 LT +234077 306938 LT +324730 306938 LT +325970 305698 LT +CP BF QS +NP +325970 354749 MT +324730 353509 LT +234077 353509 LT +232837 354749 LT +232837 356501 LT +234077 357741 LT +324730 357741 LT +325970 356501 LT +CP BF QS +NP +235792 357632 MT +236982 356442 LT +236982 354758 LT +235792 353568 LT +234950 353568 LT +234386 353531 LT +233298 353239 LT +232321 352676 LT +231524 351879 LT +230961 350902 LT +230669 349814 LT +230632 349250 LT +230632 348408 LT +229442 347218 LT +227758 347218 LT +226568 348408 LT +226568 349250 LT +226568 350353 LT +227140 352485 LT +228243 354396 LT +229804 355957 LT +231715 357060 LT +233847 357632 LT +234950 357632 LT +CP BF QS +NP +226568 311992 MT +227758 313182 LT +229442 313182 LT +230632 311992 LT +230632 311150 LT +230669 310586 LT +230961 309498 LT +231524 308521 LT +232321 307724 LT +233298 307161 LT +234386 306869 LT +234950 306832 LT +235792 306832 LT +236982 305642 LT +236982 303958 LT +235792 302768 LT +234950 302768 LT +233847 302768 LT +231715 303340 LT +229804 304443 LT +228243 306004 LT +227140 307915 LT +226568 310047 LT +226568 311150 LT +CP BF QS +NP +323008 302768 MT +321818 303958 LT +321818 305642 LT +323008 306832 LT +323850 306832 LT +324414 306869 LT +325502 307161 LT +326479 307724 LT +327276 308521 LT +327839 309498 LT +328131 310586 LT +328168 311150 LT +328168 311992 LT +329358 313182 LT +331042 313182 LT +332232 311992 LT +332232 311150 LT +332232 310047 LT +331660 307915 LT +330557 306004 LT +328996 304443 LT +327085 303340 LT +324953 302768 LT +323850 302768 LT +CP BF QS +NP +332232 348408 MT +331042 347218 LT +329358 347218 LT +328168 348408 LT +328168 349250 LT +328131 349814 LT +327839 350902 LT +327276 351879 LT +326479 352676 LT +325502 353239 LT +324414 353531 LT +323850 353568 LT +323008 353568 LT +321818 354758 LT +321818 356442 LT +323008 357632 LT +323850 357632 LT +324953 357632 LT +327085 357060 LT +328996 355957 LT +330557 354396 LT +331660 352485 LT +332232 350353 LT +332232 349250 LT +CP BF QS +NP +323430 348925 MT +322934 348429 LT +235873 348429 LT +235377 348925 LT +235377 349625 LT +235873 350121 LT +322934 350121 LT +323430 349625 LT +CP BF QS +NP +237069 348925 MT +235303 347159 LT +234603 347159 LT +234107 347655 LT +234107 348355 LT +235873 350121 LT +236573 350121 LT +237069 349625 LT +CP BF QS +NP +235799 312092 MT +235303 311596 LT +234603 311596 LT +234107 312092 LT +234107 348355 LT +234603 348851 LT +235303 348851 LT +235799 348355 LT +CP BF QS +NP +237069 310822 MT +236573 310326 LT +235873 310326 LT +234107 312092 LT +234107 312792 LT +234603 313288 LT +235303 313288 LT +237069 311522 LT +CP BF QS +NP +323430 310822 MT +322934 310326 LT +235873 310326 LT +235377 310822 LT +235377 311522 LT +235873 312018 LT +322934 312018 LT +323430 311522 LT +CP BF QS +NP +324700 312092 MT +322934 310326 LT +322234 310326 LT +321738 310822 LT +321738 311522 LT +323504 313288 LT +324204 313288 LT +324700 312792 LT +CP BF QS +NP +324700 312092 MT +324204 311596 LT +323504 311596 LT +323008 312092 LT +323008 348355 LT +323504 348851 LT +324204 348851 LT +324700 348355 LT +CP BF QS +NP +324700 347655 MT +324204 347159 LT +323504 347159 LT +321738 348925 LT +321738 349625 LT +322234 350121 LT +322934 350121 LT +324700 348355 LT +CP BF QS +NP +284483 316698 MT +283615 315830 LT +282389 315830 LT +281521 316698 LT +281521 343326 LT +282389 344194 LT +283615 344194 LT +284483 343326 LT +CP BF QS +NP +284483 342100 MT +283615 341232 LT +276039 341232 LT +275171 342100 LT +275171 343326 LT +276039 344194 LT +283615 344194 LT +284483 343326 LT +CP BF QS +NP +278133 316698 MT +277265 315830 LT +276039 315830 LT +275171 316698 LT +275171 343326 LT +276039 344194 LT +277265 344194 LT +278133 343326 LT +CP BF QS +NP +284483 316698 MT +283615 315830 LT +276039 315830 LT +275171 316698 LT +275171 317924 LT +276039 318792 LT +283615 318792 LT +284483 317924 LT +CP BF QS +NP +271783 316698 MT +270915 315830 LT +269689 315830 LT +268821 316698 LT +268821 330625 LT +269689 331493 LT +270915 331493 LT +271783 330625 LT +CP BF QS +NP +290409 316698 MT +289541 315830 LT +288315 315830 LT +287447 316698 LT +287447 330625 LT +288315 331493 LT +289541 331493 LT +290409 330625 LT +CP BF QS +NP +270936 329874 MT +270440 329378 LT +263813 329378 LT +263317 329874 LT +263317 330574 LT +263813 331070 LT +270440 331070 LT +270936 330574 LT +CP BF QS +NP +271783 329399 MT +270915 328531 LT +269689 328531 LT +268821 329399 LT +268821 343326 LT +269689 344194 LT +270915 344194 LT +271783 343326 LT +CP BF QS +NP +295489 329874 MT +294993 329378 LT +288367 329378 LT +287871 329874 LT +287871 330574 LT +288367 331070 LT +294993 331070 LT +295489 330574 LT +CP BF QS +NP +290409 329399 MT +289541 328531 LT +288315 328531 LT +287447 329399 LT +287447 343326 LT +288315 344194 LT +289541 344194 LT +290409 343326 LT +CP BF QS +NP +261199 232077 MT +260703 231581 LT +247303 231581 LT +246807 232077 LT +246807 232777 LT +247303 233273 LT +260703 233273 LT +261199 232777 LT +CP BF QS +NP +241808 237806 MT +242254 238252 LT +242886 238252 LT +243332 237806 LT +243332 237490 LT +243385 236815 LT +243803 235530 LT +244597 234437 LT +245690 233643 LT +246975 233225 LT +247650 233172 LT +247966 233172 LT +248412 232726 LT +248412 232094 LT +247966 231648 LT +247650 231648 LT +246725 231649 LT +244965 232221 LT +243468 233308 LT +242381 234805 LT +241809 236565 LT +241808 237490 LT +CP BF QS +NP +260034 231648 MT +259588 232094 LT +259588 232726 LT +260034 233172 LT +260350 233172 LT +261025 233225 LT +262310 233643 LT +263403 234437 LT +264197 235530 LT +264615 236815 LT +264668 237490 LT +264668 237806 LT +265114 238252 LT +265746 238252 LT +266192 237806 LT +266192 237490 LT +266191 236565 LT +265619 234805 LT +264532 233308 LT +263035 232221 LT +261275 231649 LT +260350 231648 LT +CP BF QS +NP +243419 237157 MT +242923 236661 LT +242223 236661 LT +241727 237157 LT +241727 270879 LT +242223 271375 LT +242923 271375 LT +243419 270879 LT +CP BF QS +NP +261199 275260 MT +260703 274764 LT +247303 274764 LT +246807 275260 LT +246807 275960 LT +247303 276456 LT +260703 276456 LT +261199 275960 LT +CP BF QS +NP +266279 237157 MT +265783 236661 LT +265083 236661 LT +264587 237157 LT +264587 270879 LT +265083 271375 LT +265783 271375 LT +266279 270879 LT +CP BF QS +NP +247966 276352 MT +248412 275906 LT +248412 275274 LT +247966 274828 LT +247650 274828 LT +246975 274775 LT +245690 274357 LT +244597 273563 LT +243803 272470 LT +243385 271185 LT +243332 270510 LT +243332 270194 LT +242886 269748 LT +242254 269748 LT +241808 270194 LT +241808 270510 LT +241809 271435 LT +242381 273195 LT +243468 274692 LT +244965 275779 LT +246725 276351 LT +247650 276352 LT +CP BF QS +NP +266192 270194 MT +265746 269748 LT +265114 269748 LT +264668 270194 LT +264668 270510 LT +264615 271185 LT +264197 272470 LT +263403 273563 LT +262310 274357 LT +261025 274775 LT +260350 274828 LT +260034 274828 LT +259588 275274 LT +259588 275906 LT +260034 276352 LT +260350 276352 LT +261275 276351 LT +263035 275779 LT +264532 274692 LT +265619 273195 LT +266191 271435 LT +266192 270510 LT +CP BF QS +NP +263316 250230 MT +262448 249362 LT +245982 249362 LT +245114 250230 LT +245114 251456 LT +245982 252324 LT +262448 252324 LT +263316 251456 LT +CP BF QS +NP +263316 256580 MT +262448 255712 LT +245982 255712 LT +245114 256580 LT +245114 257806 LT +245982 258674 LT +262448 258674 LT +263316 257806 LT +CP BF QS +NP +312000 232077 MT +311504 231581 LT +298104 231581 LT +297608 232077 LT +297608 232777 LT +298104 233273 LT +311504 233273 LT +312000 232777 LT +CP BF QS +NP +292608 237806 MT +293054 238252 LT +293686 238252 LT +294132 237806 LT +294132 237490 LT +294185 236815 LT +294603 235530 LT +295397 234437 LT +296490 233643 LT +297775 233225 LT +298450 233172 LT +298766 233172 LT +299212 232726 LT +299212 232094 LT +298766 231648 LT +298450 231648 LT +297525 231649 LT +295765 232221 LT +294268 233308 LT +293181 234805 LT +292609 236565 LT +292608 237490 LT +CP BF QS +NP +310834 231648 MT +310388 232094 LT +310388 232726 LT +310834 233172 LT +311150 233172 LT +311825 233225 LT +313110 233643 LT +314203 234437 LT +314997 235530 LT +315415 236815 LT +315468 237490 LT +315468 237806 LT +315914 238252 LT +316546 238252 LT +316992 237806 LT +316992 237490 LT +316991 236565 LT +316419 234805 LT +315332 233308 LT +313835 232221 LT +312075 231649 LT +311150 231648 LT +CP BF QS +NP +294219 237157 MT +293723 236661 LT +293023 236661 LT +292527 237157 LT +292527 270879 LT +293023 271375 LT +293723 271375 LT +294219 270879 LT +CP BF QS +NP +312000 275260 MT +311504 274764 LT +298104 274764 LT +297608 275260 LT +297608 275960 LT +298104 276456 LT +311504 276456 LT +312000 275960 LT +CP BF QS +NP +317080 237157 MT +316584 236661 LT +315884 236661 LT +315388 237157 LT +315388 270879 LT +315884 271375 LT +316584 271375 LT +317080 270879 LT +CP BF QS +NP +298766 276352 MT +299212 275906 LT +299212 275274 LT +298766 274828 LT +298450 274828 LT +297775 274775 LT +296490 274357 LT +295397 273563 LT +294603 272470 LT +294185 271185 LT +294132 270510 LT +294132 270194 LT +293686 269748 LT +293054 269748 LT +292608 270194 LT +292608 270510 LT +292609 271435 LT +293181 273195 LT +294268 274692 LT +295765 275779 LT +297525 276351 LT +298450 276352 LT +CP BF QS +NP +316992 270194 MT +316546 269748 LT +315914 269748 LT +315468 270194 LT +315468 270510 LT +315415 271185 LT +314997 272470 LT +314203 273563 LT +313110 274357 LT +311825 274775 LT +311150 274828 LT +310834 274828 LT +310388 275274 LT +310388 275906 LT +310834 276352 LT +311150 276352 LT +312075 276351 LT +313835 275779 LT +315332 274692 LT +316419 273195 LT +316991 271435 LT +316992 270510 LT +CP BF QS +NP +314116 250230 MT +313248 249362 LT +296782 249362 LT +295914 250230 LT +295914 251456 LT +296782 252324 LT +313248 252324 LT +314116 251456 LT +CP BF QS +NP +314116 256580 MT +313248 255712 LT +296782 255712 LT +295914 256580 LT +295914 257806 LT +296782 258674 LT +313248 258674 LT +314116 257806 LT +CP BF QS +NP +441541 317173 MT +441045 316677 LT +397165 316677 LT +396669 317173 LT +396669 317873 LT +397165 318369 LT +441045 318369 LT +441541 317873 LT +CP BF QS +NP +445351 295581 MT +441045 291275 LT +440345 291275 LT +439849 291771 LT +439849 292471 LT +444155 296777 LT +444855 296777 LT +445351 296281 LT +CP BF QS +NP +445351 287961 MT +444855 287465 LT +444155 287465 LT +439849 291771 LT +439849 292471 LT +440345 292967 LT +441045 292967 LT +445351 288661 LT +CP BF QS +NP +445351 270179 MT +444855 269683 LT +444155 269683 LT +443659 270179 LT +443659 288661 LT +444155 289157 LT +444855 289157 LT +445351 288661 LT +CP BF QS +NP +445351 270179 MT +441045 265873 LT +440345 265873 LT +439849 266369 LT +439849 267069 LT +444155 271375 LT +444855 271375 LT +445351 270879 LT +CP BF QS +NP +445351 262559 MT +444855 262063 LT +444155 262063 LT +439849 266369 LT +439849 267069 LT +440345 267565 LT +441045 267565 LT +445351 263259 LT +CP BF QS +NP +445351 244778 MT +444855 244282 LT +444155 244282 LT +443659 244778 LT +443659 263259 LT +444155 263755 LT +444855 263755 LT +445351 263259 LT +CP BF QS +NP +441293 240719 MT +441045 240471 LT +440345 240471 LT +439849 240967 LT +439849 241667 LT +443907 245726 LT +444155 245974 LT +444855 245974 LT +445351 245478 LT +445351 244778 LT +CP BF QS +NP +398361 240967 MT +397865 240471 LT +397165 240471 LT +396917 240719 LT +392859 244778 LT +392859 245478 LT +393355 245974 LT +394055 245974 LT +394303 245726 LT +398361 241667 LT +CP BF QS +NP +394551 244778 MT +394055 244282 LT +393355 244282 LT +392859 244778 LT +392859 263259 LT +393355 263755 LT +394055 263755 LT +394551 263259 LT +CP BF QS +NP +398361 266369 MT +394055 262063 LT +393355 262063 LT +392859 262559 LT +392859 263259 LT +397165 267565 LT +397865 267565 LT +398361 267069 LT +CP BF QS +NP +398361 266369 MT +397865 265873 LT +397165 265873 LT +392859 270179 LT +392859 270879 LT +393355 271375 LT +394055 271375 LT +398361 267069 LT +CP BF QS +NP +394551 270179 MT +394055 269683 LT +393355 269683 LT +392859 270179 LT +392859 288661 LT +393355 289157 LT +394055 289157 LT +394551 288661 LT +CP BF QS +NP +398361 291771 MT +394055 287465 LT +393355 287465 LT +392859 287961 LT +392859 288661 LT +397165 292967 LT +397865 292967 LT +398361 292471 LT +CP BF QS +NP +398361 291771 MT +397865 291275 LT +397165 291275 LT +392859 295581 LT +392859 296281 LT +393355 296777 LT +394055 296777 LT +398361 292471 LT +CP BF QS +[-0 -1 1 0 3802.99 2381.05]ST +F3 F +0 Y<001B>22 0 AT +[-0 -1 1 0 3802.99 2448.05]ST +0 Y<001C>22 0 AT +[-0 -1 1 0 3802.99 2508.04]ST +0 Y<001D>22 0 AT +[0.00236218 0 -0 -0.00236204 2882 3100]ST +NP +441541 190164 MT +441045 189668 LT +397165 189668 LT +396669 190164 LT +396669 190864 LT +397165 191360 LT +441045 191360 LT +441541 190864 LT +CP BF QS +NP +445351 237157 MT +444855 236661 LT +444155 236661 LT +439849 240967 LT +439849 241667 LT +440345 242163 LT +441045 242163 LT +445351 237857 LT +CP BF QS +NP +445351 219376 MT +444855 218880 LT +444155 218880 LT +443659 219376 LT +443659 237857 LT +444155 238353 LT +444855 238353 LT +445351 237857 LT +CP BF QS +NP +441293 215317 MT +441045 215069 LT +440345 215069 LT +439849 215565 LT +439849 216265 LT +443907 220324 LT +444155 220572 LT +444855 220572 LT +445351 220076 LT +445351 219376 LT +CP BF QS +NP +445351 211755 MT +444855 211259 LT +444155 211259 LT +439849 215565 LT +439849 216265 LT +440345 216761 LT +441045 216761 LT +445351 212455 LT +CP BF QS +NP +445351 193974 MT +444855 193478 LT +444155 193478 LT +443659 193974 LT +443659 212455 LT +444155 212951 LT +444855 212951 LT +445351 212455 LT +CP BF QS +NP +445351 193974 MT +441045 189668 LT +440345 189668 LT +439849 190164 LT +439849 190864 LT +444155 195170 LT +444855 195170 LT +445351 194674 LT +CP BF QS +NP +398361 240967 MT +394055 236661 LT +393355 236661 LT +392859 237157 LT +392859 237857 LT +397165 242163 LT +397865 242163 LT +398361 241667 LT +CP BF QS +NP +394551 219376 MT +394055 218880 LT +393355 218880 LT +392859 219376 LT +392859 237857 LT +393355 238353 LT +394055 238353 LT +394551 237857 LT +CP BF QS +NP +398361 215565 MT +394055 211259 LT +393355 211259 LT +392859 211755 LT +392859 212455 LT +397165 216761 LT +397865 216761 LT +398361 216265 LT +CP BF QS +NP +398361 215565 MT +397865 215069 LT +397165 215069 LT +396917 215317 LT +392859 219376 LT +392859 220076 LT +393355 220572 LT +394055 220572 LT +394303 220324 LT +398361 216265 LT +CP BF QS +NP +394551 193974 MT +394055 193478 LT +393355 193478 LT +392859 193974 LT +392859 212455 LT +393355 212951 LT +394055 212951 LT +394551 212455 LT +CP BF QS +NP +398361 190164 MT +397865 189668 LT +397165 189668 LT +392859 193974 LT +392859 194674 LT +393355 195170 LT +394055 195170 LT +398361 190864 LT +CP BF QS +[-0 -1 1 0 3802.99 2568.04]ST +0 Y<001E>22 0 AT +[-0 -1 1 0 3802.99 2628.04]ST +0 Y<001F>22 0 AT +[0.00236218 0 -0 -0.00236204 2882 3100]ST +NP +394303 313114 MT +394055 312866 LT +393355 312866 LT +392859 313362 LT +392859 314062 LT +396917 318121 LT +397165 318369 LT +397865 318369 LT +398361 317873 LT +398361 317173 LT +CP BF QS +NP +394551 295581 MT +394055 295085 LT +393355 295085 LT +392859 295581 LT +392859 314062 LT +393355 314558 LT +394055 314558 LT +394551 314062 LT +CP BF QS +NP +445351 313362 MT +444855 312866 LT +444155 312866 LT +443907 313114 LT +439849 317173 LT +439849 317873 LT +440345 318369 LT +441045 318369 LT +441293 318121 LT +445351 314062 LT +CP BF QS +NP +445351 295581 MT +444855 295085 LT +444155 295085 LT +443659 295581 LT +443659 314062 LT +444155 314558 LT +444855 314558 LT +445351 314062 LT +CP BF QS +NP +98106 228092 MT +98552 227646 LT +98552 227014 LT +98106 226568 LT +97790 226568 LT +97443 226534 LT +96802 226268 LT +96312 225778 LT +96046 225137 LT +96012 224790 LT +96012 224474 LT +95566 224028 LT +94934 224028 LT +94488 224474 LT +94488 224790 LT +94489 225447 LT +94991 226660 LT +95920 227589 LT +97133 228091 LT +97790 228092 LT +CP BF QS +NP +94488 207326 MT +94934 207772 LT +95566 207772 LT +96012 207326 LT +96012 207010 LT +96046 206663 LT +96312 206022 LT +96802 205532 LT +97443 205266 LT +97790 205232 LT +98106 205232 LT +98552 204786 LT +98552 204154 LT +98106 203708 LT +97790 203708 LT +97133 203709 LT +95920 204211 LT +94991 205140 LT +94489 206353 LT +94488 207010 LT +CP BF QS +NP +155894 203708 MT +155448 204154 LT +155448 204786 LT +155894 205232 LT +156210 205232 LT +156557 205266 LT +157198 205532 LT +157688 206022 LT +157954 206663 LT +157988 207010 LT +157988 207326 LT +158434 207772 LT +159066 207772 LT +159512 207326 LT +159512 207010 LT +159511 206353 LT +159009 205140 LT +158080 204211 LT +156867 203709 LT +156210 203708 LT +CP BF QS +NP +159512 224474 MT +159066 224028 LT +158434 224028 LT +157988 224474 LT +157988 224790 LT +157954 225137 LT +157688 225778 LT +157198 226268 LT +156557 226534 LT +156210 226568 LT +155894 226568 LT +155448 227014 LT +155448 227646 LT +155894 228092 LT +156210 228092 LT +156867 228091 LT +158080 227589 LT +159009 226660 LT +159511 225447 LT +159512 224790 LT +CP BF QS +NP +96097 206675 MT +95601 206179 LT +94901 206179 LT +94405 206675 LT +94405 225156 LT +94901 225652 LT +95601 225652 LT +96097 225156 LT +CP BF QS +NP +102447 226996 MT +101951 226500 LT +97441 226500 LT +96945 226996 LT +96945 227696 LT +97441 228192 LT +101951 228192 LT +102447 227696 LT +CP BF QS +NP +103717 225726 MT +103221 225230 LT +102521 225230 LT +100755 226996 LT +100755 227696 LT +101251 228192 LT +101951 228192 LT +103717 226426 LT +CP BF QS +NP +102447 204135 MT +101951 203639 LT +97441 203639 LT +96945 204135 LT +96945 204835 LT +97441 205331 LT +101951 205331 LT +102447 204835 LT +CP BF QS +NP +103717 205405 MT +101951 203639 LT +101251 203639 LT +100755 204135 LT +100755 204835 LT +102521 206601 LT +103221 206601 LT +103717 206105 LT +CP BF QS +NP +153248 226996 MT +151482 225230 LT +150782 225230 LT +150286 225726 LT +150286 226426 LT +152052 228192 LT +152752 228192 LT +153248 227696 LT +CP BF QS +NP +151978 225726 MT +151482 225230 LT +102521 225230 LT +102025 225726 LT +102025 226426 LT +102521 226922 LT +151482 226922 LT +151978 226426 LT +CP BF QS +NP +153248 204135 MT +152752 203639 LT +152052 203639 LT +150286 205405 LT +150286 206105 LT +150782 206601 LT +151482 206601 LT +153248 204835 LT +CP BF QS +NP +151978 205405 MT +151482 204909 LT +102521 204909 LT +102025 205405 LT +102025 206105 LT +102521 206601 LT +151482 206601 LT +151978 206105 LT +CP BF QS +NP +157058 226996 MT +156562 226500 LT +152052 226500 LT +151556 226996 LT +151556 227696 LT +152052 228192 LT +156562 228192 LT +157058 227696 LT +CP BF QS +NP +157058 204135 MT +156562 203639 LT +152052 203639 LT +151556 204135 LT +151556 204835 LT +152052 205331 LT +156562 205331 LT +157058 204835 LT +CP BF QS +NP +159598 206675 MT +159102 206179 LT +158402 206179 LT +157906 206675 LT +157906 225156 LT +158402 225652 LT +159102 225652 LT +159598 225156 LT +CP BF QS +158750 212852 8637 6097 R +86614 212852 8637 6097 R +NP +206694 38608 MT +206248 39054 LT +206248 39686 LT +206694 40132 LT +207010 40132 LT +207357 40166 LT +207998 40432 LT +208488 40922 LT +208754 41563 LT +208788 41910 LT +208788 42226 LT +209234 42672 LT +209866 42672 LT +210312 42226 LT +210312 41910 LT +210311 41253 LT +209809 40040 LT +208880 39111 LT +207667 38609 LT +207010 38608 LT +CP BF QS +NP +210312 59374 MT +209866 58928 LT +209234 58928 LT +208788 59374 LT +208788 59690 LT +208754 60037 LT +208488 60678 LT +207998 61168 LT +207357 61434 LT +207010 61468 LT +206694 61468 LT +206248 61914 LT +206248 62546 LT +206694 62992 LT +207010 62992 LT +207667 62991 LT +208880 62489 LT +209809 61560 LT +210311 60347 LT +210312 59690 LT +CP BF QS +NP +148906 62992 MT +149352 62546 LT +149352 61914 LT +148906 61468 LT +148590 61468 LT +148243 61434 LT +147602 61168 LT +147112 60678 LT +146846 60037 LT +146812 59690 LT +146812 59374 LT +146366 58928 LT +145734 58928 LT +145288 59374 LT +145288 59690 LT +145289 60347 LT +145791 61560 LT +146720 62489 LT +147933 62991 LT +148590 62992 LT +CP BF QS +NP +145288 42226 MT +145734 42672 LT +146366 42672 LT +146812 42226 LT +146812 41910 LT +146846 41563 LT +147112 40922 LT +147602 40432 LT +148243 40166 LT +148590 40132 LT +148906 40132 LT +149352 39686 LT +149352 39054 LT +148906 38608 LT +148590 38608 LT +147933 38609 LT +146720 39111 LT +145791 40040 LT +145289 41253 LT +145288 41910 LT +CP BF QS +NP +210398 41563 MT +209902 41067 LT +209202 41067 LT +208706 41563 LT +208706 60044 LT +209202 60540 LT +209902 60540 LT +210398 60044 LT +CP BF QS +NP +207858 39023 MT +207362 38527 LT +202852 38527 LT +202356 39023 LT +202356 39723 LT +202852 40219 LT +207362 40219 LT +207858 39723 LT +CP BF QS +NP +204048 39023 MT +203552 38527 LT +202852 38527 LT +201086 40293 LT +201086 40993 LT +201582 41489 LT +202282 41489 LT +204048 39723 LT +CP BF QS +NP +207858 61884 MT +207362 61388 LT +202852 61388 LT +202356 61884 LT +202356 62584 LT +202852 63080 LT +207362 63080 LT +207858 62584 LT +CP BF QS +NP +204048 61884 MT +202282 60118 LT +201582 60118 LT +201086 60614 LT +201086 61314 LT +202852 63080 LT +203552 63080 LT +204048 62584 LT +CP BF QS +NP +154518 40293 MT +152752 38527 LT +152052 38527 LT +151556 39023 LT +151556 39723 LT +153322 41489 LT +154022 41489 LT +154518 40993 LT +CP BF QS +NP +202778 40293 MT +202282 39797 LT +153322 39797 LT +152826 40293 LT +152826 40993 LT +153322 41489 LT +202282 41489 LT +202778 40993 LT +CP BF QS +NP +154518 60614 MT +154022 60118 LT +153322 60118 LT +151556 61884 LT +151556 62584 LT +152052 63080 LT +152752 63080 LT +154518 61314 LT +CP BF QS +NP +202778 60614 MT +202282 60118 LT +153322 60118 LT +152826 60614 LT +152826 61314 LT +153322 61810 LT +202282 61810 LT +202778 61314 LT +CP BF QS +NP +153248 39023 MT +152752 38527 LT +148242 38527 LT +147746 39023 LT +147746 39723 LT +148242 40219 LT +152752 40219 LT +153248 39723 LT +CP BF QS +NP +153248 61884 MT +152752 61388 LT +148242 61388 LT +147746 61884 LT +147746 62584 LT +148242 63080 LT +152752 63080 LT +153248 62584 LT +CP BF QS +NP +146898 41563 MT +146402 41067 LT +145702 41067 LT +145206 41563 LT +145206 60044 LT +145702 60540 LT +146402 60540 LT +146898 60044 LT +CP BF QS +137414 47752 8637 6097 R +209550 47752 8637 6097 R +NP +271359 133010 MT +270863 132514 LT +270163 132514 LT +269667 133010 LT +269667 146410 LT +270163 146906 LT +270863 146906 LT +271359 146410 LT +CP BF QS +NP +275906 151892 MT +276352 151446 LT +276352 150814 LT +275906 150368 LT +275590 150368 LT +274915 150315 LT +273630 149897 LT +272537 149103 LT +271743 148010 LT +271325 146725 LT +271272 146050 LT +271272 145734 LT +270826 145288 LT +270194 145288 LT +269748 145734 LT +269748 146050 LT +269749 146975 LT +270321 148735 LT +271408 150232 LT +272905 151319 LT +274665 151891 LT +275590 151892 LT +CP BF QS +NP +269748 133666 MT +270194 134112 LT +270826 134112 LT +271272 133666 LT +271272 133350 LT +271325 132675 LT +271743 131390 LT +272537 130297 LT +273630 129503 LT +274915 129085 LT +275590 129032 LT +275906 129032 LT +276352 128586 LT +276352 127954 LT +275906 127508 LT +275590 127508 LT +274665 127509 LT +272905 128081 LT +271408 129168 LT +270321 130665 LT +269749 132425 LT +269748 133350 LT +CP BF QS +NP +309460 150791 MT +308964 150295 LT +275243 150295 LT +274747 150791 LT +274747 151491 LT +275243 151987 LT +308964 151987 LT +309460 151491 LT +CP BF QS +NP +314540 133010 MT +314044 132514 LT +313344 132514 LT +312848 133010 LT +312848 146410 LT +313344 146906 LT +314044 146906 LT +314540 146410 LT +CP BF QS +NP +309460 127929 MT +308964 127433 LT +275243 127433 LT +274747 127929 LT +274747 128629 LT +275243 129125 LT +308964 129125 LT +309460 128629 LT +CP BF QS +NP +314452 145734 MT +314006 145288 LT +313374 145288 LT +312928 145734 LT +312928 146050 LT +312875 146725 LT +312457 148010 LT +311663 149103 LT +310570 149897 LT +309285 150315 LT +308610 150368 LT +308294 150368 LT +307848 150814 LT +307848 151446 LT +308294 151892 LT +308610 151892 LT +309535 151891 LT +311295 151319 LT +312792 150232 LT +313879 148735 LT +314451 146975 LT +314452 146050 LT +CP BF QS +NP +308294 127508 MT +307848 127954 LT +307848 128586 LT +308294 129032 LT +308610 129032 LT +309285 129085 LT +310570 129503 LT +311663 130297 LT +312457 131390 LT +312875 132675 LT +312928 133350 LT +312928 133666 LT +313374 134112 LT +314006 134112 LT +314452 133666 LT +314452 133350 LT +314451 132425 LT +313879 130665 LT +312792 129168 LT +311295 128081 LT +309535 127509 LT +308610 127508 LT +CP BF QS +NP +290833 131265 MT +289965 130397 LT +288739 130397 LT +287871 131265 LT +287871 147732 LT +288739 148600 LT +289965 148600 LT +290833 147732 LT +CP BF QS +NP +297183 131265 MT +296315 130397 LT +295089 130397 LT +294221 131265 LT +294221 147732 LT +295089 148600 LT +296315 148600 LT +297183 147732 LT +CP BF QS +NP +278979 202865 MT +278483 202369 LT +275243 202369 LT +274747 202865 LT +274747 203565 LT +275243 204061 LT +278483 204061 LT +278979 203565 LT +CP BF QS +NP +278979 200324 MT +278483 199828 LT +277783 199828 LT +277287 200324 LT +277287 203565 LT +277783 204061 LT +278483 204061 LT +278979 203565 LT +CP BF QS +NP +281519 202865 MT +281023 202369 LT +277783 202369 LT +277287 202865 LT +277287 203565 LT +277783 204061 LT +281023 204061 LT +281519 203565 LT +CP BF QS +NP +278979 202865 MT +278483 202369 LT +277783 202369 LT +277287 202865 LT +277287 206105 LT +277783 206601 LT +278483 206601 LT +278979 206105 LT +CP BF QS +NP +265938 190500 MT +266046 192879 LT +266371 195238 LT +266908 197558 LT +267654 199820 LT +268603 202004 LT +269747 204093 LT +271075 206070 LT +272578 207917 LT +274243 209620 LT +276056 211165 LT +278001 212538 LT +280064 213729 LT +282226 214727 LT +284470 215525 LT +286777 216115 LT +289129 216493 LT +291504 216655 LT +293885 216601 LT +296251 216331 LT +298583 215846 LT +300861 215151 LT +303066 214253 LT +305181 213157 LT +307187 211874 LT +309068 210413 LT +310809 208788 LT +312394 207011 LT +313811 205097 LT +315049 203062 LT +316096 200923 LT +316944 198698 LT +317587 196405 LT +318018 194062 LT +318235 191691 LT +318235 189309 LT +318018 186938 LT +317587 184595 LT +316944 182302 LT +316096 180077 LT +315049 177938 LT +313811 175903 LT +312394 173989 LT +310809 172212 LT +309068 170587 LT +307187 169126 LT +305181 167843 LT +303066 166747 LT +300861 165849 LT +298583 165154 LT +296251 164669 LT +293885 164399 LT +291504 164345 LT +289129 164507 LT +286777 164885 LT +284470 165475 LT +282226 166273 LT +280064 167271 LT +278001 168462 LT +276056 169835 LT +274243 171380 LT +272578 173083 LT +271075 174930 LT +269747 176907 LT +268603 178996 LT +267654 181180 LT +266908 183442 LT +266371 185762 LT +266046 188121 LT +265938 190500 LT +267462 190500 LT +267564 192740 LT +267869 194962 LT +268376 197147 LT +269078 199277 LT +269972 201334 LT +271049 203302 LT +272300 205163 LT +273716 206903 LT +275283 208506 LT +276990 209961 LT +278823 211254 LT +280765 212376 LT +282801 213316 LT +284914 214067 LT +287087 214623 LT +289302 214979 LT +291539 215132 LT +293781 215081 LT +296010 214826 LT +298205 214370 LT +300351 213715 LT +302428 212869 LT +304419 211837 LT +306308 210629 LT +308080 209253 LT +309719 207722 LT +311212 206049 LT +312547 204246 LT +313712 202330 LT +314698 200316 LT +315497 198220 LT +316102 196061 LT +316509 193855 LT +316712 191621 LT +316712 189379 LT +316509 187145 LT +316102 184939 LT +315497 182780 LT +314698 180684 LT +313712 178670 LT +312547 176754 LT +311212 174951 LT +309719 173278 LT +308080 171747 LT +306308 170371 LT +304419 169163 LT +302428 168131 LT +300351 167285 LT +298205 166630 LT +296010 166174 LT +293781 165919 LT +291539 165868 LT +289302 166021 LT +287087 166377 LT +284914 166933 LT +282801 167684 LT +280765 168624 LT +278823 169746 LT +276990 171039 LT +275283 172494 LT +273716 174097 LT +272300 175837 LT +271049 177698 LT +269972 179666 LT +269078 181723 LT +268376 183853 LT +267869 186038 LT +267564 188260 LT +267462 190500 LT +CP BF QS +158750 104140 5081 20321 R +200660 111760 19051 5081 R +135890 111760 19051 5081 R +NP +178648 113958 MT +178152 113462 LT +171102 113462 LT +170606 113958 LT +170606 114658 LT +171102 115154 LT +178152 115154 LT +178648 114658 LT +CP BF QS +NP +188808 107608 MT +188312 107112 LT +187612 107112 LT +187116 107608 LT +187116 121009 LT +187612 121505 LT +188312 121505 LT +188808 121009 LT +CP BF QS +NP +188808 107608 MT +188312 107112 LT +187720 107112 LT +177272 113642 LT +176956 113958 LT +176956 114658 LT +177452 115154 LT +178044 115154 LT +188492 108624 LT +188808 108308 LT +CP BF QS +NP +193888 113958 MT +193392 113462 LT +177452 113462 LT +176956 113958 LT +176956 114658 LT +177452 115154 LT +193392 115154 LT +193888 114658 LT +CP BF QS +NP +188808 120309 MT +188492 119993 LT +178044 113462 LT +177452 113462 LT +176956 113958 LT +176956 114658 LT +177272 114974 LT +187720 121505 LT +188312 121505 LT +188808 121009 LT +CP BF QS +NP +178648 107608 MT +178152 107112 LT +177452 107112 LT +176956 107608 LT +176956 114658 LT +177452 115154 LT +178152 115154 LT +178648 114658 LT +CP BF QS +NP +181188 120309 MT +180692 119813 LT +177452 119813 LT +176956 120309 LT +176956 121009 LT +177452 121505 LT +180692 121505 LT +181188 121009 LT +CP BF QS +NP +178648 113958 MT +178152 113462 LT +177452 113462 LT +176956 113958 LT +176956 121009 LT +177452 121505 LT +178152 121505 LT +178648 121009 LT +CP BF QS +NP +201422 121604 MT +200976 121158 LT +200344 121158 LT +199898 121604 LT +199898 121920 LT +199864 122267 LT +199598 122908 LT +199108 123398 LT +198467 123664 LT +198120 123698 LT +197804 123698 LT +197358 124144 LT +197358 124776 LT +197804 125222 LT +198120 125222 LT +198777 125221 LT +199990 124719 LT +200919 123790 LT +201421 122577 LT +201422 121920 LT +CP BF QS +NP +157796 125222 MT +158242 124776 LT +158242 124144 LT +157796 123698 LT +157480 123698 LT +157133 123664 LT +156492 123398 LT +156002 122908 LT +155736 122267 LT +155702 121920 LT +155702 121604 LT +155256 121158 LT +154624 121158 LT +154178 121604 LT +154178 121920 LT +154179 122577 LT +154681 123790 LT +155610 124719 LT +156823 125221 LT +157480 125222 LT +CP BF QS +NP +154178 106996 MT +154624 107442 LT +155256 107442 LT +155702 106996 LT +155702 106680 LT +155736 106333 LT +156002 105692 LT +156492 105202 LT +157133 104936 LT +157480 104902 LT +157796 104902 LT +158242 104456 LT +158242 103824 LT +157796 103378 LT +157480 103378 LT +156823 103379 LT +155610 103881 LT +154681 104810 LT +154179 106023 LT +154178 106680 LT +CP BF QS +NP +197804 103378 MT +197358 103824 LT +197358 104456 LT +197804 104902 LT +198120 104902 LT +198467 104936 LT +199108 105202 LT +199598 105692 LT +199864 106333 LT +199898 106680 LT +199898 106996 LT +200344 107442 LT +200976 107442 LT +201422 106996 LT +201422 106680 LT +201421 106023 LT +200919 104810 LT +199990 103881 LT +198777 103379 LT +198120 103378 LT +CP BF QS +NP +201508 106338 MT +201012 105842 LT +200312 105842 LT +199816 106338 LT +199816 122279 LT +200312 122775 LT +201012 122775 LT +201508 122279 LT +CP BF QS +NP +155788 106338 MT +155292 105842 LT +154592 105842 LT +154096 106338 LT +154096 122279 LT +154592 122775 LT +155292 122775 LT +155788 122279 LT +CP BF QS +NP +198968 124119 MT +198472 123623 LT +157132 123623 LT +156636 124119 LT +156636 124819 LT +157132 125315 LT +198472 125315 LT +198968 124819 LT +CP BF QS +NP +198968 103797 MT +198472 103301 LT +157132 103301 LT +156636 103797 LT +156636 104497 LT +157132 104993 LT +198472 104993 LT +198968 104497 LT +CP BF QS +158750 154940 5081 20321 R +200660 162560 19051 5081 R +135890 162560 19051 5081 R +NP +178648 164762 MT +178152 164266 LT +171102 164266 LT +170606 164762 LT +170606 165462 LT +171102 165958 LT +178152 165958 LT +178648 165462 LT +CP BF QS +NP +188808 158411 MT +188312 157915 LT +187612 157915 LT +187116 158411 LT +187116 171812 LT +187612 172308 LT +188312 172308 LT +188808 171812 LT +CP BF QS +NP +188808 158411 MT +188312 157915 LT +187720 157915 LT +177272 164446 LT +176956 164762 LT +176956 165462 LT +177452 165958 LT +178044 165958 LT +188492 159427 LT +188808 159111 LT +CP BF QS +NP +193888 164762 MT +193392 164266 LT +177452 164266 LT +176956 164762 LT +176956 165462 LT +177452 165958 LT +193392 165958 LT +193888 165462 LT +CP BF QS +NP +188808 171112 MT +188492 170796 LT +178044 164266 LT +177452 164266 LT +176956 164762 LT +176956 165462 LT +177272 165778 LT +187720 172308 LT +188312 172308 LT +188808 171812 LT +CP BF QS +NP +178648 158411 MT +178152 157915 LT +177452 157915 LT +176956 158411 LT +176956 165462 LT +177452 165958 LT +178152 165958 LT +178648 165462 LT +CP BF QS +NP +181188 171112 MT +180692 170616 LT +177452 170616 LT +176956 171112 LT +176956 171812 LT +177452 172308 LT +180692 172308 LT +181188 171812 LT +CP BF QS +NP +178648 164762 MT +178152 164266 LT +177452 164266 LT +176956 164762 LT +176956 171812 LT +177452 172308 LT +178152 172308 LT +178648 171812 LT +CP BF QS +NP +201422 172404 MT +200976 171958 LT +200344 171958 LT +199898 172404 LT +199898 172720 LT +199864 173067 LT +199598 173708 LT +199108 174198 LT +198467 174464 LT +198120 174498 LT +197804 174498 LT +197358 174944 LT +197358 175576 LT +197804 176022 LT +198120 176022 LT +198777 176021 LT +199990 175519 LT +200919 174590 LT +201421 173377 LT +201422 172720 LT +CP BF QS +NP +157796 176022 MT +158242 175576 LT +158242 174944 LT +157796 174498 LT +157480 174498 LT +157133 174464 LT +156492 174198 LT +156002 173708 LT +155736 173067 LT +155702 172720 LT +155702 172404 LT +155256 171958 LT +154624 171958 LT +154178 172404 LT +154178 172720 LT +154179 173377 LT +154681 174590 LT +155610 175519 LT +156823 176021 LT +157480 176022 LT +CP BF QS +NP +154178 157796 MT +154624 158242 LT +155256 158242 LT +155702 157796 LT +155702 157480 LT +155736 157133 LT +156002 156492 LT +156492 156002 LT +157133 155736 LT +157480 155702 LT +157796 155702 LT +158242 155256 LT +158242 154624 LT +157796 154178 LT +157480 154178 LT +156823 154179 LT +155610 154681 LT +154681 155610 LT +154179 156823 LT +154178 157480 LT +CP BF QS +NP +197804 154178 MT +197358 154624 LT +197358 155256 LT +197804 155702 LT +198120 155702 LT +198467 155736 LT +199108 156002 LT +199598 156492 LT +199864 157133 LT +199898 157480 LT +199898 157796 LT +200344 158242 LT +200976 158242 LT +201422 157796 LT +201422 157480 LT +201421 156823 LT +200919 155610 LT +199990 154681 LT +198777 154179 LT +198120 154178 LT +CP BF QS +NP +201508 157141 MT +201012 156645 LT +200312 156645 LT +199816 157141 LT +199816 173082 LT +200312 173578 LT +201012 173578 LT +201508 173082 LT +CP BF QS +NP +155788 157141 MT +155292 156645 LT +154592 156645 LT +154096 157141 LT +154096 173082 LT +154592 173578 LT +155292 173578 LT +155788 173082 LT +CP BF QS +NP +198968 174923 MT +198472 174427 LT +157132 174427 LT +156636 174923 LT +156636 175623 LT +157132 176119 LT +198472 176119 LT +198968 175623 LT +CP BF QS +NP +198968 154601 MT +198472 154105 LT +157132 154105 LT +156636 154601 LT +156636 155301 LT +157132 155797 LT +198472 155797 LT +198968 155301 LT +CP BF QS +NP +458051 475934 MT +457555 475438 LT +456855 475438 LT +456359 475934 LT +456359 489335 LT +456855 489831 LT +457555 489831 LT +458051 489335 LT +CP BF QS +NP +458051 475934 MT +451205 469088 LT +450505 469088 LT +450009 469584 LT +450009 470284 LT +456855 477130 LT +457555 477130 LT +458051 476634 LT +CP BF QS +NP +439001 469584 MT +438505 469088 LT +437805 469088 LT +430959 475934 LT +430959 476634 LT +431455 477130 LT +432155 477130 LT +439001 470284 LT +CP BF QS +NP +458051 463233 MT +457555 462737 LT +456855 462737 LT +456607 462985 LT +450009 469584 LT +450009 470284 LT +450505 470780 LT +451205 470780 LT +451453 470532 LT +458051 463933 LT +CP BF QS +NP +458051 450532 MT +457555 450036 LT +456855 450036 LT +456359 450532 LT +456359 463933 LT +456855 464429 LT +457555 464429 LT +458051 463933 LT +CP BF QS +NP +458051 450532 MT +451205 443686 LT +450505 443686 LT +450009 444182 LT +450009 444882 LT +456855 451728 LT +457555 451728 LT +458051 451232 LT +CP BF QS +NP +439001 444182 MT +438505 443686 LT +437805 443686 LT +430959 450532 LT +430959 451232 LT +431455 451728 LT +432155 451728 LT +439001 444882 LT +CP BF QS +NP +432651 450532 MT +432155 450036 LT +431455 450036 LT +430959 450532 LT +430959 463933 LT +431455 464429 LT +432155 464429 LT +432651 463933 LT +CP BF QS +NP +432403 462985 MT +432155 462737 LT +431455 462737 LT +430959 463233 LT +430959 463933 LT +437557 470532 LT +437805 470780 LT +438505 470780 LT +439001 470284 LT +439001 469584 LT +CP BF QS +NP +451701 494985 MT +451205 494489 LT +437805 494489 LT +437309 494985 LT +437309 495685 LT +437805 496181 LT +451205 496181 LT +451701 495685 LT +CP BF QS +NP +458051 488635 MT +457555 488139 LT +456855 488139 LT +450009 494985 LT +450009 495685 LT +450505 496181 LT +451205 496181 LT +458051 489335 LT +CP BF QS +NP +439001 494985 MT +432155 488139 LT +431455 488139 LT +430959 488635 LT +430959 489335 LT +437805 496181 LT +438505 496181 LT +439001 495685 LT +CP BF QS +NP +432651 475934 MT +432155 475438 LT +431455 475438 LT +430959 475934 LT +430959 489335 LT +431455 489831 LT +432155 489831 LT +432651 489335 LT +CP BF QS +NP +458051 437831 MT +457555 437335 LT +456855 437335 LT +456607 437583 LT +450009 444182 LT +450009 444882 LT +450505 445378 LT +451205 445378 LT +451453 445130 LT +458051 438531 LT +CP BF QS +NP +458051 425130 MT +457555 424634 LT +456855 424634 LT +456359 425130 LT +456359 438531 LT +456855 439027 LT +457555 439027 LT +458051 438531 LT +CP BF QS +NP +458051 425130 MT +451205 418284 LT +450505 418284 LT +450009 418780 LT +450009 419480 LT +456855 426326 LT +457555 426326 LT +458051 425830 LT +CP BF QS +NP +439001 418780 MT +438505 418284 LT +437805 418284 LT +430959 425130 LT +430959 425830 LT +431455 426326 LT +432155 426326 LT +439001 419480 LT +CP BF QS +NP +432651 425130 MT +432155 424634 LT +431455 424634 LT +430959 425130 LT +430959 438531 LT +431455 439027 LT +432155 439027 LT +432651 438531 LT +CP BF QS +NP +432403 437583 MT +432155 437335 LT +431455 437335 LT +430959 437831 LT +430959 438531 LT +437557 445130 LT +437805 445378 LT +438505 445378 LT +439001 444882 LT +439001 444182 LT +CP BF QS +NP +451701 418780 MT +451205 418284 LT +437805 418284 LT +437309 418780 LT +437309 419480 LT +437805 419976 LT +451205 419976 LT +451701 419480 LT +CP BF QS +[-0 -1 1 0 3946.99 1913.09]ST +0 Y<001B>22 0 AT +[0.00236218 0 -0 -0.00236204 2882 3100]ST +1 0 0 d2 1 1 PE +1 0 d2 BR +NP +226063 444532 MT +226063 444532 LT +205742 444532 LT +205742 444532 LT +205742 444532 LT +205742 444532 LT +226063 444532 LT +226063 444532 LT +CP BF QS +NP +215903 434371 MT +215903 434371 LT +215903 434371 LT +215903 434371 LT +215903 454693 LT +215903 454693 LT +215903 454693 LT +215903 454693 LT +CP BF QS +NP +86361 317523 MT +86361 317523 LT +66041 317523 LT +66041 317523 LT +66041 317523 LT +66041 317523 LT +86361 317523 LT +86361 317523 LT +CP BF QS +NP +76201 307362 MT +76201 307362 LT +76201 307362 LT +76201 307362 LT +76201 327683 LT +76201 327683 LT +76201 327683 LT +76201 327683 LT +CP BF QS +NP +137162 317523 MT +137162 317523 LT +116841 317523 LT +116841 317523 LT +116841 317523 LT +116841 317523 LT +137162 317523 LT +137162 317523 LT +CP BF QS +NP +127001 307362 MT +127001 307362 LT +127001 307362 LT +127001 307362 LT +127001 327683 LT +127001 327683 LT +127001 327683 LT +127001 327683 LT +CP BF QS +NP +454665 63505 MT +454665 63505 LT +434345 63505 LT +434345 63505 LT +434345 63505 LT +434345 63505 LT +454665 63505 LT +454665 63505 LT +CP BF QS +NP +444505 53344 MT +444505 53344 LT +444505 53344 LT +444505 53344 LT +444505 73665 LT +444505 73665 LT +444505 73665 LT +444505 73665 LT +CP BF QS +NP +289563 330224 MT +289563 330224 LT +269243 330224 LT +269243 330224 LT +269243 330224 LT +269243 330224 LT +289563 330224 LT +289563 330224 LT +CP BF QS +NP +279403 320063 MT +279403 320063 LT +279403 320063 LT +279403 320063 LT +279403 340384 LT +279403 340384 LT +279403 340384 LT +279403 340384 LT +CP BF QS +NP +264163 254018 MT +264163 254018 LT +243843 254018 LT +243843 254018 LT +243843 254018 LT +243843 254018 LT +264163 254018 LT +264163 254018 LT +CP BF QS +NP +254003 243857 MT +254003 243857 LT +254003 243857 LT +254003 243857 LT +254003 264179 LT +254003 264179 LT +254003 264179 LT +254003 264179 LT +CP BF QS +NP +314964 254018 MT +314964 254018 LT +294643 254018 LT +294643 254018 LT +294643 254018 LT +294643 254018 LT +314964 254018 LT +314964 254018 LT +CP BF QS +NP +304804 243857 MT +304804 243857 LT +304804 243857 LT +304804 243857 LT +304804 264179 LT +304804 264179 LT +304804 264179 LT +304804 264179 LT +CP BF QS +NP +429265 254018 MT +429265 254018 LT +408945 254018 LT +408945 254018 LT +408945 254018 LT +408945 254018 LT +429265 254018 LT +429265 254018 LT +CP BF QS +NP +419105 243857 MT +419105 243857 LT +419105 243857 LT +419105 243857 LT +419105 264179 LT +419105 264179 LT +419105 264179 LT +419105 264179 LT +CP BF QS +NP +137162 215915 MT +137162 215915 LT +116841 215915 LT +116841 215915 LT +116841 215915 LT +116841 215915 LT +137162 215915 LT +137162 215915 LT +CP BF QS +NP +127001 205755 MT +127001 205755 LT +127001 205755 LT +127001 205755 LT +127001 226076 LT +127001 226076 LT +127001 226076 LT +127001 226076 LT +CP BF QS +NP +187962 50804 MT +187962 50804 LT +167642 50804 LT +167642 50804 LT +167642 50804 LT +167642 50804 LT +187962 50804 LT +187962 50804 LT +CP BF QS +NP +177802 40643 MT +177802 40643 LT +177802 40643 LT +177802 40643 LT +177802 60964 LT +177802 60964 LT +177802 60964 LT +177802 60964 LT +CP BF QS +NP +302264 139710 MT +302264 139710 LT +281943 139710 LT +281943 139710 LT +281943 139710 LT +281943 139710 LT +302264 139710 LT +302264 139710 LT +CP BF QS +NP +292103 129549 MT +292103 129549 LT +292103 129549 LT +292103 129549 LT +292103 149871 LT +292103 149871 LT +292103 149871 LT +292103 149871 LT +CP BF QS +NP +302264 190514 MT +302264 190514 LT +281943 190514 LT +281943 190514 LT +281943 190514 LT +281943 190514 LT +302264 190514 LT +302264 190514 LT +CP BF QS +NP +292103 180353 MT +292103 180353 LT +292103 180353 LT +292103 180353 LT +292103 200674 LT +292103 200674 LT +292103 200674 LT +292103 200674 LT +CP BF QS +NP +187962 114308 MT +187962 114308 LT +167642 114308 LT +167642 114308 LT +167642 114308 LT +167642 114308 LT +187962 114308 LT +187962 114308 LT +CP BF QS +NP +177802 104147 MT +177802 104147 LT +177802 104147 LT +177802 104147 LT +177802 124469 LT +177802 124469 LT +177802 124469 LT +177802 124469 LT +CP BF QS +NP +187962 165112 MT +187962 165112 LT +167642 165112 LT +167642 165112 LT +167642 165112 LT +167642 165112 LT +187962 165112 LT +187962 165112 LT +CP BF QS +NP +177802 154951 MT +177802 154951 LT +177802 154951 LT +177802 154951 LT +177802 175273 LT +177802 175273 LT +177802 175273 LT +177802 175273 LT +CP BF QS +NP +454665 457233 MT +454665 457233 LT +434345 457233 LT +434345 457233 LT +434345 457233 LT +434345 457233 LT +454665 457233 LT +454665 457233 LT +CP BF QS +NP +444505 447072 MT +444505 447072 LT +444505 447072 LT +444505 447072 LT +444505 467393 LT +444505 467393 LT +444505 467393 LT +444505 467393 LT +CP BF QS +[0 -1 1 0 2938.4 2110.07]ST +1 0 128 d2 1 1 PE +1 128 d2 BR +F1 F +0 Y<001A0016001B>91 0 AT +[-0 -1 1 0 3128 2335.06]ST +F3 F +0 Y<0004001E>52 0 AT +[-0 -1 1 0 3248 2335.06]ST +0 Y<0004001F>52 0 AT +[1 0 0 1 3781.99 2800.02]ST +0 Y<0020001B>49 0 AT +[1 0 0 1 3608.39 2427.45]ST +0 Y<0021001B>54 0 AT +[0 -1 1 0 3448.99 2542.04]ST +0 Y<0016001D>52 0 AT +[0 -1 1 0 3568.99 2542.04]ST +0 Y<0016001E>52 0 AT +[-0 -1 1 0 3973.99 2422.05]ST +0 Y<00220023001B>69 0 AT +[1 0 0 1 3110 2554.04]ST +0 Y<0004001B>52 0 AT +[1 0 0 1 3316.99 3046.01]ST +0 Y<0004001C>52 0 AT +[1 0 0 1 3529.99 2737.03]ST +0 Y<0016001B>52 0 AT +[1 0 0 1 3628.99 2620.03]ST +0 Y<0016001C>52 0 AT +[1 0 0 1 3248 2800.02]ST +0 Y<0024001B>52 0 AT +[1 0 0 1 3248 2680.03]ST +0 Y<0024001C>52 0 AT +[-0 -1 1 0 4000.99 2097.08]ST +0 Y<000A0014000400250018>142 0 AT +[1 0 0 1 3017 2065.07]ST +F1 F +0 Y<0026001400270028002900110023>261 0 AT +[-0 -1 1 0 3077 2343.66]ST +F3 F +0 Y<002A0029>44 0 AT +[-0 -1 1 0 3197 2343.66]ST +0 Y<002A0029>44 0 AT +[1 0 0 1 3511.99 2240.86]ST +0 Y<001B001C0026002B002C>127 0 AT +[0 -1 1 0 3544.99 2542.04]ST +0 Y<001C001C002D>66 0 AT +[0 -1 1 0 3664.99 2542.04]ST +0 Y<001C001C002D>66 0 AT +[-0 -1 1 0 3766.99 2421.05]ST +0 Y<001A000A0023>65 0 AT +[1 0 0 1 3128.6 2605.04]ST +0 Y<001C002E001C>64 0 AT +[1 0 0 1 3283.39 2995.01]ST +0 Y<001E002E002F>64 0 AT +[1 0 0 1 3529.99 2833.02]ST +0 Y<001B003000300006>88 0 AT +[1 0 0 1 3628.99 2707.03]ST +0 Y<001B0030000F>66 0 AT +[1 0 0 1 3248 2890.02]ST +0 Y<001D0031002A0025>82 0 AT +[1 0 0 1 3248 2770.02]ST +0 Y<001D0031002A0025>82 0 AT +[0.00236218 0 -0 -0.00236204 2882 3100]ST +1 0 0 128 0 1 1 PE +222250 298450 114301 63501 R +1 0 128 d2 1 1 PE +NP +79164 265492 MT +77428 263756 LT +74974 263756 LT +73238 265492 LT +73238 278107 LT +74974 279843 LT +77428 279843 LT +79164 278107 LT +CP BF QS +NP +79164 356939 MT +77428 355203 LT +74974 355203 LT +73238 356939 LT +73238 369553 LT +74974 371289 LT +77428 371289 LT +79164 369553 LT +CP BF QS +NP +129964 265492 MT +128228 263756 LT +125774 263756 LT +124038 265492 LT +124038 278107 LT +125774 279843 LT +128228 279843 LT +129964 278107 LT +CP BF QS +NP +129964 356939 MT +128228 355203 LT +125774 355203 LT +124038 356939 LT +124038 369553 LT +125774 371289 LT +128228 371289 LT +129964 369553 LT +CP BF QS +NP +254849 257055 MT +254353 256559 LT +253653 256559 LT +253157 257055 LT +253157 267069 LT +253653 267565 LT +254353 267565 LT +254849 267069 LT +CP BF QS +NP +254849 240967 MT +254353 240471 LT +253653 240471 LT +253157 240967 LT +253157 251405 LT +253653 251901 LT +254353 251901 LT +254849 251405 LT +CP BF QS +NP +305650 257055 MT +305154 256559 LT +304454 256559 LT +303958 257055 LT +303958 267069 LT +304454 267565 LT +305154 267565 LT +305650 267069 LT +CP BF QS +NP +305650 240967 MT +305154 240471 LT +304454 240471 LT +303958 240967 LT +303958 251405 LT +304454 251901 LT +305154 251901 LT +305650 251405 LT +CP BF QS +428752 301752 6097 6097 R +428752 276352 6097 6097 R +428752 250952 6097 6097 R +403352 301752 6097 6097 R +403352 276352 6097 6097 R +403352 250952 6097 6097 R +428752 225552 6097 6097 R +428752 200152 6097 6097 R +403352 200152 6097 6097 R +403352 225552 6097 6097 R +NP +180765 214688 MT +179029 212952 LT +166415 212952 LT +164679 214688 LT +164679 217142 LT +166415 218878 LT +179029 218878 LT +180765 217142 LT +CP BF QS +NP +89324 214688 MT +87588 212952 LT +74974 212952 LT +73238 214688 LT +73238 217142 LT +74974 218878 LT +87588 218878 LT +89324 217142 LT +CP BF QS +NP +140125 49577 MT +138389 47841 LT +125774 47841 LT +124038 49577 LT +124038 52031 LT +125774 53767 LT +138389 53767 LT +140125 52031 LT +CP BF QS +NP +231566 49577 MT +229830 47841 LT +217216 47841 LT +215480 49577 LT +215480 52031 LT +217216 53767 LT +229830 53767 LT +231566 52031 LT +CP BF QS +NP +305650 139360 MT +305154 138864 LT +295140 138864 LT +294644 139360 LT +294644 140060 LT +295140 140556 LT +305154 140556 LT +305650 140060 LT +CP BF QS +NP +289986 139360 MT +289490 138864 LT +279053 138864 LT +278557 139360 LT +278557 140060 LT +279053 140556 LT +289490 140556 LT +289986 140060 LT +CP BF QS +NP +285329 190164 MT +284833 189668 LT +275243 189668 LT +274747 190164 LT +274747 190864 LT +275243 191360 LT +284833 191360 LT +285329 190864 LT +CP BF QS +NP +285329 177463 MT +284833 176967 LT +284133 176967 LT +283637 177463 LT +283637 190864 LT +284133 191360 LT +284833 191360 LT +285329 190864 LT +CP BF QS +NP +290409 177463 MT +289913 176967 LT +284133 176967 LT +283637 177463 LT +283637 178163 LT +284133 178659 LT +289913 178659 LT +290409 178163 LT +CP BF QS +NP +290409 177463 MT +289913 176967 LT +289213 176967 LT +288717 177463 LT +288717 203565 LT +289213 204061 LT +289913 204061 LT +290409 203565 LT +CP BF QS +NP +290409 202865 MT +289913 202369 LT +284133 202369 LT +283637 202865 LT +283637 203565 LT +284133 204061 LT +289913 204061 LT +290409 203565 LT +CP BF QS +NP +285329 190164 MT +284833 189668 LT +284133 189668 LT +283637 190164 LT +283637 203565 LT +284133 204061 LT +284833 204061 LT +285329 203565 LT +CP BF QS +NP +309460 190164 MT +308964 189668 LT +298104 189668 LT +297608 190164 LT +297608 190864 LT +298104 191360 LT +308964 191360 LT +309460 190864 LT +CP BF QS +294640 177800 5081 25401 R +NP +231143 113256 MT +229655 111768 LT +218661 111768 LT +217173 113256 LT +217173 115360 LT +218661 116848 LT +229655 116848 LT +231143 115360 LT +CP BF QS +NP +138432 113256 MT +136944 111768 LT +125949 111768 LT +124461 113256 LT +124461 115360 LT +125949 116848 LT +136944 116848 LT +138432 115360 LT +CP BF QS +NP +231143 164060 MT +229655 162572 LT +218661 162572 LT +217173 164060 LT +217173 166164 LT +218661 167652 LT +229655 167652 LT +231143 166164 LT +CP BF QS +NP +138432 164060 MT +136944 162572 LT +125949 162572 LT +124461 164060 LT +124461 166164 LT +125949 167652 LT +136944 167652 LT +138432 166164 LT +CP BF QS +441960 454660 5081 5081 R +441960 480060 5081 5081 R +441960 429260 5081 5081 R + +QP +%%Trailer +%%Pages: 1 +%%DocumentFonts: Helvetica +%%EOF diff --git a/circuit/circuit.sch b/circuit/circuit.sch new file mode 100644 index 0000000..0db6cfc Binary files /dev/null and b/circuit/circuit.sch differ diff --git a/circuit/circuit.sch.pdf b/circuit/circuit.sch.pdf new file mode 100644 index 0000000..391a99c Binary files /dev/null and b/circuit/circuit.sch.pdf differ diff --git a/circuit/circuit.sch.png b/circuit/circuit.sch.png new file mode 100644 index 0000000..fa2c9cc Binary files /dev/null and b/circuit/circuit.sch.png differ diff --git a/circuit/circuit.sch.ps b/circuit/circuit.sch.ps new file mode 100644 index 0000000..2de6553 --- /dev/null +++ b/circuit/circuit.sch.ps @@ -0,0 +1,8913 @@ +%!PS-Adobe-1.0 +%%BoundingBox: 0 0 594 842 +%%Creator: EAGLE Version 4.16 Copyright (c) 1988-2005 CadSoft +%%Title: circuit.sch +%%CreationDate: Sat Oct 28 14:04:26 2006 +%%Orientation: Landscape +%%Pages: 1 +%%DocumentFonts: Helvetica + +%%EndComments +%%BeginProlog +% Prolog copyright 1994-2003 Trolltech. You may copy this prolog in any way +% that is directly related to this document. For other use of this prolog, +% see your licensing agreement for Qt. +/d/def load def/D{bind d}bind d/d2{dup dup}D/B{0 d2}D/W{255 d2}D/ED{exch d}D +/D0{0 ED}D/LT{lineto}D/MT{moveto}D/S{stroke}D/F{setfont}D/SW{setlinewidth}D +/CP{closepath}D/RL{rlineto}D/NP{newpath}D/CM{currentmatrix}D/SM{setmatrix}D +/TR{translate}D/SD{setdash}D/SC{aload pop setrgbcolor}D/CR{currentfile read +pop}D/i{index}D/bs{bitshift}D/scs{setcolorspace}D/DB{dict dup begin}D/DE{end +d}D/ie{ifelse}D/sp{astore pop}D/BSt 0 d/LWi 1 d/PSt 1 d/Cx 0 d/Cy 0 d/WFi +false d/OMo false d/BCol[1 1 1]d/PCol[0 0 0]d/BkCol[1 1 1]d/BDArr[0.94 0.88 +0.63 0.50 0.37 0.12 0.06]d/defM matrix d/nS 0 d/GPS{PSt 1 ge PSt 5 le and{{ +LArr PSt 1 sub 2 mul get}{LArr PSt 2 mul 1 sub get}ie}{[]}ie}D/QS{PSt 0 ne{ +gsave LWi SW true GPS 0 SD S OMo PSt 1 ne and{BkCol SC false GPS dup 0 get +SD S}if grestore}if}D/r28{{CR dup 32 gt{exit}if pop}loop 3{CR}repeat 0 4{7 +bs exch dup 128 gt{84 sub}if 42 sub 127 and add}repeat}D/rA 0 d/rL 0 d/rB{rL +0 eq{/rA r28 d/rL 28 d}if dup rL gt{rA exch rL sub rL exch/rA 0 d/rL 0 d rB +exch bs add}{dup rA 16#fffffff 3 -1 roll bs not and exch dup rL exch sub/rL +ED neg rA exch bs/rA ED}ie}D/uc{/rL 0 d 0{dup 2 i length ge{exit}if 1 rB 1 +eq{3 rB dup 3 ge{1 add dup rB 1 i 5 ge{1 i 6 ge{1 i 7 ge{1 i 8 ge{128 add}if +64 add}if 32 add}if 16 add}if 3 add exch pop}if 3 add exch 10 rB 1 add{dup 3 +i lt{dup}{2 i}ie 4 i 3 i 3 i sub 2 i getinterval 5 i 4 i 3 -1 roll +putinterval dup 4 -1 roll add 3 1 roll 4 -1 roll exch sub dup 0 eq{exit}if 3 +1 roll}loop pop pop}{3 rB 1 add{2 copy 8 rB put 1 add}repeat}ie}loop pop}D +/sl D0/QCIgray D0/QCIcolor D0/QCIindex D0/QCI{/colorimage where{pop false 3 +colorimage}{exec/QCIcolor ED/QCIgray QCIcolor length 3 idiv string d 0 1 +QCIcolor length 3 idiv 1 sub{/QCIindex ED/x QCIindex 3 mul d QCIgray +QCIindex QCIcolor x get 0.30 mul QCIcolor x 1 add get 0.59 mul QCIcolor x 2 +add get 0.11 mul add add cvi put}for QCIgray image}ie}D/di{gsave TR 1 i 1 eq +{false eq{pop true 3 1 roll 4 i 4 i false 4 i 4 i imagemask BkCol SC +imagemask}{pop false 3 1 roll imagemask}ie}{dup false ne{/languagelevel +where{pop languagelevel 3 ge}{false}ie}{false}ie{/ma ED 8 eq{/dc[0 1]d +/DeviceGray}{/dc[0 1 0 1 0 1]d/DeviceRGB}ie scs/im ED/mt ED/h ED/w ED/id 7 +DB/ImageType 1 d/Width w d/Height h d/ImageMatrix mt d/DataSource im d +/BitsPerComponent 8 d/Decode dc d DE/md 7 DB/ImageType 1 d/Width w d/Height +h d/ImageMatrix mt d/DataSource ma d/BitsPerComponent 1 d/Decode[0 1]d DE 4 +DB/ImageType 3 d/DataDict id d/MaskDict md d/InterleaveType 3 d end image}{ +pop 8 4 1 roll 8 eq{image}{QCI}ie}ie}ie grestore}d/BF{gsave BSt 1 eq{BCol SC +WFi{fill}{eofill}ie}if BSt 2 ge BSt 8 le and{BDArr BSt 2 sub get/sc ED BCol{ +1. exch sub sc mul 1. exch sub}forall 3 array astore SC WFi{fill}{eofill}ie} +if BSt 9 ge BSt 14 le and{WFi{clip}{eoclip}ie defM SM pathbbox 3 i 3 i TR 4 +2 roll 3 2 roll exch sub/h ED sub/w ED OMo{NP 0 0 MT 0 h RL w 0 RL 0 h neg +RL CP BkCol SC fill}if BCol SC 0.3 SW NP BSt 9 eq BSt 11 eq or{0 4 h{dup 0 +exch MT w exch LT}for}if BSt 10 eq BSt 11 eq or{0 4 w{dup 0 MT h LT}for}if +BSt 12 eq BSt 14 eq or{w h gt{0 6 w h add{dup 0 MT h sub h LT}for}{0 6 w h +add{dup 0 exch MT w sub w exch LT}for}ie}if BSt 13 eq BSt 14 eq or{w h gt{0 +6 w h add{dup h MT h sub 0 LT}for}{0 6 w h add{dup w exch MT w sub 0 exch LT +}for}ie}if S}if BSt 24 eq{}if grestore}D/mat matrix d/ang1 D0/ang2 D0/w D0/h +D0/x D0/y D0/ARC{/ang2 ED/ang1 ED/h ED/w ED/y ED/x ED mat CM pop x w 2 div +add y h 2 div add TR 1 h w div neg scale ang2 0 ge{0 0 w 2 div ang1 ang1 +ang2 add arc}{0 0 w 2 div ang1 ang1 ang2 add arcn}ie mat SM}D/C D0/P{NP MT +0.5 0.5 rmoveto 0 -1 RL -1 0 RL 0 1 RL CP fill}D/M{/Cy ED/Cx ED}D/L{NP Cx Cy +MT/Cy ED/Cx ED Cx Cy LT QS}D/DL{NP MT LT QS}D/HL{1 i DL}D/VL{2 i exch DL}D/R +{/h ED/w ED/y ED/x ED NP x y MT 0 h RL w 0 RL 0 h neg RL CP BF QS}D/ACR{/h +ED/w ED/y ED/x ED x y MT 0 h RL w 0 RL 0 h neg RL CP}D/xr D0/yr D0/rx D0/ry +D0/rx2 D0/ry2 D0/RR{/yr ED/xr ED/h ED/w ED/y ED/x ED xr 0 le yr 0 le or{x y +w h R}{xr 100 ge yr 100 ge or{x y w h E}{/rx xr w mul 200 div d/ry yr h mul +200 div d/rx2 rx 2 mul d/ry2 ry 2 mul d NP x rx add y MT x y rx2 ry2 180 -90 +x y h add ry2 sub rx2 ry2 270 -90 x w add rx2 sub y h add ry2 sub rx2 ry2 0 +-90 x w add rx2 sub y rx2 ry2 90 -90 ARC ARC ARC ARC CP BF QS}ie}ie}D/E{/h +ED/w ED/y ED/x ED mat CM pop x w 2 div add y h 2 div add TR 1 h w div scale +NP 0 0 w 2 div 0 360 arc mat SM BF QS}D/A{16 div exch 16 div exch NP ARC QS} +D/PIE{/ang2 ED/ang1 ED/h ED/w ED/y ED/x ED NP x w 2 div add y h 2 div add MT +x y w h ang1 16 div ang2 16 div ARC CP BF QS}D/CH{16 div exch 16 div exch NP +ARC CP BF QS}D/BZ{curveto QS}D/CRGB{255 div 3 1 roll 255 div 3 1 roll 255 +div 3 1 roll}D/BC{CRGB BkCol sp}D/BR{CRGB BCol sp/BSt ED}D/WB{1 W BR}D/NB{0 +B BR}D/PE{setlinejoin setlinecap CRGB PCol sp/LWi ED/PSt ED LWi 0 eq{0.25 +/LWi ED}if PCol SC}D/P1{1 0 5 2 roll 0 0 PE}D/ST{defM SM concat}D/MF{true +exch true exch{exch pop exch pop dup 0 get dup findfont dup/FontName get 3 +-1 roll eq{exit}if}forall exch dup 1 get/fxscale ED 2 get/fslant ED exch +/fencoding ED[fxscale 0 fslant 1 0 0]makefont fencoding false eq{}{dup +maxlength dict begin{1 i/FID ne{def}{pop pop}ifelse}forall/Encoding +fencoding d currentdict end}ie definefont pop}D/MFEmb{findfont dup length +dict begin{1 i/FID ne{d}{pop pop}ifelse}forall/Encoding ED currentdict end +definefont pop}D/DF{findfont/fs 3 -1 roll d[fs 0 0 fs -1 mul 0 0]makefont d} +D/ty 0 d/Y{/ty ED}D/Tl{gsave SW NP 1 i exch MT 1 i 0 RL S grestore}D/XYT{ty +MT/xyshow where{pop pop xyshow}{exch pop 1 i dup length 2 div exch +stringwidth pop 3 -1 roll exch sub exch div exch 0 exch ashow}ie}D/AT{ty MT +1 i dup length 2 div exch stringwidth pop 3 -1 roll exch sub exch div exch 0 +exch ashow}D/QI{/C save d pageinit/Cx 0 d/Cy 0 d/OMo false d}D/QP{C restore +showpage}D/SPD{/setpagedevice where{1 DB 3 1 roll d end setpagedevice}{pop +pop}ie}D/SV{BSt LWi PSt Cx Cy WFi OMo BCol PCol BkCol/nS nS 1 add d gsave}D +/RS{nS 0 gt{grestore/BkCol ED/PCol ED/BCol ED/OMo ED/WFi ED/Cy ED/Cx ED/PSt +ED/LWi ED/BSt ED/nS nS 1 sub d}if}D/CLSTART{/clipTmp matrix CM d defM SM NP} +D/CLEND{clip NP clipTmp SM}D/CLO{grestore gsave defM SM}D + +/LArr[ [] [] [ 83.333 25.0 ] [ 25.0 83.333 ] [ 25.0 25.0 ] [ 25.0 25.0 ] [ 41.666 25.0 25.0 25.0 ] [ 25.0 41.666 25.0 25.0 ] [ 41.666 25.0 25.0 25.0 25.0 ] [ 25.0 41.666 25.0 25.0 25.0 25.0 ] ] d +/pageinit { +% 210*297 mm (landscape) + 90 rotate 0.12 -0.12 scale/defM matrix CM d } d +%%EndProlog +%%BeginSetup +% Fonts and encodings used +/HelveticaList [ +[ /Helvetica 1.0 0.0 ] +] d +% No embeddable font for Helvetica found +%% Font Page 00 +/Helvetica-ENC-00 [ +/.notdef/one/two/three/four/V/C/D/hyphen/plus/G/N/five/a/t/space/r/o/u/n/d +/six/seven/eight/nine/zero/M/O/S/I/period/c/R/e/s/K/P/U/B/y/p/comma/f/v/i/w/l +/k/W/h/parenleft/parenright/X/T/A/L/slash/E/F/Q/J/H/z/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef] def +/Helvetica-Uni-00 Helvetica-ENC-00 HelveticaList MF +%%BeginFont: Helvetica +%!PS-AdobeFont-1.0 Composite Font +%%FontName: Helvetica-Uni +%%Creator: Composite font created by Qt +25 dict begin +/FontName /Helvetica-Uni def +/PaintType 0 def +/FontMatrix[1 0 0 1 0 0]def +/FontType 0 def +/FMapType 2 def +/Encoding [ +0]def +/FDepVector [ +/Helvetica-Uni-00 findfont +]def +FontName currentdict end definefont pop +%%EndFont +/F1 59/Helvetica-Uni DF +/F2 64/Helvetica-Uni DF +/F3 85/Helvetica-Uni DF +/F4 42/Helvetica-Uni DF +/F5 51/Helvetica-Uni DF +/F6 48/Helvetica-Uni DF +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +QI +%%EndPageSetup +255 d2 BC +[0.00236219 0 -0 -0.00236213 388 4609]ST +CLSTART +300 300 6417 4358 ACR +CLEND +1 0 0 128 0 1 1 PE +1 0 128 0 BR +255 d2 BC +NP +966050 1.11729e+06 MT +965554 1.11679e+06 LT +939454 1.11679e+06 LT +938958 1.11729e+06 LT +938958 1.11799e+06 LT +939454 1.11848e+06 LT +965554 1.11848e+06 LT +966050 1.11799e+06 LT +CP BF QS +NP +712049 1.19349e+06 MT +711553 1.19299e+06 LT +685453 1.19299e+06 LT +684957 1.19349e+06 LT +684957 1.19419e+06 LT +685453 1.19469e+06 LT +711553 1.19469e+06 LT +712049 1.19419e+06 LT +CP BF QS +NP +712049 1.29509e+06 MT +711553 1.2946e+06 LT +685453 1.2946e+06 LT +684957 1.29509e+06 LT +684957 1.29579e+06 LT +685453 1.29629e+06 LT +711553 1.29629e+06 LT +712049 1.29579e+06 LT +CP BF QS +NP +2.23606e+06 583870 MT +2.23556e+06 583374 LT +2.23486e+06 583374 LT +2.23436e+06 583870 LT +2.23436e+06 635371 LT +2.23486e+06 635867 LT +2.23556e+06 635867 LT +2.23606e+06 635371 LT +CP BF QS +NP +2.23606e+06 533068 MT +2.23556e+06 532572 LT +2.23486e+06 532572 LT +2.23436e+06 533068 LT +2.23436e+06 584570 LT +2.23486e+06 585066 LT +2.23556e+06 585066 LT +2.23606e+06 584570 LT +CP BF QS +NP +2.26146e+06 583870 MT +2.26096e+06 583374 LT +2.26026e+06 583374 LT +2.25976e+06 583870 LT +2.25976e+06 635371 LT +2.26026e+06 635867 LT +2.26096e+06 635867 LT +2.26146e+06 635371 LT +CP BF QS +NP +2.26146e+06 583870 MT +2.26096e+06 583374 LT +2.23486e+06 583374 LT +2.23436e+06 583870 LT +2.23436e+06 584570 LT +2.23486e+06 585066 LT +2.26096e+06 585066 LT +2.26146e+06 584570 LT +CP BF QS +NP +2.28686e+06 583870 MT +2.28636e+06 583374 LT +2.28566e+06 583374 LT +2.28516e+06 583870 LT +2.28516e+06 635371 LT +2.28566e+06 635867 LT +2.28636e+06 635867 LT +2.28686e+06 635371 LT +CP BF QS +NP +2.28686e+06 583870 MT +2.28636e+06 583374 LT +2.26026e+06 583374 LT +2.25976e+06 583870 LT +2.25976e+06 584570 LT +2.26026e+06 585066 LT +2.28636e+06 585066 LT +2.28686e+06 584570 LT +CP BF QS +NP +2.31226e+06 583870 MT +2.31176e+06 583374 LT +2.31106e+06 583374 LT +2.31056e+06 583870 LT +2.31056e+06 635371 LT +2.31106e+06 635867 LT +2.31176e+06 635867 LT +2.31226e+06 635371 LT +CP BF QS +NP +2.31226e+06 583870 MT +2.31176e+06 583374 LT +2.28566e+06 583374 LT +2.28516e+06 583870 LT +2.28516e+06 584570 LT +2.28566e+06 585066 LT +2.31176e+06 585066 LT +2.31226e+06 584570 LT +CP BF QS +2.23012e+06 579120 10161 10161 E +2.25552e+06 579120 10161 10161 E +2.28092e+06 579120 10161 10161 E +NP +356448 634671 MT +355952 634175 LT +228251 634175 LT +227755 634671 LT +227755 635371 LT +228251 635867 LT +355952 635867 LT +356448 635371 LT +CP BF QS +NP +356448 431464 MT +355952 430968 LT +355252 430968 LT +354756 431464 LT +354756 635371 LT +355252 635867 LT +355952 635867 LT +356448 635371 LT +CP BF QS +NP +610449 431464 MT +609953 430968 LT +609253 430968 LT +608757 431464 LT +608757 482966 LT +609253 483462 LT +609953 483462 LT +610449 482966 LT +CP BF QS +NP +737449 431464 MT +736953 430968 LT +736253 430968 LT +735757 431464 LT +735757 482966 LT +736253 483462 LT +736953 483462 LT +737449 482966 LT +CP BF QS +NP +483448 431464 MT +482952 430968 LT +482252 430968 LT +481756 431464 LT +481756 482966 LT +482252 483462 LT +482952 483462 LT +483448 482966 LT +CP BF QS +NP +610449 812477 MT +609953 811981 LT +609253 811981 LT +608757 812477 LT +608757 889380 LT +609253 889876 LT +609953 889876 LT +610449 889380 LT +CP BF QS +NP +737449 812477 MT +736953 811981 LT +736253 811981 LT +735757 812477 LT +735757 889380 LT +736253 889876 LT +736953 889876 LT +737449 889380 LT +CP BF QS +NP +1.80425e+06 1.26969e+06 MT +1.80376e+06 1.2692e+06 LT +1.80306e+06 1.2692e+06 LT +1.80256e+06 1.26969e+06 LT +1.80256e+06 1.372e+06 LT +1.80306e+06 1.37249e+06 LT +1.80376e+06 1.37249e+06 LT +1.80425e+06 1.372e+06 LT +CP BF QS +NP +1.85505e+06 1.3713e+06 MT +1.85456e+06 1.3708e+06 LT +1.80306e+06 1.3708e+06 LT +1.80256e+06 1.3713e+06 LT +1.80256e+06 1.372e+06 LT +1.80306e+06 1.37249e+06 LT +1.85456e+06 1.37249e+06 LT +1.85505e+06 1.372e+06 LT +CP BF QS +NP +1.88045e+06 1.3713e+06 MT +1.87996e+06 1.3708e+06 LT +1.85386e+06 1.3708e+06 LT +1.85336e+06 1.3713e+06 LT +1.85336e+06 1.372e+06 LT +1.85386e+06 1.37249e+06 LT +1.87996e+06 1.37249e+06 LT +1.88045e+06 1.372e+06 LT +CP BF QS +NP +1.95666e+06 1.3713e+06 MT +1.95616e+06 1.3708e+06 LT +1.85386e+06 1.3708e+06 LT +1.85336e+06 1.3713e+06 LT +1.85336e+06 1.372e+06 LT +1.85386e+06 1.37249e+06 LT +1.95616e+06 1.37249e+06 LT +1.95666e+06 1.372e+06 LT +CP BF QS +NP +864450 1.29509e+06 MT +863954 1.2946e+06 LT +787053 1.2946e+06 LT +786557 1.29509e+06 LT +786557 1.29579e+06 LT +787053 1.29629e+06 LT +863954 1.29629e+06 LT +864450 1.29579e+06 LT +CP BF QS +NP +864450 1.26969e+06 MT +863954 1.2692e+06 LT +863254 1.2692e+06 LT +862758 1.26969e+06 LT +862758 1.29579e+06 LT +863254 1.29629e+06 LT +863954 1.29629e+06 LT +864450 1.29579e+06 LT +CP BF QS +858520 1.29032e+06 10161 10161 E +NP +940650 1.29509e+06 MT +940154 1.2946e+06 LT +863254 1.2946e+06 LT +862758 1.29509e+06 LT +862758 1.29579e+06 LT +863254 1.29629e+06 LT +940154 1.29629e+06 LT +940650 1.29579e+06 LT +CP BF QS +NP +940650 1.24429e+06 MT +940154 1.2438e+06 LT +939454 1.2438e+06 LT +938958 1.24429e+06 LT +938958 1.29579e+06 LT +939454 1.29629e+06 LT +940154 1.29629e+06 LT +940650 1.29579e+06 LT +CP BF QS +NP +966050 1.24429e+06 MT +965554 1.2438e+06 LT +939454 1.2438e+06 LT +938958 1.24429e+06 LT +938958 1.24499e+06 LT +939454 1.24549e+06 LT +965554 1.24549e+06 LT +966050 1.24499e+06 LT +CP BF QS +NP +864450 1.19349e+06 MT +863954 1.19299e+06 LT +863254 1.19299e+06 LT +862758 1.19349e+06 LT +862758 1.21959e+06 LT +863254 1.22009e+06 LT +863954 1.22009e+06 LT +864450 1.21959e+06 LT +CP BF QS +NP +864450 1.19349e+06 MT +863954 1.19299e+06 LT +787053 1.19299e+06 LT +786557 1.19349e+06 LT +786557 1.19419e+06 LT +787053 1.19469e+06 LT +863954 1.19469e+06 LT +864450 1.19419e+06 LT +CP BF QS +858520 1.18872e+06 10161 10161 E +NP +966050 1.19349e+06 MT +965554 1.19299e+06 LT +863254 1.19299e+06 LT +862758 1.19349e+06 LT +862758 1.19419e+06 LT +863254 1.19469e+06 LT +965554 1.19469e+06 LT +966050 1.19419e+06 LT +CP BF QS +NP +1.62645e+06 787076 MT +1.62596e+06 786580 LT +1.62526e+06 786580 LT +1.62476e+06 787076 LT +1.62476e+06 1.14339e+06 LT +1.62526e+06 1.14388e+06 LT +1.62596e+06 1.14388e+06 LT +1.62645e+06 1.14339e+06 LT +CP BF QS +NP +1.62645e+06 1.14269e+06 MT +1.62596e+06 1.14219e+06 LT +1.44746e+06 1.14219e+06 LT +1.44696e+06 1.14269e+06 LT +1.44696e+06 1.14339e+06 LT +1.44746e+06 1.14388e+06 LT +1.62596e+06 1.14388e+06 LT +1.62645e+06 1.14339e+06 LT +CP BF QS +NP +2.33766e+06 888680 MT +2.33716e+06 888184 LT +1.44746e+06 888184 LT +1.44696e+06 888680 LT +1.44696e+06 889380 LT +1.44746e+06 889876 LT +2.33716e+06 889876 LT +2.33766e+06 889380 LT +CP BF QS +NP +2.33766e+06 787076 MT +2.33716e+06 786580 LT +2.33646e+06 786580 LT +2.33596e+06 787076 LT +2.33596e+06 889380 LT +2.33646e+06 889876 LT +2.33716e+06 889876 LT +2.33766e+06 889380 LT +CP BF QS +NP +966050 1.4221e+06 MT +965554 1.4216e+06 LT +939454 1.4216e+06 LT +938958 1.4221e+06 LT +938958 1.4228e+06 LT +939454 1.42329e+06 LT +965554 1.42329e+06 LT +966050 1.4228e+06 LT +CP BF QS +NP +940650 1.4221e+06 MT +940154 1.4216e+06 LT +939454 1.4216e+06 LT +938958 1.4221e+06 LT +938958 1.5498e+06 LT +939454 1.5503e+06 LT +940154 1.5503e+06 LT +940650 1.5498e+06 LT +CP BF QS +NP +2.28686e+06 1.5491e+06 MT +2.28636e+06 1.54861e+06 LT +939454 1.54861e+06 LT +938958 1.5491e+06 LT +938958 1.5498e+06 LT +939454 1.5503e+06 LT +2.28636e+06 1.5503e+06 LT +2.28686e+06 1.5498e+06 LT +CP BF QS +NP +2.28686e+06 787076 MT +2.28636e+06 786580 LT +2.28566e+06 786580 LT +2.28516e+06 787076 LT +2.28516e+06 1.5498e+06 LT +2.28566e+06 1.5503e+06 LT +2.28636e+06 1.5503e+06 LT +2.28686e+06 1.5498e+06 LT +CP BF QS +NP +2.26146e+06 837878 MT +2.26096e+06 837382 LT +1.44746e+06 837382 LT +1.44696e+06 837878 LT +1.44696e+06 838578 LT +1.44746e+06 839074 LT +2.26096e+06 839074 LT +2.26146e+06 838578 LT +CP BF QS +NP +2.26146e+06 787076 MT +2.26096e+06 786580 LT +2.26026e+06 786580 LT +2.25976e+06 787076 LT +2.25976e+06 838578 LT +2.26026e+06 839074 LT +2.26096e+06 839074 LT +2.26146e+06 838578 LT +CP BF QS +NP +2.23606e+06 863279 MT +2.23556e+06 862783 LT +1.44746e+06 862783 LT +1.44696e+06 863279 LT +1.44696e+06 863979 LT +1.44746e+06 864475 LT +2.23556e+06 864475 LT +2.23606e+06 863979 LT +CP BF QS +NP +2.23606e+06 787076 MT +2.23556e+06 786580 LT +2.23486e+06 786580 LT +2.23436e+06 787076 LT +2.23436e+06 863979 LT +2.23486e+06 864475 LT +2.23556e+06 864475 LT +2.23606e+06 863979 LT +CP BF QS +NP +483448 685473 MT +482952 684977 LT +228251 684977 LT +227755 685473 LT +227755 686173 LT +228251 686669 LT +482952 686669 LT +483448 686173 LT +CP BF QS +NP +610449 685473 MT +609953 684977 LT +482252 684977 LT +481756 685473 LT +481756 686173 LT +482252 686669 LT +609953 686669 LT +610449 686173 LT +CP BF QS +NP +1.52485e+06 685473 MT +1.52436e+06 684977 LT +609253 684977 LT +608757 685473 LT +608757 686173 LT +609253 686669 LT +1.52436e+06 686669 LT +1.52485e+06 686173 LT +CP BF QS +NP +610449 533068 MT +609953 532572 LT +609253 532572 LT +608757 533068 LT +608757 686173 LT +609253 686669 LT +609953 686669 LT +610449 686173 LT +CP BF QS +604520 680720 10161 10161 E +NP +483448 685473 MT +482952 684977 LT +482252 684977 LT +481756 685473 LT +481756 863979 LT +482252 864475 LT +482952 864475 LT +483448 863979 LT +CP BF QS +NP +483448 583870 MT +482952 583374 LT +482252 583374 LT +481756 583870 LT +481756 686173 LT +482252 686669 LT +482952 686669 LT +483448 686173 LT +CP BF QS +477520 680720 10161 10161 E +NP +1.62645e+06 660072 MT +1.62596e+06 659576 LT +1.62526e+06 659576 LT +1.62476e+06 660072 LT +1.62476e+06 686173 LT +1.62526e+06 686669 LT +1.62596e+06 686669 LT +1.62645e+06 686173 LT +CP BF QS +NP +1.62645e+06 660072 MT +1.62596e+06 659576 LT +736253 659576 LT +735757 660072 LT +735757 660772 LT +736253 661268 LT +1.62596e+06 661268 LT +1.62645e+06 660772 LT +CP BF QS +NP +737449 660072 MT +736953 659576 LT +228251 659576 LT +227755 660072 LT +227755 660772 LT +228251 661268 LT +736953 661268 LT +737449 660772 LT +CP BF QS +NP +737449 533068 MT +736953 532572 LT +736253 532572 LT +735757 533068 LT +735757 660772 LT +736253 661268 LT +736953 661268 LT +737449 660772 LT +CP BF QS +731520 655320 10161 10161 E +NP +356448 710874 MT +355952 710378 LT +228251 710378 LT +227755 710874 LT +227755 711574 LT +228251 712070 LT +355952 712070 LT +356448 711574 LT +CP BF QS +NP +356448 710874 MT +355952 710378 LT +355252 710378 LT +354756 710874 LT +354756 1.06719e+06 LT +355252 1.06768e+06 LT +355952 1.06768e+06 LT +356448 1.06719e+06 LT +CP BF QS +NP +356448 1.06649e+06 MT +355952 1.06599e+06 LT +355252 1.06599e+06 LT +354756 1.06649e+06 LT +354756 1.6006e+06 LT +355252 1.6011e+06 LT +355952 1.6011e+06 LT +356448 1.6006e+06 LT +CP BF QS +NP +2.41386e+06 1.5999e+06 MT +2.41336e+06 1.59941e+06 LT +1.80306e+06 1.59941e+06 LT +1.80256e+06 1.5999e+06 LT +1.80256e+06 1.6006e+06 LT +1.80306e+06 1.6011e+06 LT +2.41336e+06 1.6011e+06 LT +2.41386e+06 1.6006e+06 LT +CP BF QS +NP +1.80425e+06 1.5999e+06 MT +1.80376e+06 1.59941e+06 LT +355252 1.59941e+06 LT +354756 1.5999e+06 LT +354756 1.6006e+06 LT +355252 1.6011e+06 LT +1.80376e+06 1.6011e+06 LT +1.80425e+06 1.6006e+06 LT +CP BF QS +NP +2.41386e+06 583870 MT +2.41336e+06 583374 LT +2.41266e+06 583374 LT +2.41216e+06 583870 LT +2.41216e+06 1.6006e+06 LT +2.41266e+06 1.6011e+06 LT +2.41336e+06 1.6011e+06 LT +2.41386e+06 1.6006e+06 LT +CP BF QS +NP +2.33766e+06 583870 MT +2.33716e+06 583374 LT +2.33646e+06 583374 LT +2.33596e+06 583870 LT +2.33596e+06 635371 LT +2.33646e+06 635867 LT +2.33716e+06 635867 LT +2.33766e+06 635371 LT +CP BF QS +NP +2.41386e+06 583870 MT +2.41336e+06 583374 LT +2.33646e+06 583374 LT +2.33596e+06 583870 LT +2.33596e+06 584570 LT +2.33646e+06 585066 LT +2.41336e+06 585066 LT +2.41386e+06 584570 LT +CP BF QS +NP +966050 1.06649e+06 MT +965554 1.06599e+06 LT +736253 1.06599e+06 LT +735757 1.06649e+06 LT +735757 1.06719e+06 LT +736253 1.06768e+06 LT +965554 1.06768e+06 LT +966050 1.06719e+06 LT +CP BF QS +NP +737449 1.06649e+06 MT +736953 1.06599e+06 LT +609253 1.06599e+06 LT +608757 1.06649e+06 LT +608757 1.06719e+06 LT +609253 1.06768e+06 LT +736953 1.06768e+06 LT +737449 1.06719e+06 LT +CP BF QS +NP +610449 1.06649e+06 MT +609953 1.06599e+06 LT +482252 1.06599e+06 LT +481756 1.06649e+06 LT +481756 1.06719e+06 LT +482252 1.06768e+06 LT +609953 1.06768e+06 LT +610449 1.06719e+06 LT +CP BF QS +NP +483448 1.06649e+06 MT +482952 1.06599e+06 LT +355252 1.06599e+06 LT +354756 1.06649e+06 LT +354756 1.06719e+06 LT +355252 1.06768e+06 LT +482952 1.06768e+06 LT +483448 1.06719e+06 LT +CP BF QS +350520 1.06172e+06 10161 10161 E +NP +610449 964882 MT +609953 964386 LT +609253 964386 LT +608757 964882 LT +608757 1.06719e+06 LT +609253 1.06768e+06 LT +609953 1.06768e+06 LT +610449 1.06719e+06 LT +CP BF QS +NP +737449 964882 MT +736953 964386 LT +736253 964386 LT +735757 964882 LT +735757 1.06719e+06 LT +736253 1.06768e+06 LT +736953 1.06768e+06 LT +737449 1.06719e+06 LT +CP BF QS +604520 1.06172e+06 10161 10161 E +731520 1.06172e+06 10161 10161 E +NP +483448 964882 MT +482952 964386 LT +482252 964386 LT +481756 964882 LT +481756 1.06719e+06 LT +482252 1.06768e+06 LT +482952 1.06768e+06 LT +483448 1.06719e+06 LT +CP BF QS +477520 1.06172e+06 10161 10161 E +NP +1.95666e+06 1.3967e+06 MT +1.95616e+06 1.3962e+06 LT +1.80306e+06 1.3962e+06 LT +1.80256e+06 1.3967e+06 LT +1.80256e+06 1.3974e+06 LT +1.80306e+06 1.39789e+06 LT +1.95616e+06 1.39789e+06 LT +1.95666e+06 1.3974e+06 LT +CP BF QS +NP +1.80425e+06 1.3967e+06 MT +1.80376e+06 1.3962e+06 LT +1.80306e+06 1.3962e+06 LT +1.80256e+06 1.3967e+06 LT +1.80256e+06 1.6006e+06 LT +1.80306e+06 1.6011e+06 LT +1.80376e+06 1.6011e+06 LT +1.80425e+06 1.6006e+06 LT +CP BF QS +1.79832e+06 1.59512e+06 10161 10161 E +NP +1.52485e+06 787076 MT +1.52436e+06 786580 LT +1.52366e+06 786580 LT +1.52316e+06 787076 LT +1.52316e+06 1.19419e+06 LT +1.52366e+06 1.19469e+06 LT +1.52436e+06 1.19469e+06 LT +1.52485e+06 1.19419e+06 LT +CP BF QS +NP +1.52485e+06 1.19349e+06 MT +1.52436e+06 1.19299e+06 LT +1.44746e+06 1.19299e+06 LT +1.44696e+06 1.19349e+06 LT +1.44696e+06 1.19419e+06 LT +1.44746e+06 1.19469e+06 LT +1.52436e+06 1.19469e+06 LT +1.52485e+06 1.19419e+06 LT +CP BF QS +NP +1.95666e+06 1.4221e+06 MT +1.95616e+06 1.4216e+06 LT +1.44746e+06 1.4216e+06 LT +1.44696e+06 1.4221e+06 LT +1.44696e+06 1.4228e+06 LT +1.44746e+06 1.42329e+06 LT +1.95616e+06 1.42329e+06 LT +1.95666e+06 1.4228e+06 LT +CP BF QS +1 0 128 0 0 1 1 PE +1 128 0 0 BR +NP +115147 101253 MT +114651 100757 LT +113951 100757 LT +113455 101253 LT +113455 190856 LT +113951 191352 LT +114651 191352 LT +115147 190856 LT +CP BF QS +NP +216747 101253 MT +216251 100757 LT +113951 100757 LT +113455 101253 LT +113455 101953 LT +113951 102449 LT +216251 102449 LT +216747 101953 LT +CP BF QS +NP +216747 101253 MT +216251 100757 LT +215551 100757 LT +215055 101253 LT +215055 190856 LT +215551 191352 LT +216251 191352 LT +216747 190856 LT +CP BF QS +NP +216747 190156 MT +216251 189660 LT +215551 189660 LT +215303 189908 LT +202355 202857 LT +202355 203557 LT +202851 204053 LT +203551 204053 LT +203799 203805 LT +216747 190856 LT +CP BF QS +NP +204047 202857 MT +203551 202361 LT +126651 202361 LT +126155 202857 LT +126155 203557 LT +126651 204053 LT +203551 204053 LT +204047 203557 LT +CP BF QS +NP +114899 189908 MT +114651 189660 LT +113951 189660 LT +113455 190156 LT +113455 190856 LT +126403 203805 LT +126651 204053 LT +127351 204053 LT +127847 203557 LT +127847 202857 LT +CP BF QS +NP +127847 126654 MT +127351 126158 LT +126651 126158 LT +126155 126654 LT +126155 165456 LT +126651 165952 LT +127351 165952 LT +127847 165456 LT +CP BF QS +NP +138007 164756 MT +137511 164260 LT +126651 164260 LT +126155 164756 LT +126155 165456 LT +126651 165952 LT +137511 165952 LT +138007 165456 LT +CP BF QS +NP +171027 164756 MT +170531 164260 LT +159671 164260 LT +159175 164756 LT +159175 165456 LT +159671 165952 LT +170531 165952 LT +171027 165456 LT +CP BF QS +NP +204047 164756 MT +203551 164260 LT +192691 164260 LT +192195 164756 LT +192195 165456 LT +192691 165952 LT +203551 165952 LT +204047 165456 LT +CP BF QS +NP +204047 126654 MT +203551 126158 LT +202851 126158 LT +202355 126654 LT +202355 165456 LT +202851 165952 LT +203551 165952 LT +204047 165456 LT +CP BF QS +NP +204047 126654 MT +203551 126158 LT +192691 126158 LT +192195 126654 LT +192195 127354 LT +192691 127850 LT +203551 127850 LT +204047 127354 LT +CP BF QS +NP +171027 126654 MT +170531 126158 LT +159671 126158 LT +159175 126654 LT +159175 127354 LT +159671 127850 LT +170531 127850 LT +171027 127354 LT +CP BF QS +NP +138007 126654 MT +137511 126158 LT +126651 126158 LT +126155 126654 LT +126155 127354 LT +126651 127850 LT +137511 127850 LT +138007 127354 LT +CP BF QS +NP +162137 126128 MT +160897 124888 LT +136285 124888 LT +135045 126128 LT +135045 127880 LT +136285 129120 LT +160897 129120 LT +162137 127880 LT +CP BF QS +NP +195157 126128 MT +193917 124888 LT +169305 124888 LT +168065 126128 LT +168065 127880 LT +169305 129120 LT +193917 129120 LT +195157 127880 LT +CP BF QS +NP +162137 164230 MT +160897 162990 LT +136285 162990 LT +135045 164230 LT +135045 165982 LT +136285 167222 LT +160897 167222 LT +162137 165982 LT +CP BF QS +NP +195157 164230 MT +193917 162990 LT +169305 162990 LT +168065 164230 LT +168065 165982 LT +169305 167222 LT +193917 167222 LT +195157 165982 LT +CP BF QS +[1 0 0 1 723.999 4207.01]ST +F1 F +0 Y<0001>32 0 AT +[1 0 0 1 801.998 4207.01]ST +0 Y<0002>32 0 AT +[1 0 0 1 801.998 4297.01]ST +0 Y<0003>32 0 AT +[1 0 0 1 723.999 4297.01]ST +0 Y<0004>32 0 AT +[1 0 0 1 987.997 4189.01]ST +0 Y<0001>32 0 AT +[1 0 0 1 987.997 4249.01]ST +0 Y<0002>32 0 AT +[1 0 0 1 987.997 4309.01]ST +0 Y<0003>32 0 AT +[1 0 0 1 987.997 4369.01]ST +0 Y<0004>32 0 AT +[1 0 0 1 1078 4189.01]ST +0 Y<000500060006>125 0 AT +[1 0 0 1 1078 4249.01]ST +0 Y<00070008>63 0 AT +[1 0 0 1 1078 4309.01]ST +0 Y<00070009>77 0 AT +[1 0 0 1 1078 4369.01]ST +0 Y<000A000B0007>130 0 AT +[1 0 0 1 1258 4189.01]ST +0 Y<0009000C0005>105 0 AT +[1 0 0 1 1258 4249.01]ST +0 Y<0007000D000E000D000F0008>159 0 AT +[1 0 0 1 1258 4309.01]ST +0 Y<0007000D000E000D000F0009>173 0 AT +[1 0 0 1 1258 4369.01]ST +0 Y<000A00100011001200130014>192 0 AT +[1 0 0 1 5127.98 2929.06]ST +F2 F +0 Y<0001>35 0 AT +[1 0 0 1 5127.98 2989.05]ST +0 Y<0002>35 0 AT +[1 0 0 1 5127.98 3049.05]ST +0 Y<0003>35 0 AT +[1 0 0 1 5127.98 3109.05]ST +0 Y<0004>35 0 AT +[1 0 0 1 5127.98 3169.05]ST +0 Y<000C>35 0 AT +[1 0 0 1 5127.98 3229.05]ST +0 Y<0015>35 0 AT +[1 0 0 1 5127.98 3289.04]ST +0 Y<0016>35 0 AT +[1 0 0 1 5127.98 3349.04]ST +0 Y<0017>35 0 AT +[1 0 0 1 5127.98 3409.04]ST +0 Y<0018>35 0 AT +[1 0 0 1 5127.98 3469.04]ST +0 Y<00010019>70 0 AT +[1 0 0 1 5247.98 2929.06]ST +0 Y<001A001B001C001D>159 0 AT +[1 0 0 1 5247.98 2989.05]ST +0 Y<000500060006>134 0 AT +[1 0 0 1 5247.98 3049.05]ST +0 Y<0013001E000F001F001E>117 0 AT +[1 0 0 1 5247.98 3109.05]ST +0 Y<000A000B0007>140 0 AT +[1 0 0 1 5247.98 3229.05]ST +0 Y<000A000B0007>140 0 AT +[1 0 0 1 5247.98 3349.04]ST +0 Y<000A000B0007>140 0 AT +[1 0 0 1 5247.98 3469.04]ST +0 Y<000A000B0007>140 0 AT +[1 0 0 1 5247.98 3169.05]ST +0 Y<0020002100220021000E>164 0 AT +[1 0 0 1 5247.98 3289.04]ST +0 Y<001C00060023>130 0 AT +[1 0 0 1 5247.98 3409.04]ST +0 Y<001A001D001C001B>159 0 AT +[1 0 0 1 5127.98 2839.06]ST +F3 F +0 Y<001D001C0024>135 0 AT +[1 0 0 1 657.999 4069.02]ST +0 Y<0025001C0026000F000E002700280021000F00260029000F002A001000110013000E000F002B002C0021002D>830 0 AT +[0.00236219 0 -0 -0.00236213 388 4609]ST +NP +1.64042e+06 76400 MT +1.6398e+06 75780 LT +1.63893e+06 75780 LT +1.63831e+06 76400 LT +1.63831e+06 92939 LT +1.63893e+06 93559 LT +1.6398e+06 93559 LT +1.64042e+06 92939 LT +CP BF QS +NP +1.64011e+06 91753 MT +1.6398e+06 91443 LT +1.63893e+06 91443 LT +1.63831e+06 92063 LT +1.63831e+06 92939 LT +1.64666e+06 101293 LT +1.64697e+06 101603 LT +1.64785e+06 101603 LT +1.64847e+06 100983 LT +1.64847e+06 100107 LT +CP BF QS +NP +1.65609e+06 92063 MT +1.65547e+06 91443 LT +1.65459e+06 91443 LT +1.65427e+06 91763 LT +1.64635e+06 100124 LT +1.64635e+06 100983 LT +1.64697e+06 101603 LT +1.64785e+06 101603 LT +1.64817e+06 101283 LT +1.65609e+06 92922 LT +CP BF QS +NP +1.65609e+06 76400 MT +1.65547e+06 75780 LT +1.65459e+06 75780 LT +1.65397e+06 76400 LT +1.65397e+06 92939 LT +1.65459e+06 93559 LT +1.65547e+06 93559 LT +1.65609e+06 92939 LT +CP BF QS +NP +1.65609e+06 88253 MT +1.65547e+06 87633 LT +1.63893e+06 87633 LT +1.63831e+06 88253 LT +1.63831e+06 89129 LT +1.63893e+06 89749 LT +1.65547e+06 89749 LT +1.65609e+06 89129 LT +CP BF QS +NP +1.66413e+06 80633 MT +1.66351e+06 80013 LT +1.66263e+06 80013 LT +1.66201e+06 80633 LT +1.66201e+06 92939 LT +1.66263e+06 93559 LT +1.66351e+06 93559 LT +1.66413e+06 92939 LT +CP BF QS +NP +1.66794e+06 76400 MT +1.66732e+06 75780 LT +1.66644e+06 75780 LT +1.66612e+06 76109 LT +1.66201e+06 80665 LT +1.66201e+06 81509 LT +1.66263e+06 82129 LT +1.66351e+06 82129 LT +1.66384e+06 81800 LT +1.66794e+06 77244 LT +CP BF QS +NP +1.67937e+06 76400 MT +1.67875e+06 75780 LT +1.66644e+06 75780 LT +1.66582e+06 76400 LT +1.66582e+06 77276 LT +1.66644e+06 77896 LT +1.67875e+06 77896 LT +1.67937e+06 77276 LT +CP BF QS +NP +1.67937e+06 76400 MT +1.67875e+06 75780 LT +1.67787e+06 75780 LT +1.67725e+06 76400 LT +1.67725e+06 92939 LT +1.67787e+06 93559 LT +1.67875e+06 93559 LT +1.67937e+06 92939 LT +CP BF QS +NP +1.69122e+06 80633 MT +1.6906e+06 80013 LT +1.68973e+06 80013 LT +1.68911e+06 80633 LT +1.68911e+06 96750 LT +1.68973e+06 97370 LT +1.6906e+06 97370 LT +1.69122e+06 96750 LT +CP BF QS +NP +1.69503e+06 76400 MT +1.69441e+06 75780 LT +1.69354e+06 75780 LT +1.69321e+06 76109 LT +1.68911e+06 80665 LT +1.68911e+06 81509 LT +1.68973e+06 82129 LT +1.6906e+06 82129 LT +1.69093e+06 81800 LT +1.69503e+06 77244 LT +CP BF QS +NP +1.69503e+06 92063 MT +1.69441e+06 91443 LT +1.68592e+06 91443 LT +1.6853e+06 92063 LT +1.6853e+06 92939 LT +1.68592e+06 93559 LT +1.69441e+06 93559 LT +1.69503e+06 92939 LT +CP BF QS +NP +1.70308e+06 76400 MT +1.70246e+06 75780 LT +1.70158e+06 75780 LT +1.70096e+06 76400 LT +1.70096e+06 100983 LT +1.70158e+06 101603 LT +1.70246e+06 101603 LT +1.70308e+06 100983 LT +CP BF QS +NP +1.70689e+06 92063 MT +1.70246e+06 87633 LT +1.70158e+06 87633 LT +1.70096e+06 88253 LT +1.70096e+06 89129 LT +1.70539e+06 93559 LT +1.70627e+06 93559 LT +1.70689e+06 92939 LT +CP BF QS +NP +1.71451e+06 92063 MT +1.71389e+06 91443 LT +1.70539e+06 91443 LT +1.70477e+06 92063 LT +1.70477e+06 92939 LT +1.70539e+06 93559 LT +1.71389e+06 93559 LT +1.71451e+06 92939 LT +CP BF QS +NP +1.71874e+06 88253 MT +1.71812e+06 87633 LT +1.71728e+06 87633 LT +1.71272e+06 91734 LT +1.71239e+06 92063 LT +1.71239e+06 92939 LT +1.71301e+06 93559 LT +1.71385e+06 93559 LT +1.71841e+06 89458 LT +1.71874e+06 89129 LT +CP BF QS +NP +1.71874e+06 76400 MT +1.71812e+06 75780 LT +1.71724e+06 75780 LT +1.71662e+06 76400 LT +1.71662e+06 89129 LT +1.71724e+06 89749 LT +1.71812e+06 89749 LT +1.71874e+06 89129 LT +CP BF QS +NP +1.73821e+06 76400 MT +1.73759e+06 75780 LT +1.72868e+06 75780 LT +1.72806e+06 76400 LT +1.72806e+06 77276 LT +1.72868e+06 77896 LT +1.73759e+06 77896 LT +1.73821e+06 77276 LT +CP BF QS +NP +1.73792e+06 76109 MT +1.73759e+06 75780 LT +1.73672e+06 75780 LT +1.7361e+06 76400 LT +1.7361e+06 77244 LT +1.7402e+06 81800 LT +1.74053e+06 82129 LT +1.7414e+06 82129 LT +1.74202e+06 81509 LT +1.74202e+06 80665 LT +CP BF QS +NP +1.74202e+06 80633 MT +1.7414e+06 80013 LT +1.74053e+06 80013 LT +1.73991e+06 80633 LT +1.73991e+06 89129 LT +1.74053e+06 89749 LT +1.7414e+06 89749 LT +1.74202e+06 89129 LT +CP BF QS +NP +1.74202e+06 88253 MT +1.7414e+06 87633 LT +1.74053e+06 87633 LT +1.7361e+06 92063 LT +1.7361e+06 92939 LT +1.73672e+06 93559 LT +1.73759e+06 93559 LT +1.74202e+06 89129 LT +CP BF QS +NP +1.73821e+06 92063 MT +1.73759e+06 91443 LT +1.72868e+06 91443 LT +1.72806e+06 92063 LT +1.72806e+06 92939 LT +1.72868e+06 93559 LT +1.73759e+06 93559 LT +1.73821e+06 92939 LT +CP BF QS +NP +1.73017e+06 92063 MT +1.72574e+06 87633 LT +1.72486e+06 87633 LT +1.72424e+06 88253 LT +1.72424e+06 89129 LT +1.72868e+06 93559 LT +1.72955e+06 93559 LT +1.73017e+06 92939 LT +CP BF QS +NP +1.72636e+06 80633 MT +1.72574e+06 80013 LT +1.72486e+06 80013 LT +1.72424e+06 80633 LT +1.72424e+06 89129 LT +1.72486e+06 89749 LT +1.72574e+06 89749 LT +1.72636e+06 89129 LT +CP BF QS +NP +1.73017e+06 76400 MT +1.72955e+06 75780 LT +1.72868e+06 75780 LT +1.72835e+06 76109 LT +1.72424e+06 80665 LT +1.72424e+06 81509 LT +1.72486e+06 82129 LT +1.72574e+06 82129 LT +1.72607e+06 81800 LT +1.73017e+06 77244 LT +CP BF QS +NP +1.74964e+06 76400 MT +1.74902e+06 75780 LT +1.74815e+06 75780 LT +1.74753e+06 76400 LT +1.74753e+06 92939 LT +1.74815e+06 93559 LT +1.74902e+06 93559 LT +1.74964e+06 92939 LT +CP BF QS +NP +1.75769e+06 92063 MT +1.75737e+06 91743 LT +1.74901e+06 83823 LT +1.74815e+06 83823 LT +1.74753e+06 84443 LT +1.74753e+06 85319 LT +1.74785e+06 85639 LT +1.75621e+06 93559 LT +1.75707e+06 93559 LT +1.75769e+06 92939 LT +CP BF QS +NP +1.7615e+06 92063 MT +1.76088e+06 91443 LT +1.75619e+06 91443 LT +1.75557e+06 92063 LT +1.75557e+06 92939 LT +1.75619e+06 93559 LT +1.76088e+06 93559 LT +1.7615e+06 92939 LT +CP BF QS +NP +1.77293e+06 92063 MT +1.77231e+06 91443 LT +1.76762e+06 91443 LT +1.767e+06 92063 LT +1.767e+06 92939 LT +1.76762e+06 93559 LT +1.77231e+06 93559 LT +1.77293e+06 92939 LT +CP BF QS +NP +1.77293e+06 88253 MT +1.77231e+06 87633 LT +1.77143e+06 87633 LT +1.77081e+06 88253 LT +1.77081e+06 92939 LT +1.77143e+06 93559 LT +1.77231e+06 93559 LT +1.77293e+06 92939 LT +CP BF QS +NP +1.77293e+06 88253 MT +1.77231e+06 87633 LT +1.76762e+06 87633 LT +1.767e+06 88253 LT +1.767e+06 89129 LT +1.76762e+06 89749 LT +1.77231e+06 89749 LT +1.77293e+06 89129 LT +CP BF QS +NP +1.76912e+06 88253 MT +1.7685e+06 87633 LT +1.76762e+06 87633 LT +1.767e+06 88253 LT +1.767e+06 92939 LT +1.76762e+06 93559 LT +1.7685e+06 93559 LT +1.76912e+06 92939 LT +CP BF QS +NP +1.77293e+06 80633 MT +1.77231e+06 80013 LT +1.76762e+06 80013 LT +1.767e+06 80633 LT +1.767e+06 81509 LT +1.76762e+06 82129 LT +1.77231e+06 82129 LT +1.77293e+06 81509 LT +CP BF QS +NP +1.77293e+06 76400 MT +1.77231e+06 75780 LT +1.77143e+06 75780 LT +1.77081e+06 76400 LT +1.77081e+06 81509 LT +1.77143e+06 82129 LT +1.77231e+06 82129 LT +1.77293e+06 81509 LT +CP BF QS +NP +1.77293e+06 76400 MT +1.77231e+06 75780 LT +1.76762e+06 75780 LT +1.767e+06 76400 LT +1.767e+06 77276 LT +1.76762e+06 77896 LT +1.77231e+06 77896 LT +1.77293e+06 77276 LT +CP BF QS +NP +1.76912e+06 76400 MT +1.7685e+06 75780 LT +1.76762e+06 75780 LT +1.767e+06 76400 LT +1.767e+06 81509 LT +1.76762e+06 82129 LT +1.7685e+06 82129 LT +1.76912e+06 81509 LT +CP BF QS +NP +1.80425e+06 76400 MT +1.80363e+06 75780 LT +1.80276e+06 75780 LT +1.80214e+06 76400 LT +1.80214e+06 100983 LT +1.80276e+06 101603 LT +1.80363e+06 101603 LT +1.80425e+06 100983 LT +CP BF QS +NP +1.81611e+06 100107 MT +1.81549e+06 99487 LT +1.80276e+06 99487 LT +1.80214e+06 100107 LT +1.80214e+06 100983 LT +1.80276e+06 101603 LT +1.81549e+06 101603 LT +1.81611e+06 100983 LT +CP BF QS +NP +1.81992e+06 95874 MT +1.8193e+06 95254 LT +1.81842e+06 95254 LT +1.81809e+06 95583 LT +1.81399e+06 100139 LT +1.81399e+06 100983 LT +1.81461e+06 101603 LT +1.81549e+06 101603 LT +1.81582e+06 101274 LT +1.81992e+06 96718 LT +CP BF QS +NP +1.81992e+06 88253 MT +1.8193e+06 87633 LT +1.81842e+06 87633 LT +1.8178e+06 88253 LT +1.8178e+06 96750 LT +1.81842e+06 97370 LT +1.8193e+06 97370 LT +1.81992e+06 96750 LT +CP BF QS +NP +1.81992e+06 88253 MT +1.81549e+06 83823 LT +1.81461e+06 83823 LT +1.81399e+06 84443 LT +1.81399e+06 85319 LT +1.81842e+06 89749 LT +1.8193e+06 89749 LT +1.81992e+06 89129 LT +CP BF QS +NP +1.81611e+06 84443 MT +1.81549e+06 83823 LT +1.80276e+06 83823 LT +1.80214e+06 84443 LT +1.80214e+06 85319 LT +1.80276e+06 85939 LT +1.81549e+06 85939 LT +1.81611e+06 85319 LT +CP BF QS +NP +1.81992e+06 76400 MT +1.8193e+06 75780 LT +1.81842e+06 75780 LT +1.8181e+06 76100 LT +1.81018e+06 84460 LT +1.81018e+06 85319 LT +1.8108e+06 85939 LT +1.81168e+06 85939 LT +1.812e+06 85619 LT +1.81992e+06 77259 LT +CP BF QS +NP +1.83939e+06 76400 MT +1.83877e+06 75780 LT +1.83028e+06 75780 LT +1.82966e+06 76400 LT +1.82966e+06 77276 LT +1.83028e+06 77896 LT +1.83877e+06 77896 LT +1.83939e+06 77276 LT +CP BF QS +NP +1.8391e+06 76109 MT +1.83877e+06 75780 LT +1.8379e+06 75780 LT +1.83728e+06 76400 LT +1.83728e+06 77244 LT +1.84138e+06 81800 LT +1.8417e+06 82129 LT +1.84258e+06 82129 LT +1.8432e+06 81509 LT +1.8432e+06 80665 LT +CP BF QS +NP +1.8432e+06 80633 MT +1.84258e+06 80013 LT +1.8417e+06 80013 LT +1.84108e+06 80633 LT +1.84108e+06 89129 LT +1.8417e+06 89749 LT +1.84258e+06 89749 LT +1.8432e+06 89129 LT +CP BF QS +NP +1.8432e+06 88253 MT +1.84258e+06 87633 LT +1.8417e+06 87633 LT +1.83728e+06 92063 LT +1.83728e+06 92939 LT +1.8379e+06 93559 LT +1.83877e+06 93559 LT +1.8432e+06 89129 LT +CP BF QS +NP +1.83939e+06 92063 MT +1.83877e+06 91443 LT +1.83028e+06 91443 LT +1.82966e+06 92063 LT +1.82966e+06 92939 LT +1.83028e+06 93559 LT +1.83877e+06 93559 LT +1.83939e+06 92939 LT +CP BF QS +NP +1.83177e+06 92063 MT +1.83144e+06 91734 LT +1.82689e+06 87633 LT +1.82604e+06 87633 LT +1.82542e+06 88253 LT +1.82542e+06 89129 LT +1.82575e+06 89458 LT +1.83031e+06 93559 LT +1.83115e+06 93559 LT +1.83177e+06 92939 LT +CP BF QS +NP +1.82754e+06 80633 MT +1.82692e+06 80013 LT +1.82604e+06 80013 LT +1.82542e+06 80633 LT +1.82542e+06 89129 LT +1.82604e+06 89749 LT +1.82692e+06 89749 LT +1.82754e+06 89129 LT +CP BF QS +NP +1.83177e+06 76400 MT +1.83115e+06 75780 LT +1.83028e+06 75780 LT +1.82542e+06 80633 LT +1.82542e+06 81509 LT +1.82604e+06 82129 LT +1.82692e+06 82129 LT +1.83177e+06 77276 LT +CP BF QS +NP +1.85124e+06 76400 MT +1.85062e+06 75780 LT +1.84975e+06 75780 LT +1.84913e+06 76400 LT +1.84913e+06 92939 LT +1.84975e+06 93559 LT +1.85062e+06 93559 LT +1.85124e+06 92939 LT +CP BF QS +NP +1.86267e+06 92063 MT +1.86205e+06 91443 LT +1.84975e+06 91443 LT +1.84913e+06 92063 LT +1.84913e+06 92939 LT +1.84975e+06 93559 LT +1.86205e+06 93559 LT +1.86267e+06 92939 LT +CP BF QS +NP +1.86648e+06 88253 MT +1.86586e+06 87633 LT +1.86499e+06 87633 LT +1.86056e+06 92063 LT +1.86056e+06 92939 LT +1.86118e+06 93559 LT +1.86205e+06 93559 LT +1.86648e+06 89129 LT +CP BF QS +NP +1.86648e+06 76400 MT +1.86586e+06 75780 LT +1.86499e+06 75780 LT +1.86437e+06 76400 LT +1.86437e+06 89129 LT +1.86499e+06 89749 LT +1.86586e+06 89749 LT +1.86648e+06 89129 LT +CP BF QS +NP +1.88596e+06 92063 MT +1.88534e+06 91443 LT +1.87684e+06 91443 LT +1.87622e+06 92063 LT +1.87622e+06 92939 LT +1.87684e+06 93559 LT +1.88534e+06 93559 LT +1.88596e+06 92939 LT +CP BF QS +NP +1.89019e+06 88253 MT +1.88957e+06 87633 LT +1.88873e+06 87633 LT +1.88417e+06 91734 LT +1.88384e+06 92063 LT +1.88384e+06 92939 LT +1.88446e+06 93559 LT +1.88531e+06 93559 LT +1.88986e+06 89458 LT +1.89019e+06 89129 LT +CP BF QS +NP +1.89019e+06 76400 MT +1.88957e+06 75780 LT +1.8887e+06 75780 LT +1.88808e+06 76400 LT +1.88808e+06 89129 LT +1.8887e+06 89749 LT +1.88957e+06 89749 LT +1.89019e+06 89129 LT +CP BF QS +NP +1.89019e+06 76400 MT +1.88957e+06 75780 LT +1.87684e+06 75780 LT +1.87622e+06 76400 LT +1.87622e+06 77276 LT +1.87684e+06 77896 LT +1.88957e+06 77896 LT +1.89019e+06 77276 LT +CP BF QS +NP +1.87834e+06 76400 MT +1.87772e+06 75780 LT +1.87684e+06 75780 LT +1.87651e+06 76109 LT +1.87241e+06 80665 LT +1.87241e+06 81509 LT +1.87303e+06 82129 LT +1.87391e+06 82129 LT +1.87424e+06 81800 LT +1.87834e+06 77244 LT +CP BF QS +NP +1.87834e+06 84443 MT +1.87391e+06 80013 LT +1.87303e+06 80013 LT +1.87241e+06 80633 LT +1.87241e+06 81509 LT +1.87684e+06 85939 LT +1.87772e+06 85939 LT +1.87834e+06 85319 LT +CP BF QS +NP +1.89019e+06 84443 MT +1.88957e+06 83823 LT +1.87684e+06 83823 LT +1.87622e+06 84443 LT +1.87622e+06 85319 LT +1.87684e+06 85939 LT +1.88957e+06 85939 LT +1.89019e+06 85319 LT +CP BF QS +NP +1.90162e+06 100107 MT +1.901e+06 99487 LT +1.89632e+06 99487 LT +1.8957e+06 100107 LT +1.8957e+06 100983 LT +1.89632e+06 101603 LT +1.901e+06 101603 LT +1.90162e+06 100983 LT +CP BF QS +NP +1.90162e+06 76400 MT +1.901e+06 75780 LT +1.90012e+06 75780 LT +1.8995e+06 76400 LT +1.8995e+06 100983 LT +1.90012e+06 101603 LT +1.901e+06 101603 LT +1.90162e+06 100983 LT +CP BF QS +NP +1.90543e+06 76400 MT +1.90481e+06 75780 LT +1.89632e+06 75780 LT +1.8957e+06 76400 LT +1.8957e+06 77276 LT +1.89632e+06 77896 LT +1.90481e+06 77896 LT +1.90543e+06 77276 LT +CP BF QS +NP +1.92914e+06 76400 MT +1.92852e+06 75780 LT +1.92764e+06 75780 LT +1.92702e+06 76400 LT +1.92702e+06 100983 LT +1.92764e+06 101603 LT +1.92852e+06 101603 LT +1.92914e+06 100983 LT +CP BF QS +NP +1.92914e+06 76400 MT +1.92852e+06 75780 LT +1.91579e+06 75780 LT +1.91517e+06 76400 LT +1.91517e+06 77276 LT +1.91579e+06 77896 LT +1.92852e+06 77896 LT +1.92914e+06 77276 LT +CP BF QS +NP +1.91728e+06 76400 MT +1.91666e+06 75780 LT +1.91579e+06 75780 LT +1.91546e+06 76109 LT +1.91136e+06 80665 LT +1.91136e+06 81509 LT +1.91198e+06 82129 LT +1.91286e+06 82129 LT +1.91318e+06 81800 LT +1.91728e+06 77244 LT +CP BF QS +NP +1.91348e+06 80633 MT +1.91286e+06 80013 LT +1.91198e+06 80013 LT +1.91136e+06 80633 LT +1.91136e+06 89129 LT +1.91198e+06 89749 LT +1.91286e+06 89749 LT +1.91348e+06 89129 LT +CP BF QS +NP +1.91728e+06 92063 MT +1.91286e+06 87633 LT +1.91198e+06 87633 LT +1.91136e+06 88253 LT +1.91136e+06 89129 LT +1.91579e+06 93559 LT +1.91666e+06 93559 LT +1.91728e+06 92939 LT +CP BF QS +NP +1.92914e+06 92063 MT +1.92852e+06 91443 LT +1.91579e+06 91443 LT +1.91517e+06 92063 LT +1.91517e+06 92939 LT +1.91579e+06 93559 LT +1.92852e+06 93559 LT +1.92914e+06 92939 LT +CP BF QS +NP +1.9757e+06 95874 MT +1.97508e+06 95254 LT +1.97421e+06 95254 LT +1.97388e+06 95583 LT +1.96978e+06 100139 LT +1.96978e+06 100983 LT +1.9704e+06 101603 LT +1.97128e+06 101603 LT +1.9716e+06 101274 LT +1.9757e+06 96718 LT +CP BF QS +NP +1.9719e+06 100107 MT +1.97128e+06 99487 LT +1.96278e+06 99487 LT +1.96216e+06 100107 LT +1.96216e+06 100983 LT +1.96278e+06 101603 LT +1.97128e+06 101603 LT +1.9719e+06 100983 LT +CP BF QS +NP +1.96428e+06 100107 MT +1.95942e+06 95254 LT +1.95855e+06 95254 LT +1.95793e+06 95874 LT +1.95793e+06 96750 LT +1.96278e+06 101603 LT +1.96366e+06 101603 LT +1.96428e+06 100983 LT +CP BF QS +NP +1.96004e+06 92063 MT +1.95942e+06 91443 LT +1.95855e+06 91443 LT +1.95793e+06 92063 LT +1.95793e+06 96750 LT +1.95855e+06 97370 LT +1.95942e+06 97370 LT +1.96004e+06 96750 LT +CP BF QS +NP +1.96428e+06 88253 MT +1.96366e+06 87633 LT +1.96281e+06 87633 LT +1.95826e+06 91734 LT +1.95793e+06 92063 LT +1.95793e+06 92939 LT +1.95855e+06 93559 LT +1.95939e+06 93559 LT +1.96395e+06 89458 LT +1.96428e+06 89129 LT +CP BF QS +NP +1.9719e+06 88253 MT +1.97128e+06 87633 LT +1.96278e+06 87633 LT +1.96216e+06 88253 LT +1.96216e+06 89129 LT +1.96278e+06 89749 LT +1.97128e+06 89749 LT +1.9719e+06 89129 LT +CP BF QS +NP +1.9757e+06 84443 MT +1.97508e+06 83823 LT +1.97421e+06 83823 LT +1.96978e+06 88253 LT +1.96978e+06 89129 LT +1.9704e+06 89749 LT +1.97128e+06 89749 LT +1.9757e+06 85319 LT +CP BF QS +NP +1.9757e+06 80633 MT +1.97508e+06 80013 LT +1.97421e+06 80013 LT +1.97359e+06 80633 LT +1.97359e+06 85319 LT +1.97421e+06 85939 LT +1.97508e+06 85939 LT +1.9757e+06 85319 LT +CP BF QS +NP +1.9716e+06 76109 MT +1.97128e+06 75780 LT +1.9704e+06 75780 LT +1.96978e+06 76400 LT +1.96978e+06 77244 LT +1.97388e+06 81800 LT +1.97421e+06 82129 LT +1.97508e+06 82129 LT +1.9757e+06 81509 LT +1.9757e+06 80665 LT +CP BF QS +NP +1.9719e+06 76400 MT +1.97128e+06 75780 LT +1.96278e+06 75780 LT +1.96216e+06 76400 LT +1.96216e+06 77276 LT +1.96278e+06 77896 LT +1.97128e+06 77896 LT +1.9719e+06 77276 LT +CP BF QS +NP +1.96428e+06 76400 MT +1.96366e+06 75780 LT +1.96278e+06 75780 LT +1.95793e+06 80633 LT +1.95793e+06 81509 LT +1.95855e+06 82129 LT +1.95942e+06 82129 LT +1.96428e+06 77276 LT +CP BF QS +NP +1.99899e+06 92063 MT +1.99837e+06 91443 LT +1.98606e+06 91443 LT +1.98544e+06 92063 LT +1.98544e+06 92939 LT +1.98606e+06 93559 LT +1.99837e+06 93559 LT +1.99899e+06 92939 LT +CP BF QS +NP +1.98756e+06 92063 MT +1.98313e+06 87633 LT +1.98225e+06 87633 LT +1.98163e+06 88253 LT +1.98163e+06 89129 LT +1.98606e+06 93559 LT +1.98694e+06 93559 LT +1.98756e+06 92939 LT +CP BF QS +NP +1.98375e+06 80633 MT +1.98313e+06 80013 LT +1.98225e+06 80013 LT +1.98163e+06 80633 LT +1.98163e+06 89129 LT +1.98225e+06 89749 LT +1.98313e+06 89749 LT +1.98375e+06 89129 LT +CP BF QS +NP +1.98756e+06 76400 MT +1.98694e+06 75780 LT +1.98606e+06 75780 LT +1.98573e+06 76109 LT +1.98163e+06 80665 LT +1.98163e+06 81509 LT +1.98225e+06 82129 LT +1.98313e+06 82129 LT +1.98346e+06 81800 LT +1.98756e+06 77244 LT +CP BF QS +NP +1.99899e+06 76400 MT +1.99837e+06 75780 LT +1.98606e+06 75780 LT +1.98544e+06 76400 LT +1.98544e+06 77276 LT +1.98606e+06 77896 LT +1.99837e+06 77896 LT +1.99899e+06 77276 LT +CP BF QS +NP +2.00703e+06 76400 MT +2.00641e+06 75780 LT +2.00554e+06 75780 LT +2.00492e+06 76400 LT +2.00492e+06 100983 LT +2.00554e+06 101603 LT +2.00641e+06 101603 LT +2.00703e+06 100983 LT +CP BF QS +NP +2.01084e+06 92063 MT +2.00641e+06 87633 LT +2.00554e+06 87633 LT +2.00492e+06 88253 LT +2.00492e+06 89129 LT +2.00935e+06 93559 LT +2.01022e+06 93559 LT +2.01084e+06 92939 LT +CP BF QS +NP +2.01888e+06 92063 MT +2.01826e+06 91443 LT +2.00935e+06 91443 LT +2.00873e+06 92063 LT +2.00873e+06 92939 LT +2.00935e+06 93559 LT +2.01826e+06 93559 LT +2.01888e+06 92939 LT +CP BF QS +NP +2.0227e+06 88253 MT +2.02208e+06 87633 LT +2.0212e+06 87633 LT +2.01677e+06 92063 LT +2.01677e+06 92939 LT +2.01739e+06 93559 LT +2.01826e+06 93559 LT +2.0227e+06 89129 LT +CP BF QS +NP +2.0227e+06 76400 MT +2.02208e+06 75780 LT +2.0212e+06 75780 LT +2.02058e+06 76400 LT +2.02058e+06 89129 LT +2.0212e+06 89749 LT +2.02208e+06 89749 LT +2.0227e+06 89129 LT +CP BF QS +NP +2.04217e+06 92063 MT +2.04155e+06 91443 LT +2.03263e+06 91443 LT +2.03201e+06 92063 LT +2.03201e+06 92939 LT +2.03263e+06 93559 LT +2.04155e+06 93559 LT +2.04217e+06 92939 LT +CP BF QS +NP +2.04598e+06 88253 MT +2.04536e+06 87633 LT +2.04448e+06 87633 LT +2.04005e+06 92063 LT +2.04005e+06 92939 LT +2.04067e+06 93559 LT +2.04155e+06 93559 LT +2.04598e+06 89129 LT +CP BF QS +NP +2.04598e+06 76400 MT +2.04536e+06 75780 LT +2.04448e+06 75780 LT +2.04386e+06 76400 LT +2.04386e+06 89129 LT +2.04448e+06 89749 LT +2.04536e+06 89749 LT +2.04598e+06 89129 LT +CP BF QS +NP +2.04598e+06 76400 MT +2.04536e+06 75780 LT +2.03263e+06 75780 LT +2.03201e+06 76400 LT +2.03201e+06 77276 LT +2.03263e+06 77896 LT +2.04536e+06 77896 LT +2.04598e+06 77276 LT +CP BF QS +NP +2.03412e+06 76400 MT +2.0335e+06 75780 LT +2.03263e+06 75780 LT +2.0323e+06 76109 LT +2.0282e+06 80665 LT +2.0282e+06 81509 LT +2.02882e+06 82129 LT +2.0297e+06 82129 LT +2.03002e+06 81800 LT +2.03412e+06 77244 LT +CP BF QS +NP +2.03412e+06 84443 MT +2.0297e+06 80013 LT +2.02882e+06 80013 LT +2.0282e+06 80633 LT +2.0282e+06 81509 LT +2.03263e+06 85939 LT +2.0335e+06 85939 LT +2.03412e+06 85319 LT +CP BF QS +NP +2.04598e+06 84443 MT +2.04536e+06 83823 LT +2.03263e+06 83823 LT +2.03201e+06 84443 LT +2.03201e+06 85319 LT +2.03263e+06 85939 LT +2.04536e+06 85939 LT +2.04598e+06 85319 LT +CP BF QS +NP +2.05783e+06 80633 MT +2.05721e+06 80013 LT +2.05634e+06 80013 LT +2.05572e+06 80633 LT +2.05572e+06 96750 LT +2.05634e+06 97370 LT +2.05721e+06 97370 LT +2.05783e+06 96750 LT +CP BF QS +NP +2.06164e+06 76400 MT +2.06102e+06 75780 LT +2.06015e+06 75780 LT +2.05982e+06 76109 LT +2.05572e+06 80665 LT +2.05572e+06 81509 LT +2.05634e+06 82129 LT +2.05721e+06 82129 LT +2.05754e+06 81800 LT +2.06164e+06 77244 LT +CP BF QS +NP +2.06164e+06 92063 MT +2.06102e+06 91443 LT +2.0521e+06 91443 LT +2.05148e+06 92063 LT +2.05148e+06 92939 LT +2.0521e+06 93559 LT +2.06102e+06 93559 LT +2.06164e+06 92939 LT +CP BF QS +NP +2.08112e+06 76400 MT +2.0805e+06 75780 LT +2.07158e+06 75780 LT +2.07096e+06 76400 LT +2.07096e+06 77276 LT +2.07158e+06 77896 LT +2.0805e+06 77896 LT +2.08112e+06 77276 LT +CP BF QS +NP +2.07307e+06 76400 MT +2.07245e+06 75780 LT +2.07158e+06 75780 LT +2.07125e+06 76109 LT +2.06715e+06 80665 LT +2.06715e+06 81509 LT +2.06777e+06 82129 LT +2.06864e+06 82129 LT +2.06897e+06 81800 LT +2.07307e+06 77244 LT +CP BF QS +NP +2.06926e+06 80633 MT +2.06864e+06 80013 LT +2.06777e+06 80013 LT +2.06715e+06 80633 LT +2.06715e+06 89129 LT +2.06777e+06 89749 LT +2.06864e+06 89749 LT +2.06926e+06 89129 LT +CP BF QS +NP +2.07307e+06 92063 MT +2.06864e+06 87633 LT +2.06777e+06 87633 LT +2.06715e+06 88253 LT +2.06715e+06 89129 LT +2.07158e+06 93559 LT +2.07245e+06 93559 LT +2.07307e+06 92939 LT +CP BF QS +NP +2.08112e+06 92063 MT +2.0805e+06 91443 LT +2.07158e+06 91443 LT +2.07096e+06 92063 LT +2.07096e+06 92939 LT +2.07158e+06 93559 LT +2.0805e+06 93559 LT +2.08112e+06 92939 LT +CP BF QS +NP +2.08492e+06 88253 MT +2.0843e+06 87633 LT +2.08343e+06 87633 LT +2.079e+06 92063 LT +2.079e+06 92939 LT +2.07962e+06 93559 LT +2.0805e+06 93559 LT +2.08492e+06 89129 LT +CP BF QS +NP +2.08492e+06 84443 MT +2.0843e+06 83823 LT +2.08343e+06 83823 LT +2.08281e+06 84443 LT +2.08281e+06 89129 LT +2.08343e+06 89749 LT +2.0843e+06 89749 LT +2.08492e+06 89129 LT +CP BF QS +NP +2.08492e+06 84443 MT +2.0843e+06 83823 LT +2.06777e+06 83823 LT +2.06715e+06 84443 LT +2.06715e+06 85319 LT +2.06777e+06 85939 LT +2.0843e+06 85939 LT +2.08492e+06 85319 LT +CP BF QS +NP +2.09254e+06 76400 MT +2.09192e+06 75780 LT +2.09105e+06 75780 LT +2.09043e+06 76400 LT +2.09043e+06 92939 LT +2.09105e+06 93559 LT +2.09192e+06 93559 LT +2.09254e+06 92939 LT +CP BF QS +NP +2.1044e+06 92063 MT +2.10378e+06 91443 LT +2.09105e+06 91443 LT +2.09043e+06 92063 LT +2.09043e+06 92939 LT +2.09105e+06 93559 LT +2.10378e+06 93559 LT +2.1044e+06 92939 LT +CP BF QS +NP +2.10821e+06 88253 MT +2.10759e+06 87633 LT +2.10671e+06 87633 LT +2.10228e+06 92063 LT +2.10228e+06 92939 LT +2.1029e+06 93559 LT +2.10378e+06 93559 LT +2.10821e+06 89129 LT +CP BF QS +NP +2.10821e+06 76400 MT +2.10759e+06 75780 LT +2.10671e+06 75780 LT +2.10609e+06 76400 LT +2.10609e+06 89129 LT +2.10671e+06 89749 LT +2.10759e+06 89749 LT +2.10821e+06 89129 LT +CP BF QS +[1 0 0 1 1528 4189.01]ST +F1 F +0 Y<002000210014>107 0 AT +[1 0 0 1 1528 4369.01]ST +0 Y<0026002E000D001F002F>139 0 AT +[1 0 0 1 1528 4369.01]ST +0 Y<0026002E000D001F002F>139 0 AT +[1 0 0 1 1528 4309.01]ST +0 Y<000A0010002100210013>160 0 AT +[1 0 0 1 1528 4249.01]ST +0 Y<00300031002C000E0021>147 0 AT +[0.00236219 0 -0 -0.00236213 388 4609]ST +NP +1.64339e+06 265234 MT +1.6419e+06 263746 LT +1.6398e+06 263746 LT +1.63831e+06 265234 LT +1.63831e+06 297395 LT +1.6398e+06 298883 LT +1.6419e+06 298883 LT +1.64339e+06 297395 LT +CP BF QS +NP +1.65312e+06 255497 MT +1.65164e+06 254009 LT +1.64953e+06 254009 LT +1.63831e+06 265234 LT +1.63831e+06 267338 LT +1.6398e+06 268826 LT +1.6419e+06 268826 LT +1.65312e+06 257601 LT +CP BF QS +NP +1.68318e+06 255497 MT +1.68169e+06 254009 LT +1.64953e+06 254009 LT +1.64804e+06 255497 LT +1.64804e+06 257601 LT +1.64953e+06 259089 LT +1.68169e+06 259089 LT +1.68318e+06 257601 LT +CP BF QS +NP +1.68318e+06 255497 MT +1.68169e+06 254009 LT +1.67959e+06 254009 LT +1.6781e+06 255497 LT +1.6781e+06 297395 LT +1.67959e+06 298883 LT +1.68169e+06 298883 LT +1.68318e+06 297395 LT +CP BF QS +NP +1.73271e+06 255497 MT +1.73122e+06 254009 LT +1.69906e+06 254009 LT +1.69757e+06 255497 LT +1.69757e+06 257601 LT +1.69906e+06 259089 LT +1.73122e+06 259089 LT +1.73271e+06 257601 LT +CP BF QS +NP +1.74245e+06 265234 MT +1.73122e+06 254009 LT +1.72912e+06 254009 LT +1.72763e+06 255497 LT +1.72763e+06 257601 LT +1.73886e+06 268826 LT +1.74096e+06 268826 LT +1.74245e+06 267338 LT +CP BF QS +NP +1.74245e+06 265234 MT +1.74096e+06 263746 LT +1.73886e+06 263746 LT +1.73809e+06 264509 LT +1.72763e+06 275426 LT +1.72763e+06 277498 LT +1.72912e+06 278986 LT +1.73122e+06 278986 LT +1.73199e+06 278223 LT +1.74245e+06 267306 LT +CP BF QS +NP +1.73271e+06 275394 MT +1.73122e+06 273906 LT +1.70922e+06 273906 LT +1.70773e+06 275394 LT +1.70773e+06 277498 LT +1.70922e+06 278986 LT +1.73122e+06 278986 LT +1.73271e+06 277498 LT +CP BF QS +NP +1.71281e+06 275394 MT +1.71133e+06 273906 LT +1.70925e+06 273906 LT +1.69834e+06 284368 LT +1.69757e+06 285131 LT +1.69757e+06 287235 LT +1.69906e+06 288723 LT +1.70113e+06 288723 LT +1.71205e+06 278261 LT +1.71281e+06 277498 LT +CP BF QS +NP +1.71281e+06 295291 MT +1.70117e+06 283643 LT +1.69906e+06 283643 LT +1.69757e+06 285131 LT +1.69757e+06 287235 LT +1.70922e+06 298883 LT +1.71133e+06 298883 LT +1.71281e+06 297395 LT +CP BF QS +NP +1.74245e+06 295291 MT +1.74096e+06 293803 LT +1.70922e+06 293803 LT +1.70773e+06 295291 LT +1.70773e+06 297395 LT +1.70922e+06 298883 LT +1.74096e+06 298883 LT +1.74245e+06 297395 LT +CP BF QS +NP +1.76234e+06 255497 MT +1.76086e+06 254009 LT +1.75875e+06 254009 LT +1.75726e+06 255497 LT +1.75726e+06 316869 LT +1.75875e+06 318357 LT +1.76086e+06 318357 LT +1.76234e+06 316869 LT +CP BF QS +NP +1.79198e+06 255497 MT +1.79049e+06 254009 LT +1.75875e+06 254009 LT +1.75726e+06 255497 LT +1.75726e+06 257601 LT +1.75875e+06 259089 LT +1.79049e+06 259089 LT +1.79198e+06 257601 LT +CP BF QS +NP +1.80172e+06 265234 MT +1.79049e+06 254009 LT +1.78839e+06 254009 LT +1.7869e+06 255497 LT +1.7869e+06 257601 LT +1.79812e+06 268826 LT +1.80023e+06 268826 LT +1.80172e+06 267338 LT +CP BF QS +NP +1.80172e+06 265234 MT +1.80023e+06 263746 LT +1.79812e+06 263746 LT +1.79664e+06 265234 LT +1.79664e+06 287235 LT +1.79812e+06 288723 LT +1.80023e+06 288723 LT +1.80172e+06 287235 LT +CP BF QS +NP +1.80172e+06 285131 MT +1.80023e+06 283643 LT +1.79812e+06 283643 LT +1.79736e+06 284406 LT +1.7869e+06 295323 LT +1.7869e+06 297395 LT +1.78839e+06 298883 LT +1.79049e+06 298883 LT +1.79125e+06 298120 LT +1.80172e+06 287203 LT +CP BF QS +NP +1.79198e+06 295291 MT +1.79049e+06 293803 LT +1.75875e+06 293803 LT +1.75726e+06 295291 LT +1.75726e+06 297395 LT +1.75875e+06 298883 LT +1.79049e+06 298883 LT +1.79198e+06 297395 LT +CP BF QS +NP +1.8614e+06 285131 MT +1.85992e+06 283643 LT +1.81802e+06 283643 LT +1.81653e+06 285131 LT +1.81653e+06 287235 LT +1.81802e+06 288723 LT +1.85992e+06 288723 LT +1.8614e+06 287235 LT +CP BF QS +NP +1.91094e+06 255497 MT +1.90945e+06 254009 LT +1.87729e+06 254009 LT +1.8758e+06 255497 LT +1.8758e+06 257601 LT +1.87729e+06 259089 LT +1.90945e+06 259089 LT +1.91094e+06 257601 LT +CP BF QS +NP +1.92067e+06 265234 MT +1.90945e+06 254009 LT +1.90734e+06 254009 LT +1.90586e+06 255497 LT +1.90586e+06 257601 LT +1.91708e+06 268826 LT +1.91918e+06 268826 LT +1.92067e+06 267338 LT +CP BF QS +NP +1.92067e+06 265234 MT +1.91918e+06 263746 LT +1.91708e+06 263746 LT +1.91632e+06 264509 LT +1.90586e+06 275426 LT +1.90586e+06 277498 LT +1.90734e+06 278986 LT +1.90945e+06 278986 LT +1.91021e+06 278223 LT +1.92067e+06 267306 LT +CP BF QS +NP +1.91094e+06 275394 MT +1.90945e+06 273906 LT +1.88745e+06 273906 LT +1.88596e+06 275394 LT +1.88596e+06 277498 LT +1.88745e+06 278986 LT +1.90945e+06 278986 LT +1.91094e+06 277498 LT +CP BF QS +NP +1.89104e+06 275394 MT +1.88955e+06 273906 LT +1.88748e+06 273906 LT +1.87656e+06 284368 LT +1.8758e+06 285131 LT +1.8758e+06 287235 LT +1.87729e+06 288723 LT +1.87936e+06 288723 LT +1.89028e+06 278261 LT +1.89104e+06 277498 LT +CP BF QS +NP +1.89104e+06 295291 MT +1.87939e+06 283643 LT +1.87729e+06 283643 LT +1.8758e+06 285131 LT +1.8758e+06 287235 LT +1.88745e+06 298883 LT +1.88955e+06 298883 LT +1.89104e+06 297395 LT +CP BF QS +NP +1.92067e+06 295291 MT +1.91918e+06 293803 LT +1.88745e+06 293803 LT +1.88596e+06 295291 LT +1.88596e+06 297395 LT +1.88745e+06 298883 LT +1.91918e+06 298883 LT +1.92067e+06 297395 LT +CP BF QS +NP +1.9702e+06 255497 MT +1.96871e+06 254009 LT +1.94671e+06 254009 LT +1.94522e+06 255497 LT +1.94522e+06 257601 LT +1.94671e+06 259089 LT +1.96871e+06 259089 LT +1.9702e+06 257601 LT +CP BF QS +NP +1.9503e+06 255497 MT +1.94882e+06 254009 LT +1.94671e+06 254009 LT +1.93549e+06 265234 LT +1.93549e+06 267338 LT +1.93698e+06 268826 LT +1.93908e+06 268826 LT +1.9503e+06 257601 LT +CP BF QS +NP +1.94057e+06 265234 MT +1.93908e+06 263746 LT +1.93698e+06 263746 LT +1.93549e+06 265234 LT +1.93549e+06 287235 LT +1.93698e+06 288723 LT +1.93908e+06 288723 LT +1.94057e+06 287235 LT +CP BF QS +NP +1.93984e+06 284406 MT +1.93908e+06 283643 LT +1.93698e+06 283643 LT +1.93549e+06 285131 LT +1.93549e+06 287203 LT +1.94595e+06 298120 LT +1.94671e+06 298883 LT +1.94882e+06 298883 LT +1.9503e+06 297395 LT +1.9503e+06 295323 LT +CP BF QS +NP +1.9702e+06 295291 MT +1.96871e+06 293803 LT +1.94671e+06 293803 LT +1.94522e+06 295291 LT +1.94522e+06 297395 LT +1.94671e+06 298883 LT +1.96871e+06 298883 LT +1.9702e+06 297395 LT +CP BF QS +NP +1.97994e+06 285131 MT +1.97845e+06 283643 LT +1.97635e+06 283643 LT +1.97558e+06 284406 LT +1.96512e+06 295323 LT +1.96512e+06 297395 LT +1.96661e+06 298883 LT +1.96871e+06 298883 LT +1.96948e+06 298120 LT +1.97994e+06 287203 LT +CP BF QS +NP +1.97994e+06 275394 MT +1.97845e+06 273906 LT +1.97635e+06 273906 LT +1.97486e+06 275394 LT +1.97486e+06 287235 LT +1.97635e+06 288723 LT +1.97845e+06 288723 LT +1.97994e+06 287235 LT +CP BF QS +NP +1.97994e+06 275394 MT +1.97845e+06 273906 LT +1.93698e+06 273906 LT +1.93549e+06 275394 LT +1.93549e+06 277498 LT +1.93698e+06 278986 LT +1.97845e+06 278986 LT +1.97994e+06 277498 LT +CP BF QS +NP +1.99984e+06 255497 MT +1.99835e+06 254009 LT +1.99624e+06 254009 LT +1.99476e+06 255497 LT +1.99476e+06 297395 LT +1.99624e+06 298883 LT +1.99835e+06 298883 LT +1.99984e+06 297395 LT +CP BF QS +NP +2.01973e+06 295291 MT +1.99835e+06 273906 LT +1.99624e+06 273906 LT +1.99476e+06 275394 LT +1.99476e+06 277498 LT +2.01614e+06 298883 LT +2.01824e+06 298883 LT +2.01973e+06 297395 LT +CP BF QS +NP +2.02947e+06 295291 MT +2.02798e+06 293803 LT +2.01614e+06 293803 LT +2.01465e+06 295291 LT +2.01465e+06 297395 LT +2.01614e+06 298883 LT +2.02798e+06 298883 LT +2.02947e+06 297395 LT +CP BF QS +NP +2.06926e+06 255497 MT +2.06777e+06 254009 LT +2.06567e+06 254009 LT +2.06464e+06 255044 LT +2.04429e+06 295744 LT +2.04429e+06 297395 LT +2.04577e+06 298883 LT +2.04788e+06 298883 LT +2.04891e+06 297848 LT +2.06926e+06 257148 LT +CP BF QS +NP +2.06881e+06 255044 MT +2.06777e+06 254009 LT +2.06567e+06 254009 LT +2.06418e+06 255497 LT +2.06418e+06 257148 LT +2.08453e+06 297848 LT +2.08557e+06 298883 LT +2.08767e+06 298883 LT +2.08916e+06 297395 LT +2.08916e+06 295744 LT +CP BF QS +NP +2.13827e+06 255497 MT +2.13678e+06 254009 LT +2.1152e+06 254009 LT +2.11371e+06 255497 LT +2.11371e+06 257601 LT +2.1152e+06 259089 LT +2.13678e+06 259089 LT +2.13827e+06 257601 LT +CP BF QS +NP +2.14843e+06 265234 MT +2.14766e+06 264471 LT +2.13675e+06 254009 LT +2.13467e+06 254009 LT +2.13319e+06 255497 LT +2.13319e+06 257601 LT +2.13395e+06 258364 LT +2.14487e+06 268826 LT +2.14694e+06 268826 LT +2.14843e+06 267338 LT +CP BF QS +NP +2.14843e+06 265234 MT +2.14694e+06 263746 LT +2.14483e+06 263746 LT +2.14335e+06 265234 LT +2.14335e+06 287235 LT +2.14483e+06 288723 LT +2.14694e+06 288723 LT +2.14843e+06 287235 LT +CP BF QS +NP +2.14843e+06 285131 MT +2.14694e+06 283643 LT +2.14483e+06 283643 LT +2.13319e+06 295291 LT +2.13319e+06 297395 LT +2.13467e+06 298883 LT +2.13678e+06 298883 LT +2.14843e+06 287235 LT +CP BF QS +NP +2.13827e+06 295291 MT +2.13678e+06 293803 LT +2.1152e+06 293803 LT +2.11371e+06 295291 LT +2.11371e+06 297395 LT +2.1152e+06 298883 LT +2.13678e+06 298883 LT +2.13827e+06 297395 LT +CP BF QS +NP +2.11879e+06 295291 MT +2.10714e+06 283643 LT +2.10504e+06 283643 LT +2.10355e+06 285131 LT +2.10355e+06 287235 LT +2.1152e+06 298883 LT +2.1173e+06 298883 LT +2.11879e+06 297395 LT +CP BF QS +NP +2.10863e+06 265234 MT +2.10714e+06 263746 LT +2.10504e+06 263746 LT +2.10355e+06 265234 LT +2.10355e+06 287235 LT +2.10504e+06 288723 LT +2.10714e+06 288723 LT +2.10863e+06 287235 LT +CP BF QS +NP +2.11879e+06 255497 MT +2.1173e+06 254009 LT +2.11523e+06 254009 LT +2.10432e+06 264471 LT +2.10355e+06 265234 LT +2.10355e+06 267338 LT +2.10504e+06 268826 LT +2.10711e+06 268826 LT +2.11803e+06 258364 LT +2.11879e+06 257601 LT +CP BF QS +NP +1.39828e+06 1.44732e+06 MT +1.39753e+06 1.44658e+06 LT +1.01548e+06 1.44658e+06 LT +1.01473e+06 1.44732e+06 LT +1.01473e+06 1.44838e+06 LT +1.01548e+06 1.44912e+06 LT +1.39753e+06 1.44912e+06 LT +1.39828e+06 1.44838e+06 LT +CP BF QS +NP +1.39828e+06 812301 MT +1.39753e+06 811557 LT +1.39648e+06 811557 LT +1.39574e+06 812301 LT +1.39574e+06 1.44838e+06 LT +1.39648e+06 1.44912e+06 LT +1.39753e+06 1.44912e+06 LT +1.39828e+06 1.44838e+06 LT +CP BF QS +NP +1.39828e+06 812301 MT +1.39753e+06 811557 LT +1.01548e+06 811557 LT +1.01473e+06 812301 LT +1.01473e+06 813353 LT +1.01548e+06 814097 LT +1.39753e+06 814097 LT +1.39828e+06 813353 LT +CP BF QS +NP +1.01727e+06 812301 MT +1.01653e+06 811557 LT +1.01548e+06 811557 LT +1.01473e+06 812301 LT +1.01473e+06 1.44838e+06 LT +1.01548e+06 1.44912e+06 LT +1.01653e+06 1.44912e+06 LT +1.01727e+06 1.44838e+06 LT +CP BF QS +NP +1.44865e+06 837878 MT +1.44816e+06 837382 LT +1.39666e+06 837382 LT +1.39616e+06 837878 LT +1.39616e+06 838578 LT +1.39666e+06 839074 LT +1.44816e+06 839074 LT +1.44865e+06 838578 LT +CP BF QS +NP +1.01685e+06 1.19349e+06 MT +1.01635e+06 1.19299e+06 LT +964854 1.19299e+06 LT +964358 1.19349e+06 LT +964358 1.19419e+06 LT +964854 1.19469e+06 LT +1.01635e+06 1.19469e+06 LT +1.01685e+06 1.19419e+06 LT +CP BF QS +NP +1.01685e+06 1.24429e+06 MT +1.01635e+06 1.2438e+06 LT +964854 1.2438e+06 LT +964358 1.24429e+06 LT +964358 1.24499e+06 LT +964854 1.24549e+06 LT +1.01635e+06 1.24549e+06 LT +1.01685e+06 1.24499e+06 LT +CP BF QS +NP +1.01685e+06 1.11729e+06 MT +1.01635e+06 1.11679e+06 LT +964854 1.11679e+06 LT +964358 1.11729e+06 LT +964358 1.11799e+06 LT +964854 1.11848e+06 LT +1.01635e+06 1.11848e+06 LT +1.01685e+06 1.11799e+06 LT +CP BF QS +NP +1.01685e+06 1.06649e+06 MT +1.01635e+06 1.06599e+06 LT +964854 1.06599e+06 LT +964358 1.06649e+06 LT +964358 1.06719e+06 LT +964854 1.06768e+06 LT +1.01635e+06 1.06768e+06 LT +1.01685e+06 1.06719e+06 LT +CP BF QS +NP +1.01685e+06 1.3713e+06 MT +1.01635e+06 1.3708e+06 LT +964854 1.3708e+06 LT +964358 1.3713e+06 LT +964358 1.372e+06 LT +964854 1.37249e+06 LT +1.01635e+06 1.37249e+06 LT +1.01685e+06 1.372e+06 LT +CP BF QS +NP +1.01685e+06 1.3459e+06 MT +1.01635e+06 1.3454e+06 LT +964854 1.3454e+06 LT +964358 1.3459e+06 LT +964358 1.3466e+06 LT +964854 1.34709e+06 LT +1.01635e+06 1.34709e+06 LT +1.01685e+06 1.3466e+06 LT +CP BF QS +NP +1.01685e+06 1.32049e+06 MT +1.01635e+06 1.32e+06 LT +964854 1.32e+06 LT +964358 1.32049e+06 LT +964358 1.32119e+06 LT +964854 1.32169e+06 LT +1.01635e+06 1.32169e+06 LT +1.01685e+06 1.32119e+06 LT +CP BF QS +NP +1.44865e+06 863279 MT +1.44816e+06 862783 LT +1.39666e+06 862783 LT +1.39616e+06 863279 LT +1.39616e+06 863979 LT +1.39666e+06 864475 LT +1.44816e+06 864475 LT +1.44865e+06 863979 LT +CP BF QS +NP +1.44865e+06 888680 MT +1.44816e+06 888184 LT +1.39666e+06 888184 LT +1.39616e+06 888680 LT +1.39616e+06 889380 LT +1.39666e+06 889876 LT +1.44816e+06 889876 LT +1.44865e+06 889380 LT +CP BF QS +NP +1.44865e+06 914081 MT +1.44816e+06 913585 LT +1.39666e+06 913585 LT +1.39616e+06 914081 LT +1.39616e+06 914781 LT +1.39666e+06 915277 LT +1.44816e+06 915277 LT +1.44865e+06 914781 LT +CP BF QS +NP +1.44865e+06 939481 MT +1.44816e+06 938985 LT +1.39666e+06 938985 LT +1.39616e+06 939481 LT +1.39616e+06 940181 LT +1.39666e+06 940677 LT +1.44816e+06 940677 LT +1.44865e+06 940181 LT +CP BF QS +NP +1.44865e+06 964882 MT +1.44816e+06 964386 LT +1.39666e+06 964386 LT +1.39616e+06 964882 LT +1.39616e+06 965582 LT +1.39666e+06 966078 LT +1.44816e+06 966078 LT +1.44865e+06 965582 LT +CP BF QS +NP +1.44865e+06 1.01568e+06 MT +1.44816e+06 1.01519e+06 LT +1.39666e+06 1.01519e+06 LT +1.39616e+06 1.01568e+06 LT +1.39616e+06 1.01638e+06 LT +1.39666e+06 1.01688e+06 LT +1.44816e+06 1.01688e+06 LT +1.44865e+06 1.01638e+06 LT +CP BF QS +NP +1.44865e+06 1.04108e+06 MT +1.44816e+06 1.04059e+06 LT +1.39666e+06 1.04059e+06 LT +1.39616e+06 1.04108e+06 LT +1.39616e+06 1.04178e+06 LT +1.39666e+06 1.04228e+06 LT +1.44816e+06 1.04228e+06 LT +1.44865e+06 1.04178e+06 LT +CP BF QS +NP +1.44865e+06 1.06649e+06 MT +1.44816e+06 1.06599e+06 LT +1.39666e+06 1.06599e+06 LT +1.39616e+06 1.06649e+06 LT +1.39616e+06 1.06719e+06 LT +1.39666e+06 1.06768e+06 LT +1.44816e+06 1.06768e+06 LT +1.44865e+06 1.06719e+06 LT +CP BF QS +NP +1.44865e+06 1.09189e+06 MT +1.44816e+06 1.09139e+06 LT +1.39666e+06 1.09139e+06 LT +1.39616e+06 1.09189e+06 LT +1.39616e+06 1.09259e+06 LT +1.39666e+06 1.09308e+06 LT +1.44816e+06 1.09308e+06 LT +1.44865e+06 1.09259e+06 LT +CP BF QS +NP +1.44865e+06 1.11729e+06 MT +1.44816e+06 1.11679e+06 LT +1.39666e+06 1.11679e+06 LT +1.39616e+06 1.11729e+06 LT +1.39616e+06 1.11799e+06 LT +1.39666e+06 1.11848e+06 LT +1.44816e+06 1.11848e+06 LT +1.44865e+06 1.11799e+06 LT +CP BF QS +NP +1.44865e+06 1.14269e+06 MT +1.44816e+06 1.14219e+06 LT +1.39666e+06 1.14219e+06 LT +1.39616e+06 1.14269e+06 LT +1.39616e+06 1.14339e+06 LT +1.39666e+06 1.14388e+06 LT +1.44816e+06 1.14388e+06 LT +1.44865e+06 1.14339e+06 LT +CP BF QS +NP +1.44865e+06 1.16809e+06 MT +1.44816e+06 1.16759e+06 LT +1.39666e+06 1.16759e+06 LT +1.39616e+06 1.16809e+06 LT +1.39616e+06 1.16879e+06 LT +1.39666e+06 1.16928e+06 LT +1.44816e+06 1.16928e+06 LT +1.44865e+06 1.16879e+06 LT +CP BF QS +NP +1.44865e+06 1.19349e+06 MT +1.44816e+06 1.19299e+06 LT +1.39666e+06 1.19299e+06 LT +1.39616e+06 1.19349e+06 LT +1.39616e+06 1.19419e+06 LT +1.39666e+06 1.19469e+06 LT +1.44816e+06 1.19469e+06 LT +1.44865e+06 1.19419e+06 LT +CP BF QS +NP +1.44865e+06 1.29509e+06 MT +1.44816e+06 1.2946e+06 LT +1.39666e+06 1.2946e+06 LT +1.39616e+06 1.29509e+06 LT +1.39616e+06 1.29579e+06 LT +1.39666e+06 1.29629e+06 LT +1.44816e+06 1.29629e+06 LT +1.44865e+06 1.29579e+06 LT +CP BF QS +NP +1.44865e+06 1.32049e+06 MT +1.44816e+06 1.32e+06 LT +1.39666e+06 1.32e+06 LT +1.39616e+06 1.32049e+06 LT +1.39616e+06 1.32119e+06 LT +1.39666e+06 1.32169e+06 LT +1.44816e+06 1.32169e+06 LT +1.44865e+06 1.32119e+06 LT +CP BF QS +NP +1.44865e+06 1.3459e+06 MT +1.44816e+06 1.3454e+06 LT +1.39666e+06 1.3454e+06 LT +1.39616e+06 1.3459e+06 LT +1.39616e+06 1.3466e+06 LT +1.39666e+06 1.34709e+06 LT +1.44816e+06 1.34709e+06 LT +1.44865e+06 1.3466e+06 LT +CP BF QS +NP +1.44865e+06 1.3713e+06 MT +1.44816e+06 1.3708e+06 LT +1.39666e+06 1.3708e+06 LT +1.39616e+06 1.3713e+06 LT +1.39616e+06 1.372e+06 LT +1.39666e+06 1.37249e+06 LT +1.44816e+06 1.37249e+06 LT +1.44865e+06 1.372e+06 LT +CP BF QS +NP +1.44865e+06 1.3967e+06 MT +1.44816e+06 1.3962e+06 LT +1.39666e+06 1.3962e+06 LT +1.39616e+06 1.3967e+06 LT +1.39616e+06 1.3974e+06 LT +1.39666e+06 1.39789e+06 LT +1.44816e+06 1.39789e+06 LT +1.44865e+06 1.3974e+06 LT +CP BF QS +NP +1.44865e+06 1.4221e+06 MT +1.44816e+06 1.4216e+06 LT +1.39666e+06 1.4216e+06 LT +1.39616e+06 1.4221e+06 LT +1.39616e+06 1.4228e+06 LT +1.39666e+06 1.42329e+06 LT +1.44816e+06 1.42329e+06 LT +1.44865e+06 1.4228e+06 LT +CP BF QS +NP +995426 1.4224e+06 MT +995470 1.42337e+06 LT +995602 1.42433e+06 LT +995822 1.42528e+06 LT +996126 1.4262e+06 LT +996513 1.42709e+06 LT +996979 1.42794e+06 LT +997521 1.42875e+06 LT +998134 1.4295e+06 LT +998813 1.4302e+06 LT +999552 1.43083e+06 LT +1.00034e+06 1.43139e+06 LT +1.00119e+06 1.43187e+06 LT +1.00207e+06 1.43228e+06 LT +1.00298e+06 1.4326e+06 LT +1.00392e+06 1.43284e+06 LT +1.00488e+06 1.433e+06 LT +1.00585e+06 1.43306e+06 LT +1.00682e+06 1.43304e+06 LT +1.00779e+06 1.43293e+06 LT +1.00874e+06 1.43274e+06 LT +1.00967e+06 1.43245e+06 LT +1.01057e+06 1.43209e+06 LT +1.01143e+06 1.43164e+06 LT +1.01225e+06 1.43112e+06 LT +1.01301e+06 1.43052e+06 LT +1.01372e+06 1.42986e+06 LT +1.01437e+06 1.42913e+06 LT +1.01495e+06 1.42835e+06 LT +1.01545e+06 1.42752e+06 LT +1.01588e+06 1.42665e+06 LT +1.01622e+06 1.42574e+06 LT +1.01649e+06 1.42481e+06 LT +1.01666e+06 1.42385e+06 LT +1.01675e+06 1.42289e+06 LT +1.01675e+06 1.42191e+06 LT +1.01666e+06 1.42095e+06 LT +1.01649e+06 1.41999e+06 LT +1.01622e+06 1.41906e+06 LT +1.01588e+06 1.41815e+06 LT +1.01545e+06 1.41728e+06 LT +1.01495e+06 1.41645e+06 LT +1.01437e+06 1.41567e+06 LT +1.01372e+06 1.41494e+06 LT +1.01301e+06 1.41428e+06 LT +1.01225e+06 1.41368e+06 LT +1.01143e+06 1.41316e+06 LT +1.01057e+06 1.41271e+06 LT +1.00967e+06 1.41235e+06 LT +1.00874e+06 1.41206e+06 LT +1.00779e+06 1.41187e+06 LT +1.00682e+06 1.41176e+06 LT +1.00585e+06 1.41174e+06 LT +1.00488e+06 1.4118e+06 LT +1.00392e+06 1.41196e+06 LT +1.00298e+06 1.4122e+06 LT +1.00207e+06 1.41252e+06 LT +1.00119e+06 1.41293e+06 LT +1.00034e+06 1.41341e+06 LT +999552 1.41397e+06 LT +998813 1.4146e+06 LT +998134 1.4153e+06 LT +997521 1.41605e+06 LT +996979 1.41686e+06 LT +996513 1.41771e+06 LT +996126 1.4186e+06 LT +995822 1.41952e+06 LT +995602 1.42047e+06 LT +995470 1.42143e+06 LT +995426 1.4224e+06 LT +996950 1.4224e+06 LT +996988 1.42323e+06 LT +997101 1.42406e+06 LT +997289 1.42487e+06 LT +997550 1.42566e+06 LT +997882 1.42642e+06 LT +998281 1.42715e+06 LT +998746 1.42784e+06 LT +999271 1.42849e+06 LT +999853 1.42908e+06 LT +1.00049e+06 1.42962e+06 LT +1.00117e+06 1.4301e+06 LT +1.00189e+06 1.43052e+06 LT +1.00264e+06 1.43087e+06 LT +1.00343e+06 1.43115e+06 LT +1.00423e+06 1.43135e+06 LT +1.00506e+06 1.43148e+06 LT +1.00589e+06 1.43154e+06 LT +1.00672e+06 1.43152e+06 LT +1.00754e+06 1.43143e+06 LT +1.00836e+06 1.43126e+06 LT +1.00916e+06 1.43102e+06 LT +1.00993e+06 1.4307e+06 LT +1.01067e+06 1.43032e+06 LT +1.01137e+06 1.42987e+06 LT +1.01202e+06 1.42936e+06 LT +1.01263e+06 1.42879e+06 LT +1.01319e+06 1.42817e+06 LT +1.01368e+06 1.4275e+06 LT +1.01412e+06 1.42679e+06 LT +1.01448e+06 1.42604e+06 LT +1.01478e+06 1.42526e+06 LT +1.015e+06 1.42446e+06 LT +1.01515e+06 1.42364e+06 LT +1.01523e+06 1.42282e+06 LT +1.01523e+06 1.42198e+06 LT +1.01515e+06 1.42116e+06 LT +1.015e+06 1.42034e+06 LT +1.01478e+06 1.41954e+06 LT +1.01448e+06 1.41876e+06 LT +1.01412e+06 1.41801e+06 LT +1.01368e+06 1.4173e+06 LT +1.01319e+06 1.41663e+06 LT +1.01263e+06 1.41601e+06 LT +1.01202e+06 1.41544e+06 LT +1.01137e+06 1.41493e+06 LT +1.01067e+06 1.41448e+06 LT +1.00993e+06 1.4141e+06 LT +1.00916e+06 1.41378e+06 LT +1.00836e+06 1.41354e+06 LT +1.00754e+06 1.41337e+06 LT +1.00672e+06 1.41328e+06 LT +1.00589e+06 1.41326e+06 LT +1.00506e+06 1.41332e+06 LT +1.00423e+06 1.41345e+06 LT +1.00343e+06 1.41365e+06 LT +1.00264e+06 1.41393e+06 LT +1.00189e+06 1.41428e+06 LT +1.00117e+06 1.4147e+06 LT +1.00049e+06 1.41518e+06 LT +999853 1.41572e+06 LT +999271 1.41631e+06 LT +998746 1.41696e+06 LT +998281 1.41765e+06 LT +997882 1.41838e+06 LT +997550 1.41914e+06 LT +997289 1.41993e+06 LT +997101 1.42074e+06 LT +996988 1.42157e+06 LT +996950 1.4224e+06 LT +CP BF QS +NP +996954 1.4221e+06 MT +996458 1.4216e+06 LT +964854 1.4216e+06 LT +964358 1.4221e+06 LT +964358 1.4228e+06 LT +964854 1.42329e+06 LT +996458 1.42329e+06 LT +996954 1.4228e+06 LT +CP BF QS +NP +1.51639e+06 710698 MT +1.51564e+06 709954 LT +1.51459e+06 709954 LT +1.51385e+06 710698 LT +1.51385e+06 762552 LT +1.51459e+06 763296 LT +1.51564e+06 763296 LT +1.51639e+06 762552 LT +CP BF QS +NP +1.53417e+06 710698 MT +1.53342e+06 709954 LT +1.53237e+06 709954 LT +1.53163e+06 710698 LT +1.53163e+06 762552 LT +1.53237e+06 763296 LT +1.53342e+06 763296 LT +1.53417e+06 762552 LT +CP BF QS +NP +1.52485e+06 685473 MT +1.52436e+06 684977 LT +1.52366e+06 684977 LT +1.52316e+06 685473 LT +1.52316e+06 711574 LT +1.52366e+06 712070 LT +1.52436e+06 712070 LT +1.52485e+06 711574 LT +CP BF QS +NP +1.53417e+06 710698 MT +1.53342e+06 709954 LT +1.51459e+06 709954 LT +1.51385e+06 710698 LT +1.51385e+06 711750 LT +1.51459e+06 712494 LT +1.53342e+06 712494 LT +1.53417e+06 711750 LT +CP BF QS +NP +1.53417e+06 761500 MT +1.53342e+06 760756 LT +1.51459e+06 760756 LT +1.51385e+06 761500 LT +1.51385e+06 762552 LT +1.51459e+06 763296 LT +1.53342e+06 763296 LT +1.53417e+06 762552 LT +CP BF QS +NP +1.52485e+06 761676 MT +1.52436e+06 761180 LT +1.52366e+06 761180 LT +1.52316e+06 761676 LT +1.52316e+06 787776 LT +1.52366e+06 788272 LT +1.52436e+06 788272 LT +1.52485e+06 787776 LT +CP BF QS +NP +1.61799e+06 710698 MT +1.61724e+06 709954 LT +1.61619e+06 709954 LT +1.61545e+06 710698 LT +1.61545e+06 762552 LT +1.61619e+06 763296 LT +1.61724e+06 763296 LT +1.61799e+06 762552 LT +CP BF QS +NP +1.63577e+06 710698 MT +1.63502e+06 709954 LT +1.63397e+06 709954 LT +1.63323e+06 710698 LT +1.63323e+06 762552 LT +1.63397e+06 763296 LT +1.63502e+06 763296 LT +1.63577e+06 762552 LT +CP BF QS +NP +1.62645e+06 685473 MT +1.62596e+06 684977 LT +1.62526e+06 684977 LT +1.62476e+06 685473 LT +1.62476e+06 711574 LT +1.62526e+06 712070 LT +1.62596e+06 712070 LT +1.62645e+06 711574 LT +CP BF QS +NP +1.63577e+06 710698 MT +1.63502e+06 709954 LT +1.61619e+06 709954 LT +1.61545e+06 710698 LT +1.61545e+06 711750 LT +1.61619e+06 712494 LT +1.63502e+06 712494 LT +1.63577e+06 711750 LT +CP BF QS +NP +1.63577e+06 761500 MT +1.63502e+06 760756 LT +1.61619e+06 760756 LT +1.61545e+06 761500 LT +1.61545e+06 762552 LT +1.61619e+06 763296 LT +1.63502e+06 763296 LT +1.63577e+06 762552 LT +CP BF QS +NP +1.62645e+06 761676 MT +1.62596e+06 761180 LT +1.62526e+06 761180 LT +1.62476e+06 761676 LT +1.62476e+06 787776 LT +1.62526e+06 788272 LT +1.62596e+06 788272 LT +1.62645e+06 787776 LT +CP BF QS +NP +229447 710874 MT +228951 710378 LT +202851 710378 LT +202355 710874 LT +202355 711574 LT +202851 712070 LT +228951 712070 LT +229447 711574 LT +CP BF QS +NP +229447 685473 MT +228951 684977 LT +202851 684977 LT +202355 685473 LT +202355 686173 LT +202851 686669 LT +228951 686669 LT +229447 686173 LT +CP BF QS +NP +229447 660072 MT +228951 659576 LT +202851 659576 LT +202355 660072 LT +202355 660772 LT +202851 661268 LT +228951 661268 LT +229447 660772 LT +CP BF QS +NP +229447 634671 MT +228951 634175 LT +202851 634175 LT +202355 634671 LT +202355 635371 LT +202851 635867 LT +228951 635867 LT +229447 635371 LT +CP BF QS +NP +204471 609094 MT +203727 608350 LT +202675 608350 LT +201931 609094 LT +201931 737151 LT +202675 737895 LT +203727 737895 LT +204471 737151 LT +CP BF QS +NP +204471 609094 MT +203727 608350 LT +151875 608350 LT +151131 609094 LT +151131 610146 LT +151875 610890 LT +203727 610890 LT +204471 610146 LT +CP BF QS +NP +204471 736099 MT +203727 735355 LT +151875 735355 LT +151131 736099 LT +151131 737151 LT +151875 737895 LT +203727 737895 LT +204471 737151 LT +CP BF QS +[-0 -1 1 0 807.998 3109.05]ST +F3 F +0 Y<0025001C0026>173 0 AT +[0.00236219 0 -0 -0.00236213 388 4609]ST +NP +356448 406064 MT +355952 405568 LT +355252 405568 LT +354756 406064 LT +354756 432164 LT +355252 432660 LT +355952 432660 LT +356448 432164 LT +CP BF QS +NP +375922 405888 MT +375178 405144 LT +336025 405144 LT +335281 405888 LT +335281 406940 LT +336025 407684 LT +375178 407684 LT +375922 406940 LT +CP BF QS +NP +940650 1.11729e+06 MT +940154 1.11679e+06 LT +914054 1.11679e+06 LT +913558 1.11729e+06 LT +913558 1.11799e+06 LT +914054 1.11848e+06 LT +940154 1.11848e+06 LT +940650 1.11799e+06 LT +CP BF QS +NP +915674 1.09806e+06 MT +914930 1.09732e+06 LT +913878 1.09732e+06 LT +913134 1.09806e+06 LT +913134 1.13721e+06 LT +913878 1.13796e+06 LT +914930 1.13796e+06 LT +915674 1.13721e+06 LT +CP BF QS +NP +864450 1.25445e+06 MT +863954 1.25396e+06 LT +863254 1.25396e+06 LT +862758 1.25445e+06 LT +862758 1.27039e+06 LT +863254 1.27089e+06 LT +863954 1.27089e+06 LT +864450 1.27039e+06 LT +CP BF QS +NP +864450 1.21889e+06 MT +863954 1.2184e+06 LT +863254 1.2184e+06 LT +862758 1.21889e+06 LT +862758 1.23483e+06 LT +863254 1.23533e+06 LT +863954 1.23533e+06 LT +864450 1.23483e+06 LT +CP BF QS +NP +880114 1.24031e+06 MT +879370 1.23956e+06 LT +847838 1.23956e+06 LT +847094 1.24031e+06 LT +847094 1.24136e+06 LT +847838 1.2421e+06 LT +879370 1.2421e+06 LT +880114 1.24136e+06 LT +CP BF QS +NP +880114 1.24031e+06 MT +879370 1.23956e+06 LT +878318 1.23956e+06 LT +877574 1.24031e+06 LT +877574 1.24898e+06 LT +878318 1.24972e+06 LT +879370 1.24972e+06 LT +880114 1.24898e+06 LT +CP BF QS +NP +880114 1.24793e+06 MT +879370 1.24718e+06 LT +847838 1.24718e+06 LT +847094 1.24793e+06 LT +847094 1.24898e+06 LT +847838 1.24972e+06 LT +879370 1.24972e+06 LT +880114 1.24898e+06 LT +CP BF QS +NP +849634 1.24031e+06 MT +848890 1.23956e+06 LT +847838 1.23956e+06 LT +847094 1.24031e+06 LT +847094 1.24898e+06 LT +847838 1.24972e+06 LT +848890 1.24972e+06 LT +849634 1.24898e+06 LT +CP BF QS +NP +882654 1.25428e+06 MT +881910 1.25353e+06 LT +845298 1.25353e+06 LT +844554 1.25428e+06 LT +844554 1.25533e+06 LT +845298 1.25607e+06 LT +881910 1.25607e+06 LT +882654 1.25533e+06 LT +CP BF QS +NP +882654 1.23396e+06 MT +881910 1.23321e+06 LT +845298 1.23321e+06 LT +844554 1.23396e+06 LT +844554 1.23501e+06 LT +845298 1.23575e+06 LT +881910 1.23575e+06 LT +882654 1.23501e+06 LT +CP BF QS +NP +737449 1.29509e+06 MT +736953 1.2946e+06 LT +710853 1.2946e+06 LT +710357 1.29509e+06 LT +710357 1.29579e+06 LT +710853 1.29629e+06 LT +736953 1.29629e+06 LT +737449 1.29579e+06 LT +CP BF QS +NP +788249 1.29509e+06 MT +787753 1.2946e+06 LT +761653 1.2946e+06 LT +761157 1.29509e+06 LT +761157 1.29579e+06 LT +761653 1.29629e+06 LT +787753 1.29629e+06 LT +788249 1.29579e+06 LT +CP BF QS +751840 1.27508e+06 5081 40641 R +741680 1.27508e+06 5081 40641 R +NP +742529 1.29509e+06 MT +742033 1.2946e+06 LT +736253 1.2946e+06 LT +735757 1.29509e+06 LT +735757 1.29579e+06 LT +736253 1.29629e+06 LT +742033 1.29629e+06 LT +742529 1.29579e+06 LT +CP BF QS +NP +762849 1.29509e+06 MT +762353 1.2946e+06 LT +756573 1.2946e+06 LT +756077 1.29509e+06 LT +756077 1.29579e+06 LT +756573 1.29629e+06 LT +762353 1.29629e+06 LT +762849 1.29579e+06 LT +CP BF QS +NP +737449 1.19349e+06 MT +736953 1.19299e+06 LT +710853 1.19299e+06 LT +710357 1.19349e+06 LT +710357 1.19419e+06 LT +710853 1.19469e+06 LT +736953 1.19469e+06 LT +737449 1.19419e+06 LT +CP BF QS +NP +788249 1.19349e+06 MT +787753 1.19299e+06 LT +761653 1.19299e+06 LT +761157 1.19349e+06 LT +761157 1.19419e+06 LT +761653 1.19469e+06 LT +787753 1.19469e+06 LT +788249 1.19419e+06 LT +CP BF QS +751840 1.17348e+06 5081 40641 R +741680 1.17348e+06 5081 40641 R +NP +742529 1.19349e+06 MT +742033 1.19299e+06 LT +736253 1.19299e+06 LT +735757 1.19349e+06 LT +735757 1.19419e+06 LT +736253 1.19469e+06 LT +742033 1.19469e+06 LT +742529 1.19419e+06 LT +CP BF QS +NP +762849 1.19349e+06 MT +762353 1.19299e+06 LT +756573 1.19299e+06 LT +756077 1.19349e+06 LT +756077 1.19419e+06 LT +756573 1.19469e+06 LT +762353 1.19469e+06 LT +762849 1.19419e+06 LT +CP BF QS +NP +686649 1.29509e+06 MT +686153 1.2946e+06 LT +660053 1.2946e+06 LT +659557 1.29509e+06 LT +659557 1.29579e+06 LT +660053 1.29629e+06 LT +686153 1.29629e+06 LT +686649 1.29579e+06 LT +CP BF QS +NP +661673 1.27587e+06 MT +660929 1.27512e+06 LT +659877 1.27512e+06 LT +659133 1.27587e+06 LT +659133 1.31502e+06 LT +659877 1.31576e+06 LT +660929 1.31576e+06 LT +661673 1.31502e+06 LT +CP BF QS +NP +686649 1.19349e+06 MT +686153 1.19299e+06 LT +660053 1.19299e+06 LT +659557 1.19349e+06 LT +659557 1.19419e+06 LT +660053 1.19469e+06 LT +686153 1.19469e+06 LT +686649 1.19419e+06 LT +CP BF QS +NP +661673 1.17426e+06 MT +660929 1.17352e+06 LT +659877 1.17352e+06 LT +659133 1.17426e+06 LT +659133 1.21342e+06 LT +659877 1.21416e+06 LT +660929 1.21416e+06 LT +661673 1.21342e+06 LT +CP BF QS +NP +2.64373e+06 -876 MT +2.64249e+06 -2116 LT +2.64074e+06 -2116 LT +2.6395e+06 -876 LT +2.6395e+06 1.80434e+06 LT +2.64074e+06 1.80558e+06 LT +2.64249e+06 1.80558e+06 LT +2.64373e+06 1.80434e+06 LT +CP BF QS +NP +2.64373e+06 1.80258e+06 MT +2.64249e+06 1.80134e+06 LT +-876 1.80134e+06 LT +-2116 1.80258e+06 LT +-2116 1.80434e+06 LT +-876 1.80558e+06 LT +2.64249e+06 1.80558e+06 LT +2.64373e+06 1.80434e+06 LT +CP BF QS +NP +2116 -876 MT +876 -2116 LT +-876 -2116 LT +-2116 -876 LT +-2116 1.80434e+06 LT +-876 1.80558e+06 LT +876 1.80558e+06 LT +2116 1.80434e+06 LT +CP BF QS +NP +2.64373e+06 -876 MT +2.64249e+06 -2116 LT +-876 -2116 LT +-2116 -876 LT +-2116 876 LT +-876 2116 LT +2.64249e+06 2116 LT +2.64373e+06 876 LT +CP BF QS +NP +2.33808e+06 -526 MT +2.33734e+06 -1270 LT +1.62508e+06 -1270 LT +1.62434e+06 -526 LT +1.62434e+06 526 LT +1.62508e+06 1270 LT +2.33734e+06 1270 LT +2.33808e+06 526 LT +CP BF QS +NP +2.64288e+06 151879 MT +2.64214e+06 151135 LT +2.50138e+06 151135 LT +2.50064e+06 151879 LT +2.50064e+06 152931 LT +2.50138e+06 153675 LT +2.64214e+06 153675 LT +2.64288e+06 152931 LT +CP BF QS +NP +1.62688e+06 -526 MT +1.62613e+06 -1270 LT +1.62508e+06 -1270 LT +1.62434e+06 -526 LT +1.62434e+06 51328 LT +1.62508e+06 52072 LT +1.62613e+06 52072 LT +1.62688e+06 51328 LT +CP BF QS +NP +1.64042e+06 12897 MT +1.6398e+06 12277 LT +1.63893e+06 12277 LT +1.63831e+06 12897 LT +1.63831e+06 37481 LT +1.63893e+06 38101 LT +1.6398e+06 38101 LT +1.64042e+06 37481 LT +CP BF QS +NP +1.65228e+06 12897 MT +1.65166e+06 12277 LT +1.63893e+06 12277 LT +1.63831e+06 12897 LT +1.63831e+06 13773 LT +1.63893e+06 14393 LT +1.65166e+06 14393 LT +1.65228e+06 13773 LT +CP BF QS +NP +1.65199e+06 12606 MT +1.65166e+06 12277 LT +1.65078e+06 12277 LT +1.65016e+06 12897 LT +1.65016e+06 13740 LT +1.65426e+06 18298 LT +1.65459e+06 18627 LT +1.65547e+06 18627 LT +1.65609e+06 18007 LT +1.65609e+06 17164 LT +CP BF QS +NP +1.65609e+06 17131 MT +1.65547e+06 16511 LT +1.65459e+06 16511 LT +1.65397e+06 17131 LT +1.65397e+06 33247 LT +1.65459e+06 33867 LT +1.65547e+06 33867 LT +1.65609e+06 33247 LT +CP BF QS +NP +1.65609e+06 32371 MT +1.65547e+06 31751 LT +1.65459e+06 31751 LT +1.65426e+06 32080 LT +1.65016e+06 36638 LT +1.65016e+06 37481 LT +1.65078e+06 38101 LT +1.65166e+06 38101 LT +1.65199e+06 37772 LT +1.65609e+06 33214 LT +CP BF QS +NP +1.65228e+06 36605 MT +1.65166e+06 35985 LT +1.63893e+06 35985 LT +1.63831e+06 36605 LT +1.63831e+06 37481 LT +1.63893e+06 38101 LT +1.65166e+06 38101 LT +1.65228e+06 37481 LT +CP BF QS +NP +1.67556e+06 28561 MT +1.67494e+06 27941 LT +1.66644e+06 27941 LT +1.66582e+06 28561 LT +1.66582e+06 29437 LT +1.66644e+06 30057 LT +1.67494e+06 30057 LT +1.67556e+06 29437 LT +CP BF QS +NP +1.67937e+06 24751 MT +1.67875e+06 24131 LT +1.67787e+06 24131 LT +1.67344e+06 28561 LT +1.67344e+06 29437 LT +1.67406e+06 30057 LT +1.67494e+06 30057 LT +1.67937e+06 25627 LT +CP BF QS +NP +1.67937e+06 12897 MT +1.67875e+06 12277 LT +1.67787e+06 12277 LT +1.67725e+06 12897 LT +1.67725e+06 25627 LT +1.67787e+06 26247 LT +1.67875e+06 26247 LT +1.67937e+06 25627 LT +CP BF QS +NP +1.67937e+06 12897 MT +1.67875e+06 12277 LT +1.66644e+06 12277 LT +1.66582e+06 12897 LT +1.66582e+06 13773 LT +1.66644e+06 14393 LT +1.67875e+06 14393 LT +1.67937e+06 13773 LT +CP BF QS +NP +1.66794e+06 12897 MT +1.66732e+06 12277 LT +1.66644e+06 12277 LT +1.66612e+06 12606 LT +1.66201e+06 17164 LT +1.66201e+06 18007 LT +1.66263e+06 18627 LT +1.66351e+06 18627 LT +1.66384e+06 18298 LT +1.66794e+06 13740 LT +CP BF QS +NP +1.66794e+06 20941 MT +1.66351e+06 16511 LT +1.66263e+06 16511 LT +1.66201e+06 17131 LT +1.66201e+06 18007 LT +1.66644e+06 22437 LT +1.66732e+06 22437 LT +1.66794e+06 21817 LT +CP BF QS +NP +1.67937e+06 20941 MT +1.67875e+06 20321 LT +1.66644e+06 20321 LT +1.66582e+06 20941 LT +1.66582e+06 21817 LT +1.66644e+06 22437 LT +1.67875e+06 22437 LT +1.67937e+06 21817 LT +CP BF QS +NP +1.69122e+06 17131 MT +1.6906e+06 16511 LT +1.68973e+06 16511 LT +1.68911e+06 17131 LT +1.68911e+06 33247 LT +1.68973e+06 33867 LT +1.6906e+06 33867 LT +1.69122e+06 33247 LT +CP BF QS +NP +1.69503e+06 12897 MT +1.69441e+06 12277 LT +1.69354e+06 12277 LT +1.69321e+06 12606 LT +1.68911e+06 17164 LT +1.68911e+06 18007 LT +1.68973e+06 18627 LT +1.6906e+06 18627 LT +1.69093e+06 18298 LT +1.69503e+06 13740 LT +CP BF QS +NP +1.69503e+06 28561 MT +1.69441e+06 27941 LT +1.68592e+06 27941 LT +1.6853e+06 28561 LT +1.6853e+06 29437 LT +1.68592e+06 30057 LT +1.69441e+06 30057 LT +1.69503e+06 29437 LT +CP BF QS +NP +1.71451e+06 12897 MT +1.71389e+06 12277 LT +1.70539e+06 12277 LT +1.70477e+06 12897 LT +1.70477e+06 13773 LT +1.70539e+06 14393 LT +1.71389e+06 14393 LT +1.71451e+06 13773 LT +CP BF QS +NP +1.70689e+06 12897 MT +1.70627e+06 12277 LT +1.70539e+06 12277 LT +1.70506e+06 12606 LT +1.70096e+06 17164 LT +1.70096e+06 18007 LT +1.70158e+06 18627 LT +1.70246e+06 18627 LT +1.70279e+06 18298 LT +1.70689e+06 13740 LT +CP BF QS +NP +1.70308e+06 17131 MT +1.70246e+06 16511 LT +1.70158e+06 16511 LT +1.70096e+06 17131 LT +1.70096e+06 25627 LT +1.70158e+06 26247 LT +1.70246e+06 26247 LT +1.70308e+06 25627 LT +CP BF QS +NP +1.70689e+06 28561 MT +1.70246e+06 24131 LT +1.70158e+06 24131 LT +1.70096e+06 24751 LT +1.70096e+06 25627 LT +1.70539e+06 30057 LT +1.70627e+06 30057 LT +1.70689e+06 29437 LT +CP BF QS +NP +1.71451e+06 28561 MT +1.71389e+06 27941 LT +1.70539e+06 27941 LT +1.70477e+06 28561 LT +1.70477e+06 29437 LT +1.70539e+06 30057 LT +1.71389e+06 30057 LT +1.71451e+06 29437 LT +CP BF QS +NP +1.71874e+06 24751 MT +1.71812e+06 24131 LT +1.71728e+06 24131 LT +1.71272e+06 28232 LT +1.71239e+06 28561 LT +1.71239e+06 29437 LT +1.71301e+06 30057 LT +1.71385e+06 30057 LT +1.71841e+06 25956 LT +1.71874e+06 25627 LT +CP BF QS +NP +1.71874e+06 20941 MT +1.71812e+06 20321 LT +1.71724e+06 20321 LT +1.71662e+06 20941 LT +1.71662e+06 25627 LT +1.71724e+06 26247 LT +1.71812e+06 26247 LT +1.71874e+06 25627 LT +CP BF QS +NP +1.71874e+06 20941 MT +1.71812e+06 20321 LT +1.70158e+06 20321 LT +1.70096e+06 20941 LT +1.70096e+06 21817 LT +1.70158e+06 22437 LT +1.71812e+06 22437 LT +1.71874e+06 21817 LT +CP BF QS +NP +1.73017e+06 28561 MT +1.72955e+06 27941 LT +1.72486e+06 27941 LT +1.72424e+06 28561 LT +1.72424e+06 29437 LT +1.72486e+06 30057 LT +1.72955e+06 30057 LT +1.73017e+06 29437 LT +CP BF QS +NP +1.73017e+06 24751 MT +1.72955e+06 24131 LT +1.72868e+06 24131 LT +1.72806e+06 24751 LT +1.72806e+06 29437 LT +1.72868e+06 30057 LT +1.72955e+06 30057 LT +1.73017e+06 29437 LT +CP BF QS +NP +1.73017e+06 24751 MT +1.72955e+06 24131 LT +1.72486e+06 24131 LT +1.72424e+06 24751 LT +1.72424e+06 25627 LT +1.72486e+06 26247 LT +1.72955e+06 26247 LT +1.73017e+06 25627 LT +CP BF QS +NP +1.72636e+06 24751 MT +1.72574e+06 24131 LT +1.72486e+06 24131 LT +1.72424e+06 24751 LT +1.72424e+06 29437 LT +1.72486e+06 30057 LT +1.72574e+06 30057 LT +1.72636e+06 29437 LT +CP BF QS +NP +1.73017e+06 17131 MT +1.72955e+06 16511 LT +1.72486e+06 16511 LT +1.72424e+06 17131 LT +1.72424e+06 18007 LT +1.72486e+06 18627 LT +1.72955e+06 18627 LT +1.73017e+06 18007 LT +CP BF QS +NP +1.73017e+06 12897 MT +1.72955e+06 12277 LT +1.72868e+06 12277 LT +1.72806e+06 12897 LT +1.72806e+06 18007 LT +1.72868e+06 18627 LT +1.72955e+06 18627 LT +1.73017e+06 18007 LT +CP BF QS +NP +1.73017e+06 12897 MT +1.72955e+06 12277 LT +1.72486e+06 12277 LT +1.72424e+06 12897 LT +1.72424e+06 13773 LT +1.72486e+06 14393 LT +1.72955e+06 14393 LT +1.73017e+06 13773 LT +CP BF QS +NP +1.72636e+06 12897 MT +1.72574e+06 12277 LT +1.72486e+06 12277 LT +1.72424e+06 12897 LT +1.72424e+06 18007 LT +1.72486e+06 18627 LT +1.72574e+06 18627 LT +1.72636e+06 18007 LT +CP BF QS +NP +1.75441e+06 28251 MT +1.7541e+06 27941 LT +1.75323e+06 27941 LT +1.75261e+06 28561 LT +1.75261e+06 29437 LT +1.76096e+06 37791 LT +1.76127e+06 38101 LT +1.76215e+06 38101 LT +1.76277e+06 37481 LT +1.76277e+06 36605 LT +CP BF QS +NP +1.76277e+06 12897 MT +1.76215e+06 12277 LT +1.76127e+06 12277 LT +1.76065e+06 12897 LT +1.76065e+06 37481 LT +1.76127e+06 38101 LT +1.76215e+06 38101 LT +1.76277e+06 37481 LT +CP BF QS +NP +1.77039e+06 12897 MT +1.76977e+06 12277 LT +1.75323e+06 12277 LT +1.75261e+06 12897 LT +1.75261e+06 13773 LT +1.75323e+06 14393 LT +1.76977e+06 14393 LT +1.77039e+06 13773 LT +CP BF QS +NP +1.77843e+06 17131 MT +1.77781e+06 16511 LT +1.77694e+06 16511 LT +1.77632e+06 17131 LT +1.77632e+06 33247 LT +1.77694e+06 33867 LT +1.77781e+06 33867 LT +1.77843e+06 33247 LT +CP BF QS +NP +1.77814e+06 32080 MT +1.77781e+06 31751 LT +1.77694e+06 31751 LT +1.77632e+06 32371 LT +1.77632e+06 33214 LT +1.78042e+06 37772 LT +1.78074e+06 38101 LT +1.78162e+06 38101 LT +1.78224e+06 37481 LT +1.78224e+06 36638 LT +CP BF QS +NP +1.78986e+06 36605 MT +1.78924e+06 35985 LT +1.78074e+06 35985 LT +1.78012e+06 36605 LT +1.78012e+06 37481 LT +1.78074e+06 38101 LT +1.78924e+06 38101 LT +1.78986e+06 37481 LT +CP BF QS +NP +1.79367e+06 32371 MT +1.79305e+06 31751 LT +1.79218e+06 31751 LT +1.79185e+06 32080 LT +1.78774e+06 36638 LT +1.78774e+06 37481 LT +1.78836e+06 38101 LT +1.78924e+06 38101 LT +1.78957e+06 37772 LT +1.79367e+06 33214 LT +CP BF QS +NP +1.79367e+06 17131 MT +1.79305e+06 16511 LT +1.79218e+06 16511 LT +1.79156e+06 17131 LT +1.79156e+06 33247 LT +1.79218e+06 33867 LT +1.79305e+06 33867 LT +1.79367e+06 33247 LT +CP BF QS +NP +1.78957e+06 12606 MT +1.78924e+06 12277 LT +1.78836e+06 12277 LT +1.78774e+06 12897 LT +1.78774e+06 13740 LT +1.79185e+06 18298 LT +1.79218e+06 18627 LT +1.79305e+06 18627 LT +1.79367e+06 18007 LT +1.79367e+06 17164 LT +CP BF QS +NP +1.78986e+06 12897 MT +1.78924e+06 12277 LT +1.78074e+06 12277 LT +1.78012e+06 12897 LT +1.78012e+06 13773 LT +1.78074e+06 14393 LT +1.78924e+06 14393 LT +1.78986e+06 13773 LT +CP BF QS +NP +1.78224e+06 12897 MT +1.78162e+06 12277 LT +1.78074e+06 12277 LT +1.78042e+06 12606 LT +1.77632e+06 17164 LT +1.77632e+06 18007 LT +1.77694e+06 18627 LT +1.77781e+06 18627 LT +1.77814e+06 18298 LT +1.78224e+06 13740 LT +CP BF QS +NP +1.79367e+06 32371 MT +1.77781e+06 16511 LT +1.77694e+06 16511 LT +1.77632e+06 17131 LT +1.77632e+06 18007 LT +1.79218e+06 33867 LT +1.79305e+06 33867 LT +1.79367e+06 33247 LT +CP BF QS +NP +1.80148e+06 12662 MT +1.80109e+06 12277 LT +1.80022e+06 12277 LT +1.7996e+06 12897 LT +1.7996e+06 13652 LT +1.8155e+06 37716 LT +1.81588e+06 38101 LT +1.81676e+06 38101 LT +1.81738e+06 37481 LT +1.81738e+06 36726 LT +CP BF QS +NP +1.84066e+06 12897 MT +1.84004e+06 12277 LT +1.8235e+06 12277 LT +1.82288e+06 12897 LT +1.82288e+06 13773 LT +1.8235e+06 14393 LT +1.84004e+06 14393 LT +1.84066e+06 13773 LT +CP BF QS +NP +1.82469e+06 12587 MT +1.82438e+06 12277 LT +1.8235e+06 12277 LT +1.82288e+06 12897 LT +1.82288e+06 13773 LT +1.83886e+06 29747 LT +1.83916e+06 30057 LT +1.84004e+06 30057 LT +1.84066e+06 29437 LT +1.84066e+06 28561 LT +CP BF QS +NP +1.84066e+06 28561 MT +1.84004e+06 27941 LT +1.83916e+06 27941 LT +1.83854e+06 28561 LT +1.83854e+06 33247 LT +1.83916e+06 33867 LT +1.84004e+06 33867 LT +1.84066e+06 33247 LT +CP BF QS +NP +1.84066e+06 32371 MT +1.84004e+06 31751 LT +1.83916e+06 31751 LT +1.83884e+06 32080 LT +1.83474e+06 36638 LT +1.83474e+06 37481 LT +1.83536e+06 38101 LT +1.83623e+06 38101 LT +1.83656e+06 37772 LT +1.84066e+06 33214 LT +CP BF QS +NP +1.83685e+06 36605 MT +1.83623e+06 35985 LT +1.82731e+06 35985 LT +1.82669e+06 36605 LT +1.82669e+06 37481 LT +1.82731e+06 38101 LT +1.83623e+06 38101 LT +1.83685e+06 37481 LT +CP BF QS +NP +1.82471e+06 32080 MT +1.82438e+06 31751 LT +1.8235e+06 31751 LT +1.82288e+06 32371 LT +1.82288e+06 33214 LT +1.82698e+06 37772 LT +1.82731e+06 38101 LT +1.82819e+06 38101 LT +1.82881e+06 37481 LT +1.82881e+06 36638 LT +CP BF QS +NP +1.84797e+06 32061 MT +1.84766e+06 31751 LT +1.84678e+06 31751 LT +1.84616e+06 32371 LT +1.84616e+06 33247 LT +1.85071e+06 37791 LT +1.85102e+06 38101 LT +1.85189e+06 38101 LT +1.85251e+06 37481 LT +1.85251e+06 36605 LT +CP BF QS +NP +1.86013e+06 36605 MT +1.85951e+06 35985 LT +1.85102e+06 35985 LT +1.8504e+06 36605 LT +1.8504e+06 37481 LT +1.85102e+06 38101 LT +1.85951e+06 38101 LT +1.86013e+06 37481 LT +CP BF QS +NP +1.86394e+06 32371 MT +1.86332e+06 31751 LT +1.86245e+06 31751 LT +1.86212e+06 32080 LT +1.85802e+06 36638 LT +1.85802e+06 37481 LT +1.85864e+06 38101 LT +1.85951e+06 38101 LT +1.85984e+06 37772 LT +1.86394e+06 33214 LT +CP BF QS +NP +1.86394e+06 28561 MT +1.86332e+06 27941 LT +1.86245e+06 27941 LT +1.86183e+06 28561 LT +1.86183e+06 33247 LT +1.86245e+06 33867 LT +1.86332e+06 33867 LT +1.86394e+06 33247 LT +CP BF QS +NP +1.86394e+06 28561 MT +1.85951e+06 24131 LT +1.85864e+06 24131 LT +1.85802e+06 24751 LT +1.85802e+06 25627 LT +1.86245e+06 30057 LT +1.86332e+06 30057 LT +1.86394e+06 29437 LT +CP BF QS +NP +1.86394e+06 20941 MT +1.86332e+06 20321 LT +1.86245e+06 20321 LT +1.85802e+06 24751 LT +1.85802e+06 25627 LT +1.85864e+06 26247 LT +1.85951e+06 26247 LT +1.86394e+06 21817 LT +CP BF QS +NP +1.86394e+06 17131 MT +1.86332e+06 16511 LT +1.86245e+06 16511 LT +1.86183e+06 17131 LT +1.86183e+06 21817 LT +1.86245e+06 22437 LT +1.86332e+06 22437 LT +1.86394e+06 21817 LT +CP BF QS +NP +1.85984e+06 12606 MT +1.85951e+06 12277 LT +1.85864e+06 12277 LT +1.85802e+06 12897 LT +1.85802e+06 13740 LT +1.86212e+06 18298 LT +1.86245e+06 18627 LT +1.86332e+06 18627 LT +1.86394e+06 18007 LT +1.86394e+06 17164 LT +CP BF QS +NP +1.86013e+06 12897 MT +1.85951e+06 12277 LT +1.85102e+06 12277 LT +1.8504e+06 12897 LT +1.8504e+06 13773 LT +1.85102e+06 14393 LT +1.85951e+06 14393 LT +1.86013e+06 13773 LT +CP BF QS +NP +1.85251e+06 12897 MT +1.85189e+06 12277 LT +1.85102e+06 12277 LT +1.85071e+06 12587 LT +1.84616e+06 17131 LT +1.84616e+06 18007 LT +1.84678e+06 18627 LT +1.84766e+06 18627 LT +1.84797e+06 18317 LT +1.85251e+06 13773 LT +CP BF QS +NP +1.84828e+06 17131 MT +1.84766e+06 16511 LT +1.84678e+06 16511 LT +1.84616e+06 17131 LT +1.84616e+06 21817 LT +1.84678e+06 22437 LT +1.84766e+06 22437 LT +1.84828e+06 21817 LT +CP BF QS +NP +1.85251e+06 24751 MT +1.85218e+06 24422 LT +1.84763e+06 20321 LT +1.84678e+06 20321 LT +1.84616e+06 20941 LT +1.84616e+06 21817 LT +1.84649e+06 22146 LT +1.85105e+06 26247 LT +1.85189e+06 26247 LT +1.85251e+06 25627 LT +CP BF QS +NP +1.85251e+06 24751 MT +1.85189e+06 24131 LT +1.85105e+06 24131 LT +1.84649e+06 28232 LT +1.84616e+06 28561 LT +1.84616e+06 29437 LT +1.84678e+06 30057 LT +1.84763e+06 30057 LT +1.85218e+06 25956 LT +1.85251e+06 25627 LT +CP BF QS +NP +1.84828e+06 28561 MT +1.84766e+06 27941 LT +1.84678e+06 27941 LT +1.84616e+06 28561 LT +1.84616e+06 33247 LT +1.84678e+06 33867 LT +1.84766e+06 33867 LT +1.84828e+06 33247 LT +CP BF QS +NP +1.86013e+06 24751 MT +1.85951e+06 24131 LT +1.85102e+06 24131 LT +1.8504e+06 24751 LT +1.8504e+06 25627 LT +1.85102e+06 26247 LT +1.85951e+06 26247 LT +1.86013e+06 25627 LT +CP BF QS +NP +1.87176e+06 12667 MT +1.87137e+06 12277 LT +1.87049e+06 12277 LT +1.86987e+06 12897 LT +1.86987e+06 13645 LT +1.88534e+06 37711 LT +1.88573e+06 38101 LT +1.88661e+06 38101 LT +1.88723e+06 37481 LT +1.88723e+06 36733 LT +CP BF QS +NP +1.91094e+06 12897 MT +1.91032e+06 12277 LT +1.89378e+06 12277 LT +1.89316e+06 12897 LT +1.89316e+06 13773 LT +1.89378e+06 14393 LT +1.91032e+06 14393 LT +1.91094e+06 13773 LT +CP BF QS +NP +1.91094e+06 28561 MT +1.89465e+06 12277 LT +1.89378e+06 12277 LT +1.89316e+06 12897 LT +1.89316e+06 13773 LT +1.90944e+06 30057 LT +1.91032e+06 30057 LT +1.91094e+06 29437 LT +CP BF QS +NP +1.91094e+06 28561 MT +1.91032e+06 27941 LT +1.90944e+06 27941 LT +1.90882e+06 28561 LT +1.90882e+06 33247 LT +1.90944e+06 33867 LT +1.91032e+06 33867 LT +1.91094e+06 33247 LT +CP BF QS +NP +1.91094e+06 32371 MT +1.91032e+06 31751 LT +1.90944e+06 31751 LT +1.90458e+06 36605 LT +1.90458e+06 37481 LT +1.9052e+06 38101 LT +1.90608e+06 38101 LT +1.91094e+06 33247 LT +CP BF QS +NP +1.9067e+06 36605 MT +1.90608e+06 35985 LT +1.89758e+06 35985 LT +1.89696e+06 36605 LT +1.89696e+06 37481 LT +1.89758e+06 38101 LT +1.90608e+06 38101 LT +1.9067e+06 37481 LT +CP BF QS +NP +1.89498e+06 32080 MT +1.89465e+06 31751 LT +1.89378e+06 31751 LT +1.89316e+06 32371 LT +1.89316e+06 33214 LT +1.89726e+06 37772 LT +1.89758e+06 38101 LT +1.89846e+06 38101 LT +1.89908e+06 37481 LT +1.89908e+06 36638 LT +CP BF QS +NP +1.91856e+06 17131 MT +1.91794e+06 16511 LT +1.91706e+06 16511 LT +1.91644e+06 17131 LT +1.91644e+06 33247 LT +1.91706e+06 33867 LT +1.91794e+06 33867 LT +1.91856e+06 33247 LT +CP BF QS +NP +1.91826e+06 32080 MT +1.91794e+06 31751 LT +1.91706e+06 31751 LT +1.91644e+06 32371 LT +1.91644e+06 33214 LT +1.92054e+06 37772 LT +1.92087e+06 38101 LT +1.92174e+06 38101 LT +1.92236e+06 37481 LT +1.92236e+06 36638 LT +CP BF QS +NP +1.93041e+06 36605 MT +1.92979e+06 35985 LT +1.92087e+06 35985 LT +1.92025e+06 36605 LT +1.92025e+06 37481 LT +1.92087e+06 38101 LT +1.92979e+06 38101 LT +1.93041e+06 37481 LT +CP BF QS +NP +1.93422e+06 32371 MT +1.9336e+06 31751 LT +1.93272e+06 31751 LT +1.93239e+06 32080 LT +1.92829e+06 36638 LT +1.92829e+06 37481 LT +1.92891e+06 38101 LT +1.92979e+06 38101 LT +1.93012e+06 37772 LT +1.93422e+06 33214 LT +CP BF QS +NP +1.93422e+06 17131 MT +1.9336e+06 16511 LT +1.93272e+06 16511 LT +1.9321e+06 17131 LT +1.9321e+06 33247 LT +1.93272e+06 33867 LT +1.9336e+06 33867 LT +1.93422e+06 33247 LT +CP BF QS +NP +1.93012e+06 12606 MT +1.92979e+06 12277 LT +1.92891e+06 12277 LT +1.92829e+06 12897 LT +1.92829e+06 13740 LT +1.93239e+06 18298 LT +1.93272e+06 18627 LT +1.9336e+06 18627 LT +1.93422e+06 18007 LT +1.93422e+06 17164 LT +CP BF QS +NP +1.93041e+06 12897 MT +1.92979e+06 12277 LT +1.92087e+06 12277 LT +1.92025e+06 12897 LT +1.92025e+06 13773 LT +1.92087e+06 14393 LT +1.92979e+06 14393 LT +1.93041e+06 13773 LT +CP BF QS +NP +1.92236e+06 12897 MT +1.92174e+06 12277 LT +1.92087e+06 12277 LT +1.92054e+06 12606 LT +1.91644e+06 17164 LT +1.91644e+06 18007 LT +1.91706e+06 18627 LT +1.91794e+06 18627 LT +1.91826e+06 18298 LT +1.92236e+06 13740 LT +CP BF QS +NP +1.93422e+06 32371 MT +1.9339e+06 32056 LT +1.91793e+06 16511 LT +1.91706e+06 16511 LT +1.91644e+06 17131 LT +1.91644e+06 18007 LT +1.91675e+06 18322 LT +1.93273e+06 33867 LT +1.9336e+06 33867 LT +1.93422e+06 33247 LT +CP BF QS +NP +1.94184e+06 17131 MT +1.94122e+06 16511 LT +1.94034e+06 16511 LT +1.93972e+06 17131 LT +1.93972e+06 33247 LT +1.94034e+06 33867 LT +1.94122e+06 33867 LT +1.94184e+06 33247 LT +CP BF QS +NP +1.94607e+06 36605 MT +1.94122e+06 31751 LT +1.94034e+06 31751 LT +1.93972e+06 32371 LT +1.93972e+06 33247 LT +1.94458e+06 38101 LT +1.94545e+06 38101 LT +1.94607e+06 37481 LT +CP BF QS +NP +1.95369e+06 36605 MT +1.95307e+06 35985 LT +1.94458e+06 35985 LT +1.94396e+06 36605 LT +1.94396e+06 37481 LT +1.94458e+06 38101 LT +1.95307e+06 38101 LT +1.95369e+06 37481 LT +CP BF QS +NP +1.9575e+06 32371 MT +1.95688e+06 31751 LT +1.95601e+06 31751 LT +1.95568e+06 32080 LT +1.95158e+06 36638 LT +1.95158e+06 37481 LT +1.9522e+06 38101 LT +1.95307e+06 38101 LT +1.9534e+06 37772 LT +1.9575e+06 33214 LT +CP BF QS +NP +1.9575e+06 17131 MT +1.95688e+06 16511 LT +1.95601e+06 16511 LT +1.95539e+06 17131 LT +1.95539e+06 33247 LT +1.95601e+06 33867 LT +1.95688e+06 33867 LT +1.9575e+06 33247 LT +CP BF QS +NP +1.9534e+06 12606 MT +1.95307e+06 12277 LT +1.9522e+06 12277 LT +1.95158e+06 12897 LT +1.95158e+06 13740 LT +1.95568e+06 18298 LT +1.95601e+06 18627 LT +1.95688e+06 18627 LT +1.9575e+06 18007 LT +1.9575e+06 17164 LT +CP BF QS +NP +1.95369e+06 12897 MT +1.95307e+06 12277 LT +1.94458e+06 12277 LT +1.94396e+06 12897 LT +1.94396e+06 13773 LT +1.94458e+06 14393 LT +1.95307e+06 14393 LT +1.95369e+06 13773 LT +CP BF QS +NP +1.94607e+06 12897 MT +1.94545e+06 12277 LT +1.94458e+06 12277 LT +1.93972e+06 17131 LT +1.93972e+06 18007 LT +1.94034e+06 18627 LT +1.94122e+06 18627 LT +1.94607e+06 13773 LT +CP BF QS +NP +1.9575e+06 32371 MT +1.95719e+06 32056 LT +1.94121e+06 16511 LT +1.94034e+06 16511 LT +1.93972e+06 17131 LT +1.93972e+06 18007 LT +1.94004e+06 18322 LT +1.95602e+06 33867 LT +1.95688e+06 33867 LT +1.9575e+06 33247 LT +CP BF QS +NP +1.98078e+06 36605 MT +1.98037e+06 36191 LT +1.97238e+06 31751 LT +1.97167e+06 31751 LT +1.97105e+06 32371 LT +1.97105e+06 33247 LT +1.97146e+06 33661 LT +1.97945e+06 38101 LT +1.98016e+06 38101 LT +1.98078e+06 37481 LT +CP BF QS +NP +1.97316e+06 32371 MT +1.96492e+06 24131 LT +1.96405e+06 24131 LT +1.96343e+06 24751 LT +1.96343e+06 25627 LT +1.97167e+06 33867 LT +1.97254e+06 33867 LT +1.97316e+06 33247 LT +CP BF QS +NP +1.96554e+06 17131 MT +1.96492e+06 16511 LT +1.96405e+06 16511 LT +1.96343e+06 17131 LT +1.96343e+06 25627 LT +1.96405e+06 26247 LT +1.96492e+06 26247 LT +1.96554e+06 25627 LT +CP BF QS +NP +1.96936e+06 12897 MT +1.96874e+06 12277 LT +1.96786e+06 12277 LT +1.96753e+06 12606 LT +1.96343e+06 17164 LT +1.96343e+06 18007 LT +1.96405e+06 18627 LT +1.96492e+06 18627 LT +1.96525e+06 18298 LT +1.96936e+06 13740 LT +CP BF QS +NP +1.97698e+06 12897 MT +1.97636e+06 12277 LT +1.96786e+06 12277 LT +1.96724e+06 12897 LT +1.96724e+06 13773 LT +1.96786e+06 14393 LT +1.97636e+06 14393 LT +1.97698e+06 13773 LT +CP BF QS +NP +1.97668e+06 12606 MT +1.97636e+06 12277 LT +1.97548e+06 12277 LT +1.97486e+06 12897 LT +1.97486e+06 13740 LT +1.97896e+06 18298 LT +1.97929e+06 18627 LT +1.98016e+06 18627 LT +1.98078e+06 18007 LT +1.98078e+06 17164 LT +CP BF QS +NP +1.98078e+06 17131 MT +1.98016e+06 16511 LT +1.97929e+06 16511 LT +1.97867e+06 17131 LT +1.97867e+06 21817 LT +1.97929e+06 22437 LT +1.98016e+06 22437 LT +1.98078e+06 21817 LT +CP BF QS +NP +1.98078e+06 20941 MT +1.98016e+06 20321 LT +1.97929e+06 20321 LT +1.97486e+06 24751 LT +1.97486e+06 25627 LT +1.97548e+06 26247 LT +1.97636e+06 26247 LT +1.98078e+06 21817 LT +CP BF QS +NP +1.97698e+06 24751 MT +1.97636e+06 24131 LT +1.96405e+06 24131 LT +1.96343e+06 24751 LT +1.96343e+06 25627 LT +1.96405e+06 26247 LT +1.97636e+06 26247 LT +1.97698e+06 25627 LT +CP BF QS +NP +2.01181e+06 28261 MT +2.01149e+06 27941 LT +2.01062e+06 27941 LT +2.01e+06 28561 LT +2.01e+06 29420 LT +2.01792e+06 37781 LT +2.01824e+06 38101 LT +2.01911e+06 38101 LT +2.01973e+06 37481 LT +2.01973e+06 36622 LT +CP BF QS +NP +2.01973e+06 12897 MT +2.01911e+06 12277 LT +2.01824e+06 12277 LT +2.01762e+06 12897 LT +2.01762e+06 37481 LT +2.01824e+06 38101 LT +2.01911e+06 38101 LT +2.01973e+06 37481 LT +CP BF QS +NP +2.02778e+06 12897 MT +2.02716e+06 12277 LT +2.01062e+06 12277 LT +2.01e+06 12897 LT +2.01e+06 13773 LT +2.01062e+06 14393 LT +2.02716e+06 14393 LT +2.02778e+06 13773 LT +CP BF QS +NP +2.04725e+06 12897 MT +2.04663e+06 12277 LT +2.04575e+06 12277 LT +2.04513e+06 12897 LT +2.04513e+06 37481 LT +2.04575e+06 38101 LT +2.04663e+06 38101 LT +2.04725e+06 37481 LT +CP BF QS +NP +2.04725e+06 36605 MT +2.03478e+06 24131 LT +2.0339e+06 24131 LT +2.03328e+06 24751 LT +2.03328e+06 25627 LT +2.04575e+06 38101 LT +2.04663e+06 38101 LT +2.04725e+06 37481 LT +CP BF QS +NP +2.05106e+06 24751 MT +2.05044e+06 24131 LT +2.0339e+06 24131 LT +2.03328e+06 24751 LT +2.03328e+06 25627 LT +2.0339e+06 26247 LT +2.05044e+06 26247 LT +2.05106e+06 25627 LT +CP BF QS +NP +2.06291e+06 28561 MT +2.06229e+06 27941 LT +2.05761e+06 27941 LT +2.05699e+06 28561 LT +2.05699e+06 29437 LT +2.05761e+06 30057 LT +2.06229e+06 30057 LT +2.06291e+06 29437 LT +CP BF QS +NP +2.06291e+06 24751 MT +2.06229e+06 24131 LT +2.06142e+06 24131 LT +2.0608e+06 24751 LT +2.0608e+06 29437 LT +2.06142e+06 30057 LT +2.06229e+06 30057 LT +2.06291e+06 29437 LT +CP BF QS +NP +2.06291e+06 24751 MT +2.06229e+06 24131 LT +2.05761e+06 24131 LT +2.05699e+06 24751 LT +2.05699e+06 25627 LT +2.05761e+06 26247 LT +2.06229e+06 26247 LT +2.06291e+06 25627 LT +CP BF QS +NP +2.0591e+06 24751 MT +2.05848e+06 24131 LT +2.05761e+06 24131 LT +2.05699e+06 24751 LT +2.05699e+06 29437 LT +2.05761e+06 30057 LT +2.05848e+06 30057 LT +2.0591e+06 29437 LT +CP BF QS +NP +2.06291e+06 17131 MT +2.06229e+06 16511 LT +2.05761e+06 16511 LT +2.05699e+06 17131 LT +2.05699e+06 18007 LT +2.05761e+06 18627 LT +2.06229e+06 18627 LT +2.06291e+06 18007 LT +CP BF QS +NP +2.06291e+06 12897 MT +2.06229e+06 12277 LT +2.06142e+06 12277 LT +2.0608e+06 12897 LT +2.0608e+06 18007 LT +2.06142e+06 18627 LT +2.06229e+06 18627 LT +2.06291e+06 18007 LT +CP BF QS +NP +2.06291e+06 12897 MT +2.06229e+06 12277 LT +2.05761e+06 12277 LT +2.05699e+06 12897 LT +2.05699e+06 13773 LT +2.05761e+06 14393 LT +2.06229e+06 14393 LT +2.06291e+06 13773 LT +CP BF QS +NP +2.0591e+06 12897 MT +2.05848e+06 12277 LT +2.05761e+06 12277 LT +2.05699e+06 12897 LT +2.05699e+06 18007 LT +2.05761e+06 18627 LT +2.05848e+06 18627 LT +2.0591e+06 18007 LT +CP BF QS +NP +2.07053e+06 17131 MT +2.06991e+06 16511 LT +2.06904e+06 16511 LT +2.06842e+06 17131 LT +2.06842e+06 33247 LT +2.06904e+06 33867 LT +2.06991e+06 33867 LT +2.07053e+06 33247 LT +CP BF QS +NP +2.07024e+06 32080 MT +2.06991e+06 31751 LT +2.06904e+06 31751 LT +2.06842e+06 32371 LT +2.06842e+06 33214 LT +2.07252e+06 37772 LT +2.07285e+06 38101 LT +2.07372e+06 38101 LT +2.07434e+06 37481 LT +2.07434e+06 36638 LT +CP BF QS +NP +2.08238e+06 36605 MT +2.08176e+06 35985 LT +2.07285e+06 35985 LT +2.07223e+06 36605 LT +2.07223e+06 37481 LT +2.07285e+06 38101 LT +2.08176e+06 38101 LT +2.08238e+06 37481 LT +CP BF QS +NP +2.0862e+06 32371 MT +2.08558e+06 31751 LT +2.0847e+06 31751 LT +2.08437e+06 32080 LT +2.08027e+06 36638 LT +2.08027e+06 37481 LT +2.08089e+06 38101 LT +2.08176e+06 38101 LT +2.08209e+06 37772 LT +2.0862e+06 33214 LT +CP BF QS +NP +2.0862e+06 17131 MT +2.08558e+06 16511 LT +2.0847e+06 16511 LT +2.08408e+06 17131 LT +2.08408e+06 33247 LT +2.0847e+06 33867 LT +2.08558e+06 33867 LT +2.0862e+06 33247 LT +CP BF QS +NP +2.08209e+06 12606 MT +2.08176e+06 12277 LT +2.08089e+06 12277 LT +2.08027e+06 12897 LT +2.08027e+06 13740 LT +2.08437e+06 18298 LT +2.0847e+06 18627 LT +2.08558e+06 18627 LT +2.0862e+06 18007 LT +2.0862e+06 17164 LT +CP BF QS +NP +2.08238e+06 12897 MT +2.08176e+06 12277 LT +2.07285e+06 12277 LT +2.07223e+06 12897 LT +2.07223e+06 13773 LT +2.07285e+06 14393 LT +2.08176e+06 14393 LT +2.08238e+06 13773 LT +CP BF QS +NP +2.07434e+06 12897 MT +2.07372e+06 12277 LT +2.07285e+06 12277 LT +2.07252e+06 12606 LT +2.06842e+06 17164 LT +2.06842e+06 18007 LT +2.06904e+06 18627 LT +2.06991e+06 18627 LT +2.07024e+06 18298 LT +2.07434e+06 13740 LT +CP BF QS +NP +2.0862e+06 32371 MT +2.08588e+06 32056 LT +2.0699e+06 16511 LT +2.06904e+06 16511 LT +2.06842e+06 17131 LT +2.06842e+06 18007 LT +2.06873e+06 18322 LT +2.08471e+06 33867 LT +2.08558e+06 33867 LT +2.0862e+06 33247 LT +CP BF QS +NP +2.09805e+06 36605 MT +2.0932e+06 31751 LT +2.09232e+06 31751 LT +2.0917e+06 32371 LT +2.0917e+06 33247 LT +2.09655e+06 38101 LT +2.09743e+06 38101 LT +2.09805e+06 37481 LT +CP BF QS +NP +2.10567e+06 36605 MT +2.10505e+06 35985 LT +2.09655e+06 35985 LT +2.09593e+06 36605 LT +2.09593e+06 37481 LT +2.09655e+06 38101 LT +2.10505e+06 38101 LT +2.10567e+06 37481 LT +CP BF QS +NP +2.10948e+06 32371 MT +2.10886e+06 31751 LT +2.10798e+06 31751 LT +2.10765e+06 32080 LT +2.10355e+06 36638 LT +2.10355e+06 37481 LT +2.10417e+06 38101 LT +2.10505e+06 38101 LT +2.10538e+06 37772 LT +2.10948e+06 33214 LT +CP BF QS +NP +2.10948e+06 28561 MT +2.10886e+06 27941 LT +2.10798e+06 27941 LT +2.10736e+06 28561 LT +2.10736e+06 33247 LT +2.10798e+06 33867 LT +2.10886e+06 33867 LT +2.10948e+06 33247 LT +CP BF QS +NP +2.10948e+06 28561 MT +2.10505e+06 24131 LT +2.10417e+06 24131 LT +2.10355e+06 24751 LT +2.10355e+06 25627 LT +2.10798e+06 30057 LT +2.10886e+06 30057 LT +2.10948e+06 29437 LT +CP BF QS +NP +2.10567e+06 24751 MT +2.10505e+06 24131 LT +2.10036e+06 24131 LT +2.09974e+06 24751 LT +2.09974e+06 25627 LT +2.10036e+06 26247 LT +2.10505e+06 26247 LT +2.10567e+06 25627 LT +CP BF QS +NP +2.10948e+06 20941 MT +2.10886e+06 20321 LT +2.10798e+06 20321 LT +2.10355e+06 24751 LT +2.10355e+06 25627 LT +2.10417e+06 26247 LT +2.10505e+06 26247 LT +2.10948e+06 21817 LT +CP BF QS +NP +2.10948e+06 17131 MT +2.10886e+06 16511 LT +2.10798e+06 16511 LT +2.10736e+06 17131 LT +2.10736e+06 21817 LT +2.10798e+06 22437 LT +2.10886e+06 22437 LT +2.10948e+06 21817 LT +CP BF QS +NP +2.10538e+06 12606 MT +2.10505e+06 12277 LT +2.10417e+06 12277 LT +2.10355e+06 12897 LT +2.10355e+06 13740 LT +2.10765e+06 18298 LT +2.10798e+06 18627 LT +2.10886e+06 18627 LT +2.10948e+06 18007 LT +2.10948e+06 17164 LT +CP BF QS +NP +2.10567e+06 12897 MT +2.10505e+06 12277 LT +2.09655e+06 12277 LT +2.09593e+06 12897 LT +2.09593e+06 13773 LT +2.09655e+06 14393 LT +2.10505e+06 14393 LT +2.10567e+06 13773 LT +CP BF QS +NP +2.09805e+06 12897 MT +2.09743e+06 12277 LT +2.09655e+06 12277 LT +2.0917e+06 17131 LT +2.0917e+06 18007 LT +2.09232e+06 18627 LT +2.0932e+06 18627 LT +2.09805e+06 13773 LT +CP BF QS +NP +2.12133e+06 28561 MT +2.12071e+06 27941 LT +2.11603e+06 27941 LT +2.11541e+06 28561 LT +2.11541e+06 29437 LT +2.11603e+06 30057 LT +2.12071e+06 30057 LT +2.12133e+06 29437 LT +CP BF QS +NP +2.12133e+06 24751 MT +2.12071e+06 24131 LT +2.11984e+06 24131 LT +2.11922e+06 24751 LT +2.11922e+06 29437 LT +2.11984e+06 30057 LT +2.12071e+06 30057 LT +2.12133e+06 29437 LT +CP BF QS +NP +2.12133e+06 24751 MT +2.12071e+06 24131 LT +2.11603e+06 24131 LT +2.11541e+06 24751 LT +2.11541e+06 25627 LT +2.11603e+06 26247 LT +2.12071e+06 26247 LT +2.12133e+06 25627 LT +CP BF QS +NP +2.11752e+06 24751 MT +2.1169e+06 24131 LT +2.11603e+06 24131 LT +2.11541e+06 24751 LT +2.11541e+06 29437 LT +2.11603e+06 30057 LT +2.1169e+06 30057 LT +2.11752e+06 29437 LT +CP BF QS +NP +2.12133e+06 17131 MT +2.12071e+06 16511 LT +2.11603e+06 16511 LT +2.11541e+06 17131 LT +2.11541e+06 18007 LT +2.11603e+06 18627 LT +2.12071e+06 18627 LT +2.12133e+06 18007 LT +CP BF QS +NP +2.12133e+06 12897 MT +2.12071e+06 12277 LT +2.11984e+06 12277 LT +2.11922e+06 12897 LT +2.11922e+06 18007 LT +2.11984e+06 18627 LT +2.12071e+06 18627 LT +2.12133e+06 18007 LT +CP BF QS +NP +2.12133e+06 12897 MT +2.12071e+06 12277 LT +2.11603e+06 12277 LT +2.11541e+06 12897 LT +2.11541e+06 13773 LT +2.11603e+06 14393 LT +2.12071e+06 14393 LT +2.12133e+06 13773 LT +CP BF QS +NP +2.11752e+06 12897 MT +2.1169e+06 12277 LT +2.11603e+06 12277 LT +2.11541e+06 12897 LT +2.11541e+06 18007 LT +2.11603e+06 18627 LT +2.1169e+06 18627 LT +2.11752e+06 18007 LT +CP BF QS +NP +2.14081e+06 12897 MT +2.14019e+06 12277 LT +2.13931e+06 12277 LT +2.13869e+06 12897 LT +2.13869e+06 37481 LT +2.13931e+06 38101 LT +2.14019e+06 38101 LT +2.14081e+06 37481 LT +CP BF QS +NP +2.14081e+06 36605 MT +2.12833e+06 24131 LT +2.12746e+06 24131 LT +2.12684e+06 24751 LT +2.12684e+06 25627 LT +2.13931e+06 38101 LT +2.14019e+06 38101 LT +2.14081e+06 37481 LT +CP BF QS +NP +2.14462e+06 24751 MT +2.144e+06 24131 LT +2.12746e+06 24131 LT +2.12684e+06 24751 LT +2.12684e+06 25627 LT +2.12746e+06 26247 LT +2.144e+06 26247 LT +2.14462e+06 25627 LT +CP BF QS +NP +2.1679e+06 36605 MT +2.16728e+06 35985 LT +2.15116e+06 35985 LT +2.15054e+06 36605 LT +2.15054e+06 37481 LT +2.15116e+06 38101 LT +2.16728e+06 38101 LT +2.1679e+06 37481 LT +CP BF QS +NP +2.1679e+06 32371 MT +2.16728e+06 31751 LT +2.1664e+06 31751 LT +2.16578e+06 32371 LT +2.16578e+06 37481 LT +2.1664e+06 38101 LT +2.16728e+06 38101 LT +2.1679e+06 37481 LT +CP BF QS +NP +2.1679e+06 32371 MT +2.15204e+06 16511 LT +2.15116e+06 16511 LT +2.15054e+06 17131 LT +2.15054e+06 18007 LT +2.1664e+06 33867 LT +2.16728e+06 33867 LT +2.1679e+06 33247 LT +CP BF QS +NP +2.15266e+06 12897 MT +2.15204e+06 12277 LT +2.15116e+06 12277 LT +2.15054e+06 12897 LT +2.15054e+06 18007 LT +2.15116e+06 18627 LT +2.15204e+06 18627 LT +2.15266e+06 18007 LT +CP BF QS +NP +2.33808e+06 50276 MT +2.33734e+06 49532 LT +1.62508e+06 49532 LT +1.62434e+06 50276 LT +1.62434e+06 51328 LT +1.62508e+06 52072 LT +2.33734e+06 52072 LT +2.33808e+06 51328 LT +CP BF QS +NP +1.62688e+06 50276 MT +1.62613e+06 49532 LT +1.62508e+06 49532 LT +1.62434e+06 50276 LT +1.62434e+06 152931 LT +1.62508e+06 153675 LT +1.62613e+06 153675 LT +1.62688e+06 152931 LT +CP BF QS +NP +2.64288e+06 50276 MT +2.64214e+06 49532 LT +2.64109e+06 49532 LT +2.64034e+06 50276 LT +2.64034e+06 152931 LT +2.64109e+06 153675 LT +2.64214e+06 153675 LT +2.64288e+06 152931 LT +CP BF QS +NP +2.33808e+06 -526 MT +2.33734e+06 -1270 LT +2.33628e+06 -1270 LT +2.33554e+06 -526 LT +2.33554e+06 51328 LT +2.33628e+06 52072 LT +2.33734e+06 52072 LT +2.33808e+06 51328 LT +CP BF QS +NP +2.50318e+06 50276 MT +2.50244e+06 49532 LT +2.33628e+06 49532 LT +2.33554e+06 50276 LT +2.33554e+06 51328 LT +2.33628e+06 52072 LT +2.50244e+06 52072 LT +2.50318e+06 51328 LT +CP BF QS +NP +2.64288e+06 -526 MT +2.64214e+06 -1270 LT +2.33628e+06 -1270 LT +2.33554e+06 -526 LT +2.33554e+06 526 LT +2.33628e+06 1270 LT +2.64214e+06 1270 LT +2.64288e+06 526 LT +CP BF QS +NP +2.36729e+06 32371 MT +2.36667e+06 31751 LT +2.36579e+06 31751 LT +2.36546e+06 32080 LT +2.36136e+06 36638 LT +2.36136e+06 37481 LT +2.36198e+06 38101 LT +2.36286e+06 38101 LT +2.36319e+06 37772 LT +2.36729e+06 33214 LT +CP BF QS +NP +2.36348e+06 36605 MT +2.36286e+06 35985 LT +2.35436e+06 35985 LT +2.35374e+06 36605 LT +2.35374e+06 37481 LT +2.35436e+06 38101 LT +2.36286e+06 38101 LT +2.36348e+06 37481 LT +CP BF QS +NP +2.35132e+06 32061 MT +2.35101e+06 31751 LT +2.35013e+06 31751 LT +2.34951e+06 32371 LT +2.34951e+06 33247 LT +2.35405e+06 37791 LT +2.35436e+06 38101 LT +2.35524e+06 38101 LT +2.35586e+06 37481 LT +2.35586e+06 36605 LT +CP BF QS +NP +2.35163e+06 28561 MT +2.35101e+06 27941 LT +2.35013e+06 27941 LT +2.34951e+06 28561 LT +2.34951e+06 33247 LT +2.35013e+06 33867 LT +2.35101e+06 33867 LT +2.35163e+06 33247 LT +CP BF QS +NP +2.35586e+06 24751 MT +2.35524e+06 24131 LT +2.3544e+06 24131 LT +2.34984e+06 28232 LT +2.34951e+06 28561 LT +2.34951e+06 29437 LT +2.35013e+06 30057 LT +2.35098e+06 30057 LT +2.35553e+06 25956 LT +2.35586e+06 25627 LT +CP BF QS +NP +2.36348e+06 24751 MT +2.36286e+06 24131 LT +2.35436e+06 24131 LT +2.35374e+06 24751 LT +2.35374e+06 25627 LT +2.35436e+06 26247 LT +2.36286e+06 26247 LT +2.36348e+06 25627 LT +CP BF QS +NP +2.36729e+06 20941 MT +2.36667e+06 20321 LT +2.36579e+06 20321 LT +2.36136e+06 24751 LT +2.36136e+06 25627 LT +2.36198e+06 26247 LT +2.36286e+06 26247 LT +2.36729e+06 21817 LT +CP BF QS +NP +2.36729e+06 17131 MT +2.36667e+06 16511 LT +2.36579e+06 16511 LT +2.36517e+06 17131 LT +2.36517e+06 21817 LT +2.36579e+06 22437 LT +2.36667e+06 22437 LT +2.36729e+06 21817 LT +CP BF QS +NP +2.36319e+06 12606 MT +2.36286e+06 12277 LT +2.36198e+06 12277 LT +2.36136e+06 12897 LT +2.36136e+06 13740 LT +2.36546e+06 18298 LT +2.36579e+06 18627 LT +2.36667e+06 18627 LT +2.36729e+06 18007 LT +2.36729e+06 17164 LT +CP BF QS +NP +2.36348e+06 12897 MT +2.36286e+06 12277 LT +2.35436e+06 12277 LT +2.35374e+06 12897 LT +2.35374e+06 13773 LT +2.35436e+06 14393 LT +2.36286e+06 14393 LT +2.36348e+06 13773 LT +CP BF QS +NP +2.35586e+06 12897 MT +2.35524e+06 12277 LT +2.35436e+06 12277 LT +2.35405e+06 12587 LT +2.34951e+06 17131 LT +2.34951e+06 18007 LT +2.35013e+06 18627 LT +2.35101e+06 18627 LT +2.35132e+06 18317 LT +2.35586e+06 13773 LT +CP BF QS +NP +2.37533e+06 12897 MT +2.37471e+06 12277 LT +2.37384e+06 12277 LT +2.37322e+06 12897 LT +2.37322e+06 37481 LT +2.37384e+06 38101 LT +2.37471e+06 38101 LT +2.37533e+06 37481 LT +CP BF QS +NP +2.37914e+06 28561 MT +2.37471e+06 24131 LT +2.37384e+06 24131 LT +2.37322e+06 24751 LT +2.37322e+06 25627 LT +2.37765e+06 30057 LT +2.37852e+06 30057 LT +2.37914e+06 29437 LT +CP BF QS +NP +2.38676e+06 28561 MT +2.38614e+06 27941 LT +2.37765e+06 27941 LT +2.37703e+06 28561 LT +2.37703e+06 29437 LT +2.37765e+06 30057 LT +2.38614e+06 30057 LT +2.38676e+06 29437 LT +CP BF QS +NP +2.39057e+06 24751 MT +2.38995e+06 24131 LT +2.38908e+06 24131 LT +2.38465e+06 28561 LT +2.38465e+06 29437 LT +2.38527e+06 30057 LT +2.38614e+06 30057 LT +2.39057e+06 25627 LT +CP BF QS +NP +2.39057e+06 12897 MT +2.38995e+06 12277 LT +2.38908e+06 12277 LT +2.38846e+06 12897 LT +2.38846e+06 25627 LT +2.38908e+06 26247 LT +2.38995e+06 26247 LT +2.39057e+06 25627 LT +CP BF QS +NP +2.41005e+06 12897 MT +2.40943e+06 12277 LT +2.40093e+06 12277 LT +2.40031e+06 12897 LT +2.40031e+06 13773 LT +2.40093e+06 14393 LT +2.40943e+06 14393 LT +2.41005e+06 13773 LT +CP BF QS +NP +2.40243e+06 12897 MT +2.40181e+06 12277 LT +2.40093e+06 12277 LT +2.4006e+06 12606 LT +2.3965e+06 17164 LT +2.3965e+06 18007 LT +2.39712e+06 18627 LT +2.398e+06 18627 LT +2.39833e+06 18298 LT +2.40243e+06 13740 LT +CP BF QS +NP +2.39862e+06 17131 MT +2.398e+06 16511 LT +2.39712e+06 16511 LT +2.3965e+06 17131 LT +2.3965e+06 25627 LT +2.39712e+06 26247 LT +2.398e+06 26247 LT +2.39862e+06 25627 LT +CP BF QS +NP +2.40243e+06 28561 MT +2.398e+06 24131 LT +2.39712e+06 24131 LT +2.3965e+06 24751 LT +2.3965e+06 25627 LT +2.40093e+06 30057 LT +2.40181e+06 30057 LT +2.40243e+06 29437 LT +CP BF QS +NP +2.41005e+06 28561 MT +2.40943e+06 27941 LT +2.40093e+06 27941 LT +2.40031e+06 28561 LT +2.40031e+06 29437 LT +2.40093e+06 30057 LT +2.40943e+06 30057 LT +2.41005e+06 29437 LT +CP BF QS +NP +2.41428e+06 24751 MT +2.41366e+06 24131 LT +2.41282e+06 24131 LT +2.40826e+06 28232 LT +2.40793e+06 28561 LT +2.40793e+06 29437 LT +2.40855e+06 30057 LT +2.4094e+06 30057 LT +2.41395e+06 25956 LT +2.41428e+06 25627 LT +CP BF QS +NP +2.41428e+06 20941 MT +2.41366e+06 20321 LT +2.41278e+06 20321 LT +2.41216e+06 20941 LT +2.41216e+06 25627 LT +2.41278e+06 26247 LT +2.41366e+06 26247 LT +2.41428e+06 25627 LT +CP BF QS +NP +2.41428e+06 20941 MT +2.41366e+06 20321 LT +2.39712e+06 20321 LT +2.3965e+06 20941 LT +2.3965e+06 21817 LT +2.39712e+06 22437 LT +2.41366e+06 22437 LT +2.41428e+06 21817 LT +CP BF QS +NP +2.43375e+06 12897 MT +2.43313e+06 12277 LT +2.42421e+06 12277 LT +2.42359e+06 12897 LT +2.42359e+06 13773 LT +2.42421e+06 14393 LT +2.43313e+06 14393 LT +2.43375e+06 13773 LT +CP BF QS +NP +2.42571e+06 12897 MT +2.42509e+06 12277 LT +2.42421e+06 12277 LT +2.42388e+06 12606 LT +2.41978e+06 17164 LT +2.41978e+06 18007 LT +2.4204e+06 18627 LT +2.42128e+06 18627 LT +2.42161e+06 18298 LT +2.42571e+06 13740 LT +CP BF QS +NP +2.4219e+06 17131 MT +2.42128e+06 16511 LT +2.4204e+06 16511 LT +2.41978e+06 17131 LT +2.41978e+06 25627 LT +2.4204e+06 26247 LT +2.42128e+06 26247 LT +2.4219e+06 25627 LT +CP BF QS +NP +2.42571e+06 28561 MT +2.42128e+06 24131 LT +2.4204e+06 24131 LT +2.41978e+06 24751 LT +2.41978e+06 25627 LT +2.42421e+06 30057 LT +2.42509e+06 30057 LT +2.42571e+06 29437 LT +CP BF QS +NP +2.43375e+06 28561 MT +2.43313e+06 27941 LT +2.42421e+06 27941 LT +2.42359e+06 28561 LT +2.42359e+06 29437 LT +2.42421e+06 30057 LT +2.43313e+06 30057 LT +2.43375e+06 29437 LT +CP BF QS +NP +2.43756e+06 24751 MT +2.43694e+06 24131 LT +2.43607e+06 24131 LT +2.43164e+06 28561 LT +2.43164e+06 29437 LT +2.43226e+06 30057 LT +2.43313e+06 30057 LT +2.43756e+06 25627 LT +CP BF QS +NP +2.43756e+06 20941 MT +2.43694e+06 20321 LT +2.43607e+06 20321 LT +2.43545e+06 20941 LT +2.43545e+06 25627 LT +2.43607e+06 26247 LT +2.43694e+06 26247 LT +2.43756e+06 25627 LT +CP BF QS +NP +2.43756e+06 20941 MT +2.43694e+06 20321 LT +2.4204e+06 20321 LT +2.41978e+06 20941 LT +2.41978e+06 21817 LT +2.4204e+06 22437 LT +2.43694e+06 22437 LT +2.43756e+06 21817 LT +CP BF QS +NP +2.44942e+06 17131 MT +2.4488e+06 16511 LT +2.44792e+06 16511 LT +2.4473e+06 17131 LT +2.4473e+06 33247 LT +2.44792e+06 33867 LT +2.4488e+06 33867 LT +2.44942e+06 33247 LT +CP BF QS +NP +2.45323e+06 12897 MT +2.45261e+06 12277 LT +2.45173e+06 12277 LT +2.4514e+06 12606 LT +2.4473e+06 17164 LT +2.4473e+06 18007 LT +2.44792e+06 18627 LT +2.4488e+06 18627 LT +2.44913e+06 18298 LT +2.45323e+06 13740 LT +CP BF QS +NP +2.45323e+06 28561 MT +2.45261e+06 27941 LT +2.44369e+06 27941 LT +2.44307e+06 28561 LT +2.44307e+06 29437 LT +2.44369e+06 30057 LT +2.45261e+06 30057 LT +2.45323e+06 29437 LT +CP BF QS +NP +2.46466e+06 28561 MT +2.46404e+06 27941 LT +2.45935e+06 27941 LT +2.45873e+06 28561 LT +2.45873e+06 29437 LT +2.45935e+06 30057 LT +2.46404e+06 30057 LT +2.46466e+06 29437 LT +CP BF QS +NP +2.46466e+06 24751 MT +2.46404e+06 24131 LT +2.46316e+06 24131 LT +2.46254e+06 24751 LT +2.46254e+06 29437 LT +2.46316e+06 30057 LT +2.46404e+06 30057 LT +2.46466e+06 29437 LT +CP BF QS +NP +2.46466e+06 24751 MT +2.46404e+06 24131 LT +2.45935e+06 24131 LT +2.45873e+06 24751 LT +2.45873e+06 25627 LT +2.45935e+06 26247 LT +2.46404e+06 26247 LT +2.46466e+06 25627 LT +CP BF QS +NP +2.46085e+06 24751 MT +2.46023e+06 24131 LT +2.45935e+06 24131 LT +2.45873e+06 24751 LT +2.45873e+06 29437 LT +2.45935e+06 30057 LT +2.46023e+06 30057 LT +2.46085e+06 29437 LT +CP BF QS +NP +2.46466e+06 17131 MT +2.46404e+06 16511 LT +2.45935e+06 16511 LT +2.45873e+06 17131 LT +2.45873e+06 18007 LT +2.45935e+06 18627 LT +2.46404e+06 18627 LT +2.46466e+06 18007 LT +CP BF QS +NP +2.46466e+06 12897 MT +2.46404e+06 12277 LT +2.46316e+06 12277 LT +2.46254e+06 12897 LT +2.46254e+06 18007 LT +2.46316e+06 18627 LT +2.46404e+06 18627 LT +2.46466e+06 18007 LT +CP BF QS +NP +2.46466e+06 12897 MT +2.46404e+06 12277 LT +2.45935e+06 12277 LT +2.45873e+06 12897 LT +2.45873e+06 13773 LT +2.45935e+06 14393 LT +2.46404e+06 14393 LT +2.46466e+06 13773 LT +CP BF QS +NP +2.46085e+06 12897 MT +2.46023e+06 12277 LT +2.45935e+06 12277 LT +2.45873e+06 12897 LT +2.45873e+06 18007 LT +2.45935e+06 18627 LT +2.46023e+06 18627 LT +2.46085e+06 18007 LT +CP BF QS +NP +2.49937e+06 36605 MT +2.49071e+06 27941 LT +2.48983e+06 27941 LT +2.48921e+06 28561 LT +2.48921e+06 29437 LT +2.49788e+06 38101 LT +2.49875e+06 38101 LT +2.49937e+06 37481 LT +CP BF QS +NP +2.49937e+06 12897 MT +2.49875e+06 12277 LT +2.49788e+06 12277 LT +2.49726e+06 12897 LT +2.49726e+06 37481 LT +2.49788e+06 38101 LT +2.49875e+06 38101 LT +2.49937e+06 37481 LT +CP BF QS +NP +2.50699e+06 12897 MT +2.50637e+06 12277 LT +2.48983e+06 12277 LT +2.48921e+06 12897 LT +2.48921e+06 13773 LT +2.48983e+06 14393 LT +2.50637e+06 14393 LT +2.50699e+06 13773 LT +CP BF QS +NP +2.5148e+06 12667 MT +2.51441e+06 12277 LT +2.51354e+06 12277 LT +2.51292e+06 12897 LT +2.51292e+06 13645 LT +2.52839e+06 37711 LT +2.52878e+06 38101 LT +2.52965e+06 38101 LT +2.53027e+06 37481 LT +2.53027e+06 36733 LT +CP BF QS +NP +2.53802e+06 28261 MT +2.5377e+06 27941 LT +2.53682e+06 27941 LT +2.5362e+06 28561 LT +2.5362e+06 29420 LT +2.54412e+06 37781 LT +2.54444e+06 38101 LT +2.54532e+06 38101 LT +2.54594e+06 37481 LT +2.54594e+06 36622 LT +CP BF QS +NP +2.54594e+06 12897 MT +2.54532e+06 12277 LT +2.54444e+06 12277 LT +2.54382e+06 12897 LT +2.54382e+06 37481 LT +2.54444e+06 38101 LT +2.54532e+06 38101 LT +2.54594e+06 37481 LT +CP BF QS +NP +2.55398e+06 12897 MT +2.55336e+06 12277 LT +2.53682e+06 12277 LT +2.5362e+06 12897 LT +2.5362e+06 13773 LT +2.53682e+06 14393 LT +2.55336e+06 14393 LT +2.55398e+06 13773 LT +CP BF QS +NP +2.51673e+06 114501 MT +2.51611e+06 113881 LT +2.51523e+06 113881 LT +2.51461e+06 114501 LT +2.51461e+06 139084 LT +2.51523e+06 139704 LT +2.51611e+06 139704 LT +2.51673e+06 139084 LT +CP BF QS +NP +2.52858e+06 138208 MT +2.52796e+06 137588 LT +2.51523e+06 137588 LT +2.51461e+06 138208 LT +2.51461e+06 139084 LT +2.51523e+06 139704 LT +2.52796e+06 139704 LT +2.52858e+06 139084 LT +CP BF QS +NP +2.53239e+06 133975 MT +2.53177e+06 133355 LT +2.5309e+06 133355 LT +2.53057e+06 133684 LT +2.52646e+06 138240 LT +2.52646e+06 139084 LT +2.52708e+06 139704 LT +2.52796e+06 139704 LT +2.52829e+06 139375 LT +2.53239e+06 134819 LT +CP BF QS +NP +2.53239e+06 126355 MT +2.53177e+06 125735 LT +2.5309e+06 125735 LT +2.53028e+06 126355 LT +2.53028e+06 134851 LT +2.5309e+06 135471 LT +2.53177e+06 135471 LT +2.53239e+06 134851 LT +CP BF QS +NP +2.52827e+06 122234 MT +2.52796e+06 121924 LT +2.52708e+06 121924 LT +2.52646e+06 122544 LT +2.52646e+06 123420 LT +2.53058e+06 127541 LT +2.5309e+06 127851 LT +2.53177e+06 127851 LT +2.53239e+06 127231 LT +2.53239e+06 126355 LT +CP BF QS +NP +2.52858e+06 122544 MT +2.52796e+06 121924 LT +2.51523e+06 121924 LT +2.51461e+06 122544 LT +2.51461e+06 123420 LT +2.51523e+06 124040 LT +2.52796e+06 124040 LT +2.52858e+06 123420 LT +CP BF QS +NP +2.53239e+06 114501 MT +2.53177e+06 113881 LT +2.5309e+06 113881 LT +2.53058e+06 114201 LT +2.52266e+06 122561 LT +2.52266e+06 123420 LT +2.52328e+06 124040 LT +2.52415e+06 124040 LT +2.52447e+06 123720 LT +2.53239e+06 115360 LT +CP BF QS +NP +2.55567e+06 138208 MT +2.55505e+06 137588 LT +2.53894e+06 137588 LT +2.53832e+06 138208 LT +2.53832e+06 139084 LT +2.53894e+06 139704 LT +2.55505e+06 139704 LT +2.55567e+06 139084 LT +CP BF QS +NP +2.54043e+06 114501 MT +2.53981e+06 113881 LT +2.53894e+06 113881 LT +2.53832e+06 114501 LT +2.53832e+06 139084 LT +2.53894e+06 139704 LT +2.53981e+06 139704 LT +2.54043e+06 139084 LT +CP BF QS +NP +2.55567e+06 114501 MT +2.55505e+06 113881 LT +2.53894e+06 113881 LT +2.53832e+06 114501 LT +2.53832e+06 115377 LT +2.53894e+06 115997 LT +2.55505e+06 115997 LT +2.55567e+06 115377 LT +CP BF QS +NP +2.54805e+06 126355 MT +2.54743e+06 125735 LT +2.53894e+06 125735 LT +2.53832e+06 126355 LT +2.53832e+06 127231 LT +2.53894e+06 127851 LT +2.54743e+06 127851 LT +2.54805e+06 127231 LT +CP BF QS +NP +2.56372e+06 122544 MT +2.5631e+06 121924 LT +2.56222e+06 121924 LT +2.5616e+06 122544 LT +2.5616e+06 139084 LT +2.56222e+06 139704 LT +2.5631e+06 139704 LT +2.56372e+06 139084 LT +CP BF QS +NP +2.57134e+06 114501 MT +2.57072e+06 113881 LT +2.56984e+06 113881 LT +2.56952e+06 114201 LT +2.5616e+06 122561 LT +2.5616e+06 123420 LT +2.56222e+06 124040 LT +2.5631e+06 124040 LT +2.56342e+06 123720 LT +2.57134e+06 115360 LT +CP BF QS +NP +2.57938e+06 122544 MT +2.57072e+06 113881 LT +2.56984e+06 113881 LT +2.56922e+06 114501 LT +2.56922e+06 115377 LT +2.57788e+06 124040 LT +2.57876e+06 124040 LT +2.57938e+06 123420 LT +CP BF QS +NP +2.57938e+06 122544 MT +2.57876e+06 121924 LT +2.57788e+06 121924 LT +2.57726e+06 122544 LT +2.57726e+06 139084 LT +2.57788e+06 139704 LT +2.57876e+06 139704 LT +2.57938e+06 139084 LT +CP BF QS +NP +2.59081e+06 130165 MT +2.59019e+06 129545 LT +2.5855e+06 129545 LT +2.58488e+06 130165 LT +2.58488e+06 131041 LT +2.5855e+06 131661 LT +2.59019e+06 131661 LT +2.59081e+06 131041 LT +CP BF QS +NP +2.59081e+06 126355 MT +2.59019e+06 125735 LT +2.58932e+06 125735 LT +2.5887e+06 126355 LT +2.5887e+06 131041 LT +2.58932e+06 131661 LT +2.59019e+06 131661 LT +2.59081e+06 131041 LT +CP BF QS +NP +2.59081e+06 126355 MT +2.59019e+06 125735 LT +2.5855e+06 125735 LT +2.58488e+06 126355 LT +2.58488e+06 127231 LT +2.5855e+06 127851 LT +2.59019e+06 127851 LT +2.59081e+06 127231 LT +CP BF QS +NP +2.587e+06 126355 MT +2.58638e+06 125735 LT +2.5855e+06 125735 LT +2.58488e+06 126355 LT +2.58488e+06 131041 LT +2.5855e+06 131661 LT +2.58638e+06 131661 LT +2.587e+06 131041 LT +CP BF QS +NP +2.59081e+06 118734 MT +2.59019e+06 118114 LT +2.5855e+06 118114 LT +2.58488e+06 118734 LT +2.58488e+06 119610 LT +2.5855e+06 120230 LT +2.59019e+06 120230 LT +2.59081e+06 119610 LT +CP BF QS +NP +2.59081e+06 114501 MT +2.59019e+06 113881 LT +2.58932e+06 113881 LT +2.5887e+06 114501 LT +2.5887e+06 119610 LT +2.58932e+06 120230 LT +2.59019e+06 120230 LT +2.59081e+06 119610 LT +CP BF QS +NP +2.59081e+06 114501 MT +2.59019e+06 113881 LT +2.5855e+06 113881 LT +2.58488e+06 114501 LT +2.58488e+06 115377 LT +2.5855e+06 115997 LT +2.59019e+06 115997 LT +2.59081e+06 115377 LT +CP BF QS +NP +2.587e+06 114501 MT +2.58638e+06 113881 LT +2.5855e+06 113881 LT +2.58488e+06 114501 LT +2.58488e+06 119610 LT +2.5855e+06 120230 LT +2.58638e+06 120230 LT +2.587e+06 119610 LT +CP BF QS +NP +2.50318e+06 50276 MT +2.50244e+06 49532 LT +2.50138e+06 49532 LT +2.50064e+06 50276 LT +2.50064e+06 152931 LT +2.50138e+06 153675 LT +2.50244e+06 153675 LT +2.50318e+06 152931 LT +CP BF QS +NP +2.50318e+06 151879 MT +2.50244e+06 151135 LT +1.62508e+06 151135 LT +1.62434e+06 151879 LT +1.62434e+06 152931 LT +1.62508e+06 153675 LT +2.50244e+06 153675 LT +2.50318e+06 152931 LT +CP BF QS +NP +2.64288e+06 50276 MT +2.64214e+06 49532 LT +2.50138e+06 49532 LT +2.50064e+06 50276 LT +2.50064e+06 51328 LT +2.50138e+06 52072 LT +2.64214e+06 52072 LT +2.64288e+06 51328 LT +CP BF QS +NP +2.64288e+06 -526 MT +2.64214e+06 -1270 LT +2.64109e+06 -1270 LT +2.64034e+06 -526 LT +2.64034e+06 51328 LT +2.64109e+06 52072 LT +2.64214e+06 52072 LT +2.64288e+06 51328 LT +CP BF QS +NP +1.62688e+06 151879 MT +1.62613e+06 151135 LT +1.62508e+06 151135 LT +1.62434e+06 151879 LT +1.62434e+06 229134 LT +1.62508e+06 229878 LT +1.62613e+06 229878 LT +1.62688e+06 229134 LT +CP BF QS +NP +2.64288e+06 355086 MT +2.64214e+06 354342 LT +1.62508e+06 354342 LT +1.62434e+06 355086 LT +1.62434e+06 356138 LT +1.62508e+06 356882 LT +2.64214e+06 356882 LT +2.64288e+06 356138 LT +CP BF QS +NP +2.64288e+06 228082 MT +2.64214e+06 227338 LT +2.64109e+06 227338 LT +2.64034e+06 228082 LT +2.64034e+06 356138 LT +2.64109e+06 356882 LT +2.64214e+06 356882 LT +2.64288e+06 356138 LT +CP BF QS +NP +2.64288e+06 228082 MT +2.64214e+06 227338 LT +1.62508e+06 227338 LT +1.62434e+06 228082 LT +1.62434e+06 229134 LT +1.62508e+06 229878 LT +2.64214e+06 229878 LT +2.64288e+06 229134 LT +CP BF QS +NP +1.62688e+06 228082 MT +1.62613e+06 227338 LT +1.62508e+06 227338 LT +1.62434e+06 228082 LT +1.62434e+06 356138 LT +1.62508e+06 356882 LT +1.62613e+06 356882 LT +1.62688e+06 356138 LT +CP BF QS +NP +2.64288e+06 151879 MT +2.64214e+06 151135 LT +2.64109e+06 151135 LT +2.64034e+06 151879 LT +2.64034e+06 229134 LT +2.64109e+06 229878 LT +2.64214e+06 229878 LT +2.64288e+06 229134 LT +CP BF QS +NP +1.64847e+06 190703 MT +1.64785e+06 190083 LT +1.64697e+06 190083 LT +1.64635e+06 190703 LT +1.64635e+06 215287 LT +1.64697e+06 215907 LT +1.64785e+06 215907 LT +1.64847e+06 215287 LT +CP BF QS +NP +1.65609e+06 214411 MT +1.65547e+06 213791 LT +1.63893e+06 213791 LT +1.63831e+06 214411 LT +1.63831e+06 215287 LT +1.63893e+06 215907 LT +1.65547e+06 215907 LT +1.65609e+06 215287 LT +CP BF QS +NP +1.67175e+06 190703 MT +1.67113e+06 190083 LT +1.66263e+06 190083 LT +1.66201e+06 190703 LT +1.66201e+06 191579 LT +1.66263e+06 192199 LT +1.67113e+06 192199 LT +1.67175e+06 191579 LT +CP BF QS +NP +1.66794e+06 190703 MT +1.66732e+06 190083 LT +1.66644e+06 190083 LT +1.66582e+06 190703 LT +1.66582e+06 215287 LT +1.66644e+06 215907 LT +1.66732e+06 215907 LT +1.66794e+06 215287 LT +CP BF QS +NP +1.67175e+06 214411 MT +1.67113e+06 213791 LT +1.66263e+06 213791 LT +1.66201e+06 214411 LT +1.66201e+06 215287 LT +1.66263e+06 215907 LT +1.67113e+06 215907 LT +1.67175e+06 215287 LT +CP BF QS +NP +1.68741e+06 190703 MT +1.68679e+06 190083 LT +1.68592e+06 190083 LT +1.6853e+06 190703 LT +1.6853e+06 215287 LT +1.68592e+06 215907 LT +1.68679e+06 215907 LT +1.68741e+06 215287 LT +CP BF QS +NP +1.69503e+06 214411 MT +1.69441e+06 213791 LT +1.67787e+06 213791 LT +1.67725e+06 214411 LT +1.67725e+06 215287 LT +1.67787e+06 215907 LT +1.69441e+06 215907 LT +1.69503e+06 215287 LT +CP BF QS +NP +1.70308e+06 190703 MT +1.70246e+06 190083 LT +1.70158e+06 190083 LT +1.70096e+06 190703 LT +1.70096e+06 215287 LT +1.70158e+06 215907 LT +1.70246e+06 215907 LT +1.70308e+06 215287 LT +CP BF QS +NP +1.71874e+06 190703 MT +1.71812e+06 190083 LT +1.70158e+06 190083 LT +1.70096e+06 190703 LT +1.70096e+06 191579 LT +1.70158e+06 192199 LT +1.71812e+06 192199 LT +1.71874e+06 191579 LT +CP BF QS +NP +1.74202e+06 214411 MT +1.7414e+06 213791 LT +1.72486e+06 213791 LT +1.72424e+06 214411 LT +1.72424e+06 215287 LT +1.72486e+06 215907 LT +1.7414e+06 215907 LT +1.74202e+06 215287 LT +CP BF QS +NP +1.72636e+06 190703 MT +1.72574e+06 190083 LT +1.72486e+06 190083 LT +1.72424e+06 190703 LT +1.72424e+06 215287 LT +1.72486e+06 215907 LT +1.72574e+06 215907 LT +1.72636e+06 215287 LT +CP BF QS +NP +1.74202e+06 190703 MT +1.7414e+06 190083 LT +1.72486e+06 190083 LT +1.72424e+06 190703 LT +1.72424e+06 191579 LT +1.72486e+06 192199 LT +1.7414e+06 192199 LT +1.74202e+06 191579 LT +CP BF QS +NP +1.73398e+06 202557 MT +1.73336e+06 201937 LT +1.72486e+06 201937 LT +1.72424e+06 202557 LT +1.72424e+06 203433 LT +1.72486e+06 204053 LT +1.73336e+06 204053 LT +1.73398e+06 203433 LT +CP BF QS +NP +1.75345e+06 206367 MT +1.75283e+06 205747 LT +1.74815e+06 205747 LT +1.74753e+06 206367 LT +1.74753e+06 207243 LT +1.74815e+06 207863 LT +1.75283e+06 207863 LT +1.75345e+06 207243 LT +CP BF QS +NP +1.75345e+06 202557 MT +1.75283e+06 201937 LT +1.75196e+06 201937 LT +1.75134e+06 202557 LT +1.75134e+06 207243 LT +1.75196e+06 207863 LT +1.75283e+06 207863 LT +1.75345e+06 207243 LT +CP BF QS +NP +1.75345e+06 202557 MT +1.75283e+06 201937 LT +1.74815e+06 201937 LT +1.74753e+06 202557 LT +1.74753e+06 203433 LT +1.74815e+06 204053 LT +1.75283e+06 204053 LT +1.75345e+06 203433 LT +CP BF QS +NP +1.74964e+06 202557 MT +1.74902e+06 201937 LT +1.74815e+06 201937 LT +1.74753e+06 202557 LT +1.74753e+06 207243 LT +1.74815e+06 207863 LT +1.74902e+06 207863 LT +1.74964e+06 207243 LT +CP BF QS +NP +1.75345e+06 194937 MT +1.75283e+06 194317 LT +1.74815e+06 194317 LT +1.74753e+06 194937 LT +1.74753e+06 195813 LT +1.74815e+06 196433 LT +1.75283e+06 196433 LT +1.75345e+06 195813 LT +CP BF QS +NP +1.75345e+06 190703 MT +1.75283e+06 190083 LT +1.75196e+06 190083 LT +1.75134e+06 190703 LT +1.75134e+06 195813 LT +1.75196e+06 196433 LT +1.75283e+06 196433 LT +1.75345e+06 195813 LT +CP BF QS +NP +1.75345e+06 190703 MT +1.75283e+06 190083 LT +1.74815e+06 190083 LT +1.74753e+06 190703 LT +1.74753e+06 191579 LT +1.74815e+06 192199 LT +1.75283e+06 192199 LT +1.75345e+06 191579 LT +CP BF QS +NP +1.74964e+06 190703 MT +1.74902e+06 190083 LT +1.74815e+06 190083 LT +1.74753e+06 190703 LT +1.74753e+06 195813 LT +1.74815e+06 196433 LT +1.74902e+06 196433 LT +1.74964e+06 195813 LT +CP BF QS +NP +1.64042e+06 114501 MT +1.6398e+06 113881 LT +1.63893e+06 113881 LT +1.63831e+06 114501 LT +1.63831e+06 139084 LT +1.63893e+06 139704 LT +1.6398e+06 139704 LT +1.64042e+06 139084 LT +CP BF QS +NP +1.65228e+06 114501 MT +1.65166e+06 113881 LT +1.63893e+06 113881 LT +1.63831e+06 114501 LT +1.63831e+06 115377 LT +1.63893e+06 115997 LT +1.65166e+06 115997 LT +1.65228e+06 115377 LT +CP BF QS +NP +1.65199e+06 114210 MT +1.65166e+06 113881 LT +1.65078e+06 113881 LT +1.65016e+06 114501 LT +1.65016e+06 115345 LT +1.65426e+06 119901 LT +1.65459e+06 120230 LT +1.65547e+06 120230 LT +1.65609e+06 119610 LT +1.65609e+06 118766 LT +CP BF QS +NP +1.65609e+06 118734 MT +1.65547e+06 118114 LT +1.65459e+06 118114 LT +1.65397e+06 118734 LT +1.65397e+06 134851 LT +1.65459e+06 135471 LT +1.65547e+06 135471 LT +1.65609e+06 134851 LT +CP BF QS +NP +1.65609e+06 133975 MT +1.65547e+06 133355 LT +1.65459e+06 133355 LT +1.65426e+06 133684 LT +1.65016e+06 138240 LT +1.65016e+06 139084 LT +1.65078e+06 139704 LT +1.65166e+06 139704 LT +1.65199e+06 139375 LT +1.65609e+06 134819 LT +CP BF QS +NP +1.65228e+06 138208 MT +1.65166e+06 137588 LT +1.63893e+06 137588 LT +1.63831e+06 138208 LT +1.63831e+06 139084 LT +1.63893e+06 139704 LT +1.65166e+06 139704 LT +1.65228e+06 139084 LT +CP BF QS +NP +1.67556e+06 114501 MT +1.67494e+06 113881 LT +1.66644e+06 113881 LT +1.66582e+06 114501 LT +1.66582e+06 115377 LT +1.66644e+06 115997 LT +1.67494e+06 115997 LT +1.67556e+06 115377 LT +CP BF QS +NP +1.67527e+06 114210 MT +1.67494e+06 113881 LT +1.67406e+06 113881 LT +1.67344e+06 114501 LT +1.67344e+06 115345 LT +1.67754e+06 119901 LT +1.67787e+06 120230 LT +1.67875e+06 120230 LT +1.67937e+06 119610 LT +1.67937e+06 118766 LT +CP BF QS +NP +1.67937e+06 118734 MT +1.67875e+06 118114 LT +1.67787e+06 118114 LT +1.67725e+06 118734 LT +1.67725e+06 127231 LT +1.67787e+06 127851 LT +1.67875e+06 127851 LT +1.67937e+06 127231 LT +CP BF QS +NP +1.67937e+06 126355 MT +1.67875e+06 125735 LT +1.67787e+06 125735 LT +1.67344e+06 130165 LT +1.67344e+06 131041 LT +1.67406e+06 131661 LT +1.67494e+06 131661 LT +1.67937e+06 127231 LT +CP BF QS +NP +1.67556e+06 130165 MT +1.67494e+06 129545 LT +1.66644e+06 129545 LT +1.66582e+06 130165 LT +1.66582e+06 131041 LT +1.66644e+06 131661 LT +1.67494e+06 131661 LT +1.67556e+06 131041 LT +CP BF QS +NP +1.66794e+06 130165 MT +1.66351e+06 125735 LT +1.66263e+06 125735 LT +1.66201e+06 126355 LT +1.66201e+06 127231 LT +1.66644e+06 131661 LT +1.66732e+06 131661 LT +1.66794e+06 131041 LT +CP BF QS +NP +1.66413e+06 118734 MT +1.66351e+06 118114 LT +1.66263e+06 118114 LT +1.66201e+06 118734 LT +1.66201e+06 127231 LT +1.66263e+06 127851 LT +1.66351e+06 127851 LT +1.66413e+06 127231 LT +CP BF QS +NP +1.66794e+06 114501 MT +1.66732e+06 113881 LT +1.66644e+06 113881 LT +1.66612e+06 114210 LT +1.66201e+06 118766 LT +1.66201e+06 119610 LT +1.66263e+06 120230 LT +1.66351e+06 120230 LT +1.66384e+06 119901 LT +1.66794e+06 115345 LT +CP BF QS +NP +1.70308e+06 130165 MT +1.70246e+06 129545 LT +1.68973e+06 129545 LT +1.68911e+06 130165 LT +1.68911e+06 131041 LT +1.68973e+06 131661 LT +1.70246e+06 131661 LT +1.70308e+06 131041 LT +CP BF QS +NP +1.69122e+06 130165 MT +1.68679e+06 125735 LT +1.68592e+06 125735 LT +1.6853e+06 126355 LT +1.6853e+06 127231 LT +1.68973e+06 131661 LT +1.6906e+06 131661 LT +1.69122e+06 131041 LT +CP BF QS +NP +1.68741e+06 118734 MT +1.68679e+06 118114 LT +1.68592e+06 118114 LT +1.6853e+06 118734 LT +1.6853e+06 127231 LT +1.68592e+06 127851 LT +1.68679e+06 127851 LT +1.68741e+06 127231 LT +CP BF QS +NP +1.69122e+06 114501 MT +1.6906e+06 113881 LT +1.68973e+06 113881 LT +1.6894e+06 114210 LT +1.6853e+06 118766 LT +1.6853e+06 119610 LT +1.68592e+06 120230 LT +1.68679e+06 120230 LT +1.68712e+06 119901 LT +1.69122e+06 115345 LT +CP BF QS +NP +1.70308e+06 114501 MT +1.70246e+06 113881 LT +1.68973e+06 113881 LT +1.68911e+06 114501 LT +1.68911e+06 115377 LT +1.68973e+06 115997 LT +1.70246e+06 115997 LT +1.70308e+06 115377 LT +CP BF QS +NP +1.7107e+06 118734 MT +1.71008e+06 118114 LT +1.7092e+06 118114 LT +1.70858e+06 118734 LT +1.70858e+06 131041 LT +1.7092e+06 131661 LT +1.71008e+06 131661 LT +1.7107e+06 131041 LT +CP BF QS +NP +1.71451e+06 114501 MT +1.71389e+06 113881 LT +1.71301e+06 113881 LT +1.71268e+06 114210 LT +1.70858e+06 118766 LT +1.70858e+06 119610 LT +1.7092e+06 120230 LT +1.71008e+06 120230 LT +1.71041e+06 119901 LT +1.71451e+06 115345 LT +CP BF QS +NP +1.72636e+06 114501 MT +1.72574e+06 113881 LT +1.71301e+06 113881 LT +1.71239e+06 114501 LT +1.71239e+06 115377 LT +1.71301e+06 115997 LT +1.72574e+06 115997 LT +1.72636e+06 115377 LT +CP BF QS +NP +1.72636e+06 114501 MT +1.72574e+06 113881 LT +1.72486e+06 113881 LT +1.72424e+06 114501 LT +1.72424e+06 131041 LT +1.72486e+06 131661 LT +1.72574e+06 131661 LT +1.72636e+06 131041 LT +CP BF QS +NP +1.73398e+06 114501 MT +1.73336e+06 113881 LT +1.73248e+06 113881 LT +1.73186e+06 114501 LT +1.73186e+06 131041 LT +1.73248e+06 131661 LT +1.73336e+06 131661 LT +1.73398e+06 131041 LT +CP BF QS +NP +1.73821e+06 130165 MT +1.73759e+06 129545 LT +1.73248e+06 129545 LT +1.73186e+06 130165 LT +1.73186e+06 131041 LT +1.73248e+06 131661 LT +1.73759e+06 131661 LT +1.73821e+06 131041 LT +CP BF QS +NP +1.74202e+06 126355 MT +1.7414e+06 125735 LT +1.74053e+06 125735 LT +1.7361e+06 130165 LT +1.7361e+06 131041 LT +1.73672e+06 131661 LT +1.73759e+06 131661 LT +1.74202e+06 127231 LT +CP BF QS +NP +1.74202e+06 114501 MT +1.7414e+06 113881 LT +1.74053e+06 113881 LT +1.73991e+06 114501 LT +1.73991e+06 127231 LT +1.74053e+06 127851 LT +1.7414e+06 127851 LT +1.74202e+06 127231 LT +CP BF QS +NP +1.74583e+06 130165 MT +1.7414e+06 125735 LT +1.74053e+06 125735 LT +1.73991e+06 126355 LT +1.73991e+06 127231 LT +1.74434e+06 131661 LT +1.74521e+06 131661 LT +1.74583e+06 131041 LT +CP BF QS +NP +1.74964e+06 126355 MT +1.74902e+06 125735 LT +1.74815e+06 125735 LT +1.74372e+06 130165 LT +1.74372e+06 131041 LT +1.74434e+06 131661 LT +1.74521e+06 131661 LT +1.74964e+06 127231 LT +CP BF QS +NP +1.74964e+06 114501 MT +1.74902e+06 113881 LT +1.74815e+06 113881 LT +1.74753e+06 114501 LT +1.74753e+06 127231 LT +1.74815e+06 127851 LT +1.74902e+06 127851 LT +1.74964e+06 127231 LT +CP BF QS +NP +1.76912e+06 114501 MT +1.7685e+06 113881 LT +1.76e+06 113881 LT +1.75938e+06 114501 LT +1.75938e+06 115377 LT +1.76e+06 115997 LT +1.7685e+06 115997 LT +1.76912e+06 115377 LT +CP BF QS +NP +1.7615e+06 114501 MT +1.76088e+06 113881 LT +1.76e+06 113881 LT +1.75967e+06 114210 LT +1.75557e+06 118766 LT +1.75557e+06 119610 LT +1.75619e+06 120230 LT +1.75707e+06 120230 LT +1.7574e+06 119901 LT +1.7615e+06 115345 LT +CP BF QS +NP +1.75769e+06 118734 MT +1.75707e+06 118114 LT +1.75619e+06 118114 LT +1.75557e+06 118734 LT +1.75557e+06 127231 LT +1.75619e+06 127851 LT +1.75707e+06 127851 LT +1.75769e+06 127231 LT +CP BF QS +NP +1.7615e+06 130165 MT +1.75707e+06 125735 LT +1.75619e+06 125735 LT +1.75557e+06 126355 LT +1.75557e+06 127231 LT +1.76e+06 131661 LT +1.76088e+06 131661 LT +1.7615e+06 131041 LT +CP BF QS +NP +1.76912e+06 130165 MT +1.7685e+06 129545 LT +1.76e+06 129545 LT +1.75938e+06 130165 LT +1.75938e+06 131041 LT +1.76e+06 131661 LT +1.7685e+06 131661 LT +1.76912e+06 131041 LT +CP BF QS +NP +1.77293e+06 126355 MT +1.77231e+06 125735 LT +1.77143e+06 125735 LT +1.767e+06 130165 LT +1.767e+06 131041 LT +1.76762e+06 131661 LT +1.7685e+06 131661 LT +1.77293e+06 127231 LT +CP BF QS +NP +1.77293e+06 122544 MT +1.77231e+06 121924 LT +1.77143e+06 121924 LT +1.77081e+06 122544 LT +1.77081e+06 127231 LT +1.77143e+06 127851 LT +1.77231e+06 127851 LT +1.77293e+06 127231 LT +CP BF QS +NP +1.77293e+06 122544 MT +1.77231e+06 121924 LT +1.75619e+06 121924 LT +1.75557e+06 122544 LT +1.75557e+06 123420 LT +1.75619e+06 124040 LT +1.77231e+06 124040 LT +1.77293e+06 123420 LT +CP BF QS +NP +1.78097e+06 114501 MT +1.78035e+06 113881 LT +1.77948e+06 113881 LT +1.77886e+06 114501 LT +1.77886e+06 131041 LT +1.77948e+06 131661 LT +1.78035e+06 131661 LT +1.78097e+06 131041 LT +CP BF QS +NP +1.7924e+06 130165 MT +1.79178e+06 129545 LT +1.77948e+06 129545 LT +1.77886e+06 130165 LT +1.77886e+06 131041 LT +1.77948e+06 131661 LT +1.79178e+06 131661 LT +1.7924e+06 131041 LT +CP BF QS +NP +1.79663e+06 126355 MT +1.79601e+06 125735 LT +1.79517e+06 125735 LT +1.79061e+06 129836 LT +1.79028e+06 130165 LT +1.79028e+06 131041 LT +1.7909e+06 131661 LT +1.79175e+06 131661 LT +1.7963e+06 127560 LT +1.79663e+06 127231 LT +CP BF QS +NP +1.79663e+06 114501 MT +1.79601e+06 113881 LT +1.79514e+06 113881 LT +1.79452e+06 114501 LT +1.79452e+06 127231 LT +1.79514e+06 127851 LT +1.79601e+06 127851 LT +1.79663e+06 127231 LT +CP BF QS +NP +1.80806e+06 118734 MT +1.80744e+06 118114 LT +1.80657e+06 118114 LT +1.80595e+06 118734 LT +1.80595e+06 134851 LT +1.80657e+06 135471 LT +1.80744e+06 135471 LT +1.80806e+06 134851 LT +CP BF QS +NP +1.8123e+06 114501 MT +1.81168e+06 113881 LT +1.8108e+06 113881 LT +1.80626e+06 118424 LT +1.80595e+06 118734 LT +1.80595e+06 119610 LT +1.80657e+06 120230 LT +1.80744e+06 120230 LT +1.81199e+06 115687 LT +1.8123e+06 115377 LT +CP BF QS +NP +1.8123e+06 130165 MT +1.81168e+06 129545 LT +1.80276e+06 129545 LT +1.80214e+06 130165 LT +1.80214e+06 131041 LT +1.80276e+06 131661 LT +1.81168e+06 131661 LT +1.8123e+06 131041 LT +CP BF QS +NP +1.8432e+06 114501 MT +1.84258e+06 113881 LT +1.8417e+06 113881 LT +1.84108e+06 114501 LT +1.84108e+06 139084 LT +1.8417e+06 139704 LT +1.84258e+06 139704 LT +1.8432e+06 139084 LT +CP BF QS +NP +1.85886e+06 114501 MT +1.85824e+06 113881 LT +1.85737e+06 113881 LT +1.85698e+06 114266 LT +1.84108e+06 138329 LT +1.84108e+06 139084 LT +1.8417e+06 139704 LT +1.84258e+06 139704 LT +1.84297e+06 139319 LT +1.85886e+06 115256 LT +CP BF QS +NP +1.85886e+06 114501 MT +1.85824e+06 113881 LT +1.85737e+06 113881 LT +1.85675e+06 114501 LT +1.85675e+06 139084 LT +1.85737e+06 139704 LT +1.85824e+06 139704 LT +1.85886e+06 139084 LT +CP BF QS +NP +1.86648e+06 118734 MT +1.86586e+06 118114 LT +1.86499e+06 118114 LT +1.86437e+06 118734 LT +1.86437e+06 131041 LT +1.86499e+06 131661 LT +1.86586e+06 131661 LT +1.86648e+06 131041 LT +CP BF QS +NP +1.87072e+06 114501 MT +1.8701e+06 113881 LT +1.86922e+06 113881 LT +1.86468e+06 118424 LT +1.86437e+06 118734 LT +1.86437e+06 119610 LT +1.86499e+06 120230 LT +1.86586e+06 120230 LT +1.87041e+06 115687 LT +1.87072e+06 115377 LT +CP BF QS +NP +1.88215e+06 114501 MT +1.88153e+06 113881 LT +1.86922e+06 113881 LT +1.8686e+06 114501 LT +1.8686e+06 115377 LT +1.86922e+06 115997 LT +1.88153e+06 115997 LT +1.88215e+06 115377 LT +CP BF QS +NP +1.88215e+06 114501 MT +1.88153e+06 113881 LT +1.88065e+06 113881 LT +1.88003e+06 114501 LT +1.88003e+06 131041 LT +1.88065e+06 131661 LT +1.88153e+06 131661 LT +1.88215e+06 131041 LT +CP BF QS +NP +1.89019e+06 114501 MT +1.88957e+06 113881 LT +1.8887e+06 113881 LT +1.88808e+06 114501 LT +1.88808e+06 131041 LT +1.8887e+06 131661 LT +1.88957e+06 131661 LT +1.89019e+06 131041 LT +CP BF QS +NP +1.894e+06 130165 MT +1.89338e+06 129545 LT +1.8887e+06 129545 LT +1.88808e+06 130165 LT +1.88808e+06 131041 LT +1.8887e+06 131661 LT +1.89338e+06 131661 LT +1.894e+06 131041 LT +CP BF QS +NP +1.89781e+06 126355 MT +1.89719e+06 125735 LT +1.89632e+06 125735 LT +1.89188e+06 130165 LT +1.89188e+06 131041 LT +1.8925e+06 131661 LT +1.89338e+06 131661 LT +1.89781e+06 127231 LT +CP BF QS +NP +1.89781e+06 114501 MT +1.89719e+06 113881 LT +1.89632e+06 113881 LT +1.8957e+06 114501 LT +1.8957e+06 127231 LT +1.89632e+06 127851 LT +1.89719e+06 127851 LT +1.89781e+06 127231 LT +CP BF QS +NP +1.90162e+06 130165 MT +1.89719e+06 125735 LT +1.89632e+06 125735 LT +1.8957e+06 126355 LT +1.8957e+06 127231 LT +1.90012e+06 131661 LT +1.901e+06 131661 LT +1.90162e+06 131041 LT +CP BF QS +NP +1.90543e+06 126355 MT +1.90481e+06 125735 LT +1.90394e+06 125735 LT +1.8995e+06 130165 LT +1.8995e+06 131041 LT +1.90012e+06 131661 LT +1.901e+06 131661 LT +1.90543e+06 127231 LT +CP BF QS +NP +1.90543e+06 114501 MT +1.90481e+06 113881 LT +1.90394e+06 113881 LT +1.90332e+06 114501 LT +1.90332e+06 127231 LT +1.90394e+06 127851 LT +1.90481e+06 127851 LT +1.90543e+06 127231 LT +CP BF QS +NP +1.91348e+06 114501 MT +1.91286e+06 113881 LT +1.91198e+06 113881 LT +1.91136e+06 114501 LT +1.91136e+06 139084 LT +1.91198e+06 139704 LT +1.91286e+06 139704 LT +1.91348e+06 139084 LT +CP BF QS +NP +1.92533e+06 114501 MT +1.92471e+06 113881 LT +1.91198e+06 113881 LT +1.91136e+06 114501 LT +1.91136e+06 115377 LT +1.91198e+06 115997 LT +1.92471e+06 115997 LT +1.92533e+06 115377 LT +CP BF QS +NP +1.92504e+06 114210 MT +1.92471e+06 113881 LT +1.92383e+06 113881 LT +1.92321e+06 114501 LT +1.92321e+06 115345 LT +1.92731e+06 119901 LT +1.92764e+06 120230 LT +1.92852e+06 120230 LT +1.92914e+06 119610 LT +1.92914e+06 118766 LT +CP BF QS +NP +1.92914e+06 118734 MT +1.92852e+06 118114 LT +1.92764e+06 118114 LT +1.92702e+06 118734 LT +1.92702e+06 127231 LT +1.92764e+06 127851 LT +1.92852e+06 127851 LT +1.92914e+06 127231 LT +CP BF QS +NP +1.92914e+06 126355 MT +1.92852e+06 125735 LT +1.92764e+06 125735 LT +1.92321e+06 130165 LT +1.92321e+06 131041 LT +1.92383e+06 131661 LT +1.92471e+06 131661 LT +1.92914e+06 127231 LT +CP BF QS +NP +1.92533e+06 130165 MT +1.92471e+06 129545 LT +1.91198e+06 129545 LT +1.91136e+06 130165 LT +1.91136e+06 131041 LT +1.91198e+06 131661 LT +1.92471e+06 131661 LT +1.92533e+06 131041 LT +CP BF QS +NP +1.94861e+06 114501 MT +1.94799e+06 113881 LT +1.93907e+06 113881 LT +1.93845e+06 114501 LT +1.93845e+06 115377 LT +1.93907e+06 115997 LT +1.94799e+06 115997 LT +1.94861e+06 115377 LT +CP BF QS +NP +1.94057e+06 114501 MT +1.93995e+06 113881 LT +1.93907e+06 113881 LT +1.93874e+06 114210 LT +1.93464e+06 118766 LT +1.93464e+06 119610 LT +1.93526e+06 120230 LT +1.93614e+06 120230 LT +1.93647e+06 119901 LT +1.94057e+06 115345 LT +CP BF QS +NP +1.93676e+06 118734 MT +1.93614e+06 118114 LT +1.93526e+06 118114 LT +1.93464e+06 118734 LT +1.93464e+06 127231 LT +1.93526e+06 127851 LT +1.93614e+06 127851 LT +1.93676e+06 127231 LT +CP BF QS +NP +1.94057e+06 130165 MT +1.93614e+06 125735 LT +1.93526e+06 125735 LT +1.93464e+06 126355 LT +1.93464e+06 127231 LT +1.93907e+06 131661 LT +1.93995e+06 131661 LT +1.94057e+06 131041 LT +CP BF QS +NP +1.94861e+06 130165 MT +1.94799e+06 129545 LT +1.93907e+06 129545 LT +1.93845e+06 130165 LT +1.93845e+06 131041 LT +1.93907e+06 131661 LT +1.94799e+06 131661 LT +1.94861e+06 131041 LT +CP BF QS +NP +1.95242e+06 126355 MT +1.9518e+06 125735 LT +1.95093e+06 125735 LT +1.9465e+06 130165 LT +1.9465e+06 131041 LT +1.94712e+06 131661 LT +1.94799e+06 131661 LT +1.95242e+06 127231 LT +CP BF QS +NP +1.95242e+06 122544 MT +1.9518e+06 121924 LT +1.95093e+06 121924 LT +1.95031e+06 122544 LT +1.95031e+06 127231 LT +1.95093e+06 127851 LT +1.9518e+06 127851 LT +1.95242e+06 127231 LT +CP BF QS +NP +1.95242e+06 122544 MT +1.9518e+06 121924 LT +1.93526e+06 121924 LT +1.93464e+06 122544 LT +1.93464e+06 123420 LT +1.93526e+06 124040 LT +1.9518e+06 124040 LT +1.95242e+06 123420 LT +CP BF QS +NP +1.96004e+06 114501 MT +1.95942e+06 113881 LT +1.95855e+06 113881 LT +1.95793e+06 114501 LT +1.95793e+06 131041 LT +1.95855e+06 131661 LT +1.95942e+06 131661 LT +1.96004e+06 131041 LT +CP BF QS +NP +1.96808e+06 130165 MT +1.96776e+06 129845 LT +1.9594e+06 121924 LT +1.95855e+06 121924 LT +1.95793e+06 122544 LT +1.95793e+06 123420 LT +1.95825e+06 123740 LT +1.96661e+06 131661 LT +1.96746e+06 131661 LT +1.96808e+06 131041 LT +CP BF QS +NP +1.9719e+06 130165 MT +1.97128e+06 129545 LT +1.96659e+06 129545 LT +1.96597e+06 130165 LT +1.96597e+06 131041 LT +1.96659e+06 131661 LT +1.97128e+06 131661 LT +1.9719e+06 131041 LT +CP BF QS +NP +1.98375e+06 130165 MT +1.98313e+06 129545 LT +1.97802e+06 129545 LT +1.9774e+06 130165 LT +1.9774e+06 131041 LT +1.97802e+06 131661 LT +1.98313e+06 131661 LT +1.98375e+06 131041 LT +CP BF QS +NP +1.98375e+06 126355 MT +1.98313e+06 125735 LT +1.98225e+06 125735 LT +1.98163e+06 126355 LT +1.98163e+06 131041 LT +1.98225e+06 131661 LT +1.98313e+06 131661 LT +1.98375e+06 131041 LT +CP BF QS +NP +1.98375e+06 126355 MT +1.98313e+06 125735 LT +1.97802e+06 125735 LT +1.9774e+06 126355 LT +1.9774e+06 127231 LT +1.97802e+06 127851 LT +1.98313e+06 127851 LT +1.98375e+06 127231 LT +CP BF QS +NP +1.97952e+06 126355 MT +1.9789e+06 125735 LT +1.97802e+06 125735 LT +1.9774e+06 126355 LT +1.9774e+06 131041 LT +1.97802e+06 131661 LT +1.9789e+06 131661 LT +1.97952e+06 131041 LT +CP BF QS +NP +1.98375e+06 118734 MT +1.98313e+06 118114 LT +1.97802e+06 118114 LT +1.9774e+06 118734 LT +1.9774e+06 119610 LT +1.97802e+06 120230 LT +1.98313e+06 120230 LT +1.98375e+06 119610 LT +CP BF QS +NP +1.98375e+06 114501 MT +1.98313e+06 113881 LT +1.98225e+06 113881 LT +1.98163e+06 114501 LT +1.98163e+06 119610 LT +1.98225e+06 120230 LT +1.98313e+06 120230 LT +1.98375e+06 119610 LT +CP BF QS +NP +1.98375e+06 114501 MT +1.98313e+06 113881 LT +1.97802e+06 113881 LT +1.9774e+06 114501 LT +1.9774e+06 115377 LT +1.97802e+06 115997 LT +1.98313e+06 115997 LT +1.98375e+06 115377 LT +CP BF QS +NP +1.97952e+06 114501 MT +1.9789e+06 113881 LT +1.97802e+06 113881 LT +1.9774e+06 114501 LT +1.9774e+06 119610 LT +1.97802e+06 120230 LT +1.9789e+06 120230 LT +1.97952e+06 119610 LT +CP BF QS +NP +1.82119e+06 206367 MT +1.82057e+06 205747 LT +1.80826e+06 205747 LT +1.80764e+06 206367 LT +1.80764e+06 207243 LT +1.80826e+06 207863 LT +1.82057e+06 207863 LT +1.82119e+06 207243 LT +CP BF QS +NP +1.80976e+06 206367 MT +1.80943e+06 206038 LT +1.80487e+06 201937 LT +1.80403e+06 201937 LT +1.80341e+06 202557 LT +1.80341e+06 203433 LT +1.80374e+06 203762 LT +1.8083e+06 207863 LT +1.80914e+06 207863 LT +1.80976e+06 207243 LT +CP BF QS +NP +1.80552e+06 194937 MT +1.8049e+06 194317 LT +1.80403e+06 194317 LT +1.80341e+06 194937 LT +1.80341e+06 203433 LT +1.80403e+06 204053 LT +1.8049e+06 204053 LT +1.80552e+06 203433 LT +CP BF QS +NP +1.80976e+06 190703 MT +1.80914e+06 190083 LT +1.80826e+06 190083 LT +1.80341e+06 194937 LT +1.80341e+06 195813 LT +1.80403e+06 196433 LT +1.8049e+06 196433 LT +1.80976e+06 191579 LT +CP BF QS +NP +1.82119e+06 190703 MT +1.82057e+06 190083 LT +1.80826e+06 190083 LT +1.80764e+06 190703 LT +1.80764e+06 191579 LT +1.80826e+06 192199 LT +1.82057e+06 192199 LT +1.82119e+06 191579 LT +CP BF QS +NP +1.83304e+06 206367 MT +1.83242e+06 205747 LT +1.82774e+06 205747 LT +1.82712e+06 206367 LT +1.82712e+06 207243 LT +1.82774e+06 207863 LT +1.83242e+06 207863 LT +1.83304e+06 207243 LT +CP BF QS +NP +1.83304e+06 190703 MT +1.83242e+06 190083 LT +1.83154e+06 190083 LT +1.83092e+06 190703 LT +1.83092e+06 207243 LT +1.83154e+06 207863 LT +1.83242e+06 207863 LT +1.83304e+06 207243 LT +CP BF QS +NP +1.83685e+06 190703 MT +1.83623e+06 190083 LT +1.82774e+06 190083 LT +1.82712e+06 190703 LT +1.82712e+06 191579 LT +1.82774e+06 192199 LT +1.83623e+06 192199 LT +1.83685e+06 191579 LT +CP BF QS +NP +1.83304e+06 214411 MT +1.83242e+06 213791 LT +1.83154e+06 213791 LT +1.83092e+06 214411 LT +1.83092e+06 219097 LT +1.83154e+06 219717 LT +1.83242e+06 219717 LT +1.83304e+06 219097 LT +CP BF QS +NP +1.84447e+06 190703 MT +1.84385e+06 190083 LT +1.84298e+06 190083 LT +1.84236e+06 190703 LT +1.84236e+06 207243 LT +1.84298e+06 207863 LT +1.84385e+06 207863 LT +1.84447e+06 207243 LT +CP BF QS +NP +1.85251e+06 206367 MT +1.85219e+06 206047 LT +1.84383e+06 198127 LT +1.84298e+06 198127 LT +1.84236e+06 198747 LT +1.84236e+06 199623 LT +1.84268e+06 199943 LT +1.85104e+06 207863 LT +1.85189e+06 207863 LT +1.85251e+06 207243 LT +CP BF QS +NP +1.85632e+06 206367 MT +1.8557e+06 205747 LT +1.85102e+06 205747 LT +1.8504e+06 206367 LT +1.8504e+06 207243 LT +1.85102e+06 207863 LT +1.8557e+06 207863 LT +1.85632e+06 207243 LT +CP BF QS +NP +1.87961e+06 206367 MT +1.87899e+06 205747 LT +1.86668e+06 205747 LT +1.86606e+06 206367 LT +1.86606e+06 207243 LT +1.86668e+06 207863 LT +1.87899e+06 207863 LT +1.87961e+06 207243 LT +CP BF QS +NP +1.86818e+06 206367 MT +1.86785e+06 206038 LT +1.86329e+06 201937 LT +1.86245e+06 201937 LT +1.86183e+06 202557 LT +1.86183e+06 203433 LT +1.86216e+06 203762 LT +1.86672e+06 207863 LT +1.86756e+06 207863 LT +1.86818e+06 207243 LT +CP BF QS +NP +1.86394e+06 194937 MT +1.86332e+06 194317 LT +1.86245e+06 194317 LT +1.86183e+06 194937 LT +1.86183e+06 203433 LT +1.86245e+06 204053 LT +1.86332e+06 204053 LT +1.86394e+06 203433 LT +CP BF QS +NP +1.86818e+06 190703 MT +1.86756e+06 190083 LT +1.86668e+06 190083 LT +1.86183e+06 194937 LT +1.86183e+06 195813 LT +1.86245e+06 196433 LT +1.86332e+06 196433 LT +1.86818e+06 191579 LT +CP BF QS +NP +1.87961e+06 190703 MT +1.87899e+06 190083 LT +1.86668e+06 190083 LT +1.86606e+06 190703 LT +1.86606e+06 191579 LT +1.86668e+06 192199 LT +1.87899e+06 192199 LT +1.87961e+06 191579 LT +CP BF QS +NP +1.88765e+06 194937 MT +1.88703e+06 194317 LT +1.88616e+06 194317 LT +1.88554e+06 194937 LT +1.88554e+06 207243 LT +1.88616e+06 207863 LT +1.88703e+06 207863 LT +1.88765e+06 207243 LT +CP BF QS +NP +1.89146e+06 190703 MT +1.89084e+06 190083 LT +1.88996e+06 190083 LT +1.88964e+06 190412 LT +1.88554e+06 194970 LT +1.88554e+06 195813 LT +1.88616e+06 196433 LT +1.88703e+06 196433 LT +1.88736e+06 196104 LT +1.89146e+06 191546 LT +CP BF QS +NP +1.90332e+06 190703 MT +1.9027e+06 190083 LT +1.88996e+06 190083 LT +1.88934e+06 190703 LT +1.88934e+06 191579 LT +1.88996e+06 192199 LT +1.9027e+06 192199 LT +1.90332e+06 191579 LT +CP BF QS +NP +1.90332e+06 190703 MT +1.9027e+06 190083 LT +1.90182e+06 190083 LT +1.9012e+06 190703 LT +1.9012e+06 207243 LT +1.90182e+06 207863 LT +1.9027e+06 207863 LT +1.90332e+06 207243 LT +CP BF QS +NP +1.91474e+06 206367 MT +1.91412e+06 205747 LT +1.90944e+06 205747 LT +1.90882e+06 206367 LT +1.90882e+06 207243 LT +1.90944e+06 207863 LT +1.91412e+06 207863 LT +1.91474e+06 207243 LT +CP BF QS +NP +1.91474e+06 190703 MT +1.91412e+06 190083 LT +1.91325e+06 190083 LT +1.91263e+06 190703 LT +1.91263e+06 207243 LT +1.91325e+06 207863 LT +1.91412e+06 207863 LT +1.91474e+06 207243 LT +CP BF QS +NP +1.91856e+06 190703 MT +1.91794e+06 190083 LT +1.90944e+06 190083 LT +1.90882e+06 190703 LT +1.90882e+06 191579 LT +1.90944e+06 192199 LT +1.91794e+06 192199 LT +1.91856e+06 191579 LT +CP BF QS +NP +1.91474e+06 214411 MT +1.91412e+06 213791 LT +1.91325e+06 213791 LT +1.91263e+06 214411 LT +1.91263e+06 219097 LT +1.91325e+06 219717 LT +1.91412e+06 219717 LT +1.91474e+06 219097 LT +CP BF QS +NP +1.93041e+06 194937 MT +1.92979e+06 194317 LT +1.92891e+06 194317 LT +1.92829e+06 194937 LT +1.92829e+06 211053 LT +1.92891e+06 211673 LT +1.92979e+06 211673 LT +1.93041e+06 211053 LT +CP BF QS +NP +1.93422e+06 190703 MT +1.9336e+06 190083 LT +1.93272e+06 190083 LT +1.93239e+06 190412 LT +1.92829e+06 194970 LT +1.92829e+06 195813 LT +1.92891e+06 196433 LT +1.92979e+06 196433 LT +1.93012e+06 196104 LT +1.93422e+06 191546 LT +CP BF QS +NP +1.93422e+06 206367 MT +1.9336e+06 205747 LT +1.9251e+06 205747 LT +1.92448e+06 206367 LT +1.92448e+06 207243 LT +1.9251e+06 207863 LT +1.9336e+06 207863 LT +1.93422e+06 207243 LT +CP BF QS +NP +2.33766e+06 761676 MT +2.33716e+06 761180 LT +2.33646e+06 761180 LT +2.33596e+06 761676 LT +2.33596e+06 787776 LT +2.33646e+06 788272 LT +2.33716e+06 788272 LT +2.33766e+06 787776 LT +CP BF QS +NP +2.33766e+06 634671 MT +2.33716e+06 634175 LT +2.33646e+06 634175 LT +2.33596e+06 634671 LT +2.33596e+06 660772 LT +2.33646e+06 661268 LT +2.33716e+06 661268 LT +2.33766e+06 660772 LT +CP BF QS +NP +2.33893e+06 672247 MT +2.33769e+06 671007 LT +2.33593e+06 671007 LT +2.33469e+06 672247 LT +2.33469e+06 686699 LT +2.33593e+06 687939 LT +2.33769e+06 687939 LT +2.33893e+06 686699 LT +CP BF QS +NP +2.33766e+06 660072 MT +2.33716e+06 659576 LT +2.33646e+06 659576 LT +2.33596e+06 660072 LT +2.33596e+06 673473 LT +2.33646e+06 673969 LT +2.33716e+06 673969 LT +2.33766e+06 673473 LT +CP BF QS +NP +2.33893e+06 735749 MT +2.33769e+06 734509 LT +2.33593e+06 734509 LT +2.33469e+06 735749 LT +2.33469e+06 750201 LT +2.33593e+06 751441 LT +2.33769e+06 751441 LT +2.33893e+06 750201 LT +CP BF QS +NP +2.33766e+06 748975 MT +2.33716e+06 748479 LT +2.33646e+06 748479 LT +2.33596e+06 748975 LT +2.33596e+06 762376 LT +2.33646e+06 762872 LT +2.33716e+06 762872 LT +2.33766e+06 762376 LT +CP BF QS +NP +2.31226e+06 761676 MT +2.31176e+06 761180 LT +2.31106e+06 761180 LT +2.31056e+06 761676 LT +2.31056e+06 787776 LT +2.31106e+06 788272 LT +2.31176e+06 788272 LT +2.31226e+06 787776 LT +CP BF QS +NP +2.31226e+06 634671 MT +2.31176e+06 634175 LT +2.31106e+06 634175 LT +2.31056e+06 634671 LT +2.31056e+06 660772 LT +2.31106e+06 661268 LT +2.31176e+06 661268 LT +2.31226e+06 660772 LT +CP BF QS +NP +2.31353e+06 672247 MT +2.31229e+06 671007 LT +2.31053e+06 671007 LT +2.30929e+06 672247 LT +2.30929e+06 686699 LT +2.31053e+06 687939 LT +2.31229e+06 687939 LT +2.31353e+06 686699 LT +CP BF QS +NP +2.31226e+06 660072 MT +2.31176e+06 659576 LT +2.31106e+06 659576 LT +2.31056e+06 660072 LT +2.31056e+06 673473 LT +2.31106e+06 673969 LT +2.31176e+06 673969 LT +2.31226e+06 673473 LT +CP BF QS +NP +2.31353e+06 735749 MT +2.31229e+06 734509 LT +2.31053e+06 734509 LT +2.30929e+06 735749 LT +2.30929e+06 750201 LT +2.31053e+06 751441 LT +2.31229e+06 751441 LT +2.31353e+06 750201 LT +CP BF QS +NP +2.31226e+06 748975 MT +2.31176e+06 748479 LT +2.31106e+06 748479 LT +2.31056e+06 748975 LT +2.31056e+06 762376 LT +2.31106e+06 762872 LT +2.31176e+06 762872 LT +2.31226e+06 762376 LT +CP BF QS +NP +2.28686e+06 761676 MT +2.28636e+06 761180 LT +2.28566e+06 761180 LT +2.28516e+06 761676 LT +2.28516e+06 787776 LT +2.28566e+06 788272 LT +2.28636e+06 788272 LT +2.28686e+06 787776 LT +CP BF QS +NP +2.28686e+06 634671 MT +2.28636e+06 634175 LT +2.28566e+06 634175 LT +2.28516e+06 634671 LT +2.28516e+06 660772 LT +2.28566e+06 661268 LT +2.28636e+06 661268 LT +2.28686e+06 660772 LT +CP BF QS +NP +2.28813e+06 672247 MT +2.28689e+06 671007 LT +2.28513e+06 671007 LT +2.28389e+06 672247 LT +2.28389e+06 686699 LT +2.28513e+06 687939 LT +2.28689e+06 687939 LT +2.28813e+06 686699 LT +CP BF QS +NP +2.28686e+06 660072 MT +2.28636e+06 659576 LT +2.28566e+06 659576 LT +2.28516e+06 660072 LT +2.28516e+06 673473 LT +2.28566e+06 673969 LT +2.28636e+06 673969 LT +2.28686e+06 673473 LT +CP BF QS +NP +2.28813e+06 735749 MT +2.28689e+06 734509 LT +2.28513e+06 734509 LT +2.28389e+06 735749 LT +2.28389e+06 750201 LT +2.28513e+06 751441 LT +2.28689e+06 751441 LT +2.28813e+06 750201 LT +CP BF QS +NP +2.28686e+06 748975 MT +2.28636e+06 748479 LT +2.28566e+06 748479 LT +2.28516e+06 748975 LT +2.28516e+06 762376 LT +2.28566e+06 762872 LT +2.28636e+06 762872 LT +2.28686e+06 762376 LT +CP BF QS +NP +2.26146e+06 761676 MT +2.26096e+06 761180 LT +2.26026e+06 761180 LT +2.25976e+06 761676 LT +2.25976e+06 787776 LT +2.26026e+06 788272 LT +2.26096e+06 788272 LT +2.26146e+06 787776 LT +CP BF QS +NP +2.26146e+06 634671 MT +2.26096e+06 634175 LT +2.26026e+06 634175 LT +2.25976e+06 634671 LT +2.25976e+06 660772 LT +2.26026e+06 661268 LT +2.26096e+06 661268 LT +2.26146e+06 660772 LT +CP BF QS +NP +2.26273e+06 672247 MT +2.26149e+06 671007 LT +2.25973e+06 671007 LT +2.25849e+06 672247 LT +2.25849e+06 686699 LT +2.25973e+06 687939 LT +2.26149e+06 687939 LT +2.26273e+06 686699 LT +CP BF QS +NP +2.26146e+06 660072 MT +2.26096e+06 659576 LT +2.26026e+06 659576 LT +2.25976e+06 660072 LT +2.25976e+06 673473 LT +2.26026e+06 673969 LT +2.26096e+06 673969 LT +2.26146e+06 673473 LT +CP BF QS +NP +2.26273e+06 735749 MT +2.26149e+06 734509 LT +2.25973e+06 734509 LT +2.25849e+06 735749 LT +2.25849e+06 750201 LT +2.25973e+06 751441 LT +2.26149e+06 751441 LT +2.26273e+06 750201 LT +CP BF QS +NP +2.26146e+06 748975 MT +2.26096e+06 748479 LT +2.26026e+06 748479 LT +2.25976e+06 748975 LT +2.25976e+06 762376 LT +2.26026e+06 762872 LT +2.26096e+06 762872 LT +2.26146e+06 762376 LT +CP BF QS +NP +2.23606e+06 761676 MT +2.23556e+06 761180 LT +2.23486e+06 761180 LT +2.23436e+06 761676 LT +2.23436e+06 787776 LT +2.23486e+06 788272 LT +2.23556e+06 788272 LT +2.23606e+06 787776 LT +CP BF QS +NP +2.23606e+06 634671 MT +2.23556e+06 634175 LT +2.23486e+06 634175 LT +2.23436e+06 634671 LT +2.23436e+06 660772 LT +2.23486e+06 661268 LT +2.23556e+06 661268 LT +2.23606e+06 660772 LT +CP BF QS +NP +2.23733e+06 672247 MT +2.23609e+06 671007 LT +2.23433e+06 671007 LT +2.23309e+06 672247 LT +2.23309e+06 686699 LT +2.23433e+06 687939 LT +2.23609e+06 687939 LT +2.23733e+06 686699 LT +CP BF QS +NP +2.23606e+06 660072 MT +2.23556e+06 659576 LT +2.23486e+06 659576 LT +2.23436e+06 660072 LT +2.23436e+06 673473 LT +2.23486e+06 673969 LT +2.23556e+06 673969 LT +2.23606e+06 673473 LT +CP BF QS +NP +2.23733e+06 735749 MT +2.23609e+06 734509 LT +2.23433e+06 734509 LT +2.23309e+06 735749 LT +2.23309e+06 750201 LT +2.23433e+06 751441 LT +2.23609e+06 751441 LT +2.23733e+06 750201 LT +CP BF QS +NP +2.23606e+06 748975 MT +2.23556e+06 748479 LT +2.23486e+06 748479 LT +2.23436e+06 748975 LT +2.23436e+06 762376 LT +2.23486e+06 762872 LT +2.23556e+06 762872 LT +2.23606e+06 762376 LT +CP BF QS +NP +2.35798e+06 659546 MT +2.35674e+06 658306 LT +2.21528e+06 658306 LT +2.21404e+06 659546 LT +2.21404e+06 661298 LT +2.21528e+06 662538 LT +2.35674e+06 662538 LT +2.35798e+06 661298 LT +CP BF QS +NP +2.35798e+06 659546 MT +2.35674e+06 658306 LT +2.35498e+06 658306 LT +2.35374e+06 659546 LT +2.35374e+06 762902 LT +2.35498e+06 764142 LT +2.35674e+06 764142 LT +2.35798e+06 762902 LT +CP BF QS +NP +2.35798e+06 761150 MT +2.35674e+06 759910 LT +2.21528e+06 759910 LT +2.21404e+06 761150 LT +2.21404e+06 762902 LT +2.21528e+06 764142 LT +2.35674e+06 764142 LT +2.35798e+06 762902 LT +CP BF QS +NP +2.21828e+06 659546 MT +2.21704e+06 658306 LT +2.21528e+06 658306 LT +2.21404e+06 659546 LT +2.21404e+06 762902 LT +2.21528e+06 764142 LT +2.21704e+06 764142 LT +2.21828e+06 762902 LT +CP BF QS +NP +2.23606e+06 507667 MT +2.23556e+06 507171 LT +2.23486e+06 507171 LT +2.23436e+06 507667 LT +2.23436e+06 533768 LT +2.23486e+06 534264 LT +2.23556e+06 534264 LT +2.23606e+06 533768 LT +CP BF QS +NP +2.25553e+06 507491 MT +2.25479e+06 506747 LT +2.21563e+06 506747 LT +2.21489e+06 507491 LT +2.21489e+06 508543 LT +2.21563e+06 509287 LT +2.25479e+06 509287 LT +2.25553e+06 508543 LT +CP BF QS +NP +492762 888504 MT +492018 887760 LT +490966 887760 LT +490222 888504 LT +490222 940357 LT +490966 941101 LT +492018 941101 LT +492762 940357 LT +CP BF QS +NP +474982 888504 MT +474238 887760 LT +473186 887760 LT +472442 888504 LT +472442 940357 LT +473186 941101 LT +474238 941101 LT +474982 940357 LT +CP BF QS +NP +483448 939481 MT +482952 938985 LT +482252 938985 LT +481756 939481 LT +481756 965582 LT +482252 966078 LT +482952 966078 LT +483448 965582 LT +CP BF QS +NP +492762 939305 MT +492018 938561 LT +473186 938561 LT +472442 939305 LT +472442 940357 LT +473186 941101 LT +492018 941101 LT +492762 940357 LT +CP BF QS +NP +492762 888504 MT +492018 887760 LT +473186 887760 LT +472442 888504 LT +472442 889556 LT +473186 890300 LT +492018 890300 LT +492762 889556 LT +CP BF QS +NP +483448 863279 MT +482952 862783 LT +482252 862783 LT +481756 863279 LT +481756 889380 LT +482252 889876 LT +482952 889876 LT +483448 889380 LT +CP BF QS +NP +492762 507491 MT +492018 506747 LT +490966 506747 LT +490222 507491 LT +490222 559345 LT +490966 560089 LT +492018 560089 LT +492762 559345 LT +CP BF QS +NP +474982 507491 MT +474238 506747 LT +473186 506747 LT +472442 507491 LT +472442 559345 LT +473186 560089 LT +474238 560089 LT +474982 559345 LT +CP BF QS +NP +483448 558469 MT +482952 557973 LT +482252 557973 LT +481756 558469 LT +481756 584570 LT +482252 585066 LT +482952 585066 LT +483448 584570 LT +CP BF QS +NP +492762 558293 MT +492018 557549 LT +473186 557549 LT +472442 558293 LT +472442 559345 LT +473186 560089 LT +492018 560089 LT +492762 559345 LT +CP BF QS +NP +492762 507491 MT +492018 506747 LT +473186 506747 LT +472442 507491 LT +472442 508543 LT +473186 509287 LT +492018 509287 LT +492762 508543 LT +CP BF QS +NP +483448 482266 MT +482952 481770 LT +482252 481770 LT +481756 482266 LT +481756 508367 LT +482252 508863 LT +482952 508863 LT +483448 508367 LT +CP BF QS +NP +610449 939481 MT +609953 938985 LT +609253 938985 LT +608757 939481 LT +608757 965582 LT +609253 966078 LT +609953 966078 LT +610449 965582 LT +CP BF QS +NP +610449 888680 MT +609953 888184 LT +609253 888184 LT +608757 888680 LT +608757 914781 LT +609253 915277 LT +609953 915277 LT +610449 914781 LT +CP BF QS +589280 919480 40641 5081 R +589280 929640 40641 5081 R +NP +610449 934401 MT +609953 933905 LT +609253 933905 LT +608757 934401 LT +608757 940181 LT +609253 940677 LT +609953 940677 LT +610449 940181 LT +CP BF QS +NP +610449 914081 MT +609953 913585 LT +609253 913585 LT +608757 914081 LT +608757 919861 LT +609253 920357 LT +609953 920357 LT +610449 919861 LT +CP BF QS +NP +737449 888680 MT +736953 888184 LT +736253 888184 LT +735757 888680 LT +735757 914781 LT +736253 915277 LT +736953 915277 LT +737449 914781 LT +CP BF QS +NP +737449 939481 MT +736953 938985 LT +736253 938985 LT +735757 939481 LT +735757 965582 LT +736253 966078 LT +736953 966078 LT +737449 965582 LT +CP BF QS +NP +753113 930415 MT +752369 929671 LT +720837 929671 LT +720093 930415 LT +720093 931467 LT +720837 932211 LT +752369 932211 LT +753113 931467 LT +CP BF QS +NP +753113 930415 MT +752369 929671 LT +751317 929671 LT +750573 930415 LT +750573 940357 LT +751317 941101 LT +752369 941101 LT +753113 940357 LT +CP BF QS +NP +722633 930415 MT +721889 929671 LT +720837 929671 LT +720093 930415 LT +720093 940357 LT +720837 941101 LT +721889 941101 LT +722633 940357 LT +CP BF QS +[0 -1 1 0 2114.19 2379.47]ST +F4 F +0 Y<0009>23 0 AT +[0.00236219 0 -0 -0.00236213 388 4609]ST +NP +753113 939305 MT +752369 938561 LT +720837 938561 LT +720093 939305 LT +720093 940357 LT +720837 941101 LT +752369 941101 LT +753113 940357 LT +CP BF QS +720090 914400 33021 8891 R +NP +610449 482266 MT +609953 481770 LT +609253 481770 LT +608757 482266 LT +608757 508367 LT +609253 508863 LT +609953 508863 LT +610449 508367 LT +CP BF QS +NP +610449 507667 MT +609953 507171 LT +609253 507171 LT +608757 507667 LT +608757 533768 LT +609253 534264 LT +609953 534264 LT +610449 533768 LT +CP BF QS +NP +623573 494791 MT +622829 494047 LT +621777 494047 LT +621260 494564 LT +608333 520418 LT +608333 521243 LT +609077 521987 LT +610129 521987 LT +610646 521470 LT +623573 495616 LT +CP BF QS +NP +597946 494564 MT +597429 494047 LT +596377 494047 LT +595633 494791 LT +595633 495616 LT +608560 521470 LT +609077 521987 LT +610129 521987 LT +610873 521243 LT +610873 520418 LT +CP BF QS +NP +610873 520191 MT +610129 519447 LT +596377 519447 LT +595633 520191 LT +595633 521243 LT +596377 521987 LT +610129 521987 LT +610873 521243 LT +CP BF QS +NP +623573 494791 MT +622829 494047 LT +596377 494047 LT +595633 494791 LT +595633 495843 LT +596377 496587 LT +622829 496587 LT +623573 495843 LT +CP BF QS +NP +623573 520191 MT +622829 519447 LT +609077 519447 LT +608333 520191 LT +608333 521243 LT +609077 521987 LT +622829 521987 LT +623573 521243 LT +CP BF QS +NP +623573 513841 MT +622829 513097 LT +621777 513097 LT +621033 513841 LT +621033 521243 LT +621777 521987 LT +622829 521987 LT +623573 521243 LT +CP BF QS +NP +737449 482266 MT +736953 481770 LT +736253 481770 LT +735757 482266 LT +735757 508367 LT +736253 508863 LT +736953 508863 LT +737449 508367 LT +CP BF QS +NP +737449 507667 MT +736953 507171 LT +736253 507171 LT +735757 507667 LT +735757 533768 LT +736253 534264 LT +736953 534264 LT +737449 533768 LT +CP BF QS +NP +750573 494791 MT +749829 494047 LT +748777 494047 LT +748260 494564 LT +735333 520418 LT +735333 521243 LT +736077 521987 LT +737129 521987 LT +737646 521470 LT +750573 495616 LT +CP BF QS +NP +724946 494564 MT +724429 494047 LT +723377 494047 LT +722633 494791 LT +722633 495616 LT +735560 521470 LT +736077 521987 LT +737129 521987 LT +737873 521243 LT +737873 520418 LT +CP BF QS +NP +737873 520191 MT +737129 519447 LT +723377 519447 LT +722633 520191 LT +722633 521243 LT +723377 521987 LT +737129 521987 LT +737873 521243 LT +CP BF QS +NP +750573 494791 MT +749829 494047 LT +723377 494047 LT +722633 494791 LT +722633 495843 LT +723377 496587 LT +749829 496587 LT +750573 495843 LT +CP BF QS +NP +750573 520191 MT +749829 519447 LT +736077 519447 LT +735333 520191 LT +735333 521243 LT +736077 521987 LT +749829 521987 LT +750573 521243 LT +CP BF QS +NP +750573 513841 MT +749829 513097 LT +748777 513097 LT +748033 513841 LT +748033 521243 LT +748777 521987 LT +749829 521987 LT +750573 521243 LT +CP BF QS +NP +610449 406064 MT +609953 405568 LT +609253 405568 LT +608757 406064 LT +608757 432164 LT +609253 432660 LT +609953 432660 LT +610449 432164 LT +CP BF QS +NP +629923 405888 MT +629179 405144 LT +590027 405144 LT +589283 405888 LT +589283 406940 LT +590027 407684 LT +629179 407684 LT +629923 406940 LT +CP BF QS +NP +737449 406064 MT +736953 405568 LT +736253 405568 LT +735757 406064 LT +735757 432164 LT +736253 432660 LT +736953 432660 LT +737449 432164 LT +CP BF QS +NP +756923 405888 MT +756179 405144 LT +717027 405144 LT +716283 405888 LT +716283 406940 LT +717027 407684 LT +756179 407684 LT +756923 406940 LT +CP BF QS +NP +483448 406064 MT +482952 405568 LT +482252 405568 LT +481756 406064 LT +481756 432164 LT +482252 432660 LT +482952 432660 LT +483448 432164 LT +CP BF QS +NP +502922 405888 MT +502178 405144 LT +463026 405144 LT +462282 405888 LT +462282 406940 LT +463026 407684 LT +502178 407684 LT +502922 406940 LT +CP BF QS +NP +610449 787076 MT +609953 786580 LT +609253 786580 LT +608757 787076 LT +608757 813177 LT +609253 813673 LT +609953 813673 LT +610449 813177 LT +CP BF QS +NP +629923 786900 MT +629179 786156 LT +590027 786156 LT +589283 786900 LT +589283 787952 LT +590027 788696 LT +629179 788696 LT +629923 787952 LT +CP BF QS +NP +737449 787076 MT +736953 786580 LT +736253 786580 LT +735757 787076 LT +735757 813177 LT +736253 813673 LT +736953 813673 LT +737449 813177 LT +CP BF QS +NP +756923 786900 MT +756179 786156 LT +717027 786156 LT +716283 786900 LT +716283 787952 LT +717027 788696 LT +756179 788696 LT +756923 787952 LT +CP BF QS +NP +2.00746e+06 1.4221e+06 MT +2.00696e+06 1.4216e+06 LT +1.95546e+06 1.4216e+06 LT +1.95496e+06 1.4221e+06 LT +1.95496e+06 1.4228e+06 LT +1.95546e+06 1.42329e+06 LT +2.00696e+06 1.42329e+06 LT +2.00746e+06 1.4228e+06 LT +CP BF QS +NP +2.00746e+06 1.3967e+06 MT +2.00696e+06 1.3962e+06 LT +1.95546e+06 1.3962e+06 LT +1.95496e+06 1.3967e+06 LT +1.95496e+06 1.3974e+06 LT +1.95546e+06 1.39789e+06 LT +2.00696e+06 1.39789e+06 LT +2.00746e+06 1.3974e+06 LT +CP BF QS +NP +2.00746e+06 1.3713e+06 MT +2.00696e+06 1.3708e+06 LT +1.95546e+06 1.3708e+06 LT +1.95496e+06 1.3713e+06 LT +1.95496e+06 1.372e+06 LT +1.95546e+06 1.37249e+06 LT +2.00696e+06 1.37249e+06 LT +2.00746e+06 1.372e+06 LT +CP BF QS +NP +2.04682e+06 1.44697e+06 MT +2.04558e+06 1.44573e+06 LT +1.99303e+06 1.44573e+06 LT +1.99179e+06 1.44697e+06 LT +1.99179e+06 1.44872e+06 LT +1.99303e+06 1.44996e+06 LT +2.04558e+06 1.44996e+06 LT +2.04682e+06 1.44872e+06 LT +CP BF QS +NP +2.02227e+06 1.37042e+06 MT +2.02054e+06 1.36868e+06 LT +2.00538e+06 1.36868e+06 LT +2.00365e+06 1.37042e+06 LT +2.00365e+06 1.37287e+06 LT +2.00538e+06 1.37461e+06 LT +2.02054e+06 1.37461e+06 LT +2.02227e+06 1.37287e+06 LT +CP BF QS +NP +2.02227e+06 1.39582e+06 MT +2.02054e+06 1.39408e+06 LT +2.00538e+06 1.39408e+06 LT +2.00365e+06 1.39582e+06 LT +2.00365e+06 1.39827e+06 LT +2.00538e+06 1.40001e+06 LT +2.02054e+06 1.40001e+06 LT +2.02227e+06 1.39827e+06 LT +CP BF QS +NP +2.02227e+06 1.42122e+06 MT +2.02054e+06 1.41948e+06 LT +2.00538e+06 1.41948e+06 LT +2.00365e+06 1.42122e+06 LT +2.00365e+06 1.42368e+06 LT +2.00538e+06 1.42541e+06 LT +2.02054e+06 1.42541e+06 LT +2.02227e+06 1.42368e+06 LT +CP BF QS +NP +2.04682e+06 1.34537e+06 MT +2.04558e+06 1.34413e+06 LT +2.04383e+06 1.34413e+06 LT +2.04259e+06 1.34537e+06 LT +2.04259e+06 1.44872e+06 LT +2.04383e+06 1.44996e+06 LT +2.04558e+06 1.44996e+06 LT +2.04682e+06 1.44872e+06 LT +CP BF QS +NP +1.99602e+06 1.34537e+06 MT +1.99478e+06 1.34413e+06 LT +1.99303e+06 1.34413e+06 LT +1.99179e+06 1.34537e+06 LT +1.99179e+06 1.44872e+06 LT +1.99303e+06 1.44996e+06 LT +1.99478e+06 1.44996e+06 LT +1.99602e+06 1.44872e+06 LT +CP BF QS +NP +2.04682e+06 1.34537e+06 MT +2.04558e+06 1.34413e+06 LT +1.99303e+06 1.34413e+06 LT +1.99179e+06 1.34537e+06 LT +1.99179e+06 1.34712e+06 LT +1.99303e+06 1.34836e+06 LT +2.04558e+06 1.34836e+06 LT +2.04682e+06 1.34712e+06 LT +CP BF QS +NP +1.80425e+06 1.24429e+06 MT +1.80376e+06 1.2438e+06 LT +1.80306e+06 1.2438e+06 LT +1.80256e+06 1.24429e+06 LT +1.80256e+06 1.27039e+06 LT +1.80306e+06 1.27089e+06 LT +1.80376e+06 1.27089e+06 LT +1.80425e+06 1.27039e+06 LT +CP BF QS +NP +1.82373e+06 1.24412e+06 MT +1.82298e+06 1.24337e+06 LT +1.78383e+06 1.24337e+06 LT +1.78309e+06 1.24412e+06 LT +1.78309e+06 1.24517e+06 LT +1.78383e+06 1.24591e+06 LT +1.82298e+06 1.24591e+06 LT +1.82373e+06 1.24517e+06 LT +CP BF QS +[1 0 0 1 3402.79 2647.07]ST +1 0 128 d2 1 1 PE +1 128 d2 BR +F5 F +0 Y<00240026000C0032001C000600230033>235 0 AT +[1 0 0 1 3743.19 2620.67]ST +0 Y<00010018>56 0 AT +[1 0 0 1 2843.19 1807.09]ST +0 Y<00240026001600320034003500360037000200380035001B001C000600020033>467 0 AT +[1 0 0 1 2679.79 1780.69]ST +0 Y<00010019>56 0 AT +[1 0 0 1 2843.19 1687.1]ST +0 Y<00240026001500320034003500360037000100380035001B001C000600010033>467 0 AT +[1 0 0 1 2707.79 1660.7]ST +0 Y<0018>28 0 AT +[1 0 0 1 2843.19 1987.09]ST +0 Y<000A000B0007>112 0 AT +[1 0 0 1 2707.79 1960.69]ST +0 Y<0017>28 0 AT +[1 0 0 1 2843.19 2107.08]ST +0 Y<000500060006>108 0 AT +[1 0 0 1 2707.79 2080.68]ST +0 Y<0016>28 0 AT +[1 0 0 1 2843.19 1387.11]ST +0 Y<0036000A000B0007>146 0 AT +[1 0 0 1 2679.79 1360.71]ST +0 Y<00020002>56 0 AT +[1 0 0 1 2843.19 1447.11]ST +0 Y<003600200039003A>136 0 AT +[1 0 0 1 2687.79 1420.71]ST +0 Y<00020001>56 0 AT +[1 0 0 1 2843.19 1507.1]ST +0 Y<0036000500060006>142 0 AT +[1 0 0 1 2679.79 1480.7]ST +0 Y<00020019>56 0 AT +[1 0 0 1 3380.79 2587.07]ST +0 Y<0024002600040032001A001D001C001B0033>257 0 AT +[1 0 0 1 3743.19 2560.67]ST +0 Y<00010017>56 0 AT +[1 0 0 1 3263.79 2527.07]ST +0 Y<0024002600030032001A001B001C001D0038001B000600020033>374 0 AT +[1 0 0 1 3743.19 2500.67]ST +0 Y<00010016>56 0 AT +[1 0 0 1 3288.79 2467.07]ST +0 Y<0024002600020032001C001C0038001B0006000100260033>349 0 AT +[1 0 0 1 3743.19 2440.67]ST +0 Y<00010015>56 0 AT +[1 0 0 1 3370.79 2407.07]ST +0 Y<0024002600010032001B0006000100360033>267 0 AT +[1 0 0 1 3743.19 2380.67]ST +0 Y<0001000C>56 0 AT +[1 0 0 1 3422.79 2347.08]ST +0 Y<0024002600190032001D000600240033>215 0 AT +[1 0 0 1 3743.19 2320.68]ST +0 Y<00010004>56 0 AT +[1 0 0 1 3391.79 2227.08]ST +0 Y<00240007001600320036001D000B00010033>246 0 AT +[1 0 0 1 3743.19 2200.68]ST +0 Y<00010003>56 0 AT +[1 0 0 1 3391.79 2167.08]ST +0 Y<00240007001500320036001D000B00190033>246 0 AT +[1 0 0 1 3743.19 2140.68]ST +0 Y<00010002>56 0 AT +[1 0 0 1 3445.79 2107.09]ST +0 Y<00240007000C0032003500010033>192 0 AT +[1 0 0 1 3743.19 2080.68]ST +0 Y<00010001>56 0 AT +[1 0 0 1 3326.79 2047.09]ST +0 Y<00240007000400320034000600230038003500190033>311 0 AT +[1 0 0 1 3743.19 2020.69]ST +0 Y<0015>28 0 AT +[1 0 0 1 3394.79 1987.09]ST +0 Y<0024000700030032001D000B003500010033>243 0 AT +[1 0 0 1 3743.19 1960.69]ST +0 Y<000C>28 0 AT +[1 0 0 1 3394.79 1927.09]ST +0 Y<0024000700020032001D000B003500190033>243 0 AT +[1 0 0 1 3743.19 1900.69]ST +0 Y<0004>28 0 AT +[1 0 0 1 3402.79 1867.09]ST +0 Y<00240007000100320035003400070033>235 0 AT +[1 0 0 1 3743.19 1840.69]ST +0 Y<0003>28 0 AT +[1 0 0 1 3396.79 1807.1]ST +0 Y<00240007001900320020003400070033>241 0 AT +[1 0 0 1 3743.19 1780.69]ST +0 Y<0002>28 0 AT +[1 0 0 1 3255.79 1567.1]ST +0 Y<00240006000C0032003600070006000C0038001C000600370033>382 0 AT +[1 0 0 1 3743.19 1540.7]ST +0 Y<00020017>56 0 AT +[1 0 0 1 3249.79 1507.11]ST +0 Y<002400060004003200360007000600040038001C000700360033>388 0 AT +[1 0 0 1 3743.19 1480.7]ST +0 Y<00020016>56 0 AT +[1 0 0 1 3368.79 1447.11]ST +0 Y<002400060003003200360007000600030033>269 0 AT +[1 0 0 1 3743.19 1420.71]ST +0 Y<00020015>56 0 AT +[1 0 0 1 3368.79 1387.11]ST +0 Y<002400060002003200360007000600020033>269 0 AT +[1 0 0 1 3743.19 1360.71]ST +0 Y<0002000C>56 0 AT +[1 0 0 1 3368.79 1327.11]ST +0 Y<002400060001003200360007000600010033>269 0 AT +[1 0 0 1 3743.19 1300.71]ST +0 Y<00020004>56 0 AT +[1 0 0 1 3368.79 1267.11]ST +0 Y<002400060019003200360007000600190033>269 0 AT +[1 0 0 1 3743.19 1240.71]ST +0 Y<00020003>56 0 AT +[1 0 0 1 2843.19 1267.11]ST +0 Y<0024000600150032003800200039001C003900350033>317 0 AT +[1 0 0 1 2715.79 1240.71]ST +0 Y<0001>28 0 AT +[1 0 0 1 2787.99 2809.06]ST +F1 F +0 Y<001D00060001>91 0 AT +[-0 -1 1 0 4065.38 2850.06]ST +0 Y<00200004>75 0 AT +[-0 -1 1 0 4305.38 2850.06]ST +0 Y<0020000C>75 0 AT +[1 0 0 1 876.398 2920.66]ST +F5 F +0 Y<0001>28 0 AT +[1 0 0 1 876.398 2980.65]ST +0 Y<0002>28 0 AT +[1 0 0 1 876.398 3040.65]ST +0 Y<0003>28 0 AT +[1 0 0 1 876.398 3100.65]ST +0 Y<0004>28 0 AT +[1 0 0 1 808.998 2839.06]ST +F1 F +0 Y<00340001>71 0 AT +[0 -1 1 0 2403.99 1609.1]ST +0 Y<003B0001>78 0 AT +[0 -1 1 0 2118.99 1513.1]ST +0 Y<00060003>75 0 AT +[0 -1 1 0 2118.99 1753.1]ST +0 Y<00060004>75 0 AT +[0 -1 1 0 5899.58 2800.66]ST +F5 F +0 Y<0001>28 0 AT +[0 -1 1 0 5899.58 3082.45]ST +0 Y<0002>28 0 AT +[-0 -1 1 0 6009.98 2896.06]ST +F1 F +0 Y<003C00240001>99 0 AT +[0 -1 1 0 5839.58 2800.66]ST +F5 F +0 Y<0003>28 0 AT +[0 -1 1 0 5839.58 3082.45]ST +0 Y<0004>28 0 AT +[0 -1 1 0 5779.58 2800.66]ST +0 Y<000C>28 0 AT +[0 -1 1 0 5779.58 3082.45]ST +0 Y<0015>28 0 AT +[0 -1 1 0 5719.58 2800.66]ST +0 Y<0016>28 0 AT +[0 -1 1 0 5719.58 3082.45]ST +0 Y<0017>28 0 AT +[0 -1 1 0 5659.58 2800.66]ST +0 Y<0018>28 0 AT +[0 -1 1 0 5659.58 3110.45]ST +0 Y<00010019>56 0 AT +[0 -1 1 0 1492.6 2539.07]ST +F1 F +0 Y<00200001>75 0 AT +[0 -1 1 0 1492.6 3439.04]ST +0 Y<00200002>75 0 AT +[1 0 0 1 1863.99 2380.07]ST +0 Y<00060001>75 0 AT +[1 0 0 1 2154.99 2377.67]ST +0 Y<00060002>75 0 AT +[0 -1 1 0 1782.99 3451.04]ST +0 Y<00070001>75 0 AT +[0 -1 1 0 2082.99 3451.04]ST +0 Y<00070002>75 0 AT +[1 0 0 1 5055.78 1240.71]ST +F5 F +0 Y<0001>28 0 AT +[1 0 0 1 5047.78 1300.71]ST +0 Y<0002>28 0 AT +[1 0 0 1 5047.78 1360.71]ST +0 Y<0003>28 0 AT +[1 0 0 1 5014.98 1489.11]ST +F1 F +0 Y<001C003900200005001B>204 0 AT +[1 0 0 1 987.997 3109.05]ST +F6 F +0 Y<000A000B0007>106 0 AT +[1 0 0 1 4827.98 1369.11]ST +0 Y<000A000B0007>106 0 AT +[1 0 0 1 987.997 2989.05]ST +0 Y<00070008>51 0 AT +[1 0 0 1 987.997 3049.05]ST +0 Y<00070009>62 0 AT +[1 0 0 1 987.997 2929.06]ST +0 Y<000500060006>102 0 AT +[1 0 0 1 4827.98 1309.11]ST +0 Y<000500060006>102 0 AT +[1 0 0 1 4827.98 1249.11]ST +0 Y<002400250037001C0039>157 0 AT +[1 0 0 1 3087.99 1129.12]ST +F1 F +0 Y<001A0039000A0036001700080024>261 0 AT +[-0 -1 1 0 3951.98 2839.06]ST +0 Y<00150017>64 0 AT +[-0 -1 1 0 4191.98 2839.06]ST +0 Y<00150017>64 0 AT +[1 0 0 1 1168 3709.03]ST +0 Y<000A000B0007>130 0 AT +[-0 -1 1 0 2529.99 2033.09]ST +0 Y<000A000B0007>130 0 AT +[0 -1 1 0 2487.99 1609.1]ST +0 Y<00010002001A003D003E>183 0 AT +[0 -1 1 0 2238.99 1513.1]ST +0 Y<000200020028>96 0 AT +[0 -1 1 0 2238.99 1753.1]ST +0 Y<000200020028>96 0 AT +[-0 -1 1 0 1929.99 1613.1]ST +0 Y<000A000B0007>130 0 AT +[-0 -1 1 0 1929.99 1853.1]ST +0 Y<000A000B0007>130 0 AT +[-0 -1 1 0 5604.98 2900.06]ST +0 Y<001D001C0024>94 0 AT +[1 0 0 1 5607.98 3469.04]ST +0 Y<000A000B0007>130 0 AT +[0 -1 1 0 1605.99 2539.07]ST +0 Y<0002002F0002>92 0 AT +[0 -1 1 0 1605.99 3439.04]ST +0 Y<0004002F0016>92 0 AT +[1 0 0 1 1863.99 2500.07]ST +0 Y<0001001900190013>128 0 AT +[1 0 0 1 2154.99 2497.67]ST +0 Y<000100190012>96 0 AT +[0 -1 1 0 1908.99 3451.04]ST +0 Y<0003001E00150005>119 0 AT +[0 -1 1 0 2208.99 3451.04]ST +0 Y<0003001E00150005>119 0 AT +[1 0 0 1 1767.99 3709.03]ST +0 Y<000A000B0007>130 0 AT +[1 0 0 1 2067.99 3709.03]ST +0 Y<000A000B0007>130 0 AT +[1 0 0 1 1468 3709.03]ST +0 Y<000A000B0007>130 0 AT +[1 0 0 1 1767.99 2809.06]ST +0 Y<000A000B0007>130 0 AT +[1 0 0 1 2067.99 2809.06]ST +0 Y<000A000B0007>130 0 AT +[1 0 0 1 4587.98 1729.1]ST +0 Y<000A000B0007>130 0 AT + +QP +%%Trailer +%%Pages: 1 +%%DocumentFonts: Helvetica +%%EOF diff --git a/circuit/partlist.txt b/circuit/partlist.txt new file mode 100644 index 0000000..e0030e9 --- /dev/null +++ b/circuit/partlist.txt @@ -0,0 +1,23 @@ +Partlist + +Exported from circuit.sch at 10/24/2006 21:35:25 + +EAGLE Version 4.16 Copyright (c) 1988-2005 CadSoft + +Part Value Device Package Library Sheet + +C1 100n C-EU025-024X044 C025-024X044 rcl 1 +C2 10u CPOL-EUE2.5-5 E2,5-5 rcl 1 +C3 22p C-EU025-024X044 C025-024X044 rcl 1 +C4 22p C-EU025-024X044 C025-024X044 rcl 1 +D1 3.6V ZENER-DIODEDO35Z10 DO35Z10 diode 1 +D2 3.6V ZENER-DIODEDO35Z10 DO35Z10 diode 1 +IC1 MEGA8-P MEGA8-P DIL28-3 avr 1 +JP1 ISP JP5Q JP5Q jumper 1 +Q1 12MHz CRYTALHC18U-V HC18U-V crystal 1 +R1 2k2 R-EU_0207/10 0207/10 rcl 1 +R2 4k7 R-EU_0207/10 0207/10 rcl 1 +R4 68 R-EU_0207/10 0207/10 rcl 1 +R5 68 R-EU_0207/10 0207/10 rcl 1 +SERVO MA03-1 MA03-1 con-lstb 1 +X1 PN61729 PN61729 con-berg 1 diff --git a/commandline/Makefile b/commandline/Makefile new file mode 100644 index 0000000..a863aeb --- /dev/null +++ b/commandline/Makefile @@ -0,0 +1,26 @@ +# $Id: Makefile,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + +CC = gcc +LIBUSB_CONFIG = libusb-config +# Make sure that libusb-config is in the search path or specify a full path. On +# Windows, there is no libusb-config and you must configure the options below +# manually. See examples. + +CFLAGS = `$(LIBUSB_CONFIG) --cflags` -O -Wall -I../common + +USBLIBS = `$(LIBUSB_CONFIG) --libs` +XSPLIBS = -lX11 -lm + +all: usb-servo xservopointer + +usb-servo: usb-servo.o usbdrv.o + $(CC) $(CFLAGS) -o usb-servo usb-servo.o usbdrv.o $(USBLIBS) + +xservopointer: xservopointer.o usbdrv.o + $(CC) $(CFLAGS) -o xservopointer xservopointer.o usbdrv.o $(USBLIBS) $(XSPLIBS) + +.c.o: + $(CC) $(CFLAGS) -c $*.c -o $*.o + +clean: + rm -f usb-servo xservopointer *.o diff --git a/commandline/usb-servo.c b/commandline/usb-servo.c new file mode 100644 index 0000000..2655104 --- /dev/null +++ b/commandline/usb-servo.c @@ -0,0 +1,75 @@ +/** + * \file usb-servo.c + * \brief Commandline-tool for the USB-Servo. + * \author Ronald Schaten + * \version $Id: usb-servo.c,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + * + * License: See documentation. + */ + +#include +#include +#include +#include /* this is libusb, see + http://libusb.sourceforge.net/ */ + +#include "usbdrv.h" + +/** + * Displays usage-information. This function is called if the parameters cannot + * be parsed. + * \param name The name of this application. + */ +void usage(char *name) { + fprintf(stderr, "usage:\n"); + fprintf(stderr, " %s status\n", name); + fprintf(stderr, " %s set \n", name); + fprintf(stderr, " %s test\n\n", name); + fprintf(stderr, "parameters:\n"); + fprintf(stderr, " angle: Required angle for the servo.\n"); +} + +/** + * Main function. Initializes the USB-device, parses commandline-parameters and + * calls the functions that communicate with the device. + * \param argc Number of arguments. + * \param argv Arguments. + * \return Error code. + */ +int main(int argc, char **argv) { + usb_dev_handle *handle = NULL; + + if (argc < 2) { + usage(argv[0]); + exit(1); + } + usb_init(); + if (usbOpenDevice(&handle, USBDEV_SHARED_VENDOR, "www.schatenseite.de", + USBDEV_SHARED_PRODUCT, "USB-Servo") != 0) { + fprintf(stderr, + "Could not find USB device \"USB-Servo\" with vid=0x%x pid=0x%x\n", + USBDEV_SHARED_VENDOR, USBDEV_SHARED_PRODUCT); + exit(1); + } + /* We have searched all devices on all busses for our USB device + above. Now try to open it and perform the vendor specific control + operations for the function requested by the user. */ + if (strcmp(argv[1], "test") == 0) { + if (dev_test(handle, argc, argv) != 0) { + usage(argv[1]); + } + } else if (strcmp(argv[1], "set") == 0) { + if (dev_set(handle, argc, argv) != 0) { + usage(argv[1]); + } + } else if (strcmp(argv[1], "status") == 0) { + if (dev_status(handle, argc, argv) != 0) { + usage(argv[1]); + } + } else { + usage(argv[0]); + exit(1); + } + usb_close(handle); + return 0; +} diff --git a/commandline/usbdrv.c b/commandline/usbdrv.c new file mode 100644 index 0000000..ce7f0e3 --- /dev/null +++ b/commandline/usbdrv.c @@ -0,0 +1,207 @@ +/** + * \file usbdrv.c + * \brief USB-driver-parts for implementing a client. + * \author Ronald Schaten + * \version $Id: usbdrv.c,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + * + * License: See documentation. + */ + +#include +#include +#include +#include /* this is libusb, see + http://libusb.sourceforge.net/ */ + +#include "usbdrv.h" +#include "usbservo.h" + +int usbGetStringAscii(usb_dev_handle * dev, int index, int langid, + char *buf, int buflen) { + char buffer[256]; + int rval, i; + + if ((rval = usb_control_msg(dev, USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR, + (USB_DT_STRING << 8) + index, langid, buffer, + sizeof(buffer), 1000)) < 0) { + return rval; + } + if (buffer[1] != USB_DT_STRING) { + return 0; + } + if ((unsigned char)buffer[0] < rval) { + rval = (unsigned char)buffer[0]; + } + rval /= 2; + /* lossy conversion to ISO Latin1 */ + for (i = 1; i < rval; i++) { + if (i > buflen) { + /* destination buffer overflow */ + break; + } + buf[i - 1] = buffer[2 * i]; + if (buffer[2 * i + 1] != 0) { + /* outside of ISO Latin1 range */ + buf[i - 1] = '?'; + } + } + buf[i - 1] = 0; + return i - 1; +} + +int usbOpenDevice(usb_dev_handle ** device, int vendor, char *vendorName, + int product, char *productName) { + struct usb_bus *bus; + struct usb_device *dev; + usb_dev_handle *handle = NULL; + int errorCode = USB_ERROR_NOTFOUND; + static int didUsbInit = 0; + + if (!didUsbInit) { + didUsbInit = 1; + usb_init(); + } + usb_find_busses(); + usb_find_devices(); + for (bus = usb_get_busses(); bus; bus = bus->next) { + for (dev = bus->devices; dev; dev = dev->next) { + if (dev->descriptor.idVendor == vendor + && dev->descriptor.idProduct == product) { + char string[256]; + int len; + handle = usb_open(dev); /* we need to open the device in + order to query strings */ + if (!handle) { + errorCode = USB_ERROR_ACCESS; + fprintf(stderr, + "Warning: cannot open USB device: %s\n", + usb_strerror()); + continue; + } + if (vendorName == NULL && productName == NULL) { + /* name does not matter */ + break; + } + /* now check whether the names match: */ + len = usbGetStringAscii(handle, + dev->descriptor.iManufacturer, + 0x0409, string, sizeof(string)); + if (len < 0) { + errorCode = USB_ERROR_IO; + fprintf(stderr, + "Warning: cannot query manufacturer for device: %s\n", + usb_strerror()); + } else { + errorCode = USB_ERROR_NOTFOUND; + if (strcmp(string, vendorName) == 0) { + len = usbGetStringAscii(handle, + dev->descriptor.iProduct, + 0x0409, string, + sizeof(string)); + if (len < 0) { + errorCode = USB_ERROR_IO; + fprintf(stderr, + "Warning: cannot query product for device: %s\n", + usb_strerror()); + } else { + errorCode = USB_ERROR_NOTFOUND; + if (strcmp(string, productName) == 0) { + break; + } + } + } + } + usb_close(handle); + handle = NULL; + } + } + if (handle) { + break; + } + } + if (handle != NULL) { + errorCode = 0; + *device = handle; + } + return errorCode; +} + +int dev_test(usb_dev_handle * handle, int argc, char **argv) { + unsigned char buffer[8]; + int nBytes; + int i, v, r; + if (argc != 2) { + return 1; + } + for (i = 0; i < 1000; i++) { + v = rand() & 0xffff; + nBytes = usb_control_msg(handle, + USB_TYPE_VENDOR | USB_RECIP_DEVICE | + USB_ENDPOINT_IN, CMD_ECHO, v, 0, + (char *)buffer, sizeof(buffer), 5000); + if (nBytes < 2) { + if (nBytes < 0) { + fprintf(stderr, "USB error: %s\n", usb_strerror()); + } + fprintf(stderr, "only %d bytes received in iteration %d\n", + nBytes, i); + exit(1); + } + r = buffer[0] | (buffer[1] << 8); + if (r != v) { + fprintf(stderr, + "data error: received 0x%x instead of 0x%x in iteration %d\n", + r, v, i); + exit(1); + } + } + printf("test succeeded\n"); + return 0; +} + +int dev_set(usb_dev_handle * handle, int argc, char **argv) { + unsigned char buffer[8]; + int nBytes; + if (argc != 3) { + return 1; + } + int angle = atoi(argv[2]); + if ((angle < 0) || (angle > 255)) { + fprintf(stderr, "invalid angle: %d\n", angle); + exit(1); + } + + nBytes = usb_control_msg(handle, + USB_TYPE_VENDOR | USB_RECIP_DEVICE | + USB_ENDPOINT_OUT, CMD_SET, angle, 0, + (char *)buffer, sizeof(buffer), 5000); + + if (nBytes < 0) { + fprintf(stderr, "USB error: %s\n", usb_strerror()); + exit(1); + } + return 0; +} + +int dev_status(usb_dev_handle * handle, int argc, char **argv) { + int nBytes; + unsigned char buffer[8]; + if (argc != 2) { + return 1; + } + nBytes = usb_control_msg(handle, + USB_TYPE_VENDOR | USB_RECIP_DEVICE | + USB_ENDPOINT_IN, CMD_GET, 0, 0, (char *)buffer, + sizeof(buffer), 5000); + if (nBytes < 0) { + fprintf(stderr, "USB error: %s\n", usb_strerror()); + exit(1); + } + if (nBytes < 1) { + fprintf(stderr, "only %d bytes status received\n", nBytes); + exit(1); + } + printf("Current servo angle: %d\n", buffer[0]); + return 0; +} + diff --git a/commandline/usbdrv.h b/commandline/usbdrv.h new file mode 100644 index 0000000..c386f1a --- /dev/null +++ b/commandline/usbdrv.h @@ -0,0 +1,74 @@ +/** + * \file usbdrv.h + * \brief USB-driver-parts for implementing a client. + * \author Ronald Schaten + * \version $Id: usbdrv.h,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + * + * License: See documentation. + */ + +#include +#include +#include +#include /* this is libusb, see http://libusb.sourceforge.net/ */ + +#include "usbservo.h" + +#define USBDEV_SHARED_VENDOR 0x16C0 /**< VOTI */ +#define USBDEV_SHARED_PRODUCT 0x05DC /**< Obdev's free shared PID. Use obdev's generic shared VID/PID pair and follow the rules outlined in firmware/usbdrv/USBID-License.txt. */ + +/* These are error codes for the communication via USB. */ +#define USB_ERROR_NOTFOUND 1 /**< Error code if the device isn't found. */ +#define USB_ERROR_ACCESS 2 /**< Error code if the device isn't accessible. */ +#define USB_ERROR_IO 3 /**< Error code if errors in the communication with the device occur. */ + +/** + * Reads and converts a string from USB. The conversion to ASCII is 'lossy' (unknown characters become '?'). + * \param dev Handle of the USB-Device. + * \param index Index of the required data. + * \param langid Index of the expected language. + * \param buf Buffer to contain the return-string. + * \param buflen Length of buf. + * \return Length of the string. + */ +int usbGetStringAscii(usb_dev_handle * dev, int index, int langid, char *buf, int buflen); + +/** + * Connect to the USB-device. Loops through all connected USB-Devices and + * searches our counterpart. + * \param device Handle to address the device. + * \param vendor USBDEV_SHARED_VENDOR as defined. + * \param vendorName In our case "www.schatenseite.de". + * \param product USBDEV_SHARED_PRODUCT as defined. + * \param productName In our case "USB-Servo". + * \return Error code. + */ +int usbOpenDevice(usb_dev_handle ** device, int vendor, char *vendorName, int product, char *productName); + +/** + * Test connection to the device. The test consists of writing 1000 random + * numbers to the device and checking the echo. This should discover systematic + * bit errors (e.g. in bit stuffing). + * \param handle Handle to talk to the device. + * \param argc Number of arguments. + * \param argv Arguments. + */ +int dev_test(usb_dev_handle * handle, int argc, char **argv); + +/** + * Set the angle of the Servo. + * \param handle Handle to talk to the device. + * \param argc Number of arguments. + * \param argv Arguments. + */ +int dev_set(usb_dev_handle * handle, int argc, char **argv); + +/** + * Get the status of the device. Status information is printed in detail (we + * dont't have too many details with only one servo). + * \param handle Handle to talk to the device. + * \param argc Number of arguments. + * \param argv Arguments. + */ +int dev_status(usb_dev_handle * handle, int argc, char **argv); + diff --git a/commandline/xservopointer.c b/commandline/xservopointer.c new file mode 100644 index 0000000..9d4e967 --- /dev/null +++ b/commandline/xservopointer.c @@ -0,0 +1,107 @@ +/** + * \file xservopointer.c + * \brief Tool that uses a servo to point to the mouse cursor under X. + * \author Ronald Schaten + * \version $Id: xservopointer.c,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + * + * License: See documentation. + */ + +#include +#include + +#include + +#include /* this is libusb, see http://libusb.sourceforge.net/ */ + +#include "usbdrv.h" + +Display *dpy; /** The display to use */ +Window root; /** The root-window of the display */ + +int rootwidth, rootheight; /** Measurements of the desktop */ +int servoposx, servoposy; /** Position of the mouse cursor */ + +usb_dev_handle *handle = NULL; /** Handle to the device */ + +/** + * Determines the current cursor position and sets the servo angle. + */ +void update() { + Window wroot, wchild; + int absx, absy, relx, rely, angle; + static int oldabsx = -1000; + static int oldabsy = -1000; + unsigned int modmask; + unsigned char buffer[8]; + + // get cursor position + XQueryPointer(dpy, root, &wroot, &wchild, &absx, &absy, &relx, &rely, &modmask); + + if (oldabsx == absx && oldabsy == absy) { + // position unchanged + } else { + // calculate new angle + angle = (int)(atan((float)(absx - servoposx) / (absy - servoposy)) * (255 / M_PI)); + angle = 128 - angle; + printf("absx/absy %d/%d -> angle %d\n", absx, absy, angle); + int nBytes = usb_control_msg(handle, + USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CMD_SET, angle, 0, + (char *)buffer, sizeof(buffer), 5000); + + if (nBytes < 0) { + fprintf(stderr, "USB error: %s\n", usb_strerror()); + exit(1); + } + } + oldabsx = absx; + oldabsy = absy; +} + +/** + * Main function. Initializes the X-settings and the USB-device, starts the + * timer and calls the update-function. + * \param argc Number of arguments. + * \param argv Arguments. + * \return Error code. + */ +int main(int argc, char *argv[]) { + // values for timer + struct timespec ts; + ts.tv_sec = 0; + ts.tv_nsec = 100 * 1000 * 1000; // every 100ms + + // open display + dpy = XOpenDisplay(NULL); + if (dpy == NULL) { + fprintf(stderr, "xservopointer: Unable to open display\n"); + exit(1); + } + + root = DefaultRootWindow(dpy); + + // determine screen width and height + XWindowAttributes Attributes; + XGetWindowAttributes(dpy, root, &Attributes); + rootwidth = Attributes.width; + rootheight = Attributes.height; + + // set servo position + servoposx = rootwidth / 2; // middle of the screen + servoposy = -150; // above the screen + + // initialize USB-device + usb_init(); + if (usbOpenDevice(&handle, USBDEV_SHARED_VENDOR, "www.schatenseite.de", USBDEV_SHARED_PRODUCT, "USB-Servo") != 0) { + fprintf(stderr, "Could not find USB device \"USB-Servo\" with vid=0x%x pid=0x%x\n", USBDEV_SHARED_VENDOR, USBDEV_SHARED_PRODUCT); + exit(1); + } + + // main loop + while (1) { + update(); + nanosleep(&ts, NULL); + } + usb_close(handle); + return 0; +} diff --git a/common/usbservo.doxygen b/common/usbservo.doxygen new file mode 100644 index 0000000..48a5422 --- /dev/null +++ b/common/usbservo.doxygen @@ -0,0 +1,1252 @@ +# Doxyfile 1.4.7 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = "USB-Servo" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, +# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, +# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, +# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, +# Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# This tag can be used to specify the encoding used in the generated output. +# The encoding is not always determined by the language that is chosen, +# but also whether or not the output is meant for Windows or non-Windows users. +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES +# forces the Windows encoding (this is the default for the Windows binary), +# whereas setting the tag to NO uses a Unix-style encoding (the default for +# all platforms other than Windows). + +USE_WINDOWS_ENCODING = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to +# include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = firmware/usbdrv + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = htmldoc + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = YES + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latexdoc + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtfdoc + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = YES + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a caller dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that a graph may be further truncated if the graph's +# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH +# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), +# the graph is not depth-constrained. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, which results in a white background. +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/common/usbservo.h b/common/usbservo.h new file mode 100644 index 0000000..d6e8046 --- /dev/null +++ b/common/usbservo.h @@ -0,0 +1,217 @@ +#ifndef __usbservo_h_included__ +#define __usbservo_h_included__ + +/** + * \file usbservo.h + * \brief Global definitions and datatypes, used by the firmware and the commandline-client. Also contains the main doxygen-documentation. + * \author Ronald Schaten + * \version $Id: usbservo.h,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + * + * License: See documentation. + */ + +/** + * \mainpage USB-Servo + * + * \section sec_intro Introduction + * + * The USB-Servo is a device to control a servo via USB. A servo is a motorized + * device that is commonly used in remote controlled cars and planes. I built + * this device to activate a toy puppet. The puppet has a button on its bottom, + * if you press the button the puppet collapses. When the computer is able to + * press the button, I can use the puppet to signal information like someone's + * online-state in the Jabber-network: when my friend goes online, the puppet + * stands up, when he logs off it collapses. + * + * Servos are connected with three-wire-cables. A red and a black one for the + * power, and a yellow one for the signal. Power has to be between 4.8 and 6 + * volts, so the 5 volts from the USB-port is in the range. The signal doesn't + * take much current, so you can connect it directly to the controller. The + * angle of the servo is controlled with pulse width modulation (PWM). It gets + * a signal of about 50Hz (one pulse every 20ms), the length of the pulse tells + * the servo the angle to adjust. + * + * A problem that I didn't really solve is the power consumption: I don't know + * the current that runs through the motor. It seems to be low enough not to + * cause any problems, but I don't know how high it will get when the servo is + * blocked. YOU HAVE BEEN WARNED, I don't feel responsible for USB-ports + * catching fire... :-/ + * + * There are three parts included in the distribution: The firmware for an + * ATmega8 microcontroller, a commandline-client that can be run under Linux, + * and the circuits needed to build the device. + * + * This project is based on my USB-LED-Fader, which itself is based on the + * PowerSwitch example application by Objective Development. Like those, it + * uses Objective Development's firmware-only USB driver for Atmel's AVR + * microcontrollers. + * + * Objective Development's USB driver is a firmware-only implementation of the + * USB 1.1 standard (low speed device) on cheap single chip microcomputers of + * Atmel's AVR series, such as the ATtiny2313 or even some of the small 8 pin + * devices. It implements the standard to the point where useful applications + * can be implemented. See the file "firmware/usbdrv/usbdrv.h" for features and + * limitations. + * + * \section sec_install Building and installing + * + * Both, the firmware and Unix command line tool are built with "make". You may + * need to customize both makefiles. + * + * \subsection sec_fw Firmware + * + * The firmware for this project requires avr-gcc and avr-libc (a C-library for + * the AVR controller). Please read the instructions at + * http://www.nongnu.org/avr-libc/user-manual/install_tools.html for how to + * install the GNU toolchain (avr-gcc, assembler, linker etc.) and avr-libc. + * + * Once you have the GNU toolchain for AVR microcontrollers installed, you can + * run "make" in the subdirectory "firmware". You may have to edit the Makefile + * to use your preferred downloader with "make program". The current version is + * built for avrdude with a parallel connection to an stk200-compatible + * programmer. + * + * If working with a brand-new controller, you may have to set the fuse-bits to + * use the external crystal: + * + * \code + * avrdude -p atmega8 -P /dev/parport0 -c stk200 -U hfuse:w:0xC9:m -U lfuse:w:0x9F:m + * \endcode + * + * Afterwards, you can compile and flash to the device: + * + * \code + * make program + * \endcode + * + * \subsection sec_client Commandline client and demo application + * + * The command line tool and the demo application require libusb. Please take + * the packages from your system's distribution or download libusb from + * http://libusb.sourceforge.net/ and install it before you compile. Change to + * directory "commandline", check the Makefile and edit the settings if + * required and type + * + * \code + * make + * \endcode + * + * This will build the unix executable "usb-servo" which can be used to control + * the device, and the demo application "xservopointer". + * + * \section sec_usage Usage + * + * Connect the device to the USB-port. If it isn't already, the servo will move + * to the 0-position. + * + * \subsection sec_commandline Commandline client + * + * Use the commandline-client as follows: + * + * \code + * usb-servo status + * usb-servo set + * usb-servo test + * \endcode + * + * \subsubsection sec_params Parameters + * + * - \e angle: The angle you want to set the servo to. 0 is full left, 255 is + * full right. + * + * \subsubsection sec_examples Examples + * + * Get the status of the servo: + * \code + * usb-servo status + * \endcode + * This will tell you the angle the servo is currently put to. + * \code + * Current servo angle: 42 + * \endcode + * + * Set a new angle: + * \code + * usb-servo set 23 + * \endcode + * This sets the servo to the angle 23. 0 is full left, 255 is full right, so + * with 23 the servo will be almost on the left side. + * + * Test the device: + * \code + * usb-led-fader test + * \endcode + * This function sends many random numbers to the device. The device returns + * the packages, and the client looks for differences in the sent and the + * received numbers. + * + * \subsection sec_xservopointer Demo application xservopointer + * + * This is a pure fun thing, nobody will need it. That was reason enough to + * write it... + * + * To use it, you have to position the servo centered above the screen (with a + * little tweaking in the source, you can change that position). Then, you + * attach a pointer to the servo and start the application. + * + * You'll never ever have to search for your mouse cursor in the future. The + * pointer on the servo will always show you where to search. + * + * \section sec_drawbacks Drawbacks + * + * The main drawback is the mentioned power consumption. I tested it with my + * servo on my notebook, it is not sure to work on other systems. THIS MAY + * BE HARMFUL FOR YOUR COMPUTER, and nobody but yourself will be + * responsible for any damages. + * + * Another, not so big problem is the crude implementation of the PWM. I got + * the timing-values by trial and error, and they might not fit on your servo. + * On the other hand, I think that servos should be interchangeable. But this + * is my first and only one, so I can't say anything about that. + * + * \section sec_files Files in the distribution + * + * - \e Readme.txt: Documentation, created from the htmldoc-directory. + * - \e firmware: Source code of the controller firmware. + * - \e firmware/usbdrv: USB driver -- See Readme.txt in this directory for + * info + * - \e commandline: Source code of the host software (needs libusb). Here, you + * find the pure commandline client (usb-servo) and the fun demo application + * (xservopointer). + * - \e common: Files needed by the firmware and the commandline-client. + * - \e circuit: Circuit diagrams in PDF and EAGLE 4 format. A free version of + * EAGLE is available for Linux, Mac OS X and Windows from + * http://www.cadsoft.de/. + * - \e License.txt: Public license for all contents of this project, except + * for the USB driver. Look in firmware/usbdrv/License.txt for further info. + * - \e Changelog.txt: Logfile documenting changes in soft-, firm- and + * hardware. + * + * \section sec_thanks Thanks! + * + * I'd like to thank Objective Development for the possibility to use + * their driver for my project. In fact, this project wouldn't exist without + * the driver. + * + * \section sec_license About the license + * + * My work - all contents except for the USB driver - are licensed under the + * GNU General Public License (GPL). A copy of the GPL is included in + * License.txt. The driver itself is licensed under a special license by + * Objective Development. See firmware/usbdrv/License.txt for further info. + * + * (c) 2006 by Ronald Schaten - http://www.schatenseite.de + */ + +#include + +/* return codes for USB-communication */ +#define msgOK 0 /**< Return code for OK. */ +#define msgErr 1 /**< Return code for Error. */ + +/* These are the vendor specific SETUP commands implemented by our USB device */ +#define CMD_ECHO 0 /**< Command to echo the sent data */ +#define CMD_GET 1 /**< Command to fetch values */ +#define CMD_SET 2 /**< Command to send values */ + +#endif diff --git a/firmware/Makefile b/firmware/Makefile new file mode 100644 index 0000000..03d1171 --- /dev/null +++ b/firmware/Makefile @@ -0,0 +1,48 @@ +# $Id: Makefile,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + +AVRDUDE = avrdude -p atmega8 -P /dev/parport0 -c stk200 + +COMPILE = avr-gcc -Wall -Os -Iusbdrv -I../common -I. -mmcu=atmega8 #-DDEBUG_LEVEL=2 +# NEVER compile the final product with debugging! Any debug output will +# distort timing so that the specs can't be met. + +OBJECTS = usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o +# Note that we link usbdrv.o first! This is required for correct alignment of +# driver-internal global variables! + + +# symbolic targets: +all: main.hex + +.c.o: + $(COMPILE) -c $< -o $@ + +.S.o: + $(COMPILE) -x assembler-with-cpp -c $< -o $@ +# "-x assembler-with-cpp" should not be necessary since this is the default +# file type for the .S (with capital S) extension. However, upper case +# characters are not always preserved on Windows. To ensure WinAVR +# compatibility define the file type manually. + +.c.s: + $(COMPILE) -S $< -o $@ + +program: all + $(AVRDUDE) -E noreset,vcc -U flash:w:main.hex + +clean: + rm -f main.hex main.lst main.obj main.cof main.list main.map main.eep.hex main.bin *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s + +# file targets: +main.bin: $(OBJECTS) + $(COMPILE) -o main.bin $(OBJECTS) + +main.hex: main.bin + rm -f main.hex main.eep.hex + avr-objcopy -j .text -j .data -O ihex main.bin main.hex + +disasm: main.bin + avr-objdump -d main.bin + +cpp: + $(COMPILE) -E main.c diff --git a/firmware/main.c b/firmware/main.c new file mode 100644 index 0000000..12c6ff5 --- /dev/null +++ b/firmware/main.c @@ -0,0 +1,115 @@ +/** + * \file main.c + * \brief Firmware for the USB-Servo + * \author Ronald Schaten + * \version $Id: main.c,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + * + * License: See documentation. + */ + +#include +#include +#include +#include + +#include "usbdrv.h" +#include "oddebug.h" +#include "usbservo.h" + +/** Global variable, contains the angle of the servo. */ +static uint8_t angle; + +/** + * Handler for the timer-interrupt. This function is called every 20 + * milliseconds (50Hz). + */ +static void timerInterrupt(void) { + int i; + PORTC = 0xff; + // wait 7200us (value by trial & error) + for (i = 0; i < 72; i++) { + _delay_us(100); + } + // still have to wait up to 17850us (value by trial & error) + for (i = 0; i < angle; i++) { + _delay_us(70); // 17850 / 255 = 70 + } + PORTC = 0x00; +} + +/** + * USB-Setup-Handler. Handles setup-calls that are received from the + * USB-Interface. + * \param data Eight bytes of data. + * \return The number of returned bytes (in replyBuffer[]). + */ +uchar usbFunctionSetup(uchar data[8]) { + static uchar replyBuffer[8]; + uchar replyLength; + + replyBuffer[0] = msgOK; + switch (data[1]) { + case CMD_ECHO: /* echo */ + replyBuffer[0] = data[2]; + replyBuffer[1] = data[3]; + replyLength = 2; + break; + case CMD_GET: /* read status */ + replyBuffer[0] = angle; + replyLength = 1; + break; + case CMD_SET: /* set status */ + angle = data[2]; + replyLength = 0; + break; + default: /* WTF? */ + replyBuffer[0] = msgErr; + replyLength = 1; + break; + } + usbMsgPtr = replyBuffer; + return replyLength; +} + +/** + * Main-function. Initializes the hardware and starts the main loop of the + * application. + * \return An integer. Whatever... :-) + */ +int main(void) { + uchar i, j; + odDebugInit(); + DDRD = ~0; /* output SE0 for USB reset */ + PORTD = 0x00; /* no pullups on USB pins */ + DDRC = 0xff; /* all outputs */ + PORTC = 0x00; + + j = 0; + while (--j) { /* USB Reset by device only required on + Watchdog Reset */ + i = 0; + while (--i); /* delay >10ms for USB reset */ + } + DDRD = ~USBMASK; /* all outputs except USB data */ + TCCR0 = 5; /* set prescaler to 1/1024 */ + usbInit(); + sei(); + + for (i = 0; i < 10; i++) { /* wait one second to prevent strange + effects when the USB-bus isn't + initialized (e. g. when the host system + is on standby. */ + _delay_ms(100); + } + + angle = 0; + + while (1) { /* main event loop */ + usbPoll(); + if (TIFR & (1 << TOV0)) { + TIFR |= 1 << TOV0; /* clear pending flag */ + timerInterrupt(); + } + } + return 0; +} diff --git a/firmware/usbconfig.h b/firmware/usbconfig.h new file mode 100644 index 0000000..4a57ee8 --- /dev/null +++ b/firmware/usbconfig.h @@ -0,0 +1,170 @@ +/* Name: usbconfig.h + * Project: AVR USB driver + * Author: Christian Starkjohann + * Creation Date: 2005-04-01 + * Tabsize: 4 + * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: usbconfig.h,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + +#ifndef __usbconfig_h_included__ +#define __usbconfig_h_included__ + +/** + * \file usbconfig.h + * \brief Configuration of the USB-driver. + * \version $Id: usbconfig.h,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + + +/* +General Description: +This file contains parts of the USB driver which can be configured and can or +must be adapted to your hardware. + +Please note that the usbdrv contains a usbconfig-prototype.h file now. We +recommend that you use that file as a template because it will always list +the newest features and options. +*/ + +/* ---------------------------- Hardware Config ---------------------------- */ + +#define USB_CFG_IOPORTNAME D +/* This is the port where the USB bus is connected. When you configure it to + * "PORTB", the registers PORTB, PINB (=PORTB-2) and DDRB (=PORTB-1) will be + * used. + */ +#define USB_CFG_DMINUS_BIT 0 +/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected. + * This MUST be bit 0 or 7. All other values will result in a compile error! + */ +#define USB_CFG_DPLUS_BIT 2 +/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected. + * This may be any bit in the port. Please note that D+ must also be connected + * to interrupt pin INT0! + */ + +/* #define USB_CFG_PULLUP_IOPORTNAME B */ +/* This is the port where the USB D- pullup resistor is connected. When you + * configure it to "PORTB", the registers PORTB and DDRB (=PORTB-1) will be + * used. If this constant is defined, the macros usbDeviceConnect() and + * usbDeviceDisconnect will be available. + */ +/* #define USB_CFG_PULLUP_BIT 2 */ +/* This is the bit number in USB_CFG_PULLUP_IOPORT where the USB D- 1.5 kOhm + * pullup resistor is connected instead of VBUS. This may be any bit in + * the port. + */ + +/* --------------------------- Functional Range ---------------------------- */ + +#define USB_CFG_HAVE_INTRIN_ENDPOINT 0 +/* Define this to 1 if you want to compile a version with two endpoints: The + * default control endpoint 0 and an interrupt-in endpoint 1. + */ +#define USB_CFG_IMPLEMENT_HALT 0 +/* Define this to 1 if you also want to implement the ENDPOINT_HALT feature + * for endpoint 1 (interrupt endpoint). Although you may not need this feature, + * it is required by the standard. We have made it a config option because it + * bloats the code considerably. + */ +#define USB_CFG_INTR_POLL_INTERVAL 10 +/* If you compile a version with endpoint 1 (interrupt-in), this is the poll + * interval. The value is in milliseconds and must not be less than 10 ms for + * low speed devices. + */ +#define USB_CFG_IS_SELF_POWERED 1 +/* Define this to 1 if the device has its own power supply. Set it to 0 if the + * device is powered from the USB bus. + */ +#define USB_CFG_MAX_BUS_POWER 20 +/* Set this variable to the maximum USB bus power consumption of your device. + * The value is in milliamperes. [It will be divided by two since USB + * communicates power requirements in units of 2 mA.] + */ +#define USB_CFG_SAMPLE_EXACT 0 +/* This variable affects Sampling Jitter for USB receiving. When it is 0, the + * driver guarantees a sampling window of 1/2 bit. The USB spec requires + * that the receiver has at most 1/4 bit sampling window. The 1/2 bit window + * should still work reliably enough because we work at low speed. If you want + * to meet the spec, set this value to 1. This will unroll a loop which + * results in bigger code size. + * If you have problems with long cables, try setting this value to 1. + */ +#define USB_CFG_IMPLEMENT_FN_WRITE 0 +/* Set this to 1 if you want usbFunctionWrite() to be called for control-out + * transfers. Set it to 0 if you don't need it and want to save a couple of + * bytes. + */ +#define USB_CFG_IMPLEMENT_FN_READ 0 +/* Set this to 1 if you need to send control replies which are generated + * "on the fly" when usbFunctionRead() is called. If you only want to send + * data from a static buffer, set it to 0 and return the data from + * usbFunctionSetup(). This saves a couple of bytes. + */ + +/* -------------------------- Device Description --------------------------- */ + +#define USB_CFG_VENDOR_ID 0xc0, 0x16 /* 5824 in dec, stands for VOTI */ +/* USB vendor ID for the device, low byte first. If you have registered your + * own Vendor ID, define it here. Otherwise you use obdev's free shared + * VID/PID pair. Be sure to read USBID-License.txt for rules! + */ +#define USB_CFG_DEVICE_ID 0xdc, 0x05 /* 1500 in dec, obdev's free PID */ +/* This is the ID of the product, low byte first. It is interpreted in the + * scope of the vendor ID. If you have registered your own VID with usb.org + * or if you have licensed a PID from somebody else, define it here. Otherwise + * you use obdev's free shared VID/PID pair. Be sure to read the rules in + * USBID-License.txt! + */ +#define USB_CFG_DEVICE_VERSION 0x00, 0x01 +/* Version number of the device: Minor number first, then major number. + */ +#define USB_CFG_VENDOR_NAME 'w', 'w', 'w', '.', 's', 'c', 'h', 'a', 't', 'e', 'n', 's', 'e', 'i', 't', 'e', '.', 'd', 'e' +#define USB_CFG_VENDOR_NAME_LEN 19 +/* These two values define the vendor name returned by the USB device. The name + * must be given as a list of characters under single quotes. The characters + * are interpreted as Unicode (UTF-16) entities. + * If you don't want a vendor name string, undefine these macros. + * ALWAYS define a vendor name containing your Internet domain name if you use + * obdev's free shared VID/PID pair. See the file USBID-License.txt for + * details. + */ +#define USB_CFG_DEVICE_NAME 'U', 'S', 'B', '-', 'S', 'e', 'r', 'v', 'o' +#define USB_CFG_DEVICE_NAME_LEN 9 +/* Same as above for the device name. If you don't want a device name, undefine + * the macros. See the file USBID-License.txt before you assign a name. + */ +#define USB_CFG_SERIAL_NUMBER_LENGTH 0 +/* Set this define to the number of charcters in the serial number if your + * device should have a serial number to uniquely identify each hardware + * instance. You must supply the serial number in a string descriptor with the + * name "usbCfgSerialNumberStringDescriptor", e.g.: + * #define USB_CFG_SERIAL_NUMBER_LENGTH 5 + * int usbCfgSerialNumberStringDescriptor[] PROGMEM = { + * USB_STRING_DESCRIPTOR_HEADER(USB_CFG_SERIAL_NUMBER_LENGTH), + * '1', '2', '3', '4', '5' + * }; + * See usbdrv.h for more information about the USB_STRING_DESCRIPTOR_HEADER() + * macro or usbdrv.c for example string descriptors. + * You may want to put "usbCfgSerialNumberStringDescriptor" at a constant + * flash memory address (with magic linker commands) so that you don't need + * to recompile if you change it. + */ +#define USB_CFG_DEVICE_CLASS 0xff +#define USB_CFG_DEVICE_SUBCLASS 0 +/* See USB specification if you want to conform to an existing device class. + */ +#define USB_CFG_INTERFACE_CLASS 0 +#define USB_CFG_INTERFACE_SUBCLASS 0 +#define USB_CFG_INTERFACE_PROTOCOL 0 +/* See USB specification if you want to conform to an existing device class or + * protocol. + */ +#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 0 /* total length of report descriptor */ +/* Define this to the length of the HID report descriptor, if you implement + * an HID device. Otherwise don't define it or define it to 0. + */ + +#endif /* __usbconfig_h_included__ */ diff --git a/firmware/usbdrv/Changelog.txt b/firmware/usbdrv/Changelog.txt new file mode 100644 index 0000000..fa381ca --- /dev/null +++ b/firmware/usbdrv/Changelog.txt @@ -0,0 +1,115 @@ +This file documents changes in the firmware-only USB driver for atmel's AVR +microcontrollers. New entries are always appended to the end of the file. +Scroll down to the bottom to see the most recent changes. + +2005-04-01: + - Implemented endpoint 1 as interrupt-in endpoint. + - Moved all configuration options to usbconfig.h which is not part of the + driver. + - Changed interface for usbVendorSetup(). + - Fixed compatibility with ATMega8 device. + - Various minor optimizations. + +2005-04-11: + - Changed interface to application: Use usbFunctionSetup(), usbFunctionRead() + and usbFunctionWrite() now. Added configuration options to choose which + of these functions to compile in. + - Assembler module delivers receive data non-inverted now. + - Made register and bit names compatible with more AVR devices. + +2005-05-03: + - Allow address of usbRxBuf on any memory page as long as the buffer does + not cross 256 byte page boundaries. + - Better device compatibility: works with Mega88 now. + - Code optimization in debugging module. + - Documentation updates. + +2006-01-02: + - Added (free) default Vendor- and Product-IDs bought from voti.nl. + - Added USBID-License.txt file which defines the rules for using the free + shared VID/PID pair. + - Added Readme.txt to the usbdrv directory which clarifies administrative + issues. + +2006-01-25: + - Added "configured state" to become more standards compliant. + - Added "HALT" state for interrupt endpoint. + - Driver passes the "USB Command Verifier" test from usb.org now. + - Made "serial number" a configuration option. + - Minor optimizations, we now recommend compiler option "-Os" for best + results. + - Added a version number to usbdrv.h + +2006-02-03: + - New configuration variable USB_BUFFER_SECTION for the memory section where + the USB rx buffer will go. This defaults to ".bss" if not defined. Since + this buffer MUST NOT cross 256 byte pages (not even touch a page at the + end), the user may want to pass a linker option similar to + "-Wl,--section-start=.mybuffer=0x800060". + - Provide structure for usbRequest_t. + - New defines for USB constants. + - Prepared for HID implementations. + - Increased data size limit for interrupt transfers to 8 bytes. + - New macro usbInterruptIsReady() to query interrupt buffer state. + +2006-02-18: + - Ensure that the data token which is sent as an ack to an OUT transfer is + always zero sized. This fixes a bug where the host reports an error after + sending an out transfer to the device, although all data arrived at the + device. + - Updated docs in usbdrv.h to reflect changed API in usbFunctionWrite(). + +* Release 2006-02-20 + + - Give a compiler warning when compiling with debugging turned on. + - Added Oleg Semyonov's changes for IAR-cc compatibility. + - Added new (optional) functions usbDeviceConnect() and usbDeviceDisconnect() + (also thanks to Oleg!). + - Rearranged tests in usbPoll() to save a couple of instructions in the most + likely case that no actions are pending. + - We need a delay between the SET ADDRESS request until the new address + becomes active. This delay was handled in usbPoll() until now. Since the + spec says that the delay must not exceed 2ms, previous versions required + aggressive polling during the enumeration phase. We have now moved the + handling of the delay into the interrupt routine. + - We must not reply with NAK to a SETUP transaction. We can only achieve this + by making sure that the rx buffer is empty when SETUP tokens are expected. + We therefore don't pass zero sized data packets from the status phase of + a transfer to usbPoll(). This change MAY cause troubles if you rely on + receiving a less than 8 bytes long packet in usbFunctionWrite() to + identify the end of a transfer. usbFunctionWrite() will NEVER be called + with a zero length. + +* Release 2006-03-14 + + - Improved IAR C support: tiny memory model, more devices + - Added template usbconfig.h file under the name usbconfig-prototype.h + +* Release 2006-03-26 + + - Added provision for one more interrupt-in endpoint (endpoint 3). + - Added provision for one interrupt-out endpoint (endpoint 1). + - Added flowcontrol macros for USB. + - Added provision for custom configuration descriptor. + - Allow ANY two port bits for D+ and D-. + - Merged (optional) receive endpoint number into global usbRxToken variable. + - Use USB_CFG_IOPORTNAME instead of USB_CFG_IOPORT. We now construct the + variable name from the single port letter instead of computing the address + of related ports from the output-port address. + +* Release 2006-06-26 + + - Updated documentation in usbdrv.h and usbconfig-prototype.h to reflect the + new features. + - Removed "#warning" directives because IAR does not understand them. Use + unused static variables instead to generate a warning. + - Do not include when compiling with IAR. + - Introduced USB_CFG_DESCR_PROPS_* in usbconfig.h to configure how each + USB descriptor should be handled. It is now possible to provide descriptor + data in Flash, RAM or dynamically at runtime. + - STALL is now a status in usbTxLen* instead of a message. We can now conform + to the spec and leave the stall status pending until it is cleared. + - Made usbTxPacketCnt1 and usbTxPacketCnt3 public. This allows the + application code to reset data toggling on interrupt pipes. + +* Release 2006-07-18 diff --git a/firmware/usbdrv/License.txt b/firmware/usbdrv/License.txt new file mode 100644 index 0000000..400d2e5 --- /dev/null +++ b/firmware/usbdrv/License.txt @@ -0,0 +1,458 @@ +PREFACE + +Conceiving and understanding a new license is not an easy task. To make things +easier for both, the author and the licensee, we have decided to base our +license for the USB driver on an existing license with well-understood +properties. + +Our favorite choice for the base license was the GNU General Public License +(GPL). However, we cannot use the GNU GPL directly for the following reasons: + +(1) It was not intended for projects involving hardware -- we must extend the + term "source code" to at least the circuit diagram. +(2) The GNU GPL does not require publication. Only if a binary is published, + it requires that the source is published as well. This is reasonable for + software because unpublished software is of little relevance. For projects + involving hardware, we want to REQUIRE publication. More than that, we + even want to define HOW the publication must be done (files contained, + file formats etc). +(3) As the author of the software, we can distribute it under more than one + license. For people who don't want to meet the obligations of the GNU GPL, + we want to offer commercial licenses. To avoid a split in revisions of + the driver, we need special privileges to distribute contributed + modifications under proprietary licenses. + +We can not simply modify the GNU GPL and incorporate our changes because the +Free Software Foundation (FSF) who holds the copyright for the text of the +GNU GPL does not allow modifications. We therefore set up our own small +license which incorporates the GNU GPL by reference: + + + +LICENSE FOR PROJECTS BUILT WITH "OBJECTIVE DEVELOPMENT'S +FIRMWARE-ONLY USB-DRIVER FOR ATMEL'S AVR MICROCONTROLLERS" +Version 2006-01 + + +I. Definitions + +"OBDEV" shall mean OBJECTIVE DEVELOPMENT Software GmbH or any legal successor +thereof. + +"Software Source Code" shall mean the preferred form of the software for +making modifications to it. + +"USB Driver" shall mean the Software Source Code for OBDEV's firmware-only +USB-driver for Atmel's AVR microcontrollers. + +"Function" shall mean the Software Source Code for all software executed on +the microcontroller except the USB Driver. + +"Host Software" shall mean the Software Source Code for all software required +to control the USB device from the USB host running any operating system. + +"Project" shall mean the USB Driver, the Function, the Host Software, circuit +diagrams of the controller based hardware and accompanying documentation. + +"source code" shall have the same meaning as the term "Project" above. + +"Web Site" shall mean a collection of text and multimedia documents accessible +worldwide over internet through the HyperText Transfer Protocol (HTTP) on +TCP port 80 (standard HTTP port). + + +II. General License Terms +The general terms of this license consist of the GNU General Public License +Version 2 (GNU GPL2) which is hereby incorporated into this section as though +it were fully set forth here. A copy of the GNU GPL2 is included for your +convenience in appendix A of this license. + +The term "source code" in the GNU GPL2 is to be understood as defined in +section I above. If any term or definition in section I, III, IV or V +conflicts with the GNU GPL2, the term or definition in section I, III, IV or +V has precedence of the GNU GPL2. + + +III. Distribution of the Project +The distributed form of a Project must contain at least the following files: +(a) Software Source Code files for the USB Driver, the Function and the Host + Software. +(b) Circuit diagrams for the hardware in PDF, PNG or GIF image file format. +(c) A file with name "Readme.txt" in ASCII format with at least the following + content (in English language): + - An explanation what the Project does. + - What to do with the distributed files (installation procedure etc.). + - A reference to Objective Development's USB driver. + - Your (author's) name and contact information. E-mail and/or URL is + sufficient. +(d) Optionally a text file with a description of the circuit diagram, an + explanation of special (software) techniques used etc. +(e) A copy of this license in a file with the name "License.txt". This copy + can be in the "usbdrv" subdirectory which contains the driver. + + +IV. Requirement for Publication +All modifications and derived work (Projects using the USB Driver) MUST be +distributed (published) as described in section III above on a Web Site. The +main page must reproduce at least a description of the Project (e.g. as +contained in the "Readme.txt" file distributed) and a download link for the +entire Project. The URL of the main page must be submitted to OBDEV. OBDEV +will provide a mechanism for submitting Project URLs and for publishing +Projects on their Web Site. The Project must remain available for at least +twelve (12) months after the initial publication or at least six (6) months +after a subsequent version of that particular Project has been published. + + +V. Author Privileges +OBDEV reserves the right to distribute the USB Driver and all modified +versions under other (proprietary) licenses. If you modify the USB Driver +under the grants of this license, you therefore grant OBDEV (in addition to +the grants of the GNU GPL2) a worldwide, perpetual, irrevocable royalty free +license for your modifications. OBDEV shall not automatically gain rights +other than those of the GNU GPL2 in the other parts of the Project. This +section V overrides possibly contradicting terms in the GNU GPL2 referenced +in section II. + + +APPENDIX A + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/firmware/usbdrv/Readme.txt b/firmware/usbdrv/Readme.txt new file mode 100644 index 0000000..b309b3e --- /dev/null +++ b/firmware/usbdrv/Readme.txt @@ -0,0 +1,88 @@ +This is the Readme file to Objective Development's firmware-only USB driver +for Atmel AVR microcontrollers. For more information please visit +http://www.obdev.at/avrusb/ + +This directory contains the USB firmware only. Copy it as-is to your own +project and add your own version of "usbconfig.h". A template for your own +"usbconfig.h" can be found in "usbconfig-prototype.h" in this directory. + + +TECHNICAL DOCUMENTATION +======================= +The technical documentation for the firmware driver is contained in the file +"usbdrv.h". Please read all of it carefully! + + +USB IDENTIFIERS +=============== +Every USB device needs a vendor- and a product-identifier (VID and PID). VIDs +are obtained from usb.org for a price of 1,500 USD. Once you have a VID, you +can assign PIDs at will. + +Since an entry level cost of 1,500 USD is too high for most small companies +and hobbyists, we provide a single VID/PID pair for free. If you want to use +your own VID and PID instead of our's, define the macros "USB_CFG_VENDOR_ID" +and "USB_CFG_DEVICE_ID" accordingly in "usbconfig.h". + +To use our predefined VID/PID pair, you MUST conform to a couple of +requirements. See the file "USBID-License.txt" for details. + + +HOST DRIVER +=========== +You have received this driver together with an example device implementation +and an example host driver. The host driver is based on libusb and compiles +on various Unix flavors (Linux, BSD, Mac OS X). It also compiles natively on +Windows using MinGW (see www.mingw.org) and libusb-win32 (see +libusb-win32.sourceforge.net). The "Automator" project contains a native +Windows host driver (not based on libusb) for Human Interface Devices. + + +DEVELOPMENT SYSTEM +================== +This driver has been developed and optimized for the GNU compiler version 3 +(gcc 3). It does work well with gcc 4 and future versions will probably be +optimized for gcc 4. We recommend that you use the GNU compiler suite because +it is freely available. AVR-USB has also been ported to the IAR compiler and +assembler. It has been tested with IAR 4.10B/W32 and 4.12A/W32 on an ATmega8 +with the "small" and "tiny" memory model. Please note that gcc is more +efficient for usbdrv.c because this module has been deliberately optimized +for gcc. + + +USING AVR-USB FOR FREE +====================== +The AVR firmware driver is published under an Open Source compliant license. +See the file "License.txt" for details. Since it is not obvious for many +people how this license applies to their own projects, here's a short guide: + +(1) The USB driver and all your modifications to the driver itself are owned +by Objective Development. You must give us a worldwide, perpetual, +irrevocable royalty free license for your modifications. + +(2) Since you own the code you have written (except where you modify our +driver), you can (at least in principle) determine the license for it freely. +However, to "pay" for the USB driver code you link against, we demand that +you choose an Open Source compliant license (compatible with our license) for +your source code and the hardware circuit diagrams. Simply attach your +license of choice to your parts of the project and leave our "License.txt" in +the "usbdrv" subdirectory. + +(3) We also demand that you publish your work on the Internet and drop us a +note with the URL. The publication must meet certain formal criteria (files +distributed, file formats etc.). See the file "License.txt" for details. + +Other than that, you are allowed to manufacture any number of units and sell +them for any price. If you like our driver, we also encourage you to make a +donation on our web site. + + +COMMERCIAL LICENSES FOR AVR-USB +=============================== +If you don't want to publish your source code and the circuit diagrams under +an Open Source license, you can simply pay money for AVR-USB. As an +additional benefit you get USB PIDs for free, licensed exclusively to you. +See http://www.obdev.at/products/avrusb/license.html for details. + + + diff --git a/firmware/usbdrv/USBID-License.txt b/firmware/usbdrv/USBID-License.txt new file mode 100644 index 0000000..4739a57 --- /dev/null +++ b/firmware/usbdrv/USBID-License.txt @@ -0,0 +1,143 @@ +Royalty-Free Non-Exclusive License USB Product-ID +================================================= + +Version 2006-06-19 + +OBJECTIVE DEVELOPMENT Software GmbH hereby grants you the non-exclusive +right to use three USB.org vendor-ID (VID) / product-ID (PID) pairs with +products based on Objective Development's firmware-only USB driver for +Atmel AVR microcontrollers: + + * VID = 5824 (=0x16c0) / PID = 1500 (=0x5dc) for devices implementing no + USB device class (vendor-class devices with USB class = 0xff). Devices + using this pair will be referred to as "VENDOR CLASS" devices. + + * VID = 5824 (=0x16c0) / PID = 1503 (=0x5df) for HID class devices + (excluding mice and keyboards). Devices using this pair will be referred + to as "HID CLASS" devices. + + * VID = 5824 (=0x16c0) / PID = 1505 (=0x5e1) for CDC class modem devices + Devices using this pair will be referred to as "CDC-ACM CLASS" devices. + +Since the granted right is non-exclusive, the same VID/PID pairs may be +used by many companies and individuals for different products. To avoid +conflicts, your device and host driver software MUST adhere to the rules +outlined below. + +OBJECTIVE DEVELOPMENT Software GmbH has licensed these VID/PID pairs from +Wouter van Ooijen (see www.voti.nl), who has licensed the VID from the USB +Implementers Forum, Inc. (see www.usb.org). The VID is registered for the +company name "Van Ooijen Technische Informatica". + + +RULES AND RESTRICTIONS +====================== + +(1) The USB device MUST provide a textual representation of the +manufacturer and product identification. The manufacturer identification +MUST be available at least in USB language 0x0409 (English/US). + +(2) The textual manufacturer identification MUST contain either an Internet +domain name (e.g. "mycompany.com") registered and owned by you, or an +e-mail address under your control (e.g. "myname@gmx.net"). You can embed +the domain name or e-mail address in any string you like, e.g. "Objective +Development http://www.obdev.at/avrusb/". + +(3) You are responsible for retaining ownership of the domain or e-mail +address for as long as any of your products are in use. + +(4) You may choose any string for the textual product identification, as +long as this string is unique within the scope of your textual manufacturer +identification. + +(5) Matching of device-specific drivers MUST be based on the textual +manufacturer and product identification in addition to the usual VID/PID +matching. This means that operating system features which are based on +VID/PID matching only (e.g. Windows kernel level drivers, automatic actions +when the device is plugged in etc) MUST NOT be used. The driver matching +MUST be a comparison of the entire strings, NOT a sub-string match. For +CDC-ACM CLASS devices, a generic class driver should be used and the +matching is based on the USB device class. + +(6) The extent to which VID/PID matching is allowed for non device-specific +drivers or features depends on the operating system and particular VID/PID +pair used: + + * Mac OS X, Linux, FreeBSD and other Unixes: No VID/PID matching is + required and hence no VID/PID-only matching is allowed at all. + + * Windows: The operating system performs VID/PID matching for the kernel + level driver. You are REQUIRED to use libusb-win32 (see + http://libusb-win32.sourceforge.net/) as the kernel level driver for + VENDOR CLASS devices. HID CLASS devices all use the generic HID class + driver shipped with Windows, except mice and keyboards. You therefore + MUST NOT use any of the shared VID/PID pairs for mice or keyboards. + CDC-ACM CLASS devices require a ".inf" file which matches on the VID/PID + pair. This ".inf" file MUST load the "usbser" driver to configure the + device as modem (COM-port). + +(7) OBJECTIVE DEVELOPMENT Software GmbH disclaims all liability for any +problems which are caused by the shared use of these VID/PID pairs. You +have been warned that the sharing of VID/PID pairs may cause problems. If +you want to avoid them, get your own VID/PID pair for exclusive use. + + +HOW TO IMPLEMENT THESE RULES +============================ + +The following rules are for VENDOR CLASS and HID CLASS devices. CDC-ACM +CLASS devices use the operating system's class driver and don't need a +custom driver. + +The host driver MUST iterate over all devices with the given VID/PID +numbers in their device descriptors and query the string representation for +the manufacturer name in USB language 0x0409 (English/US). It MUST compare +the ENTIRE string with your textual manufacturer identification chosen in +(2) above. A substring search for your domain or e-mail address is NOT +acceptable. The driver MUST NOT touch the device (other than querying the +descriptors) unless the strings match. + +For all USB devices with matching VID/PID and textual manufacturer +identification, the host driver must query the textual product +identification and string-compare it with the name of the product it can +control. It may only initialize the device if the product matches exactly. + +Objective Development provides examples for these matching rules with the +"PowerSwitch" project (using libusb) and with the "Automator" project +(using Windows calls on Windows and libusb on Unix). + + +Technical Notes: +================ + +Sharing the same VID/PID pair among devices is possible as long as ALL +drivers which match the VID/PID also perform matching on the textual +identification strings. This is easy on all operating systems except +Windows, since Windows establishes a static connection between the VID/PID +pair and a kernel level driver. All devices with the same VID/PID pair must +therefore use THE SAME kernel level driver. + +We therefore demand that you use libusb-win32 for VENDOR CLASS devices. +This is a generic kernel level driver which allows all types of USB access +for user space applications. This is only a partial solution of the +problem, though, because different device drivers may come with different +versions of libusb-win32 and they may not work with the libusb version of +the respective other driver. You are therefore encouraged to test your +driver against a broad range of libusb-win32 versions. Do not use new +features in new versions, or check for their existence before you use them. +When a new libusb-win32 becomes available, make sure that your driver is +compatible with it. + +For HID CLASS devices it is necessary that all those devices bind to the +same kernel driver: Microsoft's generic USB HID driver. This is true for +all HID devices except those with a specialized driver. Currently, the only +HIDs with specialized drivers are mice and keyboards. You therefore MUST +NOT use a shared VID/PID with mouse and keyboard devices. + +Sharing the same VID/PID among different products is unusual and probably +violates the USB specification. If you do it, you do it at your own risk. + +To avoid possible incompatibilities, we highly recommend that you get your +own VID/PID pair if you intend to sell your product. Objective +Development's commercial licenses for AVR-USB include a PID for +unrestricted exclusive use. diff --git a/firmware/usbdrv/iarcompat.h b/firmware/usbdrv/iarcompat.h new file mode 100644 index 0000000..de081b0 --- /dev/null +++ b/firmware/usbdrv/iarcompat.h @@ -0,0 +1,70 @@ +/* Name: iarcompat.h + * Project: AVR USB driver + * Author: Christian Starkjohann + * Creation Date: 2006-03-01 + * Tabsize: 4 + * Copyright: (c) 2006 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: iarcompat.h,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + +/* +General Description: +This header is included when we compile with the IAR C-compiler and assembler. +It defines macros for cross compatibility between gcc and IAR-cc. + +Thanks to Oleg Semyonov for his help with the IAR tools port! +*/ + +#ifndef __iarcompat_h_INCLUDED__ +#define __iarcompat_h_INCLUDED__ + +#if defined __IAR_SYSTEMS_ICC__ || defined __IAR_SYSTEMS_ASM__ + +/* Enable bit definitions */ +#ifndef ENABLE_BIT_DEFINITIONS +# define ENABLE_BIT_DEFINITIONS 1 +#endif + +/* Include IAR headers */ +#include +#ifndef __IAR_SYSTEMS_ASM__ +# include +#endif + +#define __attribute__(arg) +#define IAR_SECTION(section) @ section + +#ifndef USB_BUFFER_SECTION +# define USB_BUFFER_SECTION "TINY_Z" /* if user has not selected a named section */ +#endif + +#ifdef __IAR_SYSTEMS_ASM__ +# define __ASSEMBLER__ +#endif + +#ifdef __HAS_ELPM__ +# define PROGMEM __farflash +#else +# define PROGMEM __flash +#endif + +#define PRG_RDB(addr) (*(PROGMEM char *)(addr)) + +/* The following definitions are not needed by the driver, but may be of some + * help if you port a gcc based project to IAR. + */ +#define cli() __disable_interrupt() +#define sei() __enable_interrupt() +#define wdt_reset() __watchdog_reset() + +/* Depending on the device you use, you may get problems with the way usbdrv.h + * handles the differences between devices. Since IAR does not use #defines + * for MCU registers, we can't check for the existence of a particular + * register with an #ifdef. If the autodetection mechanism fails, include + * definitions for the required USB_INTR_* macros in your usbconfig.h. See + * usbconfig-prototype.h and usbdrv.h for details. + */ + +#endif /* defined __IAR_SYSTEMS_ICC__ || defined __IAR_SYSTEMS_ASM__ */ +#endif /* __iarcompat_h_INCLUDED__ */ diff --git a/firmware/usbdrv/oddebug.c b/firmware/usbdrv/oddebug.c new file mode 100644 index 0000000..b842249 --- /dev/null +++ b/firmware/usbdrv/oddebug.c @@ -0,0 +1,53 @@ +/* Name: oddebug.c + * Project: AVR library + * Author: Christian Starkjohann + * Creation Date: 2005-01-16 + * Tabsize: 4 + * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: oddebug.c,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + +#include "oddebug.h" + +#if DEBUG_LEVEL > 0 + +static uchar Warning__Never_compile_production_devices_with_debugging; +/* The "#warning" preprocessor directive is non-standard. The unused static + * variable above should give a compiler warning on all compilers. + */ + +static void uartPutc(char c) +{ + while(!(ODDBG_USR & (1 << ODDBG_UDRE))); /* wait for data register empty */ + ODDBG_UDR = c; +} + +static uchar hexAscii(uchar h) +{ + h &= 0xf; + if(h >= 10) + h += 'a' - (uchar)10 - '0'; + h += '0'; + return h; +} + +static void printHex(uchar c) +{ + uartPutc(hexAscii(c >> 4)); + uartPutc(hexAscii(c)); +} + +void odDebug(uchar prefix, uchar *data, uchar len) +{ + printHex(prefix); + uartPutc(':'); + while(len--){ + uartPutc(' '); + printHex(*data++); + } + uartPutc('\r'); + uartPutc('\n'); +} + +#endif diff --git a/firmware/usbdrv/oddebug.h b/firmware/usbdrv/oddebug.h new file mode 100644 index 0000000..0953138 --- /dev/null +++ b/firmware/usbdrv/oddebug.h @@ -0,0 +1,126 @@ +/* Name: oddebug.h + * Project: AVR library + * Author: Christian Starkjohann + * Creation Date: 2005-01-16 + * Tabsize: 4 + * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: oddebug.h,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + +#ifndef __oddebug_h_included__ +#define __oddebug_h_included__ + +/* +General Description: +This module implements a function for debug logs on the serial line of the +AVR microcontroller. Debugging can be configured with the define +'DEBUG_LEVEL'. If this macro is not defined or defined to 0, all debugging +calls are no-ops. If it is 1, DBG1 logs will appear, but not DBG2. If it is +2, DBG1 and DBG2 logs will be printed. + +A debug log consists of a label ('prefix') to indicate which debug log created +the output and a memory block to dump in hex ('data' and 'len'). +*/ + + +#ifndef F_CPU +# define F_CPU 12000000 /* 12 MHz */ +#endif + +/* make sure we have the UART defines: */ +#include "iarcompat.h" +#ifndef __IAR_SYSTEMS_ICC__ +# include +#endif + +#ifndef uchar +# define uchar unsigned char +#endif + +#if DEBUG_LEVEL > 0 && !(defined TXEN || defined TXEN0) /* no UART in device */ +# warning "Debugging disabled because device has no UART" +# undef DEBUG_LEVEL +#endif + +#ifndef DEBUG_LEVEL +# define DEBUG_LEVEL 0 +#endif + +/* ------------------------------------------------------------------------- */ + +#if DEBUG_LEVEL > 0 +# define DBG1(prefix, data, len) odDebug(prefix, data, len) +#else +# define DBG1(prefix, data, len) +#endif + +#if DEBUG_LEVEL > 1 +# define DBG2(prefix, data, len) odDebug(prefix, data, len) +#else +# define DBG2(prefix, data, len) +#endif + +/* ------------------------------------------------------------------------- */ + +#if DEBUG_LEVEL > 0 +extern void odDebug(uchar prefix, uchar *data, uchar len); + +/* Try to find our control registers; ATMEL likes to rename these */ + +#if defined UBRR +# define ODDBG_UBRR UBRR +#elif defined UBRRL +# define ODDBG_UBRR UBRRL +#elif defined UBRR0 +# define ODDBG_UBRR UBRR0 +#elif defined UBRR0L +# define ODDBG_UBRR UBRR0L +#endif + +#if defined UCR +# define ODDBG_UCR UCR +#elif defined UCSRB +# define ODDBG_UCR UCSRB +#elif defined UCSR0B +# define ODDBG_UCR UCSR0B +#endif + +#if defined TXEN +# define ODDBG_TXEN TXEN +#else +# define ODDBG_TXEN TXEN0 +#endif + +#if defined USR +# define ODDBG_USR USR +#elif defined UCSRA +# define ODDBG_USR UCSRA +#elif defined UCSR0A +# define ODDBG_USR UCSR0A +#endif + +#if defined UDRE +# define ODDBG_UDRE UDRE +#else +# define ODDBG_UDRE UDRE0 +#endif + +#if defined UDR +# define ODDBG_UDR UDR +#elif defined UDR0 +# define ODDBG_UDR UDR0 +#endif + +static inline void odDebugInit(void) +{ + ODDBG_UCR |= (1< +# include +#endif +#include "usbdrv.h" +#include "oddebug.h" + +/* +General Description: +This module implements the C-part of the USB driver. See usbdrv.h for a +documentation of the entire driver. +*/ + +#ifndef IAR_SECTION +#define IAR_SECTION(arg) +#define __no_init +#endif +/* The macro IAR_SECTION is a hack to allow IAR-cc compatibility. On gcc, it + * is defined to nothing. __no_init is required on IAR. + */ + +/* ------------------------------------------------------------------------- */ + +/* raw USB registers / interface to assembler code: */ +/* usbRxBuf MUST be in 1 byte addressable range (because usbInputBuf is only 1 byte) */ +__no_init uchar usbRxBuf[2][USB_BUFSIZE] __attribute__ ((section (USB_BUFFER_SECTION))) IAR_SECTION(USB_BUFFER_SECTION);/* raw RX buffer: PID, 8 bytes data, 2 bytes CRC */ +uchar usbDeviceAddr; /* assigned during enumeration, defaults to 0 */ +uchar usbNewDeviceAddr; /* device ID which should be set after status phase */ +uchar usbConfiguration; /* currently selected configuration. Administered by driver, but not used */ +uchar usbInputBuf; /* ptr to raw buffer used for receiving */ +uchar usbAppBuf; /* ptr to raw buffer passed to app for processing */ +volatile schar usbRxLen; /* = 0; number of bytes in usbAppBuf; 0 means free */ +uchar usbCurrentTok; /* last token received, if more than 1 rx endpoint: MSb=endpoint */ +uchar usbRxToken; /* token for data we received; if more than 1 rx endpoint: MSb=endpoint */ +uchar usbMsgLen = 0xff; /* remaining number of bytes, no msg to send if -1 (see usbMsgPtr) */ +volatile uchar usbTxLen = USBPID_NAK; /* number of bytes to transmit with next IN token or handshake token */ +uchar usbTxBuf[USB_BUFSIZE];/* data to transmit with next IN, free if usbTxLen contains handshake token */ +#if USB_CFG_HAVE_INTRIN_ENDPOINT +volatile uchar usbTxLen1 = USBPID_NAK; /* TX count for endpoint 1 */ +uchar usbTxBuf1[USB_BUFSIZE]; /* TX data for endpoint 1 */ +#if USB_CFG_HAVE_INTRIN_ENDPOINT3 +volatile uchar usbTxLen3 = USBPID_NAK; /* TX count for endpoint 1 */ +uchar usbTxBuf3[USB_BUFSIZE]; /* TX data for endpoint 1 */ +#endif +#endif + +/* USB status registers / not shared with asm code */ +uchar *usbMsgPtr; /* data to transmit next -- ROM or RAM address */ +static uchar usbMsgFlags; /* flag values see below */ +static uchar usbIsReset; /* = 0; USB bus is in reset phase */ + +#define USB_FLG_TX_PACKET (1<<0) +/* Leave free 6 bits after TX_PACKET. This way we can increment usbMsgFlags to toggle TX_PACKET */ +#define USB_FLG_MSGPTR_IS_ROM (1<<6) +#define USB_FLG_USE_DEFAULT_RW (1<<7) + +/* +optimizing hints: +- do not post/pre inc/dec integer values in operations +- assign value of PRG_RDB() to register variables and don't use side effects in arg +- use narrow scope for variables which should be in X/Y/Z register +- assign char sized expressions to variables to force 8 bit arithmetics +*/ + +/* ------------------------------------------------------------------------- */ + +#if USB_CFG_DESCR_PROPS_STRINGS == 0 + +#if USB_CFG_DESCR_PROPS_STRING_0 == 0 +#undef USB_CFG_DESCR_PROPS_STRING_0 +#define USB_CFG_DESCR_PROPS_STRING_0 sizeof(usbDescriptorString0) +PROGMEM char usbDescriptorString0[] = { /* language descriptor */ + 4, /* sizeof(usbDescriptorString0): length of descriptor in bytes */ + 3, /* descriptor type */ + 0x09, 0x04, /* language index (0x0409 = US-English) */ +}; +#endif + +#if USB_CFG_DESCR_PROPS_STRING_VENDOR == 0 && USB_CFG_VENDOR_NAME_LEN +#undef USB_CFG_DESCR_PROPS_STRING_VENDOR +#define USB_CFG_DESCR_PROPS_STRING_VENDOR sizeof(usbDescriptorStringVendor) +PROGMEM int usbDescriptorStringVendor[] = { + USB_STRING_DESCRIPTOR_HEADER(USB_CFG_VENDOR_NAME_LEN), + USB_CFG_VENDOR_NAME +}; +#endif + +#if USB_CFG_DESCR_PROPS_STRING_DEVICE == 0 && USB_CFG_DEVICE_NAME_LEN +#undef USB_CFG_DESCR_PROPS_STRING_DEVICE +#define USB_CFG_DESCR_PROPS_STRING_DEVICE sizeof(usbDescriptorStringDevice) +PROGMEM int usbDescriptorStringDevice[] = { + USB_STRING_DESCRIPTOR_HEADER(USB_CFG_DEVICE_NAME_LEN), + USB_CFG_DEVICE_NAME +}; +#endif + +#if USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER == 0 && USB_CFG_SERIAL_NUMBER_LEN +#undef USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER +#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER sizeof(usbDescriptorStringSerialNumber) +PROGMEM int usbDescriptorStringSerialNumber[] = { + USB_STRING_DESCRIPTOR_HEADER(USB_CFG_SERIAL_NUMBER_LEN), + USB_CFG_SERIAL_NUMBER +}; +#endif + +#endif /* USB_CFG_DESCR_PROPS_STRINGS == 0 */ + +#if USB_CFG_DESCR_PROPS_DEVICE == 0 +#undef USB_CFG_DESCR_PROPS_DEVICE +#define USB_CFG_DESCR_PROPS_DEVICE sizeof(usbDescriptorDevice) +PROGMEM char usbDescriptorDevice[] = { /* USB device descriptor */ + 18, /* sizeof(usbDescriptorDevice): length of descriptor in bytes */ + USBDESCR_DEVICE, /* descriptor type */ + 0x01, 0x01, /* USB version supported */ + USB_CFG_DEVICE_CLASS, + USB_CFG_DEVICE_SUBCLASS, + 0, /* protocol */ + 8, /* max packet size */ + USB_CFG_VENDOR_ID, /* 2 bytes */ + USB_CFG_DEVICE_ID, /* 2 bytes */ + USB_CFG_DEVICE_VERSION, /* 2 bytes */ + USB_CFG_DESCR_PROPS_STRING_VENDOR != 0 ? 1 : 0, /* manufacturer string index */ + USB_CFG_DESCR_PROPS_STRING_DEVICE != 0 ? 2 : 0, /* product string index */ + USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER != 0 ? 3 : 0, /* serial number string index */ + 1, /* number of configurations */ +}; +#endif + +#if USB_CFG_DESCR_PROPS_HID_REPORT != 0 && USB_CFG_DESCR_PROPS_HID == 0 +#undef USB_CFG_DESCR_PROPS_HID +#define USB_CFG_DESCR_PROPS_HID 9 /* length of HID descriptor in config descriptor below */ +#endif + +#if USB_CFG_DESCR_PROPS_CONFIGURATION == 0 +#undef USB_CFG_DESCR_PROPS_CONFIGURATION +#define USB_CFG_DESCR_PROPS_CONFIGURATION sizeof(usbDescriptorConfiguration) +PROGMEM char usbDescriptorConfiguration[] = { /* USB configuration descriptor */ + 9, /* sizeof(usbDescriptorConfiguration): length of descriptor in bytes */ + USBDESCR_CONFIG, /* descriptor type */ + 18 + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT + (USB_CFG_DESCR_PROPS_HID & 0xff), 0, + /* total length of data returned (including inlined descriptors) */ + 1, /* number of interfaces in this configuration */ + 1, /* index of this configuration */ + 0, /* configuration name string index */ +#if USB_CFG_IS_SELF_POWERED + USBATTR_SELFPOWER, /* attributes */ +#else + USBATTR_BUSPOWER, /* attributes */ +#endif + USB_CFG_MAX_BUS_POWER/2, /* max USB current in 2mA units */ +/* interface descriptor follows inline: */ + 9, /* sizeof(usbDescrInterface): length of descriptor in bytes */ + USBDESCR_INTERFACE, /* descriptor type */ + 0, /* index of this interface */ + 0, /* alternate setting for this interface */ + USB_CFG_HAVE_INTRIN_ENDPOINT, /* endpoints excl 0: number of endpoint descriptors to follow */ + USB_CFG_INTERFACE_CLASS, + USB_CFG_INTERFACE_SUBCLASS, + USB_CFG_INTERFACE_PROTOCOL, + 0, /* string index for interface */ +#if (USB_CFG_DESCR_PROPS_HID & 0xff) /* HID descriptor */ + 9, /* sizeof(usbDescrHID): length of descriptor in bytes */ + USBDESCR_HID, /* descriptor type: HID */ + 0x01, 0x01, /* BCD representation of HID version */ + 0x00, /* target country code */ + 0x01, /* number of HID Report (or other HID class) Descriptor infos to follow */ + 0x22, /* descriptor type: report */ + USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH, 0, /* total length of report descriptor */ +#endif +#if USB_CFG_HAVE_INTRIN_ENDPOINT /* endpoint descriptor for endpoint 1 */ + 7, /* sizeof(usbDescrEndpoint) */ + USBDESCR_ENDPOINT, /* descriptor type = endpoint */ + 0x81, /* IN endpoint number 1 */ + 0x03, /* attrib: Interrupt endpoint */ + 8, 0, /* maximum packet size */ + USB_CFG_INTR_POLL_INTERVAL, /* in ms */ +#endif +}; +#endif + +/* We don't use prog_int or prog_int16_t for compatibility with various libc + * versions. Here's an other compatibility hack: + */ +#ifndef PRG_RDB +#define PRG_RDB(addr) pgm_read_byte(addr) +#endif + +typedef union{ + unsigned word; + uchar *ptr; + uchar bytes[2]; +}converter_t; +/* We use this union to do type conversions. This is better optimized than + * type casts in gcc 3.4.3 and much better than using bit shifts to build + * ints from chars. Byte ordering is not a problem on an 8 bit platform. + */ + +/* ------------------------------------------------------------------------- */ + +#if USB_CFG_HAVE_INTRIN_ENDPOINT +uchar usbTxPacketCnt1; + +void usbSetInterrupt(uchar *data, uchar len) +{ +uchar *p, i; + +#if USB_CFG_IMPLEMENT_HALT + if(usbTxLen1 == USBPID_STALL) + return; +#endif +#if 0 /* No runtime checks! Caller is responsible for valid data! */ + if(len > 8) /* interrupt transfers are limited to 8 bytes */ + len = 8; +#endif + i = USBPID_DATA1; + if(usbTxPacketCnt1 & 1) + i = USBPID_DATA0; + if(usbTxLen1 & 0x10){ /* packet buffer was empty */ + usbTxPacketCnt1++; + }else{ + usbTxLen1 = USBPID_NAK; /* avoid sending incomplete interrupt data */ + } + p = usbTxBuf1; + *p++ = i; + for(i=len;i--;) + *p++ = *data++; + usbCrc16Append(&usbTxBuf1[1], len); + usbTxLen1 = len + 4; /* len must be given including sync byte */ + DBG2(0x21, usbTxBuf1, len + 3); +} +#endif + +#if USB_CFG_HAVE_INTRIN_ENDPOINT3 +uchar usbTxPacketCnt3; + +void usbSetInterrupt3(uchar *data, uchar len) +{ +uchar *p, i; + + i = USBPID_DATA1; + if(usbTxPacketCnt3 & 1) + i = USBPID_DATA0; + if(usbTxLen3 & 0x10){ /* packet buffer was empty */ + usbTxPacketCnt3++; + }else{ + usbTxLen3 = USBPID_NAK; /* avoid sending incomplete interrupt data */ + } + p = usbTxBuf3; + *p++ = i; + for(i=len;i--;) + *p++ = *data++; + usbCrc16Append(&usbTxBuf3[1], len); + usbTxLen3 = len + 4; /* len must be given including sync byte */ + DBG2(0x23, usbTxBuf3, len + 3); +} +#endif + + +static uchar usbRead(uchar *data, uchar len) +{ +#if USB_CFG_IMPLEMENT_FN_READ + if(usbMsgFlags & USB_FLG_USE_DEFAULT_RW){ +#endif + uchar i = len, *r = usbMsgPtr; + if(usbMsgFlags & USB_FLG_MSGPTR_IS_ROM){ /* ROM data */ + while(i--){ + uchar c = PRG_RDB(r); /* assign to char size variable to enforce byte ops */ + *data++ = c; + r++; + } + }else{ /* RAM data */ + while(i--) + *data++ = *r++; + } + usbMsgPtr = r; + return len; +#if USB_CFG_IMPLEMENT_FN_READ + }else{ + if(len != 0) /* don't bother app with 0 sized reads */ + return usbFunctionRead(data, len); + return 0; + } +#endif +} + + +#define GET_DESCRIPTOR(cfgProp, staticName) \ + if(cfgProp){ \ + if((cfgProp) & USB_PROP_IS_RAM) \ + flags &= ~USB_FLG_MSGPTR_IS_ROM; \ + if((cfgProp) & USB_PROP_IS_DYNAMIC){ \ + replyLen = usbFunctionDescriptor(rq); \ + }else{ \ + replyData = (uchar *)(staticName); \ + SET_REPLY_LEN((cfgProp) & 0xff); \ + } \ + } +/* We use if() instead of #if in the macro above because #if can't be used + * in macros and the compiler optimizes constant conditions anyway. + */ + + +/* Don't make this function static to avoid inlining. + * The entire function would become too large and exceed the range of + * relative jumps. + * 2006-02-25: Either gcc 3.4.3 is better than the gcc used when the comment + * above was written, or other parts of the code have changed. We now get + * better results with an inlined function. Test condition: PowerSwitch code. + */ +static void usbProcessRx(uchar *data, uchar len) +{ +usbRequest_t *rq = (void *)data; +uchar replyLen = 0, flags = USB_FLG_USE_DEFAULT_RW; +/* We use if() cascades because the compare is done byte-wise while switch() + * is int-based. The if() cascades are therefore more efficient. + */ + DBG2(0x10 + ((usbRxToken >> 6) & 3), data, len); +#if USB_CFG_IMPLEMENT_FN_WRITEOUT + if(usbRxToken & 0x80){ + usbFunctionWriteOut(data, len); + return; /* no reply expected, hence no usbMsgPtr, usbMsgFlags, usbMsgLen set */ + } + if(usbRxToken == (uchar)(USBPID_SETUP & 0x7f)){ /* MSb contains endpoint (== 0) */ +#else + if(usbRxToken == (uchar)USBPID_SETUP){ +#endif + if(len == 8){ /* Setup size must be always 8 bytes. Ignore otherwise. */ + uchar type = rq->bmRequestType & USBRQ_TYPE_MASK; + if(type == USBRQ_TYPE_STANDARD){ + #define SET_REPLY_LEN(len) replyLen = (len); usbMsgPtr = replyData + /* This macro ensures that replyLen and usbMsgPtr are always set in the same way. + * That allows optimization of common code in if() branches */ + uchar *replyData = usbTxBuf + 9; /* there is 3 bytes free space at the end of the buffer */ + replyData[0] = 0; /* common to USBRQ_GET_STATUS and USBRQ_GET_INTERFACE */ + if(rq->bRequest == USBRQ_GET_STATUS){ /* 0 */ + uchar __attribute__((__unused__)) recipient = rq->bmRequestType & USBRQ_RCPT_MASK; /* assign arith ops to variables to enforce byte size */ +#if USB_CFG_IS_SELF_POWERED + if(recipient == USBRQ_RCPT_DEVICE) + replyData[0] = USB_CFG_IS_SELF_POWERED; +#endif +#if USB_CFG_HAVE_INTRIN_ENDPOINT && USB_CFG_IMPLEMENT_HALT + if(recipient == USBRQ_RCPT_ENDPOINT && rq->wIndex.bytes[0] == 0x81) /* request status for endpoint 1 */ + replyData[0] = usbTxLen1 == USBPID_STALL; +#endif + replyData[1] = 0; + SET_REPLY_LEN(2); + }else if(rq->bRequest == USBRQ_SET_ADDRESS){ /* 5 */ + usbNewDeviceAddr = rq->wValue.bytes[0]; + }else if(rq->bRequest == USBRQ_GET_DESCRIPTOR){ /* 6 */ + flags = USB_FLG_MSGPTR_IS_ROM | USB_FLG_USE_DEFAULT_RW; + if(rq->wValue.bytes[1] == USBDESCR_DEVICE){ /* 1 */ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_DEVICE, usbDescriptorDevice) + }else if(rq->wValue.bytes[1] == USBDESCR_CONFIG){ /* 2 */ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_CONFIGURATION, usbDescriptorConfiguration) + }else if(rq->wValue.bytes[1] == USBDESCR_STRING){ /* 3 */ +#if USB_CFG_DESCR_PROPS_STRINGS & USB_PROP_IS_DYNAMIC + if(USB_CFG_DESCR_PROPS_STRINGS & USB_PROP_IS_RAM) + flags &= ~USB_FLG_MSGPTR_IS_ROM; + replyLen = usbFunctionDescriptor(rq); +#else /* USB_CFG_DESCR_PROPS_STRINGS & USB_PROP_IS_DYNAMIC */ + if(rq->wValue.bytes[0] == 0){ /* descriptor index */ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_STRING_0, usbDescriptorString0) + }else if(rq->wValue.bytes[0] == 1){ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_STRING_VENDOR, usbDescriptorStringVendor) + }else if(rq->wValue.bytes[0] == 2){ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_STRING_DEVICE, usbDescriptorStringDevice) + }else if(rq->wValue.bytes[0] == 3){ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER, usbDescriptorStringSerialNumber) + }else if(USB_CFG_DESCR_PROPS_UNKNOWN & USB_PROP_IS_DYNAMIC){ + replyLen = usbFunctionDescriptor(rq); + } +#endif /* USB_CFG_DESCR_PROPS_STRINGS & USB_PROP_IS_DYNAMIC */ + }else if(rq->wValue.bytes[1] == USBDESCR_HID){ /* 0x21 */ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_HID, usbDescriptorConfiguration + 18) + }else if(rq->wValue.bytes[1] == USBDESCR_HID_REPORT){ /* 0x22 */ + GET_DESCRIPTOR(USB_CFG_DESCR_PROPS_HID_REPORT, usbDescriptorHidReport) + }else if(USB_CFG_DESCR_PROPS_UNKNOWN & USB_PROP_IS_DYNAMIC){ + replyLen = usbFunctionDescriptor(rq); + } + }else if(rq->bRequest == USBRQ_GET_CONFIGURATION){ /* 8 */ + replyData = &usbConfiguration; /* send current configuration value */ + SET_REPLY_LEN(1); + }else if(rq->bRequest == USBRQ_SET_CONFIGURATION){ /* 9 */ + usbConfiguration = rq->wValue.bytes[0]; +#if USB_CFG_IMPLEMENT_HALT + usbTxLen1 = USBPID_NAK; +#endif + }else if(rq->bRequest == USBRQ_GET_INTERFACE){ /* 10 */ + SET_REPLY_LEN(1); +#if USB_CFG_HAVE_INTRIN_ENDPOINT + }else if(rq->bRequest == USBRQ_SET_INTERFACE){ /* 11 */ + usbTxPacketCnt1 = 0; /* reset data toggling for interrupt endpoint */ +# if USB_CFG_HAVE_INTRIN_ENDPOINT3 + usbTxPacketCnt3 = 0; /* reset data toggling for interrupt endpoint */ +# endif +# if USB_CFG_IMPLEMENT_HALT + usbTxLen1 = USBPID_NAK; + }else if(rq->bRequest == USBRQ_CLEAR_FEATURE || rq->bRequest == USBRQ_SET_FEATURE){ /* 1|3 */ + if(rq->wValue.bytes[0] == 0 && rq->wIndex.bytes[0] == 0x81){ /* feature 0 == HALT for endpoint == 1 */ + usbTxLen1 = rq->bRequest == USBRQ_CLEAR_FEATURE ? USBPID_NAK : USBPID_STALL; + usbTxPacketCnt1 = 0; /* reset data toggling for interrupt endpoint */ +# if USB_CFG_HAVE_INTRIN_ENDPOINT3 + usbTxPacketCnt3 = 0; /* reset data toggling for interrupt endpoint */ +# endif + } +# endif +#endif + }else{ + /* the following requests can be ignored, send default reply */ + /* 1: CLEAR_FEATURE, 3: SET_FEATURE, 7: SET_DESCRIPTOR */ + /* 12: SYNCH_FRAME */ + } + #undef SET_REPLY_LEN + }else{ /* not a standard request -- must be vendor or class request */ + replyLen = usbFunctionSetup(data); + } +#if USB_CFG_IMPLEMENT_FN_READ || USB_CFG_IMPLEMENT_FN_WRITE + if(replyLen == 0xff){ /* use user-supplied read/write function */ + if((rq->bmRequestType & USBRQ_DIR_MASK) == USBRQ_DIR_DEVICE_TO_HOST){ + replyLen = rq->wLength.bytes[0]; /* IN transfers only */ + } + flags &= ~USB_FLG_USE_DEFAULT_RW; /* we have no valid msg, use user supplied read/write functions */ + }else /* The 'else' prevents that we limit a replyLen of 0xff to the maximum transfer len. */ +#endif + if(!rq->wLength.bytes[1] && replyLen > rq->wLength.bytes[0]) /* limit length to max */ + replyLen = rq->wLength.bytes[0]; + } + /* make sure that data packets which are sent as ACK to an OUT transfer are always zero sized */ + }else{ /* DATA packet from out request */ +#if USB_CFG_IMPLEMENT_FN_WRITE + if(!(usbMsgFlags & USB_FLG_USE_DEFAULT_RW)){ + uchar rval = usbFunctionWrite(data, len); + replyLen = 0xff; + if(rval == 0xff){ /* an error occurred */ + usbMsgLen = 0xff; /* cancel potentially pending data packet for ACK */ + usbTxLen = USBPID_STALL; + }else if(rval != 0){ /* This was the final package */ + replyLen = 0; /* answer with a zero-sized data packet */ + } + flags = 0; /* start with a DATA1 package, stay with user supplied write() function */ + } +#endif + } + usbMsgFlags = flags; + usbMsgLen = replyLen; +} + +/* ------------------------------------------------------------------------- */ + +static void usbBuildTxBlock(void) +{ +uchar wantLen, len, txLen, token; + + wantLen = usbMsgLen; + if(wantLen > 8) + wantLen = 8; + usbMsgLen -= wantLen; + token = USBPID_DATA1; + if(usbMsgFlags & USB_FLG_TX_PACKET) + token = USBPID_DATA0; + usbMsgFlags++; + len = usbRead(usbTxBuf + 1, wantLen); + if(len <= 8){ /* valid data packet */ + usbCrc16Append(&usbTxBuf[1], len); + txLen = len + 4; /* length including sync byte */ + if(len < 8) /* a partial package identifies end of message */ + usbMsgLen = 0xff; + }else{ + txLen = USBPID_STALL; /* stall the endpoint */ + usbMsgLen = 0xff; + } + usbTxBuf[0] = token; + usbTxLen = txLen; + DBG2(0x20, usbTxBuf, txLen-1); +} + +static inline uchar isNotSE0(void) +{ +uchar rval; +/* We want to do + * return (USBIN & USBMASK); + * here, but the compiler does int-expansion acrobatics. + * We can avoid this by assigning to a char-sized variable. + */ + rval = USBIN & USBMASK; + return rval; +} + +/* ------------------------------------------------------------------------- */ + +void usbPoll(void) +{ +uchar len; + + if((len = usbRxLen) > 0){ +/* We could check CRC16 here -- but ACK has already been sent anyway. If you + * need data integrity checks with this driver, check the CRC in your app + * code and report errors back to the host. Since the ACK was already sent, + * retries must be handled on application level. + * unsigned crc = usbCrc16((uchar *)(unsigned)(usbAppBuf + 1), usbRxLen - 3); + */ + len -= 3; /* remove PID and CRC */ + if(len < 128){ /* no overflow */ + converter_t appBuf; + appBuf.ptr = (uchar *)usbRxBuf; + appBuf.bytes[0] = usbAppBuf; + appBuf.bytes[0]++; + usbProcessRx(appBuf.ptr, len); + } +#if USB_CFG_HAVE_FLOWCONTROL + if(usbRxLen > 0) /* only mark as available if not inactivated */ + usbRxLen = 0; +#else + usbRxLen = 0; /* mark rx buffer as available */ +#endif + } + if(usbMsgLen != 0xff){ /* transmit data pending? */ + if(usbTxLen & 0x10) /* transmit system idle */ + usbBuildTxBlock(); + } + if(isNotSE0()){ /* SE0 state */ + usbIsReset = 0; + }else{ + /* check whether SE0 lasts for more than 2.5us (3.75 bit times) */ + if(!usbIsReset){ + uchar i; + for(i=100;i;i--){ + if(isNotSE0()) + goto notUsbReset; + } + usbIsReset = 1; + usbNewDeviceAddr = 0; + usbDeviceAddr = 0; +#if USB_CFG_IMPLEMENT_HALT + usbTxLen1 = USBPID_NAK; +#if USB_CFG_HAVE_INTRIN_ENDPOINT3 + usbTxLen3 = USBPID_NAK; +#endif +#endif + DBG1(0xff, 0, 0); +notUsbReset:; + } + } +} + +/* ------------------------------------------------------------------------- */ + +void usbInit(void) +{ + usbInputBuf = (uchar)usbRxBuf[0]; + usbAppBuf = (uchar)usbRxBuf[1]; +#if USB_INTR_CFG_SET != 0 + USB_INTR_CFG |= USB_INTR_CFG_SET; +#endif +#if USB_INTR_CFG_CLR != 0 + USB_INTR_CFG &= ~(USB_INTR_CFG_CLR); +#endif + USB_INTR_ENABLE |= (1 << USB_INTR_ENABLE_BIT); +} + +/* ------------------------------------------------------------------------- */ diff --git a/firmware/usbdrv/usbdrv.h b/firmware/usbdrv/usbdrv.h new file mode 100644 index 0000000..f2e2e19 --- /dev/null +++ b/firmware/usbdrv/usbdrv.h @@ -0,0 +1,657 @@ +/* Name: usbdrv.h + * Project: AVR USB driver + * Author: Christian Starkjohann + * Creation Date: 2004-12-29 + * Tabsize: 4 + * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: usbdrv.h,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + +#ifndef __usbdrv_h_included__ +#define __usbdrv_h_included__ +#include "usbconfig.h" +#include "iarcompat.h" + +/* +Hardware Prerequisites: +======================= +USB lines D+ and D- MUST be wired to the same I/O port. D+ must (also) be +connected to INT0. D- requires a pullup of 1.5k to +3.5V (and the device +must be powered at 3.5V) to identify as low-speed USB device. A pullup of +1M SHOULD be connected from D+ to +3.5V to prevent interference when no USB +master is connected. We use D+ as interrupt source and not D- because it +does not trigger on keep-alive and RESET states. + +As a compile time option, the 1.5k pullup resistor on D- can be made +switchable to allow the device to disconnect at will. See the definition of +usbDeviceConnect() and usbDeviceDisconnect() further down in this file. + +Please adapt the values in usbconfig.h according to your hardware! + +The device MUST be clocked at 12 MHz. This is more than the 10 MHz allowed by +an AT90S2313 powered at 4.5V. However, if the supply voltage to maximum clock +relation is interpolated linearly, an ATtiny2313 meets the requirement by +specification. In practice, the AT90S2313 can be overclocked and works well. + + +Limitations: +============ +Compiling: +You should link the usbdrv.o module first because it has special alignment +requirements for the receive buffer (the buffer must not cross a 256 byte +page boundary, it must not even touch it at the end). If you can't link it +first, you must use other measures to ensure alignment. +Note: gcc does not always assign variable addresses in the order as the modules +are linked or the variables are declared. You can choose a memory section for +the receive buffer with the configuration option "USB_BUFFER_SECTION". This +option defaults to ".bss". If you use your own section, you can place it at +an arbitrary location with a linker option similar to +"-Wl,--section-start=.mybuffer=0x800060". Use "avr-nm -ng" on the binary and +search for "usbRxBuf" to find tbe base address of the 22 bytes rx buffer. + +Robustness with respect to communication errors: +The driver assumes error-free communication. It DOES check for errors in +the PID, but does NOT check bit stuffing errors, SE0 in middle of a byte, +token CRC (5 bit) and data CRC (16 bit). CRC checks can not be performed due +to timing constraints: We must start sending a reply within 7 bit times. +Bit stuffing and misplaced SE0 would have to be checked in real-time, but CPU +performance does not permit that. The driver does not check Data0/Data1 +toggling, but application software can implement the check. + +Sampling jitter: +The driver guarantees a sampling window of 1/2 bit. The USB spec requires +that the receiver has at most 1/4 bit sampling window. The 1/2 bit window +should still work reliably enough because we work at low speed. If you want +to meet the spec, define the macro "USB_CFG_SAMPLE_EXACT" to 1 in usbconfig.h. +This will unroll a loop which results in bigger code size. + +Input characteristics: +Since no differential receiver circuit is used, electrical interference +robustness may suffer. The driver samples only one of the data lines with +an ordinary I/O pin's input characteristics. However, since this is only a +low speed USB implementation and the specification allows for 8 times the +bit rate over the same hardware, we should be on the safe side. Even the spec +requires detection of asymmetric states at high bit rate for SE0 detection. + +Number of endpoints: +The driver supports up to four endpoints: One control endpoint (endpoint 0), +two interrupt-in (or bulk-in) endpoints (endpoint 1 and 3) and one +interrupt-out (or bulk-out) endpoint (endpoint 1). Please note that the USB +standard forbids bulk endpoints for low speed devices! Most operating systems +allow them anyway, but the AVR will spend 90% of the CPU time in the USB +interrupt polling for bulk data. +By default, only the control endpoint 0 is enabled. To get the other endpoints, +define USB_CFG_HAVE_INTRIN_ENDPOINT, USB_CFG_HAVE_INTRIN_ENDPOINT3 and/or +USB_CFG_IMPLEMENT_FN_WRITEOUT respectively (see usbconfig-prototype.h for +details). + +Maximum data payload: +Data payload of control in and out transfers may be up to 254 bytes. In order +to accept payload data of out transfers, you need to implement +'usbFunctionWrite()'. + +USB Suspend Mode supply current: +The USB standard limits power consumption to 500uA when the bus is in suspend +mode. This is not a problem for self-powered devices since they don't need +bus power anyway. Bus-powered devices can achieve this only by putting the +CPU in sleep mode. The driver does not implement suspend handling by itself. +However, the application may implement activity monitoring and wakeup from +sleep. The host sends regular SE0 states on the bus to keep it active. These +SE0 states can be detected by wiring the INT1 pin to D-. It is not necessary +to enable the interrupt, checking the interrupt pending flag should suffice. +Before entering sleep mode, the application should enable INT1 for a wakeup +on the next bus activity. + +Operation without an USB master: +The driver behaves neutral without connection to an USB master if D- reads +as 1. To avoid spurious interrupts, we recommend a high impedance (e.g. 1M) +pullup resistor on D+. If D- becomes statically 0, the driver may block in +the interrupt routine. + +Interrupt latency: +The application must ensure that the USB interrupt is not disabled for more +than 20 cycles. This implies that all interrupt routines must either be +declared as "INTERRUPT" instead of "SIGNAL" (see "avr/signal.h") or that they +are written in assembler with "sei" as the first instruction. + +Maximum interrupt duration / CPU cycle consumption: +The driver handles all USB communication during the interrupt service +routine. The routine will not return before an entire USB message is received +and the reply is sent. This may be up to ca. 1200 cycles = 100us if the host +conforms to the standard. The driver will consume CPU cycles for all USB +messages, even if they address another (low-speed) device on the same bus. + +*/ + +/* ------------------------------------------------------------------------- */ +/* --------------------------- Module Interface ---------------------------- */ +/* ------------------------------------------------------------------------- */ + +#define USBDRV_VERSION 20060718 +/* This define uniquely identifies a driver version. It is a decimal number + * constructed from the driver's release date in the form YYYYMMDD. If the + * driver's behavior or interface changes, you can use this constant to + * distinguish versions. If it is not defined, the driver's release date is + * older than 2006-01-25. + */ + +#ifndef __ASSEMBLER__ + +#ifndef uchar +#define uchar unsigned char +#endif +#ifndef schar +#define schar signed char +#endif +/* shortcuts for well defined 8 bit integer types */ + +struct usbRequest; /* forward declaration */ + +extern void usbInit(void); +/* This function must be called before interrupts are enabled and the main + * loop is entered. + */ +extern void usbPoll(void); +/* This function must be called at regular intervals from the main loop. + * Maximum delay between calls is somewhat less than 50ms (USB timeout for + * accepting a Setup message). Otherwise the device will not be recognized. + * Please note that debug outputs through the UART take ~ 0.5ms per byte + * at 19200 bps. + */ +extern uchar *usbMsgPtr; +/* This variable may be used to pass transmit data to the driver from the + * implementation of usbFunctionWrite(). It is also used internally by the + * driver for standard control requests. + */ +extern uchar usbFunctionSetup(uchar data[8]); +/* This function is called when the driver receives a SETUP transaction from + * the host which is not answered by the driver itself (in practice: class and + * vendor requests). All control transfers start with a SETUP transaction where + * the host communicates the parameters of the following (optional) data + * transfer. The SETUP data is available in the 'data' parameter which can + * (and should) be casted to 'usbRequest_t *' for a more user-friendly access + * to parameters. + * + * If the SETUP indicates a control-in transfer, you should provide the + * requested data to the driver. There are two ways to transfer this data: + * (1) Set the global pointer 'usbMsgPtr' to the base of the static RAM data + * block and return the length of the data in 'usbFunctionSetup()'. The driver + * will handle the rest. Or (2) return 0xff in 'usbFunctionSetup()'. The driver + * will then call 'usbFunctionRead()' when data is needed. See the + * documentation for usbFunctionRead() for details. + * + * If the SETUP indicates a control-out transfer, the only way to receive the + * data from the host is through the 'usbFunctionWrite()' call. If you + * implement this function, you must return 0xff in 'usbFunctionSetup()' to + * indicate that 'usbFunctionWrite()' should be used. See the documentation of + * this function for more information. If you just want to ignore the data sent + * by the host, return 0 in 'usbFunctionSetup()'. + * + * Note that calls to the functions usbFunctionRead() and usbFunctionWrite() + * are only done if enabled by the configuration in usbconfig.h. + */ +extern uchar usbFunctionDescriptor(struct usbRequest *rq); +/* You need to implement this function ONLY if you provide USB descriptors at + * runtime (which is an expert feature). It is very similar to + * usbFunctionSetup() above, but it is called only to request USB descriptor + * data. See the documentation of usbFunctionSetup() above for more info. + */ +#if USB_CFG_HAVE_INTRIN_ENDPOINT +void usbSetInterrupt(uchar *data, uchar len); +/* This function sets the message which will be sent during the next interrupt + * IN transfer. The message is copied to an internal buffer and must not exceed + * a length of 8 bytes. The message may be 0 bytes long just to indicate the + * interrupt status to the host. + * If you need to transfer more bytes, use a control read after the interrupt. + */ +extern volatile uchar usbTxLen1; +#define usbInterruptIsReady() (usbTxLen1 & 0x10) +/* This macro indicates whether the last interrupt message has already been + * sent. If you set a new interrupt message before the old was sent, the + * message already buffered will be lost. + */ +#if USB_CFG_HAVE_INTRIN_ENDPOINT3 +void usbSetInterrupt3(uchar *data, uchar len); +extern volatile uchar usbTxLen3; +#define usbInterruptIsReady3() (usbTxLen3 & 0x10) +/* Same as above for endpoint 3 */ +#endif +#endif /* USB_CFG_HAVE_INTRIN_ENDPOINT */ +#if USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH /* simplified interface for backward compatibility */ +#define usbHidReportDescriptor usbDescriptorHidReport +/* should be declared as: PROGMEM char usbHidReportDescriptor[]; */ +/* If you implement an HID device, you need to provide a report descriptor. + * The HID report descriptor syntax is a bit complex. If you understand how + * report descriptors are constructed, we recommend that you use the HID + * Descriptor Tool from usb.org, see http://www.usb.org/developers/hidpage/. + * Otherwise you should probably start with a working example. + */ +#endif /* USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH */ +#if USB_CFG_IMPLEMENT_FN_WRITE +extern uchar usbFunctionWrite(uchar *data, uchar len); +/* This function is called by the driver to provide a control transfer's + * payload data (control-out). It is called in chunks of up to 8 bytes. The + * total count provided in the current control transfer can be obtained from + * the 'length' property in the setup data. If an error occurred during + * processing, return 0xff (== -1). The driver will answer the entire transfer + * with a STALL token in this case. If you have received the entire payload + * successfully, return 1. If you expect more data, return 0. If you don't + * know whether the host will send more data (you should know, the total is + * provided in the usbFunctionSetup() call!), return 1. + * NOTE: If you return 0xff for STALL, 'usbFunctionWrite()' may still be called + * for the remaining data. You must continue to return 0xff for STALL in these + * calls. + * In order to get usbFunctionWrite() called, define USB_CFG_IMPLEMENT_FN_WRITE + * to 1 in usbconfig.h and return 0xff in usbFunctionSetup().. + */ +#endif /* USB_CFG_IMPLEMENT_FN_WRITE */ +#if USB_CFG_IMPLEMENT_FN_READ +extern uchar usbFunctionRead(uchar *data, uchar len); +/* This function is called by the driver to ask the application for a control + * transfer's payload data (control-in). It is called in chunks of up to 8 + * bytes each. You should copy the data to the location given by 'data' and + * return the actual number of bytes copied. If you return less than requested, + * the control-in transfer is terminated. If you return 0xff, the driver aborts + * the transfer with a STALL token. + * In order to get usbFunctionRead() called, define USB_CFG_IMPLEMENT_FN_READ + * to 1 in usbconfig.h and return 0xff in usbFunctionSetup().. + */ +#endif /* USB_CFG_IMPLEMENT_FN_READ */ +#if USB_CFG_IMPLEMENT_FN_WRITEOUT +extern void usbFunctionWriteOut(uchar *data, uchar len); +/* This function is called by the driver when data on interrupt-out or bulk- + * out endpoint 1 is received. You must define USB_CFG_IMPLEMENT_FN_WRITEOUT + * to 1 in usbconfig.h to get this function called. + */ +#endif /* USB_CFG_IMPLEMENT_FN_WRITEOUT */ +#ifdef USB_CFG_PULLUP_IOPORTNAME +#define usbDeviceConnect() ((USB_PULLUP_DDR |= (1<device, 1=device->host + * t ..... type: 0=standard, 1=class, 2=vendor, 3=reserved + * r ..... recipient: 0=device, 1=interface, 2=endpoint, 3=other + */ + +/* USB setup recipient values */ +#define USBRQ_RCPT_MASK 0x1f +#define USBRQ_RCPT_DEVICE 0 +#define USBRQ_RCPT_INTERFACE 1 +#define USBRQ_RCPT_ENDPOINT 2 + +/* USB request type values */ +#define USBRQ_TYPE_MASK 0x60 +#define USBRQ_TYPE_STANDARD (0<<5) +#define USBRQ_TYPE_CLASS (1<<5) +#define USBRQ_TYPE_VENDOR (2<<5) + +/* USB direction values: */ +#define USBRQ_DIR_MASK 0x80 +#define USBRQ_DIR_HOST_TO_DEVICE (0<<7) +#define USBRQ_DIR_DEVICE_TO_HOST (1<<7) + +/* USB Standard Requests */ +#define USBRQ_GET_STATUS 0 +#define USBRQ_CLEAR_FEATURE 1 +#define USBRQ_SET_FEATURE 3 +#define USBRQ_SET_ADDRESS 5 +#define USBRQ_GET_DESCRIPTOR 6 +#define USBRQ_SET_DESCRIPTOR 7 +#define USBRQ_GET_CONFIGURATION 8 +#define USBRQ_SET_CONFIGURATION 9 +#define USBRQ_GET_INTERFACE 10 +#define USBRQ_SET_INTERFACE 11 +#define USBRQ_SYNCH_FRAME 12 + +/* USB descriptor constants */ +#define USBDESCR_DEVICE 1 +#define USBDESCR_CONFIG 2 +#define USBDESCR_STRING 3 +#define USBDESCR_INTERFACE 4 +#define USBDESCR_ENDPOINT 5 +#define USBDESCR_HID 0x21 +#define USBDESCR_HID_REPORT 0x22 +#define USBDESCR_HID_PHYS 0x23 + +#define USBATTR_BUSPOWER 0x80 +#define USBATTR_SELFPOWER 0x40 +#define USBATTR_REMOTEWAKE 0x20 + +/* USB HID Requests */ +#define USBRQ_HID_GET_REPORT 0x01 +#define USBRQ_HID_GET_IDLE 0x02 +#define USBRQ_HID_GET_PROTOCOL 0x03 +#define USBRQ_HID_SET_REPORT 0x09 +#define USBRQ_HID_SET_IDLE 0x0a +#define USBRQ_HID_SET_PROTOCOL 0x0b + +/* ------------------------------------------------------------------------- */ + +#endif /* __usbdrv_h_included__ */ diff --git a/firmware/usbdrv/usbdrvasm.S b/firmware/usbdrv/usbdrvasm.S new file mode 100644 index 0000000..ab8be8c --- /dev/null +++ b/firmware/usbdrv/usbdrvasm.S @@ -0,0 +1,784 @@ +/* Name: usbdrvasm.S + * Project: AVR USB driver + * Author: Christian Starkjohann + * Creation Date: 2004-12-29 + * Tabsize: 4 + * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: usbdrvasm.S,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + +/* +General Description: +This module implements the assembler part of the USB driver. See usbdrv.h +for a description of the entire driver. +Since almost all of this code is timing critical, don't change unless you +really know what you are doing! Many parts require not only a maximum number +of CPU cycles, but even an exact number of cycles! + + +Timing constraints according to spec (in bit times): +timing subject min max CPUcycles +--------------------------------------------------------------------------- +EOP of OUT/SETUP to sync pattern of DATA0 (both rx) 2 16 16-128 +EOP of IN to sync pattern of DATA0 (rx, then tx) 2 7.5 16-60 +DATAx (rx) to ACK/NAK/STALL (tx) 2 7.5 16-60 +*/ + +#include "iarcompat.h" +#ifndef __IAR_SYSTEMS_ASM__ + /* configs for io.h */ +# define __SFR_OFFSET 0 +# define _VECTOR(N) __vector_ ## N /* io.h does not define this for asm */ +# include /* for CPU I/O register definitions and vectors */ +#endif /* __IAR_SYSTEMS_ASM__ */ +#include "usbdrv.h" /* for common defs */ + + +/* register names */ +#define x1 r16 +#define x2 r17 +#define shift r18 +#define cnt r19 +#define x3 r20 +#define x4 r21 + +/* Some assembler dependent definitions and declarations: */ + +#ifdef __IAR_SYSTEMS_ASM__ + +# define nop2 rjmp $+2 /* jump to next instruction */ +# define XL r26 +# define XH r27 +# define YL r28 +# define YH r29 +# define ZL r30 +# define ZH r31 +# define lo8(x) LOW(x) +# define hi8(x) ((x)>>8) /* not HIGH to allow XLINK to make a proper range check */ + + extern usbRxBuf, usbDeviceAddr, usbNewDeviceAddr, usbInputBuf + extern usbCurrentTok, usbRxLen, usbRxToken, usbAppBuf, usbTxLen + extern usbTxBuf, usbMsgLen, usbTxLen1, usbTxBuf1, usbTxLen3, usbTxBuf3 + public usbCrc16 + public usbCrc16Append + + COMMON INTVEC + ORG INT0_vect + rjmp SIG_INTERRUPT0 + RSEG CODE + +#else /* __IAR_SYSTEMS_ASM__ */ + +# define nop2 rjmp .+0 /* jump to next instruction */ + + .text + .global SIG_INTERRUPT0 + .type SIG_INTERRUPT0, @function + .global usbCrc16 + .global usbCrc16Append + +#endif /* __IAR_SYSTEMS_ASM__ */ + + +SIG_INTERRUPT0: +;Software-receiver engine. Strict timing! Don't change unless you can preserve timing! +;interrupt response time: 4 cycles + insn running = 7 max if interrupts always enabled +;max allowable interrupt latency: 32 cycles -> max 25 cycles interrupt disable +;max stack usage: [ret(2), x1, SREG, x2, cnt, shift, YH, YL, x3, x4] = 11 bytes +usbInterrupt: +;order of registers pushed: +;x1, SREG, x2, cnt, shift, [YH, YL, x3] + push x1 ;2 push only what is necessary to sync with edge ASAP + in x1, SREG ;1 + push x1 ;2 +;sync byte (D-) pattern LSb to MSb: 01010100 [1 = idle = J, 0 = K] +;sync up with J to K edge during sync pattern -- use fastest possible loops +;first part has no timeout because it waits for IDLE or SE1 (== disconnected) +#if !USB_CFG_SAMPLE_EXACT + ldi x1, 5 ;1 setup a timeout for waitForK +#endif +waitForJ: + sbis USBIN, USBMINUS ;1 wait for D- == 1 + rjmp waitForJ ;2 +#if USB_CFG_SAMPLE_EXACT +;The following code represents the unrolled loop in the else branch. It +;results in a sampling window of 1/4 bit which meets the spec. + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + sbis USBIN, USBMINUS + rjmp foundK + nop + nop2 +foundK: +#else +waitForK: + dec x1 ;1 + sbic USBIN, USBMINUS ;1 wait for D- == 0 + brne waitForK ;2 +#endif +;{2, 6} after falling D- edge, average delay: 4 cycles [we want 4 for center sampling] +;we have 1 bit time for setup purposes, then sample again: + push x2 ;2 + push cnt ;2 + push shift ;2 +shortcutEntry: + ldi cnt, 1 ;1 pre-init bit counter (-1 because no dec follows, -1 because 1 bit already sampled) + ldi x2, 1< 8 edge sync ended with D- == 0 +;now wait until SYNC byte is over. Wait for either 2 bits low (success) or 2 bits high (failure) +waitNoChange: + in x1, USBIN ;1 <-- sample, timing: edge + {2, 6} cycles + eor x2, x1 ;1 + sbrc x2, USBMINUS ;1 | 2 + ldi cnt, 2 ;1 | 0 cnt = numBits - 1 (because dec follows) + mov x2, x1 ;1 + dec cnt ;1 + brne waitNoChange ;2 | 1 + sbrc x1, USBMINUS ;2 + rjmp sofError ;0 two consecutive "1" bits -> framing error +;start reading data, but don't check for bitstuffing because these are the +;first bits. Use the cycles for initialization instead. Note that we read and +;store the binary complement of the data stream because eor results in 1 for +;a change and 0 for no change. + in x1, USBIN ;1 <-- sample bit 0, timing: edge + {3, 7} cycles + eor x2, x1 ;1 + ldi shift, 0x00 ;1 prepare for bitstuff check later on in loop + bst x2, USBMINUS ;1 + bld shift, 0 ;1 + push YH ;2 -> 7 + in x2, USBIN ;1 <-- sample bit 1, timing: edge + {2, 6} cycles + eor x1, x2 ;1 + bst x1, USBMINUS ;1 + bld shift, 1 ;1 + push YL ;2 + lds YL, usbInputBuf ;2 -> 8 + in x1, USBIN ;1 <-- sample bit 2, timing: edge + {2, 6} cycles + eor x2, x1 ;1 + bst x2, USBMINUS ;1 + bld shift, 2 ;1 + ldi cnt, USB_BUFSIZE;1 + ldi YH, hi8(usbRxBuf);1 assume that usbRxBuf does not cross a page + push x3 ;2 -> 8 + in x2, USBIN ;1 <-- sample bit 3, timing: edge + {2, 6} cycles + eor x1, x2 ;1 + bst x1, USBMINUS ;1 + bld shift, 3 ;1 + ser x3 ;1 + nop ;1 + rjmp rxbit4 ;2 -> 8 + +shortcutToStart: ;{,43} into next frame: max 5.5 sync bits missed +#if !USB_CFG_SAMPLE_EXACT + ldi x1, 5 ;2 setup timeout +#endif +waitForJ1: + sbis USBIN, USBMINUS ;1 wait for D- == 1 + rjmp waitForJ1 ;2 +#if USB_CFG_SAMPLE_EXACT +;The following code represents the unrolled loop in the else branch. It +;results in a sampling window of 1/4 bit which meets the spec. + sbis USBIN, USBMINUS + rjmp foundK1 + sbis USBIN, USBMINUS + rjmp foundK1 + sbis USBIN, USBMINUS + rjmp foundK1 + nop + nop2 +foundK1: +#else +waitForK1: + dec x1 ;1 + sbic USBIN, USBMINUS ;1 wait for D- == 0 + brne waitForK1 ;2 +#endif + pop YH ;2 correct stack alignment + nop2 ;2 delay for the same time as the pushes in the original code + rjmp shortcutEntry ;2 + +; ################# receiver loop ################# +; extra jobs done during bit interval: +; bit 6: se0 check +; bit 7: or, store, clear +; bit 0: recover from delay [SE0 is unreliable here due to bit dribbling in hubs] +; bit 1: se0 check +; bit 2: se0 check +; bit 3: overflow check +; bit 4: se0 check +; bit 5: rjmp + +; stuffed* helpers have the functionality of a subroutine, but we can't afford +; the overhead of a call. We therefore need a separate routine for each caller +; which jumps back appropriately. + +stuffed5: ;1 for branch taken + in x2, USBIN ;1 <-- sample @ +1 + andi x2, USBMASK ;1 + breq se0a ;1 + andi x3, ~0x20 ;1 + ori shift, 0x20 ;1 + rjmp rxbit6 ;2 + +stuffed6: ;1 for branch taken + in x1, USBIN ;1 <-- sample @ +1 + andi x1, USBMASK ;1 + breq se0a ;1 + andi x3, ~0x40 ;1 + ori shift, 0x40 ;1 + rjmp rxbit7 ;2 + +; This is somewhat special because it has to compensate for the delay in bit 7 +stuffed7: ;1 for branch taken + andi x1, USBMASK ;1 already sampled by caller + breq se0a ;1 + mov x2, x1 ;1 ensure correct NRZI sequence + ori shift, 0x80 ;1 no need to set reconstruction in x3: shift has already been used + in x1, USBIN ;1 <-- sample bit 0 + rjmp unstuffed7 ;2 + +stuffed0: ;1 for branch taken + in x1, USBIN ;1 <-- sample @ +1 + andi x1, USBMASK ;1 + breq se0a ;1 + andi x3, ~0x01 ;1 + ori shift, 0x01 ;1 + rjmp rxbit1 ;2 + +;----------------------------- +rxLoop: + breq stuffed5 ;1 +rxbit6: + in x1, USBIN ;1 <-- sample bit 6 + andi x1, USBMASK ;1 + breq se0a ;1 + eor x2, x1 ;1 + bst x2, USBMINUS;1 + bld shift, 6 ;1 + cpi shift, 0x02 ;1 + brlo stuffed6 ;1 +rxbit7: + in x2, USBIN ;1 <-- sample bit 7 + eor x1, x2 ;1 + bst x1, USBMINUS;1 + bld shift, 7 ;1 + eor x3, shift ;1 x3 is 0 at bit locations we changed, 1 at others + st y+, x3 ;2 the eor above reconstructed modified bits and inverted rx data + ser x3 ;1 +rxbit0: + in x1, USBIN ;1 <-- sample bit 0 + cpi shift, 0x04 ;1 + brlo stuffed7 ;1 +unstuffed7: + eor x2, x1 ;1 + bst x2, USBMINUS;1 + bld shift, 0 ;1 + andi shift, 0xf9 ;1 + breq stuffed0 ;1 +rxbit1: + in x2, USBIN ;1 <-- sample bit 1 + andi x2, USBMASK ;1 +se0a: ; enlarge jump range to SE0 + breq se0 ;1 check for SE0 more often close to start of byte + eor x1, x2 ;1 + bst x1, USBMINUS;1 + bld shift, 1 ;1 + andi shift, 0xf3 ;1 + breq stuffed1 ;1 +rxbit2: + in x1, USBIN ;1 <-- sample bit 2 + andi x1, USBMASK ;1 + breq se0 ;1 + eor x2, x1 ;1 + bst x2, USBMINUS;1 + bld shift, 2 ;1 + andi shift, 0xe7 ;1 + breq stuffed2 ;1 +rxbit3: + in x2, USBIN ;1 <-- sample bit 3 + eor x1, x2 ;1 + bst x1, USBMINUS;1 + bld shift, 3 ;1 + dec cnt ;1 check for buffer overflow + breq overflow ;1 + andi shift, 0xcf ;1 + breq stuffed3 ;1 +rxbit4: + in x1, USBIN ;1 <-- sample bit 4 + andi x1, USBMASK ;1 + breq se0 ;1 + eor x2, x1 ;1 + bst x2, USBMINUS;1 + bld shift, 4 ;1 + andi shift, 0x9f ;1 + breq stuffed4 ;1 +rxbit5: + in x2, USBIN ;1 <-- sample bit 5 + eor x1, x2 ;1 + bst x1, USBMINUS;1 + bld shift, 5 ;1 + andi shift, 0x3f ;1 + rjmp rxLoop ;2 +;----------------------------- + +stuffed1: ;1 for branch taken + in x2, USBIN ;1 <-- sample @ +1 + andi x2, USBMASK ;1 + breq se0 ;1 + andi x3, ~0x02 ;1 + ori shift, 0x02 ;1 + rjmp rxbit2 ;2 + +stuffed2: ;1 for branch taken + in x1, USBIN ;1 <-- sample @ +1 + andi x1, USBMASK ;1 + breq se0 ;1 + andi x3, ~0x04 ;1 + ori shift, 0x04 ;1 + rjmp rxbit3 ;2 + +stuffed3: ;1 for branch taken + in x2, USBIN ;1 <-- sample @ +1 + andi x2, USBMASK ;1 + breq se0 ;1 + andi x3, ~0x08 ;1 + ori shift, 0x08 ;1 + rjmp rxbit4 ;2 + +stuffed4: ;1 for branch taken + in x1, USBIN ;1 <-- sample @ +1 + andi x1, USBMASK ;1 + breq se0 ;1 + andi x3, ~0x10 ;1 + ori shift, 0x10 ;1 + rjmp rxbit5 ;2 + +;################ end receiver loop ############### + +overflow: ; ignore package if buffer overflow + rjmp rxDoReturn ; enlarge jump range + +;This is the only non-error exit point for the software receiver loop +;{4, 20} cycles after start of SE0, typically {10, 18} after SE0 start = {-6, 2} from end of SE0 +;next sync starts {16,} cycles after SE0 -> worst case start: +4 from next sync start +;we don't check any CRCs here because there is no time left. +se0: ;{-6, 2} from end of SE0 / {,4} into next frame + mov cnt, YL ;1 assume buffer in lower 256 bytes of memory + lds YL, usbInputBuf ;2 reposition to buffer start + sub cnt, YL ;1 length of message + ldi x1, 1< 19 = {13, 21} from SE0 end + cpi x1, USBPID_OUT ;1 + breq isSetupOrOut ;2 -> 22 = {16, 24} from SE0 end / {,24} into next frame + cpi x1, USBPID_IN ;1 + breq handleIn ;1 +#define USB_DATA_MASK ~(USBPID_DATA0 ^ USBPID_DATA1) + andi x1, USB_DATA_MASK ;1 + cpi x1, USBPID_DATA0 & USB_DATA_MASK ;1 + brne rxDoReturn ;1 not a data PID -- ignore +isData: + lds x2, usbCurrentTok ;2 + tst x2 ;1 + breq rxDoReturn ;1 for other device or spontaneous data -- ignore + lds x1, usbRxLen ;2 + cpi x1, 0 ;1 + brne sendNakAndReti ;1 no buffer space available / {30, 38} from SE0 end +; 2006-03-11: The following two lines fix a problem where the device was not +; recognized if usbPoll() was called less frequently than once every 4 ms. + cpi cnt, 4 ;1 zero sized data packets are status phase only -- ignore and ack + brmi sendAckAndReti ;1 keep rx buffer clean -- we must not NAK next SETUP + sts usbRxLen, cnt ;2 store received data, swap buffers + sts usbRxToken, x2 ;2 + lds x1, usbAppBuf ;2 + sts usbAppBuf, YL ;2 + sts usbInputBuf, x1 ;2 buffers now swapped + rjmp sendAckAndReti ;2 -> {43, 51} from SE0 end + +handleIn: ; {18, 26} from SE0 end + cp x2, shift ;1 shift contains our device addr + brne rxDoReturn ;1 other device +#if USB_CFG_HAVE_INTRIN_ENDPOINT + sbrc x3, 7 ;2 x3 contains addr + endpoint + rjmp handleIn1 ;0 +#endif + lds cnt, usbTxLen ;2 + sbrc cnt, 4 ;2 + rjmp sendCntAndReti ;0 -> {27, 35} from SE0 end + ldi x1, USBPID_NAK ;1 + sts usbTxLen, x1 ;2 buffer is now free + ldi YL, lo8(usbTxBuf) ;1 + ldi YH, hi8(usbTxBuf) ;1 + rjmp usbSendAndReti ;2 -> {34, 43} from SE0 end + +; Comment about when to set usbTxLen to USBPID_NAK: +; We should set it back when we receive the ACK from the host. This would +; be simple to implement: One static variable which stores whether the last +; tx was for endpoint 0 or 1 and a compare in the receiver to distinguish the +; ACK. However, we set it back immediately when we send the package, +; assuming that no error occurs and the host sends an ACK. We save one byte +; RAM this way and avoid potential problems with endless retries. The rest of +; the driver assumes error-free transfers anyway. + +otherOutOrSetup: + clr x1 + sts usbCurrentTok, x1 +rxDoReturn: + pop x3 ;2 + pop YL ;2 + pop YH ;2 + rjmp sofError ;2 + +isSetupOrOut: ; we must be fast here -- a data package may follow / {,24} into next frame + cp x2, shift ;1 shift contains our device addr + brne otherOutOrSetup ;1 other device -- ignore +#if USB_CFG_IMPLEMENT_FN_WRITEOUT /* if we need second OUT endpoint, store endpoint address */ + andi x1, 0x7f ;1 mask out MSb in token + andi x3, 0x80 ;1 mask out all but endpoint address + or x1, x3 ;1 merge endpoint into currentToken + sts usbCurrentTok, x1 ;2 + brmi dontResetEP0 ;1 endpoint 1 -> don't reset endpoint 0 input +#else + sts usbCurrentTok, x1 ;2 +#endif +;A transmission can still have data in the output buffer while we receive a +;SETUP package with an IN phase. To avoid that the old data is sent as a reply, +;we abort transmission. We don't need to reset usbMsgLen because it is used +;from the main loop only where the setup is processed anyway. + ldi x1, USBPID_NAK ;1 + sts usbTxLen, x1 ;2 abort transmission +dontResetEP0: + pop x3 ;2 + pop YL ;2 + in x1, USB_INTR_PENDING;1 + sbrc x1, USB_INTR_PENDING_BIT;1 check whether data is already arriving {,41} into next frame + rjmp shortcutToStart ;2 save the pops and pushes -- a new interrupt is aready pending +;If the jump above was not taken, we can be at {,2} into the next frame here + pop YH ;2 +txDoReturn: +sofError: ; error in start of frame -- ignore frame + ldi x1, 1< {,21} into next frame -> up to 3 sync bits missed + +sendCntAndReti: ; 19 cycles until SOP + mov x3, cnt ;1 + rjmp usbSendX3 ;2 +sendNakAndReti: ; 19 cycles until SOP + ldi x3, USBPID_NAK ;1 + rjmp usbSendX3 ;2 +sendAckAndReti: ; 17 cycles until SOP + ldi x3, USBPID_ACK ;1 +usbSendX3: + ldi YL, 20 ;1 'x3' is R20 + ldi YH, 0 ;1 + ldi cnt, 2 ;1 +;;;;rjmp usbSendAndReti fallthrough + +; USB spec says: +; idle = J +; J = (D+ = 0), (D- = 1) or USBOUT = 0x01 +; K = (D+ = 1), (D- = 0) or USBOUT = 0x02 +; Spec allows 7.5 bit times from EOP to SOP for replies (= 60 cycles) + +;usbSend: +;pointer to data in 'Y' +;number of bytes in 'cnt' -- including sync byte +;uses: x1...x4, shift, cnt, Y +usbSendAndReti: ; SOP starts 13 cycles after call + push x4 ;2 + ldi x4, USBMASK ;1 exor mask + sbi USBOUT, USBMINUS;1 prepare idle state; D+ and D- must have been 0 (no pullups) + in x1, USBOUT ;1 port mirror for tx loop + sbi USBDDR, USBMINUS;1 + sbi USBDDR, USBPLUS ;1 set D+ and D- to output: acquire bus +; need not init x2 (bitstuff history) because sync starts with 0 + ldi shift, 0x80 ;1 sync byte is first byte sent + rjmp txLoop ;2 -> 13 + 3 = 16 cycles until SOP + +#if USB_CFG_HAVE_INTRIN_ENDPOINT /* placed here due to relative jump range */ +handleIn1: ;{23, 31} from SE0 + ldi x1, USBPID_NAK ;1 +#if USB_CFG_HAVE_INTRIN_ENDPOINT3 +; 2006-06-10 as suggested by O.Tamura: support second INTR IN / BULK IN endpoint + ldd x2, y+2 ;2 + sbrc x2, 0 ;2 1 + rjmp handleIn3 ;0 2 +#endif + lds cnt, usbTxLen1 ;2 + sbrc cnt, 4 ;2 + rjmp sendCntAndReti ;0 + sts usbTxLen1, x1 ;2 + ldi YL, lo8(usbTxBuf1);1 + ldi YH, hi8(usbTxBuf1);1 + rjmp usbSendAndReti ;2 -> arrives at usbSendAndReti {34, 42} from SE0 + +#if USB_CFG_HAVE_INTRIN_ENDPOINT3 +handleIn3: + lds cnt, usbTxLen3 ;2 + sbrc cnt, 4 ;2 + rjmp sendCntAndReti ;0 + sts usbTxLen3, x1 ;2 + ldi YL, lo8(usbTxBuf3);1 + ldi YH, hi8(usbTxBuf3);1 + rjmp usbSendAndReti ;2 -> arrives at usbSendAndReti {39, 47} from SE0 +#endif +#endif + +bitstuff0: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + out USBOUT, x1 ;1 <-- out + rjmp didStuff0 ;2 branch back 2 cycles earlier +bitstuff1: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + sec ;1 set carry so that brsh will not jump + out USBOUT, x1 ;1 <-- out + rjmp didStuff1 ;2 jump back 1 cycle earler +bitstuff2: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + rjmp didStuff2 ;2 jump back 3 cycles earlier and do out +bitstuff3: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + rjmp didStuff3 ;2 jump back earlier + +txLoop: + sbrs shift, 0 ;1 + eor x1, x4 ;1 + out USBOUT, x1 ;1 <-- out + ror shift ;1 + ror x2 ;1 +didStuff0: + cpi x2, 0xfc ;1 + brsh bitstuff0 ;1 + sbrs shift, 0 ;1 + eor x1, x4 ;1 + ror shift ;1 + out USBOUT, x1 ;1 <-- out + ror x2 ;1 + cpi x2, 0xfc ;1 +didStuff1: + brsh bitstuff1 ;1 + sbrs shift, 0 ;1 + eor x1, x4 ;1 + ror shift ;1 + ror x2 ;1 +didStuff2: + out USBOUT, x1 ;1 <-- out + cpi x2, 0xfc ;1 + brsh bitstuff2 ;1 + sbrs shift, 0 ;1 + eor x1, x4 ;1 + ror shift ;1 + ror x2 ;1 +didStuff3: + cpi x2, 0xfc ;1 + out USBOUT, x1 ;1 <-- out + brsh bitstuff3 ;1 + nop2 ;2 + ld x3, y+ ;2 + sbrs shift, 0 ;1 + eor x1, x4 ;1 + out USBOUT, x1 ;1 <-- out + ror shift ;1 + ror x2 ;1 +didStuff4: + cpi x2, 0xfc ;1 + brsh bitstuff4 ;1 + sbrs shift, 0 ;1 + eor x1, x4 ;1 + ror shift ;1 + out USBOUT, x1 ;1 <-- out + ror x2 ;1 + cpi x2, 0xfc ;1 +didStuff5: + brsh bitstuff5 ;1 + sbrs shift, 0 ;1 + eor x1, x4 ;1 + ror shift ;1 + ror x2 ;1 +didStuff6: + out USBOUT, x1 ;1 <-- out + cpi x2, 0xfc ;1 + brsh bitstuff6 ;1 + sbrs shift, 0 ;1 + eor x1, x4 ;1 + ror shift ;1 + ror x2 ;1 +didStuff7: + cpi x2, 0xfc ;1 + out USBOUT, x1 ;1 <-- out + brsh bitstuff7 ;1 + mov shift, x3 ;1 + dec cnt ;1 + brne txLoop ;2 | 1 + cbr x1, USBMASK ;1 prepare SE0 [spec says EOP may be 15 to 18 cycles] + pop x4 ;2 + out USBOUT, x1 ;1 <-- out SE0 -- from now 2 bits = 16 cycles until bus idle + ldi cnt, 2 ;| takes cnt * 3 cycles +se0Delay: ;| + dec cnt ;| + brne se0Delay ;| -> 2 * 3 = 6 cycles +;2006-03-06: moved transfer of new address to usbDeviceAddr from C-Code to asm: +;set address only after data packet was sent, not after handshake + lds x2, usbNewDeviceAddr;2 + subi YL, 20 + 2 ;1 + sbci YH, 0 ;1 + breq skipAddrAssign ;2 + sts usbDeviceAddr, x2 ;0 if not skipped: SE0 is one cycle longer +skipAddrAssign: +;end of usbDeviceAddress transfer + ori x1, USBIDLE ;1 + in x2, USBDDR ;1 + cbr x2, USBMASK ;1 set both pins to input + out USBOUT, x1 ;1 <-- out J (idle) -- end of SE0 (EOP signal) + cbr x1, USBMASK ;1 configure no pullup on both pins + pop x3 ;2 + pop YL ;2 + out USBDDR, x2 ;1 <-- release bus now + out USBOUT, x1 ;1 set pullup state + pop YH ;2 + rjmp txDoReturn ;2 [we want to jump to rxDoReturn, but this saves cycles] + + +bitstuff4: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + out USBOUT, x1 ;1 <-- out + rjmp didStuff4 ;2 jump back 2 cycles earlier +bitstuff5: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + sec ;1 set carry so that brsh is not taken + out USBOUT, x1 ;1 <-- out + rjmp didStuff5 ;2 jump back 1 cycle earlier +bitstuff6: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + rjmp didStuff6 ;2 jump back 3 cycles earlier and do out there +bitstuff7: ;1 (for branch taken) + eor x1, x4 ;1 + ldi x2, 0 ;1 + rjmp didStuff7 ;2 jump back 4 cycles earlier + +; ######################## utility functions ######################## + +#ifdef __IAR_SYSTEMS_ASM__ +/* Register assignments for usbCrc16 on IAR cc */ +/* Calling conventions on IAR: + * First parameter passed in r16/r17, second in r18/r19 and so on. + * Callee must preserve r4-r15, r24-r29 (r28/r29 is frame pointer) + * Result is passed in r16/r17 + * In case of the "tiny" memory model, pointers are only 8 bit with no + * padding. We therefore pass argument 1 as "16 bit unsigned". + */ +RTMODEL "__rt_version", "3" +/* The line above will generate an error if cc calling conventions change. + * The value "3" above is valid for IAR 4.10B/W32 + */ +# define argLen r18 /* argument 2 */ +# define argPtrL r16 /* argument 1 */ +# define argPtrH r17 /* argument 1 */ + +# define resCrcL r16 /* result */ +# define resCrcH r17 /* result */ + +# define ptrL ZL +# define ptrH ZH +# define ptr Z +# define byte r22 +# define bitCnt r19 +# define polyL r20 +# define polyH r21 +# define scratch r23 + +#else /* __IAR_SYSTEMS_ASM__ */ +/* Register assignments for usbCrc16 on gcc */ +/* Calling conventions on gcc: + * First parameter passed in r24/r25, second in r22/23 and so on. + * Callee must preserve r1-r17, r28/r29 + * Result is passed in r24/r25 + */ +# define argLen r22 /* argument 2 */ +# define argPtrL r24 /* argument 1 */ +# define argPtrH r25 /* argument 1 */ + +# define resCrcL r24 /* result */ +# define resCrcH r25 /* result */ + +# define ptrL XL +# define ptrH XH +# define ptr x +# define byte r18 +# define bitCnt r19 +# define polyL r20 +# define polyH r21 +# define scratch r23 + +#endif + +; extern unsigned usbCrc16(unsigned char *data, unsigned char len); +; data: r24/25 +; len: r22 +; temp variables: +; r18: data byte +; r19: bit counter +; r20/21: polynomial +; r23: scratch +; r24/25: crc-sum +; r26/27=X: ptr +usbCrc16: + mov ptrL, argPtrL + mov ptrH, argPtrH + ldi resCrcL, 0xff + ldi resCrcH, 0xff + ldi polyL, lo8(0xa001) + ldi polyH, hi8(0xa001) +crcByteLoop: + subi argLen, 1 + brcs crcReady + ld byte, ptr+ + ldi bitCnt, 8 +crcBitLoop: + mov scratch, byte + eor scratch, resCrcL + lsr resCrcH + ror resCrcL + lsr byte + sbrs scratch, 0 + rjmp crcNoXor + eor resCrcL, polyL + eor resCrcH, polyH +crcNoXor: + dec bitCnt + brne crcBitLoop + rjmp crcByteLoop +crcReady: + com resCrcL + com resCrcH + ret + +; extern unsigned usbCrc16Append(unsigned char *data, unsigned char len); +usbCrc16Append: + rcall usbCrc16 + st ptr+, resCrcL + st ptr+, resCrcH + ret diff --git a/firmware/usbdrv/usbdrvasm.asm b/firmware/usbdrv/usbdrvasm.asm new file mode 100644 index 0000000..75478ed --- /dev/null +++ b/firmware/usbdrv/usbdrvasm.asm @@ -0,0 +1,21 @@ +/* Name: usbdrvasm.asm + * Project: AVR USB driver + * Author: Christian Starkjohann + * Creation Date: 2006-03-01 + * Tabsize: 4 + * Copyright: (c) 2006 by OBJECTIVE DEVELOPMENT Software GmbH + * License: Proprietary, free under certain conditions. See Documentation. + * This Revision: $Id: usbdrvasm.asm,v 1.1 2006/10/28 12:40:42 rschaten Exp $ + */ + +/* +General Description: +The IAR compiler/assembler system prefers assembler files with file extension +".asm". We simply provide this file as an alias for usbdrvasm.S. + +Thanks to Oleg Semyonov for his help with the IAR tools port! +*/ + +#include "usbdrvasm.S" + +end